diff --git a/js/old/admin/AdminApplication.js b/js/old/admin/AdminApplication.js deleted file mode 100644 index e0d9464e4..000000000 --- a/js/old/admin/AdminApplication.js +++ /dev/null @@ -1,63 +0,0 @@ -import HeaderPrimary from './components/HeaderPrimary'; -import HeaderSecondary from './components/HeaderSecondary'; -import routes from './routes'; -import Application from '../common/Application'; -import Navigation from '../common/components/Navigation'; -import AdminNav from './components/AdminNav'; - -export default class AdminApplication extends Application { - extensionSettings = {}; - - history = { - canGoBack: () => true, - getPrevious: () => {}, - backUrl: () => this.forum.attribute('baseUrl'), - back: function () { - window.location = this.backUrl(); - }, - }; - - constructor() { - super(); - - routes(this); - } - - /** - * @inheritdoc - */ - mount() { - m.mount(document.getElementById('app-navigation'), Navigation.component({ className: 'App-backControl', drawer: true })); - m.mount(document.getElementById('header-navigation'), Navigation.component()); - m.mount(document.getElementById('header-primary'), HeaderPrimary.component()); - m.mount(document.getElementById('header-secondary'), HeaderSecondary.component()); - m.mount(document.getElementById('admin-navigation'), AdminNav.component()); - - m.route.mode = 'hash'; - super.mount(); - - // If an extension has just been enabled, then we will run its settings - // callback. - const enabled = localStorage.getItem('enabledExtension'); - if (enabled && this.extensionSettings[enabled]) { - this.extensionSettings[enabled](); - localStorage.removeItem('enabledExtension'); - } - } - - getRequiredPermissions(permission) { - const required = []; - - if (permission === 'startDiscussion' || permission.indexOf('discussion.') === 0) { - required.push('viewDiscussions'); - } - if (permission === 'discussion.delete') { - required.push('discussion.hide'); - } - if (permission === 'discussion.deletePosts') { - required.push('discussion.hidePosts'); - } - - return required; - } -} diff --git a/js/old/admin/compat.js b/js/old/admin/compat.js deleted file mode 100644 index 0b5706b04..000000000 --- a/js/old/admin/compat.js +++ /dev/null @@ -1,63 +0,0 @@ -import compat from '../common/compat'; - -import saveSettings from './utils/saveSettings'; -import SettingDropdown from './components/SettingDropdown'; -import EditCustomFooterModal from './components/EditCustomFooterModal'; -import SessionDropdown from './components/SessionDropdown'; -import HeaderPrimary from './components/HeaderPrimary'; -import AppearancePage from './components/AppearancePage'; -import Page from './components/Page'; -import StatusWidget from './components/StatusWidget'; -import HeaderSecondary from './components/HeaderSecondary'; -import SettingsModal from './components/SettingsModal'; -import DashboardWidget from './components/DashboardWidget'; -import AddExtensionModal from './components/AddExtensionModal'; -import ExtensionsPage from './components/ExtensionsPage'; -import AdminLinkButton from './components/AdminLinkButton'; -import PermissionGrid from './components/PermissionGrid'; -import Widget from './components/Widget'; -import MailPage from './components/MailPage'; -import UploadImageButton from './components/UploadImageButton'; -import LoadingModal from './components/LoadingModal'; -import DashboardPage from './components/DashboardPage'; -import BasicsPage from './components/BasicsPage'; -import EditCustomHeaderModal from './components/EditCustomHeaderModal'; -import PermissionsPage from './components/PermissionsPage'; -import PermissionDropdown from './components/PermissionDropdown'; -import AdminNav from './components/AdminNav'; -import EditCustomCssModal from './components/EditCustomCssModal'; -import EditGroupModal from './components/EditGroupModal'; -import routes from './routes'; -import AdminApplication from './AdminApplication'; - -export default Object.assign(compat, { - 'utils/saveSettings': saveSettings, - 'components/SettingDropdown': SettingDropdown, - 'components/EditCustomFooterModal': EditCustomFooterModal, - 'components/SessionDropdown': SessionDropdown, - 'components/HeaderPrimary': HeaderPrimary, - 'components/AppearancePage': AppearancePage, - 'components/Page': Page, - 'components/StatusWidget': StatusWidget, - 'components/HeaderSecondary': HeaderSecondary, - 'components/SettingsModal': SettingsModal, - 'components/DashboardWidget': DashboardWidget, - 'components/AddExtensionModal': AddExtensionModal, - 'components/ExtensionsPage': ExtensionsPage, - 'components/AdminLinkButton': AdminLinkButton, - 'components/PermissionGrid': PermissionGrid, - 'components/Widget': Widget, - 'components/MailPage': MailPage, - 'components/UploadImageButton': UploadImageButton, - 'components/LoadingModal': LoadingModal, - 'components/DashboardPage': DashboardPage, - 'components/BasicsPage': BasicsPage, - 'components/EditCustomHeaderModal': EditCustomHeaderModal, - 'components/PermissionsPage': PermissionsPage, - 'components/PermissionDropdown': PermissionDropdown, - 'components/AdminNav': AdminNav, - 'components/EditCustomCssModal': EditCustomCssModal, - 'components/EditGroupModal': EditGroupModal, - routes: routes, - AdminApplication: AdminApplication, -}); diff --git a/js/old/admin/components/AddExtensionModal.js b/js/old/admin/components/AddExtensionModal.js deleted file mode 100644 index d3428c9ac..000000000 --- a/js/old/admin/components/AddExtensionModal.js +++ /dev/null @@ -1,32 +0,0 @@ -/* - * This file is part of Flarum. - * - * (c) Toby Zerner - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -import Modal from '../../common/components/Modal'; - -export default class AddExtensionModal extends Modal { - className() { - return 'AddExtensionModal Modal--small'; - } - - title() { - return app.translator.trans('core.admin.add_extension.title'); - } - - content() { - return ( -
-

{app.translator.trans('core.admin.add_extension.temporary_text')}

-

- {app.translator.trans('core.admin.add_extension.install_text', { a: })} -

-

{app.translator.trans('core.admin.add_extension.developer_text', { a: })}

-
- ); - } -} diff --git a/js/old/admin/components/AdminLinkButton.js b/js/old/admin/components/AdminLinkButton.js deleted file mode 100644 index 2602bc273..000000000 --- a/js/old/admin/components/AdminLinkButton.js +++ /dev/null @@ -1,20 +0,0 @@ -/* - * This file is part of Flarum. - * - * (c) Toby Zerner - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -import LinkButton from '../../common/components/LinkButton'; - -export default class AdminLinkButton extends LinkButton { - getButtonContent() { - const content = super.getButtonContent(); - - content.push(
{this.props.description}
); - - return content; - } -} diff --git a/js/old/admin/components/AdminNav.js b/js/old/admin/components/AdminNav.js deleted file mode 100644 index f96a4e162..000000000 --- a/js/old/admin/components/AdminNav.js +++ /dev/null @@ -1,94 +0,0 @@ -/* - * This file is part of Flarum. - * - * (c) Toby Zerner - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -import Component from '../../common/Component'; -import AdminLinkButton from './AdminLinkButton'; -import SelectDropdown from '../../common/components/SelectDropdown'; -import ItemList from '../../common/utils/ItemList'; - -export default class AdminNav extends Component { - view() { - return ( - - {this.items().toArray()} - - ); - } - - /** - * Build an item list of links to show in the admin navigation. - * - * @return {ItemList} - */ - items() { - const items = new ItemList(); - - items.add( - 'dashboard', - AdminLinkButton.component({ - href: app.route('dashboard'), - icon: 'far fa-chart-bar', - children: app.translator.trans('core.admin.nav.dashboard_button'), - description: app.translator.trans('core.admin.nav.dashboard_text'), - }) - ); - - items.add( - 'basics', - AdminLinkButton.component({ - href: app.route('basics'), - icon: 'fas fa-pencil-alt', - children: app.translator.trans('core.admin.nav.basics_button'), - description: app.translator.trans('core.admin.nav.basics_text'), - }) - ); - - items.add( - 'mail', - AdminLinkButton.component({ - href: app.route('mail'), - icon: 'fas fa-envelope', - children: app.translator.trans('core.admin.nav.email_button'), - description: app.translator.trans('core.admin.nav.email_text'), - }) - ); - - items.add( - 'permissions', - AdminLinkButton.component({ - href: app.route('permissions'), - icon: 'fas fa-key', - children: app.translator.trans('core.admin.nav.permissions_button'), - description: app.translator.trans('core.admin.nav.permissions_text'), - }) - ); - - items.add( - 'appearance', - AdminLinkButton.component({ - href: app.route('appearance'), - icon: 'fas fa-paint-brush', - children: app.translator.trans('core.admin.nav.appearance_button'), - description: app.translator.trans('core.admin.nav.appearance_text'), - }) - ); - - items.add( - 'extensions', - AdminLinkButton.component({ - href: app.route('extensions'), - icon: 'fas fa-puzzle-piece', - children: app.translator.trans('core.admin.nav.extensions_button'), - description: app.translator.trans('core.admin.nav.extensions_text'), - }) - ); - - return items; - } -} diff --git a/js/old/admin/components/AppearancePage.js b/js/old/admin/components/AppearancePage.js deleted file mode 100644 index 98a1cc373..000000000 --- a/js/old/admin/components/AppearancePage.js +++ /dev/null @@ -1,132 +0,0 @@ -import Page from './Page'; -import Button from '../../common/components/Button'; -import Switch from '../../common/components/Switch'; -import EditCustomCssModal from './EditCustomCssModal'; -import EditCustomHeaderModal from './EditCustomHeaderModal'; -import EditCustomFooterModal from './EditCustomFooterModal'; -import UploadImageButton from './UploadImageButton'; -import saveSettings from '../utils/saveSettings'; - -export default class AppearancePage extends Page { - init() { - super.init(); - - this.primaryColor = m.prop(app.data.settings.theme_primary_color); - this.secondaryColor = m.prop(app.data.settings.theme_secondary_color); - this.darkMode = m.prop(app.data.settings.theme_dark_mode === '1'); - this.coloredHeader = m.prop(app.data.settings.theme_colored_header === '1'); - } - - view() { - return ( -
-
-
-
- {app.translator.trans('core.admin.appearance.colors_heading')} -
{app.translator.trans('core.admin.appearance.colors_text')}
- -
- - -
- - {Switch.component({ - state: this.darkMode(), - children: app.translator.trans('core.admin.appearance.dark_mode_label'), - onchange: this.darkMode, - })} - - {Switch.component({ - state: this.coloredHeader(), - children: app.translator.trans('core.admin.appearance.colored_header_label'), - onchange: this.coloredHeader, - })} - - {Button.component({ - className: 'Button Button--primary', - type: 'submit', - children: app.translator.trans('core.admin.appearance.submit_button'), - loading: this.loading, - })} -
-
- -
- {app.translator.trans('core.admin.appearance.logo_heading')} -
{app.translator.trans('core.admin.appearance.logo_text')}
- -
- -
- {app.translator.trans('core.admin.appearance.favicon_heading')} -
{app.translator.trans('core.admin.appearance.favicon_text')}
- -
- -
- {app.translator.trans('core.admin.appearance.custom_header_heading')} -
{app.translator.trans('core.admin.appearance.custom_header_text')}
- {Button.component({ - className: 'Button', - children: app.translator.trans('core.admin.appearance.edit_header_button'), - onclick: () => app.modal.show(new EditCustomHeaderModal()), - })} -
- -
- {app.translator.trans('core.admin.appearance.custom_footer_heading')} -
{app.translator.trans('core.admin.appearance.custom_footer_text')}
- {Button.component({ - className: 'Button', - children: app.translator.trans('core.admin.appearance.edit_footer_button'), - onclick: () => app.modal.show(new EditCustomFooterModal()), - })} -
- -
- {app.translator.trans('core.admin.appearance.custom_styles_heading')} -
{app.translator.trans('core.admin.appearance.custom_styles_text')}
- {Button.component({ - className: 'Button', - children: app.translator.trans('core.admin.appearance.edit_css_button'), - onclick: () => app.modal.show(new EditCustomCssModal()), - })} -
-
-
- ); - } - - onsubmit(e) { - e.preventDefault(); - - const hex = /^#[0-9a-f]{3}([0-9a-f]{3})?$/i; - - if (!hex.test(this.primaryColor()) || !hex.test(this.secondaryColor())) { - alert(app.translator.trans('core.admin.appearance.enter_hex_message')); - return; - } - - this.loading = true; - - saveSettings({ - theme_primary_color: this.primaryColor(), - theme_secondary_color: this.secondaryColor(), - theme_dark_mode: this.darkMode(), - theme_colored_header: this.coloredHeader(), - }).then(() => window.location.reload()); - } -} diff --git a/js/old/admin/components/BasicsPage.js b/js/old/admin/components/BasicsPage.js deleted file mode 100644 index 746bcce8b..000000000 --- a/js/old/admin/components/BasicsPage.js +++ /dev/null @@ -1,174 +0,0 @@ -import Page from './Page'; -import FieldSet from '../../common/components/FieldSet'; -import Select from '../../common/components/Select'; -import Button from '../../common/components/Button'; -import Alert from '../../common/components/Alert'; -import saveSettings from '../utils/saveSettings'; -import ItemList from '../../common/utils/ItemList'; -import Switch from '../../common/components/Switch'; - -export default class BasicsPage extends Page { - init() { - super.init(); - - this.loading = false; - - this.fields = [ - 'forum_title', - 'forum_description', - 'default_locale', - 'show_language_selector', - 'default_route', - 'welcome_title', - 'welcome_message', - ]; - this.values = {}; - - const settings = app.data.settings; - this.fields.forEach((key) => (this.values[key] = m.prop(settings[key]))); - - this.localeOptions = {}; - const locales = app.data.locales; - for (const i in locales) { - this.localeOptions[i] = `${locales[i]} (${i})`; - } - - if (typeof this.values.show_language_selector() !== 'number') this.values.show_language_selector(1); - } - - view() { - return ( -
-
-
- {FieldSet.component({ - label: app.translator.trans('core.admin.basics.forum_title_heading'), - children: [], - })} - - {FieldSet.component({ - label: app.translator.trans('core.admin.basics.forum_description_heading'), - children: [ -
{app.translator.trans('core.admin.basics.forum_description_text')}
, -