Merge branch 'MDL-55071-rebased' of git://github.com/danpoltawski/moodle
authorDan Poltawski <dan@moodle.com>
Mon, 26 Sep 2016 09:28:12 +0000 (10:28 +0100)
committerDan Poltawski <dan@moodle.com>
Mon, 26 Sep 2016 09:28:12 +0000 (10:28 +0100)
792 files changed:
.eslintignore
.stylelintignore
.stylelintrc
Gruntfile.js
admin/phpinfo.php
admin/registration/forms.php
admin/search.php
admin/settings.php
admin/settings/appearance.php
admin/settings/grades.php
admin/settings/plugins.php
admin/settings/server.php
admin/settings/users.php
admin/templates/setting.mustache [new file with mode: 0644]
admin/templates/setting_configcheckbox.mustache [new file with mode: 0644]
admin/templates/setting_configcolourpicker.mustache [new file with mode: 0644]
admin/templates/setting_configdirectory.mustache [new file with mode: 0644]
admin/templates/setting_configduration.mustache [new file with mode: 0644]
admin/templates/setting_configempty.mustache [new file with mode: 0644]
admin/templates/setting_configexecutable.mustache [new file with mode: 0644]
admin/templates/setting_configfile.mustache [new file with mode: 0644]
admin/templates/setting_confightmleditor.mustache [new file with mode: 0644]
admin/templates/setting_configmulticheckbox.mustache [new file with mode: 0644]
admin/templates/setting_configmultiselect.mustache [new file with mode: 0644]
admin/templates/setting_configpasswordunmask.mustache [new file with mode: 0644]
admin/templates/setting_configselect.mustache [new file with mode: 0644]
admin/templates/setting_configtext.mustache [new file with mode: 0644]
admin/templates/setting_configtextarea.mustache [new file with mode: 0644]
admin/templates/setting_configtime.mustache [new file with mode: 0644]
admin/templates/setting_courselist_frontpage.mustache [new file with mode: 0644]
admin/templates/setting_devicedetectregex.mustache [new file with mode: 0644]
admin/templates/setting_emoticons.mustache [new file with mode: 0644]
admin/templates/setting_flag.mustache [new file with mode: 0644]
admin/templates/setting_gradecat_combo.mustache [new file with mode: 0644]
admin/templates/setting_heading.mustache [new file with mode: 0644]
admin/templates/setting_special_calendar_weekend.mustache [new file with mode: 0644]
admin/templates/settings.mustache [new file with mode: 0644]
admin/templates/settings_search_results.mustache [new file with mode: 0644]
admin/tool/behat/tests/behat/data_generators.feature
admin/tool/lp/styles.css
admin/tool/task/renderer.php
admin/tool/task/styles.css
admin/tool/uploaduser/user_form.php
admin/upgrade.txt [new file with mode: 0644]
auth/classes/output/login.php [new file with mode: 0644]
auth/db/config.html
auth/ldap/config.html
availability/condition/completion/yui/build/moodle-availability_completion-form/moodle-availability_completion-form-debug.js
availability/condition/completion/yui/build/moodle-availability_completion-form/moodle-availability_completion-form-min.js
availability/condition/completion/yui/build/moodle-availability_completion-form/moodle-availability_completion-form.js
availability/condition/completion/yui/src/form/js/form.js
availability/condition/date/yui/build/moodle-availability_date-form/moodle-availability_date-form-debug.js
availability/condition/date/yui/build/moodle-availability_date-form/moodle-availability_date-form-min.js
availability/condition/date/yui/build/moodle-availability_date-form/moodle-availability_date-form.js
availability/condition/date/yui/src/form/js/form.js
availability/condition/grade/yui/build/moodle-availability_grade-form/moodle-availability_grade-form-debug.js
availability/condition/grade/yui/build/moodle-availability_grade-form/moodle-availability_grade-form-min.js
availability/condition/grade/yui/build/moodle-availability_grade-form/moodle-availability_grade-form.js
availability/condition/grade/yui/src/form/js/form.js
availability/condition/group/yui/build/moodle-availability_group-form/moodle-availability_group-form-debug.js
availability/condition/group/yui/build/moodle-availability_group-form/moodle-availability_group-form-min.js
availability/condition/group/yui/build/moodle-availability_group-form/moodle-availability_group-form.js
availability/condition/group/yui/src/form/js/form.js
availability/condition/grouping/yui/build/moodle-availability_grouping-form/moodle-availability_grouping-form-debug.js
availability/condition/grouping/yui/build/moodle-availability_grouping-form/moodle-availability_grouping-form-min.js
availability/condition/grouping/yui/build/moodle-availability_grouping-form/moodle-availability_grouping-form.js
availability/condition/grouping/yui/src/form/js/form.js
availability/condition/profile/yui/build/moodle-availability_profile-form/moodle-availability_profile-form-debug.js
availability/condition/profile/yui/build/moodle-availability_profile-form/moodle-availability_profile-form-min.js
availability/condition/profile/yui/build/moodle-availability_profile-form/moodle-availability_profile-form.js
availability/condition/profile/yui/src/form/js/form.js
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/meta/form.json
badges/tests/behat/award_badge.feature
blocks/activity_results/styles.css
blocks/comments/tests/behat/behat_block_comments.php
blocks/course_overview/styles.css
blocks/course_summary/tests/behat/block_course_summary_course.feature
blocks/course_summary/tests/behat/block_course_summary_frontpage.feature
blocks/messages/styles.css
blocks/navigation/styles.css
blocks/online_users/styles.css
blocks/recent_activity/styles.css
blocks/recent_activity/tests/behat/structural_changes.feature
blocks/search_forums/block_search_forums.php
blocks/search_forums/classes/output/renderer.php [new file with mode: 0644]
blocks/search_forums/classes/output/search_form.php [new file with mode: 0644]
blocks/search_forums/templates/search_form.mustache [new file with mode: 0644]
blocks/settings/styles.css
blocks/site_main_menu/styles.css
blocks/site_main_menu/tests/behat/edit_activities.feature
blocks/social_activities/styles.css
blocks/social_activities/tests/behat/edit_activities.feature
blocks/tests/behat/configure_block_throughout_site.feature
blocks/tests/behat/manage_blocks.feature
blocks/tests/behat/move_blocks.feature [new file with mode: 0644]
cache/stores/memcache/addinstanceform.php
cache/stores/memcached/addinstanceform.php
calendar/lib.php
calendar/managesubscriptions_form.php
course/classes/management_renderer.php
course/classes/output/modchooser.php [new file with mode: 0644]
course/classes/output/modchooser_item.php [new file with mode: 0644]
course/renderer.php
course/templates/modchooser.mustache [new file with mode: 0644]
course/tests/behat/course_controls.feature
course/tests/behat/course_resort.feature
course/upgrade.txt
course/yui/build/moodle-course-dragdrop/moodle-course-dragdrop-debug.js
course/yui/build/moodle-course-dragdrop/moodle-course-dragdrop-min.js
course/yui/build/moodle-course-dragdrop/moodle-course-dragdrop.js
course/yui/build/moodle-course-modchooser/moodle-course-modchooser-debug.js
course/yui/build/moodle-course-modchooser/moodle-course-modchooser-min.js
course/yui/build/moodle-course-modchooser/moodle-course-modchooser.js
course/yui/src/dragdrop/js/section.js
course/yui/src/modchooser/js/modchooser.js
enrol/ldap/settingslib.php
enrol/manual/yui/quickenrolment/assets/skins/sam/quickenrolment.css
files/renderer.php
grade/edit/tree/calculation_form.php
grade/edit/tree/index.php
grade/edit/tree/lib.php
grade/grading/form/guide/styles.css
grade/grading/form/rubric/styles.css
grade/report/grader/styles.css
grade/report/history/styles.css
grade/report/singleview/classes/local/screen/tablelike.php
grade/report/singleview/classes/local/ui/bulk_insert.php
grade/report/singleview/classes/local/ui/dropdown_attribute.php
grade/report/singleview/classes/local/ui/text_attribute.php
grade/report/singleview/styles.css
grade/report/singleview/templates/bulk_insert.mustache [new file with mode: 0644]
grade/report/singleview/templates/button.mustache [new file with mode: 0644]
grade/report/singleview/templates/dropdown_attribute.mustache [new file with mode: 0644]
grade/report/singleview/templates/text_attribute.mustache [new file with mode: 0644]
grade/report/singleview/tests/behat/bulk_insert_grades.feature
grade/report/user/styles.css
grade/templates/edit_tree.mustache [new file with mode: 0644]
grade/templates/weight_field.mustache [new file with mode: 0644]
grade/templates/weight_override_field.mustache [new file with mode: 0644]
grade/tests/behat/grade_calculated_grade_items.feature
grade/tests/behat/grade_calculated_grade_items_20150627.feature
grade/tests/behat/grade_category_validation.feature
grade/tests/behat/grade_item_validation.feature
grade/tests/behat/grade_letter_boundary.feature
grade/tests/behat/grade_letter_boundary_20160518.feature
grade/tests/behat/grade_to_pass.feature
install.php
install/css.php
lang/en/admin.php
lib/adminlib.php
lib/amd/build/event.min.js
lib/amd/build/tag.min.js
lib/amd/src/event.js
lib/amd/src/tag.js
lib/behat/behat_base.php
lib/behat/behat_field_manager.php
lib/behat/behat_files.php
lib/behat/classes/behat_selectors.php
lib/behat/form_field/behat_form_filemanager.php
lib/classes/component.php
lib/classes/cssparser.php [new file with mode: 0644]
lib/classes/output/chooser.php [new file with mode: 0644]
lib/classes/output/chooser_item.php [new file with mode: 0644]
lib/classes/output/chooser_section.php [new file with mode: 0644]
lib/classes/output/mustache_template_finder.php
lib/classes/plugin_manager.php
lib/classes/rtlcss.php [new file with mode: 0644]
lib/classes/scss.php [new file with mode: 0644]
lib/editor/atto/styles.css
lib/editor/tinymce/styles.css
lib/form/advcheckbox.php
lib/form/autocomplete.php
lib/form/button.php
lib/form/cancel.php
lib/form/checkbox.php
lib/form/dndupload.js
lib/form/duration.php
lib/form/editor.php
lib/form/filemanager.js
lib/form/filemanager.php
lib/form/filepicker.php
lib/form/form.js
lib/form/grading.php
lib/form/group.php
lib/form/modgrade.php
lib/form/password.php
lib/form/passwordunmask.php
lib/form/radio.php
lib/form/recaptcha.php
lib/form/select.php
lib/form/selectgroups.php
lib/form/selectwithlink.php
lib/form/static.php
lib/form/submit.php
lib/form/submitlink.php
lib/form/tags.php
lib/form/templatable_form_element.php [new file with mode: 0644]
lib/form/templates/editor_textarea.mustache [new file with mode: 0644]
lib/form/text.php
lib/form/textarea.php
lib/form/url.php
lib/form/warning.php
lib/formslib.php
lib/javascript-static.js
lib/moodlelib.php
lib/navigationlib.php
lib/outputactions.php
lib/outputcomponents.php
lib/outputlib.php
lib/outputrenderers.php
lib/outputrequirementslib.php
lib/php-css-parser/CSSList/AtRuleBlockList.php [new file with mode: 0644]
lib/php-css-parser/CSSList/CSSBlockList.php [new file with mode: 0644]
lib/php-css-parser/CSSList/CSSList.php [new file with mode: 0644]
lib/php-css-parser/CSSList/Document.php [new file with mode: 0644]
lib/php-css-parser/CSSList/KeyFrame.php [new file with mode: 0644]
lib/php-css-parser/Comment/Comment.php [new file with mode: 0644]
lib/php-css-parser/Comment/Commentable.php [new file with mode: 0644]
lib/php-css-parser/OutputFormat.php [new file with mode: 0644]
lib/php-css-parser/Parser.php [new file with mode: 0644]
lib/php-css-parser/Parsing/OutputException.php [new file with mode: 0644]
lib/php-css-parser/Parsing/SourceException.php [new file with mode: 0644]
lib/php-css-parser/Parsing/UnexpectedTokenException.php [new file with mode: 0644]
lib/php-css-parser/Property/AtRule.php [new file with mode: 0644]
lib/php-css-parser/Property/CSSNamespace.php [new file with mode: 0644]
lib/php-css-parser/Property/Charset.php [new file with mode: 0644]
lib/php-css-parser/Property/Import.php [new file with mode: 0644]
lib/php-css-parser/Property/Selector.php [new file with mode: 0644]
lib/php-css-parser/Renderable.php [new file with mode: 0644]
lib/php-css-parser/Rule/Rule.php [new file with mode: 0644]
lib/php-css-parser/RuleSet/AtRuleSet.php [new file with mode: 0644]
lib/php-css-parser/RuleSet/DeclarationBlock.php [new file with mode: 0644]
lib/php-css-parser/RuleSet/RuleSet.php [new file with mode: 0644]
lib/php-css-parser/Settings.php [new file with mode: 0644]
lib/php-css-parser/Value/CSSFunction.php [new file with mode: 0644]
lib/php-css-parser/Value/CSSString.php [new file with mode: 0644]
lib/php-css-parser/Value/Color.php [new file with mode: 0644]
lib/php-css-parser/Value/PrimitiveValue.php [new file with mode: 0644]
lib/php-css-parser/Value/RuleValueList.php [new file with mode: 0644]
lib/php-css-parser/Value/Size.php [new file with mode: 0644]
lib/php-css-parser/Value/URL.php [new file with mode: 0644]
lib/php-css-parser/Value/Value.php [new file with mode: 0644]
lib/php-css-parser/Value/ValueList.php [new file with mode: 0644]
lib/php-css-parser/moodle_readme.txt [new file with mode: 0644]
lib/rtlcss/LICENSE [new file with mode: 0644]
lib/rtlcss/RTLCSS.php [new file with mode: 0644]
lib/rtlcss/moodle_readme.txt [new file with mode: 0644]
lib/scssphp/Base/Range.php [new file with mode: 0644]
lib/scssphp/Block.php [new file with mode: 0644]
lib/scssphp/Colors.php [new file with mode: 0644]
lib/scssphp/Compiler.php [new file with mode: 0644]
lib/scssphp/Compiler/Environment.php [new file with mode: 0644]
lib/scssphp/Exception/CompilerException.php [new file with mode: 0644]
lib/scssphp/Exception/ParserException.php [new file with mode: 0644]
lib/scssphp/Exception/ServerException.php [new file with mode: 0644]
lib/scssphp/Formatter.php [new file with mode: 0644]
lib/scssphp/Formatter/Compact.php [new file with mode: 0644]
lib/scssphp/Formatter/Compressed.php [new file with mode: 0644]
lib/scssphp/Formatter/Crunched.php [new file with mode: 0644]
lib/scssphp/Formatter/Debug.php [new file with mode: 0644]
lib/scssphp/Formatter/Expanded.php [new file with mode: 0644]
lib/scssphp/Formatter/Nested.php [new file with mode: 0644]
lib/scssphp/Formatter/OutputBlock.php [new file with mode: 0644]
lib/scssphp/LICENSE.md [new file with mode: 0644]
lib/scssphp/Node.php [new file with mode: 0644]
lib/scssphp/Node/Number.php [new file with mode: 0644]
lib/scssphp/Parser.php [new file with mode: 0644]
lib/scssphp/Server.php [new file with mode: 0644]
lib/scssphp/Type.php [new file with mode: 0644]
lib/scssphp/Util.php [new file with mode: 0644]
lib/scssphp/Version.php [new file with mode: 0644]
lib/scssphp/moodle_readme.txt [new file with mode: 0644]
lib/templates/action_link.mustache [new file with mode: 0644]
lib/templates/action_menu.mustache [new file with mode: 0644]
lib/templates/action_menu_item.mustache [new file with mode: 0644]
lib/templates/action_menu_link.mustache [new file with mode: 0644]
lib/templates/action_menu_trigger.mustache [new file with mode: 0644]
lib/templates/actions.mustache [new file with mode: 0644]
lib/templates/chooser.mustache [new file with mode: 0644]
lib/templates/chooser_item.mustache [new file with mode: 0644]
lib/templates/help_icon.mustache [new file with mode: 0644]
lib/templates/login.mustache [new file with mode: 0644]
lib/templates/pix_icon.mustache
lib/templates/prevent_form_autofill_password.mustache [new file with mode: 0644]
lib/templates/select_time.mustache [new file with mode: 0644]
lib/templates/skip_links.mustache [new file with mode: 0644]
lib/tests/admintree_test.php
lib/tests/behat/behat_action_menu.php [new file with mode: 0644]
lib/tests/behat/behat_deprecated.php
lib/tests/behat/behat_hooks.php
lib/tests/outputrequirementslib_test.php
lib/tests/user_menu_test.php
lib/thirdpartylibs.xml
lib/upgrade.txt
lib/weblib.php
lib/yui/build/moodle-core-dragdrop/moodle-core-dragdrop-debug.js
lib/yui/build/moodle-core-dragdrop/moodle-core-dragdrop-min.js
lib/yui/build/moodle-core-dragdrop/moodle-core-dragdrop.js
lib/yui/src/dragdrop/js/dragdrop.js
login/index.php
login/index_form.html [deleted file]
login/signup_form.php
mod/assign/amd/build/grading_panel.min.js
mod/assign/amd/src/grading_panel.js
mod/assign/feedback/editpdf/styles.css
mod/assign/settings.php
mod/assign/styles.css
mod/assign/tests/locallib_test.php
mod/book/styles.css
mod/book/tool/print/print.css
mod/chat/gui_ajax/theme/bubble/chat.css
mod/chat/gui_ajax/theme/compact/chat.css
mod/chat/tests/behat/chat_course_reset.feature
mod/choice/styles.css
mod/data/styles.css
mod/data/tests/behat/required_entries.feature
mod/feedback/classes/complete_form.php
mod/feedback/styles.css
mod/feedback/tests/behat/coursemapping.feature
mod/feedback/tests/behat/multichoice.feature
mod/feedback/yui/dragdrop/dragdrop.js
mod/forum/classes/output/big_search_form.php [new file with mode: 0644]
mod/forum/classes/output/quick_search_form.php [new file with mode: 0644]
mod/forum/lib.php
mod/forum/renderer.php
mod/forum/search.php
mod/forum/styles.css
mod/forum/templates/big_search_form.mustache [new file with mode: 0644]
mod/forum/templates/quick_search_form.mustache [new file with mode: 0644]
mod/glossary/styles.css
mod/lesson/locallib.php
mod/lesson/mod_form.php
mod/lesson/styles.css [deleted file]
mod/lesson/tests/behat/lesson_student_resume.feature
mod/lesson/tests/behat/questions_images.feature
mod/lti/edit_form.php
mod/lti/mod_form.php
mod/lti/styles.css
mod/lti/tests/behat/addtool.feature
mod/lti/tests/behat/addtype.feature
mod/quiz/classes/output/edit_renderer.php
mod/quiz/classes/output/question_chooser.php [new file with mode: 0644]
mod/quiz/renderer.php
mod/quiz/styles.css
mod/quiz/templates/question_chooser.mustache [new file with mode: 0644]
mod/quiz/tests/behat/behat_mod_quiz.php
mod/quiz/tests/behat/editing_add.feature
mod/quiz/tests/behat/editing_move_by_click.feature
mod/quiz/tests/behat/editing_repaginate.feature
mod/quiz/tests/behat/editing_section_headings.feature
mod/quiz/yui/build/moodle-mod_quiz-questionchooser/moodle-mod_quiz-questionchooser-debug.js
mod/quiz/yui/build/moodle-mod_quiz-questionchooser/moodle-mod_quiz-questionchooser-min.js
mod/quiz/yui/build/moodle-mod_quiz-questionchooser/moodle-mod_quiz-questionchooser.js
mod/quiz/yui/build/moodle-mod_quiz-quizquestionbank/moodle-mod_quiz-quizquestionbank-debug.js
mod/quiz/yui/build/moodle-mod_quiz-quizquestionbank/moodle-mod_quiz-quizquestionbank-min.js
mod/quiz/yui/build/moodle-mod_quiz-quizquestionbank/moodle-mod_quiz-quizquestionbank.js
mod/quiz/yui/build/moodle-mod_quiz-randomquestion/moodle-mod_quiz-randomquestion-debug.js
mod/quiz/yui/build/moodle-mod_quiz-randomquestion/moodle-mod_quiz-randomquestion-min.js
mod/quiz/yui/build/moodle-mod_quiz-randomquestion/moodle-mod_quiz-randomquestion.js
mod/quiz/yui/build/moodle-mod_quiz-util-page/moodle-mod_quiz-util-page-debug.js
mod/quiz/yui/build/moodle-mod_quiz-util-page/moodle-mod_quiz-util-page-min.js
mod/quiz/yui/build/moodle-mod_quiz-util-page/moodle-mod_quiz-util-page.js
mod/quiz/yui/build/moodle-mod_quiz-util-slot/moodle-mod_quiz-util-slot-debug.js
mod/quiz/yui/build/moodle-mod_quiz-util-slot/moodle-mod_quiz-util-slot-min.js
mod/quiz/yui/build/moodle-mod_quiz-util-slot/moodle-mod_quiz-util-slot.js
mod/quiz/yui/src/questionchooser/js/questionchooser.js
mod/quiz/yui/src/quizquestionbank/js/quizquestionbank.js
mod/quiz/yui/src/randomquestion/js/randomquestion.js
mod/quiz/yui/src/util/js/page.js
mod/quiz/yui/src/util/js/slot.js
mod/quiz/yui/src/util/meta/util.json
mod/scorm/styles.css
mod/wiki/editors/wikieditor.php
mod/wiki/styles.css
mod/wiki/tests/behat/wiki_formats.feature
mod/workshop/styles.css
mod/workshop/tests/behat/behat_mod_workshop.php
mod/workshop/tests/behat/workshop_assessment.feature
notes/edit_form.php
question/classes/output/qbank_chooser.php [new file with mode: 0644]
question/classes/output/qbank_chooser_item.php [new file with mode: 0644]
question/editlib.php
question/renderer.php
question/templates/qbank_chooser.mustache [new file with mode: 0644]
question/type/calculated/styles.css
question/type/multichoice/styles.css
question/type/numerical/styles.css
question/upgrade.txt
question/yui/build/moodle-question-chooser/moodle-question-chooser-debug.js
question/yui/build/moodle-question-chooser/moodle-question-chooser-min.js
question/yui/build/moodle-question-chooser/moodle-question-chooser.js
question/yui/src/chooser/js/chooser.js
report/competency/styles.css
report/completion/styles.css
report/eventlist/styles.css
report/loglive/classes/renderer.php
report/loglive/yui/build/moodle-report_loglive-fetchlogs/moodle-report_loglive-fetchlogs-debug.js
report/loglive/yui/build/moodle-report_loglive-fetchlogs/moodle-report_loglive-fetchlogs-min.js
report/loglive/yui/build/moodle-report_loglive-fetchlogs/moodle-report_loglive-fetchlogs.js
report/loglive/yui/src/fetchlogs/js/fetchlogs.js
report/progress/styles.css
repository/filepicker.js
repository/tests/behat/cancel_add_file.feature
repository/upload/tests/behat/behat_repository_upload.php
tag/classes/collections_table.php
theme/boost/amd/build/alert.min.js [new file with mode: 0644]
theme/boost/amd/build/button.min.js [new file with mode: 0644]
theme/boost/amd/build/carousel.min.js [new file with mode: 0644]
theme/boost/amd/build/collapse.min.js [new file with mode: 0644]
theme/boost/amd/build/dropdown.min.js [new file with mode: 0644]
theme/boost/amd/build/form-display-errors.min.js [new file with mode: 0644]
theme/boost/amd/build/loader.min.js [new file with mode: 0644]
theme/boost/amd/build/modal.min.js [new file with mode: 0644]
theme/boost/amd/build/popover.min.js [new file with mode: 0644]
theme/boost/amd/build/scrollspy.min.js [new file with mode: 0644]
theme/boost/amd/build/tab.min.js [new file with mode: 0644]
theme/boost/amd/build/tether.min.js [new file with mode: 0644]
theme/boost/amd/build/tooltip.min.js [new file with mode: 0644]
theme/boost/amd/build/util.min.js [new file with mode: 0644]
theme/boost/amd/src/alert.js [new file with mode: 0644]
theme/boost/amd/src/button.js [new file with mode: 0644]
theme/boost/amd/src/carousel.js [new file with mode: 0644]
theme/boost/amd/src/collapse.js [new file with mode: 0644]
theme/boost/amd/src/dropdown.js [new file with mode: 0644]
theme/boost/amd/src/form-display-errors.js [new file with mode: 0644]
theme/boost/amd/src/loader.js [new file with mode: 0644]
theme/boost/amd/src/modal.js [new file with mode: 0644]
theme/boost/amd/src/popover.js [new file with mode: 0644]
theme/boost/amd/src/scrollspy.js [new file with mode: 0644]
theme/boost/amd/src/tab.js [new file with mode: 0644]
theme/boost/amd/src/tether.js [new file with mode: 0644]
theme/boost/amd/src/tooltip.js [new file with mode: 0644]
theme/boost/amd/src/util.js [new file with mode: 0644]
theme/boost/classes/admin_setting_scss_variables.php [new file with mode: 0644]
theme/boost/classes/admin_settingspage_tabs.php [new file with mode: 0644]
theme/boost/classes/autoprefixer.php [new file with mode: 0644]
theme/boost/classes/output/block_settings_renderer.php [new file with mode: 0644]
theme/boost/classes/output/core/admin_renderer.php [new file with mode: 0644]
theme/boost/classes/output/core/course_renderer.php [new file with mode: 0644]
theme/boost/classes/output/core/files_renderer.php [new file with mode: 0644]
theme/boost/classes/output/core_renderer.php [new file with mode: 0644]
theme/boost/classes/output/gradereport_history_renderer.php [new file with mode: 0644]
theme/boost/cli/import-bootswatch.php [new file with mode: 0644]
theme/boost/cli/readme_moodle.txt [new file with mode: 0644]
theme/boost/config.php [new file with mode: 0644]
theme/boost/lang/en/theme_boost.php [new file with mode: 0644]
theme/boost/layout/columns1.php [new file with mode: 0644]
theme/boost/layout/columns2.php [new file with mode: 0644]
theme/boost/layout/embedded.php [new file with mode: 0644]
theme/boost/layout/maintenance.php [new file with mode: 0644]
theme/boost/layout/secure.php [new file with mode: 0644]
theme/boost/lib.php [new file with mode: 0644]
theme/boost/pix/favicon.ico [new file with mode: 0644]
theme/boost/pix/fp/add_file.png [new file with mode: 0644]
theme/boost/pix/fp/add_file.svg [new file with mode: 0644]
theme/boost/pix/fp/alias.png [new file with mode: 0644]
theme/boost/pix/fp/alias_sm.png [new file with mode: 0644]
theme/boost/pix/fp/check.png [new file with mode: 0644]
theme/boost/pix/fp/create_folder.png [new file with mode: 0644]
theme/boost/pix/fp/create_folder.svg [new file with mode: 0644]
theme/boost/pix/fp/cross.png [new file with mode: 0644]
theme/boost/pix/fp/dnd_arrow.gif [new file with mode: 0644]
theme/boost/pix/fp/download_all.png [new file with mode: 0644]
theme/boost/pix/fp/download_all.svg [new file with mode: 0644]
theme/boost/pix/fp/help.png [new file with mode: 0644]
theme/boost/pix/fp/help.svg [new file with mode: 0644]
theme/boost/pix/fp/link.png [new file with mode: 0644]
theme/boost/pix/fp/link_sm.png [new file with mode: 0644]
theme/boost/pix/fp/logout.png [new file with mode: 0644]
theme/boost/pix/fp/logout.svg [new file with mode: 0644]
theme/boost/pix/fp/path_folder.png [new file with mode: 0644]
theme/boost/pix/fp/path_folder_rtl.png [new file with mode: 0644]
theme/boost/pix/fp/refresh.png [new file with mode: 0644]
theme/boost/pix/fp/refresh.svg [new file with mode: 0644]
theme/boost/pix/fp/search.png [new file with mode: 0644]
theme/boost/pix/fp/search.svg [new file with mode: 0644]
theme/boost/pix/fp/setting.png [new file with mode: 0644]
theme/boost/pix/fp/setting.svg [new file with mode: 0644]
theme/boost/pix/fp/view_icon_active.png [new file with mode: 0644]
theme/boost/pix/fp/view_icon_active.svg [new file with mode: 0644]
theme/boost/pix/fp/view_list_active.png [new file with mode: 0644]
theme/boost/pix/fp/view_list_active.svg [new file with mode: 0644]
theme/boost/pix/fp/view_tree_active.png [new file with mode: 0644]
theme/boost/pix/fp/view_tree_active.svg [new file with mode: 0644]
theme/boost/pix/glyphicons-halflings-white.png [new file with mode: 0644]
theme/boost/pix/glyphicons-halflings.png [new file with mode: 0644]
theme/boost/pix/header.jpg [new file with mode: 0644]
theme/boost/pix/horizontal-menu-submenu-indicator.png [new file with mode: 0644]
theme/boost/pix/mod/quiz/checkmark.png [new file with mode: 0644]
theme/boost/pix/mod/quiz/checkmark.svg [new file with mode: 0644]
theme/boost/pix/mod/quiz/flag-on.png [new file with mode: 0644]
theme/boost/pix/mod/quiz/flag-on.svg [new file with mode: 0644]
theme/boost/pix/mod/quiz/warningtriangle.png [new file with mode: 0644]
theme/boost/pix/mod/quiz/warningtriangle.svg [new file with mode: 0644]
theme/boost/pix/mod/quiz/whitecircle.png [new file with mode: 0644]
theme/boost/pix/mod/quiz/whitecircle.svg [new file with mode: 0644]
theme/boost/pix/screenshot.jpg [new file with mode: 0644]
theme/boost/pix/sprite.png [new file with mode: 0644]
theme/boost/pix/vertical-menu-submenu-indicator.png [new file with mode: 0644]
theme/boost/pix/yui2-treeview-sprite-rtl.gif [new file with mode: 0644]
theme/boost/readme_moodle.txt [new file with mode: 0644]
theme/boost/scss/bootstrap/LICENSE [new file with mode: 0644]
theme/boost/scss/bootstrap/_alert.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_animation.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_breadcrumb.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_button-group.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_buttons.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_card.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_carousel.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_close.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_code.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_custom-forms.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_custom.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_dropdown.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_forms.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_grid.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_images.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_input-group.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_jumbotron.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_list-group.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_media.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_mixins.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_modal.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_nav.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_navbar.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_normalize.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_pagination.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_popover.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_print.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_progress.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_reboot.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_responsive-embed.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_tables.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_tags.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_tooltip.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_type.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_utilities.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/_variables.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/bootstrap-flex.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/bootstrap-grid.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/bootstrap-reboot.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/bootstrap.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/mixins/_alert.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/mixins/_background-variant.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/mixins/_border-radius.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/mixins/_breakpoints.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/mixins/_buttons.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/mixins/_cards.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/mixins/_clearfix.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/mixins/_forms.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/mixins/_gradients.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/mixins/_grid-framework.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/mixins/_grid.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/mixins/_hover.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/mixins/_image.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/mixins/_list-group.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/mixins/_lists.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/mixins/_nav-divider.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/mixins/_navbar-align.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/mixins/_pagination.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/mixins/_progress.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/mixins/_pulls.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/mixins/_reset-filter.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/mixins/_reset-text.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/mixins/_resize.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/mixins/_screen-reader.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/mixins/_size.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/mixins/_tab-focus.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/mixins/_table-row.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/mixins/_tag.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/mixins/_text-emphasis.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/mixins/_text-hide.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/mixins/_text-truncate.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/utilities/_background.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/utilities/_clearfix.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/utilities/_display.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/utilities/_flex.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/utilities/_pulls.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/utilities/_screenreaders.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/utilities/_spacing.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/utilities/_text.scss [new file with mode: 0644]
theme/boost/scss/bootstrap/utilities/_visibility.scss [new file with mode: 0644]
theme/boost/scss/moodle.scss [new file with mode: 0644]
theme/boost/scss/moodle/admin.scss [new file with mode: 0644]
theme/boost/scss/moodle/backup-restore.scss [new file with mode: 0644]
theme/boost/scss/moodle/blocks.scss [new file with mode: 0644]
theme/boost/scss/moodle/bootstrap-rtl.scss [new file with mode: 0644]
theme/boost/scss/moodle/buttons.scss [new file with mode: 0644]
theme/boost/scss/moodle/calendar.scss [new file with mode: 0644]
theme/boost/scss/moodle/chat.scss [new file with mode: 0644]
theme/boost/scss/moodle/core.scss [new file with mode: 0644]
theme/boost/scss/moodle/course.scss [new file with mode: 0644]
theme/boost/scss/moodle/debug.scss [new file with mode: 0644]
theme/boost/scss/moodle/editor.scss [new file with mode: 0644]
theme/boost/scss/moodle/expendable.scss [new file with mode: 0644]
theme/boost/scss/moodle/filemanager.scss [new file with mode: 0644]
theme/boost/scss/moodle/forms.scss [new file with mode: 0644]
theme/boost/scss/moodle/grade.scss [new file with mode: 0644]
theme/boost/scss/moodle/icons.scss [new file with mode: 0644]
theme/boost/scss/moodle/message.scss [new file with mode: 0644]
theme/boost/scss/moodle/modules.scss [new file with mode: 0644]
theme/boost/scss/moodle/question.scss [new file with mode: 0644]
theme/boost/scss/moodle/reports.scss [new file with mode: 0644]
theme/boost/scss/moodle/search.scss [new file with mode: 0644]
theme/boost/scss/moodle/sticky-footer.scss [new file with mode: 0644]
theme/boost/scss/moodle/tables.scss [new file with mode: 0644]
theme/boost/scss/moodle/templates.scss [new file with mode: 0644]
theme/boost/scss/moodle/undo.scss [new file with mode: 0644]
theme/boost/scss/moodle/user.scss [new file with mode: 0644]
theme/boost/scss/preset-default.scss [new file with mode: 0644]
theme/boost/scss/preset-flatly.scss [new file with mode: 0644]
theme/boost/scss/preset-paper.scss [new file with mode: 0644]
theme/boost/scss/preset-readable.scss [new file with mode: 0644]
theme/boost/settings.php [new file with mode: 0644]
theme/boost/style/editor.css [new file with mode: 0644]
theme/boost/templates/admin_setting_tabs.mustache [new file with mode: 0644]
theme/boost/templates/block_search_forums/search_form.mustache [new file with mode: 0644]
theme/boost/templates/block_settings/search_form.mustache [new file with mode: 0644]
theme/boost/templates/columns1.mustache [new file with mode: 0644]
theme/boost/templates/columns2.mustache [new file with mode: 0644]
theme/boost/templates/core/action_menu.mustache [new file with mode: 0644]
theme/boost/templates/core/action_menu_item.mustache [new file with mode: 0644]
theme/boost/templates/core/action_menu_link.mustache [new file with mode: 0644]
theme/boost/templates/core/action_menu_trigger.mustache [new file with mode: 0644]
theme/boost/templates/core/block.mustache [new file with mode: 0644]
theme/boost/templates/core/chooser.mustache [new file with mode: 0644]
theme/boost/templates/core/custom_menu_item.mustache [new file with mode: 0644]
theme/boost/templates/core/dataformat_selector.mustache [new file with mode: 0644]
theme/boost/templates/core/filemanager_confirmdialog.mustache [new file with mode: 0644]
theme/boost/templates/core/filemanager_default_searchform.mustache [new file with mode: 0644]
theme/boost/templates/core/filemanager_fileselect.mustache [new file with mode: 0644]
theme/boost/templates/core/filemanager_loginform.mustache [new file with mode: 0644]
theme/boost/templates/core/filemanager_modal_generallayout.mustache [new file with mode: 0644]
theme/boost/templates/core/filemanager_page_generallayout.mustache [new file with mode: 0644]
theme/boost/templates/core/filemanager_processexistingfile.mustache [new file with mode: 0644]
theme/boost/templates/core/filemanager_processexistingfilemultiple.mustache [new file with mode: 0644]
theme/boost/templates/core/filemanager_selectlayout.mustache [new file with mode: 0644]
theme/boost/templates/core/filemanager_uploadform.mustache [new file with mode: 0644]
theme/boost/templates/core/form_autocomplete_input.mustache [new file with mode: 0644]
theme/boost/templates/core/form_autocomplete_selection.mustache [new file with mode: 0644]
theme/boost/templates/core/help_icon.mustache [new file with mode: 0644]
theme/boost/templates/core/login.mustache [new file with mode: 0644]
theme/boost/templates/core/navbar.mustache [new file with mode: 0644]
theme/boost/templates/core/notification_error.mustache [new file with mode: 0644]
theme/boost/templates/core/notification_info.mustache [new file with mode: 0644]
theme/boost/templates/core/notification_success.mustache [new file with mode: 0644]
theme/boost/templates/core/notification_warning.mustache [new file with mode: 0644]
theme/boost/templates/core/paging_bar.mustache [new file with mode: 0644]
theme/boost/templates/core/pix_icon.mustache [new file with mode: 0644]
theme/boost/templates/core/preferences_groups.mustache [new file with mode: 0644]
theme/boost/templates/core/select_time.mustache [new file with mode: 0644]
theme/boost/templates/core/single_button.mustache [new file with mode: 0644]
theme/boost/templates/core/single_select.mustache [new file with mode: 0644]
theme/boost/templates/core/skip_links.mustache [new file with mode: 0644]
theme/boost/templates/core/tabtree.mustache [new file with mode: 0644]
theme/boost/templates/core/url_select.mustache [new file with mode: 0644]
theme/boost/templates/core_admin/setting.mustache [new file with mode: 0644]
theme/boost/templates/core_admin/setting_configcolourpicker.mustache [new file with mode: 0644]
theme/boost/templates/core_admin/setting_configduration.mustache [new file with mode: 0644]
theme/boost/templates/core_admin/setting_configfile.mustache [new file with mode: 0644]
theme/boost/templates/core_admin/setting_configmultiselect.mustache [new file with mode: 0644]
theme/boost/templates/core_admin/setting_configpasswordunmask.mustache [new file with mode: 0644]
theme/boost/templates/core_admin/setting_configselect.mustache [new file with mode: 0644]
theme/boost/templates/core_admin/setting_configtext.mustache [new file with mode: 0644]
theme/boost/templates/core_admin/setting_configtextarea.mustache [new file with mode: 0644]
theme/boost/templates/core_admin/setting_configtime.mustache [new file with mode: 0644]
theme/boost/templates/core_admin/setting_courselist_frontpage.mustache [new file with mode: 0644]
theme/boost/templates/core_admin/setting_devicedetectregex.mustache [new file with mode: 0644]
theme/boost/templates/core_admin/setting_emoticons.mustache [new file with mode: 0644]
theme/boost/templates/core_admin/setting_gradecat_combo.mustache [new file with mode: 0644]
theme/boost/templates/core_admin/settings.mustache [new file with mode: 0644]
theme/boost/templates/core_admin/settings_search_results.mustache [new file with mode: 0644]
theme/boost/templates/core_form/editor_textarea.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-advcheckbox-inline.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-advcheckbox.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-autocomplete-inline.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-autocomplete.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-button-inline.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-button.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-checkbox-inline.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-checkbox.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-date_selector.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-date_time_selector-inline.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-date_time_selector.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-duration-inline.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-duration.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-editor.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-filemanager.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-filepicker.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-grading.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-group-inline.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-group.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-modgrade.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-modvisible.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-password.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-passwordunmask.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-questioncategory-inline.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-questioncategory.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-radio-inline.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-radio.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-recaptcha.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-select-inline.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-select.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-selectgroups-inline.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-selectgroups.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-selectwithlink.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-selectyesno-inline.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-selectyesno.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-static.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-submit-inline.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-submit.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-tags-inline.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-tags.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-template-inline.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-template.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-text-inline.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-text.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-textarea.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-url.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-warning.mustache [new file with mode: 0644]
theme/boost/templates/core_form/element-wikieditor.mustache [new file with mode: 0644]
theme/boost/templates/core_grades/edit_tree.mustache [new file with mode: 0644]
theme/boost/templates/core_grades/weight_field.mustache [new file with mode: 0644]
theme/boost/templates/core_grades/weight_override_field.mustache [new file with mode: 0644]
theme/boost/templates/course_search_form.mustache [new file with mode: 0644]
theme/boost/templates/embedded.mustache [new file with mode: 0644]
theme/boost/templates/gradereport_history/user_button.mustache [new file with mode: 0644]
theme/boost/templates/gradereport_singleview/bulk_insert.mustache [new file with mode: 0644]
theme/boost/templates/gradereport_singleview/button.mustache [new file with mode: 0644]
theme/boost/templates/gradereport_singleview/dropdown_attribute.mustache [new file with mode: 0644]
theme/boost/templates/gradereport_singleview/text_attribute.mustache [new file with mode: 0644]
theme/boost/templates/header.mustache [new file with mode: 0644]
theme/boost/templates/maintenance.mustache [new file with mode: 0644]
theme/boost/templates/mod_assign/grading_actions.mustache [new file with mode: 0644]
theme/boost/templates/mod_assign/grading_navigation.mustache [new file with mode: 0644]
theme/boost/templates/mod_assign/grading_navigation_user_selector.mustache [new file with mode: 0644]
theme/boost/templates/mod_forum/big_search_form.mustache [new file with mode: 0644]
theme/boost/templates/mod_forum/quick_search_form.mustache [new file with mode: 0644]
theme/boost/templates/secure.mustache [new file with mode: 0644]
theme/boost/tests/behat/behat_theme_boost_behat_action_menu.php [new file with mode: 0644]
theme/boost/tests/behat/behat_theme_boost_behat_admin.php [new file with mode: 0644]
theme/boost/tests/behat/behat_theme_boost_behat_auth.php [new file with mode: 0644]
theme/boost/tests/behat/behat_theme_boost_behat_backup.php [new file with mode: 0644]
theme/boost/tests/behat/behat_theme_boost_behat_blocks.php [new file with mode: 0644]
theme/boost/tests/behat/behat_theme_boost_behat_course.php [new file with mode: 0644]
theme/boost/tests/behat/behat_theme_boost_behat_filepicker.php [new file with mode: 0644]
theme/boost/tests/behat/behat_theme_boost_behat_files.php [new file with mode: 0644]
theme/boost/tests/behat/behat_theme_boost_behat_grade.php [new file with mode: 0644]
theme/boost/tests/behat/behat_theme_boost_behat_mod_quiz.php [new file with mode: 0644]
theme/boost/tests/behat/behat_theme_boost_behat_navigation.php [new file with mode: 0644]
theme/boost/tests/behat/behat_theme_boost_behat_repository_upload.php [new file with mode: 0644]
theme/boost/tests/behat/blacklist.json [new file with mode: 0644]
theme/boost/thirdpartylibs.xml [new file with mode: 0644]
theme/boost/version.php [new file with mode: 0644]
theme/bootstrapbase/layout/columns2.php
theme/bootstrapbase/layout/columns3.php
theme/bootstrapbase/layout/secure.php
theme/bootstrapbase/less/moodle/admin.less
theme/bootstrapbase/less/moodle/backup-restore.less
theme/bootstrapbase/less/moodle/blocks.less
theme/bootstrapbase/less/moodle/calendar.less
theme/bootstrapbase/less/moodle/core.less
theme/bootstrapbase/less/moodle/course.less
theme/bootstrapbase/less/moodle/debug.less
theme/bootstrapbase/less/moodle/dock.less
theme/bootstrapbase/less/moodle/expendable.less
theme/bootstrapbase/less/moodle/filemanager.less
theme/bootstrapbase/less/moodle/forms.less
theme/bootstrapbase/less/moodle/grade.less
theme/bootstrapbase/less/moodle/message.less
theme/bootstrapbase/less/moodle/modules.less
theme/bootstrapbase/less/moodle/question.less
theme/bootstrapbase/less/moodle/reports.less
theme/bootstrapbase/less/moodle/responsive.less
theme/bootstrapbase/less/moodle/search.less
theme/bootstrapbase/less/moodle/undo.less
theme/bootstrapbase/less/moodle/user.less
theme/bootstrapbase/style/editor.css
theme/bootstrapbase/style/moodle.css
theme/clean/layout/columns2.php
theme/clean/layout/columns3.php
theme/clean/layout/secure.php
theme/clean/style/custom.css
theme/more/style/custom.css
theme/styles.php
theme/styles_debug.php
theme/upgrade.txt
user/editlib.php
user/tests/behat/reset_page.feature

index e11f4c5..e35675a 100644 (file)
@@ -46,12 +46,31 @@ lib/amd/src/loglevel.js
 lib/mustache/
 lib/amd/src/mustache.js
 lib/graphlib.php
+lib/php-css-parser/
+lib/rtlcss/
+lib/scssphp/
 lib/spout/
 lib/amd/src/chartjs-lazy.js
 lib/maxmind/GeoIp2/
 lib/maxmind/MaxMind/
 mod/assign/feedback/editpdf/fpdi/
 repository/s3/S3.php
+theme/boost/scss/bootstrap/
+theme/boost/amd/src/alert.js
+theme/boost/amd/src/button.js
+theme/boost/amd/src/carousel.js
+theme/boost/amd/src/collapse.js
+theme/boost/amd/src/dropdown.js
+theme/boost/amd/src/modal.js
+theme/boost/amd/src/popover.js
+theme/boost/amd/src/scrollspy.js
+theme/boost/amd/src/tab.js
+theme/boost/amd/src/tooltip.js
+theme/boost/amd/src/util.js
+theme/boost/amd/src/tether.js
+theme/boost/scss/preset-flatly.scss
+theme/boost/scss/preset-paper.scss
+theme/boost/scss/preset-readable.scss
 theme/bootstrapbase/less/bootstrap/
 theme/bootstrapbase/javascript/html5shiv.js
 theme/bootstrapbase/amd/src/bootstrap.js
\ No newline at end of file
index ceeb1a0..9a2dc50 100644 (file)
@@ -45,12 +45,31 @@ lib/amd/src/loglevel.js
 lib/mustache/
 lib/amd/src/mustache.js
 lib/graphlib.php
+lib/php-css-parser/
+lib/rtlcss/
+lib/scssphp/
 lib/spout/
 lib/amd/src/chartjs-lazy.js
 lib/maxmind/GeoIp2/
 lib/maxmind/MaxMind/
 mod/assign/feedback/editpdf/fpdi/
 repository/s3/S3.php
+theme/boost/scss/bootstrap/
+theme/boost/amd/src/alert.js
+theme/boost/amd/src/button.js
+theme/boost/amd/src/carousel.js
+theme/boost/amd/src/collapse.js
+theme/boost/amd/src/dropdown.js
+theme/boost/amd/src/modal.js
+theme/boost/amd/src/popover.js
+theme/boost/amd/src/scrollspy.js
+theme/boost/amd/src/tab.js
+theme/boost/amd/src/tooltip.js
+theme/boost/amd/src/util.js
+theme/boost/amd/src/tether.js
+theme/boost/scss/preset-flatly.scss
+theme/boost/scss/preset-paper.scss
+theme/boost/scss/preset-readable.scss
 theme/bootstrapbase/less/bootstrap/
 theme/bootstrapbase/javascript/html5shiv.js
 theme/bootstrapbase/amd/src/bootstrap.js
\ No newline at end of file
index 2b4b9f8..61d9bf6 100644 (file)
@@ -1,11 +1,11 @@
 {
     "rules": {
         "at-rule-empty-line-before": [ "always",
-          {"except": [ "blockless-group", "first-nested" ], ignore: ["after-comment"]}
+          {"except": [ "blockless-group"], ignore: ["after-comment", "all-nested"]}
         ],
         "at-rule-name-case": "lower",
         "at-rule-name-space-after": "always-single-line",
-        "at-rule-no-unknown": true,
+        "at-rule-no-unknown": null, # Enabled for non-scss in grunt.
         "at-rule-semicolon-newline-after": "always",
         "block-closing-brace-newline-after": "always",
         "block-closing-brace-newline-before": "always-multi-line",
@@ -57,7 +57,7 @@
         "media-query-list-comma-newline-after": "always-multi-line",
         "media-query-list-comma-space-after": "always-single-line",
         "media-query-list-comma-space-before": "never",
-        "no-browser-hacks": [true, { "severity": "warning" }],
+        "no-browser-hacks": null, # Enabled for non-scss in grunt.
         "no-empty-source": true,
         "no-eol-whitespace": true,
         "no-extra-semicolons": [true, { "severity": "warning" }],
         "shorthand-property-no-redundant-values": [null, { "severity": "warning" }],
         "string-no-newline": true,
         "time-no-imperceptible": true,
-        "unit-blacklist": ["pt", "rem"],
+        "unit-blacklist": ["pt"],
         "unit-case": "lower",
         "unit-no-unknown": true,
-        "value-keyword-case": ["lower", {"ignoreKeywords": ["/@/"]}],
+        "value-keyword-case": ["lower", {"ignoreKeywords": ["/(@|$)/"]}],
         "value-list-comma-newline-after": "always-multi-line",
         "value-list-comma-space-after": "always-single-line",
         "value-list-comma-space-before": "never",
index 1be39db..08b28b6 100644 (file)
@@ -151,7 +151,7 @@ module.exports = function(grunt) {
                     "theme/bootstrapbase/style/editor.css": "theme/bootstrapbase/less/editor.less",
                 },
                 options: {
-                    compress: true
+                    compress: false // We must not compress to keep the comments.
                 }
            }
         },
@@ -192,11 +192,18 @@ module.exports = function(grunt) {
                             "selector-type-no-unknown": null,
                             "length-zero-no-unit": null,
                             "color-hex-case": null,
-                            "color-hex-length": null
+                            "color-hex-length": null,
+                            // These rules have to be disabled in .stylelintrc for scss compat.
+                            "at-rule-no-unknown": true,
+                            "no-browser-hacks": [true, {"severity": "warning"}]
                         }
                     }
                 },
                 src: ['theme/**/*.less']
+            },
+            scss: {
+                options: {syntax: 'scss'},
+                src: ['*/**/*.scss']
             }
         }
     });
@@ -351,7 +358,7 @@ module.exports = function(grunt) {
     grunt.registerTask('js', ['amd', 'yui']);
 
     // Register CSS taks.
-    grunt.registerTask('css', ['stylelint:less', 'less:bootstrapbase']);
+    grunt.registerTask('css', ['stylelint:scss', 'stylelint:less', 'less:bootstrapbase']);
 
     // Register the startup task.
     grunt.registerTask('startup', 'Run the correct tasks for the current directory', tasks.startup);
index ea44b1f..f288512 100644 (file)
@@ -8,7 +8,7 @@
 
     echo $OUTPUT->header();
 
-    echo '<div class="phpinfo">';
+    echo '<div class="phpinfo text-ltr">';
 
     ob_start();
     phpinfo(INFO_GENERAL + INFO_CONFIGURATION + INFO_MODULES + INFO_VARIABLES);
index 8eff841..5f89d0c 100644 (file)
@@ -329,6 +329,7 @@ class site_registration_form extends moodleform {
                 array('class' => 'registration_textfield'));
         $mform->setType('contactphone', PARAM_TEXT);
         $mform->addHelpButton('contactphone', 'sitephone', 'hub');
+        $mform->setForceLtr('contactphone');
 
         $mform->addElement('text', 'contactemail', get_string('siteemail', 'hub'),
                 array('class' => 'registration_textfield'));
index 3dc565e..6c255c6 100644 (file)
@@ -43,24 +43,6 @@ if ($errormsg !== '') {
     echo $OUTPUT->notification($statusmsg, 'notifysuccess');
 }
 
-$resultshtml = admin_search_settings_html($query); // case insensitive search only
-
-echo '<form action="' . $PAGE->url->out(true) . '" method="post" id="adminsettings">';
-echo '<div>';
-echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
-// HACK to prevent browsers from automatically inserting the user's password into the wrong fields.
-echo prevent_form_autofill_password();
-echo '</div>';
-echo '<fieldset>';
-echo '<div class="clearer"><!-- --></div>';
-if ($resultshtml != '') {
-    echo $resultshtml;
-} else {
-    echo get_string('noresults','admin');
-}
-echo '</fieldset>';
-echo '</form>';
+echo admin_search_settings_html($query);
 
 echo $OUTPUT->footer();
-
-
index fda2359..72f7f9c 100644 (file)
@@ -77,20 +77,23 @@ if (empty($SITE->fullname)) {
 
     // ---------------------------------------------------------------------------------------------------------------
 
-    echo '<form action="' . $PAGE->url . '" method="post" id="adminsettings">';
-    echo '<div class="settingsform clearfix">';
-    echo html_writer::input_hidden_params($PAGE->url);
-    echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
-    echo '<input type="hidden" name="return" value="'.$return.'" />';
-    // HACK to prevent browsers from automatically inserting the user's password into the wrong fields.
-    echo prevent_form_autofill_password();
-
-    echo $settingspage->output_html();
-
-    echo '<div class="form-buttons"><input class="form-submit" type="submit" value="'.get_string('savechanges','admin').'" /></div>';
-
-    echo '</div>';
-    echo '</form>';
+    $pageparams = $PAGE->url->params();
+    $context = [
+        'actionurl' => $PAGE->url->out(false),
+        'params' => array_map(function($param) use ($pageparams) {
+            return [
+                'name' => $param,
+                'value' => $pageparams[$param]
+            ];
+        }, array_keys($pageparams)),
+        'sesskey' => sesskey(),
+        'return' => $return,
+        'title' => null,
+        'settings' => $settingspage->output_html(),
+        'showsave' => true
+    ];
+
+    echo $OUTPUT->render_from_template('core_admin/settings', $context);
 
 } else {
     if ($PAGE->user_allowed_editing()) {
@@ -121,23 +124,23 @@ if (empty($SITE->fullname)) {
 
     // ---------------------------------------------------------------------------------------------------------------
 
-    echo '<form action="' . $PAGE->url . '" method="post" id="adminsettings">';
-    echo '<div class="settingsform clearfix">';
-    echo html_writer::input_hidden_params($PAGE->url);
-    echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
-    echo '<input type="hidden" name="return" value="'.$return.'" />';
-    // HACK to prevent browsers from automatically inserting the user's password into the wrong fields.
-    echo prevent_form_autofill_password();
-    echo $OUTPUT->heading($settingspage->visiblename);
-
-    echo $settingspage->output_html();
-
-    if ($settingspage->show_save()) {
-        echo '<div class="form-buttons"><input class="form-submit" type="submit" value="'.get_string('savechanges','admin').'" /></div>';
-    }
-
-    echo '</div>';
-    echo '</form>';
+    $pageparams = $PAGE->url->params();
+    $context = [
+        'actionurl' => $PAGE->url->out(false),
+        'params' => array_map(function($param) use ($pageparams) {
+            return [
+                'name' => $param,
+                'value' => $pageparams[$param]
+            ];
+        }, array_keys($pageparams)),
+        'sesskey' => sesskey(),
+        'return' => $return,
+        'title' => $settingspage->visiblename,
+        'settings' => $settingspage->output_html(),
+        'showsave' => $settingspage->show_save()
+    ];
+
+    echo $OUTPUT->render_from_template('core_admin/settings', $context);
 }
 
 $PAGE->requires->yui_module('moodle-core-formchangechecker',
index d8697d4..f2047d8 100644 (file)
@@ -12,7 +12,10 @@ if ($hassiteconfig or has_any_capability($capabilities, $systemcontext)) { // sp
     $ADMIN->add('appearance', new admin_category('themes', new lang_string('themes')));
     // "themesettings" settingpage
     $temp = new admin_settingpage('themesettings', new lang_string('themesettings', 'admin'));
-    $temp->add(new admin_setting_configtext('themelist', new lang_string('themelist', 'admin'), new lang_string('configthemelist','admin'), '', PARAM_NOTAGS));
+    $setting = new admin_setting_configtext('themelist', new lang_string('themelist', 'admin'),
+        new lang_string('configthemelist', 'admin'), '', PARAM_NOTAGS);
+    $setting->set_force_ltr(true);
+    $temp->add($setting);
     $setting = new admin_setting_configcheckbox('themedesignermode', new lang_string('themedesignermode', 'admin'), new lang_string('configthemedesignermode', 'admin'), 0);
     $setting->set_updatedcallback('theme_reset_all_caches');
     $temp->add($setting);
@@ -22,7 +25,8 @@ if ($hassiteconfig or has_any_capability($capabilities, $systemcontext)) { // sp
     $temp->add(new admin_setting_configcheckbox('allowthemechangeonurl',  new lang_string('allowthemechangeonurl', 'admin'), new lang_string('configallowthemechangeonurl', 'admin'), 0));
     $temp->add(new admin_setting_configcheckbox('allowuserblockhiding', new lang_string('allowuserblockhiding', 'admin'), new lang_string('configallowuserblockhiding', 'admin'), 1));
     $temp->add(new admin_setting_configcheckbox('allowblockstodock', new lang_string('allowblockstodock', 'admin'), new lang_string('configallowblockstodock', 'admin'), 1));
-    $temp->add(new admin_setting_configtextarea('custommenuitems', new lang_string('custommenuitems', 'admin'), new lang_string('configcustommenuitems', 'admin'), '', PARAM_TEXT, '50', '10'));
+    $temp->add(new admin_setting_configtextarea('custommenuitems', new lang_string('custommenuitems', 'admin'),
+        new lang_string('configcustommenuitems', 'admin'), '', PARAM_RAW, '50', '10'));
     $temp->add(new admin_setting_configtextarea(
         'customusermenuitems',
         new lang_string('customusermenuitems', 'admin'),
@@ -30,7 +34,7 @@ if ($hassiteconfig or has_any_capability($capabilities, $systemcontext)) { // sp
         'grades,grades|/grade/report/mygrades.php|grades
 messages,message|/message/index.php|message
 preferences,moodle|/user/preferences.php|preferences',
-        PARAM_TEXT,
+        PARAM_RAW,
         '50',
         '10'
     ));
@@ -274,8 +278,6 @@ preferences,moodle|/user/preferences.php|preferences',
     $setting->set_updatedcallback('js_reset_all_caches');
     $temp->add($setting);
     $temp->add(new admin_setting_configcheckbox('modchooserdefault', new lang_string('modchooserdefault', 'admin'), new lang_string('configmodchooserdefault', 'admin'), 1));
-    $temp->add(new admin_setting_configcheckbox('modeditingmenu', new lang_string('modeditingmenu', 'admin'), new lang_string('modeditingmenu_desc', 'admin'), 1));
-    $temp->add(new admin_setting_configcheckbox('blockeditingmenu', new lang_string('blockeditingmenu', 'admin'), new lang_string('blockeditingmenu_desc', 'admin'), 1));
     $ADMIN->add('appearance', $temp);
 
     // link to tag management interface
index 90bc811..bd9ea98 100644 (file)
@@ -58,9 +58,18 @@ if (has_capability('moodle/grade:manage', $systemcontext)
                                                         GRADE_NAVMETHOD_TABS => new lang_string('tabs', 'grades'),
                                                         GRADE_NAVMETHOD_COMBO => new lang_string('combo', 'grades'))));
 
-        $temp->add(new admin_setting_configtext('grade_export_userprofilefields', new lang_string('gradeexportuserprofilefields', 'grades'), new lang_string('gradeexportuserprofilefields_desc', 'grades'), 'firstname,lastname,idnumber,institution,department,email', PARAM_TEXT));
-
-        $temp->add(new admin_setting_configtext('grade_export_customprofilefields', new lang_string('gradeexportcustomprofilefields', 'grades'), new lang_string('gradeexportcustomprofilefields_desc', 'grades'), '', PARAM_TEXT));
+        $setting = new admin_setting_configtext('grade_export_userprofilefields',
+            new lang_string('gradeexportuserprofilefields', 'grades'),
+            new lang_string('gradeexportuserprofilefields_desc', 'grades'),
+            'firstname,lastname,idnumber,institution,department,email', PARAM_TEXT);
+        $setting->set_force_ltr(true);
+        $temp->add($setting);
+
+        $setting = new admin_setting_configtext('grade_export_customprofilefields',
+            new lang_string('gradeexportcustomprofilefields', 'grades'),
+            new lang_string('gradeexportcustomprofilefields_desc', 'grades'), '', PARAM_TEXT);
+        $setting->set_force_ltr(true);
+        $temp->add($setting);
 
         $temp->add(new admin_setting_configcheckbox('recovergradesdefault', new lang_string('recovergradesdefault', 'grades'), new lang_string('recovergradesdefault_help', 'grades'), 0));
 
index 0711b23..9223cab 100644 (file)
@@ -105,12 +105,22 @@ if ($hassiteconfig) {
                                             new lang_string('forgottenpassword', 'auth'), ''));
     $temp->add(new admin_setting_confightmleditor('auth_instructions', new lang_string('instructions', 'auth'),
                                                 new lang_string('authinstructions', 'auth'), ''));
-    $temp->add(new admin_setting_configtext('allowemailaddresses', new lang_string('allowemailaddresses', 'admin'), new lang_string('configallowemailaddresses', 'admin'), '', PARAM_NOTAGS));
-    $temp->add(new admin_setting_configtext('denyemailaddresses', new lang_string('denyemailaddresses', 'admin'), new lang_string('configdenyemailaddresses', 'admin'), '', PARAM_NOTAGS));
+    $setting = new admin_setting_configtext('allowemailaddresses', new lang_string('allowemailaddresses', 'admin'),
+        new lang_string('configallowemailaddresses', 'admin'), '', PARAM_NOTAGS);
+    $setting->set_force_ltr(true);
+    $temp->add($setting);
+    $setting = new admin_setting_configtext('denyemailaddresses', new lang_string('denyemailaddresses', 'admin'),
+        new lang_string('configdenyemailaddresses', 'admin'), '', PARAM_NOTAGS);
+    $setting->set_force_ltr(true);
+    $temp->add($setting);
     $temp->add(new admin_setting_configcheckbox('verifychangedemail', new lang_string('verifychangedemail', 'admin'), new lang_string('configverifychangedemail', 'admin'), 1));
 
-    $temp->add(new admin_setting_configtext('recaptchapublickey', new lang_string('recaptchapublickey', 'admin'), new lang_string('configrecaptchapublickey', 'admin'), '', PARAM_NOTAGS));
-    $temp->add(new admin_setting_configtext('recaptchaprivatekey', new lang_string('recaptchaprivatekey', 'admin'), new lang_string('configrecaptchaprivatekey', 'admin'), '', PARAM_NOTAGS));
+    $setting = new admin_setting_configtext('recaptchapublickey', new lang_string('recaptchapublickey', 'admin'), new lang_string('configrecaptchapublickey', 'admin'), '', PARAM_NOTAGS);
+    $setting->set_force_ltr(true);
+    $temp->add($setting);
+    $setting = new admin_setting_configtext('recaptchaprivatekey', new lang_string('recaptchaprivatekey', 'admin'), new lang_string('configrecaptchaprivatekey', 'admin'), '', PARAM_NOTAGS);
+    $setting->set_force_ltr(true);
+    $temp->add($setting);
     $ADMIN->add('authsettings', $temp);
 
     $temp = new admin_externalpage('authtestsettings', get_string('testsettings', 'core_auth'), new moodle_url("/auth/test_settings.php"), 'moodle/site:config', true);
index 8ef94a7..aae21f9 100644 (file)
@@ -28,8 +28,12 @@ if ($primaryadmin) {
     $primaryadminemail = NULL;
     $primaryadminname  = NULL;
 }
-$temp->add(new admin_setting_configtext('supportname', new lang_string('supportname', 'admin'), new lang_string('configsupportname', 'admin'), $primaryadminname, PARAM_NOTAGS));
-$temp->add(new admin_setting_configtext('supportemail', new lang_string('supportemail', 'admin'), new lang_string('configsupportemail', 'admin'), $primaryadminemail, PARAM_NOTAGS));
+$temp->add(new admin_setting_configtext('supportname', new lang_string('supportname', 'admin'),
+  new lang_string('configsupportname', 'admin'), $primaryadminname, PARAM_NOTAGS));
+$setting = new admin_setting_configtext('supportemail', new lang_string('supportemail', 'admin'),
+  new lang_string('configsupportemail', 'admin'), $primaryadminemail, PARAM_NOTAGS);
+$setting->set_force_ltr(true);
+$temp->add($setting);
 $temp->add(new admin_setting_configtext('supportpage', new lang_string('supportpage', 'admin'), new lang_string('configsupportpage', 'admin'), '', PARAM_URL));
 $ADMIN->add('server', $temp);
 
index 6bd0ea1..950c2aa 100644 (file)
@@ -190,7 +190,10 @@ if ($hassiteconfig
                     'department'  => new lang_string('department'),
                     'institution' => new lang_string('institution'),
                 )));
-        $temp->add(new admin_setting_configtext('fullnamedisplay', new lang_string('fullnamedisplay', 'admin'), new lang_string('configfullnamedisplay', 'admin'), 'language', PARAM_TEXT, 50));
+        $setting = new admin_setting_configtext('fullnamedisplay', new lang_string('fullnamedisplay', 'admin'),
+            new lang_string('configfullnamedisplay', 'admin'), 'language', PARAM_TEXT, 50);
+        $setting->set_force_ltr(true);
+        $temp->add($setting);
         $temp->add(new admin_setting_configtext('alternativefullnameformat', new lang_string('alternativefullnameformat', 'admin'),
                 new lang_string('alternativefullnameformat_desc', 'admin'),
                 'language', PARAM_RAW, 50));
diff --git a/admin/templates/setting.mustache b/admin/templates/setting.mustache
new file mode 100644 (file)
index 0000000..ed17246
--- /dev/null
@@ -0,0 +1,69 @@
+{{!
+    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/>.
+}}
+{{!
+    @template core_admin/setting
+
+    Admin setting template.
+
+    Context variables required for this template:
+    * labelfor - id of the form element
+    * title - Setting title
+    * override - Overridden message
+    * warning - Warning message
+    * name - Setting name
+    * error - Error message
+    * element - The Element HTML
+    * forceltr - Force this element to be displayed LTR
+    * default - Default value
+
+    Example context (json):
+    {
+        "title": "Setting title",
+        "labelfor": "id0",
+        "override": "Overidden",
+        "warning": "Warning",
+        "name": "Name",
+        "error": "Error",
+        "element": "Raw HTML",
+        "forceltr": false,
+        "default": "Default value"
+    }
+}}
+<div class="form-item clearfix" id="{{id}}">
+    <div class="form-label">
+        <label {{#labelfor}}for="{{labelfor}}"{{/labelfor}}>
+            {{{title}}}
+            {{#override}}
+                <div class="form-overridden">{{override}}</div>
+            {{/override}}
+            {{#warning}}
+                <div class="form-warning">{{warning}}</div>
+            {{/warning}}
+        </label>
+        <span class="form-shortname">{{{name}}}</span>
+    </div>
+    <div class="form-setting">
+        {{#error}}
+            <div><span class="error">{{error}}</span></div>
+        {{/error}}
+        {{{element}}}
+        {{#default}}
+            <div class="form-defaultinfo {{#forceltr}}text-ltr{{/forceltr}}">{{{default}}}</div>
+        {{/default}}
+    </div>
+    <div class="form-description">{{{description}}}</div>
+</div>
diff --git a/admin/templates/setting_configcheckbox.mustache b/admin/templates/setting_configcheckbox.mustache
new file mode 100644 (file)
index 0000000..f41e5a2
--- /dev/null
@@ -0,0 +1,41 @@
+{{!
+    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/>.
+}}
+{{!
+    @template core_admin/setting_configcheckbox
+
+    Admin checkbox setting template.
+
+    Context variables required for this template:
+    * name - form element name
+    * no - no value
+    * value - yes value
+    * id - element id
+    * checked - boole
+
+    Example context (json):
+    {
+        "name": "test",
+        "no": "False",
+        "value": "True",
+        "id": "test0",
+        "checked": "checked"
+    }
+}}
+<div class="form-checkbox defaultsnext">
+    <input type="hidden" name="{{name}}" value="{{no}}">
+    <input type="checkbox" name="{{name}}" value="{{value}}" id="{{id}}" {{#checked}}checked{{/checked}}>
+</div>
diff --git a/admin/templates/setting_configcolourpicker.mustache b/admin/templates/setting_configcolourpicker.mustache
new file mode 100644 (file)
index 0000000..eb8c487
--- /dev/null
@@ -0,0 +1,48 @@
+{{!
+    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/>.
+}}
+{{!
+    @template core_admin/setting_configcolourpicker
+
+    Admin setting colour picker template.
+
+    Context variables required for this template:
+    * icon - optional icon context (see pix_icon)
+    * name - element name
+    * id - element id
+    * value - element value
+    * haspreviewconfig - show preview of selected color
+
+    Example context (json):
+    {
+        "icon": false,
+        "name": "name0",
+        "id": "id0",
+        "value": "#555655",
+        "haspreviewconfig": false
+    }
+}}
+<div class="form-colourpicker defaultsnext">
+    <div class="admin_colourpicker clearfix">
+        {{#icon}}
+            {{>core/pix_icon}}
+        {{/icon}}
+    </div>
+    <input type="text" name="{{name}}" id="{{id}}" value="{{value}}" size="12" class="text-ltr">
+    {{#haspreviewconfig}}
+        <input type="button" id="{{id}}_preview" value={{#quote}}{{#str}}preview{{/str}}{{/quote}} class="admin_colourpicker_preview">
+    {{/haspreviewconfig}}
+</div>
diff --git a/admin/templates/setting_configdirectory.mustache b/admin/templates/setting_configdirectory.mustache
new file mode 100644 (file)
index 0000000..1804787
--- /dev/null
@@ -0,0 +1,41 @@
+{{!
+    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/>.
+}}
+{{!
+    @template core_admin/setting_configdirectory
+
+    Admin directory setting template.
+
+    Context variables required for this template:
+    * name - form element name
+    * id - element id
+    * size - size of the field
+    * readonly - Make the field readonly
+    * value - value
+    * showvalidity - Show a green check if the path is readable
+    * valid - True if the path is readable
+
+    Example context (json):
+    {
+        "name": "test",
+        "value": "/my-super-secret-path/",
+        "id": "test0",
+        "readonly": true,
+        "showvalidity": true,
+        "valid": false
+    }
+}}
+{{>core_admin/setting_configfile}}
diff --git a/admin/templates/setting_configduration.mustache b/admin/templates/setting_configduration.mustache
new file mode 100644 (file)
index 0000000..3bad98c
--- /dev/null
@@ -0,0 +1,45 @@
+{{!
+    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/>.
+}}
+{{!
+    @template core_admin/setting_configduration
+
+    Admin duration setting template.
+
+    Context variables required for this template:
+    * name - form element name
+    * options - list of options for units containing name, value, selected
+    * value - yes
+    * id - element id
+
+    Example context (json):
+    {
+        "name": "test",
+        "value": "5",
+        "id": "test0",
+        "options": [ { "name": "Minutes", "value": "mins", "selected": true } ]
+    }
+}}
+<div class="form-duration defaultsnext">
+    <input type="text" size="5" id="{{id}}v" name="{{name}}[v]" value="{{value}}" class="text-ltr">
+    <label class="accesshide" for="{{id}}u">{{#str}}durationunits, admin{{/str}}</label>
+    <select id="{{id}}u" name="{{name}}[u]">
+        {{#options}}
+            <option value="{{value}}" {{#selected}}selected{{/selected}}>{{name}}</option>
+        {{/options}}
+    </select>
+</div>
+
diff --git a/admin/templates/setting_configempty.mustache b/admin/templates/setting_configempty.mustache
new file mode 100644 (file)
index 0000000..c9fa6b2
--- /dev/null
@@ -0,0 +1,34 @@
+{{!
+    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/>.
+}}
+{{!
+    @template core_admin/setting_configempty
+
+    Admin empty setting template.
+
+    Context variables required for this template:
+    * name - form element name
+    * id - element id
+
+    Example context (json):
+    {
+        "name": "test",
+        "id": "test0"
+    }
+}}
+<div class="form-empty">
+    <input type="hidden" name="{{name}}" id="{{id}}" value="">
+</div>
diff --git a/admin/templates/setting_configexecutable.mustache b/admin/templates/setting_configexecutable.mustache
new file mode 100644 (file)
index 0000000..72187f2
--- /dev/null
@@ -0,0 +1,41 @@
+{{!
+    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/>.
+}}
+{{!
+    @template core_admin/setting_configexecutable
+
+    Admin executable setting template.
+
+    Context variables required for this template:
+    * name - form element name
+    * id - element id
+    * size - size of the field
+    * readonly - Make the field readonly
+    * value - value
+    * showvalidity - Show a green check if the path is readable
+    * valid - True if the path is readable
+
+    Example context (json):
+    {
+        "name": "test",
+        "value": "/usr/bin/cowsay",
+        "id": "test0",
+        "readonly": true,
+        "showvalidity": true,
+        "valid": false
+    }
+}}
+{{>core_admin/setting_configfile}}
diff --git a/admin/templates/setting_configfile.mustache b/admin/templates/setting_configfile.mustache
new file mode 100644 (file)
index 0000000..f249fe6
--- /dev/null
@@ -0,0 +1,52 @@
+{{!
+    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/>.
+}}
+{{!
+    @template core_admin/setting_configfile
+
+    Admin file setting template.
+
+    Context variables required for this template:
+    * name - form element name
+    * id - element id
+    * size - size of the field
+    * readonly - Make the field readonly
+    * value - value
+    * showvalidity - Show a green check if the path is readable
+    * valid - True if the path is readable
+
+    Example context (json):
+    {
+        "name": "test",
+        "value": "/my-super-secret-path/file",
+        "id": "test0",
+        "readonly": true,
+        "showvalidity": true,
+        "valid": false
+    }
+}}
+<div class="form-file defaultsnext">
+    <input type="text" name="{{name}}" id="{{id}}" size="{{size}}" value="{{value}}" class="text-ltr" {{#readonly}}readonly{{/readonly}}>
+    {{#showvalidity}}
+        {{#valid}}
+            <span class="pathok">&#x2714;</span>
+        {{/valid}}
+        {{^valid}}
+            <span class="patherror">&#x2718;</span>
+        {{/valid}}
+    {{/showvalidity}}
+</div>
+
diff --git a/admin/templates/setting_confightmleditor.mustache b/admin/templates/setting_confightmleditor.mustache
new file mode 100644 (file)
index 0000000..8cbcff8
--- /dev/null
@@ -0,0 +1,39 @@
+{{!
+    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/>.
+}}
+{{!
+    @template core_admin/setting_confightmleditor
+
+    Admin htmleditor setting template.
+
+    Context variables required for this template:
+    * rows - number of rows
+    * cols - number of cols
+    * id - element id
+    * name - element name
+    * value - default text
+    * forceltr - always ltr
+
+    Example context (json):
+    {
+        "name": "test",
+        "id": "test0",
+        "value": "Your aims are high, and you are capable of much.",
+        "rows": 5,
+        "cols": 30
+    }
+}}
+{{>core_admin/setting_configtextarea}}
diff --git a/admin/templates/setting_configmulticheckbox.mustache b/admin/templates/setting_configmulticheckbox.mustache
new file mode 100644 (file)
index 0000000..951929a
--- /dev/null
@@ -0,0 +1,46 @@
+{{!
+    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/>.
+}}
+{{!
+    @template core_admin/setting_configmulticheckbox
+
+    Admin multicheckbox setting template.
+
+    Context variables required for this template:
+    * name - form element name
+    * hasoptions - there are some options
+    * options - list of options containing name, key, id, checked, label
+
+    Example context (json):
+    {
+        "name": "test",
+        "hasoptions": true,
+        "options": [ { "name": "Option", "key": "k1", "id": "id0", "checked": true, "label": "Option label"} ]
+    }
+}}
+<div class="form-multicheckbox">
+    <input type="hidden" name="{{name}}[xxxxx]" value="1">
+    {{#hasoptions}}
+        <ul>
+            {{#options}}
+                <li>
+                    <input type="checkbox" name="{{name}}[{{key}}]" value="1" id="{{id}}_{{key}}" {{#checked}}checked{{/checked}}>
+                    <label for="{{id}}_{{key}}">{{{label}}}</label>
+                </li>
+            {{/options}}
+        </ul>
+    {{/hasoptions}}
+</div>
diff --git a/admin/templates/setting_configmultiselect.mustache b/admin/templates/setting_configmultiselect.mustache
new file mode 100644 (file)
index 0000000..7465a7b
--- /dev/null
@@ -0,0 +1,45 @@
+{{!
+    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/>.
+}}
+{{!
+    @template core_admin/setting_configmultiselect
+
+    Admin multiselect setting template.
+
+    Context variables required for this template:
+    * name - form element name
+    * id - element id
+    * size - element size
+    * options - list of options containing name, value, selected
+
+    Example context (json):
+    {
+        "name": "test",
+        "id": "test0",
+        "size": "3",
+        "options": [ { "name": "Option 1", "value": "V", "selected": true },
+                     { "name": "Option 2", "value": "V", "selected": true } ]
+    }
+}}
+<div class="form-select">
+    <input type="hidden" name="{{name}}[xxxxx]" value="1">
+    <select id="{{id}}" name="{{name}}[]" size="{{size}}" multiple>
+        {{#options}}
+            <option value="{{value}}" {{#selected}}selected{{/selected}}>{{name}}</option>
+        {{/options}}
+    </select>
+</div>
+
diff --git a/admin/templates/setting_configpasswordunmask.mustache b/admin/templates/setting_configpasswordunmask.mustache
new file mode 100644 (file)
index 0000000..b9da812
--- /dev/null
@@ -0,0 +1,73 @@
+{{!
+    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/>.
+}}
+{{!
+    @template core_admin/setting_configpasswordunmask
+
+    Admin password unmask setting template.
+
+    Context variables required for this template:
+    * name - form element name
+    * size - form element size
+    * value - form element value
+    * id - element id
+
+    Example context (json):
+    {
+        "name": "test",
+        "id": "test0",
+        "size": "8",
+        "value": "secret"
+    }
+}}
+<div class="form-password">
+    <input type="password" name="{{name}}" size="{{size}}" id="{{id}}" value="{{value}}">
+    <div class="unmask" id="{{id}}unmaskdiv"></div>
+</div>
+{{#js}}
+(function() {
+    var id = '{{id}}';
+    var unmaskid = id + 'unmask';
+    var unmaskdivid = id + 'unmaskdiv';
+    var unmaskstr = {{#quote}}{{#str}}unmaskpassword, form{{/str}}{{/quote}};
+    var is_ie = (navigator.userAgent.toLowerCase().indexOf("msie") != -1);
+
+    document.getElementById(id).setAttribute("autocomplete", "off");
+
+    var unmaskdiv = document.getElementById(unmaskdivid);
+
+    var unmaskchb = document.createElement("input");
+    unmaskchb.setAttribute("type", "checkbox");
+    unmaskchb.setAttribute("id", unmaskid);
+    unmaskchb.onchange = function() {unmaskPassword(id);};
+    unmaskdiv.appendChild(unmaskchb);
+
+    var unmasklbl = document.createElement("label");
+    unmasklbl.innerHTML = unmaskstr;
+    if (is_ie) {
+      unmasklbl.setAttribute("htmlFor", unmaskid);
+    } else {
+      unmasklbl.setAttribute("for", unmaskid);
+    }
+    unmaskdiv.appendChild(unmasklbl);
+
+    if (is_ie) {
+      // Ugly hack to work around the famous onchange IE bug.
+      unmaskchb.onclick = function() {this.blur();};
+      unmaskdiv.onclick = function() {this.blur();};
+    }
+})()
+{{/js}}
diff --git a/admin/templates/setting_configselect.mustache b/admin/templates/setting_configselect.mustache
new file mode 100644 (file)
index 0000000..a90c260
--- /dev/null
@@ -0,0 +1,44 @@
+{{!
+    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/>.
+}}
+{{!
+    @template core_admin/setting_configselect
+
+    Admin select setting template.
+
+    Context variables required for this template:
+    * name - form element name
+    * id - element id
+    * options - list of options containing name, value, selected
+
+    Example context (json):
+    {
+        "name": "test",
+        "id": "test0",
+        "options": [
+            { "name": "Option 1", "value": "V", "selected": true },
+            { "name": "Option 2", "value": "V", "selected": true }
+        ]
+    }
+}}
+<div class="form-select defaultsnext">
+    <select id="{{id}}" name="{{name}}">
+        {{#options}}
+            <option value="{{value}}" {{#selected}}selected{{/selected}}>{{name}}</option>
+        {{/options}}
+    </select>
+</div>
+
diff --git a/admin/templates/setting_configtext.mustache b/admin/templates/setting_configtext.mustache
new file mode 100644 (file)
index 0000000..15fd968
--- /dev/null
@@ -0,0 +1,42 @@
+{{!
+    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/>.
+}}
+{{!
+    @template core_admin/setting_configtext
+
+    Admin text setting template.
+
+    Context variables required for this template:
+    * name - form element name
+    * id - element id
+    * value - element value
+    * size - element size
+    * forceltr - always display as ltr
+    * attributes - list of additional attributes containing name, value
+
+    Example context (json):
+    {
+        "name": "test",
+        "id": "test0",
+        "value": "A tall, dark stranger will have more fun than you.",
+        "size": "21",
+        "forceltr": false,
+        "attributes": [ { "name": "readonly", "value": "readonly" } ]
+    }
+}}
+<div class="form-text defaultsnext">
+    <input type="text" name="{{name}}" value="{{value}}" size="{{size}}" id="{{id}}" class="{{#forceltr}}text-ltr{{/forceltr}}" {{#attributes}} {{name}}="{{value}}"{{/attributes}}>
+</div>
diff --git a/admin/templates/setting_configtextarea.mustache b/admin/templates/setting_configtextarea.mustache
new file mode 100644 (file)
index 0000000..ec6ded3
--- /dev/null
@@ -0,0 +1,41 @@
+{{!
+    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/>.
+}}
+{{!
+    @template core_admin/setting_configtextarea
+
+    Admin textarea setting template.
+
+    Context variables required for this template:
+    * name - form element name
+    * id - element id
+    * rows - number of rows
+    * cols - number of cols
+    * value - default value
+    * forceltr - always display as ltr
+
+    Example context (json):
+    {
+        "name": "test",
+        "cols": "30",
+        "rows": "3",
+        "value": "Excellent day for putting Slinkies on an escalator.",
+        "id": "test0"
+    }
+}}
+<div class="form-textarea">
+    <textarea rows="{{rows}}" cols="{{cols}}" id="{{id}}" name="{{name}}" spellcheck="true" class="{{#forceltr}}text-ltr{{/forceltr}}">{{value}}</textarea>
+</div>
diff --git a/admin/templates/setting_configtime.mustache b/admin/templates/setting_configtime.mustache
new file mode 100644 (file)
index 0000000..b86b691
--- /dev/null
@@ -0,0 +1,56 @@
+{{!
+    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/>.
+}}
+{{!
+    @template core_admin/setting_configtime
+
+    Admin time setting template.
+
+    Context variables required for this template:
+    * name - form element name
+    * id - element id
+    * hours - list of valid hour options containing name, value, selected
+    * minutes - list of valid minute options containing name, value, selected
+
+    Example context (json):
+    {
+        "name": "test",
+        "id": "test0",
+        "minutes": [
+            { "name": "00", "value": "0", "selected": true },
+            { "name": "01", "value": "1", "selected": false }
+        ],
+        "hours": [
+            { "name": "1", "value": "1", "selected": true },
+            { "name": "2", "value": "2", "selected": false }
+        ]
+    }
+}}
+<div class="form-time defaultsnext text-ltr">
+    <label class="accesshide" for="{{id}}h">{{#str}}hours{{/str}}</label>
+    <select id="{{id}}h" name="{{name}}[h]">
+        {{#hours}}
+            <option value="{{value}}" {{#selected}}selected{{/selected}}>{{name}}</option>
+        {{/hours}}
+    </select>:
+    <label class="accesshide" for="{{id}}m">{{#str}}minutes{{/str}}</label>
+    <select id="{{id}}m" name="{{name}}[m]">
+        {{#minutes}}
+            <option value="{{value}}" {{#selected}}selected{{/selected}}>{{name}}</option>
+        {{/minutes}}
+    </select>
+</div>
+
diff --git a/admin/templates/setting_courselist_frontpage.mustache b/admin/templates/setting_courselist_frontpage.mustache
new file mode 100644 (file)
index 0000000..1cde3aa
--- /dev/null
@@ -0,0 +1,49 @@
+{{!
+    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/>.
+}}
+{{!
+    @template core_admin/setting_courselist_frontpage
+
+    Admin courselist_frontpage setting template.
+
+    Context variables required for this template:
+    * selects list of select objects containing id, name, key and options.
+      options is another nested list of items containing name, value and selected
+
+    Example context (json):
+    {
+        "selects": [
+            {
+                "id": "i1",
+                "name": "s1",
+                "key": "k1",
+                "options": [
+                    { "name": "Fish", "value": "snapper", "selected": true }
+                ]
+            }
+        ]
+    }
+}}
+<div class="form-group">
+    {{#selects}}
+        <select id="{{id}}{{key}}" name="{{name}}[]">
+            {{#options}}
+                <option value="{{value}}" {{#selected}}selected{{/selected}}>{{name}}</option>
+            {{/options}}
+        </select>
+        <br>
+    {{/selects}}
+</div>
diff --git a/admin/templates/setting_devicedetectregex.mustache b/admin/templates/setting_devicedetectregex.mustache
new file mode 100644 (file)
index 0000000..cc88862
--- /dev/null
@@ -0,0 +1,51 @@
+{{!
+    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/>.
+}}
+{{!
+    @template core_admin/setting_devicedetectregex
+
+    Admin devicedetectregex setting template.
+
+    Context variables required for this template:
+    * expressions - List of expressions containing index, name, expression and value
+
+    Example context (json):
+    {
+        "expressions": [
+            { "index": "i1", "name": "Name", "expression": "/bird|yellow/", "value": "Canary" }
+        ]
+    }
+}}
+<table class="generaltable">
+    <thead>
+        <tr>
+            <th>{{#str}}devicedetectregexexpression, admin{{/str}}</th>
+            <th>{{#str}}devicedetectregexvalue, admin{{/str}}</th>
+        </tr>
+    </thead>
+    <tbody>
+        {{#expressions}}
+            <tr>
+                <td class="c{{index}}">
+                    <input type="text" name="{{name}}[expression{{index}}]" class="form-text text-ltr" value="{{expression}}">
+                </td>
+                <td class="c{{index}}">
+                    <input type="text" name="{{name}}[value{{index}}]" class="form-text text-ltr" value="{{value}}">
+                </td>
+            </tr>
+        {{/expressions}}
+    </tbody>
+</table>
diff --git a/admin/templates/setting_emoticons.mustache b/admin/templates/setting_emoticons.mustache
new file mode 100644 (file)
index 0000000..4c36174
--- /dev/null
@@ -0,0 +1,66 @@
+{{!
+    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/>.
+}}
+{{!
+    @template core_admin/setting_emoticons
+
+    Admin emoticons setting template.
+
+    Context variables required for this template:
+    * name - form element name
+    * id - element id
+
+    Example context (json):
+    {
+        "emoticons": [
+            { "fields": [
+                { "name": "Smile", "field": "f1", "value": ":)" }
+            ]}
+        ]
+    }
+}}
+<div class="form-group">
+    <table id="emoticonsetting" class="admintable generaltable">
+        <thead>
+            <tr>
+                <th>{{#str}}emoticontext, admin{{/str}}</th>
+                <th>{{#str}}emoticonimagename, admin{{/str}}</th>
+                <th>{{#str}}emoticoncomponent, admin{{/str}}</th>
+                <th colspan="2">{{#str}}emoticonalt, admin{{/str}}</th>
+                <th></th>
+            </tr>
+        </thead>
+        <tbody>
+            {{#emoticons}}
+                <tr>
+                    {{#fields}}
+                        <td class="c{{index}}">
+                            <input type="text" name="{{name}}[{{field}}]" class="form-text text-ltr" value="{{value}}">
+                        </td>
+                    {{/fields}}
+                    <td>
+                        {{#icon}}
+                            {{>core/pix_icon}}
+                        {{/icon}}
+                    </td>
+                </tr>
+            {{/emoticons}}
+        </tbody>
+    </table>
+</div>
+<div>
+    <a href="{{reseturl}}">{{#str}}emoticonsreset, admin{{/str}}</a>
+</div>
diff --git a/admin/templates/setting_flag.mustache b/admin/templates/setting_flag.mustache
new file mode 100644 (file)
index 0000000..4876cd8
--- /dev/null
@@ -0,0 +1,38 @@
+{{!
+    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/>.
+}}
+{{!
+    @template core_admin/setting_flag
+
+    Admin flag setting template.
+
+    Context variables required for this template:
+    * name - form element name
+    * value - form element value
+    * checked - is it checked
+    * id - element id
+    * label - element label
+
+    Example context (json):
+    {
+        "name": "test",
+        "id": "test0",
+        "checked": true,
+        "label": "Do you like crackers?"
+    }
+}}
+<input type="checkbox" name="{{name}}" value="{{value}}" id="{{id}}" {{#checked}}checked{{/checked}}>
+<label for="{{id}}">{{label}}</label>
diff --git a/admin/templates/setting_gradecat_combo.mustache b/admin/templates/setting_gradecat_combo.mustache
new file mode 100644 (file)
index 0000000..d64d75f
--- /dev/null
@@ -0,0 +1,51 @@
+{{!
+    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/>.
+}}
+{{!
+    @template core_admin/setting_gradecat_combo
+
+    Admin gradecat_combo setting template.
+
+    Context variables required for this template:
+    * name - form element name
+    * id - element id
+    * options - list of options containing name, value and selected
+    * forced - is it forced
+    * advanced - is it advanced
+
+    Example context (json):
+    {
+        "name": "test",
+        "id": "test0",
+        "options": [
+            { "name": "Option name", "value": "Value", "selected": true }
+        ],
+        "forced": true,
+        "advanced": true
+    }
+}}
+<div class="form-group">
+    <select id="{{id}}" name="{{name}}[value]" class="form-select">
+        {{#options}}
+            <option value="{{value}}" {{#selected}}selected{{/selected}}>{{name}}</option>
+        {{/options}}
+    </select>
+    <input type="checkbox" id="{{id}}force" name="{{name}}[forced]" value="1" {{#forced}}checked{{/forced}}>
+    <label for="{{id}}force">{{#str}}force{{/str}}</label>
+    <input type="checkbox" id="{{id}}adv" name="{{name}}[adv]" value="1" {{#advanced}}checked{{/advanced}}>
+    <label for="{{id}}adv">{{#str}}advanced{{/str}}</label>
+</div>
+
diff --git a/admin/templates/setting_heading.mustache b/admin/templates/setting_heading.mustache
new file mode 100644 (file)
index 0000000..19cf054
--- /dev/null
@@ -0,0 +1,38 @@
+{{!
+    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/>.
+}}
+{{!
+    @template core_admin/setting_heading
+
+    Admin heading setting template.
+
+    Context variables required for this template:
+    * title - Title text
+    * description - Description containing descriptionformatted
+
+    Example context (json):
+    {
+        "title": "Favourite cheeses",
+        "description": true,
+        "descriptionformatted": "Stilton, Cheddar, Edam"
+    }
+}}
+{{#title}}
+    <h3 class="main">{{title}}</h3>
+{{/title}}
+{{#description}}
+    <div class="box generalbox formsettingheading">{{{descriptionformatted}}}</div>
+{{/description}}
diff --git a/admin/templates/setting_special_calendar_weekend.mustache b/admin/templates/setting_special_calendar_weekend.mustache
new file mode 100644 (file)
index 0000000..54715f8
--- /dev/null
@@ -0,0 +1,57 @@
+{{!
+    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/>.
+}}
+{{!
+    @template core_admin/setting_special_calendar_weekend
+
+    Admin special_calendar_weekend setting template.
+
+    Context variables required for this template:
+    * name - form element name
+    * id - form element id
+    * days - list of days containing index, label, checked
+
+    Example context (json):
+    {
+        "name": "test",
+        "id": "i1",
+        "days": [
+            { "index": 0, "label": "Monday", "checked": true },
+            { "index": 0, "label": "Tuesday", "checked": false }
+        ]
+    }
+}}
+<table>
+    <thead>
+        <tr>
+            <input type="hidden" name="{{name}}[xxxxx]" value="1">
+            {{#days}}
+                <td>
+                    <label for="{{id}}{{index}}">{{label}}</label>
+                </td>
+            {{/days}}
+        </tr>
+    </thead>
+    <tbody>
+        <tr>
+            {{#days}}
+                <td>
+                    <input type="checkbox" class="form-checkbox" id="{{id}}{{index}}" name="{{name}}[]" value="{{index}}" {{#checked}}checked{{/checked}}>
+                </td>
+            {{/days}}
+        </tr>
+    </tbody>
+</table>
diff --git a/admin/templates/settings.mustache b/admin/templates/settings.mustache
new file mode 100644 (file)
index 0000000..aba6601
--- /dev/null
@@ -0,0 +1,57 @@
+{{!
+    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/>.
+}}
+{{!
+    @template core_admin/settings
+
+    Admin settings form template.
+
+    Context variables required for this template:
+    * actionurl - url to submit to
+    * params - list of parameters containing name and value
+    * return - page to return to
+    * title - form title
+    * settings - raw html for settings
+    * showsave - true if we need save buttons
+
+    Example context (json):
+    {
+        "actionurl": "/",
+        "return": "/",
+        "title": "Settings Form",
+        "settings": "RAW HTML",
+        "showsave": true
+    }
+}}
+<form action="{{actionurl}}" method="post" id="adminsettings">
+    <div class="settingsform clearfix">
+        {{#params}}
+            <input type="hidden" name="{{name}}" value="{{value}}">
+        {{/params}}
+        <input type="hidden" name="sesskey" value="{{sesskey}}">
+        <input type="hidden" name="return" value="{{return}}">
+        {{>core/prevent_form_autofill_password}}
+        {{#title}}
+            <h2>{{title}}</h2>
+        {{/title}}
+        {{{settings}}}
+        {{#showsave}}
+            <div class="form-buttons">
+                <input type="submit" class="form-submit" value={{#quote}}{{#str}}savechanges, admin{{/str}}{{/quote}}>
+            </div>
+        {{/showsave}}
+    </div>
+</form>
diff --git a/admin/templates/settings_search_results.mustache b/admin/templates/settings_search_results.mustache
new file mode 100644 (file)
index 0000000..dd392f7
--- /dev/null
@@ -0,0 +1,64 @@
+{{!
+    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/>.
+}}
+{{!
+    @template core_admin/settings_search_results
+
+    Admin setting search results template.
+
+    Context variables required for this template:
+    * actionurl - Url to post to
+    * hasresults - True if there are results
+    * results - List of results containing url, title, settings (array of raw html)
+    * showsave - Show save buttons
+
+    Example context (json):
+    {
+        "actionurl": "/",
+        "hasresults": true,
+        "results": [
+            { "url": "/", "title": "Match!", "settings": [ "blah blah blah" ] }
+        ]
+    }
+}}
+<form action="{{actionurl}}" method="post" id="adminsettings">
+    <div>
+        <input type="hidden" name="sesskey" value="{{sesskey}}">
+        {{>core/prevent_form_autofill_password}}
+    </div>
+    <fieldset>
+        <div class="clearer"></div>
+        {{#hasresults}}
+            {{#results}}
+                <h2 class="main">{{#str}}searchresults, admin{{/str}} - <a href="{{url}}">{{{title}}}</a></h2>
+                <fieldset class="adminsettings">
+                    {{#settings}}
+                        <div class="clearer"></div>
+                        {{{.}}}
+                    {{/settings}}
+                </fieldset>
+            {{/results}}
+            {{#showsave}}
+                <div class="form-buttons">
+                    <input type="submit" class="form-submit" value={{#quote}}{{#str}}savechanges, admin{{/str}}{{/quote}}>
+                </div>
+            {{/showsave}}
+        {{/hasresults}}
+        {{^hasresults}}
+            {{#str}}noresults, admin{{/str}}
+        {{/hasresults}}
+    </fieldset>
+</form>
index 0f3e3af..cac5f63 100644 (file)
@@ -439,7 +439,7 @@ Feature: Set up contextual data for tests
     And I follow "Edit   Test Outcome Grade Item 1"
     And the field "Outcome" matches value "Grade outcome 1"
     And I expand all fieldsets
-    And "//div[contains(@class, 'fitem')]/div[contains(@class, 'fitemtitle')]/div[contains(@class, fstaticlabel) and contains(., 'Grade category')]/../../div[contains(@class, 'felement') and contains(., 'Grade category 1')]" "xpath_element" should exist
+    And I should see "Grade category 1" in the "Grade category" "form_row"
     And I press "Cancel"
 
   Scenario: Add a block
index 9f13f6a..21ebff6 100644 (file)
@@ -15,9 +15,6 @@
 .path-admin-tool-lp .progress .bar {
     min-width: 3em;
 }
-.dir-rtl.path-admin-tool-lp .progress .bar {
-    float: right;
-}
 .path-admin-tool-lp [data-region="managecompetencies"] ul[data-enhance="tree"],
 .path-admin-tool-lp [data-region="plans"] ul[data-enhance="tree"],
 .path-admin-tool-lp [data-region="competencylinktree"] ul[data-enhance="linktree"],
     margin-left: 10px;
 }
 
-.dir-rtl.path-admin-tool-lp [data-region="managecompetencies"] .row-fluid [class*="span"] {
-    float: right;
-}
-
 .path-admin-tool-lp [data-region="link-buttons"],
 .path-admin-tool-lp [data-region="move-buttons"] {
     text-align: center;
     height: 400px;
 }
 
-.dir-rtl.path-admin-tool-lp [data-region="filtercompetencies"] input {
-    margin-right: 10px;
-}
-
 .path-admin-tool-lp span.currentdragtarget {
     border: 1px dashed;
 }
 .path-admin-tool-lp [data-region="competencyruleconfig"] [data-region="rule-type"] label {
     padding-right: 10px;
 }
-.dir-rtl.path-admin-tool-lp [data-region="competencyruleconfig"] [data-region="rule-outcome"] label,
-.dir-rtl.path-admin-tool-lp [data-region="competencyruleconfig"] [data-region="rule-type"] label {
-    padding-left: 10px;
-    padding-right: 0;
-}
 .path-admin-tool-lp [data-region="competencyruleconfig"] [data-region="rule-outcome"] label,
 .path-admin-tool-lp [data-region="competencyruleconfig"] [data-region="rule-outcome"] select,
 .path-admin-tool-lp [data-region="competencyruleconfig"] [data-region="rule-type"] label,
     margin-left: -120px;
 }
 
-.dir-rtl .tool-lp-menu.tool-lp-menu-open-left .tool-lp-sub-menu {
-    margin-left: 0px;
-    margin-right: -120px;
-}
-
 /** This highlighting is copied from bootstrap - but can be overridden by a theme */
 .tool-lp-menu .tool-lp-sub-menu .menu-focus a {
     color: #fff ;
@@ -234,17 +213,3 @@ input[type="checkbox"].tool_lp_scale_proficient {
     max-width: 100%;
     box-sizing: border-box;
 }
-
-/** Broader RTL changes */
-.dir-rtl.path-admin-tool-lp .pull-left {
-    float: right;
-}
-.dir-rtl.path-admin-tool-lp .pull-right {
-    float: left;
-}
-.dir-rtl.path-admin-tool-lp dd {
-    margin-right: 10px;
-}
-.dir-rtl.path-admin-tool-lp ul.inline {
-    margin-right: 0;
-}
index 93975af..076f092 100644 (file)
@@ -71,7 +71,8 @@ class tool_task_renderer extends plugin_renderer_base {
                 $editlink = $this->render(new pix_icon('t/locked', get_string('scheduledtaskchangesdisabled', 'tool_task')));
             }
 
-            $namecell = new html_table_cell($task->get_name() . "\n" . html_writer::tag('span', '\\'.get_class($task), array('class' => 'task-class')));
+            $namecell = new html_table_cell($task->get_name() . "\n" . html_writer::tag('span', '\\'.get_class($task),
+                array('class' => 'task-class text-ltr')));
             $namecell->header = true;
 
             $component = $task->get_component();
@@ -117,6 +118,13 @@ class tool_task_renderer extends plugin_renderer_base {
                         new html_table_cell($task->get_fail_delay()),
                         new html_table_cell($customised)));
 
+            // Cron-style values must always be LTR.
+            $row->cells[5]->attributes['class'] = 'text-ltr';
+            $row->cells[6]->attributes['class'] = 'text-ltr';
+            $row->cells[7]->attributes['class'] = 'text-ltr';
+            $row->cells[8]->attributes['class'] = 'text-ltr';
+            $row->cells[9]->attributes['class'] = 'text-ltr';
+
             if ($disabled) {
                 $row->attributes['class'] = 'disabled';
             }
index cb7cab9..8aca57c 100644 (file)
@@ -4,3 +4,8 @@
     color: #888;
     font-size: 0.75em;
 }
+
+#page-admin-tool-task-scheduledtasks input[type=text] {
+    /*rtl:ignore*/
+    direction: ltr;
+}
index dfd2123..29cfec0 100644 (file)
@@ -211,11 +211,13 @@ class admin_uploaduser_form2 extends moodleform {
         $mform->addRule('username', get_string('requiredtemplate', 'tool_uploaduser'), 'required', null, 'client');
         $mform->disabledIf('username', 'uutype', 'eq', UU_USER_ADD_UPDATE);
         $mform->disabledIf('username', 'uutype', 'eq', UU_USER_UPDATE);
+        $mform->setForceLtr('username');
 
         $mform->addElement('text', 'email', get_string('email'), 'maxlength="100" size="30"');
         $mform->setType('email', PARAM_RAW); // No cleaning here. The process verifies it later.
         $mform->disabledIf('email', 'uutype', 'eq', UU_USER_ADD_UPDATE);
         $mform->disabledIf('email', 'uutype', 'eq', UU_USER_UPDATE);
+        $mform->setForceLtr('email');
 
         // only enabled and known to work plugins
         $choices = uu_supported_auths();
@@ -281,6 +283,7 @@ class admin_uploaduser_form2 extends moodleform {
 
         $mform->addElement('text', 'idnumber', get_string('idnumber'), 'maxlength="255" size="25"');
         $mform->setType('idnumber', PARAM_NOTAGS);
+        $mform->setForceLtr('idnumber');
 
         $mform->addElement('text', 'institution', get_string('institution'), 'maxlength="255" size="25"');
         $mform->setType('institution', PARAM_TEXT);
@@ -293,10 +296,12 @@ class admin_uploaduser_form2 extends moodleform {
         $mform->addElement('text', 'phone1', get_string('phone1'), 'maxlength="20" size="25"');
         $mform->setType('phone1', PARAM_NOTAGS);
         $mform->setAdvanced('phone1');
+        $mform->setForceLtr('phone1');
 
         $mform->addElement('text', 'phone2', get_string('phone2'), 'maxlength="20" size="25"');
         $mform->setType('phone2', PARAM_NOTAGS);
         $mform->setAdvanced('phone2');
+        $mform->setForceLtr('phone2');
 
         $mform->addElement('text', 'address', get_string('address'), 'maxlength="255" size="25"');
         $mform->setType('address', PARAM_TEXT);
diff --git a/admin/upgrade.txt b/admin/upgrade.txt
new file mode 100644 (file)
index 0000000..54a7144
--- /dev/null
@@ -0,0 +1,11 @@
+This files describes API changes in /admin/*.
+
+=== 3.2 ===
+
+* Admin settings have been refined to better support right-to-left languages. In RTL,
+  most fields should not have their direction flipped, a URL, a path to a file, ...
+  are always displayed LTR. Most of the admin_setting classes will now prefer LTR.
+  If you must not force left-to-right, here are a few options:
+  * Call admin_setting::set_force_ltr(false) on your setting;
+  * Use the php class admin_setting_localisedtext for text inputs;
+  * Use the php class admin_setting_localisedtextarea for larger text inputs.
diff --git a/auth/classes/output/login.php b/auth/classes/output/login.php
new file mode 100644 (file)
index 0000000..e5e4e7d
--- /dev/null
@@ -0,0 +1,157 @@
+<?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/>.
+
+/**
+ * Login renderable.
+ *
+ * @package    core_auth
+ * @copyright  2016 Frédéric Massart - FMCorz.net
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+namespace core_auth\output;
+defined('MOODLE_INTERNAL') || die();
+
+require_once($CFG->libdir . '/externallib.php');
+
+use context_system;
+use help_icon;
+use moodle_url;
+use renderable;
+use renderer_base;
+use stdClass;
+use templatable;
+
+/**
+ * Login renderable class.
+ *
+ * @package    core_auth
+ * @copyright  2016 Frédéric Massart - FMCorz.net
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class login implements renderable, templatable {
+
+    /** @var bool Whether to auto focus the form fields. */
+    public $autofocusform;
+    /** @var bool Whether we can login as guest. */
+    public $canloginasguest;
+    /** @var bool Whether we can login by e-mail. */
+    public $canloginbyemail;
+    /** @var bool Whether we can sign-up. */
+    public $cansignup;
+    /** @var help_icon The cookies help icon. */
+    public $cookieshelpicon;
+    /** @var string The error message, if any. */
+    public $error;
+    /** @var moodle_url Forgot password URL. */
+    public $forgotpasswordurl;
+    /** @var array Additional identify providers, contains the keys 'url', 'name' and 'icon'. */
+    public $identityproviders;
+    /** @var string Login instructions, if any. */
+    public $instructions;
+    /** @var moodle_url The form action login URL. */
+    public $loginurl;
+    /** @var bool Whether the password can be auto completed. */
+    public $passwordautocomplete;
+    /** @var bool Whether the username should be remembered. */
+    public $rememberusername;
+    /** @var moodle_url The sign-up URL. */
+    public $signupurl;
+    /** @var string The user name to pre-fill the form with. */
+    public $username;
+
+    /**
+     * Constructor.
+     *
+     * @param array $authsequence The enabled sequence of authentication plugins.
+     * @param string $username The username to display.
+     */
+    public function __construct(array $authsequence, $username = '') {
+        global $CFG, $SESSION;
+
+        $this->username = $username;
+
+        $this->canloginasguest = $CFG->guestloginbutton and !isguestuser();
+        $this->canloginbyemail = !empty($CFG->authloginviaemail);
+        $this->cansignup = $CFG->registerauth == 'email' || !empty($CFG->registerauth);
+        $this->cookieshelpicon = new help_icon('cookiesenabled', 'core');
+
+        $this->autofocusform = !empty($CFG->loginpageautofocus);
+        $this->passwordautocomplete = !empty($CFG->loginpasswordautocomplete);
+        $this->rememberusername = isset($CFG->rememberusername) and $CFG->rememberusername == 2;
+
+        $this->forgotpasswordurl = new moodle_url($CFG->httpswwwroot . '/login/forgot_password.php');
+        $this->loginurl = new moodle_url($CFG->httpswwwroot . '/login/index.php');
+        $this->signupurl = new moodle_url('/login/signup.php');
+
+        // Authentication instructions.
+        $this->instructions = $CFG->auth_instructions;
+        if (is_enabled_auth('none')) {
+            $this->instructions = get_string('loginstepsnone');
+        } else if ($CFG->registerauth == 'email' && empty($this->instructions)) {
+            $this->instructions = get_string('loginsteps', 'core', 'signup.php');
+        }
+
+        // Identity providers.
+        $identityproviders = [];
+        foreach ($authsequence as $authname) {
+            $authplugin = get_auth_plugin($authname);
+            $identityproviders = array_merge($identityproviders, $authplugin->loginpage_idp_list($SESSION->wantsurl));
+        }
+        $this->identityproviders = $identityproviders;
+    }
+
+    /**
+     * Set the error message.
+     *
+     * @param string $error The error message.
+     */
+    public function set_error($error) {
+        $this->error = $error;
+    }
+
+    public function export_for_template(renderer_base $output) {
+        global $CFG;
+
+        $identityproviders = array_map(function($idp) use ($output) {
+            $idp['icon'] = $idp['icon']->export_for_template($output);
+            if ($idp['url'] instanceof moodle_url) {
+                $idp['url'] = $idp['url']->out(false);
+            }
+            return $idp;
+        }, $this->identityproviders);
+
+        $data = new stdClass();
+        $data->autofocusform = $this->autofocusform;
+        $data->canloginasguest = $this->canloginasguest;
+        $data->canloginbyemail = $this->canloginbyemail;
+        $data->cansignup = $this->cansignup;
+        $data->cookieshelpicon = $this->cookieshelpicon->export_for_template($output);
+        $data->error = $this->error;
+        $data->forgotpasswordurl = $this->forgotpasswordurl->out(false);
+        $data->hasidentityproviders = !empty($this->identityproviders);
+        $data->hasinstructions = !empty($this->instructions);
+        $data->identityproviders = $identityproviders;
+        list($data->instructions, $data->instructionsformat) = external_format_text($this->instructions, FORMAT_MOODLE,
+            context_system::instance()->id);
+        $data->loginurl = $this->loginurl->out(false);
+        $data->rememberusername = $this->rememberusername;
+        $data->passwordautocomplete = $this->passwordautocomplete;
+        $data->signupurl = $this->signupurl->out(false);
+
+        return $data;
+    }
+}
index 8d04d04..426e101 100644 (file)
@@ -55,7 +55,7 @@
 <tr valign="top" class="required">
     <td align="right"><label for="host"><?php print_string("auth_dbhost_key", "auth_db") ?></label></td>
     <td>
-        <input id="host" name="host" type="text" size="30" value="<?php echo $config->host?>" />
+        <input id="host" name="host" type="text" class="text-ltr" size="30" value="<?php echo $config->host?>" />
         <?php
 
         if (isset($err["host"])) {
@@ -94,7 +94,7 @@
 <tr valign="top" class="required">
     <td align="right"><label for="name"><?php print_string("auth_dbname_key", "auth_db") ?></label></td>
     <td>
-        <input id="name" name="name" type="text" size="30" value="<?php echo $config->name?>" />
+        <input id="name" name="name" type="text" class="text-ltr" size="30" value="<?php echo $config->name?>" />
         <?php
 
         if (isset($err["name"])) {
 <tr valign="top" class="required">
     <td align="right"><label for="user"><?php print_string("auth_dbuser_key", "auth_db") ?></label></td>
     <td>
-        <input id="user" name="user" type="text" size="30" value="<?php echo $config->user?>" />
+        <input id="user" name="user" type="text" class="text-ltr" size="30" value="<?php echo $config->user?>" />
         <?php
 
         if (isset($err["user"])) {
 <tr valign="top" class="required">
     <td align="right"><label for="pass"><?php print_string("auth_dbpass_key", "auth_db") ?></label></td>
     <td>
-        <input id="pass" name="pass" type="password" size="30" value="<?php p($config->pass)?>" autocomplete="off"/>
+        <input id="pass" name="pass" type="password" class="text-ltr" size="30" value="<?php p($config->pass)?>" autocomplete="off"/>
         <?php
 
         if (isset($err["pass"])) {
 <tr valign="top" class="required">
     <td align="right"><label for="table"><?php print_string("auth_dbtable_key", "auth_db") ?></label></td>
     <td>
-        <input id="table" name="table" type="text" size="30" value="<?php echo $config->table?>" />
+        <input id="table" name="table" type="text" class="text-ltr" size="30" value="<?php echo $config->table?>" />
         <?php
 
         if (isset($err["table"])) {
 <tr valign="top" class="required">
     <td align="right"><label for="fielduser"><?php print_string("auth_dbfielduser_key", "auth_db") ?></label></td>
     <td>
-        <input id="fielduser" name="fielduser" type="text" size="30" value="<?php echo $config->fielduser?>" />
+        <input id="fielduser" name="fielduser" type="text" class="text-ltr" size="30" value="<?php echo $config->fielduser?>" />
         <?php
 
         if (isset($err["fielduser"])) {
 <tr valign="top" class="required">
     <td align="right"><label for="fieldpass"><?php print_string("auth_dbfieldpass_key", "auth_db") ?></label></td>
     <td>
-        <input id="fieldpass" name="fieldpass" type="text" size="30" value="<?php echo $config->fieldpass?>" />
+        <input id="fieldpass" name="fieldpass" type="text" class="text-ltr" size="30" value="<?php echo $config->fieldpass?>" />
         <?php
 
         if (isset($err["fieldpass"])) {
 <tr valign="top" class="required">
     <td align="right"><label for="extencoding"><?php print_string("auth_dbextencoding", "auth_db") ?></label></td>
     <td>
-        <input id="extencoding" name="extencoding" type="text" value="<?php echo $config->extencoding ?>" />
+        <input id="extencoding" name="extencoding" type="text" class="text-ltr" value="<?php echo $config->extencoding ?>" />
         <?php
 
         if (isset($err['extencoding'])) {
 <tr valign="top">
     <td align="right"><label for="setupsql"><?php print_string("auth_dbsetupsql", "auth_db") ?></label></td>
     <td>
-        <input id="setupsql" name="setupsql" type="text" value="<?php echo $config->setupsql ?>" />
+        <input id="setupsql" name="setupsql" type="text" class="text-ltr" value="<?php echo $config->setupsql ?>" />
     </td>
     <td><?php print_string('auth_dbsetupsqlhelp', 'auth_db') ?></td>
 </tr>
 <tr valign="top">
     <td align="right"><label for="changepasswordurl"><?php print_string("auth_dbchangepasswordurl_key", "auth_db") ?></label></td>
     <td>
-        <input id="changepasswordurl" name="changepasswordurl" type="text" value="<?php echo $config->changepasswordurl ?>" />
+        <input id="changepasswordurl" name="changepasswordurl" type="text" class="text-ltr" value="<?php echo $config->changepasswordurl ?>" />
         <?php
 
         if (isset($err['changepasswordurl'])) {
index d66cda2..422f474 100644 (file)
@@ -134,7 +134,7 @@ if (!ldap_paged_results_supported($config->ldap_version)) {
         <label for="host_url"><?php print_string('auth_ldap_host_url_key', 'auth_ldap') ?></label>
     </td>
     <td>
-        <input name="host_url" id="host_url" type="text" size="30" value="<?php echo $config->host_url?>" />
+        <input name="host_url" id="host_url" type="text" class="text-ltr" size="30" value="<?php echo $config->host_url?>" />
         <?php if (isset($err['host_url'])) { echo $OUTPUT->error_text($err['host_url']); } ?>
     </td>
     <td>
@@ -174,7 +174,7 @@ if (!ldap_paged_results_supported($config->ldap_version)) {
         <label for="ldapencoding"><?php print_string('auth_ldap_ldap_encoding_key', 'auth_ldap') ?></label>
     </td>
     <td>
-        <input id="ldapencoding" name="ldapencoding" type="text" value="<?php echo $config->ldapencoding ?>" />
+        <input id="ldapencoding" name="ldapencoding" type="text" class="text-ltr" value="<?php echo $config->ldapencoding ?>" />
         <?php if (isset($err['ldapencoding'])) { echo $OUTPUT->error_text($err['ldapencoding']); } ?>
     </td>
     <td>
@@ -186,7 +186,7 @@ if (!ldap_paged_results_supported($config->ldap_version)) {
         <label for="pagesize"><?php print_string('pagesize_key', 'auth_ldap') ?></label>
     </td>
     <td>
-        <input id="pagesize" name="pagesize" type="text" value="<?php echo $config->pagesize ?>" <?php echo $disabled ?>/>
+        <input id="pagesize" name="pagesize" type="text" class="text-ltr" value="<?php echo $config->pagesize ?>" <?php echo $disabled ?>/>
         <?php
             if (isset($err['pagesize'])) { echo $OUTPUT->error_text($err['pagesize']); }
             if ($disabled) {
@@ -221,7 +221,7 @@ if (!ldap_paged_results_supported($config->ldap_version)) {
         <label for="bind_dn"><?php print_string('auth_ldap_bind_dn_key', 'auth_ldap') ?></label>
     </td>
     <td>
-        <input name="bind_dn" id="bind_dn" type="text" size="30" value="<?php echo $config->bind_dn?>" />
+        <input name="bind_dn" id="bind_dn" type="text" class="text-ltr" size="30" value="<?php echo $config->bind_dn?>" />
         <?php if (isset($err['bind_dn'])) { echo $OUTPUT->error_text($err['bind_dn']); } ?>
     </td>
     <td>
@@ -233,7 +233,7 @@ if (!ldap_paged_results_supported($config->ldap_version)) {
         <label for="bind_pw"><?php print_string('auth_ldap_bind_pw_key', 'auth_ldap') ?></label>
     </td>
     <td>
-        <input name="bind_pw" id="bind_pw" type="password" size="30" value="<?php echo $config->bind_pw?>" autocomplete="off"/>
+        <input name="bind_pw" id="bind_pw" type="password" class="text-ltr" size="30" value="<?php echo $config->bind_pw?>" autocomplete="off"/>
         <?php if (isset($err['bind_pw'])) { echo $OUTPUT->error_text($err['bind_pw']); } ?>
     </td>
     <td>
@@ -264,7 +264,7 @@ if (!ldap_paged_results_supported($config->ldap_version)) {
         <label for="contexts"><?php print_string('auth_ldap_contexts_key', 'auth_ldap') ?></label>
     </td>
     <td>
-        <input name="contexts" id="contexts" type="text" size="30" value="<?php echo $config->contexts?>" />
+        <input name="contexts" id="contexts" type="text" class="text-ltr" size="30" value="<?php echo $config->contexts?>" />
         <?php if (isset($err['contexts'])) { echo $OUTPUT->error_text($err['contexts']); } ?>
     </td>
     <td>
@@ -304,7 +304,7 @@ if (!ldap_paged_results_supported($config->ldap_version)) {
         <label for="user_attribute"><?php print_string('auth_ldap_user_attribute_key', 'auth_ldap') ?></label>
     </td>
     <td>
-        <input name="user_attribute" id="user_attribute" type="text" size="30" value="<?php echo $config->user_attribute?>" />
+        <input name="user_attribute" id="user_attribute" type="text" class="text-ltr" size="30" value="<?php echo $config->user_attribute?>" />
         <?php if (isset($err['user_attribute'])) { echo $OUTPUT->error_text($err['user_attribute']); } ?>
     </td>
     <td>
@@ -316,7 +316,7 @@ if (!ldap_paged_results_supported($config->ldap_version)) {
         <label for="suspended_attribute"><?php print_string('auth_ldap_suspended_attribute_key', 'auth_ldap') ?></label>
     </td>
     <td>
-        <input name="suspended_attribute" id="suspended_attribute" type="text" size="30" value="<?php echo $config->suspended_attribute?>" />
+        <input name="suspended_attribute" id="suspended_attribute" type="text" class="text-ltr" size="30" value="<?php echo $config->suspended_attribute?>" />
         <?php if (isset($err['suspended_attribute'])) { echo $OUTPUT->error_text($err['suspended_attribute']); } ?>
     </td>
     <td>
@@ -328,7 +328,7 @@ if (!ldap_paged_results_supported($config->ldap_version)) {
         <label for="memberattribute"><?php print_string('auth_ldap_memberattribute_key', 'auth_ldap') ?></label>
     </td>
     <td>
-        <input name="memberattribute" id="memberattribute" type="text" size="30" value="<?php echo $config->memberattribute?>" />
+        <input name="memberattribute" id="memberattribute" type="text" class="text-ltr" size="30" value="<?php echo $config->memberattribute?>" />
         <?php if (isset($err['memberattribute'])) { echo $OUTPUT->error_text($err['memberattribute']); } ?>
     </td>
     <td>
@@ -340,7 +340,7 @@ if (!ldap_paged_results_supported($config->ldap_version)) {
         <label for="memberattribute_isdn"><?php print_string('auth_ldap_memberattribute_isdn_key', 'auth_ldap') ?></label>
     </td>
     <td>
-        <input name="memberattribute_isdn" id="memberattribute_isdn" type="text" size="30" value="<?php echo $config->memberattribute_isdn?>" />
+        <input name="memberattribute_isdn" id="memberattribute_isdn" type="text" class="text-ltr" size="30" value="<?php echo $config->memberattribute_isdn?>" />
         <?php if (isset($err['memberattribute_isdn'])) { echo $OUTPUT->error_text($err['memberattribute_isdn']); } ?>
     </td>
     <td>
@@ -352,7 +352,7 @@ if (!ldap_paged_results_supported($config->ldap_version)) {
         <label for="objectclass"><?php print_string('auth_ldap_objectclass_key', 'auth_ldap') ?></label>
     </td>
     <td>
-        <input name="objectclass" id="objectclass" type="text" size="30" value="<?php echo $config->objectclass?>" />
+        <input name="objectclass" id="objectclass" type="text" class="text-ltr" size="30" value="<?php echo $config->objectclass?>" />
         <?php if (isset($err['objectclass'])) { echo $OUTPUT->error_text($err['objectclass']); } ?>
     </td>
     <td>
@@ -409,7 +409,7 @@ if (!ldap_paged_results_supported($config->ldap_version)) {
         <label for="changepasswordurl"><?php print_string('auth_ldap_changepasswordurl_key', 'auth_ldap') ?></label>
     </td>
     <td>
-        <input name="changepasswordurl" id="changepasswordurl" type="text" value="<?php echo $config->changepasswordurl ?>" />
+        <input name="changepasswordurl" id="changepasswordurl" type="text" class="text-ltr" value="<?php echo $config->changepasswordurl ?>" />
         <?php if (isset($err['changepasswordurl'])) { echo $OUTPUT->error_text($err['changepasswordurl']); } ?>
     </td>
     <td>
@@ -443,7 +443,7 @@ if (!ldap_paged_results_supported($config->ldap_version)) {
         <label for="expiration_warning"><?php print_string('auth_ldap_expiration_warning_key', 'auth_ldap') ?></label>
     </td>
     <td>
-        <input name="expiration_warning" id="expiration_warning" type="text" size="2" value="<?php echo $config->expiration_warning?>" />
+        <input name="expiration_warning" id="expiration_warning" type="text" class="text-ltr" size="2" value="<?php echo $config->expiration_warning?>" />
         <?php if (isset($err['expiration_warning'])) { echo $OUTPUT->error_text($err['expiration_warning']); } ?>
     </td>
     <td>
@@ -455,7 +455,7 @@ if (!ldap_paged_results_supported($config->ldap_version)) {
         <label for="expireattr"><?php print_string('auth_ldap_expireattr_key', 'auth_ldap') ?></label>
     </td>
     <td>
-        <input name="expireattr" id="expireattr" type="text" size="30" value="<?php echo $config->expireattr?>" />
+        <input name="expireattr" id="expireattr" type="text" class="text-ltr" size="30" value="<?php echo $config->expireattr?>" />
         <?php if (isset($err['expireattr'])) { echo $OUTPUT->error_text($err['expireattr']); } ?>
     </td>
     <td>
@@ -478,7 +478,7 @@ if (!ldap_paged_results_supported($config->ldap_version)) {
         <label for="graceattr"><?php print_string('auth_ldap_gracelogin_key', 'auth_ldap') ?></label>
     </td>
     <td>
-        <input name="graceattr" id="graceattr" type="text" size="30" value="<?php echo $config->graceattr?>" />
+        <input name="graceattr" id="graceattr" type="text" class="text-ltr" size="30" value="<?php echo $config->graceattr?>" />
         <?php if (isset($err['graceattr'])) { echo $OUTPUT->error_text($err['graceattr']); } ?>
     </td>
     <td>
@@ -506,7 +506,7 @@ if (!ldap_paged_results_supported($config->ldap_version)) {
         <label for="create_context"><?php print_string('auth_ldap_create_context_key', 'auth_ldap') ?></label>
     </td>
     <td>
-        <input name="create_context" id="create_context" type="text" size="30" value="<?php echo $config->create_context?>" />
+        <input name="create_context" id="create_context" type="text" class="text-ltr" size="30" value="<?php echo $config->create_context?>" />
         <?php if (isset($err['create_context'])) { echo $OUTPUT->error_text($err['create_context']); } ?>
     </td>
     <td>
@@ -523,7 +523,7 @@ if (!ldap_paged_results_supported($config->ldap_version)) {
         <label for="creators"><?php print_string('auth_ldap_creators_key', 'auth_ldap') ?></label>
     </td>
     <td>
-        <input name="creators" id="creators" type="text" size="30" value="<?php echo $config->creators?>" />
+        <input name="creators" id="creators" type="text" class="text-ltr" size="30" value="<?php echo $config->creators?>" />
         <?php if (isset($err['creators'])) { echo $OUTPUT->error_text($err['creators']); } ?>
     </td>
     <td>
@@ -584,7 +584,7 @@ if (!ldap_paged_results_supported($config->ldap_version)) {
         <label for="ntlmsso_subnet"><?php print_string('auth_ntlmsso_subnet_key', 'auth_ldap') ?></label>
     </td>
     <td>
-        <input name="ntlmsso_subnet" id="ntlmsso_subnet" type="text" size="30" value="<?php p($config->ntlmsso_subnet) ?>" />
+        <input name="ntlmsso_subnet" id="ntlmsso_subnet" type="text" class="text-ltr" size="30" value="<?php p($config->ntlmsso_subnet) ?>" />
     </td>
     <td>
         <?php print_string('auth_ntlmsso_subnet', 'auth_ldap') ?>
@@ -622,7 +622,7 @@ if (!ldap_paged_results_supported($config->ldap_version)) {
         <label for="ntlmsso_remoteuserformat"><?php print_string('auth_ntlmsso_remoteuserformat_key', 'auth_ldap') ?></label>
     </td>
     <td>
-        <input name="ntlmsso_remoteuserformat" id="ntlmsso_remoteuserformat" type="text" size="30" value="<?php echo $config->ntlmsso_remoteuserformat?>" />
+        <input name="ntlmsso_remoteuserformat" id="ntlmsso_remoteuserformat" type="text" class="text-ltr" size="30" value="<?php echo $config->ntlmsso_remoteuserformat?>" />
         <?php if (isset($err['ntlmsso_remoteuserformat'])) { echo $OUTPUT->error_text($err['ntlmsso_remoteuserformat']); } ?>
     </td>
     <td>
index 6d7ad52..41d64ea 100644 (file)
Binary files a/availability/condition/completion/yui/build/moodle-availability_completion-form/moodle-availability_completion-form-debug.js and b/availability/condition/completion/yui/build/moodle-availability_completion-form/moodle-availability_completion-form-debug.js differ
index 17f1813..e780555 100644 (file)
Binary files a/availability/condition/completion/yui/build/moodle-availability_completion-form/moodle-availability_completion-form-min.js and b/availability/condition/completion/yui/build/moodle-availability_completion-form/moodle-availability_completion-form-min.js differ
index 6d7ad52..41d64ea 100644 (file)
Binary files a/availability/condition/completion/yui/build/moodle-availability_completion-form/moodle-availability_completion-form.js and b/availability/condition/completion/yui/build/moodle-availability_completion-form/moodle-availability_completion-form.js differ
index be694ed..89b1058 100644 (file)
@@ -54,7 +54,7 @@ M.availability_completion.form.getNode = function(json) {
     // Add event handlers (first time only).
     if (!M.availability_completion.form.addedEvents) {
         M.availability_completion.form.addedEvents = true;
-        var root = Y.one('#fitem_id_availabilityconditionsjson');
+        var root = Y.one('.availability-field');
         root.delegate('change', function() {
             // Whichever dropdown changed, just update the form.
             M.core_availability.form.update();
index e338aac..7530a28 100644 (file)
Binary files a/availability/condition/date/yui/build/moodle-availability_date-form/moodle-availability_date-form-debug.js and b/availability/condition/date/yui/build/moodle-availability_date-form/moodle-availability_date-form-debug.js differ
index eeb12a3..8a9bd5d 100644 (file)
Binary files a/availability/condition/date/yui/build/moodle-availability_date-form/moodle-availability_date-form-min.js and b/availability/condition/date/yui/build/moodle-availability_date-form/moodle-availability_date-form-min.js differ
index e338aac..7530a28 100644 (file)
Binary files a/availability/condition/date/yui/build/moodle-availability_date-form/moodle-availability_date-form.js and b/availability/condition/date/yui/build/moodle-availability_date-form/moodle-availability_date-form.js differ
index 2c5df1e..e1ee836 100644 (file)
@@ -70,7 +70,7 @@ M.availability_date.form.getNode = function(json) {
     if (!M.availability_date.form.addedEvents) {
         M.availability_date.form.addedEvents = true;
 
-        var root = Y.one('#fitem_id_availabilityconditionsjson');
+        var root = Y.one('.availability-field');
         root.delegate('change', function() {
             // For the direction, just update the form fields.
             M.core_availability.form.update();
index f5c41de..734994e 100644 (file)
Binary files a/availability/condition/grade/yui/build/moodle-availability_grade-form/moodle-availability_grade-form-debug.js and b/availability/condition/grade/yui/build/moodle-availability_grade-form/moodle-availability_grade-form-debug.js differ
index c7467b5..4d4a50c 100644 (file)
Binary files a/availability/condition/grade/yui/build/moodle-availability_grade-form/moodle-availability_grade-form-min.js and b/availability/condition/grade/yui/build/moodle-availability_grade-form/moodle-availability_grade-form-min.js differ
index f5c41de..734994e 100644 (file)
Binary files a/availability/condition/grade/yui/build/moodle-availability_grade-form/moodle-availability_grade-form.js and b/availability/condition/grade/yui/build/moodle-availability_grade-form/moodle-availability_grade-form.js differ
index 7a51507..0286eb7 100644 (file)
@@ -84,7 +84,7 @@ M.availability_grade.form.getNode = function(json) {
     if (!M.availability_grade.form.addedEvents) {
         M.availability_grade.form.addedEvents = true;
 
-        var root = Y.one('#fitem_id_availabilityconditionsjson');
+        var root = Y.one('.availability-field');
         root.delegate('change', function() {
             // For the grade item, just update the form fields.
             M.core_availability.form.update();
index a1b8a65..9ddaa66 100644 (file)
Binary files a/availability/condition/group/yui/build/moodle-availability_group-form/moodle-availability_group-form-debug.js and b/availability/condition/group/yui/build/moodle-availability_group-form/moodle-availability_group-form-debug.js differ
index 3949118..040d395 100644 (file)
Binary files a/availability/condition/group/yui/build/moodle-availability_group-form/moodle-availability_group-form-min.js and b/availability/condition/group/yui/build/moodle-availability_group-form/moodle-availability_group-form-min.js differ
index a1b8a65..9ddaa66 100644 (file)
Binary files a/availability/condition/group/yui/build/moodle-availability_group-form/moodle-availability_group-form.js and b/availability/condition/group/yui/build/moodle-availability_group-form/moodle-availability_group-form.js differ
index f9ec44f..84eaa33 100644 (file)
@@ -56,7 +56,7 @@ M.availability_group.form.getNode = function(json) {
     // Add event handlers (first time only).
     if (!M.availability_group.form.addedEvents) {
         M.availability_group.form.addedEvents = true;
-        var root = Y.one('#fitem_id_availabilityconditionsjson');
+        var root = Y.one('.availability-field');
         root.delegate('change', function() {
             // Just update the form fields.
             M.core_availability.form.update();
index f3d616a..c60c681 100644 (file)
Binary files a/availability/condition/grouping/yui/build/moodle-availability_grouping-form/moodle-availability_grouping-form-debug.js and b/availability/condition/grouping/yui/build/moodle-availability_grouping-form/moodle-availability_grouping-form-debug.js differ
index 34c9759..5f1bcbc 100644 (file)
Binary files a/availability/condition/grouping/yui/build/moodle-availability_grouping-form/moodle-availability_grouping-form-min.js and b/availability/condition/grouping/yui/build/moodle-availability_grouping-form/moodle-availability_grouping-form-min.js differ
index f3d616a..c60c681 100644 (file)
Binary files a/availability/condition/grouping/yui/build/moodle-availability_grouping-form/moodle-availability_grouping-form.js and b/availability/condition/grouping/yui/build/moodle-availability_grouping-form/moodle-availability_grouping-form.js differ
index b0fd7c9..ad3135e 100644 (file)
@@ -51,7 +51,7 @@ M.availability_grouping.form.getNode = function(json) {
     // Add event handlers (first time only).
     if (!M.availability_grouping.form.addedEvents) {
         M.availability_grouping.form.addedEvents = true;
-        var root = Y.one('#fitem_id_availabilityconditionsjson');
+        var root = Y.one('.availability-field');
         root.delegate('change', function() {
             // Just update the form fields.
             M.core_availability.form.update();
index be46a7e..9909ea2 100644 (file)
Binary files a/availability/condition/profile/yui/build/moodle-availability_profile-form/moodle-availability_profile-form-debug.js and b/availability/condition/profile/yui/build/moodle-availability_profile-form/moodle-availability_profile-form-debug.js differ
index 63a87d3..303b419 100644 (file)
Binary files a/availability/condition/profile/yui/build/moodle-availability_profile-form/moodle-availability_profile-form-min.js and b/availability/condition/profile/yui/build/moodle-availability_profile-form/moodle-availability_profile-form-min.js differ
index be46a7e..9909ea2 100644 (file)
Binary files a/availability/condition/profile/yui/build/moodle-availability_profile-form/moodle-availability_profile-form.js and b/availability/condition/profile/yui/build/moodle-availability_profile-form/moodle-availability_profile-form.js differ
index 5336589..db73335 100644 (file)
@@ -89,7 +89,7 @@ M.availability_profile.form.getNode = function(json) {
             ancestorNode.one('input[name=value]').set('disabled', novalue);
             M.core_availability.form.update();
         };
-        var root = Y.one('#fitem_id_availabilityconditionsjson');
+        var root = Y.one('.availability-field');
         root.delegate('change', function() {
              updateForm(this);
         }, '.availability_profile select');
index c75e14a..40b36ad 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 76c4339..2668730 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 c75e14a..40b36ad 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 7905db3..8da9cad 100644 (file)
@@ -4,6 +4,7 @@
         "base",
         "node",
         "event",
+        "event-delegate",
         "panel",
         "moodle-core-notification-dialogue",
         "json"
index 508fd42..206ac42 100644 (file)
@@ -31,7 +31,7 @@ Feature: Award badges
     And I press "Enable access"
     And I press "Continue"
     And I click on "Admin User" "link"
-    And I follow "Profile" in the open menu
+    And I choose "Profile" in the open action menu
     And I follow "Edit profile"
     And I expand all fieldsets
     And I set the field "Phone" to "123456789"
@@ -204,7 +204,7 @@ Feature: Award badges
     And I upload "badges/tests/behat/badge.png" file to "Image" filemanager
     And I press "Create badge"
     And I set the field "type" to "Course completion"
-    And I set the field with xpath "//fieldset/input[1]" to "0"
+    And I set the field with xpath ".//*[contains(., 'Minimum grade required')]/ancestor::*[contains(concat(' ', @class, ' '), ' fitem ')]//input[1]" to "0"
     And I press "Save"
     And I press "Enable access"
     When I press "Continue"
index ae319eb..781df18 100644 (file)
@@ -1,11 +1,6 @@
-.block_activity_results {text-align: center;}
 .block_activity_results h1 {margin: 4px;font-size: 1.1em;}
 .block_activity_results table.grades {text-align: left; width: 100%;}
 .block_activity_results table.grades .number{text-align: left; width:10%;}
 .block_activity_results table.grades .name{text-align: left; width:77%;}
 .block_activity_results table.grades .grade {text-align: right;}
 .block_activity_results table.grades caption {font-weight: bold; font-size: 18px;}
-
-.dir-rtl .block_activity_results table.grades {text-align: right;}
-.dir-rtl .block_activity_results table.grades .number{text-align: right;}
-.dir-rtl .block_activity_results table.grades .name{text-align: right;}
index ff5b266..210a163 100644 (file)
@@ -94,7 +94,7 @@ class behat_block_comments extends behat_base {
         // Using xpath liternal to avoid possible problems with comments containing quotes.
         $commentliteral = behat_context_helper::escape($comment);
 
-        $commentxpath = "//div[contains(concat(' ', normalize-space(@class), ' '), ' block_comments ')]" .
+        $commentxpath = "//*[contains(concat(' ', normalize-space(@class), ' '), ' block_comments ')]" .
             "/descendant::div[@class='comment-message'][contains(., $commentliteral)]";
         $commentnode = $this->find('xpath', $commentxpath, $exception);
 
index 7a6ab5e..d7d1482 100644 (file)
@@ -7,10 +7,6 @@
     text-align: right;
 }
 
-.dir-rtl .block_course_overview .categorypath{
-    text-align: left;
-}
-
 .block_course_overview .content {
     margin: 0 20px;
 }
@@ -26,9 +22,6 @@
 .block_course_overview .profilepicture {
     float: left;
 }
-.dir-rtl.block_course_overview .profilepicture {
-    float:right;
-}
 .block_course_overview .welcome_area {
     width: 100%;
     padding-bottom: 5px;
     border-collapse: separate;
     clear: none;
 }
-.dir-rtl .block_course_overview .welcome_message {
-    float:right;
-}
 
 .block_course_overview .content h2.title {
     float: left;
     margin: 0 0 .5em 0;
     position: relative;
 }
-.dir-rtl .block_course_overview .content h2.title {
-    float:right;
-}
 
 .block_course_overview .course_title {
     position: relative;
     float: left;
     padding: 2px 10px 0 0;
 }
-.dir-rtl.editing .block_course_overview .move {
-    float:right;
-    padding: 2px 10px;
-}
 
 .block_course_overview .course_list {
     width: 100%;
 .block_course_overview .activity_info {
     clear: both;
 }
-.dir-rtl .block_course_overview .activity_info {
-    margin-right: 25px;
-}
 
 .block_course_overview .activity_overview {
     padding: 2px;
 }
 .block_course_overview .activity_overview img.iconlarge { vertical-align: text-bottom; margin-right: 6px; }
-.dir-rtl .block_course_overview .activity_overview img.iconlarge { margin-left: 6px; margin-right: 0;}
 
 .block_course_overview .singleselect {
     text-align: left;
     margin: 0;
 }
-.dir-rtl .block_course_overview .singleselect {
-    text-align: right;
-}
 
 .block_course_overview .content .course_list .movehere{
     margin-bottom: 15px;
index 65e7d9a..a33f66e 100644 (file)
@@ -35,7 +35,7 @@ Feature: Course summary block used in a course
     And I turn editing mode on
     Then I should see "Proved the course summary block works!" in the "Course summary" "block"
     And I should see "Course summary" in the "Course summary" "block"
-    And I click on "Edit" "link" in the "Course summary" "block"
+    And I click on ".editbutton a" "css_element" in the "Course summary" "block"
     Then I should see "Edit course settings" in the "h2" "css_element"
 
   Scenario: Teacher can not see edit icon when edit mode is off
index 0655dc3..e8980b0 100644 (file)
@@ -26,7 +26,7 @@ Feature: Course summary block used on the frontpage
     And I follow "Turn editing on"
     Then I should see "Proved the summary block works!" in the "Course/site summary" "block"
     And I should not see "Course summary" in the "Course/site summary" "block"
-    And I click on "Edit" "link" in the "Course/site summary" "block"
+    And I click on ".editbutton a" "css_element" in the "Course/site summary" "block"
     Then I should see "Front page settings" in the "h2" "css_element"
 
   Scenario: Admin can not see edit icon when edit mode is off
index aaa2baa..9b7ef1a 100644 (file)
@@ -4,6 +4,3 @@
 .block_messages .content .list li.listentry .message {float:right;}
 .block_messages .content .info {text-align:center;}
 .block_messages .content .footer {clear:both;}
-
-.dir-rtl .block_messages .content .list li.listentry .user {float:right;}
-.dir-rtl .block_messages .content .list li.listentry .message {float:left;}
\ No newline at end of file