ilk commit

This commit is contained in:
burakovec
2025-07-04 14:11:18 +03:00
parent 7604d77a89
commit 1754e646a8
306 changed files with 24956 additions and 0 deletions

View File

@ -0,0 +1,47 @@
<template>
<div class="form-part">
<div class="form-part-title">
<h4>Sayfa Durumu</h4>
<div class="form-part-title-buttons"></div>
</div>
<div class="form-part-content" v-if="siteManagementPageStore.loaded">
<form-select
v-model="siteManagementPageStore.pageForm.status"
:listData="pageStatus"
listVal="id"
listText="deger"
modelKey="status"
label="Durum"
@change="OnKeyup" />
<form-select
v-model="siteManagementPageStore.pageForm.parentPageId"
:listData="siteManagementPageStore.allPagesList"
listVal="id"
listText="title"
modelKey="parentPageId"
label="Üst Sayfa"
@change="OnKeyup" />
</div>
</div>
</template>
<script setup lang="ts">
import { ref, onBeforeMount } from 'vue'
import { useSiteManagementPageStore } from '../../stores/siteManagementPageStore'
const siteManagementPageStore = useSiteManagementPageStore()
import { useSiteManagementPageService } from '../../service/siteManagementPageService'
const siteManagementPageService = useSiteManagementPageService()
const pageStatus = ref<Record<string,any>[]>([
{ id: 1, deger: 'Taslak' },
{ id: 2, deger: 'Yayınla' }
])
const OnKeyup = () => {
siteManagementPageStore.formChanged = true
}
onBeforeMount(async () => {
await siteManagementPageService.GetAllPages()
})
</script>

View File

@ -0,0 +1,67 @@
<template>
<div class="form-part form-title" v-if="siteManagementPageStore.loaded">
<form-input
required
modelKey="title"
v-model="siteManagementPageStore.pageForm.title"
:invalidText="siteManagementPageValidationStore.invalidTexts.title"
placeholder="Sayfa Başlığı"
@keyup="siteManagementPageStore.CreateSlug()" />
<div class="title-second">
<strong>Sayfa Linki:</strong>
<span class="page-slug">
{{ siteManagementPageStore.pageForm.slug }}
</span>
</div>
</div>
<div
:class="[
'form-part',
siteManagementPageStore.formChanged && !siteManagementPageStore.isNew
? 'changed'
: ''
]">
<div class="form-part-title">
<h4>Sayfa İçeriği</h4>
<div class="form-part-title-buttons"></div>
</div>
<div class="form-part-content" v-if="siteManagementPageStore.loaded">
<form-summer
label="İçerik"
modelKey="content"
v-model="siteManagementPageStore.pageForm.content"
@change="OnKeyup" />
<form-input
modelKey="etiket"
v-model="siteManagementPageStore.pageForm.etiket"
label="Etiketler"
description="Etiketleri , ile ayırark yazınız"
@keyup="OnKeyup" />
</div>
</div>
</template>
<script setup lang="ts">
import { ref, reactive, onBeforeMount } from 'vue'
import { useRoute } from 'vue-router'
const route = useRoute()
import { useSiteManagementPageStore } from '../../stores/siteManagementPageStore'
const siteManagementPageStore = useSiteManagementPageStore()
import { useSiteManagementPageValidationStore } from '../../validation/siteManagementPageValidationStore'
const siteManagementPageValidationStore = useSiteManagementPageValidationStore()
import { useSiteManagementPageService } from '../../service/siteManagementPageService'
const siteManagementPageService = useSiteManagementPageService()
const OnKeyup = () => {
siteManagementPageStore.formChanged = true
}
onBeforeMount(async () => {
if (!siteManagementPageStore.isNew) {
await siteManagementPageService.GetData()
} else {
siteManagementPageStore.ResetForm()
siteManagementPageStore.loaded = true
}
})
</script>

View File

@ -0,0 +1,114 @@
<template>
<div class="form-part">
<div class="form-part-title">
<h4>Sayfa Görseli</h4>
</div>
<div class="form-part-content">
<template v-if="file.fileUrl !== '' && file.fileUrl !== null">
<file-list-item
:data="file"
@click="ReplaceImage"
onlyPreview
:filePath="file.fileUrl" />
</template>
<template v-else>
<div class="form-item form-item-picture clickable" @click="picturePanel = true">
<div class="image-c">
<i class="ico-c">
<svg>
<use href="@/assets/images/icons.svg#plus"></use>
</svg>
</i>
</div>
</div>
</template>
</div>
</div>
<panel-wrapper
v-if="picturePanel"
v-model="picturePanel"
panel-title="Profil Resmi Ekle">
<template #panelContent>
<panel-sayfa-picture />
</template>
<template #footerButton>
<div class="button-c button-save" @click="FileUpload">Ekle</div>
</template>
</panel-wrapper>
</template>
<script setup lang="ts">
import { ref, reactive, onBeforeMount } from 'vue'
import PanelSayfaPicture from '../panel/PanelSayfaPicture.vue'
import PanelWrapper from '@/components/PanelWrapper.vue'
import { useDataStore } from '@/stores/dataStore'
const dataStore = useDataStore()
import { useGlobalStore } from '@/stores/globalStore'
const globalStore = useGlobalStore()
import { useValidationStore } from '@/stores/validationStore'
const validationStore = useValidationStore()
import { useSiteManagementPageStore } from '../../stores/siteManagementPageStore'
const siteManagementPageStore = useSiteManagementPageStore()
const picturePanel = ref<boolean>(false)
const isUpdate = ref<boolean>(false)
const file = reactive<Record<string,any>>({
title: '',
fileUrl: ''
})
const ReplaceImage = (d: object) => {
Object.assign(dataStore.panelData, d)
isUpdate.value = true
picturePanel.value = true
}
const GetData = async () => {
let dt = await dataStore.dataGet(
'DocumentPage/GetDocumentsByPageId/' + siteManagementPageStore.selectedPage
)
Object.assign(file, dt[0])
}
const FormCheck = (): boolean => {
let check: any = true
if (dataStore.panelData.file === null) {
validationStore.panelInvalidText.file = 'Bir dosya seçmelisiniz'
check = false
} else delete validationStore.panelInvalidText.file
if (check === '') check = true
return check
}
const FileUpload = async () => {
if (FormCheck()) {
const formData = new FormData()
formData.append('file', dataStore.panelData.file)
formData.append('title', '-')
formData.append('pageId', String(siteManagementPageStore.selectedPage))
let dt: any
if (!isUpdate.value) {
dt = await dataStore.dataPost('DocumentPage/upload', {
data: formData,
headers: { 'Content-Type': 'multipart/form-data' }
})
} else {
dt = await dataStore.dataPut('DocumentPage/' + dataStore.panelData.id, {
data: formData,
headers: { 'Content-Type': 'multipart/form-data' }
})
}
if (dt !== 'errorfalse') {
Object.assign(file, {})
await GetData()
picturePanel.value = false
isUpdate.value = false
}
}
}
onBeforeMount(async () => {
await GetData()
})
</script>

View File

@ -0,0 +1,29 @@
<template>
<form-input
modelKey="title"
v-model="siteManagementMenuStore.menuItemData.title"
required
label="Başlık"
minlength="2"
:invalidText="siteManagementMenuValidationStore.invalidTexts.title" />
<form-input
modelKey="slug"
v-model="siteManagementMenuStore.menuItemData.slug"
required
label="Adres"
minlength="2"
:invalidText="siteManagementMenuValidationStore.invalidTexts.slug" />
<div class="form-item">
<form-checkbox
label="Yeni Pencerede Aç"
val="_blank"
v-model="siteManagementMenuStore.menuItemData.targetKey" />
</div>
</template>
<script setup lang="ts">
import { useSiteManagementMenuStore } from '../../stores/siteManagementMenuStore'
const siteManagementMenuStore = useSiteManagementMenuStore()
import { useSiteManagementMenuValidationStore } from '../../validation/siteManagementMenuValidationStore'
const siteManagementMenuValidationStore = useSiteManagementMenuValidationStore()
</script>

View File

@ -0,0 +1,11 @@
<template>
<form-file
v-model="dataStore.panelData.file"
elclass="panel-documents-item"
:invalidText="validationStore.panelInvalidText.file"/>
</template>
<script setup lang="ts">import { useDataStore } from '@/stores/dataStore'
const dataStore = useDataStore()
import { useValidationStore } from '@/stores/validationStore'
const validationStore = useValidationStore()
</script>

View File

@ -0,0 +1,10 @@
import Ayarlar from "@/module/site-yonetimi/views/Ayarlar.vue";
export default {
path: '/site-yonetimi/ayarlar',
name: 'SiteAyarlari',
component: Ayarlar,
meta: {
authRequired: true
}
}

View File

@ -0,0 +1,8 @@
import sayfaYeni from '@/module/site-yonetimi/routes/sayfa-yeni'
import sayfDetay from '@/module/site-yonetimi/routes/sayfa-detay'
import sayfaListe from '@/module/site-yonetimi/routes/sayfa-liste'
import menuYonetimi from '@/module/site-yonetimi/routes/menu-yonetimi'
import menuListe from '@/module/site-yonetimi/routes/menu-liste'
import ayarlar from '@/module/site-yonetimi/routes/ayarlar'
export default [sayfaYeni, sayfDetay, sayfaListe, menuYonetimi, menuListe, ayarlar]

View File

@ -0,0 +1,10 @@
import MenuListe from "../views/MenuListe.vue";
export default {
path: '/site-yonetimi/menu-listesi',
name: 'MenuListe',
component: MenuListe,
meta: {
authRequired: true
}
}

View File

@ -0,0 +1,10 @@
import MenuYonetimi from "../views/MenuYonetimi.vue";
export default {
path: '/site-yonetimi/menu-yonetimi/:menuId',
name: 'MenuYonetimi',
component: MenuYonetimi,
meta: {
authRequired: true
}
}

View File

@ -0,0 +1,10 @@
import SayfaDetay from '@/module/site-yonetimi/views/SayfaDetay.vue'
export default {
path: '/sayfalar/detay/:pageId',
name: 'SayfaDetay',
component: SayfaDetay,
meta: {
authRequired: true
}
}

View File

@ -0,0 +1,10 @@
import SayfaListesi from '@/module/site-yonetimi/views/SayfaListesi.vue'
export default {
path: '/site-yonetimi/sayfa-listesi',
name: 'SayfaListe',
component: SayfaListesi,
meta: {
authRequired: true
}
}

View File

@ -0,0 +1,10 @@
import SayfaYeni from "@/module/site-yonetimi/views/SayfaYeni.vue";
export default {
path: '/site-yonetimi/yeni-sayfa',
name: 'SayfaYeni',
component: SayfaYeni,
meta: {
authRequired: true
}
}

View File

@ -0,0 +1,22 @@
import { defineStore } from 'pinia'
import { useDataStore } from '@/stores/dataStore'
import { useSiteManagementMenuStore } from '../stores/siteManagementMenuStore'
import { useRoute } from 'vue-router'
export const useSiteManagementMenuService = defineStore('siteManagementMenuService', () => {
const dataStore = useDataStore()
const siteManagementMenuStore = useSiteManagementMenuStore()
const route = useRoute()
const GetMenuContentList = async () => {
let data: Record<string, any> | any = await dataStore.dataGet(
'Menu/Konum/' + route.params.menuId
)
if (data !== 'errorfalse') {
siteManagementMenuStore.menuContentList = data
}
}
return { GetMenuContentList }
})

View File

@ -0,0 +1,83 @@
import { defineStore } from 'pinia'
import { useDataStore } from '@/stores/dataStore'
import { useSiteManagementPageStore } from '../stores/siteManagementPageStore'
import { useSiteManagementPageValidationStore } from '../validation/siteManagementPageValidationStore'
import { useToastStore } from '@/components/global/toastStore'
import { useUsersStore } from '@/stores/usersStore'
import router from '@/router'
export const useSiteManagementPageService = defineStore(
'siteManagementPageService',
() => {
const dataStore = useDataStore()
const siteManagementPageStore = useSiteManagementPageStore()
const siteManagementPageValidationStore = useSiteManagementPageValidationStore()
const toastStore = useToastStore()
const usersStore = useUsersStore()
const GetAllPages = async () => {
if (siteManagementPageStore.allPagesList.length === 0) {
let data: Record<string, any> | any = await dataStore.dataGet(
'Page/?pageNumber=0'
)
if (data !== 'errorfalse') {
siteManagementPageStore.allPagesList = data
}
}
}
const GetData = async () => {
siteManagementPageStore.loaded = false
let data = await dataStore.dataGet('Page/' + siteManagementPageStore.selectedPage)
if (data !== 'errorfalse') {
Object.assign(siteManagementPageStore.pageForm, data)
Object.assign(siteManagementPageStore.pageSafeForm, data)
setTimeout(() => {
siteManagementPageStore.loaded = true
}, 30)
setTimeout(() => {
siteManagementPageStore.formChanged = false
}, 50)
}
}
const SaveData = async () => {
if (siteManagementPageValidationStore.FormCheck()) {
let res: any
if (siteManagementPageStore.isNew) {
res = await dataStore.dataPost('Page', {
data: siteManagementPageStore.pageForm
})
} else {
siteManagementPageStore.pageForm.appUserId = usersStore.userId
res = await dataStore.dataPut('Page/' + siteManagementPageStore.pageForm.id, {
data: siteManagementPageStore.pageForm
})
}
if (res !== 'errorfalse') {
if (siteManagementPageStore.isNew)
toastStore.AddToast('Sayfa başarıyla kaydedildi', 'success', 5000)
else toastStore.AddToast('Başarıyla kaydedildi', 'success', 5000)
siteManagementPageStore.formChanged = false
siteManagementPageStore.loaded = false
dataStore.pageDataUpdate = true
if (!siteManagementPageStore.isNew) GetData()
else router.push('/site-yonetimi/sayfa-listesi')
siteManagementPageStore.isNew = false
}
} else {
siteManagementPageValidationStore.isFormValid = true
}
}
return { GetAllPages, GetData, SaveData }
}
)

View File

@ -0,0 +1,30 @@
import { defineStore } from 'pinia'
import { ref, reactive } from 'vue'
export const useSiteManagementMenuStore = defineStore('siteManagementMenuStore', () => {
const menuContentList = ref<Record<string, any>[]>([])
const deleteMenuList = ref<Record<string, any>[]>([])
const menuControlId = ref<number>(0)
const safeMenuItemData = reactive<Record<string, any>>({
title: '',
konumId: null,
sira: null,
slug: '',
parentMenuId: null,
pageId: null,
isActive: true,
targetKey: false
})
const menuItemData = reactive<Record<string, any>>({})
return {
deleteMenuList,
menuContentList,
menuControlId,
menuItemData,
safeMenuItemData
}
})

View File

@ -0,0 +1,54 @@
import { defineStore } from 'pinia'
import { ref, reactive } from 'vue'
import { useUsersStore } from '@/stores/usersStore'
import { useGlobalStore } from '@/stores/globalStore'
export const useSiteManagementPageStore = defineStore('siteManagementPageStore', () => {
const usersStore = useUsersStore()
const globalStore = useGlobalStore()
const selectedPage = ref<number | null>(null)
const allPagesList = ref<Record<string, any>[]>([])
const pageBaseForm = reactive<Record<string, any>>({
slug: '',
title: '',
content: '',
etiket: '',
parentPageId: null,
status: 1,
appUserId: usersStore.userId
})
const pageForm = reactive<Record<string, any>>({})
const pageSafeForm = reactive<Record<string, any>>({})
const formChanged = ref<boolean>(false)
const loaded = ref<boolean>(false)
const isNew = ref<boolean>(false)
const ResetForm = () => {
globalStore.ResetObject(pageForm, pageBaseForm)
Object.assign(pageForm, pageBaseForm)
}
const RestoreForm = () => {
Object.assign(pageForm, pageSafeForm)
formChanged.value = false
}
const CreateSlug = () => {
pageForm.slug = globalStore.CreateSlug(pageForm.title)
formChanged.value = true
}
return {
selectedPage,
allPagesList,
pageBaseForm,
pageForm,
pageSafeForm,
formChanged,
loaded,
isNew,
ResetForm,
RestoreForm,
CreateSlug
}
})

View File

@ -0,0 +1,30 @@
import { defineStore } from 'pinia'
import { ref, reactive } from 'vue'
import { useValidationStore } from '@/stores/validationStore'
import { useSiteManagementMenuStore } from '../stores/siteManagementMenuStore'
export const useSiteManagementMenuValidationStore = defineStore('siteManagementMenuValidationStore', () => {
const siteManagementMenuStore = useSiteManagementMenuStore()
const validationStore = useValidationStore()
const formChanged = ref<boolean>(false)
const isFormValid = ref<boolean>(true)
const invalidTexts = reactive<Record<string, any>>({})
const FormCheck = (): boolean => {
Object.assign(invalidTexts, {})
validationStore.IsFieldEmpty(siteManagementMenuStore.menuItemData,invalidTexts,'title', 'Menü için başlık belirlemelisiniz.')
validationStore.IsFieldEmpty(siteManagementMenuStore.menuItemData,invalidTexts,'slug', 'Tıklandığı zaman açılacak linki yazınız.')
isFormValid.value = Object.keys(invalidTexts).length === 0
return isFormValid.value
}
return {
formChanged,
isFormValid,
invalidTexts,
FormCheck
}
})

View File

@ -0,0 +1,30 @@
import { defineStore } from 'pinia'
import { ref, reactive } from 'vue'
import { useValidationStore } from '@/stores/validationStore'
import { useSiteManagementPageStore } from '../stores/siteManagementPageStore'
export const useSiteManagementPageValidationStore = defineStore('siteManagementPageValidationStore', () => {
const siteManagementPageStore = useSiteManagementPageStore()
const validationStore = useValidationStore()
const formChanged = ref<boolean>(false)
const isFormValid = ref<boolean>(true)
const invalidTexts = reactive<Record<string, any>>({})
const FormCheck = (): boolean => {
Object.assign(invalidTexts, {})
validationStore.IsFieldEmpty(siteManagementPageStore.pageForm,invalidTexts,'title', 'Menü için başlık belirlemelisiniz.')
validationStore.IsFieldEmpty(siteManagementPageStore.pageForm,invalidTexts,'slug', 'Tıklandığı zaman açılacak linki yazınız.')
isFormValid.value = Object.keys(invalidTexts).length === 0
return isFormValid.value
}
return {
formChanged,
isFormValid,
invalidTexts,
FormCheck
}
})

View File

@ -0,0 +1,9 @@
<template>
<AdminLayout>
<Breadcrumb current-page-text="Site Ayarlar"/>
</AdminLayout>
</template>
<script setup lang="ts">
import AdminLayout from "@/layouts/AdminLayout.vue";
import {Breadcrumb} from "@/components/global";
</script>

View File

@ -0,0 +1,40 @@
<template>
<AdminLayout>
<Breadcrumb currentPageText="Menü Listesi" />
<section class="section-list">
<list-table-content
:tableHeader="tableHeader"
:rowAction="OpenMenu"
icon="sitemanagement"
title="Menüler"
listText="Menü"
:tableData="menuList"
apiText="Menü Listesi"
v-model:refresh="refreshList" />
</section>
</AdminLayout>
</template>
<script setup lang="ts">
import { ref, reactive } from 'vue'
import AdminLayout from '@/layouts/AdminLayout.vue'
import { Breadcrumb } from '@/components/global'
import router from '@/router'
const refreshList = ref<boolean>(false)
const tableHeader = ref<Record<string, any>[]>([
{
name: 'title',
title: 'Menü',
sort: true
}
])
const menuList = ref<Record<string,any>[]>([
{title:"Ana Menü",positionId:1},
{title:"Footer Menü",positionId:2}
])
const OpenMenu = (row: any) => {
router.push('menu-yonetimi/' + row.positionId)
}
</script>

View File

@ -0,0 +1,278 @@
<template>
<AdminLayout>
<Breadcrumb current-page-text="Menu Yonetimi" />
<div class="form-content">
<div class="form-inner-content form-inner-content-left">
<div class="form-part">
<div class="form-part-title">
<h4>
{{ Number(route.params.menuId) === 1 ? 'Ana Menü' : 'Footer Menü' }}
</h4>
<div class="form-part-title-buttons">
<div class="button-c button-save" @click="SaveMenu">Kaydet</div>
</div>
</div>
<div class="form-part-content">
<template v-if="loaded">
<template v-if="siteManagementMenuStore.menuContentList.length > 0">
<div class="form-inner-comment">
Menü öğelerini sürükle-bırak yaparak düzenleyebilirsiniz.
</div>
<draggable
class="menu-list-group"
:list="siteManagementMenuStore.menuContentList"
:group="{ name: 'menu', put: false }"
itemKey="id"
@end="ChangeMenu">
<template #item="{ element, index }">
<div class="menu-list-item">
<span>{{ element.title }}</span>
<div class="menu-list-item-buttons">
<button
@click="EditMenu(element, index)"
v-if="element.pageId === null">
Düzenle
</button>
<button
@click="RemoveFromMenu(element, index)"
class="button-alert">
Sil
</button>
</div>
</div>
</template>
</draggable>
</template>
<template v-else>
<div class="form-inner-comment">
Menüye henüz öğe eklenmemiş. Sağdaki bölümden öğe ekleyebilirsiniz.
</div>
</template>
</template>
</div>
</div>
</div>
<div class="form-inner-content form-inner-content-right">
<div class="form-part">
<div class="form-part-title">
<h4>Sayfalar</h4>
<div class="form-part-title-buttons">
<div class="button-c button-save" @click="AddMenuItem">Menü Öğesi Ekle</div>
</div>
</div>
<div class="form-part-content">
<div class="menu-list-group">
<template v-for="(page, i) in pageList">
<div v-if="page.show" class="menu-list-item menu-list-item-page">
<span>{{ page.title }}</span>
<div class="menu-list-item-buttons">
<button @click="AddToMenu(page, i)">Menüye Ekle</button>
</div>
</div>
</template>
</div>
</div>
</div>
</div>
</div>
<panel-wrapper
wide
v-if="menuItemPanel"
v-model="menuItemPanel"
:panel-title="isEdit ? 'Menü Öğesi Düzenle' : 'Menü Öğesi Ekle'">
<template #panelContent>
<panel-menu-item />
</template>
<template #footerButton>
<div class="button-c button-save" @click="SaveMenuItem">
{{ isEdit ? 'Kaydet' : 'Ekle' }}
</div>
</template>
</panel-wrapper>
</AdminLayout>
</template>
<script setup lang="ts">
import { ref, reactive, onBeforeMount } from 'vue'
import draggable from 'vuedraggable'
import AdminLayout from '@/layouts/AdminLayout.vue'
import { Breadcrumb } from '@/components/global'
import PanelWrapper from '@/components/PanelWrapper.vue'
import PanelMenuItem from '../components/panel/PanelMenuItem.vue'
import { useRoute } from 'vue-router'
const route = useRoute()
import { useDataStore } from '@/stores/dataStore'
const dataStore = useDataStore()
import { useSiteManagementMenuStore } from '../stores/siteManagementMenuStore'
const siteManagementMenuStore = useSiteManagementMenuStore()
import { useSiteManagementPageStore } from '../stores/siteManagementPageStore'
const siteManagementPageStore = useSiteManagementPageStore()
import { useSiteManagementMenuValidationStore } from '../validation/siteManagementMenuValidationStore'
const siteManagementMenuValidationStore = useSiteManagementMenuValidationStore()
import { useSiteManagementMenuService } from '../service/siteManagementMenuService'
const siteManagementMenuService = useSiteManagementMenuService()
import { useSiteManagementPageService } from '../service/siteManagementPageService'
const siteManagementPageService = useSiteManagementPageService()
const onayIslemTipleri = ref<Record<string, any>[]>([])
const formData = reactive<Record<string, any>>({})
const invalidTexts = reactive<Record<string, any>>({})
const loaded = ref<boolean>(false)
const menuItemPanel = ref<boolean>(false)
const isEdit = ref<boolean>(false)
const pageList = ref<Record<string, any>[]>([])
const editMenuIndex = ref<number | null>(null)
const AddMenuItem = () => {
isEdit.value = false
Object.assign(
siteManagementMenuStore.menuItemData,
siteManagementMenuStore.safeMenuItemData
)
menuItemPanel.value = true
}
const EditMenu = (data: Record<string, any>, i: number) => {
isEdit.value = true
Object.assign(siteManagementMenuStore.menuItemData, data)
siteManagementMenuStore.menuItemData.targetKey =
siteManagementMenuStore.menuItemData.targetKey === '_blank' ? true : false
editMenuIndex.value = i
menuItemPanel.value = true
}
const SaveMenu = async () => {
var dt: any
siteManagementMenuStore.menuContentList.forEach(async (el, i) => {
if (el.type === 'update') {
dt = await dataStore.dataPut('Menu/' + el.id, {
data: el
})
}
if (el.type === 'new') {
dt = await dataStore.dataPost('Menu', {
data: el
})
}
})
siteManagementMenuStore.deleteMenuList.forEach(async (el, i) => {
dt = await dataStore.dataDelete('Menu/' + el)
})
setTimeout(async () => {
siteManagementMenuStore.deleteMenuList = []
await GetMenuList()
}, 50)
}
const ReorderMenu = () => {
siteManagementMenuStore.menuContentList.forEach((el, i) => {
el.sira = i + 1
if (el.id !== undefined) el.type = 'update'
})
}
const ChangeMenu = (data: Record<string, any>) => {
ReorderMenu()
}
const AddToMenu = (data: Record<string, any>, i: number) => {
let newData: Record<string, any> = {
title: data.title,
konumId: route.params.menuId,
slug: data.slug,
parentMenuId: null,
pageId: data.id,
isActive: true,
type: 'new',
targetKey: '',
sira: siteManagementMenuStore.menuContentList.length + 1
}
siteManagementMenuStore.menuContentList.push(newData)
data.show = false
}
const CheckPageList = () => {
pageList.value.forEach((page) => {
var show: boolean = true
siteManagementMenuStore.menuContentList.forEach((menu) => {
if (page.id === menu.pageId) show = false
})
page.show = show
})
setTimeout(() => {
loaded.value = true
}, 10)
}
const RemoveFromMenu = (el: Record<string, any>, i: number) => {
siteManagementMenuStore.menuContentList.splice(i, 1)
if (el.pageId !== null) {
let page = pageList.value.filter((itm) => itm.id === el.pageId)[0]
page.show = true
}
if (el.id !== undefined) {
siteManagementMenuStore.deleteMenuList.push(el.id)
}
ReorderMenu()
}
const SaveMenuItem = () => {
if (siteManagementMenuValidationStore.FormCheck()) {
if (!isEdit.value) {
let newData: Record<string, any> = {
title: siteManagementMenuStore.menuItemData.title,
konumId: route.params.menuId,
slug: siteManagementMenuStore.menuItemData.slug,
parentMenuId: null,
pageId: null,
isActive: true,
type: 'new',
targetKey: siteManagementMenuStore.menuItemData.targetKey ? '_blank' : '',
sira: siteManagementMenuStore.menuContentList.length + 1
}
siteManagementMenuStore.menuContentList.push(newData)
} else {
if (siteManagementMenuStore.menuItemData.id !== undefined)
siteManagementMenuStore.menuItemData.type = 'update'
siteManagementMenuStore.menuItemData.targetKey = siteManagementMenuStore
.menuItemData.targetKey
? '_blank'
: ''
Object.assign(
siteManagementMenuStore.menuContentList[editMenuIndex.value!],
siteManagementMenuStore.menuItemData
)
isEdit.value = false
editMenuIndex.value = null
}
menuItemPanel.value = false
}else{
siteManagementMenuValidationStore.isFormValid = true
}
}
const GetMenuList = async () => {
await siteManagementMenuService.GetMenuContentList()
siteManagementMenuStore.menuContentList.sort((a, b) => a.sira - b.sira)
pageList.value.splice(
0,
pageList.value.length,
...siteManagementPageStore.allPagesList
)
CheckPageList()
}
onBeforeMount(async () => {
await siteManagementPageService.GetAllPages()
await GetMenuList()
})
</script>

View File

@ -0,0 +1,49 @@
<template>
<AdminLayout>
<Breadcrumb currentPageText="Sayfa Detay" />
<div class="form-part form-title">
<div class="form-title-buttons">
<button
class="button-c button-save"
@click="siteManagementPageService.SaveData"
:disabled="!siteManagementPageStore.formChanged">
Kaydet
</button>
<button
class="button-c button-cancel"
@click="siteManagementPageStore.RestoreForm"
v-if="siteManagementPageStore.formChanged">
Vazgeç
</button>
</div>
</div>
<div class="form-content">
<div class="form-inner-content form-inner-content-left">
<form-sayfa-bilgileri />
</div>
<div class="form-inner-content form-inner-content-right">
<form-sayfa-ayar />
<form-sayfa-picture />
</div>
</div>
</AdminLayout>
</template>
<script setup lang="ts">
import { onBeforeMount } from 'vue'
import AdminLayout from '@/layouts/AdminLayout.vue'
import FormSayfaBilgileri from '../components/form/FormSayfaBilgileri.vue'
import FormSayfaAyar from '../components/form/FormSayfaAyar.vue'
import FormSayfaPicture from '../components/form/FormSayfaPicture.vue'
import { useRoute } from 'vue-router'
const route = useRoute()
import { useSiteManagementPageStore } from '../stores/siteManagementPageStore'
const siteManagementPageStore = useSiteManagementPageStore()
import { useSiteManagementPageService } from '../service/siteManagementPageService'
const siteManagementPageService = useSiteManagementPageService()
onBeforeMount(() => {
siteManagementPageStore.selectedPage = Number(route.params.pageId)
siteManagementPageStore.isNew = false
})
</script>

View File

@ -0,0 +1,34 @@
<template>
<AdminLayout>
<Breadcrumb current-page-text="Sayfa Listesi" />
<section class="section-list">
<list-table-content
:tableHeader="tableHeader"
:rowAction="pageDetail"
icon="sitemanagement"
title="Sayfalar"
listText="Sayfa"
addRoute="yeni-sayfa"
apiList="Page"
apiText="Sayfa Listesi" />
</section>
</AdminLayout>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import AdminLayout from '@/layouts/AdminLayout.vue'
import { useGlobalStore } from '@/stores/globalStore'
const globalStore = useGlobalStore()
import router from '@/router'
const tableHeader = ref<Record<string,any>[]>([
{
name: 'title',
title: 'Sayfa Başlığı',
sort: true
}
])
const pageDetail = (row: any) => {
router.push('/sayfalar/detay/' + row.id)
}
</script>

View File

@ -0,0 +1,38 @@
<template>
<AdminLayout>
<Breadcrumb current-page-text="Yeni Sayfa" />
<div class="form-part form-title">
<div class="form-title-buttons">
<button class="button-c button-save" @click="siteManagementPageService.SaveData">
Kaydet
</button>
<router-link class="button-c button-cancel" to="/site-yonetimi/sayfa-listesi">
Vazgeç
</router-link>
</div>
</div>
<div class="form-content">
<div class="form-inner-content form-inner-content-left">
<form-sayfa-bilgileri />
</div>
<div class="form-inner-content form-inner-content-right">
<form-sayfa-ayar />
</div>
</div>
</AdminLayout>
</template>
<script setup lang="ts">
import { onBeforeMount } from 'vue'
import AdminLayout from '@/layouts/AdminLayout.vue'
import FormSayfaBilgileri from '../components/form/FormSayfaBilgileri.vue'
import FormSayfaAyar from '../components/form/FormSayfaAyar.vue'
import { useSiteManagementPageStore } from '../stores/siteManagementPageStore'
const siteManagementPageStore = useSiteManagementPageStore()
import { useSiteManagementPageService } from '../service/siteManagementPageService'
const siteManagementPageService = useSiteManagementPageService()
onBeforeMount(() => {
siteManagementPageStore.isNew = true
})
</script>

View File

@ -0,0 +1,11 @@
<script setup lang='ts'>
</script>
<template>
</template>
<style scoped>
</style>