Merge branch 'MDL-32693' of git://github.com/danpoltawski/moodle
authorEloy Lafuente (stronk7) <stronk7@moodle.org>
Thu, 3 May 2012 16:22:05 +0000 (18:22 +0200)
committerEloy Lafuente (stronk7) <stronk7@moodle.org>
Thu, 3 May 2012 16:22:05 +0000 (18:22 +0200)
600 files changed:
.gitignore
admin/environment.xml
admin/message.php
admin/settings/courses.php
admin/tool/assignmentupgrade/batchupgrade.php [new file with mode: 0644]
admin/tool/assignmentupgrade/index.php [new file with mode: 0644]
admin/tool/assignmentupgrade/lang/en/tool_assignmentupgrade.php [new file with mode: 0644]
admin/tool/assignmentupgrade/lib.php [new file with mode: 0644]
admin/tool/assignmentupgrade/listnotupgraded.php [new file with mode: 0644]
admin/tool/assignmentupgrade/locallib.php [new file with mode: 0644]
admin/tool/assignmentupgrade/module.js [new file with mode: 0644]
admin/tool/assignmentupgrade/renderer.php [new file with mode: 0644]
admin/tool/assignmentupgrade/settings.php [new file with mode: 0644]
admin/tool/assignmentupgrade/styles.css [new file with mode: 0644]
admin/tool/assignmentupgrade/upgradableassignmentsbatchform.php [new file with mode: 0644]
admin/tool/assignmentupgrade/upgradableassignmentstable.php [new file with mode: 0644]
admin/tool/assignmentupgrade/upgradesingle.php [new file with mode: 0644]
admin/tool/assignmentupgrade/upgradesingleconfirm.php [new file with mode: 0644]
admin/tool/assignmentupgrade/version.php [new file with mode: 0644]
admin/tool/phpunit/cli/util.php
admin/tool/unittest/ex_reporter.php
backup/util/helper/backup_cron_helper.class.php
calendar/export_execute.php
calendar/renderer.php
calendar/set.php
calendar/view.php
config-dist.php
course/category.php
course/editcategory.php
course/externallib.php
course/format/topics/format.js [new file with mode: 0644]
course/format/topics/format.php
course/format/weeks/format.js [new file with mode: 0644]
course/format/weeks/format.php
course/lib.php
course/rest.php
course/tests/courselib_test.php
course/yui/dragdrop/dragdrop.js
enrol/authorize/db/messages.php [new file with mode: 0644]
enrol/authorize/version.php
enrol/externallib.php
enrol/flatfile/db/messages.php [new file with mode: 0644]
enrol/flatfile/lang/en/enrol_flatfile.php
enrol/flatfile/version.php
enrol/imsenterprise/db/messages.php [new file with mode: 0644]
enrol/imsenterprise/lang/en/enrol_imsenterprise.php
enrol/imsenterprise/version.php
enrol/manual/externallib.php
enrol/paypal/db/messages.php [new file with mode: 0644]
enrol/paypal/lang/en/enrol_paypal.php
enrol/paypal/version.php
files/externallib.php
grade/edit/tree/grade_form.php
grade/grading/form/guide/README [new file with mode: 0644]
grade/grading/form/guide/backup/moodle2/backup_gradingform_guide_plugin.class.php [new file with mode: 0644]
grade/grading/form/guide/backup/moodle2/restore_gradingform_guide_plugin.class.php [new file with mode: 0644]
grade/grading/form/guide/db/install.xml [new file with mode: 0644]
grade/grading/form/guide/edit.php [new file with mode: 0644]
grade/grading/form/guide/edit_form.php [new file with mode: 0644]
grade/grading/form/guide/guideeditor.php [new file with mode: 0644]
grade/grading/form/guide/js/guide.js [new file with mode: 0644]
grade/grading/form/guide/js/guideeditor.js [new file with mode: 0644]
grade/grading/form/guide/lang/en/gradingform_guide.php [new file with mode: 0644]
grade/grading/form/guide/lib.php [new file with mode: 0644]
grade/grading/form/guide/pix/icon.png [new file with mode: 0644]
grade/grading/form/guide/preview.php [new file with mode: 0644]
grade/grading/form/guide/renderer.php [new file with mode: 0644]
grade/grading/form/guide/styles.css [new file with mode: 0644]
grade/grading/form/guide/version.php [new file with mode: 0644]
grade/report/grader/index.php
grade/report/grader/lib.php
grade/report/grader/module.js
grade/report/user/lib.php
group/externallib.php
lang/en/admin.php
lang/en/grades.php
lang/en/message.php
lang/en/plugin.php
lib/configonlylib.php
lib/db/services.php
lib/db/upgradelib.php
lib/editor/tinymce/lib.php
lib/editor/tinymce/tiny_mce/3.5/jquery.tinymce.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/jquery.tinymce.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/langs/en.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/langs/en.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/license.txt [moved from lib/editor/tinymce/tiny_mce/3.5dev1/license.txt with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/advhr/css/advhr.css [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/advhr/css/advhr.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/advhr/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/advhr/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/advhr/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/advhr/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/advhr/js/rule.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/advhr/js/rule.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/advhr/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/advhr/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/advhr/rule.htm [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/advhr/rule.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/advimage/css/advimage.css [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/advimage/css/advimage.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/advimage/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/advimage/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/advimage/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/advimage/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/advimage/image.htm [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/advimage/image.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/advimage/img/sample.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/advimage/img/sample.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/advimage/js/image.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/advimage/js/image.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/advimage/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/advimage/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/advlink/css/advlink.css [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/advlink/css/advlink.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/advlink/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/advlink/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/advlink/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/advlink/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/advlink/js/advlink.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/advlink/js/advlink.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/advlink/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/advlink/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/advlink/link.htm [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/advlink/link.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/advlist/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/advlist/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/advlist/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/advlist/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/autolink/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/autolink/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/autolink/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/autolink/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/autoresize/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/autoresize/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/autoresize/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/autoresize/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/autosave/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/autosave/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/autosave/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/autosave/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/autosave/langs/en.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/autosave/langs/en.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/bbcode/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/bbcode/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/bbcode/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/bbcode/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/contextmenu/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/contextmenu/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/contextmenu/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/contextmenu/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/directionality/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/directionality/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/directionality/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/directionality/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/dragmath/dragmath.php [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/dragmath/dragmath.php with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/dragmath/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/dragmath/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/dragmath/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/dragmath/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/dragmath/img/dragmath.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/dragmath/img/dragmath.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/dragmath/js/dragmath.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/dragmath/js/dragmath.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/dragmath/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/dragmath/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/emotions/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/emotions/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/emotions/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/emotions/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/emotions/emotions.htm [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/emotions/emotions.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/emotions/img/smiley-cool.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/emotions/img/smiley-cool.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/emotions/img/smiley-cry.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/emotions/img/smiley-cry.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/emotions/img/smiley-embarassed.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/emotions/img/smiley-embarassed.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/emotions/img/smiley-foot-in-mouth.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/emotions/img/smiley-foot-in-mouth.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/emotions/img/smiley-frown.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/emotions/img/smiley-frown.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/emotions/img/smiley-innocent.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/emotions/img/smiley-innocent.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/emotions/img/smiley-kiss.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/emotions/img/smiley-kiss.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/emotions/img/smiley-laughing.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/emotions/img/smiley-laughing.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/emotions/img/smiley-money-mouth.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/emotions/img/smiley-money-mouth.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/emotions/img/smiley-sealed.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/emotions/img/smiley-sealed.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/emotions/img/smiley-smile.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/emotions/img/smiley-smile.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/emotions/img/smiley-surprised.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/emotions/img/smiley-surprised.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/emotions/img/smiley-tongue-out.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/emotions/img/smiley-tongue-out.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/emotions/img/smiley-undecided.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/emotions/img/smiley-undecided.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/emotions/img/smiley-wink.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/emotions/img/smiley-wink.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/emotions/img/smiley-yell.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/emotions/img/smiley-yell.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/emotions/js/emotions.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/emotions/js/emotions.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/emotions/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/emotions/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/example/dialog.htm [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/example/dialog.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/example/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/example/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/example/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/example/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/example/img/example.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/example/img/example.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/example/js/dialog.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/example/js/dialog.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/example/langs/en.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/example/langs/en.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/example/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/example/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/example_dependency/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/example_dependency/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/example_dependency/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/example_dependency/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/fullpage/css/fullpage.css [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/fullpage/css/fullpage.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/fullpage/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/fullpage/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/fullpage/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/fullpage/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/fullpage/fullpage.htm [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/fullpage/fullpage.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/fullpage/js/fullpage.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/fullpage/js/fullpage.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/fullpage/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/fullpage/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/fullscreen/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/fullscreen/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/fullscreen/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/fullscreen/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/fullscreen/fullscreen.htm [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/fullscreen/fullscreen.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/iespell/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/iespell/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/iespell/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/iespell/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/inlinepopups/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/inlinepopups/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/inlinepopups/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/inlinepopups/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/inlinepopups/skins/clearlooks2/img/alert.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/inlinepopups/skins/clearlooks2/img/alert.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/inlinepopups/skins/clearlooks2/img/button.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/inlinepopups/skins/clearlooks2/img/button.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/inlinepopups/skins/clearlooks2/img/corners.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/inlinepopups/skins/clearlooks2/img/corners.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/inlinepopups/skins/clearlooks2/window.css [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/inlinepopups/skins/clearlooks2/window.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/inlinepopups/template.htm [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/inlinepopups/template.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/insertdatetime/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/insertdatetime/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/insertdatetime/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/insertdatetime/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/layer/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/layer/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/layer/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/layer/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/legacyoutput/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/legacyoutput/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/legacyoutput/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/legacyoutput/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/lists/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/lists/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/lists/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/lists/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/media/css/media.css [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/media/css/media.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/media/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/media/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/media/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/media/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/media/js/embed.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/media/js/embed.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/media/js/media.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/media/js/media.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/media/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/media/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/media/media.htm [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/media/media.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/media/moxieplayer.swf [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/media/moxieplayer.swf with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/moodleemoticon/dialog.php [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/moodleemoticon/dialog.php with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/moodleemoticon/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/moodleemoticon/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/moodleemoticon/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/moodleemoticon/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/moodleemoticon/img/moodleemoticon.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/moodleemoticon/img/moodleemoticon.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/moodleemoticon/js/dialog.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/moodleemoticon/js/dialog.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/moodlemedia/css/media.css [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/moodlemedia/css/media.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/moodlemedia/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/moodlemedia/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/moodlemedia/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/moodlemedia/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/moodlemedia/img/icon.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/moodlemedia/img/icon.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/moodlemedia/js/media.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/moodlemedia/js/media.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/moodlemedia/moodlemedia.htm [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/moodlemedia/moodlemedia.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/moodlenolink/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/moodlenolink/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/moodlenolink/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/moodlenolink/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/moodlenolink/img/ed_nolink.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/moodlenolink/img/ed_nolink.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/moodlenolink/langs/en.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/moodlenolink/langs/en.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/nonbreaking/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/nonbreaking/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/nonbreaking/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/nonbreaking/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/noneditable/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/tiny_mce/3.5/plugins/noneditable/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/noneditable/editor_plugin_src.js with 84% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/pagebreak/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/pagebreak/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/pagebreak/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/pagebreak/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/paste/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/paste/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/paste/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/paste/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/paste/js/pastetext.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/paste/js/pastetext.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/paste/js/pasteword.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/paste/js/pasteword.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/paste/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/paste/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/paste/pastetext.htm [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/paste/pastetext.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/paste/pasteword.htm [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/paste/pasteword.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/preview/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/preview/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/preview/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/preview/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/preview/example.html [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/preview/example.html with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/preview/jscripts/embed.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/preview/jscripts/embed.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/preview/preview.html [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/preview/preview.html with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/print/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/print/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/print/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/print/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/save/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/save/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/save/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/save/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/searchreplace/css/searchreplace.css [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/searchreplace/css/searchreplace.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/searchreplace/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/searchreplace/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/searchreplace/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/searchreplace/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/searchreplace/js/searchreplace.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/searchreplace/js/searchreplace.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/searchreplace/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/searchreplace/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/searchreplace/searchreplace.htm [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/searchreplace/searchreplace.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/spellchecker/changelog.txt [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/spellchecker/changelog.txt with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/spellchecker/classes/EnchantSpell.php [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/spellchecker/classes/EnchantSpell.php with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/spellchecker/classes/GoogleSpell.php [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/spellchecker/classes/GoogleSpell.php with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/spellchecker/classes/PSpell.php [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/spellchecker/classes/PSpell.php with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/spellchecker/classes/PSpellShell.php [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/spellchecker/classes/PSpellShell.php with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/spellchecker/classes/SpellChecker.php [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/spellchecker/classes/SpellChecker.php with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/spellchecker/classes/utils/JSON.php [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/spellchecker/classes/utils/JSON.php with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/spellchecker/classes/utils/Logger.php [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/spellchecker/classes/utils/Logger.php with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/spellchecker/config.php [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/spellchecker/config.php with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/spellchecker/css/content.css [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/spellchecker/css/content.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/spellchecker/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/spellchecker/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/spellchecker/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/spellchecker/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/spellchecker/img/wline.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/spellchecker/img/wline.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/spellchecker/includes/general.php [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/spellchecker/includes/general.php with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/spellchecker/rpc.php [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/spellchecker/rpc.php with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/style/css/props.css [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/style/css/props.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/style/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/style/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/style/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/style/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/style/js/props.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/style/js/props.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/style/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/style/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/style/props.htm [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/style/props.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/style/readme.txt [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/style/readme.txt with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/tabfocus/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/tabfocus/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/tabfocus/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/tabfocus/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/table/cell.htm [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/table/cell.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/table/css/cell.css [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/table/css/cell.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/table/css/row.css [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/table/css/row.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/table/css/table.css [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/table/css/table.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/table/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/table/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/table/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/table/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/table/js/cell.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/table/js/cell.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/table/js/merge_cells.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/table/js/merge_cells.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/table/js/row.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/table/js/row.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/table/js/table.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/table/js/table.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/table/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/table/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/table/merge_cells.htm [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/table/merge_cells.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/table/row.htm [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/table/row.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/table/table.htm [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/table/table.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/template/blank.htm [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/template/blank.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/template/css/template.css [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/template/css/template.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/template/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/template/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/template/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/template/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/template/js/template.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/template/js/template.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/template/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/template/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/template/template.htm [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/template/template.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/visualblocks/css/visualblocks.css [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/visualblocks/css/visualblocks.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/visualblocks/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/visualblocks/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/visualblocks/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/visualblocks/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/visualblocks/img/address.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/visualblocks/img/address.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/visualblocks/img/article.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/visualblocks/img/article.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/visualblocks/img/aside.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/visualblocks/img/aside.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/visualblocks/img/blockquote.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/visualblocks/img/blockquote.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/visualblocks/img/div.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/visualblocks/img/div.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/visualblocks/img/figure.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/visualblocks/img/figure.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/visualblocks/img/h1.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/visualblocks/img/h1.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/visualblocks/img/h2.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/visualblocks/img/h2.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/visualblocks/img/h3.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/visualblocks/img/h3.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/visualblocks/img/h4.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/visualblocks/img/h4.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/visualblocks/img/h5.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/visualblocks/img/h5.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/visualblocks/img/h6.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/visualblocks/img/h6.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/visualblocks/img/hgroup.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/visualblocks/img/hgroup.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/visualblocks/img/p.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/visualblocks/img/p.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/visualblocks/img/pre.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/visualblocks/img/pre.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/visualblocks/img/section.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/visualblocks/img/section.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/visualchars/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/visualchars/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/visualchars/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/visualchars/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/wordcount/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/wordcount/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/wordcount/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/wordcount/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/xhtmlxtras/abbr.htm [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/xhtmlxtras/abbr.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/xhtmlxtras/acronym.htm [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/xhtmlxtras/acronym.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/xhtmlxtras/attributes.htm [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/xhtmlxtras/attributes.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/xhtmlxtras/cite.htm [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/xhtmlxtras/cite.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/xhtmlxtras/css/attributes.css [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/xhtmlxtras/css/attributes.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/xhtmlxtras/css/popup.css [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/xhtmlxtras/css/popup.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/xhtmlxtras/del.htm [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/xhtmlxtras/del.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/xhtmlxtras/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/xhtmlxtras/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/xhtmlxtras/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/xhtmlxtras/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/xhtmlxtras/ins.htm [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/xhtmlxtras/ins.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/xhtmlxtras/js/abbr.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/xhtmlxtras/js/abbr.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/xhtmlxtras/js/acronym.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/xhtmlxtras/js/acronym.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/xhtmlxtras/js/attributes.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/xhtmlxtras/js/attributes.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/xhtmlxtras/js/cite.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/xhtmlxtras/js/cite.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/xhtmlxtras/js/del.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/xhtmlxtras/js/del.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/xhtmlxtras/js/element_common.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/xhtmlxtras/js/element_common.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/xhtmlxtras/js/ins.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/xhtmlxtras/js/ins.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/plugins/xhtmlxtras/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/plugins/xhtmlxtras/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/about.htm [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/about.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/anchor.htm [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/anchor.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/charmap.htm [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/charmap.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/color_picker.htm [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/color_picker.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/editor_template.js [new file with mode: 0644]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/editor_template_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/editor_template_src.js with 95% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/image.htm [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/image.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/img/colorpicker.jpg [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/img/colorpicker.jpg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/img/flash.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/img/flash.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/img/icons.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/img/icons.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/img/iframe.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/img/iframe.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/img/pagebreak.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/img/pagebreak.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/img/quicktime.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/img/quicktime.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/img/realmedia.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/img/realmedia.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/img/shockwave.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/img/shockwave.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/img/trans.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/img/trans.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/img/video.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/img/video.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/img/windowsmedia.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/img/windowsmedia.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/js/about.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/js/about.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/js/anchor.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/js/anchor.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/js/charmap.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/js/charmap.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/js/color_picker.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/js/color_picker.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/js/image.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/js/image.js with 93% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/js/link.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/js/link.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/js/source_editor.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/js/source_editor.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/langs/en.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/langs/en.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/link.htm [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/link.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/shortcuts.htm [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/shortcuts.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/skins/default/content.css [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/skins/default/content.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/skins/default/dialog.css [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/skins/default/dialog.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/skins/default/img/buttons.png [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/skins/default/img/buttons.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/skins/default/img/items.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/skins/default/img/items.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/skins/default/img/menu_arrow.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/skins/default/img/menu_arrow.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/skins/default/img/menu_check.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/skins/default/img/menu_check.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/skins/default/img/progress.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/skins/default/img/progress.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/skins/default/img/tabs.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/skins/default/img/tabs.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/skins/default/ui.css [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/skins/default/ui.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/skins/highcontrast/content.css [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/skins/highcontrast/content.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/skins/highcontrast/dialog.css [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/skins/highcontrast/dialog.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/skins/highcontrast/ui.css [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/skins/highcontrast/ui.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/skins/o2k7/content.css [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/skins/o2k7/content.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/skins/o2k7/dialog.css [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/skins/o2k7/dialog.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/skins/o2k7/img/button_bg.png [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/skins/o2k7/img/button_bg.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/skins/o2k7/img/button_bg_black.png [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/skins/o2k7/img/button_bg_black.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/skins/o2k7/img/button_bg_silver.png [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/skins/o2k7/img/button_bg_silver.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/skins/o2k7/ui.css [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/skins/o2k7/ui.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/skins/o2k7/ui_black.css [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/skins/o2k7/ui_black.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/skins/o2k7/ui_silver.css [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/skins/o2k7/ui_silver.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/advanced/source_editor.htm [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/source_editor.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/simple/editor_template.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/simple/editor_template.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/simple/editor_template_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/simple/editor_template_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/simple/img/icons.gif [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/simple/img/icons.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/simple/langs/en.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/simple/langs/en.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/simple/skins/default/content.css [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/simple/skins/default/content.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/simple/skins/default/ui.css [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/simple/skins/default/ui.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/simple/skins/o2k7/content.css [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/simple/skins/o2k7/content.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/simple/skins/o2k7/img/button_bg.png [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/simple/skins/o2k7/img/button_bg.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/themes/simple/skins/o2k7/ui.css [moved from lib/editor/tinymce/tiny_mce/3.5dev1/themes/simple/skins/o2k7/ui.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/tiny_mce.js [new file with mode: 0644]
lib/editor/tinymce/tiny_mce/3.5/tiny_mce_dev.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/tiny_mce_dev.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/tiny_mce_jquery.js [new file with mode: 0644]
lib/editor/tinymce/tiny_mce/3.5/tiny_mce_jquery_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/tiny_mce_jquery_src.js with 99% similarity]
lib/editor/tinymce/tiny_mce/3.5/tiny_mce_popup.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/tiny_mce_popup.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/tiny_mce_popup_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/tiny_mce_popup_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/tiny_mce_prototype.js [new file with mode: 0644]
lib/editor/tinymce/tiny_mce/3.5/tiny_mce_prototype_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/tiny_mce_prototype_src.js with 99% similarity]
lib/editor/tinymce/tiny_mce/3.5/tiny_mce_src.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/tiny_mce_src.js with 99% similarity]
lib/editor/tinymce/tiny_mce/3.5/utils/editable_selects.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/utils/editable_selects.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/utils/form_utils.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/utils/form_utils.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/utils/mctabs.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/utils/mctabs.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5/utils/validate.js [moved from lib/editor/tinymce/tiny_mce/3.5dev1/utils/validate.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5dev1/plugins/noneditable/editor_plugin.js [deleted file]
lib/editor/tinymce/tiny_mce/3.5dev1/themes/advanced/editor_template.js [deleted file]
lib/editor/tinymce/tiny_mce/3.5dev1/tiny_mce.js [deleted file]
lib/editor/tinymce/tiny_mce/3.5dev1/tiny_mce_jquery.js [deleted file]
lib/editor/tinymce/tiny_mce/3.5dev1/tiny_mce_prototype.js [deleted file]
lib/environmentlib.php
lib/externallib.php
lib/filelib.php
lib/filestorage/file_storage.php
lib/flickrlib.php
lib/googleapi.php
lib/javascript.php
lib/messagelib.php
lib/moodlelib.php
lib/navigationlib.php
lib/outputrenderers.php
lib/outputrequirementslib.php
lib/phpunit/bootstrap.php
lib/phpunit/lib.php
lib/pluginlib.php
lib/setup.php
lib/setuplib.php
lib/tests/moodlelib_test.php
lib/tests/weblib_test.php
lib/thirdpartylibs.xml
lib/upgradelib.php
lib/weblib.php
lib/xsendfilelib.php [new file with mode: 0644]
local/readme.txt
message/externallib.php
mod/assign/adminlib.php [new file with mode: 0644]
mod/assign/adminmanageplugins.php [new file with mode: 0644]
mod/assign/assignmentplugin.php [new file with mode: 0644]
mod/assign/backup/moodle2/backup_assign_activity_task.class.php [new file with mode: 0644]
mod/assign/backup/moodle2/backup_assign_stepslib.php [new file with mode: 0644]
mod/assign/backup/moodle2/restore_assign_activity_task.class.php [new file with mode: 0644]
mod/assign/backup/moodle2/restore_assign_stepslib.php [new file with mode: 0644]
mod/assign/db/access.php [new file with mode: 0644]
mod/assign/db/events.php [new file with mode: 0644]
mod/assign/db/install.xml [new file with mode: 0644]
mod/assign/db/log.php [new file with mode: 0644]
mod/assign/db/messages.php [new file with mode: 0644]
mod/assign/db/subplugins.php [new file with mode: 0644]
mod/assign/db/upgrade.php [new file with mode: 0644]
mod/assign/feedback/comments/backup/moodle2/backup_assignfeedback_comments_subplugin.class.php [new file with mode: 0644]
mod/assign/feedback/comments/backup/moodle2/restore_assignfeedback_comments_subplugin.class.php [new file with mode: 0644]
mod/assign/feedback/comments/db/access.php [new file with mode: 0644]
mod/assign/feedback/comments/db/install.php [new file with mode: 0644]
mod/assign/feedback/comments/db/install.xml [new file with mode: 0644]
mod/assign/feedback/comments/db/upgrade.php [new file with mode: 0644]
mod/assign/feedback/comments/lang/en/assignfeedback_comments.php [new file with mode: 0644]
mod/assign/feedback/comments/locallib.php [new file with mode: 0644]
mod/assign/feedback/comments/version.php [new file with mode: 0644]
mod/assign/feedback/file/backup/moodle2/backup_assignfeedback_file_subplugin.class.php [new file with mode: 0644]
mod/assign/feedback/file/backup/moodle2/restore_assignfeedback_file_subplugin.class.php [new file with mode: 0644]
mod/assign/feedback/file/db/access.php [new file with mode: 0644]
mod/assign/feedback/file/db/install.php [new file with mode: 0644]
mod/assign/feedback/file/db/install.xml [new file with mode: 0644]
mod/assign/feedback/file/db/upgrade.php [new file with mode: 0644]
mod/assign/feedback/file/lang/en/assignfeedback_file.php [new file with mode: 0644]
mod/assign/feedback/file/lib.php [new file with mode: 0644]
mod/assign/feedback/file/locallib.php [new file with mode: 0644]
mod/assign/feedback/file/version.php [new file with mode: 0644]
mod/assign/feedbackplugin.php [new file with mode: 0644]
mod/assign/gradeform.php [new file with mode: 0644]
mod/assign/gradingactionsform.php [new file with mode: 0644]
mod/assign/gradingbatchoperationsform.php [new file with mode: 0644]
mod/assign/gradingoptionsform.php [new file with mode: 0644]
mod/assign/gradingtable.php [new file with mode: 0644]
mod/assign/index.php [new file with mode: 0644]
mod/assign/lang/en/assign.php [new file with mode: 0644]
mod/assign/lib.php [new file with mode: 0644]
mod/assign/locallib.php [new file with mode: 0644]
mod/assign/mod_form.php [new file with mode: 0644]
mod/assign/module.js [new file with mode: 0644]
mod/assign/pix/gradefeedback.gif [new file with mode: 0644]
mod/assign/pix/icon.gif [new file with mode: 0644]
mod/assign/portfolio_callback.php [new file with mode: 0644]
mod/assign/renderable.php [new file with mode: 0644]
mod/assign/renderer.php [new file with mode: 0644]
mod/assign/settings.php [new file with mode: 0644]
mod/assign/styles.css [new file with mode: 0644]
mod/assign/submission/comments/db/access.php [new file with mode: 0644]
mod/assign/submission/comments/db/install.php [new file with mode: 0644]
mod/assign/submission/comments/db/upgrade.php [new file with mode: 0644]
mod/assign/submission/comments/lang/en/assignsubmission_comments.php [new file with mode: 0644]
mod/assign/submission/comments/lib.php [new file with mode: 0644]
mod/assign/submission/comments/locallib.php [new file with mode: 0644]
mod/assign/submission/comments/version.php [new file with mode: 0644]
mod/assign/submission/file/backup/moodle2/backup_assignsubmission_file_subplugin.class.php [new file with mode: 0644]
mod/assign/submission/file/backup/moodle2/restore_assignsubmission_file_subplugin.class.php [new file with mode: 0644]
mod/assign/submission/file/db/access.php [new file with mode: 0644]
mod/assign/submission/file/db/install.xml [new file with mode: 0644]
mod/assign/submission/file/db/upgrade.php [new file with mode: 0644]
mod/assign/submission/file/lang/en/assignsubmission_file.php [new file with mode: 0644]
mod/assign/submission/file/lib.php [new file with mode: 0644]
mod/assign/submission/file/locallib.php [new file with mode: 0644]
mod/assign/submission/file/settings.php [new file with mode: 0644]
mod/assign/submission/file/version.php [new file with mode: 0644]
mod/assign/submission/onlinetext/backup/moodle2/backup_assignsubmission_onlinetext_subplugin.class.php [new file with mode: 0644]
mod/assign/submission/onlinetext/backup/moodle2/restore_assignsubmission_onlinetext_subplugin.class.php [new file with mode: 0644]
mod/assign/submission/onlinetext/db/access.php [new file with mode: 0644]
mod/assign/submission/onlinetext/db/install.php [new file with mode: 0644]
mod/assign/submission/onlinetext/db/install.xml [new file with mode: 0644]
mod/assign/submission/onlinetext/db/upgrade.php [new file with mode: 0644]
mod/assign/submission/onlinetext/lang/en/assignsubmission_onlinetext.php [new file with mode: 0644]
mod/assign/submission/onlinetext/lib.php [new file with mode: 0644]
mod/assign/submission/onlinetext/locallib.php [new file with mode: 0644]
mod/assign/submission/onlinetext/version.php [new file with mode: 0644]
mod/assign/submission_form.php [new file with mode: 0644]
mod/assign/submissionplugin.php [new file with mode: 0644]
mod/assign/upgradelib.php [new file with mode: 0644]
mod/assign/version.php [new file with mode: 0644]
mod/assign/view.php [new file with mode: 0644]
mod/assignment/db/install.php [new file with mode: 0644]
mod/assignment/lang/en/assignment.php
mod/assignment/lib.php
mod/choice/view.php
mod/data/lib.php
mod/feedback/show_entries.php
mod/forum/lib.php
mod/forum/post.php
mod/forum/search.php
mod/forum/view.php
mod/quiz/accessmanager.php
mod/quiz/accessrule/openclosedate/rule.php
mod/quiz/accessrule/openclosedate/tests/rule_test.php
mod/quiz/attempt.php
mod/quiz/attemptlib.php
mod/quiz/backup/moodle2/backup_quiz_stepslib.php
mod/quiz/comment.php
mod/quiz/cronlib.php [new file with mode: 0644]
mod/quiz/db/access.php
mod/quiz/db/events.php
mod/quiz/db/install.xml
mod/quiz/db/messages.php
mod/quiz/db/upgrade.php
mod/quiz/lang/en/quiz.php
mod/quiz/lib.php
mod/quiz/locallib.php
mod/quiz/mod_form.php
mod/quiz/module.js
mod/quiz/processattempt.php
mod/quiz/renderer.php
mod/quiz/report/attemptsreport.php
mod/quiz/report/attemptsreport_form.php
mod/quiz/report/attemptsreport_options.php
mod/quiz/report/attemptsreport_table.php
mod/quiz/report/grading/report.php
mod/quiz/report/overview/lang/en/quiz_overview.php
mod/quiz/report/overview/overview_form.php
mod/quiz/report/overview/overview_options.php
mod/quiz/report/overview/overview_table.php
mod/quiz/report/overview/report.php
mod/quiz/report/reportlib.php
mod/quiz/report/responses/lang/en/quiz_responses.php
mod/quiz/report/responses/report.php
mod/quiz/report/responses/responses_form.php
mod/quiz/report/responses/responses_options.php
mod/quiz/report/responses/responses_table.php
mod/quiz/report/statistics/report.php
mod/quiz/report/statistics/responseanalysis.php
mod/quiz/review.php
mod/quiz/settings.php
mod/quiz/settingslib.php
mod/quiz/startattempt.php
mod/quiz/styles.css
mod/quiz/summary.php
mod/quiz/version.php
mod/quiz/view.php
mod/resource/backup/moodle1/lib.php
mod/scorm/api.php
mod/scorm/loadSCO.php
mod/scorm/loaddatamodel.php
mod/scorm/player.php
mod/workshop/allocation/manual/lib.php
mod/workshop/allocation/manual/renderer.php
mod/workshop/assessment.php
mod/workshop/db/access.php
mod/workshop/fileinfolib.php
mod/workshop/lang/en/workshop.php
mod/workshop/lib.php
mod/workshop/locallib.php
mod/workshop/renderer.php
mod/workshop/styles.css
mod/workshop/submission.php
mod/workshop/view.php
notes/externallib.php
question/editlib.php
question/type/calculated/questiontype.php
question/type/calculatedmulti/edit_calculatedmulti_form.php
question/type/calculatedmulti/question.php
report/participation/index.php
repository/filepicker.php
repository/picasa/lib.php
theme/base/style/course.css
theme/image.php
theme/javascript.php
theme/nimble/style/menu.css
theme/yui_combo.php
theme/yui_image.php
user/editlib.php
user/externallib.php
user/index.php
user/lib.php
version.php

index a57c23f..e95a47a 100644 (file)
@@ -25,4 +25,4 @@ CVS
 /.project
 /.buildpath
 /.cache
-/phpunit.xml
\ No newline at end of file
+phpunit.xml
\ No newline at end of file
index cd17818..4b9f456 100644 (file)
     </DATABASE>
     <PHP version="5.3.2" level="required">
     </PHP>
+    <PCREUNICODE level="optional">
+      <FEEDBACK>
+        <ON_CHECK message="pcreunicodewarning" />
+      </FEEDBACK>
+    </PCREUNICODE>
     <PHP_EXTENSIONS>
       <PHP_EXTENSION name="iconv" level="required">
         <FEEDBACK>
         </FEEDBACK>
       </PHP_SETTING>
     </PHP_SETTINGS>
-  </MOODLE>
+</MOODLE>
 </COMPATIBILITY_MATRIX>
index 8daf613..8e78fc3 100644 (file)
@@ -34,6 +34,10 @@ require_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM));
 // Get the submitted params
 $disable    = optional_param('disable', 0, PARAM_INT);
 $enable     = optional_param('enable', 0, PARAM_INT);
+$uninstall  = optional_param('uninstall', 0, PARAM_INT);
+$confirm  = optional_param('confirm', false, PARAM_BOOL);
+
+$headingtitle = get_string('managemessageoutputs', 'message');
 
 if (!empty($disable) && confirm_sesskey()) {
     if (!$processor = $DB->get_record('message_processors', array('id'=>$disable))) {
@@ -42,14 +46,37 @@ if (!empty($disable) && confirm_sesskey()) {
     $DB->set_field('message_processors', 'enabled', '0', array('id'=>$processor->id));      // Disable output
 }
 
-if (!empty($enable) && confirm_sesskey() ) {
+if (!empty($enable) && confirm_sesskey()) {
     if (!$processor = $DB->get_record('message_processors', array('id'=>$enable))) {
         print_error('outputdoesnotexist', 'message');
     }
     $DB->set_field('message_processors', 'enabled', '1', array('id'=>$processor->id));      // Enable output
 }
 
-if ($disable || $enable) {
+if (!empty($uninstall) && confirm_sesskey()) {
+    echo $OUTPUT->header();
+    echo $OUTPUT->heading($headingtitle);
+
+    if (!$processor = $DB->get_record('message_processors', array('id'=>$uninstall))) {
+        print_error('outputdoesnotexist', 'message');
+    }
+
+    $processorname = get_string('pluginname', 'message_'.$processor->name);
+
+    if (!$confirm) {
+        echo $OUTPUT->confirm(get_string('processordeleteconfirm', 'message', $processorname), 'message.php?uninstall='.$processor->id.'&confirm=1', 'message.php');
+        echo $OUTPUT->footer();
+        exit;
+
+    } else {
+        message_processor_uninstall($processor->name);
+        $a->processor = $processorname;
+        $a->directory = $CFG->dirroot.'/message/output/'.$processor->name;
+        notice(get_string('processordeletefiles', 'message', $a), 'message.php');
+    }
+}
+
+if ($disable || $enable || $uninstall) {
     $url = new moodle_url('message.php');
     redirect($url);
 }
@@ -65,6 +92,6 @@ $messageoutputs = $renderer->manage_messageoutputs($processors);
 
 // Display the page
 echo $OUTPUT->header();
-echo $OUTPUT->heading(get_string('managemessageoutputs', 'message'));
+echo $OUTPUT->heading($headingtitle);
 echo $messageoutputs;
 echo $OUTPUT->footer();
\ No newline at end of file
index 543346b..92722eb 100644 (file)
@@ -161,6 +161,7 @@ if ($hassiteconfig
         400 => '400',
         500 => '500');
     $temp->add(new admin_setting_configselect('backup/backup_auto_keep', new lang_string('keep'), new lang_string('backupkeephelp'), 1, $keepoptoins));
+    $temp->add(new admin_setting_configcheckbox('backup/backup_shortname', new lang_string('backup_shortname', 'admin'), new lang_string('backup_shortnamehelp', 'admin'), 0));
 
     // Automated defaults section.
     $temp->add(new admin_setting_heading('automatedsettings', new lang_string('automatedsettings','backup'), ''));
diff --git a/admin/tool/assignmentupgrade/batchupgrade.php b/admin/tool/assignmentupgrade/batchupgrade.php
new file mode 100644 (file)
index 0000000..b62260e
--- /dev/null
@@ -0,0 +1,45 @@
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle 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 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle 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 Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Script to show all the assignments that have not been upgraded after the main upgrade.
+ *
+ * @package    tool_assignmentupgrade
+ * @copyright  2012 NetSpot
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+require_once(dirname(__FILE__) . '/../../../config.php');
+require_once(dirname(__FILE__) . '/locallib.php');
+require_once(dirname(__FILE__) . '/upgradableassignmentstable.php');
+require_once(dirname(__FILE__) . '/upgradableassignmentsbatchform.php');
+require_once($CFG->libdir . '/adminlib.php');
+
+// admin_externalpage_setup calls require_login and checks moodle/site:config
+admin_externalpage_setup('assignmentupgrade', '', array(), tool_assignmentupgrade_url('batchupgrade'));
+$PAGE->navbar->add(get_string('batchupgrade', 'tool_assignmentupgrade'));
+
+$renderer = $PAGE->get_renderer('tool_assignmentupgrade');
+
+$confirm = required_param('confirm', PARAM_BOOL);
+if (!$confirm) {
+    print_error('invalidrequest');
+    die();
+}
+$result = tool_assignmentupgrade_upgrade_multiple_assignments(optional_param('upgradeall', 0, PARAM_BOOL),
+                                                explode(',', optional_param('selected', '', PARAM_TEXT)));
+
+echo $renderer->convert_multiple_assignments_result($result);
diff --git a/admin/tool/assignmentupgrade/index.php b/admin/tool/assignmentupgrade/index.php
new file mode 100644 (file)
index 0000000..bb7ff49
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle 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 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle 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 Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * This tool can upgrade old assignment activities to the new assignment activity type
+ *
+ * The upgrade can be done on any old assignment instance providing it is using one of the core
+ * assignment subtypes (online text, single upload, etc).
+ * The new assignment module was introduced in Moodle 2.3 and although it completely reproduces
+ * the features of the existing assignment type it wasn't designed to replace it entirely as there
+ * are many custom assignment types people use and it wouldn't be practical to try to convert them.
+ * Instead the existing assignment type will be left in core and people will be encouraged to
+ * use the new assignment type.
+ *
+ * This screen is the main entry-point to the plugin, it gives the admin a list
+ * of options available to them.
+ *
+ * @package    tool_assignmentupgrade
+ * @copyright  2012 NetSpot
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+require_once(dirname(__FILE__) . '/../../../config.php');
+require_once(dirname(__FILE__) . '/locallib.php');
+require_once($CFG->libdir . '/adminlib.php');
+
+// admin_externalpage_setup calls require_login and checks moodle/site:config
+admin_externalpage_setup('assignmentupgrade');
+
+$renderer = $PAGE->get_renderer('tool_assignmentupgrade');
+
+$actions = array();
+
+$header = get_string('pluginname', 'tool_assignmentupgrade');
+$actions[] = tool_assignmentupgrade_action::make('listnotupgraded');
+
+echo $renderer->index_page($header, $actions);
\ No newline at end of file
diff --git a/admin/tool/assignmentupgrade/lang/en/tool_assignmentupgrade.php b/admin/tool/assignmentupgrade/lang/en/tool_assignmentupgrade.php
new file mode 100644 (file)
index 0000000..3b3734b
--- /dev/null
@@ -0,0 +1,56 @@
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle 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 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle 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 Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Strings for the assignment upgrade tool
+ *
+ * @package    tool_assignmentupgrade
+ * @copyright  2012 NetSpot
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+$string['areyousure'] = 'Are you sure?';
+$string['areyousuremessage'] = 'Are you sure you want to upgrade the assignment "{$a->name}"?';
+$string['assignmentid'] = 'Assignment ID';
+$string['assignmentnotfound'] = 'Assignment could not be found (id={$a})';
+$string['assignmenttype'] = 'Assignment type';
+$string['backtoindex'] = 'Back to index';
+$string['batchoperations'] = 'Batch operations';
+$string['batchupgrade'] = 'Upgrade multiple assignments';
+$string['confirmbatchupgrade'] = 'Confirm batch upgrade assignments';
+$string['conversioncomplete'] = 'Assignment converted';
+$string['conversionfailed'] = 'The assignment conversion was not successful. The log from the upgrade was: <br />{$a}';
+$string['listnotupgraded'] = 'List assignments that have not been upgraded';
+$string['listnotupgraded_desc'] = 'You can upgrade individual assignments from here';
+$string['noassignmentstoupgrade'] = 'There are no assignments that require upgrading';
+$string['notsupported'] = '';
+$string['notupgradedintro'] = 'This page lists the assignments created with an older version of Moodle that have not been upgraded to the new assignment module in Moodle 2.3. Not all assignments can be upgraded - if they were created with a custom assignment subtype, then that subtype will need to be upgraded to the new assignment plugin format in order to complete the upgrade.';
+$string['notupgradedtitle'] = 'Assignments not upgraded';
+$string['pluginname'] = 'Assignment upgrade helper';
+$string['select'] = 'Select';
+$string['submissions'] = 'Submissions';
+$string['supported'] = 'Upgrade';
+$string['unknown'] = 'Unknown';
+$string['upgradeassignmentsummary'] = 'Upgrade assignment: {$a->name} (Course: {$a->shortname})';
+$string['upgradeassignmentsuccess'] = 'Result: Upgrade successful';
+$string['upgradeassignmentfailed'] = 'Result: Upgrade failed. The log from the upgrade was: <br/><div class="tool_assignmentupgrade_upgradelog">{$a->log}</div>';
+$string['upgradable'] = 'Upgradable';
+$string['upgradeselected'] = 'Upgrade selected assignments';
+$string['upgradeselectedcount'] = 'Upgrade {$a} selected assignments?';
+$string['upgradeall'] = 'Upgrade all assignments';
+$string['upgradeallconfirm'] = 'Upgrade all assignments?';
+$string['upgradesingle'] = 'Upgrade single assignment';
+$string['viewcourse'] = 'View the course with the converted assignment';
diff --git a/admin/tool/assignmentupgrade/lib.php b/admin/tool/assignmentupgrade/lib.php
new file mode 100644 (file)
index 0000000..d5601fa
--- /dev/null
@@ -0,0 +1,59 @@
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle 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 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle 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 Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Lib functions (cron) to automatically complete the assignment module upgrade if it was not done all at once during the main upgrade.
+ *
+ * @package    tool_assignmentupgrade
+ * @copyright  2012 NetSpot
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die;
+
+/**
+ * Standard cron function
+ */
+function tool_assignmentupgrade_cron() {
+    $settings = get_config('tool_assignmentupgrade');
+    if (empty($settings->cronenabled)) {
+        return;
+    }
+
+    mtrace('assignmentupgrade: tool_assignmentupgrade_cron() started at '. date('H:i:s'));
+    try {
+        tool_assignmentupgrade_process($settings);
+    } catch (Exception $e) {
+        mtrace('assignmentupgrade: tool_assignmentupgrade_cron() failed with an exception:');
+        mtrace($e->getMessage());
+    }
+    mtrace('assignmentupgrade: tool_assignmentupgrade_cron() finished at ' . date('H:i:s'));
+}
+
+/**
+ * This function does the cron process within the time range according to settings.
+ * This is not implemented yet
+ * @param stdClass $settings - not used
+ */
+function tool_assignmentupgrade_process($settings) {
+    global $CFG;
+    require_once(dirname(__FILE__) . '/locallib.php');
+
+    mtrace('assignmentupgrade: processing ...');
+
+    mtrace('assignmentupgrade: Done.');
+    return;
+}
diff --git a/admin/tool/assignmentupgrade/listnotupgraded.php b/admin/tool/assignmentupgrade/listnotupgraded.php
new file mode 100644 (file)
index 0000000..488ec6e
--- /dev/null
@@ -0,0 +1,48 @@
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle 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 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle 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 Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Script to show all the assignments that have not been upgraded after the main upgrade.
+ *
+ * @package    tool_assignmentupgrade
+ * @copyright  2012 NetSpot
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+require_once(dirname(__FILE__) . '/../../../config.php');
+require_once(dirname(__FILE__) . '/locallib.php');
+require_once(dirname(__FILE__) . '/upgradableassignmentstable.php');
+require_once(dirname(__FILE__) . '/upgradableassignmentsbatchform.php');
+require_once($CFG->libdir . '/adminlib.php');
+
+// admin_externalpage_setup calls require_login and checks moodle/site:config
+admin_externalpage_setup('assignmentupgrade', '', array(), tool_assignmentupgrade_url('listnotupgraded'));
+$PAGE->navbar->add(get_string('listnotupgraded', 'tool_assignmentupgrade'));
+
+$renderer = $PAGE->get_renderer('tool_assignmentupgrade');
+
+$perpage = get_user_preferences('tool_assignmentupgrade_perpage', 5);
+$assignments = new tool_assignmentupgrade_assignments_table($perpage);
+
+$batchform = new tool_assignmentupgrade_batchoperations_form();
+$data = $batchform->get_data();
+if ($data && $data->selectedassignments != '' || $data && isset($data->upgradeall)) {
+    echo $renderer->confirm_batch_operation_page($data);
+} else {
+    echo $renderer->assignment_list_page($assignments, $batchform);
+}
+
+
diff --git a/admin/tool/assignmentupgrade/locallib.php b/admin/tool/assignmentupgrade/locallib.php
new file mode 100644 (file)
index 0000000..89e0e24
--- /dev/null
@@ -0,0 +1,245 @@
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle 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 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle 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 Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Assignment upgrade tool library functions
+ *
+ * @package    tool_assignmentupgrade
+ * @copyright  2012 NetSpot
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die();
+
+/**
+ * Get the URL of a script within this plugin.
+ * @param string $script the script name, without .php. E.g. 'index'
+ * @param array $params URL parameters (optional)
+ * @return moodle_url
+ */
+function tool_assignmentupgrade_url($script, $params = array()) {
+    return new moodle_url('/admin/tool/assignmentupgrade/' . $script . '.php', $params);
+}
+
+/**
+ * Class to encapsulate the continue / cancel for batch operations
+ *
+ * @package    tool_assignmentupgrade
+ * @copyright  2012 NetSpot
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class tool_assignmentupgrade_batchoperationconfirm implements renderable {
+    /** @var string $continuemessage The message to show above the continue cancel buttons */
+    public $continuemessage = '';
+    /** @var string $continueurl The url to load if the user clicks continue */
+    public $continueurl;
+
+    /**
+     * Constructor for this class
+     * @param stdClass $data - The data from the previous batch form
+     */
+    function __construct($data) {
+        if (isset($data->upgradeselected)) {
+            $this->continuemessage = get_string('upgradeselectedcount', 'tool_assignmentupgrade', count(explode(',', $data->selectedassignments)));
+            $this->continueurl = new moodle_url('/admin/tool/assignmentupgrade/batchupgrade.php', array('upgradeselected'=>'1', 'confirm'=>'1', 'sesskey'=>sesskey(), 'selected'=>$data->selectedassignments));
+        } else if (isset($data->upgradeall)) {
+            if (!tool_assignmentupgrade_any_upgradable_assignments()) {
+                $this->continuemessage = get_string('noassignmentstoupgrade', 'tool_assignmentupgrade');
+                $this->continueurl = '';
+            } else {
+                $this->continuemessage = get_string('upgradeallconfirm', 'tool_assignmentupgrade');
+                $this->continueurl = new moodle_url('/admin/tool/assignmentupgrade/batchupgrade.php', array('upgradeall'=>'1', 'confirm'=>'1', 'sesskey'=>sesskey()));
+            }
+        }
+    }
+}
+
+
+/**
+ * Class to encapsulate one of the functionalities that this plugin offers.
+ *
+ * @package    tool_assignmentupgrade
+ * @copyright  2012 NetSpot
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class tool_assignmentupgrade_action {
+    /** @var string the name of this action. */
+    public $name;
+    /** @var moodle_url the URL to launch this action. */
+    public $url;
+    /** @var string a description of this aciton. */
+    public $description;
+
+    /**
+     * Constructor to set the fields.
+     *
+     * In order to create a new tool_assignmentupgrade_action instance you must use the tool_assignmentupgrade_action::make
+     * method.
+     *
+     * @param string $name the name of this action.
+     * @param moodle_url $url the URL to launch this action.
+     * @param string $description a description of this aciton.
+     */
+    protected function __construct($name, moodle_url $url, $description) {
+        $this->name = $name;
+        $this->url = $url;
+        $this->description = $description;
+    }
+
+    /**
+     * Make an action with standard values.
+     * @param string $shortname internal name of the action. Used to get strings and build a URL.
+     * @param array $params any URL params required.
+     * @return tool_assignmentupgrade_action
+     */
+    public static function make($shortname, $params = array()) {
+        return new self(
+                get_string($shortname, 'tool_assignmentupgrade'),
+                tool_assignmentupgrade_url($shortname, $params),
+                get_string($shortname . '_desc', 'tool_assignmentupgrade'));
+    }
+}
+
+/**
+ * Determine if there are any assignments that can be upgraded
+ * @return boolean - Are there any assignments that can be upgraded
+ */
+function tool_assignmentupgrade_any_upgradable_assignments() {
+    global $DB, $CFG;
+    require_once($CFG->dirroot . '/mod/assign/locallib.php');
+    // first find all the unique assignment types
+    $types = $DB->get_records_sql('SELECT plugin AS assignmenttype, value AS version FROM {config_plugins} WHERE name = ? AND plugin LIKE ?', array('version', 'assignment_%'));
+
+    $upgradabletypes = array();
+
+    foreach ($types as $assignment) {
+        $shorttype = substr($assignment->assignmenttype, strlen('assignment_'));
+        if (assign::can_upgrade_assignment($shorttype, $assignment->version)) {
+            $upgradabletypes[] = $shorttype;
+        }
+    }
+    $paramlist = '?';
+    foreach ($upgradabletypes as $index => $upgradabletype) {
+        if ($index > 0) {
+            $paramlist .= ', ?';
+        }
+    }
+
+    $record = $DB->get_record_sql('SELECT COUNT(id) as count from {assignment} where assignmenttype in (' . $paramlist . ')', $upgradabletypes);
+
+    return $record->count > 0;
+}
+
+/**
+ * Load a list of all the assignmentids that can be upgraded
+ * @return array of assignment ids
+ */
+function tool_assignmentupgrade_load_all_upgradable_assignmentids() {
+    global $DB, $CFG;
+    require_once($CFG->dirroot . '/mod/assign/locallib.php');
+    // first find all the unique assignment types
+    $types = $DB->get_records_sql('SELECT plugin AS assignmenttype, value AS version FROM {config_plugins} WHERE name = ? AND plugin LIKE ?', array('version', 'assignment_%'));
+
+    $upgradabletypes = array();
+
+    foreach ($types as $assignment) {
+        $shorttype = substr($assignment->assignmenttype, strlen('assignment_'));
+        if (assign::can_upgrade_assignment($shorttype, $assignment->version)) {
+            $upgradabletypes[] = $shorttype;
+        }
+    }
+    $paramlist = '?';
+    foreach ($upgradabletypes as $index => $upgradabletype) {
+        if ($index > 0) {
+            $paramlist .= ', ?';
+        }
+    }
+
+    $records = $DB->get_records_sql('SELECT id from {assignment} where assignmenttype in (' . $paramlist . ')', $upgradabletypes);
+    $ids = array();
+    foreach ($records as $record) {
+        $ids[] = $record->id;
+    }
+
+    return $ids;
+}
+
+
+/**
+ * Convert a list of assignments from the old format to the new one.
+ * @param bool $upgradeall - Upgrade all possible assignments
+ * @param array $assignmentids An array of assignment ids to upgrade
+ * @return array of $entry['assignmentsummary' => (result from tool_assignmentupgrade_get_assignment)
+ *                  $entry['success'] => boolean
+ *                  $entry['log'] => string - upgrade log
+ */
+function tool_assignmentupgrade_upgrade_multiple_assignments($upgradeall, $assignmentids) {
+    global $CFG;
+    require_once($CFG->dirroot . '/mod/assign/locallib.php');
+    require_once($CFG->dirroot . '/mod/assign/upgradelib.php');
+    $upgrades = array();
+
+    if ($upgradeall) {
+        $assignmentids = tool_assignmentupgrade_load_all_upgradable_assignmentids();
+    }
+
+    $assignment_upgrader = new assign_upgrade_manager();
+    foreach ($assignmentids as $assignmentid) {
+        $info = tool_assignmentupgrade_get_assignment($assignmentid);
+        if ($info) {
+            $log = '';
+            $success = $assignment_upgrader->upgrade_assignment($assignmentid, $log);
+        } else {
+            $success = false;
+            $log = get_string('assignmentnotfound', 'tool_assignmentupgrade', $assignmentid);
+            $info = new stdClass();
+            $info->name = get_string('unknown', 'tool_assignmentupgrade');
+            $info->shortname = get_string('unknown', 'tool_assignmentupgrade');
+        }
+
+        $upgrades[] = array('assignmentsummary'=>$info, 'success'=>$success, 'log'=>$log);
+    }
+    return $upgrades;
+}
+
+/**
+ * Convert a single assignment from the old format to the new one.
+ * @param stdClass $assignmentinfo An object containing information about this class
+ * @param string $log This gets appended to with the details of the conversion process
+ * @return boolean This is the overall result (true/false)
+ */
+function tool_assignmentupgrade_upgrade_assignment($assignmentinfo, &$log) {
+    global $CFG;
+    require_once($CFG->dirroot . '/mod/assign/locallib.php');
+    require_once($CFG->dirroot . '/mod/assign/upgradelib.php');
+    $assignment_upgrader = new assign_upgrade_manager();
+    return $assignment_upgrader->upgrade_assignment($assignmentinfo->id, $log);
+}
+
+/**
+ * Get the information about a assignment to be upgraded.
+ * @param int $assignmentid the assignment id.
+ * @return stdClass the information about that assignment.
+ */
+function tool_assignmentupgrade_get_assignment($assignmentid) {
+    global $DB;
+    return $DB->get_record_sql("
+            SELECT a.id, a.name, c.shortname, c.id AS courseid
+            FROM {assignment} a
+            JOIN {course} c ON c.id = a.course
+            WHERE a.id = ?", array($assignmentid));
+}
+
diff --git a/admin/tool/assignmentupgrade/module.js b/admin/tool/assignmentupgrade/module.js
new file mode 100644 (file)
index 0000000..829f99a
--- /dev/null
@@ -0,0 +1,66 @@
+
+M.tool_assignmentupgrade = {
+    init_upgrade_table: function(Y) {
+
+        Y.use('node', function(Y) {
+            checkboxes = Y.all('td.c0 input');
+            checkboxes.each(function(node) {
+                node.on('change', function(e) {
+                    rowelement = e.currentTarget.get('parentNode').get('parentNode');
+                    if (e.currentTarget.get('checked')) {
+                        rowelement.setAttribute('class', 'selectedrow');
+                    } else {
+                        rowelement.setAttribute('class', 'unselectedrow');
+                    }
+                });
+
+                rowelement = node.get('parentNode').get('parentNode');
+                if (node.get('checked')) {
+                    rowelement.setAttribute('class', 'selectedrow');
+                } else {
+                    rowelement.setAttribute('class', 'unselectedrow');
+                }
+            });
+        });
+
+        var selectall = Y.one('th.c0 input');
+        selectall.on('change', function(e) {
+            if (e.currentTarget.get('checked')) {
+                checkboxes = Y.all('td.c0 input');
+                checkboxes.each(function(node) {
+                    rowelement = node.get('parentNode').get('parentNode');
+                    node.set('checked', true);
+                    rowelement.setAttribute('class', 'selectedrow');
+                });
+            } else {
+                checkboxes = Y.all('td.c0 input');
+                checkboxes.each(function(node) {
+                    rowelement = node.get('parentNode').get('parentNode');
+                    node.set('checked', false);
+                    rowelement.setAttribute('class', 'unselectedrow');
+                });
+            }
+        });
+
+        var batchform = Y.one('.tool_assignmentupgrade_batchform form');
+        batchform.on('submit', function(e) {
+            checkboxes = Y.all('td.c0 input');
+            var selectedassignments = [];
+            checkboxes.each(function(node) {
+                if (node.get('checked')) {
+                    selectedassignments[selectedassignments.length] = node.get('value');
+                }
+            });
+
+            operation = Y.one('#id_operation');
+            assignmentsinput = Y.one('input.selectedassignments');
+            assignmentsinput.set('value', selectedassignments.join(','));
+            if (selectedassignments.length == 0) {
+                alert(M.str.assign.noassignmentsselected);
+                e.preventDefault();
+            }
+        });
+
+
+    }
+}
diff --git a/admin/tool/assignmentupgrade/renderer.php b/admin/tool/assignmentupgrade/renderer.php
new file mode 100644 (file)
index 0000000..16c013c
--- /dev/null
@@ -0,0 +1,278 @@
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle 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 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle 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 Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Defines the renderer for the assignment upgrade helper plugin.
+ *
+ * @package    tool_assignmentupgrade
+ * @copyright  2012 NetSpot
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die();
+
+/**
+ * Renderer for the assignment upgrade helper plugin.
+ *
+ * @package    tool_assignmentupgrade
+ * @copyright  2012 NetSpot
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class tool_assignmentupgrade_renderer extends plugin_renderer_base {
+
+    /**
+     * Render the index page.
+     * @param string $detected information about what sort of site was detected.
+     * @param array $actions list of actions to show on this page.
+     * @return string html to output.
+     */
+    public function index_page($detected, array $actions) {
+        $output = '';
+        $output .= $this->header();
+        $output .= $this->heading(get_string('pluginname', 'tool_assignmentupgrade'));
+        $output .= $this->box($detected);
+        $output .= html_writer::start_tag('ul');
+        foreach ($actions as $action) {
+            $output .= html_writer::tag('li',
+                    html_writer::link($action->url, $action->name) . ' - ' .
+                    $action->description);
+        }
+        $output .= html_writer::end_tag('ul');
+        $output .= $this->footer();
+        return $output;
+    }
+
+    /**
+     * Render a page that is just a simple message.
+     * @param string $message the message to display.
+     * @return string html to output.
+     */
+    public function simple_message_page($message) {
+        $output = '';
+        $output .= $this->header();
+        $output .= $this->heading($message);
+        $output .= $this->back_to_index();
+        $output .= $this->footer();
+        return $output;
+    }
+
+    /**
+     * Render the confirm batch operation page
+     * @param stdClass $data Submitted form data with list of assignments to upgrade
+     * @return string html to output.
+     */
+    public function confirm_batch_operation_page(stdClass $data) {
+        $output = '';
+        $output .= $this->header();
+
+        $output .= $this->heading(get_string('confirmbatchupgrade', 'tool_assignmentupgrade'));
+        $output .= $this->output->spacer(array(), true);
+
+        $output .= $this->container_start('tool_assignmentupgrade_confirmbatch');
+
+        $output .= $this->render(new tool_assignmentupgrade_batchoperationconfirm($data));
+        $output .= $this->container_end();
+
+        $output .= $this->back_to_index();
+        $output .= $this->footer();
+        return $output;
+    }
+
+    /**
+     * Render the confirm batch continue / cancel links
+     * @param tool_assignmentupgrade_batchoperationconfirm $confirm Wrapper class to determine the continue message and url
+     * @return string html to output.
+     */
+    public function render_tool_assignmentupgrade_batchoperationconfirm(tool_assignmentupgrade_batchoperationconfirm $confirm) {
+        $output = '';
+
+        if ($confirm->continueurl) {
+            $output .= $this->output->confirm($confirm->continuemessage, $confirm->continueurl, tool_assignmentupgrade_url('listnotupgraded'));
+        } else {
+            $output .= $this->output->box($confirm->continuemessage);
+            $output .= $this->output->continue_button(tool_assignmentupgrade_url('listnotupgraded'));
+        }
+        return $output;
+    }
+
+    /**
+     * Render the list of assignments that still need to be upgraded page.
+     * @param tool_assignmentupgrade_assignments_table $assignments of data about assignments.
+     * @param tool_assignmentupgrade_batchoperations_form $batchform Submitted form with list of assignments to upgrade
+     * @return string html to output.
+     */
+    public function assignment_list_page(tool_assignmentupgrade_assignments_table $assignments, tool_assignmentupgrade_batchoperations_form $batchform) {
+        $output = '';
+        $output .= $this->header();
+        $this->page->requires->js_init_call('M.tool_assignmentupgrade.init_upgrade_table', array());
+
+
+        $output .= $this->heading(get_string('notupgradedtitle', 'tool_assignmentupgrade'));
+        $output .= $this->box(get_string('notupgradedintro', 'tool_assignmentupgrade'));
+        $output .= $this->output->spacer(array(), true);
+
+        $output .= $this->container_start('tool_assignmentupgrade_upgradetable');
+
+        $output .= $this->flexible_table($assignments, $assignments->get_rows_per_page(), true);
+        $output .= $this->container_end();
+
+        if ($assignments->anyupgradableassignments) {
+            $output .= $this->container_start('tool_assignmentupgrade_batchform');
+            $output .= $this->moodleform($batchform);
+            $output .= $this->container_end();
+        }
+
+        $output .= $this->back_to_index();
+        $output .= $this->footer();
+        return $output;
+    }
+
+    /**
+     * Render the result of an assignment conversion
+     * @param array $assignments - An array of arrays with keys $entry['assignmentsummary', 'success', 'log']
+     *                            See convert_assignment_result for more description of these keys.
+     * @return string html to output.
+     */
+    public function convert_multiple_assignments_result($assignments) {
+        $output = '';
+        $output .= $this->header();
+        $output .= $this->heading(get_string('batchupgrade', 'tool_assignmentupgrade'));
+
+        foreach ($assignments as $assignment) {
+            $assignmentsummary = $assignment['assignmentsummary'];
+            $success = $assignment['success'];
+            $log = $assignment['log'];
+
+            $output .= $this->heading(get_string('upgradeassignmentsummary', 'tool_assignmentupgrade', $assignmentsummary), 5);
+            if ($success) {
+                $output .= $this->container(get_string('upgradeassignmentsuccess', 'tool_assignmentupgrade'));
+
+            } else {
+                $output .= $this->container(get_string('upgradeassignmentfailed', 'tool_assignmentupgrade', $assignment));
+            }
+            if (isset($assignmentsummary->courseid)) {
+                $output .= html_writer::link(new moodle_url('/course/view.php', array('id'=>$assignmentsummary->courseid)) ,get_string('viewcourse', 'tool_assignmentupgrade'));
+            }
+
+
+        }
+
+        $output .= $this->continue_button(tool_assignmentupgrade_url('listnotupgraded'));
+
+
+        $output .= $this->footer();
+        return $output;
+    }
+
+    /**
+     * Render the result of an assignment conversion
+     * @param stdClass $assignmentsummary data about the assignment to upgrade.
+     * @param bool $success Set to true if the outcome of the conversion was a success
+     * @param string $log The log from the conversion
+     * @return string html to output.
+     */
+    public function convert_assignment_result($assignmentsummary, $success, $log) {
+        $output = '';
+        $output .= $this->header();
+        $output .= $this->heading(get_string('conversioncomplete', 'tool_assignmentupgrade'));
+
+        if (!$success) {
+            $output .= get_string('conversionfailed', 'tool_assignmentupgrade', $log);
+        } else {
+            $output .= html_writer::link(new moodle_url('/course/view.php', array('id'=>$assignmentsummary->courseid)) ,get_string('viewcourse', 'tool_assignmentupgrade'));
+        }
+
+        $output .= $this->continue_button(tool_assignmentupgrade_url('listnotupgraded'));
+
+
+        $output .= $this->footer();
+        return $output;
+    }
+
+    /**
+     * Render the are-you-sure page to confirm a manual upgrade.
+     * @param stdClass $assignmentsummary data about the assignment to upgrade.
+     * @return string html to output.
+     */
+    public function convert_assignment_are_you_sure($assignmentsummary) {
+        $output = '';
+        $output .= $this->header();
+        $output .= $this->heading(get_string('areyousure', 'tool_assignmentupgrade'));
+
+        $params = array('id' => $assignmentsummary->id, 'confirmed' => 1, 'sesskey' => sesskey());
+        $output .= $this->confirm(get_string('areyousuremessage', 'tool_assignmentupgrade', $assignmentsummary),
+                new single_button(tool_assignmentupgrade_url('upgradesingle', $params), get_string('yes')),
+                tool_assignmentupgrade_url('listnotupgraded'));
+
+        $output .= $this->footer();
+        return $output;
+    }
+
+    /**
+     * Helper method dealing with the fact we can not just fetch the output of flexible_table
+     *
+     * @param flexible_table $table
+     * @param int $rowsperpage
+     * @param bool $displaylinks Show links in the table
+     * @return string HTML
+     */
+    protected function flexible_table(flexible_table $table, $rowsperpage, $displaylinks) {
+
+        $o = '';
+        ob_start();
+        $table->out($rowsperpage, $displaylinks);
+        $o = ob_get_contents();
+        ob_end_clean();
+
+        return $o;
+    }
+
+    /**
+     * Helper method dealing with the fact we can not just fetch the output of moodleforms
+     *
+     * @param moodleform $mform
+     * @return string HTML
+     */
+    protected function moodleform(moodleform $mform) {
+
+        $o = '';
+        ob_start();
+        $mform->display();
+        $o = ob_get_contents();
+        ob_end_clean();
+
+        return $o;
+    }
+
+
+    /**
+     * Render a link in a div, such as the 'Back to plugin main page' link.
+     * @param string|moodle_url $url the link URL.
+     * @param string $text the link text.
+     * @return string html to output.
+     */
+    public function end_of_page_link($url, $text) {
+        return html_writer::tag('div', html_writer::link($url, $text), array('class' => 'mdl-align'));
+    }
+
+    /**
+     * Output a link back to the plugin index page.
+     * @return string html to output.
+     */
+    public function back_to_index() {
+        return $this->end_of_page_link(tool_assignmentupgrade_url('index'), get_string('backtoindex', 'tool_assignmentupgrade'));
+    }
+}
diff --git a/admin/tool/assignmentupgrade/settings.php b/admin/tool/assignmentupgrade/settings.php
new file mode 100644 (file)
index 0000000..a637e38
--- /dev/null
@@ -0,0 +1,31 @@
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle 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 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle 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 Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Adds this plugin to the admin menu.
+ *
+ * @package    tool_assignmentupgrade
+ * @copyright  2012 NetSpot
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die;
+
+if ($hassiteconfig) { // needs this condition or there is error on login page
+    $ADMIN->add('root', new admin_externalpage('assignmentupgrade',
+            get_string('pluginname', 'tool_assignmentupgrade'),
+            new moodle_url('/admin/tool/assignmentupgrade/index.php')));
+}
\ No newline at end of file
diff --git a/admin/tool/assignmentupgrade/styles.css b/admin/tool/assignmentupgrade/styles.css
new file mode 100644 (file)
index 0000000..0188dc4
--- /dev/null
@@ -0,0 +1,11 @@
+#page-admin-tool-assignmentupgrade-listnotupgraded .tool_assignmentupgrade_upgradetable .c0 { display: none; }
+#page-admin-tool-assignmentupgrade-listnotupgraded.jsenabled .tool_assignmentupgrade_upgradetable .c0 { display: table-cell; }
+/*
+.gradingbatchoperationsform { display: none; }
+.jsenabled .gradingbatchoperationsform { display: block; }
+*/
+
+#page-admin-tool-assignmentupgrade-listnotupgraded .tool_assignmentupgrade_upgradetable tr.selectedrow td { background-color: #ffeecc; }
+#page-admin-tool-assignmentupgrade-listnotupgraded .tool_assignmentupgrade_upgradetable tr.unselectedrow td { background-color: white; }
+
+
diff --git a/admin/tool/assignmentupgrade/upgradableassignmentsbatchform.php b/admin/tool/assignmentupgrade/upgradableassignmentsbatchform.php
new file mode 100644 (file)
index 0000000..105530a
--- /dev/null
@@ -0,0 +1,55 @@
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle 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 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle 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 Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * This file contains the forms to create and edit an instance of this module
+ *
+ * @package   tool_assignmentupgrade
+ * @copyright 2012 NetSpot {@link http://www.netspot.com.au}
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die('Direct access to this script is forbidden.');
+
+
+/** Include formslib.php */
+require_once ($CFG->libdir.'/formslib.php');
+
+/**
+ * Assignment upgrade batch operations form
+ *
+ * @package   tool_assignmentupgrade
+ * @copyright 2012 NetSpot {@link http://www.netspot.com.au}
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class tool_assignmentupgrade_batchoperations_form extends moodleform {
+    /**
+     * Define this form - is called from parent constructor
+     */
+    function definition() {
+        $mform = $this->_form;
+        $instance = $this->_customdata;
+
+        $mform->addElement('header', 'general', get_string('batchoperations', 'tool_assignmentupgrade'));
+        // visible elements
+        $mform->addElement('hidden', 'selectedassignments', '', array('class'=>'selectedassignments'));
+
+        $mform->addElement('submit', 'upgradeselected', get_string('upgradeselected', 'tool_assignmentupgrade'));
+        $mform->addElement('submit', 'upgradeall', get_string('upgradeall', 'tool_assignmentupgrade'));
+    }
+
+}
+
diff --git a/admin/tool/assignmentupgrade/upgradableassignmentstable.php b/admin/tool/assignmentupgrade/upgradableassignmentstable.php
new file mode 100644 (file)
index 0000000..ed830f6
--- /dev/null
@@ -0,0 +1,172 @@
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle 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 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle 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 Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * This file contains the definition for the grading table which subclassses easy_table
+ *
+ * @package   tool_assignmentupgrade
+ * @copyright 2012 NetSpot {@link http://www.netspot.com.au}
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die();
+
+require_once($CFG->libdir.'/tablelib.php');
+require_once($CFG->libdir.'/gradelib.php');
+require_once($CFG->dirroot.'/mod/assign/locallib.php');
+
+/**
+ * Extends table_sql to provide a table of assignment submissions
+ *
+ * @package   tool_assignmentupgrade
+ * @copyright 2012 NetSpot {@link http://www.netspot.com.au}
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class tool_assignmentupgrade_assignments_table extends table_sql implements renderable {
+    /** @var int $perpage */
+    private $perpage = 10;
+    /** @var int $rownum (global index of current row in table) */
+    private $rownum = -1;
+    /** @var renderer_base for getting output */
+    private $output = null;
+    /** @var boolean anyupgradableassignments - True if there is one or more assignments that can upgraded */
+    public $anyupgradableassignments = false;
+
+    /**
+     * This table loads a list of the old assignment instances and tests them to see if they can be upgraded
+     *
+     * @param int $perpage How many per page
+     * @param int $rowoffset The starting row for pagination
+     */
+    function __construct($perpage, $rowoffset=0) {
+        global $PAGE;
+        parent::__construct('tool_assignmentupgrade_assignments');
+        $this->perpage = $perpage;
+        $this->output = $PAGE->get_renderer('tool_assignmentupgrade');
+
+        $this->define_baseurl(new moodle_url('/admin/tool/assignmentupgrade/listnotupgraded.php'));
+
+        $this->anyupgradableassignments = tool_assignmentupgrade_any_upgradable_assignments();
+
+        // do some business - then set the sql
+        if ($rowoffset) {
+            $this->rownum = $rowoffset - 1;
+        }
+
+        $fields = 'a.id as id, a.name as name, a.assignmenttype as type, c.shortname as courseshortname, c.id as courseid, COUNT(s.id) as submissioncount';
+        $from = '{assignment} a JOIN {course} c ON a.course = c.id ' .
+                        ' LEFT JOIN {assignment_submissions} s ON a.id = s.assignment';
+
+
+        $where = '1 = 1';
+        $where .= ' GROUP BY a.id, a.name, a.assignmenttype, c.shortname, c.id ';
+
+        $this->set_sql($fields, $from, $where, array());
+        $this->set_count_sql('SELECT COUNT(*) FROM ' . $from, array());
+
+        $columns = array();
+        $headers = array();
+
+        $columns[] = 'select';
+        $headers[] = get_string('select', 'tool_assignmentupgrade') . '<div class="selectall"><input type="checkbox" name="selectall" title="' . get_string('selectall') . '"/></div>';
+        $columns[] = 'upgradable';
+        $headers[] = get_string('upgradable', 'tool_assignmentupgrade');
+        $columns[] = 'id';
+        $headers[] = get_string('assignmentid', 'tool_assignmentupgrade');
+        $columns[] = 'courseshortname';
+        $headers[] = get_string('course');
+        $columns[] = 'name';
+        $headers[] = get_string('name');
+        $columns[] = 'type';
+        $headers[] = get_string('assignmenttype', 'tool_assignmentupgrade');
+        $columns[] = 'submissioncount';
+        $headers[] = get_string('submissions', 'tool_assignmentupgrade');
+
+        // set the columns
+        $this->define_columns($columns);
+        $this->define_headers($headers);
+        $this->no_sorting('upgradable');
+        $this->no_sorting('select');
+    }
+
+    /**
+     * Return the number of rows to display on a single page
+     *
+     * @return int The number of rows per page
+     */
+    function get_rows_per_page() {
+        return $this->perpage;
+    }
+
+    /**
+     * Format a link to the assignment instance
+     *
+     * @param stdClass $row
+     * @return string
+     */
+    function col_name(stdClass $row) {
+        return html_writer::link(new moodle_url('/mod/assignment/view.php',
+                array('a' => $row->id)), $row->name);
+    }
+
+
+    /**
+     * Format a link to the upgrade single tool
+     *
+     * @param stdClass $row (contains cached result from previous upgradable check)
+     * @return string
+     */
+    function col_upgradable(stdClass $row) {
+        if ($row->upgradable) {
+            return html_writer::link(new moodle_url('/admin/tool/assignmentupgrade/upgradesingleconfirm.php',
+                    array('id' => $row->id)), get_string('supported', 'tool_assignmentupgrade'));
+        } else {
+            return get_string('notsupported', 'tool_assignmentupgrade');
+        }
+    }
+
+    /**
+     * Insert a checkbox for selecting the current row for batch operations
+     *
+     * @param stdClass $row
+     * @return string
+     */
+    function col_select(stdClass $row) {
+        global $CFG;
+        $version = get_config('assignment_' . $row->type, 'version');
+        require_once($CFG->dirroot . '/mod/assign/locallib.php');
+        if (assign::can_upgrade_assignment($row->type, $version)) {
+            $row->upgradable = true;
+            return '<input type="checkbox" name="selectedassignment" value="' . $row->id . '"/>';
+        }
+        $row->upgradable = false;
+        return '';
+    }
+
+    /**
+     * Override the table show_hide_link to not show for select column
+     *
+     * @param string $column the column name, index into various names.
+     * @param int $index numerical index of the column.
+     * @return string HTML fragment.
+     */
+    protected function show_hide_link($column, $index) {
+        if ($index > 0) {
+            return parent::show_hide_link($column, $index);
+        }
+        return '';
+    }
+}
diff --git a/admin/tool/assignmentupgrade/upgradesingle.php b/admin/tool/assignmentupgrade/upgradesingle.php
new file mode 100644 (file)
index 0000000..8ae2aab
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle 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 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle 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 Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Script to show all the assignments that have not been upgraded after the main upgrade.
+ *
+ * @package    tool_assignmentupgrade
+ * @copyright  2012 NetSpot
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+require_once(dirname(__FILE__) . '/../../../config.php');
+require_once(dirname(__FILE__) . '/locallib.php');
+require_once($CFG->libdir . '/adminlib.php');
+
+$assignmentid = required_param('id', PARAM_INT);
+
+// admin_externalpage_setup calls require_login and checks moodle/site:config
+admin_externalpage_setup('assignmentupgrade', '', array(), tool_assignmentupgrade_url('upgradesingle', array('id' => $assignmentid)));
+
+$PAGE->navbar->add(get_string('upgradesingle', 'tool_assignmentupgrade'));
+$renderer = $PAGE->get_renderer('tool_assignmentupgrade');
+
+$assignmentinfo = tool_assignmentupgrade_get_assignment($assignmentid);
+if (!$assignmentinfo) {
+    print_error('invalidrequest');
+    die();
+}
+
+$log = '';
+$result = tool_assignmentupgrade_upgrade_assignment($assignmentinfo, $log);
+
+echo $renderer->convert_assignment_result($assignmentinfo, $result, $log);
diff --git a/admin/tool/assignmentupgrade/upgradesingleconfirm.php b/admin/tool/assignmentupgrade/upgradesingleconfirm.php
new file mode 100644 (file)
index 0000000..015d217
--- /dev/null
@@ -0,0 +1,39 @@
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle 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 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle 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 Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Script to show all the assignments that have not been upgraded after the main upgrade.
+ *
+ * @package    tool_assignmentupgrade
+ * @copyright  2012 NetSpot
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+require_once(dirname(__FILE__) . '/../../../config.php');
+require_once(dirname(__FILE__) . '/locallib.php');
+require_once($CFG->libdir . '/adminlib.php');
+
+$assignmentid = required_param('id', PARAM_INT);
+
+// admin_externalpage_setup calls require_login and checks moodle/site:config
+admin_externalpage_setup('assignmentupgrade', '', array(), tool_assignmentupgrade_url('upgradesingle', array('id' => $assignmentid)));
+
+$PAGE->navbar->add(get_string('upgradesingle', 'tool_assignmentupgrade'));
+$renderer = $PAGE->get_renderer('tool_assignmentupgrade');
+
+$assignmentinfo = tool_assignmentupgrade_get_assignment($assignmentid);
+
+echo $renderer->convert_assignment_are_you_sure($assignmentinfo);
diff --git a/admin/tool/assignmentupgrade/version.php b/admin/tool/assignmentupgrade/version.php
new file mode 100644 (file)
index 0000000..8c733b3
--- /dev/null
@@ -0,0 +1,30 @@
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle 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 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle 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 Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Version details.
+ *
+ * @package    tool_assignmentupgrade
+ * @copyright  2012 NetSpot
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die();
+
+$plugin->version   = 2012050300;
+$plugin->requires  = 2012050300;
+$plugin->component = 'tool_assignmentupgrade';
+$plugin->dependencies = array('mod_assign' => 2012050300);
index cced963..1a8cea7 100644 (file)
@@ -34,13 +34,14 @@ require_once(__DIR__.'/../../../../lib/phpunit/bootstraplib.php');
 // now get cli options
 list($options, $unrecognized) = cli_get_params(
     array(
-        'drop'        => false,
-        'install'     => false,
-        'buildconfig' => false,
-        'diag'        => false,
-        'phpunitdir'  => false,
-        'run'         => false,
-        'help'        => false,
+        'drop'                  => false,
+        'install'               => false,
+        'buildconfig'           => false,
+        'buildcomponentconfigs' => false,
+        'diag'                  => false,
+        'phpunitdir'            => false,
+        'run'                   => false,
+        'help'                  => false,
     ),
     array(
         'h' => 'help'
@@ -105,18 +106,21 @@ $diag = $options['diag'];
 $drop = $options['drop'];
 $install = $options['install'];
 $buildconfig = $options['buildconfig'];
+$buildcomponentconfigs = $options['buildcomponentconfigs'];
 
-if ($options['help'] or (!$drop and !$install and !$buildconfig and !$diag)) {
+if ($options['help'] or (!$drop and !$install and !$buildconfig and !$buildcomponentconfigs and !$diag)) {
     $help = "Various PHPUnit utility functions
 
 Options:
---drop                Drop database and dataroot
---install             Install database
---buildconfig         Build /phpunit.xml from /phpunit.xml.dist that includes suites for all plugins and core
---diag                Diagnose installation and return error code only
---run                 Execute PHPUnit tests (alternative for standard phpunit binary)
+--drop         Drop database and dataroot
+--install      Install database
+--diag         Diagnose installation and return error code only
+--run          Execute PHPUnit tests (alternative for standard phpunit binary)
+--buildconfig  Build /phpunit.xml from /phpunit.xml.dist that runs all tests
+--buildcomponentconfigs
+               Build distributed phpunit.xml files for each component
 
--h, --help            Print out this help
+-h, --help     Print out this help
 
 Example:
 \$/usr/bin/php lib/phpunit/tool.php --install
@@ -136,9 +140,13 @@ if ($diag) {
     if (phpunit_util::build_config_file()) {
         exit(0);
     } else {
-        phpunit_bootstrap_error(PHPUNIT_EXITCODE_CONFIGWARNING, 'Can not create phpunit.xml configuration file, verify dirroot permissions');
+        phpunit_bootstrap_error(PHPUNIT_EXITCODE_CONFIGWARNING, 'Can not create main /phpunit.xml configuration file, verify dirroot permissions');
     }
 
+} else if ($buildcomponentconfigs) {
+    phpunit_util::build_component_config_files();
+    exit(0);
+
 } else if ($drop) {
     // make sure tests do not run in parallel
     phpunit_util::acquire_test_lock();
index b7b296c..01476d2 100644 (file)
@@ -147,11 +147,11 @@ class ExHtmlReporter extends HtmlReporter {
      * Private method. Used by printPass/Fail/Skip/Error.
      */
     function _paintPassFail($passorfail, $message, $stacktrace = null, $debuginfo = null) {
-        global $FULLME, $CFG, $OUTPUT;
+        global $CFG, $OUTPUT;
 
         echo $OUTPUT->box_start($passorfail . ' generalbox ');
 
-        $url = $this->_htmlEntities($this->_stripParameterFromUrl($FULLME, 'path'));
+        $url = $this->_htmlEntities($this->_stripParameterFromUrl(qualified_me(), 'path'));
         echo '<b class="', $passorfail, '">', $this->get_string($passorfail), '</b>: ';
         $breadcrumb = $this->getTestList();
         array_shift($breadcrumb);
index 32ab61e..d25c794 100644 (file)
@@ -356,7 +356,7 @@ abstract class backup_cron_automated_helper {
                 $dir = null;
             }
             if (!empty($dir) && $storage !== 0) {
-                $filename = backup_plan_dbops::get_default_backup_filename($format, $type, $course->id, $users, $anonymised, true);
+                $filename = backup_plan_dbops::get_default_backup_filename($format, $type, $course->id, $users, $anonymised, !$config->backup_shortname);
                 $outcome = $file->copy_content_to($dir.'/'.$filename);
                 if ($outcome && $storage === 1) {
                     $file->delete();
index ee0bed8..2298682 100644 (file)
@@ -174,11 +174,6 @@ if(empty($serialized)) {
     die('bad serialization');
 }
 
-//IE compatibility HACK!
-if (ini_get_bool('zlib.output_compression')) {
-    ini_set('zlib.output_compression', 'Off');
-}
-
 $filename = 'icalexport.ics';
 
 header('Last-Modified: '. gmdate('D, d M Y H:i:s', time()) .' GMT');
index 4fe8301..a2f8a7b 100644 (file)
@@ -135,7 +135,9 @@ class core_calendar_renderer extends plugin_renderer_base {
      * @return string
      */
     public function fake_block_filters($courseid, $day, $month, $year, $view, $courses) {
-        return html_writer::tag('div', calendar_filter_controls($this->page->url), array('class'=>'calendar_filters filters'));
+        $returnurl = $this->page->url;
+        $returnurl->param('course', $courseid);
+        return html_writer::tag('div', calendar_filter_controls($returnurl), array('class'=>'calendar_filters filters'));
     }
 
     /**
index 2633369..c02069e 100644 (file)
@@ -45,8 +45,13 @@ require_sesskey();
 
 $var = required_param('var', PARAM_ALPHA);
 $return = clean_param(base64_decode(required_param('return', PARAM_RAW)), PARAM_URL);
-
-$url = new moodle_url('/calendar/set.php', array('return'=>base64_encode($return),'var'=>$var, 'sesskey'=>sesskey()));
+$courseid = optional_param('id', -1, PARAM_INT);
+if ($courseid != -1) {
+    $return = new moodle_url($return, array('course' => $courseid));
+} else {
+    $return = new moodle_url($return);
+}
+$url = new moodle_url('/calendar/set.php', array('return'=>base64_encode($return->out(false)), 'course' => $courseid, 'var'=>$var, 'sesskey'=>sesskey()));
 $PAGE->set_url($url);
 $PAGE->set_context(get_context_instance(CONTEXT_SYSTEM));
 
index 31c3ee2..fbad9e0 100644 (file)
@@ -127,7 +127,7 @@ switch($view) {
         echo $renderer->show_day($calendar);
     break;
     case 'month':
-        echo $renderer->show_month_detailed($calendar);
+        echo $renderer->show_month_detailed($calendar, $url);
     break;
     case 'upcoming':
         $defaultlookahead = CALENDAR_DEFAULT_UPCOMING_LOOKAHEAD;
index 495319c..4b3534f 100644 (file)
@@ -220,6 +220,22 @@ $CFG->admin = 'admin';
 // about students being served outdated versions of uploaded files.
 //     $CFG->filelifetime = 86400;
 //
+// Some web servers can offload the file serving from PHP process,
+// comment out one the following options to enable it in Moodle:
+//     $CFG->xsendfile = 'X-Sendfile';           // Apache {@see https://tn123.org/mod_xsendfile/}
+//     $CFG->xsendfile = 'X-LIGHTTPD-send-file'; // Lighttpd {@see http://redmine.lighttpd.net/projects/lighttpd/wiki/X-LIGHTTPD-send-file}
+//     $CFG->xsendfile = 'X-Accel-Redirect';     // Nginx {@see http://wiki.nginx.org/XSendfile}
+// If your X-Sendfile implementation (usually Nginx) uses directory aliases specify them
+// in the following array setting:
+//     $CFG->xsendfilealiases = array(
+//         '/dataroot/' => $CFG->dataroot,
+//         '/cachedir/' => '/var/www/moodle/cache',    // for custom $CFG->cachedir locations
+//         '/tempdir/'  => '/var/www/moodle/temp',     // for custom $CFG->tempdir locations
+//         '/filedir'   => '/var/www/moodle/filedir',  // for custom $CFG->filedir locations
+//     );
+//
+//
+//
 // This setting will prevent the 'My Courses' page being displayed when a student
 // logs in. The site front page will always show the same (logged-out) view.
 //     $CFG->disablemycourses = true;
index 6f4f57c..935b83a 100644 (file)
@@ -131,10 +131,8 @@ if ($editingon && $sesskeyprovided) {
         if ($course) {
             $coursecontext = get_context_instance(CONTEXT_COURSE, $course->id);
             require_capability('moodle/course:visibility', $coursecontext);
-            // Set the visibility of the course
-            $DB->set_field('course', 'visible', $visible, array('id' => $course->id));
-            // we set the old flag when user manually changes visibility of course
-            $DB->set_field('course', 'visibleold', $visible, array('id' => $course->id));
+            // Set the visibility of the course. we set the old flag when user manually changes visibility of course.
+            $DB->update_record('course', array('id' => $course->id, 'visible' => $visible, 'visibleold' => $visible, 'timemodified' => time()));
         }
     }
 
index ff4bad5..97f791a 100644 (file)
@@ -114,11 +114,11 @@ if ($mform->is_cancelled()) {
     } else {
         // Create a new category.
         $newcategory->description = $data->description_editor['text'];
-        $newcategory->sortorder = 999;
-        $newcategory->id = $DB->insert_record('course_categories', $newcategory);
-        $newcategory->context = get_context_instance(CONTEXT_COURSECAT, $newcategory->id);
-        $categorycontext = $newcategory->context;
-        mark_context_dirty($newcategory->context->path);
+
+        // Don't overwrite the $newcategory object as it'll be processed by file_postupdate_standard_editor in a moment
+        $category = create_course_category($newcategory);
+        $newcategory->id = $category->id;
+        $categorycontext = $category->context;
     }
 
     $newcategory = file_postupdate_standard_editor($newcategory, 'description', $editoroptions, $categorycontext, 'coursecat', 'description', 0);
index e6a86ea..fef3647 100644 (file)
@@ -1,5 +1,4 @@
 <?php
-
 // This file is part of Moodle - http://moodle.org/
 //
 // Moodle is free software: you can redistribute it and/or modify
 // You should have received a copy of the GNU General Public License
 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
 
+
 /**
  * External course API
  *
- * @package    core
- * @subpackage course
- * @copyright  2010 Moodle Pty Ltd (http://moodle.com)
+ * @package    core_course
+ * @category   external
+ * @copyright  2009 Petr Skodak
  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 
@@ -29,13 +29,21 @@ defined('MOODLE_INTERNAL') || die;
 require_once("$CFG->libdir/externallib.php");
 
 /**
- * Course functions
+ * Course external functions
+ *
+ * @package    core_course
+ * @category   external
+ * @copyright  2011 Jerome Mouneyrac
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ * @since Moodle 2.2
  */
 class core_course_external extends external_api {
 
     /**
      * Returns description of method parameters
+     *
      * @return external_function_parameters
+     * @since Moodle 2.2
      */
     public static function get_course_contents_parameters() {
         return new external_function_parameters(
@@ -52,9 +60,11 @@ class core_course_external extends external_api {
 
     /**
      * Get course contents
-     * @param int $courseid
-     * @param array $options, not used yet, might be used in later version
+     *
+     * @param int $courseid course id
+     * @param array $options These options are not used yet, might be used in later version
      * @return array
+     * @since Moodle 2.2
      */
     public static function get_course_contents($courseid, $options) {
         global $CFG, $DB;
@@ -183,7 +193,9 @@ class core_course_external extends external_api {
 
     /**
      * Returns description of method result value
+     *
      * @return external_description
+     * @since Moodle 2.2
      */
     public static function get_course_contents_returns() {
         return new external_multiple_structure(
@@ -238,7 +250,9 @@ class core_course_external extends external_api {
 
     /**
      * Returns description of method parameters
+     *
      * @return external_function_parameters
+     * @since Moodle 2.2
      */
     public static function get_courses_parameters() {
         return new external_function_parameters(
@@ -255,8 +269,10 @@ class core_course_external extends external_api {
 
     /**
      * Get courses
-     * @param array $options
+     *
+     * @param array $options It contains an array (list of ids)
      * @return array
+     * @since Moodle 2.2
      */
     public static function get_courses($options) {
         global $CFG, $DB;
@@ -336,7 +352,9 @@ class core_course_external extends external_api {
 
     /**
      * Returns description of method result value
+     *
      * @return external_description
+     * @since Moodle 2.2
      */
     public static function get_courses_returns() {
         return new external_multiple_structure(
@@ -402,7 +420,9 @@ class core_course_external extends external_api {
 
     /**
      * Returns description of method parameters
+     *
      * @return external_function_parameters
+     * @since Moodle 2.2
      */
     public static function create_courses_parameters() {
         $courseconfig = get_config('moodlecourse'); //needed for many default values
@@ -471,8 +491,10 @@ class core_course_external extends external_api {
 
     /**
      * Create  courses
+     *
      * @param array $courses
      * @return array courses (id and shortname only)
+     * @since Moodle 2.2
      */
     public static function create_courses($courses) {
         global $CFG, $DB;
@@ -556,7 +578,9 @@ class core_course_external extends external_api {
 
     /**
      * Returns description of method result value
+     *
      * @return external_description
+     * @since Moodle 2.2
      */
     public static function create_courses_returns() {
         return new external_multiple_structure(
@@ -569,18 +593,82 @@ class core_course_external extends external_api {
         );
     }
 
+    /**
+     * Returns description of method parameters
+     * @return external_function_parameters
+     */
+    public static function delete_courses_parameters() {
+        return new external_function_parameters(
+            array(
+                'courseids' => new external_multiple_structure(new external_value(PARAM_INT, 'course ID')),
+            )
+        );
+    }
+
+    /**
+     * Delete courses
+     * @param array $courseids A list of course ids
+     */
+    public static function delete_courses($courseids) {
+        global $CFG, $DB;
+        require_once($CFG->dirroot."/course/lib.php");
+
+        // Parameter validation.
+        $params = self::validate_parameters(self::delete_courses_parameters(), array('courseids'=>$courseids));
+
+        $transaction = $DB->start_delegated_transaction();
+
+        foreach ($params['courseids'] as $courseid) {
+            $course = $DB->get_record('course', array('id'=>$courseid), '*', MUST_EXIST);
+
+            // Check if the context is valid.
+            $coursecontext = context_course::instance($course->id);
+            self::validate_context($coursecontext);
+
+            // Check if the current user has enought permissions.
+            if (!can_delete_course($courseid)) {
+                throw new moodle_exception('cannotdeletecategorycourse', 'error', '', format_string($course->fullname)." (id: $courseid)");
+            }
+
+            delete_course($course, false);
+        }
+
+        $transaction->allow_commit();
+
+        return null;
+    }
+
+    /**
+     * Returns description of method result value
+     * @return external_description
+     */
+    public static function delete_courses_returns() {
+        return null;
+    }
+
 }
 
 /**
- * Deprecated course functions
- * @deprecated since Moodle 2.2 please use core_course_external instead
+ * Deprecated course external functions
+ *
+ * @package    core_course
+ * @copyright  2009 Petr Skodak
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ * @since Moodle 2.0
+ * @deprecated Moodle 2.2 MDL-29106 - Please do not use this class any more.
+ * @todo MDL-31194 This will be deleted in Moodle 2.5.
+ * @see core_course_external
  */
 class moodle_course_external extends external_api {
 
     /**
      * Returns description of method parameters
-     * @deprecated since Moodle 2.2 please use core_course_external::get_courses_parameters instead
+     *
      * @return external_function_parameters
+     * @since Moodle 2.0
+     * @deprecated Moodle 2.2 MDL-29106 - Please do not call this function any more.
+     * @todo MDL-31194 This will be deleted in Moodle 2.5.
+     * @see core_course_external::get_courses_parameters()
      */
     public static function get_courses_parameters() {
         return core_course_external::get_courses_parameters();
@@ -588,9 +676,13 @@ class moodle_course_external extends external_api {
 
     /**
      * Get courses
+     *
      * @param array $options
-     * @deprecated since Moodle 2.2 please use core_course_external::get_courses instead
      * @return array
+     * @since Moodle 2.0
+     * @deprecated Moodle 2.2 MDL-29106 - Please do not call this function any more.
+     * @todo MDL-31194 This will be deleted in Moodle 2.5.
+     * @see core_course_external::get_courses()
      */
     public static function get_courses($options) {
         return core_course_external::get_courses($options);
@@ -598,8 +690,12 @@ class moodle_course_external extends external_api {
 
     /**
      * Returns description of method result value
-     * @deprecated since Moodle 2.2 please use core_course_external::get_courses_returns instead
+     *
      * @return external_description
+     * @since Moodle 2.0
+     * @deprecated Moodle 2.2 MDL-29106 - Please do not call this function any more.
+     * @todo MDL-31194 This will be deleted in Moodle 2.5.
+     * @see core_course_external::get_courses_returns()
      */
     public static function get_courses_returns() {
         return core_course_external::get_courses_returns();
@@ -607,8 +703,12 @@ class moodle_course_external extends external_api {
 
     /**
      * Returns description of method parameters
-     * @deprecated since Moodle 2.2 please use core_course_external::create_courses_parameters instead
+     *
      * @return external_function_parameters
+     * @since Moodle 2.0
+     * @deprecated Moodle 2.2 MDL-29106 - Please do not call this function any more.
+     * @todo MDL-31194 This will be deleted in Moodle 2.5.
+     * @see core_course_external::create_courses_parameters()
      */
     public static function create_courses_parameters() {
         return core_course_external::create_courses_parameters();
@@ -616,9 +716,13 @@ class moodle_course_external extends external_api {
 
     /**
      * Create  courses
-     * @deprecated since Moodle 2.2 please use core_course_external::create_courses instead
+     *
      * @param array $courses
      * @return array courses (id and shortname only)
+     * @since Moodle 2.0
+     * @deprecated Moodle 2.2 MDL-29106 - Please do not call this function any more.
+     * @todo MDL-31194 This will be deleted in Moodle 2.5.
+     * @see core_course_external::create_courses()
      */
     public static function create_courses($courses) {
         return core_course_external::create_courses($courses);
@@ -626,8 +730,12 @@ class moodle_course_external extends external_api {
 
     /**
      * Returns description of method result value
-     * @deprecated since Moodle 2.2 please use core_course_external::create_courses_returns instead
+     *
      * @return external_description
+     * @since Moodle 2.0
+     * @deprecated Moodle 2.2 MDL-29106 - Please do not call this function any more.
+     * @todo MDL-31194 This will be deleted in Moodle 2.5.
+     * @see core_course_external::create_courses_returns()
      */
     public static function create_courses_returns() {
         return core_course_external::create_courses_returns();
diff --git a/course/format/topics/format.js b/course/format/topics/format.js
new file mode 100644 (file)
index 0000000..26f2801
--- /dev/null
@@ -0,0 +1,40 @@
+// Javascript functions for course format
+
+M.course = M.course || {};
+
+M.course.format = M.course.format || {};
+
+/**
+ * Get section list for this format
+ *
+ * @param {YUI} Y YUI3 instance
+ * @return {string} section list selector
+ */
+M.course.format.get_section_selector = function(Y) {
+    return 'li.section';
+}
+
+/**
+ * Swap section
+ *
+ * @param {YUI} Y YUI3 instance
+ * @param {string} node1 node to swap to
+ * @param {string} node2 node to swap with
+ * @return {NodeList} section list
+ */
+M.course.format.swap_sections = function(Y, node1, node2) {
+    var CSS = {
+        COURSECONTENT : 'course-content',
+        LEFT : 'left',
+        RIGHT : 'right',
+        SECTIONADDMENUS : 'section_add_menus',
+    };
+
+    var sectionlist = Y.Node.all('.'+CSS.COURSECONTENT+' '+M.course.format.get_section_selector(Y));
+    // Swap left block
+    sectionlist.item(node1).one('.'+CSS.LEFT).swap(sectionlist.item(node2).one('.'+CSS.LEFT));
+    // Swap right block
+    sectionlist.item(node1).one('.'+CSS.RIGHT).swap(sectionlist.item(node2).one('.'+CSS.RIGHT));
+    // Swap menus
+    sectionlist.item(node1).one('.'+CSS.SECTIONADDMENUS).swap(sectionlist.item(node2).one('.'+CSS.SECTIONADDMENUS));
+}
index 8772433..fc0d138 100644 (file)
@@ -286,3 +286,6 @@ if (!empty($sectionmenu)) {
     $select->formid = 'sectionmenu';
     echo $OUTPUT->render($select);
 }
+
+    // Include course format js module
+    $PAGE->requires->js('/course/format/topics/format.js');
diff --git a/course/format/weeks/format.js b/course/format/weeks/format.js
new file mode 100644 (file)
index 0000000..d1b5430
--- /dev/null
@@ -0,0 +1,43 @@
+// Javascript functions for course format
+
+M.course = M.course || {};
+
+M.course.format = M.course.format || {};
+
+/**
+ * Get section list for this format
+ *
+ * @param {YUI} Y YUI3 instance
+ * @return {string} section list selector
+ */
+M.course.format.get_section_selector = function(Y) {
+    return 'li.section';
+}
+
+/**
+ * Swap section
+ *
+ * @param {YUI} Y YUI3 instance
+ * @param {string} node1 node to swap to
+ * @param {string} node2 node to swap with
+ * @return {NodeList} section list
+ */
+M.course.format.swap_sections = function(Y, node1, node2) {
+    var CSS = {
+        COURSECONTENT : 'course-content',
+        LEFT : 'left',
+        RIGHT : 'right',
+        SECTIONADDMENUS : 'section_add_menus',
+        WEEKDATES: 'weekdates'
+    };
+
+    var sectionlist = Y.Node.all('.'+CSS.COURSECONTENT+' '+M.course.format.get_section_selector(Y));
+    // Swap left block
+    sectionlist.item(node1).one('.'+CSS.LEFT).swap(sectionlist.item(node2).one('.'+CSS.LEFT));
+    // Swap right block
+    sectionlist.item(node1).one('.'+CSS.RIGHT).swap(sectionlist.item(node2).one('.'+CSS.RIGHT));
+    // Swap menus
+    sectionlist.item(node1).one('.'+CSS.SECTIONADDMENUS).swap(sectionlist.item(node2).one('.'+CSS.SECTIONADDMENUS));
+    // Swap week dates
+    sectionlist.item(node1).one('.'+CSS.WEEKDATES).swap(sectionlist.item(node2).one('.'+CSS.WEEKDATES));
+}
index 36e89fc..ee48a43 100644 (file)
@@ -286,3 +286,6 @@ defined('MOODLE_INTERNAL') || die();
         $select->formid = 'sectionmenu';
         echo $OUTPUT->render($select);
     }
+
+    // Include course format js module
+    $PAGE->requires->js('/course/format/weeks/format.js');
index 382ae35..05e486e 100644 (file)
@@ -3957,6 +3957,32 @@ function create_course($data, $editoroptions = NULL) {
     return $course;
 }
 
+/**
+ * Create a new course category and marks the context as dirty
+ *
+ * This function does not set the sortorder for the new category and
+ * @see{fix_course_sortorder} should be called after creating a new course
+ * category
+ *
+ * Please note that this function does not verify access control.
+ *
+ * @param object $category All of the data required for an entry in the course_categories table
+ * @return object new course category
+ */
+function create_course_category($category) {
+    global $DB;
+
+    $category->timemodified = time();
+    $category->id = $DB->insert_record('course_categories', $category);
+    $category = $DB->get_record('course_categories', array('id' => $category->id));
+
+    // We should mark the context as dirty
+    $category->context = context_coursecat::instance($category->id);
+    $category->context->mark_dirty();
+
+    return $category;
+}
+
 /**
  * Update a course.
  *
@@ -4504,14 +4530,14 @@ function include_course_ajax($course, $modules = array(), $config = null) {
 
     // Include course dragdrop
     if ($course->id != SITEID) {
-        $PAGE->requires->yui_module('moodle-course-dragdrop', 'M.core_course.init_section_dragdrop',
+        $PAGE->requires->yui_module('moodle-course-dragdrop', 'M.course.init_section_dragdrop',
             array(array(
                 'courseid' => $course->id,
                 'ajaxurl' => $config->sectionurl,
                 'config' => $config,
             )), null, true);
 
-        $PAGE->requires->yui_module('moodle-course-dragdrop', 'M.core_course.init_resource_dragdrop',
+        $PAGE->requires->yui_module('moodle-course-dragdrop', 'M.course.init_resource_dragdrop',
             array(array(
                 'courseid' => $course->id,
                 'ajaxurl' => $config->resourceurl,
index 72a2a9e..1fec1fc 100644 (file)
@@ -130,10 +130,6 @@ switch($requestmethod) {
                             $beforemod = NULL;
                         }
 
-                        if (debugging('',DEBUG_DEVELOPER)) {
-                            error_log(serialize($beforemod));
-                        }
-
                         moveto_module($cm, $section, $beforemod);
                         break;
                 }
index cf0822b..f7f4f80 100644 (file)
@@ -96,4 +96,52 @@ class courselib_testcase extends advanced_testcase {
         $CFG->courselistshortnames = 1;
         $this->assertEquals('FROG101 Introduction to pond life', get_course_display_name_for_list($course));
     }
+
+    public function test_create_course_category() {
+        global $CFG, $DB;
+        $this->resetAfterTest(true);
+
+        // Create the category
+        $data = new stdClass();
+        $data->name = 'aaa';
+        $data->description = 'aaa';
+        $data->idnumber = '';
+
+        $category1 = create_course_category($data);
+
+        // Initially confirm that base data was inserted correctly
+        $this->assertEquals($data->name, $category1->name);
+        $this->assertEquals($data->description, $category1->description);
+        $this->assertEquals($data->idnumber, $category1->idnumber);
+
+        // sortorder should be blank initially
+        $this->assertEmpty($category1->sortorder);
+
+        // Calling fix_course_sortorder() should provide a new sortorder
+        fix_course_sortorder();
+        $category1 = $DB->get_record('course_categories', array('id' => $category1->id));
+
+        $this->assertGreaterThanOrEqual(1, $category1->sortorder);
+
+        // Create two more categories and test the sortorder worked correctly
+        $data->name = 'ccc';
+        $category2 = create_course_category($data);
+        $this->assertEmpty($category2->sortorder);
+
+        $data->name = 'bbb';
+        $category3 = create_course_category($data);
+        $this->assertEmpty($category3->sortorder);
+
+        // Calling fix_course_sortorder() should provide a new sortorder to give category1,
+        // category2, category3. New course categories are ordered by id not name
+        fix_course_sortorder();
+
+        $category1 = $DB->get_record('course_categories', array('id' => $category1->id));
+        $category2 = $DB->get_record('course_categories', array('id' => $category2->id));
+        $category3 = $DB->get_record('course_categories', array('id' => $category3->id));
+
+        $this->assertGreaterThanOrEqual($category1->sortorder, $category2->sortorder);
+        $this->assertGreaterThanOrEqual($category2->sortorder, $category3->sortorder);
+        $this->assertGreaterThanOrEqual($category1->sortorder, $category3->sortorder);
+    }
 }
index f24dbf6..595252d 100644 (file)
@@ -25,6 +25,8 @@ YUI.add('moodle-course-dragdrop', function(Y) {
         DRAGSECTION.superclass.constructor.apply(this, arguments);
     };
     Y.extend(DRAGSECTION, M.core.dragdrop, {
+        sectionlistselector : null,
+
         initializer : function(params) {
             // Set group for parent class
             this.groups = ['section'];
@@ -36,8 +38,10 @@ YUI.add('moodle-course-dragdrop', function(Y) {
                 return false;
             }
             // Initialise sections dragging
-            this.setup_for_section('.'+CSS.COURSECONTENT+' li.'+CSS.SECTION);
-            M.course.coursebase.register_module(this);
+            if (M.course.format && M.course.format.get_section_selector && typeof(M.course.format.get_section_selector) == 'function') {
+                this.sectionlistselector = '.'+CSS.COURSECONTENT+' '+M.course.format.get_section_selector(Y);
+                this.setup_for_section(this.sectionlistselector);
+            }
         },
 
          /**
@@ -131,7 +135,7 @@ YUI.add('moodle-course-dragdrop', function(Y) {
 
             // Get the list of nodes
             drag.get('dragNode').removeClass(CSS.COURSECONTENT);
-            var sectionlist = Y.Node.all('.'+CSS.COURSECONTENT+' li.'+CSS.SECTION);
+            var sectionlist = Y.Node.all(this.sectionlistselector);
 
             // Add lightbox if it not there
             var lightbox = M.util.add_lightbox(Y, dragnode);
@@ -176,16 +180,9 @@ YUI.add('moodle-course-dragdrop', function(Y) {
                                     var sectionid = sectionlist.item(i-1).get('id');
                                     sectionlist.item(i-1).set('id', sectionlist.item(i).get('id'));
                                     sectionlist.item(i).set('id', sectionid);
-                                    // Swap left block
-                                    sectionlist.item(i-1).one('.'+CSS.LEFT).swap(sectionlist.item(i).one('.'+CSS.LEFT));
-                                    // Swap right block
-                                    sectionlist.item(i-1).one('.'+CSS.RIGHT).swap(sectionlist.item(i).one('.'+CSS.RIGHT));
-                                    // Swap menus
-                                    sectionlist.item(i-1).one('.'+CSS.SECTIONADDMENUS).swap(sectionlist.item(i).one('.'+CSS.SECTIONADDMENUS));
-                                    // Swap week dates if in weekly format
-                                    var weekdates = sectionlist.item(i-1).one('.'+CSS.WEEKDATES);
-                                    if (weekdates) {
-                                        weekdates.swap(sectionlist.item(i).one('.'+CSS.WEEKDATES));
+                                    // See what format needs to be swapped
+                                    if (M.course.format && M.course.format.swap_sections && typeof(M.course.format.swap_sections) == 'function') {
+                                        M.course.format.swap_sections(Y, i-1, i);
                                     }
                                     // Update flag
                                     swapped = true;
@@ -229,9 +226,12 @@ YUI.add('moodle-course-dragdrop', function(Y) {
             this.parentnodeclass = CSS.SECTION;
 
             // Go through all sections
-            this.setup_for_section('.'+CSS.COURSECONTENT+' li.'+CSS.SECTION);
-            M.course.coursebase.register_module(this);
-            M.course.dragres = this;
+            if (M.course.format && M.course.format.get_section_selector && typeof(M.course.format.get_section_selector) == 'function') {
+                var sectionlistselector = '.'+CSS.COURSECONTENT+' '+M.course.format.get_section_selector(Y);
+                this.setup_for_section(sectionlistselector);
+                M.course.coursebase.register_module(this);
+                M.course.dragres = this;
+            }
         },
 
          /**
@@ -311,6 +311,8 @@ YUI.add('moodle-course-dragdrop', function(Y) {
             var dragnode = drag.get('node');
             var dropnode = e.drop.get('node');
 
+            var sectionselector = M.course.format.get_section_selector(Y);
+
             var params = {};
 
             // Handle any variables which we must pass back through to
@@ -325,7 +327,7 @@ YUI.add('moodle-course-dragdrop', function(Y) {
             params['class'] = 'resource';
             params.field = 'move';
             params.id = Number(this.get_resource_id(dragnode));
-            params.sectionId = this.get_section_id(dropnode.ancestor('li.'+CSS.SECTION));
+            params.sectionId = this.get_section_id(dropnode.ancestor(sectionselector));
 
             if (dragnode.next()) {
                 params.beforeId = Number(this.get_resource_id(dragnode.next()));
@@ -368,11 +370,11 @@ YUI.add('moodle-course-dragdrop', function(Y) {
         }
     });
 
-    M.core_course = M.core_course || {};
-    M.core_course.init_resource_dragdrop = function(params) {
+    M.course = M.course || {};
+    M.course.init_resource_dragdrop = function(params) {
         new DRAGRESOURCE(params);
     }
-    M.core_course.init_section_dragdrop = function(params) {
+    M.course.init_section_dragdrop = function(params) {
         new DRAGSECTION(params);
     }
 }, '@VERSION@', {requires:['base', 'node', 'io', 'dom', 'dd', 'moodle-core-dragdrop', 'moodle-enrol-notification', 'moodle-course-coursebase']});
diff --git a/enrol/authorize/db/messages.php b/enrol/authorize/db/messages.php
new file mode 100644 (file)
index 0000000..8d3df01
--- /dev/null
@@ -0,0 +1,29 @@
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle 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 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle 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 Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Defines message providers (types of message sent) for the PayPal enrolment plugin.
+ *
+ * @package    enrol_authorize
+ * @copyright  2012 Andrew Davis
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die();
+
+$messageproviders = array(
+    'authorize_enrolment' => array(),
+);
index 272fc19..2a7d367 100644 (file)
@@ -26,7 +26,7 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2011112900;        // The current plugin version (Date: YYYYMMDDXX)
+$plugin->version   = 2011112901;        // The current plugin version (Date: YYYYMMDDXX)
 $plugin->requires  = 2011112900;        // Requires this Moodle version
 $plugin->component = 'enrol_authorize'; // Full name of the plugin (used for diagnostics)
 $plugin->cron      = 180;
index 71e0f69..57b6ac1 100644 (file)
@@ -1,5 +1,4 @@
 <?php
-
 // This file is part of Moodle - http://moodle.org/
 //
 // Moodle is free software: you can redistribute it and/or modify
 // You should have received a copy of the GNU General Public License
 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
 
+
 /**
  * External course participation api.
  *
  * This api is mostly read only, the actual enrol and unenrol
  * support is in each enrol plugin.
  *
- * @package    core
- * @subpackage enrol
- * @copyright  2009 Moodle Pty Ltd (http://moodle.com)
+ * @package    core_enrol
+ * @category   external
+ * @copyright  2010 Jerome Mouneyrac
  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 
@@ -32,12 +32,19 @@ defined('MOODLE_INTERNAL') || die();
 require_once("$CFG->libdir/externallib.php");
 
 /**
- * Enrol functions
+ * Enrol external functions
+ *
+ * @package    core_enrol
+ * @category   external
+ * @copyright  2011 Jerome Mouneyrac
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ * @since Moodle 2.2
  */
 class core_enrol_external extends external_api {
 
     /**
      * Returns description of method parameters
+     *
      * @return external_function_parameters
      */
     public static function get_users_courses_parameters() {
@@ -50,7 +57,6 @@ class core_enrol_external extends external_api {
 
     /**
      * Get list of courses user is enrolled in (only active enrolments are returned).
-     *
      * Please note the current user must be able to access the course, otherwise the course is not included.
      *
      * @param int $userid
@@ -92,6 +98,7 @@ class core_enrol_external extends external_api {
 
     /**
      * Returns description of method result value
+     *
      * @return external_description
      */
     public static function get_users_courses_returns() {
@@ -111,6 +118,7 @@ class core_enrol_external extends external_api {
 
     /**
      * Returns description of method parameters
+     *
      * @return external_function_parameters
      */
     public static function get_enrolled_users_parameters() {
@@ -136,11 +144,12 @@ class core_enrol_external extends external_api {
 
     /**
      * Get course participants details
+     *
      * @param int $courseid  course id
      * @param array $options options {
-     *          'name' => option name
-     *          'value' => option value
-     * }
+     *                                'name' => option name
+     *                                'value' => option value
+     *                               }
      * @return array An array of users
      */
     public static function get_enrolled_users($courseid, $options) {
@@ -241,6 +250,7 @@ class core_enrol_external extends external_api {
 
     /**
      * Returns description of method result value
+     *
      * @return external_description
      */
     public static function get_enrolled_users_returns() {
@@ -322,12 +332,19 @@ class core_enrol_external extends external_api {
 }
 
 /**
- * Role functions
+ * Role external functions
+ *
+ * @package    core_role
+ * @category   external
+ * @copyright  2011 Jerome Mouneyrac
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ * @since Moodle 2.2
  */
 class core_role_external extends external_api {
 
     /**
      * Returns description of method parameters
+     *
      * @return external_function_parameters
      */
     public static function assign_roles_parameters() {
@@ -349,8 +366,7 @@ class core_role_external extends external_api {
     /**
      * Manual role assignments to users
      *
-     * @param array $assignment  An array of manual role assignment
-     * @return null
+     * @param array $assignments An array of manual role assignment
      */
     public static function assign_roles($assignments) {
         global $DB;
@@ -382,7 +398,8 @@ class core_role_external extends external_api {
 
     /**
      * Returns description of method result value
-     * @return external_description
+     *
+     * @return null
      */
     public static function assign_roles_returns() {
         return null;
@@ -391,6 +408,7 @@ class core_role_external extends external_api {
 
     /**
      * Returns description of method parameters
+     *
      * @return external_function_parameters
      */
     public static function unassign_roles_parameters() {
@@ -412,8 +430,7 @@ class core_role_external extends external_api {
      /**
      * Unassign roles from users
      *
-     * @param array $unassignment  An array of unassignment
-     * @return null
+     * @param array $unassignments An array of unassignment
      */
     public static function unassign_roles($unassignments) {
          global $DB;
@@ -444,6 +461,7 @@ class core_role_external extends external_api {
 
    /**
      * Returns description of method result value
+     *
      * @return null
      */
     public static function unassign_roles_returns() {
@@ -453,16 +471,28 @@ class core_role_external extends external_api {
 
 
 /**
- * Deprecated enroll and role functions
- * @deprecated since Moodle 2.2 please use core_enrol_external or core_role_external instead
+ * Deprecated enrol and role external functions
+ *
+ * @package    core_enrol
+ * @copyright  2010 Jerome Mouneyrac
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ * @since Moodle 2.0
+ * @deprecated Moodle 2.2 MDL-29106 - Please do not use this class any more.
+ * @todo MDL-31194 This will be deleted in Moodle 2.5.
+ * @see core_enrol_external
+ * @see core_role_external
  */
 class moodle_enrol_external extends external_api {
 
 
     /**
      * Returns description of method parameters
-     * @deprecated since Moodle 2.2 please use core_enrol_external::get_enrolled_users_parameters() instead
+     *
      * @return external_function_parameters
+     * @since Moodle 2.0
+     * @deprecated Moodle 2.2 MDL-29106 - Please do not call this function any more.
+     * @todo MDL-31194 This will be deleted in Moodle 2.5.
+     * @see core_enrol_external::get_enrolled_users_parameters()
      */
     public static function get_enrolled_users_parameters() {
         return new external_function_parameters(
@@ -477,12 +507,16 @@ class moodle_enrol_external extends external_api {
 
     /**
      * Get list of course participants.
-     * @deprecated since Moodle 2.2 please use core_enrol_external::get_enrolled_users() instead
+     *
      * @param int $courseid
      * @param text $withcapability
      * @param int $groupid
      * @param bool $onlyactive
      * @return array of course participants
+     * @since Moodle 2.0
+     * @deprecated Moodle 2.2 MDL-29106 - Please do not call this function any more.
+     * @todo MDL-31194 This will be deleted in Moodle 2.5.
+     * @see core_enrol_external::get_enrolled_users()
      */
     public static function get_enrolled_users($courseid, $withcapability = null, $groupid = null, $onlyactive = false) {
         global $DB, $CFG, $USER;
@@ -568,8 +602,12 @@ class moodle_enrol_external extends external_api {
 
     /**
      * Returns description of method result value
-     * @deprecated since Moodle 2.2 please use core_enrol_external::get_enrolled_users_returns() instead
+     *
      * @return external_description
+     * @since Moodle 2.0
+     * @deprecated Moodle 2.2 MDL-29106 - Please do not call this function any more.
+     * @todo MDL-31194 This will be deleted in Moodle 2.5.
+     * @see core_enrol_external::get_enrolled_users_returns()
      */
     public static function get_enrolled_users_returns() {
         return new external_multiple_structure(
@@ -590,8 +628,12 @@ class moodle_enrol_external extends external_api {
 
     /**
      * Returns description of method parameters
-     * @deprecated since Moodle 2.2 please use core_enrol_external::get_users_courses_parameters() instead
+     *
      * @return external_function_parameters
+     * @since Moodle 2.1
+     * @deprecated Moodle 2.2 MDL-29106 - Please do not call this function any more.
+     * @todo MDL-31194 This will be deleted in Moodle 2.5.
+     * @see core_enrol_external::get_users_courses_parameters()
      */
     public static function get_users_courses_parameters() {
         return core_enrol_external::get_users_courses_parameters();
@@ -599,11 +641,14 @@ class moodle_enrol_external extends external_api {
 
     /**
      * Get list of courses user is enrolled in (only active enrolments are returned).
-     *
      * Please note the current user must be able to access the course, otherwise the course is not included.
-     * @deprecated since Moodle 2.2 please use core_enrol_external::get_users_courses() instead
+     *
      * @param int $userid
      * @return array of courses
+     * @since Moodle 2.1
+     * @deprecated Moodle 2.2 MDL-29106 - Please do not call this function any more.
+     * @todo MDL-31194 This will be deleted in Moodle 2.5.
+     * @see use core_enrol_external::get_users_courses()
      */
     public static function get_users_courses($userid) {
         return core_enrol_external::get_users_courses($userid);
@@ -611,8 +656,12 @@ class moodle_enrol_external extends external_api {
 
     /**
      * Returns description of method result value
-     * @deprecated since Moodle 2.2 please use core_enrol_external::get_users_courses_returns() instead
+     *
      * @return external_description
+     * @since Moodle 2.1
+     * @deprecated Moodle 2.2 MDL-29106 - Please do not call this function any more.
+     * @todo MDL-31194 This will be deleted in Moodle 2.5.
+     * @see core_enrol_external::get_users_courses_returns()
      */
     public static function get_users_courses_returns() {
         return core_enrol_external::get_users_courses_returns();
@@ -621,8 +670,12 @@ class moodle_enrol_external extends external_api {
 
     /**
      * Returns description of method parameters
-     * @deprecated since Moodle 2.2 please use core_role_external::assign_roles_parameters() instead
+     *
      * @return external_function_parameters
+     * @since Moodle 2.0
+     * @deprecated Moodle 2.2 MDL-29106 - Please do not call this function any more.
+     * @todo MDL-31194 This will be deleted in Moodle 2.5.
+     * @see core_role_external::assign_roles_parameters()
      */
     public static function role_assign_parameters() {
         return core_role_external::assign_roles_parameters();
@@ -630,9 +683,12 @@ class moodle_enrol_external extends external_api {
 
     /**
      * Manual role assignments to users
-     * @deprecated since Moodle 2.2 please use core_role_external::assign_roles() instead
-     * @param array $assignment  An array of manual role assignment
-     * @return null
+     *
+     * @param array $assignments An array of manual role assignment
+     * @since Moodle 2.0
+     * @deprecated Moodle 2.2 MDL-29106 - Please do not call this function any more.
+     * @todo MDL-31194 This will be deleted in Moodle 2.5.
+     * @see core_role_external::assign_roles()
      */
     public static function role_assign($assignments) {
         return core_role_external::assign_roles($assignments);
@@ -640,8 +696,12 @@ class moodle_enrol_external extends external_api {
 
     /**
      * Returns description of method result value
-     * @deprecated since Moodle 2.2 please use core_role_external::assign_roles_returns() instead
-     * @return external_description
+     *
+     * @return null
+     * @since Moodle 2.0
+     * @deprecated Moodle 2.2 MDL-29106 - Please do not call this function any more.
+     * @todo MDL-31194 This will be deleted in Moodle 2.5.
+     * @see core_role_external::assign_roles_returns()
      */
     public static function role_assign_returns() {
         return core_role_external::assign_roles_returns();
@@ -650,8 +710,12 @@ class moodle_enrol_external extends external_api {
 
     /**
      * Returns description of method parameters
-     * @deprecated since Moodle 2.2 please use core_role_external::unassign_roles_parameters() instead
+     *
      * @return external_function_parameters
+     * @since Moodle 2.0
+     * @deprecated Moodle 2.2 MDL-29106 - Please do not call this function any more.
+     * @todo MDL-31194 This will be deleted in Moodle 2.5.
+     * @see core_role_external::unassign_roles_parameters()
      */
     public static function role_unassign_parameters() {
         return core_role_external::unassign_roles_parameters();
@@ -659,9 +723,12 @@ class moodle_enrol_external extends external_api {
 
      /**
      * Unassign roles from users
-     * @deprecated since Moodle 2.2 please use core_role_external::unassign_roles() instead
-     * @param array $unassignment  An array of unassignment
-     * @return null
+     *
+     * @param array $unassignments An array of unassignment
+     * @since Moodle 2.0
+     * @deprecated Moodle 2.2 MDL-29106 - Please do not call this function any more.
+     * @todo MDL-31194 This will be deleted in Moodle 2.5.
+     * @see core_role_external::unassign_roles()
      */
     public static function role_unassign($unassignments) {
          return core_role_external::unassign_roles($unassignments);
@@ -669,8 +736,12 @@ class moodle_enrol_external extends external_api {
 
    /**
      * Returns description of method result value
-    * @deprecated since Moodle 2.2 please use core_role_external::unassign_roles_returns() instead
-     * @return external_description
+     *
+     * @return null
+     * @since Moodle 2.0
+     * @deprecated Moodle 2.2 MDL-29106 - Please do not call this function any more.
+     * @todo MDL-31194 This will be deleted in Moodle 2.5.
+     * @see core_role_external::unassign_roles_returns()
      */
     public static function role_unassign_returns() {
         return core_role_external::unassign_roles_returns();
diff --git a/enrol/flatfile/db/messages.php b/enrol/flatfile/db/messages.php
new file mode 100644 (file)
index 0000000..6df3459
--- /dev/null
@@ -0,0 +1,29 @@
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle 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 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle 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 Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Defines message providers (types of message sent) for the PayPal enrolment plugin.
+ *
+ * @package    enrol_flatfile
+ * @copyright  2012 Andrew Davis
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die();
+
+$messageproviders = array(
+    'flatfile_enrolment' => array(),
+);
index 9dee198..9d992cf 100644 (file)
@@ -30,6 +30,7 @@ $string['location'] = 'File location';
 $string['mailadmin'] = 'Notify admin by email';
 $string['mailstudents'] = 'Notify students by email';
 $string['mailteachers'] = 'Notify teachers by email';
+$string['messageprovider:flatfile_enrolment'] = 'Flat file enrolment messages';
 $string['mapping'] = 'Flat file mapping';
 $string['pluginname'] = 'Flat file (CSV)';
 $string['pluginname_desc'] = 'This method will repeatedly check for and process a specially-formatted text file in the location that you specify.
index c6a5a5a..b0acb3f 100644 (file)
@@ -26,7 +26,7 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2011112900;        // The current plugin version (Date: YYYYMMDDXX)
+$plugin->version   = 2011112901;        // The current plugin version (Date: YYYYMMDDXX)
 $plugin->requires  = 2011112900;        // Requires this Moodle version
 $plugin->component = 'enrol_flatfile';  // Full name of the plugin (used for diagnostics)
 $plugin->cron      = 60;
diff --git a/enrol/imsenterprise/db/messages.php b/enrol/imsenterprise/db/messages.php
new file mode 100644 (file)
index 0000000..d75d424
--- /dev/null
@@ -0,0 +1,29 @@
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle 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 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle 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 Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Defines message providers (types of message sent) for the PayPal enrolment plugin.
+ *
+ * @package    enrol_imsenterprise
+ * @copyright  2012 Andrew Davis
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die();
+
+$messageproviders = array(
+    'imsenterprise_enrolment' => array(),
+);
index 9ceb277..8b91682 100644 (file)
@@ -54,6 +54,7 @@ $string['location'] = 'File location';
 $string['logtolocation'] = 'Log file output location (blank for no logging)';
 $string['mailadmins'] = 'Notify admin by email';
 $string['mailusers'] = 'Notify users by email';
+$string['messageprovider:imsenterprise_enrolment'] = 'IMS Enterprise enrolment messages';
 $string['miscsettings'] = 'Miscellaneous';
 $string['processphoto'] = 'Add user photo data to profile';
 $string['processphotowarning'] = 'Warning: Image processing is likely to add a significant burden to the server. You are recommended not to activate this option if large numbers of students are expected to be processed.';
index 0d18ddb..4397178 100644 (file)
@@ -25,7 +25,7 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2011112900;        // The current plugin version (Date: YYYYMMDDXX)
+$plugin->version   = 2011112901;        // The current plugin version (Date: YYYYMMDDXX)
 $plugin->requires  = 2011112900;        // Requires this Moodle version
 $plugin->component = 'enrol_imsenterprise'; // Full name of the plugin (used for diagnostics)
 $plugin->cron      = 60;
index f2daf62..44d90ac 100644 (file)
 // You should have received a copy of the GNU General Public License
 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
 
+
 /**
  * External course participation api.
  *
  * This api is mostly read only, the actual enrol and unenrol
  * support is in each enrol plugin.
  *
- * @package    enrol
- * @subpackage manual
- * @copyright  2011 Moodle Pty Ltd (http://moodle.com)
+ * @package    enrol_manual
+ * @category   external
+ * @copyright  2011 Jerome Mouneyrac
  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
+
 defined('MOODLE_INTERNAL') || die();
 
 require_once("$CFG->libdir/externallib.php");
 
 /**
- * Manual enrolment functions
+ * Manual enrolment external functions
+ *
+ * @package    enrol_manual
+ * @category   external
+ * @copyright  2011 Jerome Mouneyrac
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ * @since Moodle 2.2
  */
 class enrol_manual_external extends external_api {
 
     /**
      * Returns description of method parameters
+     *
      * @return external_function_parameters
+     * @since Moodle 2.2
      */
     public static function enrol_users_parameters() {
         return new external_function_parameters(
@@ -59,9 +69,10 @@ class enrol_manual_external extends external_api {
 
     /**
      * Enrolment of users
+     *
      * Function throw an exception at the first error encountered.
      * @param array $enrolments  An array of user enrolment
-     * @return null
+     * @since Moodle 2.2
      */
     public static function enrol_users($enrolments) {
         global $DB, $CFG;
@@ -137,7 +148,9 @@ class enrol_manual_external extends external_api {
 
     /**
      * Returns description of method result value
+     *
      * @return null
+     * @since Moodle 2.2
      */
     public static function enrol_users_returns() {
         return null;
@@ -146,15 +159,26 @@ class enrol_manual_external extends external_api {
 }
 
 /**
- * Deprecated manual enrolment functions
- * @deprecated since Moodle 2.2 please use enrol_manual_external instead
+ * Deprecated manual enrolment external functions
+ *
+ * @package    enrol_manual
+ * @copyright  2011 Jerome Mouneyrac
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ * @since Moodle 2.0
+ * @deprecated Moodle 2.2 MDL-29106 - Please do not use this class any more.
+ * @todo MDL-31194 This will be deleted in Moodle 2.5.
+ * @see enrol_manual_external
  */
 class moodle_enrol_manual_external extends external_api {
 
     /**
      * Returns description of method parameters
-     * @deprecated since Moodle 2.2 please use enrol_manual_external::enrol_users_parameters instead
+     *
      * @return external_function_parameters
+     * @since Moodle 2.0
+     * @deprecated Moodle 2.2 MDL-29106 - Please do not call this function any more.
+     * @todo MDL-31194 This will be deleted in Moodle 2.5.
+     * @see enrol_manual_external::enrol_users_parameters()
      */
     public static function manual_enrol_users_parameters() {
         return enrol_manual_external::enrol_users_parameters();
@@ -163,9 +187,12 @@ class moodle_enrol_manual_external extends external_api {
     /**
      * Enrolment of users
      * Function throw an exception at the first error encountered.
-     * @deprecated since Moodle 2.2 please use enrol_manual_external::enrol_users instead
+     *
      * @param array $enrolments  An array of user enrolment
-     * @return null
+     * @since Moodle 2.0
+     * @deprecated Moodle 2.2 MDL-29106 - Please do not call this function any more.
+     * @todo MDL-31194 This will be deleted in Moodle 2.5.
+     * @see enrol_manual_external::enrol_users()
      */
     public static function manual_enrol_users($enrolments) {
         return enrol_manual_external::enrol_users($enrolments);
@@ -173,8 +200,12 @@ class moodle_enrol_manual_external extends external_api {
 
     /**
      * Returns description of method result value
-     * @deprecated since Moodle 2.2 please use enrol_manual_external::enrol_users_returns instead
-     * @return external_description
+     *
+     * @return nul
+     * @since Moodle 2.0
+     * @deprecated Moodle 2.2 MDL-29106 - Please do not call this function any more.
+     * @todo MDL-31194 This will be deleted in Moodle 2.5.
+     * @see enrol_manual_external::enrol_users_returns()
      */
     public static function manual_enrol_users_returns() {
         return enrol_manual_external::enrol_users_returns();
diff --git a/enrol/paypal/db/messages.php b/enrol/paypal/db/messages.php
new file mode 100644 (file)
index 0000000..c079e87
--- /dev/null
@@ -0,0 +1,29 @@
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle 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 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle 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. &n