/** * Build an item list for the sidebar of the index page. By default this is a * "New Discussion" button, and then a DropdownSelect component containing a * list of navigation items. * * @return {ItemList} */ sidebarItems() { const items = new ItemList(); const canStartDiscussion = app.forum.attribute('canStartDiscussion') || !app.session.user; items.add('newDiscussion', Button.component({ children: app.translator.trans(canStartDiscussion ? 'core.forum.index.start_discussion_button' : 'core.forum.index.cannot_start_discussion_button'), icon: 'edit', className: 'Button Button--primary IndexPage-newDiscussion', itemClassName: 'App-primaryControl', onclick: this.newDiscussion.bind(this), disabled: !canStartDiscussion }) ); items.add('nav', SelectDropdown.component({ children: this.navItems(this).toArray(), buttonClassName: 'Button', className: 'App-titleControl' }) ); return items; }
/** * Build an item list for the controls. * * @return {ItemList} */ items() { const items = new ItemList(); items.add('search', app.search.render(), 30); if (Object.keys(app.locales).length > 1) { const locales = []; for (const locale in app.locales) { locales.push(Button.component({ active: app.locale === locale, children: app.locales[locale], icon: app.locale === locale ? 'check' : true, onclick: () => { if (app.session.user) { app.session.user.savePreferences({locale}).then(() => window.location.reload()); } else { document.cookie = `locale=${locale}; path=/; expires=Tue, 19 Jan 2038 03:14:07 GMT`; window.location.reload(); } } })); } items.add('locale', SelectDropdown.component({ children: locales, buttonClassName: 'Button Button--link' }), 20); } if (app.session.user) { items.add('notifications', NotificationsDropdown.component(), 10); items.add('session', SessionDropdown.component(), 0); } else { if (app.forum.attribute('allowSignUp')) { items.add('signUp', Button.component({ children: app.trans('core.header_sign_up_link'), className: 'Button Button--link', onclick: () => app.modal.show(new SignUpModal()) }), 10 ); } items.add('logIn', Button.component({ children: app.trans('core.header_log_in_link'), className: 'Button Button--link', onclick: () => app.modal.show(new LogInModal()) }), 0 ); } return items; }