mirror of
https://github.com/mediacms-io/mediacms.git
synced 2025-11-05 23:18:53 -05:00
130 lines
2.8 KiB
JavaScript
130 lines
2.8 KiB
JavaScript
import React, { createContext } from 'react';
|
|
import { config as mediacmsConfig } from '../settings/config.js';
|
|
import { translateString } from '../../utils/helpers/';
|
|
|
|
const config = mediacmsConfig(window.MediaCMS);
|
|
|
|
const links = config.url;
|
|
const theme = config.theme;
|
|
const user = config.member;
|
|
|
|
const hasThemeSwitcher = theme.switch.enabled && 'header' === theme.switch.position;
|
|
|
|
function popupTopNavItems() {
|
|
const items = [];
|
|
|
|
if (!user.is.anonymous) {
|
|
if (user.can.addMedia) {
|
|
items.push({
|
|
link: links.user.addMedia,
|
|
icon: 'video_call',
|
|
text: translateString('Upload media'),
|
|
itemAttr: {
|
|
className: 'visible-only-in-small',
|
|
},
|
|
});
|
|
|
|
if (user.pages.media) {
|
|
items.push({
|
|
link: user.pages.media,
|
|
icon: 'video_library',
|
|
text: translateString('My media'),
|
|
});
|
|
}
|
|
}
|
|
|
|
items.push({
|
|
link: links.signout,
|
|
icon: 'exit_to_app',
|
|
text: translateString('Sign out'),
|
|
});
|
|
}
|
|
|
|
return items;
|
|
}
|
|
|
|
function popupMiddleNavItems() {
|
|
const items = [];
|
|
|
|
if (hasThemeSwitcher) {
|
|
items.push({
|
|
itemType: 'open-subpage',
|
|
icon: 'brightness_4',
|
|
iconPos: 'left',
|
|
text: 'Switch theme',
|
|
buttonAttr: {
|
|
className: 'change-page',
|
|
'data-page-id': 'switch-theme',
|
|
},
|
|
});
|
|
}
|
|
|
|
if (user.is.anonymous) {
|
|
if (user.can.login) {
|
|
items.push({
|
|
itemType: 'link',
|
|
icon: 'login',
|
|
iconPos: 'left',
|
|
text: translateString('Sign in'),
|
|
link: links.signin,
|
|
linkAttr: {
|
|
className: hasThemeSwitcher ? 'visible-only-in-small' : 'visible-only-in-extra-small',
|
|
},
|
|
});
|
|
}
|
|
|
|
if (user.can.register) {
|
|
items.push({
|
|
itemType: 'link',
|
|
icon: 'person_add',
|
|
iconPos: 'left',
|
|
text: translateString('Register'),
|
|
link: links.register,
|
|
linkAttr: {
|
|
className: hasThemeSwitcher ? 'visible-only-in-small' : 'visible-only-in-extra-small',
|
|
},
|
|
});
|
|
}
|
|
} else {
|
|
items.push({
|
|
link: links.user.editProfile,
|
|
icon: 'brush',
|
|
text: translateString('Edit profile'),
|
|
});
|
|
|
|
if (user.can.changePassword) {
|
|
items.push({
|
|
link: links.changePassword,
|
|
icon: 'lock',
|
|
text: translateString('Change password'),
|
|
});
|
|
}
|
|
}
|
|
|
|
return items;
|
|
}
|
|
|
|
function popupBottomNavItems() {
|
|
const items = [];
|
|
|
|
if (user.is.admin) {
|
|
items.push({
|
|
link: links.admin,
|
|
icon: 'admin_panel_settings',
|
|
text: 'MediaCMS administration',
|
|
});
|
|
}
|
|
|
|
return items;
|
|
}
|
|
|
|
export const HeaderContext = createContext({
|
|
hasThemeSwitcher,
|
|
popupNavItems: {
|
|
top: popupTopNavItems(),
|
|
middle: popupMiddleNavItems(),
|
|
bottom: popupBottomNavItems(),
|
|
},
|
|
});
|
|
|
|
export const HeaderConsumer = HeaderContext.Consumer; |