Merge branch 'wip-mdl-44262' of https://github.com/rajeshtaneja/moodle
authorEloy Lafuente (stronk7) <stronk7@moodle.org>
Thu, 8 May 2014 10:00:33 +0000 (12:00 +0200)
committerEloy Lafuente (stronk7) <stronk7@moodle.org>
Thu, 8 May 2014 10:00:33 +0000 (12:00 +0200)
Conflicts:
composer.json

575 files changed:
admin/tool/availabilityconditions/index.php
admin/tool/availabilityconditions/settings.php
admin/tool/availabilityconditions/tests/behat/manage_conditions.feature [new file with mode: 0644]
availability/yui/build/moodle-core_availability-form/moodle-core_availability-form-debug.js
availability/yui/build/moodle-core_availability-form/moodle-core_availability-form-min.js
availability/yui/build/moodle-core_availability-form/moodle-core_availability-form.js
availability/yui/src/form/js/form.js
backup/cc/cc_includes.php
backup/cc/cc_lib/cc_assesment_essay.php [new file with mode: 0644]
backup/cc/cc_lib/cc_assesment_sfib.php [new file with mode: 0644]
backup/cc/cc_lib/cc_assesment_truefalse.php [new file with mode: 0644]
backup/cc/cc_lib/cc_asssesment.php
backup/cc/cc_lib/cc_converter_folder.php [new file with mode: 0644]
backup/cc/cc_lib/cc_converter_quiz.php
backup/cc/cc_lib/cc_converter_resource.php
backup/cc/cc_lib/cc_converters.php
backup/cc/cc_lib/cc_manifest.php
backup/cc/cc_lib/cc_page.php
backup/cc/cc_lib/cc_resources.php
backup/cc/cc_lib/cc_utils.php
backup/cc/cc_lib/cc_version1.php
backup/cc/cc_lib/cc_version11.php
backup/cc/cc_lib/cc_version_base.php
backup/cc/cc_lib/gral_lib/ccdependencyparser.php
backup/cc/cc_lib/xmlbase.php
backup/cc/entities.class.php
backup/cc/entity.quiz.class.php
backup/cc/entity11.quiz.class.php
backup/cc/sheets/course_modules_mod_forum.xml
backup/converter/imscc1/lib.php
backup/converter/imscc11/lib.php
backup/converter/moodle1/lib.php
blocks/glossary_random/block_glossary_random.php
blocks/html/lib.php
course/recent_form.php
enrol/index.php
filter/mathjaxloader/lang/en/filter_mathjaxloader.php
lang/en/install.php
lang/en/moodle.php
lib/behat/lib.php
lib/classes/event/blog_association_created.php
lib/classes/event/blog_comment_created.php
lib/classes/event/blog_comment_deleted.php
lib/classes/event/cohort_created.php
lib/classes/event/cohort_deleted.php
lib/classes/event/cohort_member_added.php
lib/classes/event/cohort_member_removed.php
lib/classes/event/cohort_updated.php
lib/classes/event/course_category_deleted.php
lib/classes/event/course_completed.php
lib/classes/event/course_content_deleted.php
lib/classes/event/course_user_report_viewed.php
lib/classes/event/email_failed.php
lib/classes/event/group_created.php
lib/classes/event/group_deleted.php
lib/classes/event/group_updated.php
lib/classes/event/grouping_created.php
lib/classes/event/grouping_deleted.php
lib/classes/event/grouping_updated.php
lib/classes/event/user_created.php
lib/classes/event/user_deleted.php
lib/classes/event/user_enrolment_created.php
lib/classes/event/user_enrolment_deleted.php
lib/classes/event/user_enrolment_updated.php
lib/classes/event/user_password_updated.php
lib/classes/event/user_updated.php
lib/classes/event/webservice_login_failed.php
lib/classes/event/webservice_service_user_added.php
lib/classes/event/webservice_service_user_removed.php
lib/classes/log/manager.php
lib/editor/atto/plugins/equation/lang/en/atto_equation.php
lib/editor/atto/yui/build/moodle-editor_atto-editor/moodle-editor_atto-editor-debug.js
lib/editor/atto/yui/build/moodle-editor_atto-editor/moodle-editor_atto-editor-min.js
lib/editor/atto/yui/build/moodle-editor_atto-editor/moodle-editor_atto-editor.js
lib/editor/atto/yui/src/editor/js/selection.js
lib/editor/atto/yui/src/editor/meta/editor.json
lib/editor/tinymce/lang/en/editor_tinymce.php
lib/editor/tinymce/lib.php
lib/editor/tinymce/readme_moodle.txt
lib/editor/tinymce/thirdpartylibs.xml
lib/editor/tinymce/tiny_mce/3.5.10/langs/en.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/langs/en.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/license.txt [moved from lib/editor/tinymce/tiny_mce/3.5.8/license.txt with 97% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/advhr/css/advhr.css [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/advhr/css/advhr.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/advhr/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/advhr/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/advhr/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/advhr/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/advhr/js/rule.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/advhr/js/rule.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/advhr/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/advhr/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/advhr/rule.htm [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/advhr/rule.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/advimage/css/advimage.css [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/advimage/css/advimage.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/advimage/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/advimage/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/advimage/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/advimage/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/advimage/image.htm [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/advimage/image.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/advimage/img/sample.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/advimage/img/sample.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/advimage/js/image.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/advimage/js/image.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/advimage/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/advimage/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/advlink/css/advlink.css [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/advlink/css/advlink.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/advlink/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/advlink/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/advlink/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/advlink/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/advlink/js/advlink.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/advlink/js/advlink.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/advlink/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/advlink/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/advlink/link.htm [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/advlink/link.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/advlist/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/advlist/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/advlist/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/advlist/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/autolink/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/autolink/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/autolink/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/autolink/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/autoresize/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/autoresize/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/autoresize/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/autoresize/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/autosave/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/autosave/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/autosave/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/autosave/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/bbcode/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/bbcode/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/bbcode/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/bbcode/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/contextmenu/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/contextmenu/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/contextmenu/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/contextmenu/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/directionality/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/directionality/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/directionality/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/directionality/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/emotions/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/emotions/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/emotions/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/emotions/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/emotions/emotions.htm [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/emotions/emotions.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/emotions/img/smiley-cool.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/emotions/img/smiley-cool.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/emotions/img/smiley-cry.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/emotions/img/smiley-cry.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/emotions/img/smiley-embarassed.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/emotions/img/smiley-embarassed.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/emotions/img/smiley-foot-in-mouth.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/emotions/img/smiley-foot-in-mouth.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/emotions/img/smiley-frown.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/emotions/img/smiley-frown.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/emotions/img/smiley-innocent.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/emotions/img/smiley-innocent.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/emotions/img/smiley-kiss.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/emotions/img/smiley-kiss.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/emotions/img/smiley-laughing.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/emotions/img/smiley-laughing.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/emotions/img/smiley-money-mouth.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/emotions/img/smiley-money-mouth.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/emotions/img/smiley-sealed.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/emotions/img/smiley-sealed.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/emotions/img/smiley-smile.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/emotions/img/smiley-smile.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/emotions/img/smiley-surprised.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/emotions/img/smiley-surprised.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/emotions/img/smiley-tongue-out.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/emotions/img/smiley-tongue-out.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/emotions/img/smiley-undecided.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/emotions/img/smiley-undecided.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/emotions/img/smiley-wink.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/emotions/img/smiley-wink.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/emotions/img/smiley-yell.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/emotions/img/smiley-yell.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/emotions/js/emotions.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/emotions/js/emotions.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/emotions/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/emotions/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/example/dialog.htm [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/example/dialog.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/example/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/example/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/example/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/example/editor_plugin_src.js with 94% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/example/img/example.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/example/img/example.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/example/js/dialog.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/example/js/dialog.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/example/langs/en.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/example/langs/en.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/example/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/example/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/example_dependency/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/example_dependency/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/example_dependency/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/example_dependency/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/fullpage/css/fullpage.css [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/fullpage/css/fullpage.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/fullpage/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/fullpage/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/fullpage/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/fullpage/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/fullpage/fullpage.htm [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/fullpage/fullpage.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/fullpage/js/fullpage.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/fullpage/js/fullpage.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/fullpage/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/fullpage/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/fullscreen/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/fullscreen/editor_plugin_src.js [new file with mode: 0644]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/fullscreen/fullscreen.htm [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/fullscreen/fullscreen.htm with 77% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/iespell/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/iespell/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/iespell/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/iespell/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/inlinepopups/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/inlinepopups/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/inlinepopups/editor_plugin_src.js with 94% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/inlinepopups/skins/clearlooks2/img/alert.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/inlinepopups/skins/clearlooks2/img/alert.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/inlinepopups/skins/clearlooks2/img/button.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/inlinepopups/skins/clearlooks2/img/button.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/inlinepopups/skins/clearlooks2/img/corners.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/inlinepopups/skins/clearlooks2/img/corners.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/inlinepopups/skins/clearlooks2/window.css [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/inlinepopups/skins/clearlooks2/window.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/inlinepopups/template.htm [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/inlinepopups/template.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/insertdatetime/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/insertdatetime/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/insertdatetime/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/insertdatetime/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/layer/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/layer/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/layer/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/layer/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/legacyoutput/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/legacyoutput/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/legacyoutput/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/legacyoutput/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/lists/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/lists/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/lists/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/lists/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/media/css/media.css [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/media/css/media.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/media/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/media/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/media/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/media/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/media/js/embed.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/media/js/embed.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/media/js/media.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/media/js/media.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/media/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/media/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/media/media.htm [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/media/media.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/media/moxieplayer.swf [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/media/moxieplayer.swf with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/nonbreaking/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/nonbreaking/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/nonbreaking/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/nonbreaking/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/noneditable/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/noneditable/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/noneditable/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/noneditable/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/pagebreak/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/pagebreak/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/pagebreak/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/pagebreak/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/paste/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/paste/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/paste/editor_plugin_src.js with 96% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/paste/js/pastetext.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/paste/js/pastetext.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/paste/js/pasteword.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/paste/js/pasteword.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/paste/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/paste/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/paste/pastetext.htm [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/paste/pastetext.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/paste/pasteword.htm [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/paste/pasteword.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/preview/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/preview/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/preview/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/preview/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/preview/example.html [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/preview/example.html with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/preview/jscripts/embed.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/preview/jscripts/embed.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/preview/preview.html [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/preview/preview.html with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/print/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/print/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/print/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/print/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/save/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/save/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/save/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/save/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/searchreplace/css/searchreplace.css [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/searchreplace/css/searchreplace.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/searchreplace/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/searchreplace/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/searchreplace/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/searchreplace/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/searchreplace/js/searchreplace.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/searchreplace/js/searchreplace.js with 91% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/searchreplace/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/searchreplace/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/searchreplace/searchreplace.htm [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/searchreplace/searchreplace.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/spellchecker/css/content.css [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/spellchecker/css/content.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/spellchecker/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/spellchecker/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/spellchecker/editor_plugin_src.js with 89% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/spellchecker/img/wline.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/spellchecker/img/wline.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/style/css/props.css [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/style/css/props.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/style/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/style/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/style/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/style/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/style/js/props.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/style/js/props.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/style/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/style/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/style/props.htm [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/style/props.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/style/readme.txt [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/style/readme.txt with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/tabfocus/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/tabfocus/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/tabfocus/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/tabfocus/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/table/cell.htm [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/table/cell.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/table/css/cell.css [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/table/css/cell.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/table/css/row.css [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/table/css/row.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/table/css/table.css [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/table/css/table.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/table/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/table/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/table/editor_plugin_src.js with 99% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/table/js/cell.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/table/js/cell.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/table/js/merge_cells.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/table/js/merge_cells.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/table/js/row.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/table/js/row.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/table/js/table.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/table/js/table.js with 95% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/table/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/table/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/table/merge_cells.htm [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/table/merge_cells.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/table/row.htm [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/table/row.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/table/table.htm [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/table/table.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/template/blank.htm [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/template/blank.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/template/css/template.css [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/template/css/template.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/template/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/template/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/template/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/template/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/template/js/template.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/template/js/template.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/template/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/template/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/template/template.htm [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/template/template.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/visualblocks/css/visualblocks.css [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/visualblocks/css/visualblocks.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/visualblocks/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/visualblocks/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/visualblocks/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/visualblocks/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/visualchars/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/visualchars/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/visualchars/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/visualchars/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/wordcount/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/wordcount/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/wordcount/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/wordcount/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/xhtmlxtras/abbr.htm [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/xhtmlxtras/abbr.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/xhtmlxtras/acronym.htm [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/xhtmlxtras/acronym.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/xhtmlxtras/attributes.htm [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/xhtmlxtras/attributes.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/xhtmlxtras/cite.htm [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/xhtmlxtras/cite.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/xhtmlxtras/css/attributes.css [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/xhtmlxtras/css/attributes.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/xhtmlxtras/css/popup.css [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/xhtmlxtras/css/popup.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/xhtmlxtras/del.htm [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/xhtmlxtras/del.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/xhtmlxtras/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/xhtmlxtras/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/xhtmlxtras/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/xhtmlxtras/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/xhtmlxtras/ins.htm [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/xhtmlxtras/ins.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/xhtmlxtras/js/abbr.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/xhtmlxtras/js/abbr.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/xhtmlxtras/js/acronym.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/xhtmlxtras/js/acronym.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/xhtmlxtras/js/attributes.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/xhtmlxtras/js/attributes.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/xhtmlxtras/js/cite.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/xhtmlxtras/js/cite.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/xhtmlxtras/js/del.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/xhtmlxtras/js/del.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/xhtmlxtras/js/element_common.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/xhtmlxtras/js/element_common.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/xhtmlxtras/js/ins.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/xhtmlxtras/js/ins.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/plugins/xhtmlxtras/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/plugins/xhtmlxtras/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/about.htm [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/about.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/anchor.htm [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/anchor.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/charmap.htm [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/charmap.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/color_picker.htm [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/color_picker.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/editor_template.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/editor_template.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/editor_template_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/editor_template_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/image.htm [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/image.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/img/colorpicker.jpg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/img/colorpicker.jpg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/img/flash.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/img/flash.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/img/icons.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/img/icons.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/img/iframe.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/img/iframe.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/img/pagebreak.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/img/pagebreak.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/img/quicktime.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/img/quicktime.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/img/realmedia.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/img/realmedia.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/img/shockwave.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/img/shockwave.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/img/trans.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/img/trans.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/img/video.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/img/video.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/img/windowsmedia.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/img/windowsmedia.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/js/about.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/js/about.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/js/anchor.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/js/anchor.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/js/charmap.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/js/charmap.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/js/color_picker.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/js/color_picker.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/js/image.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/js/image.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/js/link.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/js/link.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/js/source_editor.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/js/source_editor.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/langs/en.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/langs/en.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/link.htm [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/link.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/shortcuts.htm [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/shortcuts.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/default/content.css [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/default/content.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/default/dialog.css [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/default/dialog.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/default/img/buttons.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/default/img/buttons.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/default/img/items.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/default/img/items.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/default/img/menu_arrow.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/default/img/menu_arrow.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/default/img/menu_check.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/default/img/menu_check.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/default/img/progress.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/default/img/progress.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/default/img/tabs.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/default/img/tabs.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/default/ui.css [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/default/ui.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/highcontrast/content.css [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/highcontrast/content.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/highcontrast/dialog.css [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/highcontrast/dialog.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/highcontrast/ui.css [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/highcontrast/ui.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/content.css [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/content.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/dialog.css [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/dialog.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/abbr.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/abbr.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/abbr.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/abbr.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/absolute.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/absolute.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/absolute.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/absolute.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/acronym.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/acronym.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/acronym.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/acronym.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/advance_hr.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/advance_hr.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/advance_hr.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/advance_hr.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/align_center.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/align_center.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/align_center.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/align_center.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/align_left.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/align_left.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/align_left.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/align_left.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/align_right.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/align_right.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/align_right.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/align_right.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/anchor.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/anchor.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/anchor.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/anchor.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/attributes.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/attributes.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/attributes.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/attributes.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/backward.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/backward.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/backward.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/backward.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/bold.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/bold.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/bold.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/bold.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/bullet_list.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/bullet_list.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/bullet_list.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/bullet_list.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/button_bg.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/button_bg.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/cancel.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/cancel.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/cancel.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/cancel.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/cell_props.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/cell_props.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/cell_props.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/cell_props.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/cite.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/cite.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/cite.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/cite.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/cleanup_messy_code.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/cleanup_messy_code.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/cleanup_messy_code.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/cleanup_messy_code.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/clear_formatting.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/clear_formatting.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/clear_formatting.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/clear_formatting.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/copy.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/copy.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/copy.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/copy.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/cut.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/cut.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/cut.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/cut.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/decrease_indent.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/decrease_indent.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/decrease_indent.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/decrease_indent.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/delete.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/delete.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/delete.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/delete.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/delete_col.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/delete_col.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/delete_col.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/delete_col.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/delete_row.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/delete_row.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/delete_row.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/delete_row.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/delete_table.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/delete_table.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/delete_table.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/delete_table.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/document_properties.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/document_properties.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/document_properties.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/document_properties.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/dragmath.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/dragmath.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/dragmath.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/dragmath.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/emoticons.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/emoticons.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/emoticons.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/emoticons.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/find_replace.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/find_replace.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/find_replace.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/find_replace.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/forward.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/forward.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/forward.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/forward.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/fullpage.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/fullpage.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/fullpage.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/fullpage.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/fullscreen.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/fullscreen.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/fullscreen.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/fullscreen.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/help.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/help.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/help.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/help.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/increase_indent.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/increase_indent.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/increase_indent.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/increase_indent.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/insert.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/insert.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/insert.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/insert.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/insert_col_after.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/insert_col_after.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/insert_col_after.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/insert_col_after.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/insert_col_before.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/insert_col_before.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/insert_col_before.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/insert_col_before.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/insert_date.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/insert_date.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/insert_date.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/insert_date.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/insert_edit_image.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/insert_edit_image.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/insert_edit_image.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/insert_edit_image.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/insert_edit_link.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/insert_edit_link.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/insert_edit_link.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/insert_edit_link.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/insert_edit_video.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/insert_edit_video.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/insert_edit_video.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/insert_edit_video.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/insert_file.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/insert_file.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/insert_file.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/insert_file.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/insert_horizontal_ruler.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/insert_horizontal_ruler.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/insert_horizontal_ruler.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/insert_horizontal_ruler.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/insert_nonbreaking_space.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/insert_nonbreaking_space.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/insert_nonbreaking_space.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/insert_nonbreaking_space.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/insert_row_after.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/insert_row_after.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/insert_row_after.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/insert_row_after.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/insert_row_before.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/insert_row_before.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/insert_row_before.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/insert_row_before.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/insert_time.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/insert_time.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/insert_time.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/insert_time.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/italic.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/italic.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/italic.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/italic.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/justify.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/justify.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/justify.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/justify.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/layers.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/layers.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/layers.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/layers.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/layers_over.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/layers_over.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/layers_over.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/layers_over.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/layers_under.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/layers_under.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/layers_under.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/layers_under.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/left_to_right.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/left_to_right.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/left_to_right.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/left_to_right.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/manage_files.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/manage_files.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/manage_files.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/manage_files.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/merge_cells.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/merge_cells.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/merge_cells.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/merge_cells.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/new_document.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/new_document.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/new_document.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/new_document.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/numbered_list.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/numbered_list.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/numbered_list.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/numbered_list.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/page_break.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/page_break.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/page_break.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/page_break.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/paste.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/paste.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/paste.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/paste.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/paste_text.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/paste_text.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/paste_text.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/paste_text.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/paste_word.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/paste_word.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/paste_word.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/paste_word.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/prevent_autolink.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/prevent_autolink.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/prevent_autolink.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/prevent_autolink.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/preview.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/preview.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/preview.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/preview.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/print.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/print.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/print.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/print.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/question.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/question.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/question.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/question.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/redo.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/redo.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/redo.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/redo.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/remove_link.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/remove_link.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/remove_link.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/remove_link.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/resize.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/resize.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/resize.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/resize.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/restore_draft.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/restore_draft.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/restore_draft.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/restore_draft.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/restore_last_draft.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/restore_last_draft.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/restore_last_draft.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/restore_last_draft.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/right_to_left.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/right_to_left.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/right_to_left.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/right_to_left.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/row_props.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/row_props.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/row_props.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/row_props.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/save.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/save.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/save.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/save.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/search.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/search.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/search.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/search.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/select_all.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/select_all.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/select_all.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/select_all.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/show_invisible_characters.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/show_invisible_characters.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/show_invisible_characters.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/show_invisible_characters.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/source_code.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/source_code.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/source_code.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/source_code.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/special_character.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/special_character.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/special_character.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/special_character.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/spellcheck.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/spellcheck.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/spellcheck.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/spellcheck.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/split_cells.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/split_cells.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/split_cells.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/split_cells.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/strikethrough.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/strikethrough.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/strikethrough.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/strikethrough.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/styleprops.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/styleprops.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/styleprops.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/styleprops.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/subscript.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/subscript.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/subscript.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/subscript.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/superscript.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/superscript.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/superscript.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/superscript.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/table.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/table.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/table.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/table.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/table_props.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/table_props.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/table_props.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/table_props.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/template.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/template.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/template.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/template.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/text_color.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/text_color.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/text_color.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/text_color.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/text_color_picker.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/text_color_picker.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/text_color_picker.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/text_color_picker.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/text_highlight.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/text_highlight.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/text_highlight.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/text_highlight.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/text_highlight_picker.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/text_highlight_picker.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/text_highlight_picker.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/text_highlight_picker.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/tick.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/tick.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/tick.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/tick.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/toggle_blockquote.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/toggle_blockquote.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/toggle_blockquote.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/toggle_blockquote.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/underline.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/underline.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/underline.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/underline.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/undo.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/undo.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/undo.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/undo.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/visual_aid.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/visual_aid.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/visual_aid.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/visual_aid.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/visual_blocks.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/visual_blocks.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/img/visual_blocks.svg [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/visual_blocks.svg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/moodle/ui.css [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/ui.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/o2k7/content.css [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/o2k7/content.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/o2k7/dialog.css [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/o2k7/dialog.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/o2k7/img/button_bg.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/o2k7/img/button_bg.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/o2k7/img/button_bg_black.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/o2k7/img/button_bg_black.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/o2k7/img/button_bg_silver.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/o2k7/img/button_bg_silver.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/o2k7/ui.css [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/o2k7/ui.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/o2k7/ui_black.css [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/o2k7/ui_black.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/skins/o2k7/ui_silver.css [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/o2k7/ui_silver.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/advanced/source_editor.htm [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/source_editor.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/simple/editor_template.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/simple/editor_template.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/simple/editor_template_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/simple/editor_template_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/simple/img/icons.gif [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/simple/img/icons.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/simple/langs/en.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/simple/langs/en.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/simple/skins/default/content.css [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/simple/skins/default/content.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/simple/skins/default/ui.css [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/simple/skins/default/ui.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/simple/skins/o2k7/content.css [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/simple/skins/o2k7/content.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/simple/skins/o2k7/img/button_bg.png [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/simple/skins/o2k7/img/button_bg.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/themes/simple/skins/o2k7/ui.css [moved from lib/editor/tinymce/tiny_mce/3.5.8/themes/simple/skins/o2k7/ui.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/tiny_mce.js [new file with mode: 0644]
lib/editor/tinymce/tiny_mce/3.5.10/tiny_mce_popup.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/tiny_mce_popup.js with 60% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/tiny_mce_src.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/tiny_mce_src.js with 95% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/utils/editable_selects.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/utils/editable_selects.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/utils/form_utils.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/utils/form_utils.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/utils/mctabs.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/utils/mctabs.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.10/utils/validate.js [moved from lib/editor/tinymce/tiny_mce/3.5.8/utils/validate.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.5.8/plugins/fullscreen/editor_plugin.js [deleted file]
lib/editor/tinymce/tiny_mce/3.5.8/plugins/fullscreen/editor_plugin_src.js [deleted file]
lib/editor/tinymce/tiny_mce/3.5.8/plugins/inlinepopups/editor_plugin.js [deleted file]
lib/editor/tinymce/tiny_mce/3.5.8/plugins/paste/editor_plugin.js [deleted file]
lib/editor/tinymce/tiny_mce/3.5.8/plugins/spellchecker/editor_plugin.js [deleted file]
lib/editor/tinymce/tiny_mce/3.5.8/plugins/table/editor_plugin.js [deleted file]
lib/editor/tinymce/tiny_mce/3.5.8/tiny_mce.js [deleted file]
lib/editor/tinymce/version.php
lib/form/filemanager.js
lib/moodlelib.php
login/token.php
mod/assign/lang/en/assign.php
mod/assign/locallib.php
mod/assign/tests/events_test.php
mod/chat/classes/event/message_sent.php
mod/quiz/report/statistics/tests/fixtures/responsecounts01.csv
mod/quiz/report/statistics/tests/fixtures/responsecounts02.csv
mod/wiki/locallib.php
mod/workshop/classes/event/assessable_uploaded.php
question/behaviour/behaviourbase.php
question/behaviour/interactivecountback/behaviour.php
report/completion/classes/event/report_viewed.php
report/completion/classes/event/user_report_viewed.php
report/eventlist/classes/list_generator.php
report/eventlist/yui/build/moodle-report_eventlist-eventfilter/moodle-report_eventlist-eventfilter-debug.js
report/eventlist/yui/build/moodle-report_eventlist-eventfilter/moodle-report_eventlist-eventfilter-min.js
report/eventlist/yui/build/moodle-report_eventlist-eventfilter/moodle-report_eventlist-eventfilter.js
report/eventlist/yui/src/eventfilter/js/eventfilter.js
report/log/classes/event/report_viewed.php
report/log/classes/event/user_report_viewed.php
report/log/classes/table_log.php
report/loglive/classes/event/report_viewed.php
report/outline/classes/event/report_viewed.php
report/participation/locallib.php
report/stats/classes/event/report_viewed.php
report/stats/classes/event/user_report_viewed.php
repository/url/lib.php
theme/bootstrapbase/less/moodle/grade.less
theme/bootstrapbase/less/moodle/message.less
theme/bootstrapbase/style/moodle.css
user/lib.php
user/message.html
user/messageselect.php

index 4852c4e..485fc23 100644 (file)
@@ -43,7 +43,7 @@ foreach (core_component::get_plugin_list('availability') as $plugin => $plugindi
 core_collator::asort($plugins);
 
 // Do plugin actions.
-$pageurl = new moodle_url('/' . $CFG->admin . '/availabilityconditions.php');
+$pageurl = new moodle_url('/' . $CFG->admin . '/tool/availabilityconditions/');
 if (($plugin = optional_param('plugin', '', PARAM_PLUGIN))) {
     require_sesskey();
     if (!array_key_exists($plugin, $plugins)) {
@@ -103,8 +103,6 @@ foreach ($plugins as $plugin => $name) {
 
     // Make enable control. This is a POST request (using a form control rather
     // than just a link) because it makes a database change.
-    $targeturl = new moodle_url('availabilityconditions.php', array(
-            'plugin' => $plugin, 'action' => $enabledaction, 'sesskey' => sesskey()));
     $enablecontrol = html_writer::tag('form', html_writer::div(
             html_writer::empty_tag('input', array('type' => 'hidden',
                     'name' => 'sesskey', 'value' => sesskey())) .
@@ -116,7 +114,7 @@ foreach ($plugins as $plugin => $name) {
                     'src' => $OUTPUT->pix_url('t/' . $enabledaction), 'alt' => $enabledstr,
                     'title' => $enabledstr))
             ), array(
-            'method' => 'post', 'action' => 'availabilityconditions.php'));
+            'method' => 'post', 'action' => './'));
 
     $table->add_data(array($namespan, $version, $enablecontrol));
 }
index 95765ec..13c5c65 100644 (file)
@@ -24,7 +24,7 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-if ($hassiteconfig) {
+if ($hassiteconfig && !empty($CFG->enableavailability)) {
     $ADMIN->add('modules', new admin_category('availabilitysettings',
             new lang_string('type_availability_plural', 'plugin')));
     $ADMIN->add('availabilitysettings', new admin_externalpage('manageavailability',
diff --git a/admin/tool/availabilityconditions/tests/behat/manage_conditions.feature b/admin/tool/availabilityconditions/tests/behat/manage_conditions.feature
new file mode 100644 (file)
index 0000000..3df48ed
--- /dev/null
@@ -0,0 +1,58 @@
+@tool @tool_availabilityconditions
+Feature: Manage availability conditions
+  In order to control availability restrictions
+  As an administrator
+  I need to see the list of restrictions and hide or show them
+
+  @javascript
+  Scenario: Display list of availability conditions
+    # Check the report doesn't show when not enabled.
+    Given I log in as "admin"
+    And I expand "Site administration" node
+    When I expand "Plugins" node
+    Then I should not see "Availability restrictions"
+
+    # Enable it and check I can now see and click on it.
+    And I set the following administration settings values:
+      | Enable conditional access | 1 |
+    And I am on homepage
+    And I navigate to "Manage restrictions" node in "Site administration > Plugins > Availability restrictions"
+
+    # Having clicked on it, I should also see the list of plugins.
+    And I should see "Restriction by date"
+    And I should see "Restriction by grades"
+
+  @javascript
+  Scenario: Hide and show conditions
+    # Get to the right page
+    Given the following "courses" exist:
+      | fullname | shortname | format |
+      | Course 1 | C1        | topics |
+    And I log in as "admin"
+    And I set the following administration settings values:
+      | Enable conditional access | 1 |
+    And I am on homepage
+    When I navigate to "Manage restrictions" node in "Site administration > Plugins > Availability restrictions"
+
+    # Check the icon is there (it should be a Hide icon, meaning is currently visible).
+    Then "input[title=Hide]" "css_element" should exist in the "Restriction by date" "table_row"
+
+    # Click the icon. It should toggle to hidden (title=Show).
+    And I click on "input[title=Hide]" "css_element" in the "Restriction by date" "table_row"
+    And "input[title=Show]" "css_element" should exist in the "Restriction by date" "table_row"
+
+    # Toggle it back to visible (title=Hide).
+    And I click on "input[title=Show]" "css_element" in the "Restriction by date" "table_row"
+    And "input[title=Hide]" "css_element" should exist in the "Restriction by date" "table_row"
+
+    # OK, toggling works. Set the grade one to Hide and we'll go see if it actually worked.
+    And I click on "input[title=Hide]" "css_element" in the "Restriction by grade" "table_row"
+    And I am on homepage
+    And I follow "Course 1"
+    And I turn editing mode on
+    And I add a "Page" to section "1"
+    And I expand all fieldsets
+    And I click on "Add restriction..." "button"
+    And "Add restriction..." "dialogue" should be visible
+    And "Date" "button" should exist in the "Add restriction..." "dialogue"
+    And "Grade" "button" should not exist in the "Add restriction..." "dialogue"
index 1c6bd51..b7c0509 100644 (file)
Binary files a/availability/yui/build/moodle-core_availability-form/moodle-core_availability-form-debug.js and b/availability/yui/build/moodle-core_availability-form/moodle-core_availability-form-debug.js differ
index 10dc87c..82b5c5b 100644 (file)
Binary files a/availability/yui/build/moodle-core_availability-form/moodle-core_availability-form-min.js and b/availability/yui/build/moodle-core_availability-form/moodle-core_availability-form-min.js differ
index 1c6bd51..b7c0509 100644 (file)
Binary files a/availability/yui/build/moodle-core_availability-form/moodle-core_availability-form.js and b/availability/yui/build/moodle-core_availability-form/moodle-core_availability-form.js differ
index 4e3d3d4..5f26ced 100644 (file)
@@ -933,13 +933,13 @@ M.core_availability.EyeIcon = function(individual, shown) {
     // Set up button text and icon.
     var suffix = individual ? '_individual' : '_all';
     var setHidden = function() {
-        icon.set('src', iconBase + '/t/show');
+        icon.set('src', iconBase + '/i/show');
         icon.set('alt', M.str.availability['hidden' + suffix]);
         this.span.set('title', M.str.availability['hidden' + suffix] + ' \u2022 ' +
                 M.str.availability.show_verb);
     };
     var setShown = function() {
-        icon.set('src', iconBase + '/t/hide');
+        icon.set('src', iconBase + '/i/hide');
         icon.set('alt', M.str.availability['shown' + suffix]);
         this.span.set('title', M.str.availability['shown' + suffix] + ' \u2022 ' +
                 M.str.availability.hide_verb);
index 9b1a9bd..0c920e1 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/>.
+
 /**
-* Main include for IMS Common Cartridge export classes
-*
-* @package    backup-convert
-* @copyright  2011 Darko Miletic <dmiletic@moodlerooms.com>
-* @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
-*/
+ * Main include for IMS Common Cartridge export classes
+ *
+ * @package    backup-convert
+ * @copyright  2011 Darko Miletic <dmiletic@moodlerooms.com>
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
 
 require_once($CFG->dirroot .'/backup/cc/cc_lib/xmlbase.php');
 require_once($CFG->dirroot .'/backup/cc/cc_lib/cc_resources.php');
@@ -40,4 +41,5 @@ require_once($CFG->dirroot .'/backup/cc/cc_lib/cc_converter_resource.php');
 require_once($CFG->dirroot .'/backup/cc/cc_lib/cc_converter_quiz.php');
 require_once($CFG->dirroot .'/backup/cc/cc_lib/cc_converter_page.php');
 require_once($CFG->dirroot .'/backup/cc/cc_lib/cc_converter_label.php');
+require_once($CFG->dirroot .'/backup/cc/cc_lib/cc_converter_folder.php');
 require_once($CFG->dirroot .'/backup/cc/cc_lib/cc_convert_moodle2.php');
diff --git a/backup/cc/cc_lib/cc_assesment_essay.php b/backup/cc/cc_lib/cc_assesment_essay.php
new file mode 100644 (file)
index 0000000..cd8c318
--- /dev/null
@@ -0,0 +1,69 @@
+<?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/>.
+/**
+ * @package    backup-convert
+ * @copyright  2012 Darko Miletic <dmiletic@moodlerooms.com>
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') or die('Direct access to this script is forbidden.');
+
+class cc_assesment_question_essay extends cc_assesment_question_proc_base {
+    public function __construct($quiz, $questions, $manifest, $section, $question_node, $rootpath, $contextid, $outdir) {
+        parent::__construct($quiz, $questions, $manifest, $section, $question_node, $rootpath, $contextid, $outdir);
+        $this->qtype = cc_qti_profiletype::essay;
+        $maximum_quiz_grade = (int)$this->quiz->nodeValue('/activity/quiz/grade');
+        $this->total_grade_value = ($maximum_quiz_grade + 1).'.0000000';
+    }
+
+    public function on_generate_metadata() {
+        parent::on_generate_metadata();
+        // Mark essay for manual grading.
+        $this->qmetadata->enable_scoringpermitted();
+        $this->qmetadata->enable_computerscored(false);
+    }
+
+    public function on_generate_presentation() {
+        parent::on_generate_presentation();
+        $response_str = new cc_assesment_response_strtype();
+        $response_fib = new cc_assesment_render_fibtype();
+        $row_value = (int)$this->questions->nodeValue('plugin_qtype_essay_question//responsefieldlines', $this->question_node);
+        $response_fib->set_rows($row_value);
+        $response_str->set_render_fib($response_fib);
+        $this->qpresentation->set_response_str($response_str);
+    }
+
+    public function on_generate_response_processing() {
+        parent::on_generate_response_processing();
+
+        // Response conditions.
+        if (!empty($this->general_feedback)) {
+            $qrespcondition = new cc_assesment_respconditiontype();
+            $qrespcondition->set_title('General feedback');
+            $this->qresprocessing->add_respcondition($qrespcondition);
+            // Define the condition for success.
+            $qconditionvar = new cc_assignment_conditionvar();
+            $qrespcondition->set_conditionvar($qconditionvar);
+            $qother = new cc_assignment_conditionvar_othertype();
+            $qconditionvar->set_other($qother);
+            $qdisplayfeedback = new cc_assignment_displayfeedbacktype();
+            $qrespcondition->add_displayfeedback($qdisplayfeedback);
+            $qdisplayfeedback->set_feedbacktype(cc_qti_values::Response);
+            $qdisplayfeedback->set_linkrefid('general_fb');
+        }
+    }
+}
+
diff --git a/backup/cc/cc_lib/cc_assesment_sfib.php b/backup/cc/cc_lib/cc_assesment_sfib.php
new file mode 100644 (file)
index 0000000..6a83ccc
--- /dev/null
@@ -0,0 +1,183 @@
+<?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/>.
+/**
+ * @package    backup-convert
+ * @copyright  2012 Darko Miletic <dmiletic@moodlerooms.com>
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') or die('Direct access to this script is forbidden.');
+
+require_once('cc_asssesment.php');
+
+class cc_assesment_question_sfib extends cc_assesment_question_proc_base {
+    public function __construct($quiz, $questions, $manifest, $section, $question_node, $rootpath, $contextid, $outdir) {
+        parent::__construct($quiz, $questions, $manifest, $section, $question_node, $rootpath, $contextid, $outdir);
+        $this->qtype = cc_qti_profiletype::field_entry;
+        $this->correct_answer_node_id = $this->questions->nodeValue(
+            'plugin_qtype_truefalse_question/truefalse/trueanswer',
+            $this->question_node
+        );
+        $maximum_quiz_grade = (int)$this->quiz->nodeValue('/activity/quiz/grade');
+        $this->total_grade_value = ($maximum_quiz_grade + 1).'.0000000';
+    }
+
+    public function on_generate_metadata() {
+        parent::on_generate_metadata();
+
+        $category = $this->questions->nodeValue('../../name', $this->question_node);
+        if (!empty($category)) {
+            $this->qmetadata->set_category($category);
+        }
+    }
+
+    public function on_generate_presentation() {
+        parent::on_generate_presentation();
+        $response_str = new cc_assesment_response_strtype();
+        $response_fib = new cc_assesment_render_fibtype();
+
+         // The standard requires that only rows attribute must be set,
+         // the rest may or may not be configured. For the sake of brevity we leave it empty.
+        $response_fib->set_rows(1);
+        $response_str->set_render_fib($response_fib);
+        $this->qpresentation->set_response_str($response_str);
+    }
+
+    public function on_generate_feedbacks() {
+        parent::on_generate_feedbacks();
+        // Question combined feedback.
+        $responsenodes = $this->questions->nodeList('plugin_qtype_shortanswer_question//answer', $this->question_node);
+        $count = 0;
+        foreach ($responsenodes as $respnode) {
+            $content = $this->questions->nodeValue('feedback', $respnode);
+            if (empty($content)) {
+                continue;
+            }
+
+            $correct = (int)$this->questions->nodeValue('fraction', $respnode) == 1;
+            $answerid = (int)$this->questions->nodeValue('@id', $respnode);
+
+            $result = cc_helpers::process_linked_files( $content,
+                                                        $this->manifest,
+                                                        $this->rootpath,
+                                                        $this->contextid,
+                                                        $this->outdir);
+            $ident = $correct ? 'correct' : 'incorrect';
+            $ident .= '_'.$count.'_fb';
+            cc_assesment_helper::add_feedback( $this->qitem,
+                                                $result[0],
+                                                cc_qti_values::htmltype,
+                                                $ident);
+
+            pkg_resource_dependencies::instance()->add($result[1]);
+
+            if ($correct) {
+                $this->correct_feedbacks[$answerid] = $ident;
+            } else {
+                $this->incorrect_feedbacks[$answerid] = $ident;
+            }
+
+            ++$count;
+        }
+    }
+
+    public function on_generate_response_processing() {
+        parent::on_generate_response_processing();
+
+        // General unconditional feedback must be added as a first respcondition
+        // without any condition and just displayfeedback (if exists).
+        if (!empty($this->general_feedback)) {
+            $qrespcondition = new cc_assesment_respconditiontype();
+            $qrespcondition->set_title('General feedback');
+            $this->qresprocessing->add_respcondition($qrespcondition);
+            $qrespcondition->enable_continue();
+            // Define the condition for success.
+            $qconditionvar = new cc_assignment_conditionvar();
+            $qrespcondition->set_conditionvar($qconditionvar);
+            $qother = new cc_assignment_conditionvar_othertype();
+            $qconditionvar->set_other($qother);
+            $qdisplayfeedback = new cc_assignment_displayfeedbacktype();
+            $qrespcondition->add_displayfeedback($qdisplayfeedback);
+            $qdisplayfeedback->set_feedbacktype(cc_qti_values::Response);
+            $qdisplayfeedback->set_linkrefid('general_fb');
+        }
+
+        // Answer separate conditions.
+        $correct_responses = $this->questions->nodeList(
+            'plugin_qtype_shortanswer_question//answer[fraction=1]', $this->question_node);
+        $incorrect_responses = $this->questions->nodeList(
+            'plugin_qtype_shortanswer_question//answer[fraction<1]', $this->question_node);
+        $items = array(
+            array($correct_responses, $this->correct_feedbacks),
+            array($incorrect_responses, $this->incorrect_feedbacks)
+        );
+        foreach ($items as $respfeed) {
+            foreach ($respfeed[0] as $coresponse) {
+                $qrespcondition = new cc_assesment_respconditiontype();
+                $qrespcondition->enable_continue();
+                $this->qresprocessing->add_respcondition($qrespcondition);
+                $qconditionvar = new cc_assignment_conditionvar();
+                $qrespcondition->set_conditionvar($qconditionvar);
+                $respc = $this->questions->nodeValue('answertext', $coresponse);
+                $resid = $this->questions->nodeValue('@id', $coresponse);
+                $qvarequal = new cc_assignment_conditionvar_varequaltype($respc);
+                $qconditionvar->set_varequal($qvarequal);
+                $qvarequal->set_respident('response');
+                $qvarequal->enable_case(false);
+                if (!empty($respfeed[1][$resid])) {
+                    $qdisplayfeedback = new cc_assignment_displayfeedbacktype();
+                    $qrespcondition->add_displayfeedback($qdisplayfeedback);
+                    $qdisplayfeedback->set_feedbacktype(cc_qti_values::Response);
+                    $qdisplayfeedback->set_linkrefid($respfeed[1][$resid]);
+                }
+            }
+        }
+        // Success condition.
+        // For all question types outside of the Essay question, scoring is done in a
+        // single <respcondition> with a continue flag set to No. The outcome is always
+        // a variable named SCORE which value must be set to 100 in case of correct answer.
+        // Partial scores (not 0 or 100) are not supported.
+        $qrespcondition = new cc_assesment_respconditiontype();
+        $qrespcondition->set_title('Correct');
+        $this->qresprocessing->add_respcondition($qrespcondition);
+        $qrespcondition->enable_continue(false);
+        $qsetvar = new cc_assignment_setvartype(100);
+        $qrespcondition->add_setvar($qsetvar);
+        // Define the condition for success.
+        $qconditionvar = new cc_assignment_conditionvar();
+        $qrespcondition->set_conditionvar($qconditionvar);
+
+        foreach ($correct_responses as $coresponse) {
+            $respc = $this->questions->nodeValue('answertext', $coresponse);
+            $qvarequal = new cc_assignment_conditionvar_varequaltype($respc);
+            $qconditionvar->set_varequal($qvarequal);
+            $qvarequal->set_respident('response');
+            $qvarequal->enable_case(false);
+        }
+
+        // Add incorrect handling.
+        $qrespcondition = new cc_assesment_respconditiontype();
+        $this->qresprocessing->add_respcondition($qrespcondition);
+        $qrespcondition->enable_continue(false);
+        // Define the condition for failure.
+        $qconditionvar = new cc_assignment_conditionvar();
+        $qrespcondition->set_conditionvar($qconditionvar);
+        $qother = new cc_assignment_conditionvar_othertype();
+        $qconditionvar->set_other($qother);
+        $qsetvar = new cc_assignment_setvartype(0);
+        $qrespcondition->add_setvar($qsetvar);
+    }
+}
diff --git a/backup/cc/cc_lib/cc_assesment_truefalse.php b/backup/cc/cc_lib/cc_assesment_truefalse.php
new file mode 100644 (file)
index 0000000..64d0e79
--- /dev/null
@@ -0,0 +1,173 @@
+<?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/>.
+/**
+ * @package    backup-convert
+ * @copyright  2012 Darko Miletic <dmiletic@moodlerooms.com>
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') or die('Direct access to this script is forbidden.');
+
+require_once('cc_asssesment.php');
+
+class cc_assesment_question_truefalse extends cc_assesment_question_proc_base {
+    public function __construct($quiz, $questions, $manifest, $section, $question_node, $rootpath, $contextid, $outdir) {
+        parent::__construct($quiz, $questions, $manifest, $section, $question_node, $rootpath, $contextid, $outdir);
+        $this->qtype = cc_qti_profiletype::true_false;
+        $this->correct_answer_node_id = $this->questions->nodeValue(
+            'plugin_qtype_truefalse_question/truefalse/trueanswer', $this->question_node);
+        $maximum_quiz_grade = (int)$this->quiz->nodeValue('/activity/quiz/grade');
+        $this->total_grade_value = ($maximum_quiz_grade + 1).'.0000000';
+    }
+
+    public function on_generate_answers() {
+        // Add responses holder.
+        $qresponse_lid = new cc_response_lidtype();
+        $this->qresponse_lid = $qresponse_lid;
+        $this->qpresentation->set_response_lid($qresponse_lid);
+        $qresponse_choice = new cc_assesment_render_choicetype();
+        $qresponse_lid->set_render_choice($qresponse_choice);
+        // Mark that question has only one correct answer -
+        // which applies for multiple choice and yes/no questions.
+        $qresponse_lid->set_rcardinality(cc_qti_values::Single);
+        // Are we to shuffle the responses?
+        $shuffle_answers = (int)$this->quiz->nodeValue('/activity/quiz/shuffleanswers') > 0;
+        $qresponse_choice->enable_shuffle($shuffle_answers);
+        $answerlist = array();
+        $qa_responses = $this->questions->nodeList('plugin_qtype_truefalse_question/answers/answer', $this->question_node);
+        foreach ($qa_responses as $node) {
+            $answer_content = $this->questions->nodeValue('answertext', $node);
+            $id = ((int)$this->questions->nodeValue('@id', $node) == $this->correct_answer_node_id);
+            $qresponse_label = cc_assesment_helper::add_answer( $qresponse_choice,
+                                                                $answer_content,
+                                                                cc_qti_values::htmltype);
+            $answer_ident = strtolower(trim($answer_content));
+            $qresponse_label->set_ident($answer_ident);
+            $feedback_ident = ($id) ? 'correct_fb' : 'incorrect_fb';
+            if (empty($this->correct_answer_ident) && $id) {
+                $this->correct_answer_ident = $answer_ident;
+            }
+            // Add answer specific feedback if not empty.
+            $content = $this->questions->nodeValue('feedback', $node);
+            if (!empty($content)) {
+                $result = cc_helpers::process_linked_files( $content,
+                                                            $this->manifest,
+                                                            $this->rootpath,
+                                                            $this->contextid,
+                                                            $this->outdir);
+
+
+                cc_assesment_helper::add_feedback( $this->qitem,
+                                                    $result[0],
+                                                    cc_qti_values::htmltype,
+                                                    $feedback_ident);
+
+                pkg_resource_dependencies::instance()->add($result[1]);
+
+                $answerlist[$answer_ident] = $feedback_ident;
+            }
+        }
+
+        $this->answerlist = $answerlist;
+
+    }
+
+    public function on_generate_response_processing() {
+        parent::on_generate_response_processing();
+
+        // Response conditions.
+        // General unconditional feedback must be added as a first respcondition
+        // without any condition and just displayfeedback (if exists).
+        if (!empty($this->general_feedback)) {
+            $qrespcondition = new cc_assesment_respconditiontype();
+            $qrespcondition->set_title('General feedback');
+            $this->qresprocessing->add_respcondition($qrespcondition);
+            $qrespcondition->enable_continue();
+            // Define the condition for success.
+            $qconditionvar = new cc_assignment_conditionvar();
+            $qrespcondition->set_conditionvar($qconditionvar);
+            $qother = new cc_assignment_conditionvar_othertype();
+            $qconditionvar->set_other($qother);
+            $qdisplayfeedback = new cc_assignment_displayfeedbacktype();
+            $qrespcondition->add_displayfeedback($qdisplayfeedback);
+            $qdisplayfeedback->set_feedbacktype(cc_qti_values::Response);
+            $qdisplayfeedback->set_linkrefid('general_fb');
+        }
+
+        // Success condition.
+        // For all question types outside of the Essay question, scoring is done in a
+        // single <respcondition> with a continue flag set to No. The outcome is always
+        // a variable named SCORE which value must be set to 100 in case of correct answer.
+        // Partial scores (not 0 or 100) are not supported.
+        $qrespcondition = new cc_assesment_respconditiontype();
+        $qrespcondition->set_title('Correct');
+        $this->qresprocessing->add_respcondition($qrespcondition);
+        $qrespcondition->enable_continue(false);
+        $qsetvar = new cc_assignment_setvartype(100);
+        $qrespcondition->add_setvar($qsetvar);
+        // Define the condition for success.
+        $qconditionvar = new cc_assignment_conditionvar();
+        $qrespcondition->set_conditionvar($qconditionvar);
+        // TODO: recheck this.
+        $qvarequal = new cc_assignment_conditionvar_varequaltype($this->correct_answer_ident);
+        $qconditionvar->set_varequal($qvarequal);
+        $qvarequal->set_respident($this->qresponse_lid->get_ident());
+
+        if (array_key_exists($this->correct_answer_ident, $this->answerlist)) {
+            $qdisplayfeedback = new cc_assignment_displayfeedbacktype();
+            $qrespcondition->add_displayfeedback($qdisplayfeedback);
+            $qdisplayfeedback->set_feedbacktype(cc_qti_values::Response);
+            $qdisplayfeedback->set_linkrefid($this->answerlist[$this->correct_answer_ident]);
+        }
+
+        foreach ($this->correct_feedbacks as $ident) {
+            $qdisplayfeedback = new cc_assignment_displayfeedbacktype();
+            $qrespcondition->add_displayfeedback($qdisplayfeedback);
+            $qdisplayfeedback->set_feedbacktype(cc_qti_values::Response);
+            $qdisplayfeedback->set_linkrefid($ident);
+        }
+
+        // Rest of the conditions.
+        foreach ($this->answerlist as $ident => $refid) {
+            if ($ident == $this->correct_answer_ident) {
+                continue;
+            }
+
+            $qrespcondition = new cc_assesment_respconditiontype();
+            $this->qresprocessing->add_respcondition($qrespcondition);
+            $qsetvar = new cc_assignment_setvartype(0);
+            $qrespcondition->add_setvar($qsetvar);
+            // Define the condition for fail.
+            $qconditionvar = new cc_assignment_conditionvar();
+            $qrespcondition->set_conditionvar($qconditionvar);
+            $qvarequal = new cc_assignment_conditionvar_varequaltype($ident);
+            $qconditionvar->set_varequal($qvarequal);
+            $qvarequal->set_respident($this->qresponse_lid->get_ident());
+
+            $qdisplayfeedback = new cc_assignment_displayfeedbacktype();
+            $qrespcondition->add_displayfeedback($qdisplayfeedback);
+            $qdisplayfeedback->set_feedbacktype(cc_qti_values::Response);
+            $qdisplayfeedback->set_linkrefid($refid);
+
+            foreach ($this->incorrect_feedbacks as $ident) {
+                $qdisplayfeedback = new cc_assignment_displayfeedbacktype();
+                $qrespcondition->add_displayfeedback($qdisplayfeedback);
+                $qdisplayfeedback->set_feedbacktype(cc_qti_values::Response);
+                $qdisplayfeedback->set_linkrefid($ident);
+            }
+        }
+    }
+}
index 3e3af90..bbc5650 100644 (file)
 
 defined('MOODLE_INTERNAL') or die('Direct access to this script is forbidden.');
 
-require_once 'cc_utils.php';
-require_once 'cc_general.php';
+require_once('cc_utils.php');
+require_once('cc_general.php');
 
 abstract class cc_xml_namespace {
     const xml = 'http://www.w3.org/XML/1998/namespace';
 }
 
 abstract class cc_qti_metadata {
-    //assesment
+    // Assessment.
     const qmd_assessmenttype       = 'qmd_assessmenttype';
     const qmd_scoretype            = 'qmd_scoretype';
     const qmd_feedbackpermitted    = 'qmd_feedbackpermitted';
@@ -40,7 +40,7 @@ abstract class cc_qti_metadata {
     const cc_maxattempts           = 'cc_maxattempts';
     const cc_profile               = 'cc_profile';
 
-    //item
+    // Items.
     const cc_weighting         = 'cc_weighting';
     const qmd_scoringpermitted = 'qmd_scoringpermitted';
     const qmd_computerscored   = 'qmd_computerscored';
@@ -698,26 +698,30 @@ class cc_assignment_conditionvar_varsubstringtype extends cc_assignment_conditio
 
 
 class cc_assignment_conditionvar_andtype extends cc_question_metadata_base {
-    protected $not = null;
-    protected $varequal = null;
+    protected $nots = array();
+    protected $varequals = array();
 
     public function set_not(cc_assignment_conditionvar_varequaltype $object) {
-        $this->not = $object;
+        $this->nots[] = $object;
     }
 
     public function set_varequal(cc_assignment_conditionvar_varequaltype $object) {
-        $this->varequal = $object;
+        $this->varequals[] = $object;
     }
 
     public function generate(XMLGenericDocument &$doc, DOMNode &$item, $namespace) {
         $node = $doc->append_new_element_ns($item, $namespace, cc_qti_tags::and_);
-        if (!empty($this->not)) {
-            $not = $doc->append_new_element_ns($node, $namespace, cc_qti_tags::not_);
-            $this->not->generate($doc, $not, $namespace);
+        if (!empty($this->nots)) {
+            foreach ($this->nots as $notv) {
+                $not = $doc->append_new_element_ns($node, $namespace, cc_qti_tags::not_);
+                $notv->generate($doc, $not, $namespace);
+            }
         }
 
-        if (!empty($this->varequal)) {
-            $this->varequal->generate($doc, $node, $namespace);
+        if (!empty($this->varequals)) {
+            foreach ($this->varequals as $varequal) {
+                $varequal->generate($doc, $node, $namespace);
+            }
         }
     }
 }
@@ -733,9 +737,9 @@ class cc_assignment_conditionvar extends cc_question_metadata_base {
      */
     protected $other = null;
     /**
-     * @var cc_assignment_conditionvar_varequaltype
+     * @var array
      */
-    protected $varequal = null;
+    protected $varequal = array();
     /**
      * @var cc_assignment_conditionvar_varsubstringtype
      */
@@ -750,7 +754,7 @@ class cc_assignment_conditionvar extends cc_question_metadata_base {
     }
 
     public function set_varequal(cc_assignment_conditionvar_varequaltype $object) {
-        $this->varequal = $object;
+        $this->varequal[] = $object;
     }
 
     public function set_varsubstring(cc_assignment_conditionvar_varsubstringtype $object) {
@@ -769,7 +773,9 @@ class cc_assignment_conditionvar extends cc_question_metadata_base {
         }
 
         if (!empty($this->varequal)) {
-            $this->varequal->generate($doc, $node, $namespace);
+            foreach ($this->varequal as $varequal) {
+                $varequal->generate($doc, $node, $namespace);
+            }
         }
 
         if (!empty($this->varsubstring)) {
@@ -1895,8 +1901,20 @@ abstract class cc_assesment_helper {
         return $qresponse_label;
     }
 
-    public static function add_response_condition() {
-
+    public static function add_response_condition($node, $title, $ident, $feedback_refid, $respident) {
+        $qrespcondition = new cc_assesment_respconditiontype();
+        $node->add_respcondition($qrespcondition);
+        //define rest of the conditions
+        $qconditionvar = new cc_assignment_conditionvar();
+        $qrespcondition->set_conditionvar($qconditionvar);
+        $qvarequal = new cc_assignment_conditionvar_varequaltype($ident);
+        $qvarequal->enable_case();
+        $qconditionvar->set_varequal($qvarequal);
+        $qvarequal->set_respident($respident);
+        $qdisplayfeedback = new cc_assignment_displayfeedbacktype();
+        $qrespcondition->add_displayfeedback($qdisplayfeedback);
+        $qdisplayfeedback->set_feedbacktype(cc_qti_values::Response);
+        $qdisplayfeedback->set_linkrefid($feedback_refid);
     }
 
     public static function add_assesment_description($rt, $content, $contenttype) {
@@ -1913,10 +1931,31 @@ abstract class cc_assesment_helper {
         $rt->set_rubric($activity_rubric);
     }
 
+    public static function add_respcondition($node, $title, $feedback_refid, $grade_value = null, $continue = false ) {
+        $qrespcondition = new cc_assesment_respconditiontype();
+        $qrespcondition->set_title($title);
+        $node->add_respcondition($qrespcondition);
+        $qrespcondition->enable_continue($continue);
+        //Add setvar if grade present
+        if ($grade_value !== null) {
+            $qsetvar = new cc_assignment_setvartype($grade_value);
+            $qrespcondition->add_setvar($qsetvar);
+        }
+        //define the condition for success
+        $qconditionvar = new cc_assignment_conditionvar();
+        $qrespcondition->set_conditionvar($qconditionvar);
+        $qother = new cc_assignment_conditionvar_othertype();
+        $qconditionvar->set_other($qother);
+        $qdisplayfeedback = new cc_assignment_displayfeedbacktype();
+        $qrespcondition->add_displayfeedback($qdisplayfeedback);
+        $qdisplayfeedback->set_feedbacktype(cc_qti_values::Response);
+        $qdisplayfeedback->set_linkrefid($feedback_refid);
+    }
+
     /**
      *
      * Enter description here ...
-     * @param unknown_type $qdoc
+     * @param XMLGenericDocument $qdoc
      * @param unknown_type $manifest
      * @param cc_assesment_section $section
      * @param unknown_type $rootpath
@@ -1932,9 +1971,12 @@ abstract class cc_assesment_helper {
         }
 
         pkg_resource_dependencies::instance()->reset();
-
-        $qids = explode(',', $qdoc->nodeValue('/activity/quiz/questions'));
-        foreach ($qids as $value) {
+        $questioncount = 0;
+        $questionforexport = 0;
+        $qids = $qdoc->nodeList('//question_instances//questionid');
+        foreach ($qids as $qid) {
+            /** @var DOMNode $qid */
+            $value = $qid->nodeValue;
             if (intval($value) == 0) {
                 continue;
             }
@@ -1942,6 +1984,7 @@ abstract class cc_assesment_helper {
             if (empty($question_node)) {
                 continue;
             }
+            ++$questionforexport;
             //process question
             //question type
             $qtype = $questions->nodeValue('qtype', $question_node);
@@ -1949,15 +1992,43 @@ abstract class cc_assesment_helper {
             switch ($qtype) {
                 case 'multichoice':
                     $single_correct_answer = (int)$questions->nodeValue('plugin_qtype_multichoice_question/multichoice/single', $question_node) > 0;
+                    //TODO: Add checking for the nunmber of valid responses
+                    //If question is marked as multi response but contains only one valid answer it
+                    //should be handle as single response - classic multichoice
                     if ($single_correct_answer) {
                         $question_processor = new cc_assesment_question_multichoice($qdoc, $questions, $manifest, $section, $question_node, $rootpath, $contextid, $outdir);
-                        $question_processor->generate();
                     } else {
-                        //TODO: implement
+                        $question_processor = new cc_assesment_question_multichoice_multiresponse($qdoc, $questions, $manifest, $section, $question_node, $rootpath, $contextid, $outdir);
+                    }
+                    $question_processor->generate();
+                    ++$questioncount;
+                break;
+                case 'truefalse':
+                    $question_processor = new cc_assesment_question_truefalse($qdoc, $questions, $manifest, $section, $question_node, $rootpath, $contextid, $outdir);
+                    $question_processor->generate();
+                    ++$questioncount;
+                break;
+                case 'essay':
+                    $question_processor = new cc_assesment_question_essay($qdoc, $questions, $manifest, $section, $question_node, $rootpath, $contextid, $outdir);
+                    $question_processor->generate();
+                    ++$questioncount;
+                break;
+                case 'shortanswer':
+                    //This is rather ambiguos since shortanswer supports partial pattern match
+                    //In order to detect pattern match we need to scan for all the responses
+                    //if at least one of the responses uses wildcards it should be treated as
+                    //pattern match, otherwise it should be simple fill in the blank
+                    if (self::has_matching_element($questions, $question_node)) {
+                        //$question_processor = new cc_assesment_question_patternmatch($qdoc, $questions, $manifest, $section, $question_node, $rootpath, $contextid, $outdir);
+                        $questionforexport--;
+                    } else {
+                        $question_processor = new cc_assesment_question_sfib($qdoc, $questions, $manifest, $section, $question_node, $rootpath, $contextid, $outdir);
+                    }
+                    if (!empty($question_processor)) {
+                        $question_processor->generate();
+                        ++$questioncount;
                     }
-                ;
                 break;
-
                 default:
                     ;
                 break;
@@ -1966,7 +2037,28 @@ abstract class cc_assesment_helper {
         }
 
         //return dependencies
-        return pkg_resource_dependencies::instance()->get_deps();
+        return ($questioncount == 0) || ($questioncount != $questionforexport)?
+               false: pkg_resource_dependencies::instance()->get_deps();
+    }
+
+    /**
+     *
+     * Checks if question has matching element
+     * @param XMLGenericDocument $questions
+     * @param object $question_node
+     * @return bool
+     */
+    public static function has_matching_element(XMLGenericDocument $questions, $question_node) {
+        $answers = $questions->nodeList('plugin_qtype_shortanswer_question//answertext', $question_node);
+        $result = false;
+        foreach ($answers as $answer) {
+            $prepare = str_replace('\*', '\#', $answer->nodeValue);
+            $result = (strpos($prepare, '*') !== false);
+            if ($result) {
+                break;
+            }
+        }
+        return $result;
     }
 
 }
@@ -2085,6 +2177,11 @@ class cc_assesment_question_proc_base {
             if ($weighting_value > 1) {
                 $this->qmetadata->set_weighting($weighting_value);
             }
+            //Get category
+            $question_category = $this->questions->nodeValue('../../name', $this->question_node);
+            if (!empty($question_category)) {
+                $this->qmetadata->set_category($question_category);
+            }
             $rts = new cc_assesment_itemmetadata();
             $rts->add_metadata($this->qmetadata);
             $this->qitem->set_itemmetadata($rts);
@@ -2169,14 +2266,14 @@ class cc_assesment_question_multichoice extends cc_assesment_question_proc_base
         $this->qtype = cc_qti_profiletype::multiple_choice;
 
         /**
-        *
-        * What is needed is a maximum grade value taken from the answer fraction
-        * It is supposed to always be between 1 and 0 in decimal representation,
-        * however that is not always the case so a change in test was needed
-        * but since we support here one correct answer type
-        * correct answer would always have to be 1
-        */
-        $correct_answer_node = $this->questions->node("plugin_qtype_multichoice_question/answers/answer[fraction!=0.0000000]", $this->question_node);
+         *
+         * What is needed is a maximum grade value taken from the answer fraction
+         * It is supposed to always be between 1 and 0 in decimal representation,
+         * however that is not always the case so a change in test was needed
+         * but since we support here one correct answer type
+         * correct answer would always have to be 1
+         */
+        $correct_answer_node = $this->questions->node("plugin_qtype_multichoice_question/answers/answer[fraction > 0]", $this->question_node);
         if (empty($correct_answer_node)) {
             throw new RuntimeException('No correct answer!');
         }
@@ -2362,3 +2459,193 @@ class cc_assesment_question_multichoice extends cc_assesment_question_proc_base
         }
     }
 }
+
+class cc_assesment_question_multichoice_multiresponse extends cc_assesment_question_proc_base {
+    /**
+     * @var DOMNodeList
+     */
+    protected $correct_answers = null;
+
+    public function __construct($quiz, $questions, $manifest, $section, $question_node, $rootpath, $contextid, $outdir) {
+        parent::__construct($quiz, $questions, $manifest, $section, $question_node, $rootpath, $contextid, $outdir);
+        $this->qtype = cc_qti_profiletype::multiple_response;
+
+        $correct_answer_nodes = $this->questions->nodeList("plugin_qtype_multichoice_question/answers/answer[fraction > 0]", $this->question_node);
+        if ($correct_answer_nodes->length == 0) {
+            throw new RuntimeException('No correct answer!');
+        }
+        $this->correct_answers = $correct_answer_nodes;
+        //$this->correct_answer_node_id = $this->questions->nodeValue('@id', $correct_answer_node);
+        $maximum_quiz_grade = (int)$this->quiz->nodeValue('/activity/quiz/grade');
+        $this->total_grade_value = ($maximum_quiz_grade + 1).'.0000000';
+    }
+
+    public function on_generate_answers() {
+        //add responses holder
+        $qresponse_lid = new cc_response_lidtype();
+        $this->qresponse_lid = $qresponse_lid;
+        $this->qpresentation->set_response_lid($qresponse_lid);
+        $qresponse_choice = new cc_assesment_render_choicetype();
+        $qresponse_lid->set_render_choice($qresponse_choice);
+        //Mark that question has more than one correct answer
+        $qresponse_lid->set_rcardinality(cc_qti_values::Multiple);
+        //are we to shuffle the responses?
+        $shuffle_answers = (int)$this->quiz->nodeValue('/activity/quiz/shuffleanswers') > 0;
+        $qresponse_choice->enable_shuffle($shuffle_answers);
+        $answerlist = array();
+        $qa_responses = $this->questions->nodeList('plugin_qtype_multichoice_question/answers/answer', $this->question_node);
+        foreach ($qa_responses as $node) {
+            $answer_content = $this->questions->nodeValue('answertext', $node);
+            $answer_grade_fraction = (float)$this->questions->nodeValue('fraction', $node);
+            $result = cc_helpers::process_linked_files( $answer_content,
+                                                        $this->manifest,
+                                                        $this->rootpath,
+                                                        $this->contextid,
+                                                        $this->outdir);
+            $qresponse_label = cc_assesment_helper::add_answer( $qresponse_choice,
+                                                                $result[0],
+                                                                cc_qti_values::htmltype);
+            pkg_resource_dependencies::instance()->add($result[1]);
+            $answer_ident = $qresponse_label->get_ident();
+            $feedback_ident = $answer_ident.'_fb';
+            //add answer specific feedbacks if not empty
+            $content = $this->questions->nodeValue('feedback', $node);
+            if (!empty($content)) {
+                $result = cc_helpers::process_linked_files( $content,
+                                                            $this->manifest,
+                                                            $this->rootpath,
+                                                            $this->contextid,
+                                                            $this->outdir);
+
+
+                cc_assesment_helper::add_feedback( $this->qitem,
+                                                    $result[0],
+                                                    cc_qti_values::htmltype,
+                                                    $feedback_ident);
+
+                pkg_resource_dependencies::instance()->add($result[1]);
+
+            }
+            $answerlist[$answer_ident] = array($feedback_ident, ($answer_grade_fraction > 0));
+        }
+
+        $this->answerlist = $answerlist;
+
+    }
+
+    public function on_generate_feedbacks() {
+        parent::on_generate_feedbacks();
+        //Question combined feedbacks
+        $correct_question_fb = $this->questions->nodeValue('plugin_qtype_multichoice_question/multichoice/correctfeedback', $this->question_node);
+        $incorrect_question_fb = $this->questions->nodeValue('plugin_qtype_multichoice_question/multichoice/incorrectfeedback', $this->question_node);
+        if (empty($correct_question_fb)) {
+            //Hardcode some text for now
+            $correct_question_fb = 'Well done!';
+        }
+        if (empty($incorrect_question_fb)) {
+            //Hardcode some text for now
+            $incorrect_question_fb = 'Better luck next time!';
+        }
+
+        $proc = array('correct_fb' => $correct_question_fb, 'incorrect_fb' => $incorrect_question_fb);
+        foreach ($proc as $ident => $content) {
+            if (empty($content)) {
+                continue;
+            }
+            $result = cc_helpers::process_linked_files( $content,
+                                                        $this->manifest,
+                                                        $this->rootpath,
+                                                        $this->contextid,
+                                                        $this->outdir);
+
+            cc_assesment_helper::add_feedback( $this->qitem,
+                                                $result[0],
+                                                cc_qti_values::htmltype,
+                                                $ident);
+
+            pkg_resource_dependencies::instance()->add($result[1]);
+            if ($ident == 'correct_fb') {
+                $this->correct_feedbacks[$ident] = $ident;
+            } else {
+                $this->incorrect_feedbacks[$ident] = $ident;
+            }
+        }
+
+    }
+
+    public function on_generate_response_processing() {
+        parent::on_generate_response_processing();
+
+        //respconditions
+        /**
+        * General unconditional feedback must be added as a first respcondition
+        * without any condition and just displayfeedback (if exists)
+        */
+        cc_assesment_helper::add_respcondition( $this->qresprocessing,
+                                                'General feedback',
+                                                $this->general_feedback,
+                                                null,
+                                                true
+                                               );
+
+        //success condition
+        /**
+        * For all question types outside of the Essay question, scoring is done in a
+        * single <respcondition> with a continue flag set to No. The outcome is always
+        * a variable named SCORE which value must be set to 100 in case of correct answer.
+        * Partial scores (not 0 or 100) are not supported.
+        */
+        $qrespcondition = new cc_assesment_respconditiontype();
+        $qrespcondition->set_title('Correct');
+        $this->qresprocessing->add_respcondition($qrespcondition);
+        $qrespcondition->enable_continue(false);
+        $qsetvar = new cc_assignment_setvartype(100);
+        $qrespcondition->add_setvar($qsetvar);
+        //define the condition for success
+        $qconditionvar = new cc_assignment_conditionvar();
+        $qrespcondition->set_conditionvar($qconditionvar);
+        //create root and condition
+        $qandcondition = new cc_assignment_conditionvar_andtype();
+        $qconditionvar->set_and($qandcondition);
+        foreach ($this->answerlist as $ident => $refid) {
+            $qvarequal = new cc_assignment_conditionvar_varequaltype($ident);
+            $qvarequal->enable_case();
+            if ($refid[1]) {
+                $qandcondition->set_varequal($qvarequal);
+            } else {
+                $qandcondition->set_not($qvarequal);
+            }
+            $qvarequal->set_respident($this->qresponse_lid->get_ident());
+        }
+
+        $qdisplayfeedback = new cc_assignment_displayfeedbacktype();
+        $qrespcondition->add_displayfeedback($qdisplayfeedback);
+        $qdisplayfeedback->set_feedbacktype(cc_qti_values::Response);
+        //TODO: this needs to be fixed
+        reset($this->correct_feedbacks);
+        $ident = key($this->correct_feedbacks);
+        $qdisplayfeedback->set_linkrefid($ident);
+
+
+        //rest of the conditions
+        foreach ($this->answerlist as $ident => $refid) {
+            cc_assesment_helper::add_response_condition( $this->qresprocessing,
+                                                         'Incorrect feedback',
+                                                         $refid[0],
+                                                         $this->general_feedback,
+                                                         $this->qresponse_lid->get_ident()
+                                                       );
+        }
+
+        //Final element for incorrect feedback
+        reset($this->incorrect_feedbacks);
+        $ident = key($this->incorrect_feedbacks);
+        cc_assesment_helper::add_respcondition( $this->qresprocessing,
+                                                'Incorrect feedback',
+                                                $ident,
+                                                0
+                                              );
+
+    }
+
+}
diff --git a/backup/cc/cc_lib/cc_converter_folder.php b/backup/cc/cc_lib/cc_converter_folder.php
new file mode 100644 (file)
index 0000000..bbdeeb1
--- /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/>.
+/**
+ * @package    backup-convert
+ * @subpackage cc-library
+ * @copyright  2012 Darko Miletic <dmiletic@moodlerooms.com>
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+require_once('cc_converters.php');
+require_once('cc_general.php');
+
+class cc_converter_folder extends cc_converter {
+
+    public function __construct(cc_i_item &$item, cc_i_manifest &$manifest, $rootpath, $path) {
+        $this->defaultfile = 'folder.xml';
+        parent::__construct($item, $manifest, $rootpath, $path);
+    }
+
+    public function convert($outdir) {
+        $resitem = new cc_item();
+        $resitem->title = $this->doc->nodeValue('/activity/folder/name');
+        $this->item->add_child_item($resitem);
+
+        $contextid = $this->doc->nodeValue('/activity/@contextid');
+        cc_helpers::handle_static_content($this->manifest,
+                                          $this->rootpath,
+                                          $contextid,
+                                          $outdir);
+
+        return true;
+    }
+
+}
+
index 343f3a4..daf32bb 100644 (file)
@@ -1,12 +1,36 @@
 <?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/>.
 
-require_once 'cc_converters.php';
-require_once 'cc_general.php';
-require_once 'cc_asssesment.php';
+/**
+ * @package    backup-convert
+ * @subpackage cc-library
+ * @copyright  2012 Darko Miletic <dmiletic@moodlerooms.com>
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+require_once('cc_converters.php');
+require_once('cc_general.php');
+require_once('cc_asssesment.php');
+require_once('cc_assesment_truefalse.php');
+require_once('cc_assesment_essay.php');
+require_once('cc_assesment_sfib.php');
 
 class cc_converter_quiz extends cc_converter {
 
-    public function __construct(cc_i_item &$item, cc_i_manifest &$manifest, $rootpath, $path){
+    public function __construct(cc_i_item &$item, cc_i_manifest &$manifest, $rootpath, $path) {
         $this->cc_type     = cc_version11::assessment;
         $this->defaultfile = 'quiz.xml';
         $this->defaultname = assesment11_resurce_file::deafultname;
@@ -18,23 +42,23 @@ class cc_converter_quiz extends cc_converter {
         $title = $this->doc->nodeValue('/activity/quiz/name');
         $rt->set_title($title);
 
-        //metadata
+        // Metadata.
         $metadata = new cc_assesment_metadata();
         $rt->set_metadata($metadata);
         $metadata->enable_feedback();
         $metadata->enable_hints();
         $metadata->enable_solutions();
-        //attempts
+        // Attempts.
         $max_attempts = (int)$this->doc->nodeValue('/activity/quiz/attempts_number');
         if ($max_attempts > 0) {
-            //qti does not support number of specific attempts bigger than 5 (??)
+            // Qti does not support number of specific attempts bigger than 5 (??)
             if ($max_attempts > 5) {
                 $max_attempts = cc_qti_values::unlimited;
             }
             $metadata->set_maxattempts($max_attempts);
         }
-        //timelimit must be converted into minutes
-        $timelimit = (int)floor((int)$this->doc->nodeValue('/activity/quiz/timelimit')/60);
+        // Time limit must be converted into minutes.
+        $timelimit = (int)floor((int)$this->doc->nodeValue('/activity/quiz/timelimit') / 60);
         if ($timelimit > 0) {
             $metadata->set_timelimit($timelimit);
             $metadata->enable_latesubmissions(false);
@@ -48,21 +72,26 @@ class cc_converter_quiz extends cc_converter {
                                                     $outdir);
         cc_assesment_helper::add_assesment_description($rt, $result[0], cc_qti_values::htmltype);
 
-        //section
+        // Section.
         $section = new cc_assesment_section();
         $rt->set_section($section);
 
-        //Process the actual questions
+        // Process the actual questions.
         $ndeps = cc_assesment_helper::process_questions($this->doc,
                                                         $this->manifest,
                                                         $section,
                                                         $this->rootpath,
                                                         $contextid,
                                                         $outdir);
-        //store any additional dependencies
+        if ($ndeps === false) {
+            // No exportable questions in quiz or quiz has no questions
+            // so just skip it.
+            return true;
+        }
+        // Store any additional dependencies.
         $deps = array_merge($result[1], $ndeps);
 
-        //store everything
+        // Store everything.
         $this->store($rt, $outdir, $title, $deps);
         return true;
     }
index 6293c95..cbbc706 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/>.
 /**
-* @package    backup-convert
-* @subpackage cc-library
-* @copyright  2011 Darko Miletic <dmiletic@moodlerooms.com>
-* @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
-*/
+ * @package    backup-convert
+ * @subpackage cc-library
+ * @copyright  2011 Darko Miletic <dmiletic@moodlerooms.com>
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
 
-require_once 'cc_converters.php';
-require_once 'cc_general.php';
+require_once('cc_converters.php');
+require_once('cc_general.php');
 
 class cc_converter_resource extends cc_converter {
 
-    public function __construct(cc_i_item &$item, cc_i_manifest &$manifest, $rootpath, $path){
+    public function __construct(cc_i_item &$item, cc_i_manifest &$manifest, $rootpath, $path) {
         $this->cc_type     = cc_version11::webcontent;
         $this->defaultfile = 'resource.xml';
         parent::__construct($item, $manifest, $rootpath, $path);
@@ -40,7 +40,7 @@ class cc_converter_resource extends cc_converter {
                                                    $outdir);
         $deps = null;
         $resvalue = null;
-        foreach ($files as $vfile => $values) {
+        foreach ($files as $values) {
             if ($values[2]) {
                 $resvalue = $values[0];
                 break;
@@ -52,6 +52,9 @@ class cc_converter_resource extends cc_converter {
         $resitem->title = $title;
         $this->item->add_child_item($resitem);
 
+        // Checking the visibility.
+        $this->manifest->update_instructoronly($resvalue, !$this->is_visible());
+
         return true;
     }
 
index 26e6d37..2584bbb 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/>.
 /**
-* @package    backup-convert
-* @subpackage cc-library
-* @copyright  2011 Darko Miletic <dmiletic@moodlerooms.com>
-* @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
-*/
+ * @package    backup-convert
+ * @subpackage cc-library
+ * @copyright  2011 Darko Miletic <dmiletic@moodlerooms.com>
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
 
-require_once 'cc_interfaces.php';
+require_once('cc_interfaces.php');
 
 abstract class cc_converter {
     /**
@@ -81,7 +81,7 @@ abstract class cc_converter {
      * @param  string $path
      * @throws InvalidArgumentException
      */
-    public function __construct(cc_i_item &$item, cc_i_manifest &$manifest, $rootpath, $path){
+    public function __construct(cc_i_item &$item, cc_i_manifest &$manifest, $rootpath, $path) {
         $rpath = realpath($rootpath);
         if (empty($rpath)) {
             throw new InvalidArgumentException('Invalid path!');
@@ -110,6 +110,21 @@ abstract class cc_converter {
      */
     abstract public function convert($outdir);
 
+    /**
+     *
+     * Is the element visible in the course?
+     * @throws RuntimeException
+     * @return bool
+     */
+    protected function is_visible() {
+        $tdoc = new XMLGenericDocument();
+        if (!$tdoc->load($this->path . DIRECTORY_SEPARATOR . 'module.xml')) {
+            throw new RuntimeException('File does not exist!');
+        }
+        $visible = (int)$tdoc->nodeValue('/module/visible');
+        return ($visible > 0);
+    }
+
     /**
      *
      * Stores any files that need to be stored
@@ -120,6 +135,7 @@ abstract class cc_converter {
         if ( $doc->saveTo($rtp) ) {
             $resource = new cc_resource($rdir->rootdir(), $this->defaultname, $rdir->dirname(true));
             $resource->dependency = empty($deps) ? array() : $deps;
+            $resource->instructoronly = !$this->is_visible();
             $res = $this->manifest->add_resource($resource, null, $this->cc_type);
             $resitem = new cc_item();
             $resitem->attach_resource($res[0]);
index 01dbb1f..ba426ee 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/>.
 /**
-* Manifest management
-*
-* @package    backup-convert
-* @subpackage cc-library
-* @copyright  2011 Darko Miletic <dmiletic@moodlerooms.com>
-* @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
-*/
-
-
-require_once 'cc_utils.php';
-require_once 'xmlbase.php';
-require_once 'cc_resources.php';
-require_once 'cc_version_base.php';
-require_once 'gral_lib/pathutils.php';
+ * Manifest management
+ *
+ * @package    backup-convert
+ * @subpackage cc-library
+ * @copyright  2011 Darko Miletic <dmiletic@moodlerooms.com>
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
 
+require_once('cc_utils.php');
+require_once('xmlbase.php');
+require_once('cc_resources.php');
+require_once('cc_version_base.php');
+require_once('gral_lib/pathutils.php');
 
 /**
  * Manifest Class
@@ -44,16 +42,15 @@ class cc_manifest extends XMLGenericDocument implements cc_i_manifest {
     private $ares                   = array();
     private $mainidentifier         = null;
 
-    public function __construct($ccver = cc_version::v1,$activemanifest=null,
-                        $parentmanifest=null,$parentparentmanifest=null) {
+    public function __construct($ccver = cc_version::v1, $activemanifest=null,
+                        $parentmanifest=null, $parentparentmanifest=null) {
 
-        if (is_int($ccver)){
+        if (is_int($ccver)) {
             $this->ccversion=$ccver;
             $classname = "cc_version{$ccver}";
             $this->ccobj = new $classname;
-            parent::__construct('UTF-8',true);
-        } else
-        if (is_object($ccver) && (get_class($ccver)=='cc_manifest')){
+            parent::__construct('UTF-8', true);
+        } else if (is_object($ccver) && (get_class($ccver)=='cc_manifest')) {
             $this->doc = $ccver->doc;
             $this->rootmanifest = $ccver->rootmanifest;
             $this->activemanifest = $activemanifest;
@@ -65,19 +62,14 @@ class cc_manifest extends XMLGenericDocument implements cc_i_manifest {
         }
     }
 
-    public function __destruct() {
-        parent::__destruct();
-    }
-
-
     /**
      * Register Namespace for use XPATH
      *
      */
-    public function register_namespaces_for_xpath(){
+    public function register_namespaces_for_xpath() {
         $scnam = $this->activemanifest->get_cc_namespaces();
-        foreach ($scnam as $key => $value){
-            $this->registerNS($key,$value);
+        foreach ($scnam as $key => $value) {
+            $this->registerNS($key, $value);
         }
     }
 
@@ -94,11 +86,11 @@ class cc_manifest extends XMLGenericDocument implements cc_i_manifest {
      *
      * @param cc_i_metadata_manifest $met
      */
-    public function add_metadata_manifest (cc_i_metadata_manifest $met){
+    public function add_metadata_manifest(cc_i_metadata_manifest $met) {
         $metanode = $this->node("//imscc:manifest[@identifier='".
                                 $this->activemanifest->manifestID().
                                 "']/imscc:metadata");
-        $nmeta = $this->activemanifest->create_metadata_node($met,$this->doc,$metanode);
+        $nmeta = $this->activemanifest->create_metadata_node($met, $this->doc, $metanode);
         $metanode->appendChild($nmeta);
     }
 
@@ -109,20 +101,18 @@ class cc_manifest extends XMLGenericDocument implements cc_i_manifest {
      * @param cc_i_metadata_resource $met
      * @param string $identifier
      */
-    public function add_metadata_resource (cc_i_metadata_resource $met,$identifier){
-       $metanode = $this->node("//imscc:resource".
-                     "[@identifier='".
-                     $identifier.
-                     "']");
-       $metanode2 = $this->node("//imscc:resource".
-                     "[@identifier='".
-                     $identifier.
-                     "']/imscc:file");
-       $dnode  = $this->doc->createElementNS($this->ccnamespaces['imscc'], "metadata");
-
-       $metanode->insertBefore($dnode,$metanode2);
-
-       $this->activemanifest->create_metadata_resource_node($met,$this->doc,$dnode);
+    public function add_metadata_resource(cc_i_metadata_resource $met, $identifier) {
+        $metanode  = $this->node("//imscc:resource".
+            "[@identifier='".
+            $identifier.
+            "']");
+        $metanode2 = $this->node("//imscc:resource".
+            "[@identifier='".
+            $identifier.
+            "']/imscc:file");
+        $nspaces   = $this->activemanifest->get_cc_namespaces();
+        $dnode     = $this->append_new_element_ns($metanode2, $nspaces['imscc'], 'metadata');
+        $this->activemanifest->create_metadata_resource_node($met, $this->doc, $dnode);
     }
 
 
@@ -133,45 +123,56 @@ class cc_manifest extends XMLGenericDocument implements cc_i_manifest {
      * @param string $identifier
      * @param string $filename
      */
-    public function add_metadata_file (cc_i_metadata_file $met,$identifier,$filename){
+    public function add_metadata_file(cc_i_metadata_file $met, $identifier, $filename) {
 
-        if (empty($met) || empty($identifier) || empty($filename)){
+        if (empty($met) || empty($identifier) || empty($filename)) {
             throw new Exception('Try to add a metadata file with nulls values given!');
         }
 
         $metanode = $this->node("//imscc:resource".
-                     "[@identifier='".
-                     $identifier.
-                     "']/imscc:file".
-                     "[@href='".
-                     $filename.
-                     "']");
+            "[@identifier='".
+            $identifier.
+            "']/imscc:file".
+            "[@href='".
+            $filename.
+            "']");
 
-       $dnode  = $this->doc->createElementNS($this->ccnamespaces['imscc'], "metadata");
+        $nspaces = $this->activemanifest->get_cc_namespaces();
+        $dnode   = $this->doc->createElementNS($nspaces['imscc'], "metadata");
 
-       $metanode->appendChild($dnode);
+        $metanode->appendChild($dnode);
 
-       $this->activemanifest->create_metadata_file_node($met,$this->doc,$dnode);
+        $this->activemanifest->create_metadata_file_node($met, $this->doc, $dnode);
     }
 
 
-    public function on_create (){
+    public function on_create() {
         $this->activemanifest = cc_builder_creator::factory($this->ccversion);
         $this->rootmanifest = $this->activemanifest;
         $result = $this->activemanifest->create_manifest($this->doc);
         $this->register_namespaces_for_xpath();
         return $result;
+    }
 
+    public function get_relative_base_path() {
+        return $this->activemanifest->base();
     }
 
+    public function parent_manifest() {
+        return new cc_manifest($this, $this->parentmanifest, $this->parentparentmanifest);
+    }
 
-    public function get_relative_base_path() {return $this->activemanifest->base();}
-    public function parent_manifest () {return new cc_manifest($this,$this->parentmanifest,$this->parentparentmanifest);}
-    public function root_manifest   () {return new cc_manifest($this,$this->rootmanifest);}
-    public function manifestID     () {return $this->activemanifest->manifestID();}
-    public function get_manifest_namespaces() {return $this->rootmanifest->get_cc_namespaces(); }
+    public function root_manifest() {
+        return new cc_manifest($this, $this->rootmanifest);
+    }
 
+    public function manifestID() {
+        return $this->activemanifest->manifestID();
+    }
 
+    public function get_manifest_namespaces() {
+        return $this->rootmanifest->get_cc_namespaces();
+    }
 
     /**
      * Add a new organization
@@ -179,28 +180,24 @@ class cc_manifest extends XMLGenericDocument implements cc_i_manifest {
      * @param cc_i_organization $org
      */
     public function add_new_organization(cc_i_organization &$org) {
-        $norg = $this->activemanifest->create_organization_node($org,$this->doc);
+        $norg    = $this->activemanifest->create_organization_node($org, $this->doc);
         $orgnode = $this->node("//imscc:manifest[@identifier='".
-                                $this->activemanifest->manifestID().
-                                "']/imscc:organizations");
+            $this->activemanifest->manifestID().
+            "']/imscc:organizations");
         $orgnode->appendChild($norg);
     }
 
-
-
     public function get_resources($searchspecific='') {
         $reslist = $this->get_resource_list($searchspecific);
         $resourcelist = array();
         foreach ($reslist as $resourceitem) {
-            $resourcelist[]=new cc_resource($this, $resourceitem);
+            $resourcelist[] = new cc_resource($this, $resourceitem);
         }
         return $resourcelist;
     }
 
-
-
     public function get_cc_namespace_path($nsname) {
-        if (is_string($nsname) && (!empty($nsname))){
+        if (is_string($nsname) && (!empty($nsname))) {
             $scnam = $this->activemanifest->get_cc_namespaces();
             return $scnam[$nsname];
         }
@@ -208,24 +205,22 @@ class cc_manifest extends XMLGenericDocument implements cc_i_manifest {
     }
 
 
-    public function get_resource_list($searchspecific=''){
+    public function get_resource_list($searchspecific = '') {
         return $this->nodeList("//imscc:manifest[@identifier='".
                             $this->activemanifest->manifestID().
                             "']/imscc:resources/imscc:resource".$searchspecific);
     }
 
-
-    public function on_load (){
+    public function on_load() {
         $this->register_namespaces_for_xpath();
         $this->fill_manifest();
         return true;
     }
 
-    public function on_save (){
+    public function on_save() {
         return true;
     }
 
-
     /**
      * Add a resource to the manifest
      *
@@ -234,30 +229,21 @@ class cc_manifest extends XMLGenericDocument implements cc_i_manifest {
      * @param string $type
      * @return array
      */
-    public function add_resource (cc_i_resource $res, $identifier=null, $type='webcontent'){
+    public function add_resource(cc_i_resource $res, $identifier = null, $type = 'webcontent') {
 
-        if (!$this->ccobj->valid($type)){
-             throw new Exception("Type invalid...");
+        if (!$this->ccobj->valid($type)) {
+            throw new Exception("Type invalid...");
         }
 
-        if (is_null($res)){
+        if ($res == null) {
             throw new Exception('Invalid Resource or dont give it');
         }
-        $rst = null;
-
-        if (is_string($res)){
-            $rst = new cc_resource($this->filePath(), $res);
-            if (is_string($identifier)){
-                $rst->identifier = $identifier;
-            }
-        } else {
-            $rst = $res;
-        }
+        $rst = $res;
 
-        //TODO: This has to be reviewed since it does not handle properly mutiple file
-        //      dependencies
+        // TODO: This has to be reviewed since it does not handle multiple files properly.
+        // Dependencies.
         if (is_object($identifier)) {
-            $this->activemanifest->create_resource_node($rst,$this->doc,$identifier);
+            $this->activemanifest->create_resource_node($rst, $this->doc, $identifier);
         } else {
             $nresnode   = null;
 
@@ -265,112 +251,105 @@ class cc_manifest extends XMLGenericDocument implements cc_i_manifest {
             if (!cc_helpers::is_html($rst->filename)) {
                 $rst->href = null;
             }
-            $this->activemanifest->create_resource_node($rst,$this->doc,$nresnode);
-
-
-            for ($i = 1 ; $i < count ($rst->files); $i++){
-                $ident = $this->get_identifier_by_filename($rst->files[$i]);
-                if(empty($ident)){
-                    $newres = new cc_resource($rst->manifestroot,$rst->files[$i],false);
-                    if (!empty($newres)) {
-                        if (!cc_helpers::is_html($rst->files[$i])) {
-                             $newres->href = null;
-                        }
-                        $newres->type = 'webcontent';
-                        $this->activemanifest->create_resource_node($newres,$this->doc,$nresnode);
-                    }
-                }
 
-            }
-            foreach ($this->activemanifest->resources as $k => $v){
-                ($k);
-                $depen = $this->check_if_exist_in_other($v->files[0]);
-                if (!empty($depen)){
-                    $this->replace_file_x_dependency($depen,$v->files[0]);
-                    // coloca aca como type = webcontent porque son archivos dependientes
-                    // quizas aqui habria q ver de que type es el que vino y segun eso, ponerlo
-                    // en associatedcontent o en webcontent
-                    $v->type = 'webcontent';
+            $this->activemanifest->create_resource_node($rst, $this->doc, $nresnode);
+            foreach ($rst->files as $file) {
+                $ident = $this->get_identifier_by_filename($file);
+                if ($ident == null) {
+                    $newres = new cc_resource($rst->manifestroot, $file);
+                    if (!cc_helpers::is_html($file)) {
+                         $newres->href = null;
+                    }
+                    $newres->type = 'webcontent';
+                    $this->activemanifest->create_resource_node($newres, $this->doc, $nresnode);
                 }
             }
         }
 
-        $tmparray = array($rst->identifier,$rst->files[0]);
+        $tmparray = array($rst->identifier, $rst->files[0]);
         return $tmparray;
     }
 
-
-
-    private function check_if_exist_in_other($name){
+    private function check_if_exist_in_other($name, $identifier) {
         $status = array();
-        foreach ($this->activemanifest->resources as $key => $value){
-            ($key);
-            for ($i=1; $i< count($value->files); $i++){
-                if ($name == $value->files[$i]){
-                    array_push($status,$value->identifier);
-                }
+        foreach ($this->activemanifest->resources as $value) {
+            if (($value->identifier != $identifier) && isset($value->files[$name])) {
+                $status[] = $value->identifier;
             }
         }
         return $status;
     }
 
-
-    private function replace_file_x_dependency($depen,$name){
-        foreach ($depen as $key => $value){
+    private function replace_file_x_dependency($depen, $name) {
+        foreach ($depen as $key => $value) {
             ($key);
-            $ident = $this->get_identifier_by_filename($name);
+            $ident                                          = $this->get_identifier_by_filename($name);
             $this->activemanifest->resources[$value]->files =
-                $this->array_remove_by_value($this->activemanifest->resources[$value]->files,$name);
-            if (!in_array($ident,$this->activemanifest->resources[$value]->dependency)){
-                array_push($this->activemanifest->resources[$value]->dependency,$ident);
+                $this->array_remove_by_value($this->activemanifest->resources[$value]->files, $name);
+            if (!in_array($ident, $this->activemanifest->resources[$value]->dependency)) {
+                array_push($this->activemanifest->resources[$value]->dependency, $ident);
             }
 
         }
         return true;
     }
 
-
-    private function get_identifier_by_filename($name){
+    private function get_identifier_by_filename($name) {
         $result = null;
-        foreach ($this->activemanifest->resources as $key => $value) {
-                if ($name == $value->files[0]){
-                    $result = $key;
-                    break;
-                }
+        if (isset($this->activemanifest->resources_ind[$name])) {
+            $result = $this->activemanifest->resources_ind[$name];
         }
         return $result;
     }
 
-
-
-    private function array_remove_by_value($arr,$value) {
-        return array_values(array_diff($arr,array($value)));
-
+    private function array_remove_by_value($arr, $value) {
+        return array_values(array_diff($arr, array($value)));
     }
 
-    private function array_remove_by_key($arr,$key) {
-        return array_values(array_diff_key($arr,array($key)));
-
+    private function array_remove_by_key($arr, $key) {
+        return array_values(array_diff_key($arr, array($key)));
     }
 
+    public function update_instructoronly($identifier, $value = false) {
+        if (isset($this->activemanifest->resources[$identifier])) {
+            $resource = $this->activemanifest->resources[$identifier];
+            $resource->instructoronly = $value;
+        }
+    }
 
     /**
      * Append the resources nodes in the Manifest
      *
      * @return DOMNode
      */
-    public function put_nodes (){
+    public function put_nodes() {
 
         $resnodestr = "//imscc:manifest[@identifier='".$this->activemanifest->manifestID().
-                          "']/imscc:resources";
+            "']/imscc:resources";
         $resnode    = $this->node($resnodestr);
 
-        foreach ($this->activemanifest->resources as $key => $node) {
-            ($key);
-            $resnode->appendChild($this->activemanifest->create_resource_node($node,$this->doc,null));
+        foreach ($this->activemanifest->resources as $k => $v) {
+            ($k);
+            $depen = $this->check_if_exist_in_other($v->files[0], $v->identifier);
+            if (!empty($depen)) {
+                $this->replace_file_x_dependency($depen, $v->files[0]);
+                $v->type = 'webcontent';
+            }
         }
-        return $resnode;
 
+        foreach ($this->activemanifest->resources as $node) {
+            $rnode = $this->activemanifest->create_resource_node($node, $this->doc, null);
+            $resnode->appendChild($rnode);
+            if ($node->instructoronly) {
+                $metafileceduc = new cc_metadata_resouce_educational();
+                $metafileceduc->set_value(intended_user_role::INSTRUCTOR);
+                $metafile = new cc_metadata_resouce();
+                $metafile->add_metadata_resource_educational($metafileceduc);
+                $this->activemanifest->create_metadata_educational($metafile, $this->doc, $rnode);
+            }
+        }
+
+        return $resnode;
     }
 }
 
index af9fd98..5764342 100644 (file)
@@ -19,7 +19,7 @@
  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 
-require_once 'cc_general.php';
+require_once('cc_general.php');
 
 class page11_resurce_file extends general_cc_file {
     protected $rootns = 'xmlns';
@@ -31,6 +31,7 @@ class page11_resurce_file extends general_cc_file {
     protected $intro = null;
 
     public function set_content($value) {
+        // We are not cleaning up this one on purpose.
         $this->content = $value;
     }
 
@@ -57,38 +58,38 @@ class page11_resurce_file extends general_cc_file {
     public function on_save() {
 
         $rns = $this->ccnamespaces[$this->rootns];
-        //Add the basic tags
+        // Add the basic tags.
         $head = $this->append_new_element_ns($this->root, $rns, 'head');
         $this->append_new_attribute_ns($head, $rns, 'profile', 'http://dublincore.org/documents/dc-html/');
 
-        //Linking Dublin Core Metadata 1.1
+        // Linking Dublin Core Metadata 1.1.
         $link_dc = $this->append_new_element_ns($head, $rns, 'link');
         $this->append_new_attribute_ns($link_dc, $rns, 'rel', 'schema.DC');
         $this->append_new_attribute_ns($link_dc, $rns, 'href', 'http://purl.org/dc/elements/1.1/');
         $link_dcterms = $this->append_new_element_ns($head, $rns, 'link');
         $this->append_new_attribute_ns($link_dcterms, $rns, 'rel', 'schema.DCTERMS');
         $this->append_new_attribute_ns($link_dcterms, $rns, 'href', 'http://purl.org/dc/terms/');
-        //Content type
+        // Content type.
         $meta_type = $this->append_new_element_ns($head, $rns, 'meta');
-        $this->append_new_attribute_ns($meta_type, $rns, 'name'   , 'DC.type'         );
-        $this->append_new_attribute_ns($meta_type, $rns, 'scheme' , 'DCTERMS.DCMIType');
-        $this->append_new_attribute_ns($meta_type, $rns, 'content', 'Text'            );
+        $this->append_new_attribute_ns($meta_type, $rns, 'name', 'DC.type');
+        $this->append_new_attribute_ns($meta_type, $rns, 'scheme', 'DCTERMS.DCMIType');
+        $this->append_new_attribute_ns($meta_type, $rns, 'content', 'Text');
 
-        //Content description
+        // Content description.
         if (!empty($this->intro)) {
-            $meta_description = $this->append_new_element_ns($head, $rns     , 'meta'          );
-            $this->append_new_attribute_ns($meta_description, $rns, 'name'   , 'DC.description');
-            $this->append_new_attribute_ns($meta_description, $rns, 'content', $this->intro    );
+            $meta_description = $this->append_new_element_ns($head, $rns, 'meta');
+            $this->append_new_attribute_ns($meta_description, $rns, 'name', 'DC.description');
+            $this->append_new_attribute_ns($meta_description, $rns, 'content', $this->intro);
         }
 
         $meta = $this->append_new_element_ns($head, $rns, 'meta');
         $this->append_new_attribute_ns($meta, $rns, 'http-equiv', 'Content-type');
         $this->append_new_attribute_ns($meta, $rns, 'content', 'text/html; charset=UTF-8');
-        //set the title
+        // Set the title.
         $title = $this->append_new_element_ns($head, $rns, 'title', $this->title);
         $body = $this->append_new_element_ns($this->root, $rns, 'body');
-        //We are unable to use DOM for embedding HTML due to numerous content errors
-        //Therefore we place a dummy tag that will be later replaced with the real content
+        // We are unable to use DOM for embedding HTML due to numerous content errors.
+        // Therefore we place a dummy tag that will be later replaced with the real content.
         $this->append_new_element_ns($body, $rns, 'div', '##REPLACE##');
 
         return true;
index eb34779..d03ba25 100644 (file)
 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
 
 /**
-* @package    backup-convert
-* @subpackage cc-library
-* @copyright  2011 Darko Miletic <dmiletic@moodlerooms.com>
-* @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
-*/
-
-require_once 'cc_interfaces.php';
-require_once 'xmlbase.php';
-require_once 'gral_lib/pathutils.php';
-require_once 'gral_lib/ccdependencyparser.php';
-require_once 'cc_version_base.php';
-require_once 'cc_version1.php';
-require_once 'cc_manifest.php';
+ * @package    backup-convert
+ * @subpackage cc-library
+ * @copyright  2011 Darko Miletic <dmiletic@moodlerooms.com>
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+require_once('cc_interfaces.php');
+require_once('xmlbase.php');
+require_once('gral_lib/pathutils.php');
+require_once