MDL-54698 message: combine message preferences into single table
This commit is contained in:
@@ -27,6 +27,7 @@ namespace core_message\output\preferences;
|
||||
|
||||
use renderable;
|
||||
use templatable;
|
||||
use context_user;
|
||||
|
||||
/**
|
||||
* Class to create context for the list of notifications on the message
|
||||
@@ -78,6 +79,7 @@ class notification_list implements templatable, renderable {
|
||||
$providers = $this->providers;
|
||||
$preferences = $this->preferences;
|
||||
$user = $this->user;
|
||||
$usercontext = context_user::instance($user->id);
|
||||
|
||||
foreach($providers as $provider) {
|
||||
if($provider->component != 'moodle') {
|
||||
@@ -91,7 +93,20 @@ class notification_list implements templatable, renderable {
|
||||
array_unshift($components, 'moodle'); // pop it in front! phew!
|
||||
asort($providers);
|
||||
|
||||
$context = [];
|
||||
$context = [
|
||||
'userid' => $user->id,
|
||||
'disableall' => $user->emailstop,
|
||||
'processors' => [],
|
||||
];
|
||||
|
||||
foreach ($processors as $processor) {
|
||||
$context['processors'][] = [
|
||||
'displayname' => get_string('pluginname', 'message_'.$processor->name),
|
||||
'name' => $processor->name,
|
||||
'hassettings' => !empty($processor->object->config_form($preferences)),
|
||||
'contextid' => $usercontext->id,
|
||||
];
|
||||
}
|
||||
|
||||
foreach ($components as $component) {
|
||||
$notificationcomponent = new \core_message\output\preferences\notification_list_component(
|
||||
@@ -99,9 +114,6 @@ class notification_list implements templatable, renderable {
|
||||
$context['components'][] = $notificationcomponent->export_for_template($output);
|
||||
}
|
||||
|
||||
$context['userid'] = $user->id;
|
||||
$context['disableall'] = $user->emailstop;
|
||||
|
||||
return $context;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,6 @@ require_once($CFG->dirroot . '/message/lib.php');
|
||||
|
||||
use renderable;
|
||||
use templatable;
|
||||
use context_user;
|
||||
|
||||
/**
|
||||
* Class to create context for a notification component on the message
|
||||
@@ -108,7 +107,6 @@ class notification_list_component implements templatable, renderable {
|
||||
$preferences = $this->preferences;
|
||||
$component = $this->component;
|
||||
$defaultpreferences = get_message_output_default_preferences();
|
||||
$usercontext = context_user::instance($this->user->id);
|
||||
|
||||
if ($component != 'moodle') {
|
||||
$componentname = get_string('pluginname', $component);
|
||||
@@ -118,19 +116,9 @@ class notification_list_component implements templatable, renderable {
|
||||
|
||||
$context = [
|
||||
'displayname' => $componentname,
|
||||
'processors' => [],
|
||||
'notifications' => [],
|
||||
];
|
||||
|
||||
foreach ($processors as $processor) {
|
||||
$context['processors'][] = [
|
||||
'displayname' => get_string('pluginname', 'message_'.$processor->name),
|
||||
'name' => $processor->name,
|
||||
'hassettings' => !empty($processor->object->config_form($preferences)),
|
||||
'contextid' => $usercontext->id,
|
||||
];
|
||||
}
|
||||
|
||||
foreach ($providers as $provider) {
|
||||
$preferencebase = $this->get_preference_base($provider);
|
||||
// If provider component is not same or provider disabled then don't show.
|
||||
|
||||
@@ -77,30 +77,34 @@
|
||||
}}
|
||||
<h2 class="title-case">{{#str}} notificationpreferences, message {{/str}}</h2>
|
||||
<div class="preferences-container {{#disableall}}disabled{{/disableall}}" data-user-id="{{userid}}">
|
||||
{{#components}}
|
||||
<table class="table preference-table">
|
||||
<thead>
|
||||
<table class="table table-hover preference-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{displayname}}</th>
|
||||
{{#processors}}
|
||||
<th>
|
||||
{{#hassettings}}
|
||||
<a href="#"
|
||||
data-processor-setting
|
||||
data-user-id="{{userid}}"
|
||||
data-context-id="{{contextid}}"
|
||||
data-name="{{name}}">
|
||||
{{displayname}} {{#pix}} i/settings {{/pix}}
|
||||
</a>
|
||||
{{/hassettings}}
|
||||
{{^hassettings}}
|
||||
{{displayname}}
|
||||
{{/hassettings}}
|
||||
</th>
|
||||
{{/processors}}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{#components}}
|
||||
<tr>
|
||||
<th>{{displayname}}</th>
|
||||
{{#processors}}
|
||||
<th>
|
||||
{{#hassettings}}
|
||||
<a href="#"
|
||||
data-processor-setting
|
||||
data-user-id="{{userid}}"
|
||||
data-context-id="{{contextid}}"
|
||||
data-name="{{name}}">
|
||||
{{displayname}} {{#pix}} i/settings {{/pix}}
|
||||
</a>
|
||||
{{/hassettings}}
|
||||
{{^hassettings}}
|
||||
{{displayname}}
|
||||
{{/hassettings}}
|
||||
</th>
|
||||
{{/processors}}
|
||||
{{#processors}}<td></td>{{/processors}}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{#notifications}}
|
||||
<tr class="preference-row" data-preference-key="{{preferencekey}}">
|
||||
<td class="preference-name">
|
||||
@@ -156,9 +160,9 @@
|
||||
{{/processors}}
|
||||
</tr>
|
||||
{{/notifications}}
|
||||
</tbody>
|
||||
</table>
|
||||
{{/components}}
|
||||
{{/components}}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{{#js}}
|
||||
require(['jquery', 'theme_bootstrapbase/bootstrap', 'core_message/preferences_notifications_list_controller'],
|
||||
|
||||
@@ -312,7 +312,7 @@
|
||||
vertical-align: middle;
|
||||
|
||||
input[type="checkbox"]:checked + .preference-state-image-container {
|
||||
border: 1px solid #5cb85c;
|
||||
border: 2px solid #5cb85c;
|
||||
}
|
||||
.preference-state-image-container {
|
||||
width: 30px;
|
||||
@@ -320,7 +320,7 @@
|
||||
line-height: 30px;
|
||||
text-align: center;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #d9534f;
|
||||
border: 2px solid #d9534f;
|
||||
|
||||
.loading-icon {
|
||||
display: none;
|
||||
|
||||
@@ -6024,7 +6024,7 @@ a.ygtvspacer:hover {
|
||||
vertical-align: middle;
|
||||
}
|
||||
.preferences-container .preference-table .preference-row .preference-state input[type="checkbox"]:checked + .preference-state-image-container {
|
||||
border: 1px solid #5cb85c;
|
||||
border: 2px solid #5cb85c;
|
||||
}
|
||||
.preferences-container .preference-table .preference-row .preference-state .preference-state-image-container {
|
||||
width: 30px;
|
||||
@@ -6032,7 +6032,7 @@ a.ygtvspacer:hover {
|
||||
line-height: 30px;
|
||||
text-align: center;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #d9534f;
|
||||
border: 2px solid #d9534f;
|
||||
}
|
||||
.preferences-container .preference-table .preference-row .preference-state .preference-state-image-container .loading-icon {
|
||||
display: none;
|
||||
|
||||
Reference in New Issue
Block a user