MDL-54698 message: combine message preferences into single table

This commit is contained in:
Ryan Wyllie
2016-10-07 16:26:40 +08:00
committed by Mark Nelson
parent ada7695d7c
commit b6cd1c1151
5 changed files with 48 additions and 44 deletions
@@ -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'],
+2 -2
View File
@@ -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;
+2 -2
View File
@@ -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;