Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AdminUX Patch and Admin Page #2593

Merged
merged 15 commits into from
Feb 18, 2021
16 changes: 8 additions & 8 deletions js/src/admin/components/AdminPage.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import Page from '../../common/components/Page';
import Button from '../../common/components/Button';
import Switch from '../../common/components/Switch';
import Select from '../../common/components/Select';
import Button from '../../common/components/Button';
import classList from '../../common/utils/classList';
import Stream from '../../common/utils/Stream';
import saveSettings from '../utils/saveSettings';
Expand All @@ -17,7 +17,7 @@ export default class AdminPage extends Page {
}

view() {
const className = classList(['AdminPage', this.info().name]);
const className = classList(['AdminPage', this.headerInfo().className]);

return (
<div className={className}>
Expand All @@ -40,26 +40,26 @@ export default class AdminPage extends Page {
}

header() {
const info = this.info();
const headerInfo = this.headerInfo();

return (
<AdminHeader icon={info.icon} description={info.description} className={info.name + '-header'}>
{info.title}
<AdminHeader icon={headerInfo.icon} description={headerInfo.description} className={headerInfo.className + '-header'}>
{headerInfo.title}
</AdminHeader>
);
}

info() {
headerInfo() {
return {
name: '',
className: '',
icon: '',
title: '',
description: '',
};
}

/**
* getSetting takes a settings object and turns it into a component.
* buildSettingComponent takes a settings object and turns it into a component.
* Depending on the type of input, you can set the type to 'bool', 'select', or
* any standard <input> type. Any values inside the 'extra' object will be added
* to the component as an attribute.
Expand Down
4 changes: 2 additions & 2 deletions js/src/admin/components/AppearancePage.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ import UploadImageButton from './UploadImageButton';
import AdminPage from './AdminPage';

export default class AppearancePage extends AdminPage {
info() {
headerInfo() {
return {
name: 'AppearancePage',
className: 'AppearancePage',
icon: 'fas fa-paint-brush',
title: app.translator.trans('core.admin.appearance.title'),
description: app.translator.trans('core.admin.appearance.description'),
Expand Down
34 changes: 15 additions & 19 deletions js/src/admin/components/BasicsPage.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ export default class BasicsPage extends AdminPage {
});
}

info() {
headerInfo() {
return {
name: 'BasicsPage',
className: 'BasicsPage',
icon: 'fas fa-pencil-alt',
title: app.translator.trans('core.admin.basics.title'),
description: app.translator.trans('core.admin.basics.description'),
Expand Down Expand Up @@ -68,26 +68,22 @@ export default class BasicsPage extends AdminPage {
]
: ''}

<FieldSet className='BasicsPage-homePage Form-group' label={app.translator.trans('core.admin.basics.home_page_heading')}>
<div className="helpText">{app.translator.trans('core.admin.basics.home_page_text')}</div>
{this.homePageItems()
<FieldSet className="BasicsPage-homePage Form-group" label={app.translator.trans('core.admin.basics.home_page_heading')}>
<div className="helpText">{app.translator.trans('core.admin.basics.home_page_text')}</div>
{this.homePageItems()
.toArray()
KyrneDev marked this conversation as resolved.
Show resolved Hide resolved
.map(({ path, label }) => (
<label className="checkbox">
<input type="radio" name="homePage" value={path} bidi={this.setting('default_route')} />
{label}
</label>
<label className="checkbox">
<input type="radio" name="homePage" value={path} bidi={this.setting('default_route')} />
{label}
</label>
))}
</FieldSet>

<div className="BasicsPage-welcomeBanner-input">
{this.buildSettingComponent({
type: 'text',
setting: 'welcome_title',
label: app.translator.trans('core.admin.basics.welcome_banner_heading'),
className: 'BasicsPage-welcomeBanner',
help: app.translator.trans('core.admin.basics.welcome_banner_text'),
})}
</FieldSet>

<div className="Form-group BasicsPage-welcomeBanner-input">
<label>{app.translator.trans('core.admin.basics.welcome_banner_heading')}</label>
<div className="helpText">{app.translator.trans('core.admin.basics.welcome_banner_text')}</div>
<input type="text" className="FormControl" bidi={this.setting('welcome_title')} />
<textarea className="FormControl" bidi={this.setting('welcome_message')} />
</div>

Expand Down
4 changes: 2 additions & 2 deletions js/src/admin/components/DashboardPage.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ import ItemList from '../../common/utils/ItemList';
import AdminPage from './AdminPage';

export default class DashboardPage extends AdminPage {
info() {
headerInfo() {
return {
name: 'DashboardPage',
className: 'DashboardPage',
icon: 'fas fa-chart-bar',
title: app.translator.trans('core.admin.dashboard.title'),
description: app.translator.trans('core.admin.dashboard.description'),
Expand Down
74 changes: 31 additions & 43 deletions js/src/admin/components/MailPage.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@ export default class MailPage extends AdminPage {
this.refresh();
}

info() {
headerInfo() {
return {
name: 'MailPage',
className: 'MailPage',
icon: 'fas fa-envelope',
title: app.translator.trans('core.admin.email.title'),
description: app.translator.trans('core.admin.email.description'),
Expand Down Expand Up @@ -72,50 +72,38 @@ export default class MailPage extends AdminPage {
app.translator.trans('core.admin.email.not_sending_message')
)}

{fieldKeys.length > 0 &&
FieldSet.component(
{fieldKeys.length > 0 && (
<FieldSet label={app.translator.trans(`core.admin.email.${this.setting('mail_driver')()}_heading`)} className="MailPage-MailSettings">
<div className="MailPage-MailSettings-input">
{fieldKeys.map((field) => {
const fieldInfo = fields[field];

return [
this.buildSettingComponent({
type: typeof this.setting(field)() === 'string' ? 'text' : 'select',
label: app.translator.trans(`core.admin.email.${field}_label`),
setting: field,
options: fieldInfo,
}),
this.status.errors[field] && <p className="ValidationError">{this.status.errors[field]}</p>,
];
})}
</div>
</FieldSet>
)}
{this.submitButton()}

<FieldSet label={app.translator.trans('core.admin.email.send_test_mail_heading')} className="MailPage-MailSettings">
<div className="helpText">{app.translator.trans('core.admin.email.send_test_mail_text', { email: app.session.user.email() })}</div>
{Button.component(
{
label: app.translator.trans(`core.admin.email.${this.setting('mail_driver')()}_heading`),
className: 'MailPage-MailSettings',
className: 'Button Button--primary',
disabled: this.sendingTest || this.isChanged(),
onclick: () => this.sendTestEmail(),
},
[
<div className="MailPage-MailSettings-input">
{fieldKeys.map((field) => {
const fieldInfo = fields[field];
console.log(field);

return [
this.buildSettingComponent({
type: typeof this.setting(field)() === 'string' ? 'text' : 'select',
label: app.translator.trans(`core.admin.email.${field}_label`),
setting: field,
options: fieldInfo,
}),
this.status.errors[field] && <p className="ValidationError">{this.status.errors[field]}</p>,
];
})}
</div>,
]
app.translator.trans('core.admin.email.send_test_mail_button')
)}
{this.submitButton()}

{FieldSet.component(
{
label: app.translator.trans('core.admin.email.send_test_mail_heading'),
className: 'MailPage-MailSettings',
},
[
<div className="helpText">{app.translator.trans('core.admin.email.send_test_mail_text', { email: app.session.user.email() })}</div>,
Button.component(
{
className: 'Button Button--primary',
disabled: this.sendingTest || this.isChanged(),
onclick: () => this.sendTestEmail(),
},
app.translator.trans('core.admin.email.send_test_mail_button')
),
]
)}
</FieldSet>
</div>
);
}
Expand Down
4 changes: 2 additions & 2 deletions js/src/admin/components/PermissionsPage.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ import PermissionGrid from './PermissionGrid';
import AdminPage from './AdminPage';

export default class PermissionsPage extends AdminPage {
info() {
headerInfo() {
return {
name: 'PermissionsPage',
className: 'PermissionsPage',
icon: 'fas fa-key',
title: app.translator.trans('core.admin.permissions.title'),
description: app.translator.trans('core.admin.permissions.description'),
Expand Down
6 changes: 3 additions & 3 deletions less/admin/BasicsPage.less
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
.BasicsPage {
padding-bottom: 25vh;
padding-bottom: 30px;

@media @desktop-up {
.container {
Expand All @@ -20,13 +20,13 @@
}

.BasicsPage-welcomeBanner-input {
.Form-group {
input {
margin-bottom: 1px;
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
font-weight: bold;
}
:last-child {
textarea {
border-top-right-radius: 0;
border-top-left-radius: 0;
margin-bottom: 10px;
Expand Down
1 change: 1 addition & 0 deletions less/admin/DashboardPage.less
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
background: @body-bg;
color: @control-color;
min-height: 100vh;
padding-bottom: 30px;
}

.Widget {
Expand Down
3 changes: 1 addition & 2 deletions less/admin/ExtensionPage.less
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
.ExtensionPage {
padding-bottom: 25vh;

.ExtensionPage-header {
.ExtensionTitle {
Expand Down Expand Up @@ -148,7 +147,7 @@

> .container {
overflow-x: scroll;
padding-bottom: 20px;
padding-bottom: 25vh;
KyrneDev marked this conversation as resolved.
Show resolved Hide resolved
}

.ExtensionPage-permissions-header {
Expand Down
22 changes: 11 additions & 11 deletions less/admin/ExtensionWidget.less
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,11 @@
padding: 20px 0 20px 20px;
margin-bottom: 20px;
border-radius: @border-radius;
}

.ExtensionList-Label {
margin-top: 0;
color: @muted-color;
}
.ExtensionList-Label {
margin-top: 0;
color: @muted-color;
}

.ExtensionListItem.disabled {
Expand All @@ -64,18 +64,18 @@
transform: scale(1.05);
}

.ExtensionListItem-title {
display: block;
text-align: center;
margin-top: 5px;
color: @text-color;
}

a:hover {
text-decoration: none;
}
}

.ExtensionListItem-title {
display: block;
text-align: center;
margin-top: 5px;
color: @text-color;
}

.ExtensionIcon {
width: 90px;
height: 90px;
Expand Down
2 changes: 1 addition & 1 deletion less/admin/MailPage.less
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
.MailPage {
padding-bottom: 25vh;
padding-bottom: 30px;

@media @desktop-up {
.container {
Expand Down