Merge branch 'MDL-66999-master' of git://github.com/bmbrands/moodle

This commit is contained in:
Adrian Greeve 2019-12-23 14:26:39 +08:00
commit f00542c485
69 changed files with 1487 additions and 2168 deletions

View file

@ -2757,7 +2757,7 @@ class admin_setting_configfile extends admin_setting_configtext {
];
if ($context->readonly) {
$this->visiblename .= '<div class="form-overridden">'.get_string('execpathnotallowed', 'admin').'</div>';
$this->visiblename .= '<div class="alert alert-info">'.get_string('execpathnotallowed', 'admin').'</div>';
}
$element = $OUTPUT->render_from_template('core_admin/setting_configfile', $context);
@ -2818,7 +2818,7 @@ class admin_setting_configexecutable extends admin_setting_configfile {
];
if (!empty($CFG->preventexecpath)) {
$this->visiblename .= '<div class="form-overridden">'.get_string('execpathnotallowed', 'admin').'</div>';
$this->visiblename .= '<div class="alert alert-info">'.get_string('execpathnotallowed', 'admin').'</div>';
}
$element = $OUTPUT->render_from_template('core_admin/setting_configexecutable', $context);
@ -2858,7 +2858,7 @@ class admin_setting_configdirectory extends admin_setting_configfile {
];
if (!empty($CFG->preventexecpath)) {
$this->visiblename .= '<div class="form-overridden">'.get_string('execpathnotallowed', 'admin').'</div>';
$this->visiblename .= '<div class="alert alert-info">'.get_string('execpathnotallowed', 'admin').'</div>';
}
$element = $OUTPUT->render_from_template('core_admin/setting_configdirectory', $context);
@ -9548,7 +9548,7 @@ class admin_setting_webservicesoverview extends admin_setting {
$url = new moodle_url("/admin/search.php?query=enablewebservices");
$row[0] = "1. " . html_writer::tag('a', get_string('enablews', 'webservice'),
array('href' => $url));
$status = html_writer::tag('span', get_string('no'), array('class' => 'statuscritical'));
$status = html_writer::tag('span', get_string('no'), array('class' => 'badge badge-danger'));
if ($CFG->enablewebservices) {
$status = get_string('yes');
}
@ -9561,7 +9561,7 @@ class admin_setting_webservicesoverview extends admin_setting {
$url = new moodle_url("/admin/settings.php?section=webserviceprotocols");
$row[0] = "2. " . html_writer::tag('a', get_string('enableprotocols', 'webservice'),
array('href' => $url));
$status = html_writer::tag('span', get_string('none'), array('class' => 'statuscritical'));
$status = html_writer::tag('span', get_string('none'), array('class' => 'badge badge-danger'));
//retrieve activated protocol
$active_protocols = empty($CFG->webserviceprotocols) ?
array() : explode(',', $CFG->webserviceprotocols);
@ -9672,7 +9672,7 @@ class admin_setting_webservicesoverview extends admin_setting {
$url = new moodle_url("/admin/search.php?query=enablewebservices");
$row[0] = "1. " . html_writer::tag('a', get_string('enablews', 'webservice'),
array('href' => $url));
$status = html_writer::tag('span', get_string('no'), array('class' => 'statuscritical'));
$status = html_writer::tag('span', get_string('no'), array('class' => 'badge badge-danger'));
if ($CFG->enablewebservices) {
$status = get_string('yes');
}
@ -9685,7 +9685,7 @@ class admin_setting_webservicesoverview extends admin_setting {
$url = new moodle_url("/admin/settings.php?section=webserviceprotocols");
$row[0] = "2. " . html_writer::tag('a', get_string('enableprotocols', 'webservice'),
array('href' => $url));
$status = html_writer::tag('span', get_string('none'), array('class' => 'statuscritical'));
$status = html_writer::tag('span', get_string('none'), array('class' => 'badge badge-danger'));
//retrieve activated protocol
$active_protocols = empty($CFG->webserviceprotocols) ?
array() : explode(',', $CFG->webserviceprotocols);
@ -10770,10 +10770,10 @@ class admin_setting_searchsetupinfo extends admin_setting {
$row[0] = '1. ' . html_writer::tag('a', get_string('selectsearchengine', 'admin'),
array('href' => $url));
$status = html_writer::tag('span', get_string('no'), array('class' => 'statuscritical'));
$status = html_writer::tag('span', get_string('no'), array('class' => 'badge badge-danger'));
if (!empty($CFG->searchengine)) {
$status = html_writer::tag('span', get_string('pluginname', 'search_' . $CFG->searchengine),
array('class' => 'statusok'));
array('class' => 'badge badge-success'));
}
$row[1] = $status;
@ -10785,9 +10785,9 @@ class admin_setting_searchsetupinfo extends admin_setting {
$row[0] = '2. ' . html_writer::tag('a', get_string('enablesearchareas', 'admin'),
array('href' => $url));
$status = html_writer::tag('span', get_string('no'), array('class' => 'statuscritical'));
$status = html_writer::tag('span', get_string('no'), array('class' => 'badge badge-danger'));
if ($anyenabled) {
$status = html_writer::tag('span', get_string('yes'), array('class' => 'statusok'));
$status = html_writer::tag('span', get_string('yes'), array('class' => 'badge badge-success'));
}
$row[1] = $status;
@ -10797,7 +10797,7 @@ class admin_setting_searchsetupinfo extends admin_setting {
$row = array();
if (empty($CFG->searchengine)) {
$row[0] = '3. ' . get_string('setupsearchengine', 'admin');
$row[1] = html_writer::tag('span', get_string('no'), array('class' => 'statuscritical'));
$row[1] = html_writer::tag('span', get_string('no'), array('class' => 'badge badge-danger'));
} else {
$url = new moodle_url('/admin/settings.php?section=search' . $CFG->searchengine);
$row[0] = '3. ' . html_writer::tag('a', get_string('setupsearchengine', 'admin'),
@ -10810,9 +10810,9 @@ class admin_setting_searchsetupinfo extends admin_setting {
$serverstatus = $e->getMessage();
}
if ($serverstatus === true) {
$status = html_writer::tag('span', get_string('yes'), array('class' => 'statusok'));
$status = html_writer::tag('span', get_string('yes'), array('class' => 'badge badge-success'));
} else {
$status = html_writer::tag('span', $serverstatus, array('class' => 'statuscritical'));
$status = html_writer::tag('span', $serverstatus, array('class' => 'badge badge-danger'));
}
$row[1] = $status;
}
@ -10823,9 +10823,9 @@ class admin_setting_searchsetupinfo extends admin_setting {
$url = new moodle_url('/admin/searchareas.php');
$row[0] = '4. ' . html_writer::tag('a', get_string('indexdata', 'admin'), array('href' => $url));
if ($anyindexed) {
$status = html_writer::tag('span', get_string('yes'), array('class' => 'statusok'));
$status = html_writer::tag('span', get_string('yes'), array('class' => 'badge badge-success'));
} else {
$status = html_writer::tag('span', get_string('no'), array('class' => 'statuscritical'));
$status = html_writer::tag('span', get_string('no'), array('class' => 'badge badge-danger'));
}
$row[1] = $status;
$table->data[] = $row;
@ -10835,9 +10835,9 @@ class admin_setting_searchsetupinfo extends admin_setting {
$url = new moodle_url("/admin/search.php?query=enableglobalsearch");
$row[0] = '5. ' . html_writer::tag('a', get_string('enableglobalsearch', 'admin'),
array('href' => $url));
$status = html_writer::tag('span', get_string('no'), array('class' => 'statuscritical'));
$status = html_writer::tag('span', get_string('no'), array('class' => 'badge badge-danger'));
if (\core_search\manager::is_global_search_enabled()) {
$status = html_writer::tag('span', get_string('yes'), array('class' => 'statusok'));
$status = html_writer::tag('span', get_string('yes'), array('class' => 'badge badge-success'));
}
$row[1] = $status;
$table->data[] = $row;

View file

@ -217,7 +217,7 @@ Y.namespace('M.atto_recordrtc').Button = Y.Base.create('button', Y.M.editor_atto
_createContent: function(type) {
var isAudio = (type === 'audio'),
bsRow = 'row',
bsCol = 'col-xs-',
bsCol = 'col-',
bsAlDang = 'alert-danger',
bsSsBtn = 'btn btn-lg btn-outline-danger btn-block';

View file

@ -1 +1 @@
YUI.add("moodle-atto_recordrtc-button",function(e,t){var n="atto_recordrtc",r='<div class="{{PLUGINNAME}} container-fluid"><div class="{{bs_row}} hide"><div class="{{bs_col}}12"><div id="alert-danger" class="alert {{bs_al_dang}}"><strong>{{insecurealert_title}}</strong> {{insecurealert}}</div></div></div><div class="{{bs_row}} hide">{{#if isAudio}}<div class="{{bs_col}}1"></div><div class="{{bs_col}}10"><audio id="player"></audio></div><div class="{{bs_col}}1"></div>{{else}}<div class="{{bs_col}}12"><video id="player"></video></div>{{/if}}</div><div class="{{bs_row}}"><div class="{{bs_col}}1"></div><div class="{{bs_col}}10"><button id="start-stop" class="{{bs_ss_btn}}">{{startrecording}}</button></div><div class="{{bs_col}}1"></div></div><div class="{{bs_row}} hide"><div class="{{bs_col}}3"></div><div class="{{bs_col}}6"><button id="upload" class="btn btn-primary btn-block">{{attachrecording}}</button></div><div class="{{bs_col}}3"></div></div></div>';e.namespace("M.atto_recordrtc").Button=e.Base.create("button",e.M.editor_atto.EditorPlugin,[],{_lang:"en",initializer:function(){if(this.get("host").canShowFilepicker("media")){var e=this.get("allowedtypes"),t=!1;if(e==="both"||e==="audio")this._addButton("audio",this._audio),t=!0;if(e==="both"||e==="video")this._addButton("video",this._video),t=!0;if(!t)return;var n=this.getDialogue({width:1e3,focusAfterHide:null});n.after("visibleChange",function(){var e=!n.get("visible"),t=M.atto_recordrtc.commonmodule;e&&(window.clearInterval(t.countdownTicker),t.mediaRecorder&&t.mediaRecorder.state!=="inactive"&&t.mediaRecorder.stop(),t.stream&&t.stream.getTracks().forEach(function(e){e.readyState!=="ended"&&e.stop()}))}),n.on("click",function(){this.centered()}),window.require(["core/adapter"],function(e){window.adapter=e})}},_addButton:function(e,t){this.addButton({buttonName:e,icon:this.get(e+"rtcicon"),iconComponent:n,callback:t,title:e+"rtc",tags:e+"rtc",tagMatchRequiresAll:!1})},_audio:function(){var e=this.getDialogue();e.set("headerContent",M.util.get_string("audiortc","atto_recordrtc")),e.set("bodyContent",this._createContent("audio")),e.show(),M.atto_recordrtc.audiomodule.init(this)},_video:function(){var e=this.getDialogue();e.set("headerContent",M.util.get_string("videortc","atto_recordrtc")),e.set("bodyContent",this._createContent("video")),e.show(),M.atto_recordrtc.videomodule.init(this)},_createContent:function(t){var i=t==="audio",s="row",o="col-xs-",u="alert-danger",a="btn btn-lg btn-outline-danger btn-block",f=e.Handlebars.compile(r)({PLUGINNAME:n,isAudio:i,bs_row:s,bs_col:o,bs_al_dang:u,bs_ss_btn:a,insecurealert_title:M.util.get_string("insecurealert_title","atto_recordrtc"),insecurealert:M.util.get_string("insecurealert","atto_recordrtc"),startrecording:M.util.get_string("startrecording","atto_recordrtc"),attachrecording:M.util.get_string("attachrecording","atto_recordrtc")});return f},closeDialogue:function(e){e.getDialogue().hide(),e.editor.focus()},setLink:function(e,t){e.getDialogue().hide(),e.editor.focus(),e.get("host").insertContentAtFocusPoint(t),e.markUpdated()}},{ATTRS:{contextid:{value:null},sesskey:{value:null},allowedtypes:{value:null},audiobitrate:{value:null},videobitrate:{value:null},timelimit:{value:null},audiortcicon:{value:null},videortcicon:{value:null},maxrecsize:{value:null}}})},"@VERSION@",{requires:["moodle-editor_atto-plugin","moodle-atto_recordrtc-recording"]});
YUI.add("moodle-atto_recordrtc-button",function(e,t){var n="atto_recordrtc",r='<div class="{{PLUGINNAME}} container-fluid"><div class="{{bs_row}} hide"><div class="{{bs_col}}12"><div id="alert-danger" class="alert {{bs_al_dang}}"><strong>{{insecurealert_title}}</strong> {{insecurealert}}</div></div></div><div class="{{bs_row}} hide">{{#if isAudio}}<div class="{{bs_col}}1"></div><div class="{{bs_col}}10"><audio id="player"></audio></div><div class="{{bs_col}}1"></div>{{else}}<div class="{{bs_col}}12"><video id="player"></video></div>{{/if}}</div><div class="{{bs_row}}"><div class="{{bs_col}}1"></div><div class="{{bs_col}}10"><button id="start-stop" class="{{bs_ss_btn}}">{{startrecording}}</button></div><div class="{{bs_col}}1"></div></div><div class="{{bs_row}} hide"><div class="{{bs_col}}3"></div><div class="{{bs_col}}6"><button id="upload" class="btn btn-primary btn-block">{{attachrecording}}</button></div><div class="{{bs_col}}3"></div></div></div>';e.namespace("M.atto_recordrtc").Button=e.Base.create("button",e.M.editor_atto.EditorPlugin,[],{_lang:"en",initializer:function(){if(this.get("host").canShowFilepicker("media")){var e=this.get("allowedtypes"),t=!1;if(e==="both"||e==="audio")this._addButton("audio",this._audio),t=!0;if(e==="both"||e==="video")this._addButton("video",this._video),t=!0;if(!t)return;var n=this.getDialogue({width:1e3,focusAfterHide:null});n.after("visibleChange",function(){var e=!n.get("visible"),t=M.atto_recordrtc.commonmodule;e&&(window.clearInterval(t.countdownTicker),t.mediaRecorder&&t.mediaRecorder.state!=="inactive"&&t.mediaRecorder.stop(),t.stream&&t.stream.getTracks().forEach(function(e){e.readyState!=="ended"&&e.stop()}))}),n.on("click",function(){this.centered()}),window.require(["core/adapter"],function(e){window.adapter=e})}},_addButton:function(e,t){this.addButton({buttonName:e,icon:this.get(e+"rtcicon"),iconComponent:n,callback:t,title:e+"rtc",tags:e+"rtc",tagMatchRequiresAll:!1})},_audio:function(){var e=this.getDialogue();e.set("headerContent",M.util.get_string("audiortc","atto_recordrtc")),e.set("bodyContent",this._createContent("audio")),e.show(),M.atto_recordrtc.audiomodule.init(this)},_video:function(){var e=this.getDialogue();e.set("headerContent",M.util.get_string("videortc","atto_recordrtc")),e.set("bodyContent",this._createContent("video")),e.show(),M.atto_recordrtc.videomodule.init(this)},_createContent:function(t){var i=t==="audio",s="row",o="col-",u="alert-danger",a="btn btn-lg btn-outline-danger btn-block",f=e.Handlebars.compile(r)({PLUGINNAME:n,isAudio:i,bs_row:s,bs_col:o,bs_al_dang:u,bs_ss_btn:a,insecurealert_title:M.util.get_string("insecurealert_title","atto_recordrtc"),insecurealert:M.util.get_string("insecurealert","atto_recordrtc"),startrecording:M.util.get_string("startrecording","atto_recordrtc"),attachrecording:M.util.get_string("attachrecording","atto_recordrtc")});return f},closeDialogue:function(e){e.getDialogue().hide(),e.editor.focus()},setLink:function(e,t){e.getDialogue().hide(),e.editor.focus(),e.get("host").insertContentAtFocusPoint(t),e.markUpdated()}},{ATTRS:{contextid:{value:null},sesskey:{value:null},allowedtypes:{value:null},audiobitrate:{value:null},videobitrate:{value:null},timelimit:{value:null},audiortcicon:{value:null},videortcicon:{value:null},maxrecsize:{value:null}}})},"@VERSION@",{requires:["moodle-editor_atto-plugin","moodle-atto_recordrtc-recording"]});

View file

@ -217,7 +217,7 @@ Y.namespace('M.atto_recordrtc').Button = Y.Base.create('button', Y.M.editor_atto
_createContent: function(type) {
var isAudio = (type === 'audio'),
bsRow = 'row',
bsCol = 'col-xs-',
bsCol = 'col-',
bsAlDang = 'alert-danger',
bsSsBtn = 'btn btn-lg btn-outline-danger btn-block';

View file

@ -215,7 +215,7 @@ Y.namespace('M.atto_recordrtc').Button = Y.Base.create('button', Y.M.editor_atto
_createContent: function(type) {
var isAudio = (type === 'audio'),
bsRow = 'row',
bsCol = 'col-xs-',
bsCol = 'col-',
bsAlDang = 'alert-danger',
bsSsBtn = 'btn btn-lg btn-outline-danger btn-block';

View file

@ -574,11 +574,11 @@ class flexible_table {
// Always introduce the "flexible" class for the table if not specified
if (empty($this->attributes)) {
$this->attributes['class'] = 'flexible';
$this->attributes['class'] = 'flexible table table-striped table-hover';
} else if (!isset($this->attributes['class'])) {
$this->attributes['class'] = 'flexible';
$this->attributes['class'] = 'flexible table table-striped table-hover';
} else if (!in_array('flexible', explode(' ', $this->attributes['class']))) {
$this->attributes['class'] = trim('flexible ' . $this->attributes['class']);
$this->attributes['class'] = trim('flexible table table-striped table-hover ' . $this->attributes['class']);
}
}

View file

@ -156,7 +156,8 @@ class behat_permissions extends behat_base {
public function capability_has_permission($capabilityname, $permission) {
// We already know the name, so we just need the value.
$radioxpath = "//table[@class='rolecap']/descendant::input[@type='radio']" .
$radioxpath = "//table[contains(concat(' ',
normalize-space(@class), ' '), ' rolecap ')]/descendant::input[@type='radio']" .
"[@name='" . $capabilityname . "'][@checked]";
$checkedradio = $this->find('xpath', $radioxpath);