1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

Update dashboard paths

This commit is contained in:
Bill Thornton 2023-09-25 00:00:36 -04:00
parent 73aa0f1962
commit b5dcdbf4b4
40 changed files with 137 additions and 138 deletions

View file

@ -26,7 +26,6 @@ export const REDIRECTS: Redirect[] = [
{ from: 'networking.html', to: '/dashboard/networking' }, { from: 'networking.html', to: '/dashboard/networking' },
{ from: 'notificationsettings.html', to: '/dashboard/notifications' }, { from: 'notificationsettings.html', to: '/dashboard/notifications' },
{ from: 'playbackconfiguration.html', to: '/dashboard/playback/resume' }, { from: 'playbackconfiguration.html', to: '/dashboard/playback/resume' },
{ from: 'quickConnect.html', to: '/dashboard/quickconnect' },
{ from: 'repositories.html', to: '/dashboard/plugins/repositories' }, { from: 'repositories.html', to: '/dashboard/plugins/repositories' },
{ from: 'scheduledtask.html', to: '/dashboard/tasks/edit' }, { from: 'scheduledtask.html', to: '/dashboard/tasks/edit' },
{ from: 'scheduledtasks.html', to: '/dashboard/tasks' }, { from: 'scheduledtasks.html', to: '/dashboard/tasks' },

View file

@ -68,7 +68,7 @@ const Activity = () => {
sx={{ padding: 0 }} sx={{ padding: 0 }}
title={users[row.UserId]?.Name ?? undefined} title={users[row.UserId]?.Name ?? undefined}
component={Link} component={Link}
to={`/useredit.html?userId=${row.UserId}`} to={`/dashboard/users/profile?userId=${row.UserId}`}
> >
<UserAvatar user={users[row.UserId]} /> <UserAvatar user={users[row.UserId]} />
</IconButton> </IconButton>

View file

@ -9,7 +9,7 @@ const PluginLink = () => (
__html: `<a __html: `<a
is='emby-linkbutton' is='emby-linkbutton'
class='button-link' class='button-link'
href='#/addplugin.html?name=Webhook&guid=71552a5a5c5c4350a2aeebe451a30173' href='#/dashboard/plugins/add?name=Webhook&guid=71552a5a5c5c4350a2aeebe451a30173'
> >
${globalize.translate('GetThePlugin')} ${globalize.translate('GetThePlugin')}
</a>` </a>`

View file

@ -85,21 +85,21 @@ const UserProfiles: FunctionComponent = () => {
callback: function (id: string) { callback: function (id: string) {
switch (id) { switch (id) {
case 'open': case 'open':
Dashboard.navigate('useredit.html?userId=' + userId) Dashboard.navigate('/dashboard/users/profile?userId=' + userId)
.catch(err => { .catch(err => {
console.error('[userprofiles] failed to navigate to user edit page', err); console.error('[userprofiles] failed to navigate to user edit page', err);
}); });
break; break;
case 'access': case 'access':
Dashboard.navigate('userlibraryaccess.html?userId=' + userId) Dashboard.navigate('/dashboard/users/access?userId=' + userId)
.catch(err => { .catch(err => {
console.error('[userprofiles] failed to navigate to user library page', err); console.error('[userprofiles] failed to navigate to user library page', err);
}); });
break; break;
case 'parentalcontrol': case 'parentalcontrol':
Dashboard.navigate('userparentalcontrol.html?userId=' + userId) Dashboard.navigate('/dashboard/users/parentalcontrol?userId=' + userId)
.catch(err => { .catch(err => {
console.error('[userprofiles] failed to navigate to parental control page', err); console.error('[userprofiles] failed to navigate to parental control page', err);
}); });
@ -146,7 +146,7 @@ const UserProfiles: FunctionComponent = () => {
}); });
(page.querySelector('#btnAddUser') as HTMLButtonElement).addEventListener('click', function() { (page.querySelector('#btnAddUser') as HTMLButtonElement).addEventListener('click', function() {
Dashboard.navigate('usernew.html') Dashboard.navigate('/dashboard/users/add')
.catch(err => { .catch(err => {
console.error('[userprofiles] failed to navigate to new user page', err); console.error('[userprofiles] failed to navigate to new user page', err);
}); });

View file

@ -140,7 +140,7 @@ const UserNew: FunctionComponent = () => {
} }
window.ApiClient.updateUserPolicy(user.Id, user.Policy).then(function () { window.ApiClient.updateUserPolicy(user.Id, user.Policy).then(function () {
Dashboard.navigate('useredit.html?userId=' + user.Id) Dashboard.navigate('/dashboard/users/profile?userId=' + user.Id)
.catch(err => { .catch(err => {
console.error('[usernew] failed to navigate to edit user page', err); console.error('[usernew] failed to navigate to edit user page', err);
}); });

View file

@ -32,7 +32,7 @@ const getCheckedElementDataIds = (elements: NodeListOf<Element>) => (
); );
function onSaveComplete() { function onSaveComplete() {
Dashboard.navigate('userprofiles.html') Dashboard.navigate('/dashboard/users')
.catch(err => { .catch(err => {
console.error('[useredit] failed to navigate to user profile', err); console.error('[useredit] failed to navigate to user profile', err);
}); });

View file

@ -17,7 +17,7 @@ import { isTabPath } from '../tabs/tabRoutes';
export const DRAWER_WIDTH = 240; export const DRAWER_WIDTH = 240;
const DRAWERLESS_ROUTES = [ const DRAWERLESS_ROUTES = [
'edititemmetadata.html', // metadata manager 'metadata', // metadata manager
'video' // video player 'video' // video player
]; ];

View file

@ -150,7 +150,7 @@ const MainDrawerContent = () => {
} }
> >
<ListItem disablePadding> <ListItem disablePadding>
<ListItemLink to='/dashboard.html'> <ListItemLink to='/dashboard'>
<ListItemIcon> <ListItemIcon>
<Dashboard /> <Dashboard />
</ListItemIcon> </ListItemIcon>
@ -158,7 +158,7 @@ const MainDrawerContent = () => {
</ListItemLink> </ListItemLink>
</ListItem> </ListItem>
<ListItem disablePadding> <ListItem disablePadding>
<ListItemLink to='/edititemmetadata.html'> <ListItemLink to='/metadata'>
<ListItemIcon> <ListItemIcon>
<Edit /> <Edit />
</ListItemIcon> </ListItemIcon>

View file

@ -19,10 +19,10 @@ import ListItemLink from 'components/ListItemLink';
import globalize from 'scripts/globalize'; import globalize from 'scripts/globalize';
const PLUGIN_PATHS = [ const PLUGIN_PATHS = [
'/installedplugins.html', '/dashboard/plugins',
'/availableplugins.html', '/dashboard/plugins/catalog',
'/repositories.html', '/dashboard/plugins/repositories',
'/addplugin.html', '/dashboard/plugins/add',
'/configurationpage' '/configurationpage'
]; ];
@ -41,7 +41,7 @@ const AdvancedDrawerSection = () => {
} }
> >
<ListItem disablePadding> <ListItem disablePadding>
<ListItemLink to='/networking.html'> <ListItemLink to='/dashboard/networking'>
<ListItemIcon> <ListItemIcon>
<Lan /> <Lan />
</ListItemIcon> </ListItemIcon>
@ -49,7 +49,7 @@ const AdvancedDrawerSection = () => {
</ListItemLink> </ListItemLink>
</ListItem> </ListItem>
<ListItem disablePadding> <ListItem disablePadding>
<ListItemLink to='/apikeys.html'> <ListItemLink to='/dashboard/keys'>
<ListItemIcon> <ListItemIcon>
<VpnKey /> <VpnKey />
</ListItemIcon> </ListItemIcon>
@ -57,7 +57,7 @@ const AdvancedDrawerSection = () => {
</ListItemLink> </ListItemLink>
</ListItem> </ListItem>
<ListItem disablePadding> <ListItem disablePadding>
<ListItemLink to='/log.html'> <ListItemLink to='/dashboard/logs'>
<ListItemIcon> <ListItemIcon>
<Article /> <Article />
</ListItemIcon> </ListItemIcon>
@ -65,7 +65,7 @@ const AdvancedDrawerSection = () => {
</ListItemLink> </ListItemLink>
</ListItem> </ListItem>
<ListItem disablePadding> <ListItem disablePadding>
<ListItemLink to='/notificationsettings.html'> <ListItemLink to='/dashboard/notifications'>
<ListItemIcon> <ListItemIcon>
<EditNotifications /> <EditNotifications />
</ListItemIcon> </ListItemIcon>
@ -73,7 +73,7 @@ const AdvancedDrawerSection = () => {
</ListItemLink> </ListItemLink>
</ListItem> </ListItem>
<ListItem disablePadding> <ListItem disablePadding>
<ListItemLink to='/installedplugins.html' selected={false}> <ListItemLink to='/dashboard/plugins' selected={false}>
<ListItemIcon> <ListItemIcon>
<Extension /> <Extension />
</ListItemIcon> </ListItemIcon>
@ -83,19 +83,19 @@ const AdvancedDrawerSection = () => {
</ListItem> </ListItem>
<Collapse in={isPluginSectionOpen} timeout='auto' unmountOnExit> <Collapse in={isPluginSectionOpen} timeout='auto' unmountOnExit>
<List component='div' disablePadding> <List component='div' disablePadding>
<ListItemLink to='/installedplugins.html' sx={{ pl: 4 }}> <ListItemLink to='/dashboard/plugins' sx={{ pl: 4 }}>
<ListItemText inset primary={globalize.translate('TabMyPlugins')} /> <ListItemText inset primary={globalize.translate('TabMyPlugins')} />
</ListItemLink> </ListItemLink>
<ListItemLink to='/availableplugins.html' sx={{ pl: 4 }}> <ListItemLink to='/dashboard/plugins/catalog' sx={{ pl: 4 }}>
<ListItemText inset primary={globalize.translate('TabCatalog')} /> <ListItemText inset primary={globalize.translate('TabCatalog')} />
</ListItemLink> </ListItemLink>
<ListItemLink to='/repositories.html' sx={{ pl: 4 }}> <ListItemLink to='/dashboard/plugins/repositories' sx={{ pl: 4 }}>
<ListItemText inset primary={globalize.translate('TabRepositories')} /> <ListItemText inset primary={globalize.translate('TabRepositories')} />
</ListItemLink> </ListItemLink>
</List> </List>
</Collapse> </Collapse>
<ListItem disablePadding> <ListItem disablePadding>
<ListItemLink to='/scheduledtasks.html'> <ListItemLink to='/dashboard/tasks'>
<ListItemIcon> <ListItemIcon>
<Schedule /> <Schedule />
</ListItemIcon> </ListItemIcon>

View file

@ -12,8 +12,8 @@ import ListItemLink from 'components/ListItemLink';
import globalize from 'scripts/globalize'; import globalize from 'scripts/globalize';
const DLNA_PATHS = [ const DLNA_PATHS = [
'/dlnasettings.html', '/dashboard/dlna',
'/dlnaprofiles.html' '/dashboard/dlna/profiles'
]; ];
const DevicesDrawerSection = () => { const DevicesDrawerSection = () => {
@ -31,7 +31,7 @@ const DevicesDrawerSection = () => {
} }
> >
<ListItem disablePadding> <ListItem disablePadding>
<ListItemLink to='/devices.html'> <ListItemLink to='/dashboard/devices'>
<ListItemIcon> <ListItemIcon>
<Devices /> <Devices />
</ListItemIcon> </ListItemIcon>
@ -47,7 +47,7 @@ const DevicesDrawerSection = () => {
</ListItemLink> </ListItemLink>
</ListItem> </ListItem>
<ListItem disablePadding> <ListItem disablePadding>
<ListItemLink to='/dlnasettings.html' selected={false}> <ListItemLink to='/dashboard/dlna' selected={false}>
<ListItemIcon> <ListItemIcon>
<Input /> <Input />
</ListItemIcon> </ListItemIcon>
@ -57,10 +57,10 @@ const DevicesDrawerSection = () => {
</ListItem> </ListItem>
<Collapse in={isDlnaSectionOpen} timeout='auto' unmountOnExit> <Collapse in={isDlnaSectionOpen} timeout='auto' unmountOnExit>
<List component='div' disablePadding> <List component='div' disablePadding>
<ListItemLink to='/dlnasettings.html' sx={{ pl: 4 }}> <ListItemLink to='/dashboard/dlna' sx={{ pl: 4 }}>
<ListItemText inset primary={globalize.translate('Settings')} /> <ListItemText inset primary={globalize.translate('Settings')} />
</ListItemLink> </ListItemLink>
<ListItemLink to='/dlnaprofiles.html' sx={{ pl: 4 }}> <ListItemLink to='/dashboard/dlna/profiles' sx={{ pl: 4 }}>
<ListItemText inset primary={globalize.translate('TabProfiles')} /> <ListItemText inset primary={globalize.translate('TabProfiles')} />
</ListItemLink> </ListItemLink>
</List> </List>

View file

@ -20,7 +20,7 @@ const LiveTvDrawerSection = () => {
} }
> >
<ListItem disablePadding> <ListItem disablePadding>
<ListItemLink to='/livetvstatus.html'> <ListItemLink to='/dashboard/livetv'>
<ListItemIcon> <ListItemIcon>
<LiveTv /> <LiveTv />
</ListItemIcon> </ListItemIcon>
@ -28,7 +28,7 @@ const LiveTvDrawerSection = () => {
</ListItemLink> </ListItemLink>
</ListItem> </ListItem>
<ListItem disablePadding> <ListItem disablePadding>
<ListItemLink to='/livetvsettings.html'> <ListItemLink to='/dashboard/recordings'>
<ListItemIcon> <ListItemIcon>
<Dvr /> <Dvr />
</ListItemIcon> </ListItemIcon>

View file

@ -12,16 +12,16 @@ import ListItemLink from 'components/ListItemLink';
import globalize from 'scripts/globalize'; import globalize from 'scripts/globalize';
const LIBRARY_PATHS = [ const LIBRARY_PATHS = [
'/library.html', '/dashboard/libraries',
'/librarydisplay.html', '/dashboard/libraries/display',
'/metadataimages.html', '/dashboard/libraries/metadata',
'/metadatanfo.html' '/dashboard/libraries/nfo'
]; ];
const PLAYBACK_PATHS = [ const PLAYBACK_PATHS = [
'/encodingsettings.html', '/dashboard/playback/transcoding',
'/playbackconfiguration.html', '/dashboard/playback/resume',
'/streamingsettings.html' '/dashboard/playback/streaming'
]; ];
const ServerDrawerSection = () => { const ServerDrawerSection = () => {
@ -40,7 +40,7 @@ const ServerDrawerSection = () => {
} }
> >
<ListItem disablePadding> <ListItem disablePadding>
<ListItemLink to='/dashboard.html'> <ListItemLink to='/dashboard'>
<ListItemIcon> <ListItemIcon>
<Dashboard /> <Dashboard />
</ListItemIcon> </ListItemIcon>
@ -48,7 +48,7 @@ const ServerDrawerSection = () => {
</ListItemLink> </ListItemLink>
</ListItem> </ListItem>
<ListItem disablePadding> <ListItem disablePadding>
<ListItemLink to='/dashboardgeneral.html'> <ListItemLink to='/dashboard/settings'>
<ListItemIcon> <ListItemIcon>
<Settings /> <Settings />
</ListItemIcon> </ListItemIcon>
@ -56,7 +56,7 @@ const ServerDrawerSection = () => {
</ListItemLink> </ListItemLink>
</ListItem> </ListItem>
<ListItem disablePadding> <ListItem disablePadding>
<ListItemLink to='/userprofiles.html'> <ListItemLink to='/dashboard/users'>
<ListItemIcon> <ListItemIcon>
<People /> <People />
</ListItemIcon> </ListItemIcon>
@ -64,7 +64,7 @@ const ServerDrawerSection = () => {
</ListItemLink> </ListItemLink>
</ListItem> </ListItem>
<ListItem disablePadding> <ListItem disablePadding>
<ListItemLink to='/library.html' selected={false}> <ListItemLink to='/dashboard/libraries' selected={false}>
<ListItemIcon> <ListItemIcon>
<LibraryAdd /> <LibraryAdd />
</ListItemIcon> </ListItemIcon>
@ -74,22 +74,22 @@ const ServerDrawerSection = () => {
</ListItem> </ListItem>
<Collapse in={isLibrarySectionOpen} timeout='auto' unmountOnExit> <Collapse in={isLibrarySectionOpen} timeout='auto' unmountOnExit>
<List component='div' disablePadding> <List component='div' disablePadding>
<ListItemLink to='/library.html' sx={{ pl: 4 }}> <ListItemLink to='/dashboard/libraries' sx={{ pl: 4 }}>
<ListItemText inset primary={globalize.translate('HeaderLibraries')} /> <ListItemText inset primary={globalize.translate('HeaderLibraries')} />
</ListItemLink> </ListItemLink>
<ListItemLink to='/librarydisplay.html' sx={{ pl: 4 }}> <ListItemLink to='/dashboard/libraries/display' sx={{ pl: 4 }}>
<ListItemText inset primary={globalize.translate('Display')} /> <ListItemText inset primary={globalize.translate('Display')} />
</ListItemLink> </ListItemLink>
<ListItemLink to='/metadataimages.html' sx={{ pl: 4 }}> <ListItemLink to='/dashboard/libraries/metadata' sx={{ pl: 4 }}>
<ListItemText inset primary={globalize.translate('Metadata')} /> <ListItemText inset primary={globalize.translate('Metadata')} />
</ListItemLink> </ListItemLink>
<ListItemLink to='/metadatanfo.html' sx={{ pl: 4 }}> <ListItemLink to='/dashboard/libraries/nfo' sx={{ pl: 4 }}>
<ListItemText inset primary={globalize.translate('TabNfoSettings')} /> <ListItemText inset primary={globalize.translate('TabNfoSettings')} />
</ListItemLink> </ListItemLink>
</List> </List>
</Collapse> </Collapse>
<ListItem disablePadding> <ListItem disablePadding>
<ListItemLink to='/encodingsettings.html' selected={false}> <ListItemLink to='/dashboard/playback/transcoding' selected={false}>
<ListItemIcon> <ListItemIcon>
<PlayCircle /> <PlayCircle />
</ListItemIcon> </ListItemIcon>
@ -99,13 +99,13 @@ const ServerDrawerSection = () => {
</ListItem> </ListItem>
<Collapse in={isPlaybackSectionOpen} timeout='auto' unmountOnExit> <Collapse in={isPlaybackSectionOpen} timeout='auto' unmountOnExit>
<List component='div' disablePadding> <List component='div' disablePadding>
<ListItemLink to='/encodingsettings.html' sx={{ pl: 4 }}> <ListItemLink to='/dashboard/playback/transcoding' sx={{ pl: 4 }}>
<ListItemText inset primary={globalize.translate('Transcoding')} /> <ListItemText inset primary={globalize.translate('Transcoding')} />
</ListItemLink> </ListItemLink>
<ListItemLink to='/playbackconfiguration.html' sx={{ pl: 4 }}> <ListItemLink to='/dashboard/playback/resume' sx={{ pl: 4 }}>
<ListItemText inset primary={globalize.translate('ButtonResume')} /> <ListItemText inset primary={globalize.translate('ButtonResume')} />
</ListItemLink> </ListItemLink>
<ListItemLink to='/streamingsettings.html' sx={{ pl: 4 }}> <ListItemLink to='/dashboard/playback/streaming' sx={{ pl: 4 }}>
<ListItemText inset primary={globalize.translate('TabStreaming')} /> <ListItemText inset primary={globalize.translate('TabStreaming')} />
</ListItemLink> </ListItemLink>
</List> </List>

View file

@ -10,28 +10,28 @@ const createLinkElement = (activeTab: string) => ({
is="emby-linkbutton" is="emby-linkbutton"
data-role="button" data-role="button"
class="${activeTab === 'useredit' ? 'ui-btn-active' : ''}" class="${activeTab === 'useredit' ? 'ui-btn-active' : ''}"
onclick="Dashboard.navigate('useredit.html', true);"> onclick="Dashboard.navigate('/dashboard/users/profile', true);">
${globalize.translate('Profile')} ${globalize.translate('Profile')}
</a> </a>
<a href="#" <a href="#"
is="emby-linkbutton" is="emby-linkbutton"
data-role="button" data-role="button"
class="${activeTab === 'userlibraryaccess' ? 'ui-btn-active' : ''}" class="${activeTab === 'userlibraryaccess' ? 'ui-btn-active' : ''}"
onclick="Dashboard.navigate('userlibraryaccess.html', true);"> onclick="Dashboard.navigate('/dashboard/users/access', true);">
${globalize.translate('TabAccess')} ${globalize.translate('TabAccess')}
</a> </a>
<a href="#" <a href="#"
is="emby-linkbutton" is="emby-linkbutton"
data-role="button" data-role="button"
class="${activeTab === 'userparentalcontrol' ? 'ui-btn-active' : ''}" class="${activeTab === 'userparentalcontrol' ? 'ui-btn-active' : ''}"
onclick="Dashboard.navigate('userparentalcontrol.html', true);"> onclick="Dashboard.navigate('/dashboard/users/parentalcontrol', true);">
${globalize.translate('TabParentalControl')} ${globalize.translate('TabParentalControl')}
</a> </a>
<a href="#" <a href="#"
is="emby-linkbutton" is="emby-linkbutton"
data-role="button" data-role="button"
class="${activeTab === 'userpassword' ? 'ui-btn-active' : ''}" class="${activeTab === 'userpassword' ? 'ui-btn-active' : ''}"
onclick="Dashboard.navigate('userpassword.html', true);"> onclick="Dashboard.navigate('/dashboard/users/password', true);">
${globalize.translate('HeaderPassword')} ${globalize.translate('HeaderPassword')}
</a>` </a>`
}); });

View file

@ -11,7 +11,7 @@ const createLinkElement = ({ user, renderImgUrl }: { user: UserDto, renderImgUrl
__html: `<a __html: `<a
is="emby-linkbutton" is="emby-linkbutton"
class="cardContent" class="cardContent"
href="#/useredit.html?userId=${user.Id}" href="#/dashboard/users/profile?userId=${user.Id}"
> >
${renderImgUrl} ${renderImgUrl}
</a>` </a>`

View file

@ -94,7 +94,7 @@ export function loadSections(elem, apiClient, user, userSettings) {
const createNowLink = elem.querySelector('#button-createLibrary'); const createNowLink = elem.querySelector('#button-createLibrary');
if (createNowLink) { if (createNowLink) {
createNowLink.addEventListener('click', function () { createNowLink.addEventListener('click', function () {
Dashboard.navigate('library.html'); Dashboard.navigate('dashboard/libraries');
}); });
} }
} }

View file

@ -527,7 +527,7 @@ class AppRouter {
} }
if (item === 'manageserver') { if (item === 'manageserver') {
return '#/dashboard.html'; return '#/dashboard';
} }
if (item === 'recordedtv') { if (item === 'recordedtv') {

View file

@ -115,7 +115,7 @@ const AppUserMenu: FC<AppUserMenuProps> = ({
<MenuItem <MenuItem
key='admin-dashboard-link' key='admin-dashboard-link'
component={Link} component={Link}
to='/dashboard.html' to='/dashboard'
onClick={onMenuClose} onClick={onMenuClose}
> >
@ -127,7 +127,7 @@ const AppUserMenu: FC<AppUserMenuProps> = ({
<MenuItem <MenuItem
key='admin-metadata-link' key='admin-metadata-link'
component={Link} component={Link}
to='/edititemmetadata.html' to='/metadata'
onClick={onMenuClose} onClick={onMenuClose}
> >
<ListItemIcon> <ListItemIcon>

View file

@ -3,7 +3,7 @@
<div class="dashboardSections" style="padding-top:.5em;"> <div class="dashboardSections" style="padding-top:.5em;">
<div class="dashboardColumn dashboardColumn-2-60 dashboardColumn-3-46"> <div class="dashboardColumn dashboardColumn-2-60 dashboardColumn-3-46">
<div class="dashboardSection"> <div class="dashboardSection">
<a is="emby-linkbutton" href="#/dashboardgeneral.html" class="button-flat sectionTitleTextButton"> <a is="emby-linkbutton" href="#/dashboard/settings" class="button-flat sectionTitleTextButton">
<h3>${TabServer}</h3> <h3>${TabServer}</h3>
<span class="material-icons chevron_right" aria-hidden="true"></span> <span class="material-icons chevron_right" aria-hidden="true"></span>
</a> </a>
@ -33,7 +33,7 @@
</div> </div>
<div class="dashboardSection"> <div class="dashboardSection">
<a is="emby-linkbutton" href="#/devices.html" class="button-flat sectionTitleTextButton"> <a is="emby-linkbutton" href="#/dashboard/devices" class="button-flat sectionTitleTextButton">
<h3>${HeaderActiveDevices}</h3> <h3>${HeaderActiveDevices}</h3>
<span class="material-icons chevron_right" aria-hidden="true"></span> <span class="material-icons chevron_right" aria-hidden="true"></span>
</a> </a>
@ -70,7 +70,7 @@
</div> </div>
<div class="dashboardSection"> <div class="dashboardSection">
<a is="emby-linkbutton" href="#/dashboardgeneral.html" class="button-flat sectionTitleTextButton"> <a is="emby-linkbutton" href="#/dashboard/settings" class="button-flat sectionTitleTextButton">
<h3>${HeaderPaths}</h3> <h3>${HeaderPaths}</h3>
<span class="material-icons chevron_right" aria-hidden="true"></span> <span class="material-icons chevron_right" aria-hidden="true"></span>
</a> </a>

View file

@ -73,7 +73,7 @@ function showDeviceMenu(view, btn, deviceId) {
callback: function (id) { callback: function (id) {
switch (id) { switch (id) {
case 'open': case 'open':
Dashboard.navigate('device.html?id=' + deviceId); Dashboard.navigate('dashboard/devices/edit?id=' + deviceId);
break; break;
case 'delete': case 'delete':
@ -94,7 +94,7 @@ function load(page, devices) {
deviceHtml += '<div class="cardBox visualCardBox">'; deviceHtml += '<div class="cardBox visualCardBox">';
deviceHtml += '<div class="cardScalable">'; deviceHtml += '<div class="cardScalable">';
deviceHtml += '<div class="cardPadder cardPadder-backdrop"></div>'; deviceHtml += '<div class="cardPadder cardPadder-backdrop"></div>';
deviceHtml += `<a is="emby-linkbutton" href="#!/device.html?id=${escapeHtml(device.Id)}" class="cardContent cardImageContainer ${cardBuilder.getDefaultBackgroundClass()}">`; deviceHtml += `<a is="emby-linkbutton" href="#/dashboard/devices/edit?id=${escapeHtml(device.Id)}" class="cardContent cardImageContainer ${cardBuilder.getDefaultBackgroundClass()}">`;
// audit note: getDeviceIcon returns static text // audit note: getDeviceIcon returns static text
const iconUrl = imageHelper.getDeviceIcon(device); const iconUrl = imageHelper.getDeviceIcon(device);

View file

@ -264,7 +264,7 @@
<button is="emby-button" type="submit" class="raised button-submit block"> <button is="emby-button" type="submit" class="raised button-submit block">
<span>${Save}</span> <span>${Save}</span>
</button> </button>
<button is="emby-button" type="button" class="button-cancel raised block" onclick="Dashboard.navigate('dlnaprofiles.html');"> <button is="emby-button" type="button" class="button-cancel raised block" onclick="Dashboard.navigate('dashboard/dlna/profiles');">
<span>${ButtonCancel}</span> <span>${ButtonCancel}</span>
</button> </button>
</div> </div>

View file

@ -639,7 +639,7 @@ function saveProfile(page, profile) {
data: JSON.stringify(profile), data: JSON.stringify(profile),
contentType: 'application/json' contentType: 'application/json'
}).then(function () { }).then(function () {
Dashboard.navigate('dlnaprofiles.html'); Dashboard.navigate('dashboard/dlna/profiles');
}, Dashboard.processErrorResponse); }, Dashboard.processErrorResponse);
} }

View file

@ -8,7 +8,7 @@
<div class="verticalSection verticalSection-extrabottompadding"> <div class="verticalSection verticalSection-extrabottompadding">
<div class="sectionTitleContainer flex align-items-center"> <div class="sectionTitleContainer flex align-items-center">
<h2 class="sectionTitle">${HeaderCustomDlnaProfiles}</h2> <h2 class="sectionTitle">${HeaderCustomDlnaProfiles}</h2>
<a is="emby-linkbutton" href="#/dlnaprofile.html" class="fab submit" style="margin:0 0 0 1em"> <a is="emby-linkbutton" href="#/dashboard/dlna/profiles/edit" class="fab submit" style="margin:0 0 0 1em">
<span class="material-icons add" aria-hidden="true"></span> <span class="material-icons add" aria-hidden="true"></span>
</a> </a>
</div> </div>

View file

@ -40,7 +40,7 @@ function renderProfiles(page, element, profiles) {
html += '<div class="listItem listItem-border">'; html += '<div class="listItem listItem-border">';
html += '<span class="listItemIcon material-icons live_tv" aria-hidden="true"></span>'; html += '<span class="listItemIcon material-icons live_tv" aria-hidden="true"></span>';
html += '<div class="listItemBody two-line">'; html += '<div class="listItemBody two-line">';
html += "<a is='emby-linkbutton' style='padding:0;margin:0;' data-ripple='false' class='clearLink' href='#/dlnaprofile.html?id=" + profile.Id + "'>"; html += "<a is='emby-linkbutton' style='padding:0;margin:0;' data-ripple='false' class='clearLink' href='#/dashboard/dlna/profiles/edit?id=" + profile.Id + "'>";
html += '<div>' + escapeHtml(profile.Name) + '</div>'; html += '<div>' + escapeHtml(profile.Name) + '</div>';
html += '</a>'; html += '</a>';
html += '</div>'; html += '</div>';
@ -78,10 +78,10 @@ function deleteProfile(page, id) {
function getTabs() { function getTabs() {
return [{ return [{
href: '#/dlnasettings.html', href: '#/dashboard/dlna',
name: globalize.translate('Settings') name: globalize.translate('Settings')
}, { }, {
href: '#/dlnaprofiles.html', href: '#/dashboard/dlna/profiles',
name: globalize.translate('TabProfiles') name: globalize.translate('TabProfiles')
}]; }];
} }

View file

@ -37,10 +37,10 @@ function onSubmit() {
function getTabs() { function getTabs() {
return [{ return [{
href: '#/dlnasettings.html', href: '#/dashboard/dlna',
name: globalize.translate('Settings') name: globalize.translate('Settings')
}, { }, {
href: '#/dlnaprofiles.html', href: '#/dashboard/dlna/profiles',
name: globalize.translate('TabProfiles') name: globalize.translate('TabProfiles')
}]; }];
} }

View file

@ -167,13 +167,13 @@ function setDecodingCodecsVisible(context, value) {
function getTabs() { function getTabs() {
return [{ return [{
href: '#/encodingsettings.html', href: '#/dashboard/playback/transcoding',
name: globalize.translate('Transcoding') name: globalize.translate('Transcoding')
}, { }, {
href: '#/playbackconfiguration.html', href: '#/dashboard/playback/resume',
name: globalize.translate('ButtonResume') name: globalize.translate('ButtonResume')
}, { }, {
href: '#/streamingsettings.html', href: '#/dashboard/playback/streaming',
name: globalize.translate('TabStreaming') name: globalize.translate('TabStreaming')
}]; }];
} }

View file

@ -360,16 +360,16 @@ function getVirtualFolderHtml(page, virtualFolder, index) {
function getTabs() { function getTabs() {
return [{ return [{
href: '#/library.html', href: '#/dashboard/libraries',
name: globalize.translate('HeaderLibraries') name: globalize.translate('HeaderLibraries')
}, { }, {
href: '#/librarydisplay.html', href: '#/dashboard/libraries/display',
name: globalize.translate('Display') name: globalize.translate('Display')
}, { }, {
href: '#/metadataimages.html', href: '#/dashboard/libraries/metadata',
name: globalize.translate('Metadata') name: globalize.translate('Metadata')
}, { }, {
href: '#/metadatanfo.html', href: '#/dashboard/libraries/nfo',
name: globalize.translate('TabNfoSettings') name: globalize.translate('TabNfoSettings')
}]; }];
} }

View file

@ -7,16 +7,16 @@ import Dashboard from '../../utils/dashboard';
function getTabs() { function getTabs() {
return [{ return [{
href: '#/library.html', href: '#/dashboard/libraries',
name: globalize.translate('HeaderLibraries') name: globalize.translate('HeaderLibraries')
}, { }, {
href: '#/librarydisplay.html', href: '#/dashboard/libraries/display',
name: globalize.translate('Display') name: globalize.translate('Display')
}, { }, {
href: '#/metadataimages.html', href: '#/dashboard/libraries/metadata',
name: globalize.translate('Metadata') name: globalize.translate('Metadata')
}, { }, {
href: '#/metadatanfo.html', href: '#/dashboard/libraries/nfo',
name: globalize.translate('TabNfoSettings') name: globalize.translate('TabNfoSettings')
}]; }];
} }

View file

@ -88,16 +88,16 @@ function onSubmit() {
function getTabs() { function getTabs() {
return [{ return [{
href: '#/library.html', href: '#/dashboard/libraries',
name: globalize.translate('HeaderLibraries') name: globalize.translate('HeaderLibraries')
}, { }, {
href: '#/librarydisplay.html', href: '#/dashboard/libraries/display',
name: globalize.translate('Display') name: globalize.translate('Display')
}, { }, {
href: '#/metadataimages.html', href: '#/dashboard/libraries/metadata',
name: globalize.translate('Metadata') name: globalize.translate('Metadata')
}, { }, {
href: '#/metadatanfo.html', href: '#/dashboard/libraries/nfo',
name: globalize.translate('TabNfoSettings') name: globalize.translate('TabNfoSettings')
}]; }];
} }

View file

@ -46,16 +46,16 @@ function showConfirmMessage() {
function getTabs() { function getTabs() {
return [{ return [{
href: '#/library.html', href: '#/dashboard/libraries',
name: globalize.translate('HeaderLibraries') name: globalize.translate('HeaderLibraries')
}, { }, {
href: '#/librarydisplay.html', href: '#/dashboard/libraries/display',
name: globalize.translate('Display') name: globalize.translate('Display')
}, { }, {
href: '#/metadataimages.html', href: '#/dashboard/libraries/metadata',
name: globalize.translate('Metadata') name: globalize.translate('Metadata')
}, { }, {
href: '#/metadatanfo.html', href: '#/dashboard/libraries/nfo',
name: globalize.translate('TabNfoSettings') name: globalize.translate('TabNfoSettings')
}]; }];
} }

View file

@ -31,13 +31,13 @@ function onSubmit() {
function getTabs() { function getTabs() {
return [{ return [{
href: '#/encodingsettings.html', href: '#/dashboard/playback/transcoding',
name: globalize.translate('Transcoding') name: globalize.translate('Transcoding')
}, { }, {
href: '#/playbackconfiguration.html', href: '#/dashboard/playback/resume',
name: globalize.translate('ButtonResume') name: globalize.translate('ButtonResume')
}, { }, {
href: '#/streamingsettings.html', href: '#/dashboard/playback/streaming',
name: globalize.translate('TabStreaming') name: globalize.translate('TabStreaming')
}]; }];
} }

View file

@ -120,7 +120,7 @@ function onSearchBarType(searchBar) {
function getPluginHtml(plugin, options, installedPlugins) { function getPluginHtml(plugin, options, installedPlugins) {
let html = ''; let html = '';
let href = plugin.externalUrl ? plugin.externalUrl : '#/addplugin.html?name=' + encodeURIComponent(plugin.name) + '&guid=' + plugin.guid; let href = plugin.externalUrl ? plugin.externalUrl : '#/dashboard/plugins/add?name=' + encodeURIComponent(plugin.name) + '&guid=' + plugin.guid;
if (options.context) { if (options.context) {
href += '&context=' + options.context; href += '&context=' + options.context;
@ -161,13 +161,13 @@ function getPluginHtml(plugin, options, installedPlugins) {
function getTabs() { function getTabs() {
return [{ return [{
href: '#/installedplugins.html', href: '#/dashboard/plugins',
name: globalize.translate('TabMyPlugins') name: globalize.translate('TabMyPlugins')
}, { }, {
href: '#/availableplugins.html', href: '#/dashboard/plugins/catalog',
name: globalize.translate('TabCatalog') name: globalize.translate('TabCatalog')
}, { }, {
href: '#/repositories.html', href: '#/dashboard/plugins/repositories',
name: globalize.translate('TabRepositories') name: globalize.translate('TabRepositories')
}]; }];
} }

View file

@ -130,7 +130,7 @@ function populateList(page, plugins, pluginConfigurationPages) {
} else { } else {
html += '<div class="centerMessage">'; html += '<div class="centerMessage">';
html += '<h1>' + globalize.translate('MessageNoPluginsInstalled') + '</h1>'; html += '<h1>' + globalize.translate('MessageNoPluginsInstalled') + '</h1>';
html += '<p><a is="emby-linkbutton" class="button-link" href="#/availableplugins.html">'; html += '<p><a is="emby-linkbutton" class="button-link" href="#/dashboard/plugins/catalog">';
html += globalize.translate('MessageBrowsePluginCatalog'); html += globalize.translate('MessageBrowsePluginCatalog');
html += '</a></p>'; html += '</a></p>';
html += '</div>'; html += '</div>';
@ -221,13 +221,13 @@ function reloadList(page) {
function getTabs() { function getTabs() {
return [{ return [{
href: '#/installedplugins.html', href: '#/dashboard/plugins',
name: globalize.translate('TabMyPlugins') name: globalize.translate('TabMyPlugins')
}, { }, {
href: '#/availableplugins.html', href: '#/dashboard/plugins/catalog',
name: globalize.translate('TabCatalog') name: globalize.translate('TabCatalog')
}, { }, {
href: '#/repositories.html', href: '#/dashboard/plugins/repositories',
name: globalize.translate('TabRepositories') name: globalize.translate('TabRepositories')
}]; }];
} }

View file

@ -105,13 +105,13 @@ function getRepositoryElement(repository) {
function getTabs() { function getTabs() {
return [{ return [{
href: '#/installedplugins.html', href: '#/dashboard/plugins',
name: globalize.translate('TabMyPlugins') name: globalize.translate('TabMyPlugins')
}, { }, {
href: '#/availableplugins.html', href: '#/dashboard/plugins/catalog',
name: globalize.translate('TabCatalog') name: globalize.translate('TabCatalog')
}, { }, {
href: '#/repositories.html', href: '#/dashboard/plugins/repositories',
name: globalize.translate('TabRepositories') name: globalize.translate('TabRepositories')
}]; }];
} }

View file

@ -53,12 +53,12 @@ function populateList(page, tasks) {
html += '<div class="paperList">'; html += '<div class="paperList">';
} }
html += '<div class="listItem listItem-border scheduledTaskPaperIconItem" data-status="' + task.State + '">'; html += '<div class="listItem listItem-border scheduledTaskPaperIconItem" data-status="' + task.State + '">';
html += "<a is='emby-linkbutton' style='margin:0;padding:0;' class='clearLink listItemIconContainer' href='scheduledtask.html?id=" + task.Id + "'>"; html += "<a is='emby-linkbutton' style='margin:0;padding:0;' class='clearLink listItemIconContainer' href='/dashboard/tasks/edit?id=" + task.Id + "'>";
html += '<span class="material-icons listItemIcon schedule" aria-hidden="true"></span>'; html += '<span class="material-icons listItemIcon schedule" aria-hidden="true"></span>';
html += '</a>'; html += '</a>';
html += '<div class="listItemBody two-line">'; html += '<div class="listItemBody two-line">';
const textAlignStyle = globalize.getIsRTL() ? 'right' : 'left'; const textAlignStyle = globalize.getIsRTL() ? 'right' : 'left';
html += "<a class='clearLink' style='margin:0;padding:0;display:block;text-align:" + textAlignStyle + ";' is='emby-linkbutton' href='scheduledtask.html?id=" + task.Id + "'>"; html += "<a class='clearLink' style='margin:0;padding:0;display:block;text-align:" + textAlignStyle + ";' is='emby-linkbutton' href='/dashboard/tasks/edit?id=" + task.Id + "'>";
html += "<h3 class='listItemBodyText'>" + task.Name + '</h3>'; html += "<h3 class='listItemBodyText'>" + task.Name + '</h3>';
html += "<div class='secondary listItemBodyText' id='taskProgress" + task.Id + "'>" + getTaskProgressHtml(task) + '</div>'; html += "<div class='secondary listItemBodyText' id='taskProgress" + task.Id + "'>" + getTaskProgressHtml(task) + '</div>';
html += '</a>'; html += '</a>';

View file

@ -22,13 +22,13 @@ function onSubmit() {
function getTabs() { function getTabs() {
return [{ return [{
href: '#/encodingsettings.html', href: '#/dashboard/playback/transcoding',
name: globalize.translate('Transcoding') name: globalize.translate('Transcoding')
}, { }, {
href: '#/playbackconfiguration.html', href: '#/dashboard/playback/resume',
name: globalize.translate('ButtonResume') name: globalize.translate('ButtonResume')
}, { }, {
href: '#/streamingsettings.html', href: '#/dashboard/playback/streaming',
name: globalize.translate('TabStreaming') name: globalize.translate('TabStreaming')
}]; }];
} }

View file

@ -5,7 +5,7 @@ import { getParameterByName } from '../utils/url.ts';
import Events from '../utils/events.ts'; import Events from '../utils/events.ts';
function onListingsSubmitted() { function onListingsSubmitted() {
Dashboard.navigate('livetvstatus.html'); Dashboard.navigate('dashboard/livetv');
} }
function init(page, type, providerId) { function init(page, type, providerId) {

View file

@ -220,9 +220,9 @@ function getProviderName(providerId) {
function getProviderConfigurationUrl(providerId) { function getProviderConfigurationUrl(providerId) {
switch (providerId.toLowerCase()) { switch (providerId.toLowerCase()) {
case 'xmltv': case 'xmltv':
return '#/livetvguideprovider.html?type=xmltv'; return '#/dashboard/livetv/guide?type=xmltv';
case 'schedulesdirect': case 'schedulesdirect':
return '#/livetvguideprovider.html?type=schedulesdirect'; return '#/dashboard/livetv/guide?type=schedulesdirect';
} }
} }
@ -249,7 +249,7 @@ function addProvider(button) {
} }
function addDevice() { function addDevice() {
Dashboard.navigate('livetvtuner.html'); Dashboard.navigate('dashboard/livetv/tuner');
} }
function showDeviceMenu(button, tunerDeviceId) { function showDeviceMenu(button, tunerDeviceId) {
@ -274,7 +274,7 @@ function showDeviceMenu(button, tunerDeviceId) {
break; break;
case 'edit': case 'edit':
Dashboard.navigate('livetvtuner.html?id=' + tunerDeviceId); Dashboard.navigate('dashboard/livetv/tuner?id=' + tunerDeviceId);
} }
}); });
}); });
@ -290,7 +290,7 @@ function onDevicesListClick(e) {
if (btnCardOptions) { if (btnCardOptions) {
showDeviceMenu(btnCardOptions, id); showDeviceMenu(btnCardOptions, id);
} else { } else {
Dashboard.navigate('livetvtuner.html?id=' + id); Dashboard.navigate('dashboard/livetv/tuner?id=' + id);
} }
} }
} }

View file

@ -96,7 +96,7 @@ function submitForm(page) {
contentType: 'application/json' contentType: 'application/json'
}).then(function () { }).then(function () {
Dashboard.processServerConfigurationUpdateResult(); Dashboard.processServerConfigurationUpdateResult();
Dashboard.navigate('livetvstatus.html'); Dashboard.navigate('dashboard/livetv');
}, function () { }, function () {
loading.hide(); loading.hide();
Dashboard.alert({ Dashboard.alert({

View file

@ -77,7 +77,7 @@
</div> </div>
<div class="adminSection verticalSection verticalSection-extrabottompadding hide"> <div class="adminSection verticalSection verticalSection-extrabottompadding hide">
<h2 class="sectionTitle" style="padding-left:.25em;">${HeaderAdmin}</h2> <h2 class="sectionTitle" style="padding-left:.25em;">${HeaderAdmin}</h2>
<a is="emby-linkbutton" href="#/dashboard.html" style="display:block;padding:0;margin:0;" class="listItem-border"> <a is="emby-linkbutton" href="#/dashboard" style="display:block;padding:0;margin:0;" class="listItem-border">
<div class="listItem"> <div class="listItem">
<span class="material-icons listItemIcon listItemIcon-transparent dashboard" aria-hidden="true"></span> <span class="material-icons listItemIcon listItemIcon-transparent dashboard" aria-hidden="true"></span>
<div class="listItemBody"> <div class="listItemBody">
@ -85,7 +85,7 @@
</div> </div>
</div> </div>
</a> </a>
<a is="emby-linkbutton" href="#/edititemmetadata.html" style="display:block;padding:0;margin:0;" class="listItem-border"> <a is="emby-linkbutton" href="#/metadata" style="display:block;padding:0;margin:0;" class="listItem-border">
<div class="listItem"> <div class="listItem">
<span class="material-icons listItemIcon listItemIcon-transparent mode_edit" aria-hidden="true"></span> <span class="material-icons listItemIcon listItemIcon-transparent mode_edit" aria-hidden="true"></span>
<div class="listItemBody"> <div class="listItemBody">

View file

@ -327,8 +327,8 @@ function refreshLibraryInfoInDrawer(user) {
html += '<h3 class="sidebarHeader">'; html += '<h3 class="sidebarHeader">';
html += globalize.translate('HeaderAdmin'); html += globalize.translate('HeaderAdmin');
html += '</h3>'; html += '</h3>';
html += `<a is="emby-linkbutton" class="navMenuOption lnkMediaFolder lnkManageServer" data-itemid="dashboard" href="#/dashboard.html"><span class="material-icons navMenuOptionIcon dashboard" aria-hidden="true"></span><span class="navMenuOptionText">${globalize.translate('TabDashboard')}</span></a>`; html += `<a is="emby-linkbutton" class="navMenuOption lnkMediaFolder lnkManageServer" data-itemid="dashboard" href="#/dashboard"><span class="material-icons navMenuOptionIcon dashboard" aria-hidden="true"></span><span class="navMenuOptionText">${globalize.translate('TabDashboard')}</span></a>`;
html += `<a is="emby-linkbutton" class="navMenuOption lnkMediaFolder editorViewMenu" data-itemid="editor" href="#/edititemmetadata.html"><span class="material-icons navMenuOptionIcon mode_edit" aria-hidden="true"></span><span class="navMenuOptionText">${globalize.translate('Metadata')}</span></a>`; html += `<a is="emby-linkbutton" class="navMenuOption lnkMediaFolder editorViewMenu" data-itemid="editor" href="#/metadata"><span class="material-icons navMenuOptionIcon mode_edit" aria-hidden="true"></span><span class="navMenuOptionText">${globalize.translate('Metadata')}</span></a>`;
html += '</div>'; html += '</div>';
} }
@ -429,28 +429,28 @@ function createToolsMenuList(pluginItems) {
name: globalize.translate('TabServer') name: globalize.translate('TabServer')
}, { }, {
name: globalize.translate('TabDashboard'), name: globalize.translate('TabDashboard'),
href: '#/dashboard.html', href: '#/dashboard',
pageIds: ['dashboardPage'], pageIds: ['dashboardPage'],
icon: 'dashboard' icon: 'dashboard'
}, { }, {
name: globalize.translate('General'), name: globalize.translate('General'),
href: '#/dashboardgeneral.html', href: '#/dashboard/settings',
pageIds: ['dashboardGeneralPage'], pageIds: ['dashboardGeneralPage'],
icon: 'settings' icon: 'settings'
}, { }, {
name: globalize.translate('HeaderUsers'), name: globalize.translate('HeaderUsers'),
href: '#/userprofiles.html', href: '#/dashboard/users',
pageIds: ['userProfilesPage', 'newUserPage', 'editUserPage', 'userLibraryAccessPage', 'userParentalControlPage', 'userPasswordPage'], pageIds: ['userProfilesPage', 'newUserPage', 'editUserPage', 'userLibraryAccessPage', 'userParentalControlPage', 'userPasswordPage'],
icon: 'people' icon: 'people'
}, { }, {
name: globalize.translate('HeaderLibraries'), name: globalize.translate('HeaderLibraries'),
href: '#/library.html', href: '#/dashboard/libraries',
pageIds: ['mediaLibraryPage', 'librarySettingsPage', 'libraryDisplayPage', 'metadataImagesConfigurationPage', 'metadataNfoPage'], pageIds: ['mediaLibraryPage', 'librarySettingsPage', 'libraryDisplayPage', 'metadataImagesConfigurationPage', 'metadataNfoPage'],
icon: 'folder' icon: 'folder'
}, { }, {
name: globalize.translate('TitlePlayback'), name: globalize.translate('TitlePlayback'),
icon: 'play_arrow', icon: 'play_arrow',
href: '#/encodingsettings.html', href: '#/dashboard/playback/transcoding',
pageIds: ['encodingSettingsPage', 'playbackConfigurationPage', 'streamingSettingsPage'] pageIds: ['encodingSettingsPage', 'playbackConfigurationPage', 'streamingSettingsPage']
}]; }];
addPluginPagesToMainMenu(links, pluginItems, 'server'); addPluginPagesToMainMenu(links, pluginItems, 'server');
@ -460,7 +460,7 @@ function createToolsMenuList(pluginItems) {
}); });
links.push({ links.push({
name: globalize.translate('HeaderDevices'), name: globalize.translate('HeaderDevices'),
href: '#/devices.html', href: '#/dashboard/devices',
pageIds: ['devicesPage', 'devicePage'], pageIds: ['devicesPage', 'devicePage'],
icon: 'devices' icon: 'devices'
}); });
@ -472,7 +472,7 @@ function createToolsMenuList(pluginItems) {
}); });
links.push({ links.push({
name: globalize.translate('DLNA'), name: globalize.translate('DLNA'),
href: '#/dlnasettings.html', href: '#/dashboard/dlna',
pageIds: ['dlnaSettingsPage', 'dlnaProfilesPage', 'dlnaProfilePage'], pageIds: ['dlnaSettingsPage', 'dlnaProfilesPage', 'dlnaProfilePage'],
icon: 'input' icon: 'input'
}); });
@ -482,13 +482,13 @@ function createToolsMenuList(pluginItems) {
}); });
links.push({ links.push({
name: globalize.translate('LiveTV'), name: globalize.translate('LiveTV'),
href: '#/livetvstatus.html', href: '#/dashboard/livetv',
pageIds: ['liveTvStatusPage', 'liveTvTunerPage'], pageIds: ['liveTvStatusPage', 'liveTvTunerPage'],
icon: 'live_tv' icon: 'live_tv'
}); });
links.push({ links.push({
name: globalize.translate('HeaderDVR'), name: globalize.translate('HeaderDVR'),
href: '#/livetvsettings.html', href: '#/dashboard/recordings',
pageIds: ['liveTvSettingsPage'], pageIds: ['liveTvSettingsPage'],
icon: 'dvr' icon: 'dvr'
}); });
@ -500,35 +500,35 @@ function createToolsMenuList(pluginItems) {
links.push({ links.push({
name: globalize.translate('TabNetworking'), name: globalize.translate('TabNetworking'),
icon: 'cloud', icon: 'cloud',
href: '#/networking.html', href: '#/dashboard/networking',
pageIds: ['networkingPage'] pageIds: ['networkingPage']
}); });
links.push({ links.push({
name: globalize.translate('HeaderApiKeys'), name: globalize.translate('HeaderApiKeys'),
icon: 'vpn_key', icon: 'vpn_key',
href: '#/apikeys.html', href: '#/dashboard/keys',
pageIds: ['apiKeysPage'] pageIds: ['apiKeysPage']
}); });
links.push({ links.push({
name: globalize.translate('TabLogs'), name: globalize.translate('TabLogs'),
href: '#/log.html', href: '#/dashboard/logs',
pageIds: ['logPage'], pageIds: ['logPage'],
icon: 'bug_report' icon: 'bug_report'
}); });
links.push({ links.push({
name: globalize.translate('Notifications'), name: globalize.translate('Notifications'),
icon: 'notifications', icon: 'notifications',
href: '#/notificationsettings.html' href: '#/dashboard/notifications'
}); });
links.push({ links.push({
name: globalize.translate('TabPlugins'), name: globalize.translate('TabPlugins'),
icon: 'shopping_cart', icon: 'shopping_cart',
href: '#/installedplugins.html', href: '#/dashboard/plugins',
pageIds: ['pluginsPage', 'pluginCatalogPage'] pageIds: ['pluginsPage', 'pluginCatalogPage']
}); });
links.push({ links.push({
name: globalize.translate('TabScheduledTasks'), name: globalize.translate('TabScheduledTasks'),
href: '#/scheduledtasks.html', href: '#/dashboard/tasks',
pageIds: ['scheduledTasksPage', 'scheduledTaskPage'], pageIds: ['scheduledTasksPage', 'scheduledTaskPage'],
icon: 'schedule' icon: 'schedule'
}); });