Enrich page title with context (#296)

- Static pages have their own titles
- The name of the recipe is displayed when viewing it
This commit is contained in:
sephrat 2021-04-14 17:12:22 +02:00 committed by GitHub
parent 2c3fa81227
commit f3ea467e20
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 81 additions and 9 deletions

View File

@ -54,7 +54,7 @@ export default {
{
icon: "mdi-magnify",
to: "/search",
title: "search",
title: this.$t('search.search'),
},
],
};

View File

@ -48,7 +48,8 @@
"apply": "Apply",
"current-parenthesis": "(Current)",
"users": "Users",
"groups": "Groups"
"groups": "Groups",
"about": "About"
},
"page": {
"home-page": "Home Page",
@ -145,7 +146,8 @@
"delete-confirmation": "Are you sure you want to delete this recipe?"
},
"search": {
"search-mealie": "Search Mealie"
"search-mealie": "Search Mealie",
"search": "Search"
},
"settings": {
"general-settings": "General Settings",

View File

@ -46,7 +46,8 @@
"token": "Jeton",
"field-required": "Champ obligatoire",
"apply": "Appliquer",
"current-parenthesis": "(Actuel)"
"current-parenthesis": "(Actuel)",
"about": "À propos"
},
"page": {
"home-page": "Accueil",
@ -143,7 +144,8 @@
"delete-confirmation": "Êtes-vous sûr(e) de vouloir supprimer cette recette ?"
},
"search": {
"search-mealie": "Rechercher dans Mealie"
"search-mealie": "Rechercher dans Mealie",
"search": "Rechercher"
},
"settings": {
"general-settings": "Paramètres généraux",

View File

@ -18,6 +18,20 @@ const router = new VueRouter({
mode: process.env.NODE_ENV === "production" ? "history" : "hash",
});
const DEFAULT_TITLE = 'Mealie';
const TITLE_SEPARATOR = '🍴';
const TITLE_SUFFIX = " " + TITLE_SEPARATOR + " " + DEFAULT_TITLE;
router.afterEach( (to) => {
Vue.nextTick( async () => {
if(typeof to.meta.title === 'function' ) {
const title = await to.meta.title(to);
document.title = title + TITLE_SUFFIX;
} else {
document.title = to.meta.title ? to.meta.title + TITLE_SUFFIX : DEFAULT_TITLE;
}
});
});
const vueApp = new Vue({
vuetify,
store,

View File

@ -8,6 +8,7 @@ import ManageUsers from "@/pages/Admin/ManageUsers";
import Settings from "@/pages/Admin/Settings";
import About from "@/pages/Admin/About";
import { store } from "../store";
import i18n from '@/i18n.js';
export default {
path: "/admin",
@ -25,35 +26,59 @@ export default {
{
path: "profile",
component: Profile,
meta: {
title: i18n.t('settings.profile'),
},
},
{
path: "backups",
component: Backup,
meta: {
title: i18n.t('settings.backup-and-exports'),
},
},
{
path: "themes",
component: Theme,
meta: {
title: i18n.t('general.themes'),
},
},
{
path: "meal-planner",
component: MealPlanner,
meta: {
title: i18n.t('meal-plan.meal-planner'),
},
},
{
path: "migrations",
component: Migration,
meta: {
title: i18n.t('settings.migrations'),
},
},
{
path: "manage-users",
component: ManageUsers,
meta: {
title: i18n.t('settings.manage-users'),
},
},
{
path: "settings",
component: Settings,
meta: {
title: i18n.t('settings.site-settings'),
},
},
{
path: "about",
component: About,
meta: {
title: i18n.t('general.about'),
},
},
],
};

View File

@ -15,6 +15,7 @@ import ThisWeek from "@/pages/MealPlan/ThisWeek";
import { api } from "@/api";
import Admin from "./admin";
import { store } from "../store";
import i18n from '@/i18n.js';
export const routes = [
{ path: "/", name: "home", component: HomePage },
@ -31,15 +32,43 @@ export const routes = [
{ path: "/sign-up", redirect: "/" },
{ path: "/sign-up/:token", component: SignUpPage },
{ path: "/debug", component: Debug },
{ path: "/search", component: SearchPage },
{
path: "/search",
component: SearchPage,
meta: {
title: i18n.t('search.search'),
},
},
{ path: "/recipes/all", component: AllRecipes },
{ path: "/pages/:customPage", component: CustomPage },
{ path: "/recipes/tag/:tag", component: TagPage },
{ path: "/recipes/category/:category", component: CategoryPage },
{ path: "/recipe/:recipe", component: ViewRecipe },
{
path: "/recipe/:recipe",
component: ViewRecipe,
meta: {
title: async route => {
const recipe = await api.recipes.requestDetails(route.params.recipe);
return recipe.name;
},
}
},
{ path: "/new/", component: NewRecipe },
{ path: "/meal-plan/planner", component: Planner },
{ path: "/meal-plan/this-week", component: ThisWeek },
{
path: "/meal-plan/planner",
component: Planner,
meta: {
title: i18n.t('meal-plan.meal-planner'),
}
},
{
path: "/meal-plan/this-week",
component: ThisWeek,
meta: {
title: i18n.t('meal-plan.dinner-this-week'),
}
},
Admin,
{
path: "/meal-plan/today",