feat: Check Module in SideBar

pull/1/head
saeid_01 5 years ago
parent 9458283db2
commit 0410c2dcb0

2
.gitignore vendored

@ -4,6 +4,8 @@
/vendor /vendor
/modules /modules
/development/ /development/
/.idea
/.vscode
jsconfig.json jsconfig.json
.env .env
.phpunit.result.cache .phpunit.result.cache

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Symfony2PluginSettings">
<option name="directoryToWeb" value="public" />
<option name="pluginEnabled" value="true" />
</component>
</project>

@ -43,7 +43,7 @@
<v-list class="pt-0" dense> <v-list class="pt-0" dense>
<v-divider class="Divider"/> <v-divider class="Divider"/>
<a :href="item.href" v-for="(item, key) in Items" :key="key"> <a :href="item.href" v-for="(item, key) in Items" :key="key">
<template v-if="!item.permissionClass || $_can(item.permissionClass, false, item.module)"> <template v-if="(!item.permissionClass || $_can(item.permissionClass, false, item.module)) && (!item.moduleName || getModules.find(x => x.slug === item.moduleName))">
<wm-list-tile :TitleFa="item.titleFa" :TitleEn="item.titleEn" :icon="item.icon" :tileClass="item.tileClass"/> <wm-list-tile :TitleFa="item.titleFa" :TitleEn="item.titleEn" :icon="item.icon" :tileClass="item.tileClass"/>
</template> </template>
</a> </a>
@ -57,7 +57,6 @@ import Tile from "@Global/components/Drawer/Tile";
import Notifications from "@Global/components/Drawer/Notifications"; import Notifications from "@Global/components/Drawer/Notifications";
import Routes from "@Global/utils/common/routes"; import Routes from "@Global/utils/common/routes";
import { mapActions, mapGetters } from "vuex"; import { mapActions, mapGetters } from "vuex";
// import { getTime } from "@Global/utils/date/time";
export default { export default {
data() { data() {
return { return {
@ -88,43 +87,43 @@ export default {
{ {
titleEn: " Blog Management ", titleEn: " Blog Management ",
titleFa: " مدیریت خبرنامه ", titleFa: " مدیریت خبرنامه ",
moduleName: "blog",
icon: "rss", icon: "rss",
permissionClass: "SMS::manage",
href: '/blog', href: '/blog',
tileClass: 'orange-theme', tileClass: 'orange-theme',
}, },
{ {
titleEn: " Portfolio Management ", titleEn: " Portfolio Management ",
titleFa: " مدیریت نمونه کارها ", titleFa: " مدیریت نمونه کارها ",
moduleName: "portfolio",
icon: "art-gallery", icon: "art-gallery",
href: '/portfolio', href: '/portfolio',
}, },
{ // {
titleEn: " SMS Management ", // titleEn: " SMS Management ",
titleFa: " مدیریت پیام های کوتاه ", // titleFa: " مدیریت پیام های کوتاه ",
icon: "comment-alt", // icon: "comment-alt",
permissionClass: "SMS::manage", // permissionClass: "SMS::manage",
href: '/sms/manage', // href: '/sms/manage',
} // }
], ],
user: { name: "" }, user: { name: "" },
mainHref: Routes.main(), mainHref: Routes.main(),
}; };
}, },
mounted() { components: {
let self = this;
},
components: {
"wm-list-tile": Tile, "wm-list-tile": Tile,
"wm-notifications": Notifications "wm-notifications": Notifications
}, },
computed: { methods: {
...mapActions("auth", ["logout"]),
},
computed: {
...mapGetters("auth", ["getAuthUser"]), ...mapGetters("auth", ["getAuthUser"]),
...mapGetters("common", ["getCurrentTime"]), ...mapGetters("common", ["getCurrentTime"]),
}, ...mapGetters("rolePermission", ["getModules"]),
methods: {
...mapActions("auth", ["logout"]), }
}
}; };
</script> </script>

@ -3,9 +3,11 @@
<img class="Thumbnail" :src="$_getPath(src, true)"/> <img class="Thumbnail" :src="$_getPath(src, true)"/>
<div class="Fa"> {{ textFa }} </div> <div class="Fa"> {{ textFa }} </div>
<div class="En"> {{ textEn }} </div> <div class="En"> {{ textEn }} </div>
<v-btn class="ma-2" outlined :color="$_color(themeColor)"> <router-link v-if="hasBtn" :to="{ name: routeName }" class="flex lg6 xs12">
<v-icon left>WMi-{{btnIcon}}</v-icon> {{ btnText }} <v-btn class="ma-2" outlined @click.native="modal ? $_openModalStack( modal ) : null" :color="$_color(themeColor)">
</v-btn> <v-icon left>WMi-{{btnIcon}}</v-icon> {{ btnText }}
</v-btn>
</router-link>
</div> </div>
</template> </template>
@ -19,7 +21,9 @@ export default {
themeColor: { default: "black" }, themeColor: { default: "black" },
btnText: { default: "ثبت اولین آیتم" }, btnText: { default: "ثبت اولین آیتم" },
btnIcon: { default: "cancel" }, btnIcon: { default: "cancel" },
modal: { default: null },
routeName: { default: null },
hasBtn: { default: true },
}, },
}; };
</script> </script>

Loading…
Cancel
Save