Skip to content

Commit 6446894

Browse files
committed
feat: better menu edition
1 parent 482d928 commit 6446894

21 files changed

+1679
-184
lines changed

coreui/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@coreui/coreui-free-vue-laravel-admin-template",
3-
"version": "3.0.0-beta.1",
3+
"version": "1.0.0-beta.3",
44
"description": "CoreUI Free Vue Laravel Bootstrap Admin Template",
55
"author": {
66
"name": "CoreUI",

coreui/src/router/index.js

+80-9
Original file line numberDiff line numberDiff line change
@@ -86,15 +86,23 @@ const DeleteResource = () => import('@/views/resources/DeleteResource')
8686

8787
//Email
8888
const Emails = () => import('@/views/email/Emails')
89-
const CreateEmail = () => import('@/views/email/CreateEmail')
90-
const EditEmail = () => import('@/views/email/EditEmail')
89+
const CreateEmail = () => import('@/views/email/CreateEmail')
90+
const EditEmail = () => import('@/views/email/EditEmail')
9191
const ShowEmail = () => import('@/views/email/ShowEmail')
9292
const SendEmail = () => import('@/views/email/SendEmail')
9393

94-
const EditMenu = () => import('@/views/menu/EditMenu')
95-
const Media = () => import('@/views/media/Media')
94+
const Menus = () => import('@/views/menu/MenuIndex')
95+
const CreateMenu = () => import('@/views/menu/CreateMenu')
96+
const EditMenu = () => import('@/views/menu/EditMenu')
97+
const DeleteMenu = () => import('@/views/menu/DeleteMenu')
9698

99+
const MenuElements = () => import('@/views/menuElements/ElementsIndex')
100+
const CreateMenuElement = () => import('@/views/menuElements/CreateMenuElement')
101+
const EditMenuElement = () => import('@/views/menuElements/EditMenuElement')
102+
const ShowMenuElement = () => import('@/views/menuElements/ShowMenuElement')
103+
const DeleteMenuElement = () => import('@/views/menuElements/DeleteMenuElement')
97104

105+
const Media = () => import('@/views/media/Media')
98106

99107

100108
Vue.use(Router)
@@ -114,11 +122,6 @@ function configRoutes () {
114122
name: 'Home',
115123
component: TheContainer,
116124
children: [
117-
{
118-
path: '/menu',
119-
name: 'Edit Menu',
120-
component: EditMenu
121-
},
122125
{
123126
path: 'media',
124127
name: 'Media',
@@ -149,6 +152,74 @@ function configRoutes () {
149152
name: 'Widgets',
150153
component: Widgets
151154
},
155+
{
156+
path: 'menu',
157+
meta: { label: 'Menu'},
158+
component: {
159+
render (c) { return c('router-view') }
160+
},
161+
children: [
162+
{
163+
path: '',
164+
component: Menus,
165+
},
166+
{
167+
path: 'create',
168+
meta: { label: 'Create Menu' },
169+
name: 'CreateMenu',
170+
component: CreateMenu
171+
},
172+
{
173+
path: ':id/edit',
174+
meta: { label: 'Edit Menu' },
175+
name: 'EditMenu',
176+
component: EditMenu
177+
},
178+
{
179+
path: ':id/delete',
180+
meta: { label: 'Delete Menu' },
181+
name: 'DeleteMenu',
182+
component: DeleteMenu
183+
},
184+
]
185+
},
186+
{
187+
path: 'menuelement',
188+
meta: { label: 'MenuElement'},
189+
component: {
190+
render (c) { return c('router-view') }
191+
},
192+
children: [
193+
{
194+
path: ':menu/menuelement',
195+
component: MenuElements,
196+
},
197+
{
198+
path: ':menu/menuelement/create',
199+
meta: { label: 'Create Menu Element' },
200+
name: 'Create Menu Element',
201+
component: CreateMenuElement
202+
},
203+
{
204+
path: ':menu/menuelement/:id',
205+
meta: { label: 'Menu Element Details'},
206+
name: 'Menu Element',
207+
component: ShowMenuElement,
208+
},
209+
{
210+
path: ':menu/menuelement/:id/edit',
211+
meta: { label: 'Edit Menu Element' },
212+
name: 'Edit Menu Element',
213+
component: EditMenuElement
214+
},
215+
{
216+
path: ':menu/menuelement/:id/delete',
217+
meta: { label: 'Delete Menu Element' },
218+
name: 'Delete Menu Element',
219+
component: DeleteMenuElement
220+
},
221+
]
222+
},
152223
{
153224
path: 'users',
154225
meta: { label: 'Users'},

coreui/src/views/menu/CreateMenu.vue

+81
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
<template>
2+
<CRow>
3+
<CCol col="12" lg="6">
4+
<CCard no-header>
5+
<CCardBody>
6+
<h3>
7+
Create Menu
8+
</h3>
9+
<CAlert
10+
:show.sync="dismissCountDown"
11+
color="primary"
12+
fade
13+
>
14+
({{dismissCountDown}}) {{ message }}
15+
</CAlert>
16+
17+
<CInput label="Name" type="text" placeholder="Name" v-model="name"></CInput>
18+
19+
<CButton color="primary" @click="store()">Create</CButton>
20+
<CButton color="primary" @click="goBack">Back</CButton>
21+
</CCardBody>
22+
</CCard>
23+
</CCol>
24+
</CRow>
25+
</template>
26+
27+
<script>
28+
import axios from 'axios'
29+
export default {
30+
name: 'CreateMenu',
31+
data: () => {
32+
return {
33+
name: '',
34+
message: '',
35+
dismissSecs: 7,
36+
dismissCountDown: 0,
37+
showDismissibleAlert: false
38+
}
39+
},
40+
methods: {
41+
goBack() {
42+
this.$router.go(-1)
43+
// this.$router.replace({path: '/users'})
44+
},
45+
store() {
46+
let self = this;
47+
axios.post( '/api/menu/menu/store?token=' + localStorage.getItem("api_token"),
48+
{ 'name': self.name }
49+
)
50+
.then(function (response) {
51+
self.name = '';
52+
self.message = 'Successfully created note.';
53+
self.showAlert();
54+
}).catch(function (error) {
55+
if(error.response.data.message == 'The given data was invalid.'){
56+
self.message = '';
57+
for (let key in error.response.data.errors) {
58+
if (error.response.data.errors.hasOwnProperty(key)) {
59+
self.message += error.response.data.errors[key][0] + ' ';
60+
}
61+
}
62+
self.showAlert();
63+
}else{
64+
console.log(error);
65+
self.$router.push({ path: 'login' });
66+
}
67+
});
68+
},
69+
countDownChanged (dismissCountDown) {
70+
this.dismissCountDown = dismissCountDown
71+
},
72+
showAlert () {
73+
this.dismissCountDown = this.dismissSecs
74+
},
75+
},
76+
mounted: function(){
77+
78+
}
79+
}
80+
81+
</script>

coreui/src/views/menu/DeleteMenu.vue

+62
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
<template>
2+
<CRow>
3+
<CCol col="6" lg="6">
4+
<CCard>
5+
<CCardBody>
6+
<h4>Delete Menu</h4>
7+
<p>Are you sure?</p>
8+
<CAlert
9+
:show.sync="dismissCountDown"
10+
color="primary"
11+
fade
12+
>
13+
({{dismissCountDown}}) {{ message }}
14+
</CAlert>
15+
16+
<CButton color="danger" @click="deleteMenu()">Delete</CButton>
17+
<CButton color="primary" @click="goBack">Back</CButton>
18+
</CCardBody>
19+
</CCard>
20+
</CCol>
21+
</CRow>
22+
</template>
23+
24+
<script>
25+
import axios from 'axios'
26+
export default {
27+
name: 'DeleteMenu',
28+
data: () => {
29+
return {
30+
message: '',
31+
dismissSecs: 7,
32+
dismissCountDown: 0,
33+
}
34+
},
35+
methods: {
36+
goBack() {
37+
this.$router.go(-1)
38+
},
39+
deleteMenu() {
40+
let self = this;
41+
axios.get( '/api/menu/menu/delete?token=' + localStorage.getItem("api_token") + '&id=' + self.$route.params.id, {})
42+
.then(function (response) {
43+
if(response.data.success == true){
44+
self.$router.go(-1)
45+
}else{
46+
self.message = "Can't delete. This menu have assigned menu elements";
47+
self.showAlert();
48+
}
49+
}).catch(function (error) {
50+
console.log(error);
51+
self.$router.push({ path: '/login' });
52+
});
53+
},
54+
showAlert () {
55+
this.dismissCountDown = this.dismissSecs
56+
},
57+
},
58+
mounted: function(){
59+
}
60+
}
61+
62+
</script>

0 commit comments

Comments
 (0)