mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-07-09 03:04:54 -04:00
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:
parent
2c3fa81227
commit
f3ea467e20
@ -54,7 +54,7 @@ export default {
|
|||||||
{
|
{
|
||||||
icon: "mdi-magnify",
|
icon: "mdi-magnify",
|
||||||
to: "/search",
|
to: "/search",
|
||||||
title: "search",
|
title: this.$t('search.search'),
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
@ -48,7 +48,8 @@
|
|||||||
"apply": "Apply",
|
"apply": "Apply",
|
||||||
"current-parenthesis": "(Current)",
|
"current-parenthesis": "(Current)",
|
||||||
"users": "Users",
|
"users": "Users",
|
||||||
"groups": "Groups"
|
"groups": "Groups",
|
||||||
|
"about": "About"
|
||||||
},
|
},
|
||||||
"page": {
|
"page": {
|
||||||
"home-page": "Home Page",
|
"home-page": "Home Page",
|
||||||
@ -145,7 +146,8 @@
|
|||||||
"delete-confirmation": "Are you sure you want to delete this recipe?"
|
"delete-confirmation": "Are you sure you want to delete this recipe?"
|
||||||
},
|
},
|
||||||
"search": {
|
"search": {
|
||||||
"search-mealie": "Search Mealie"
|
"search-mealie": "Search Mealie",
|
||||||
|
"search": "Search"
|
||||||
},
|
},
|
||||||
"settings": {
|
"settings": {
|
||||||
"general-settings": "General Settings",
|
"general-settings": "General Settings",
|
||||||
|
@ -46,7 +46,8 @@
|
|||||||
"token": "Jeton",
|
"token": "Jeton",
|
||||||
"field-required": "Champ obligatoire",
|
"field-required": "Champ obligatoire",
|
||||||
"apply": "Appliquer",
|
"apply": "Appliquer",
|
||||||
"current-parenthesis": "(Actuel)"
|
"current-parenthesis": "(Actuel)",
|
||||||
|
"about": "À propos"
|
||||||
},
|
},
|
||||||
"page": {
|
"page": {
|
||||||
"home-page": "Accueil",
|
"home-page": "Accueil",
|
||||||
@ -143,7 +144,8 @@
|
|||||||
"delete-confirmation": "Êtes-vous sûr(e) de vouloir supprimer cette recette ?"
|
"delete-confirmation": "Êtes-vous sûr(e) de vouloir supprimer cette recette ?"
|
||||||
},
|
},
|
||||||
"search": {
|
"search": {
|
||||||
"search-mealie": "Rechercher dans Mealie"
|
"search-mealie": "Rechercher dans Mealie",
|
||||||
|
"search": "Rechercher"
|
||||||
},
|
},
|
||||||
"settings": {
|
"settings": {
|
||||||
"general-settings": "Paramètres généraux",
|
"general-settings": "Paramètres généraux",
|
||||||
|
@ -18,6 +18,20 @@ const router = new VueRouter({
|
|||||||
mode: process.env.NODE_ENV === "production" ? "history" : "hash",
|
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({
|
const vueApp = new Vue({
|
||||||
vuetify,
|
vuetify,
|
||||||
store,
|
store,
|
||||||
|
@ -8,6 +8,7 @@ import ManageUsers from "@/pages/Admin/ManageUsers";
|
|||||||
import Settings from "@/pages/Admin/Settings";
|
import Settings from "@/pages/Admin/Settings";
|
||||||
import About from "@/pages/Admin/About";
|
import About from "@/pages/Admin/About";
|
||||||
import { store } from "../store";
|
import { store } from "../store";
|
||||||
|
import i18n from '@/i18n.js';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
path: "/admin",
|
path: "/admin",
|
||||||
@ -25,35 +26,59 @@ export default {
|
|||||||
{
|
{
|
||||||
path: "profile",
|
path: "profile",
|
||||||
component: Profile,
|
component: Profile,
|
||||||
|
meta: {
|
||||||
|
title: i18n.t('settings.profile'),
|
||||||
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
path: "backups",
|
path: "backups",
|
||||||
component: Backup,
|
component: Backup,
|
||||||
|
meta: {
|
||||||
|
title: i18n.t('settings.backup-and-exports'),
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "themes",
|
path: "themes",
|
||||||
component: Theme,
|
component: Theme,
|
||||||
|
meta: {
|
||||||
|
title: i18n.t('general.themes'),
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "meal-planner",
|
path: "meal-planner",
|
||||||
component: MealPlanner,
|
component: MealPlanner,
|
||||||
|
meta: {
|
||||||
|
title: i18n.t('meal-plan.meal-planner'),
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "migrations",
|
path: "migrations",
|
||||||
component: Migration,
|
component: Migration,
|
||||||
|
meta: {
|
||||||
|
title: i18n.t('settings.migrations'),
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "manage-users",
|
path: "manage-users",
|
||||||
component: ManageUsers,
|
component: ManageUsers,
|
||||||
|
meta: {
|
||||||
|
title: i18n.t('settings.manage-users'),
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "settings",
|
path: "settings",
|
||||||
component: Settings,
|
component: Settings,
|
||||||
|
meta: {
|
||||||
|
title: i18n.t('settings.site-settings'),
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "about",
|
path: "about",
|
||||||
component: About,
|
component: About,
|
||||||
|
meta: {
|
||||||
|
title: i18n.t('general.about'),
|
||||||
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
@ -15,6 +15,7 @@ import ThisWeek from "@/pages/MealPlan/ThisWeek";
|
|||||||
import { api } from "@/api";
|
import { api } from "@/api";
|
||||||
import Admin from "./admin";
|
import Admin from "./admin";
|
||||||
import { store } from "../store";
|
import { store } from "../store";
|
||||||
|
import i18n from '@/i18n.js';
|
||||||
|
|
||||||
export const routes = [
|
export const routes = [
|
||||||
{ path: "/", name: "home", component: HomePage },
|
{ path: "/", name: "home", component: HomePage },
|
||||||
@ -31,15 +32,43 @@ export const routes = [
|
|||||||
{ path: "/sign-up", redirect: "/" },
|
{ path: "/sign-up", redirect: "/" },
|
||||||
{ path: "/sign-up/:token", component: SignUpPage },
|
{ path: "/sign-up/:token", component: SignUpPage },
|
||||||
{ path: "/debug", component: Debug },
|
{ path: "/debug", component: Debug },
|
||||||
{ path: "/search", component: SearchPage },
|
{
|
||||||
|
path: "/search",
|
||||||
|
component: SearchPage,
|
||||||
|
meta: {
|
||||||
|
title: i18n.t('search.search'),
|
||||||
|
},
|
||||||
|
},
|
||||||
{ path: "/recipes/all", component: AllRecipes },
|
{ path: "/recipes/all", component: AllRecipes },
|
||||||
{ path: "/pages/:customPage", component: CustomPage },
|
{ path: "/pages/:customPage", component: CustomPage },
|
||||||
{ path: "/recipes/tag/:tag", component: TagPage },
|
{ path: "/recipes/tag/:tag", component: TagPage },
|
||||||
{ path: "/recipes/category/:category", component: CategoryPage },
|
{ 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: "/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,
|
Admin,
|
||||||
{
|
{
|
||||||
path: "/meal-plan/today",
|
path: "/meal-plan/today",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user