parent
							
								
									c10ef97e85
								
							
						
					
					
						commit
						792982606d
					
				@ -1,54 +1,44 @@ | 
				
			||||
<template> | 
				
			||||
  <q-card | 
				
			||||
    v-if="page" | 
				
			||||
    elevation="4" | 
				
			||||
  > | 
				
			||||
    <q-card-section> | 
				
			||||
      <div class="text-h6"> | 
				
			||||
        {{ page.title }} | 
				
			||||
  <BaseCard plain> | 
				
			||||
    <template #header> | 
				
			||||
      <div class="-mb-2 flex items-center justify-between gap-2 bg-gray-15 px-4 py-2"> | 
				
			||||
        <h6 v-text="page.title" /> | 
				
			||||
        <BaseButton | 
				
			||||
          v-if="isAdmin" | 
				
			||||
          icon="edit" | 
				
			||||
          label="Edit" | 
				
			||||
          type="black" | 
				
			||||
          @click="handleClick(page)" | 
				
			||||
        /> | 
				
			||||
      </div> | 
				
			||||
    </q-card-section> | 
				
			||||
    </template> | 
				
			||||
 | 
				
			||||
    <q-card-section> | 
				
			||||
      <p v-html="page.content" /> | 
				
			||||
    </q-card-section> | 
				
			||||
 | 
				
			||||
    <q-card-actions v-if="isAdmin"> | 
				
			||||
      <q-btn | 
				
			||||
        v-close-popup | 
				
			||||
        flat | 
				
			||||
        label="Edit" | 
				
			||||
        color="primary" | 
				
			||||
        @click="handleClick(page)" | 
				
			||||
      /> | 
				
			||||
    </q-card-actions> | 
				
			||||
  </q-card> | 
				
			||||
    <div v-html="page.content" /> | 
				
			||||
  </BaseCard> | 
				
			||||
</template> | 
				
			||||
 | 
				
			||||
<script> | 
				
			||||
<script setup> | 
				
			||||
import { useRouter } from "vue-router" | 
				
			||||
import { useSecurityStore } from "../../store/securityStore" | 
				
			||||
import { storeToRefs } from "pinia" | 
				
			||||
import BaseCard from "../basecomponents/BaseCard.vue" | 
				
			||||
import BaseButton from "../basecomponents/BaseButton.vue" | 
				
			||||
 | 
				
			||||
import {mapGetters} from "vuex"; | 
				
			||||
import {useRouter} from "vue-router"; | 
				
			||||
import {reactive, toRefs} from "vue"; | 
				
			||||
const router = useRouter() | 
				
			||||
const securityStore = useSecurityStore() | 
				
			||||
const { isAdmin } = storeToRefs(securityStore) | 
				
			||||
 | 
				
			||||
export default { | 
				
			||||
  name: 'PageCard', | 
				
			||||
  props: { | 
				
			||||
    page: Object, | 
				
			||||
  }, | 
				
			||||
  setup() { | 
				
			||||
    const router = useRouter(); | 
				
			||||
    const state = reactive({ | 
				
			||||
      handleClick: function (page) { | 
				
			||||
        router.push({name: 'PageUpdate', query: {id: page['@id']}}); | 
				
			||||
      }, | 
				
			||||
    }); | 
				
			||||
    return toRefs(state); | 
				
			||||
defineProps({ | 
				
			||||
  page: { | 
				
			||||
    type: Object, | 
				
			||||
    required: true, | 
				
			||||
  }, | 
				
			||||
  computed: { | 
				
			||||
    ...mapGetters({ | 
				
			||||
      'isAdmin': 'security/isAdmin', | 
				
			||||
    }), | 
				
			||||
  } | 
				
			||||
}; | 
				
			||||
</script> | 
				
			||||
}) | 
				
			||||
 | 
				
			||||
const handleClick = (page) => { | 
				
			||||
  router.push({ | 
				
			||||
    name: "PageUpdate", | 
				
			||||
    query: { id: page["@id"] }, | 
				
			||||
  }) | 
				
			||||
} | 
				
			||||
</script> | 
				
			||||
@ -1,23 +1,34 @@ | 
				
			||||
<template> | 
				
			||||
  <div | 
				
			||||
    v-for="page in pages" | 
				
			||||
    :key="page.id" | 
				
			||||
    v-if="pages.length" | 
				
			||||
    class="grid gap-4 grid-cols-1 lg:grid-cols-2 xl:grid-cols-2" | 
				
			||||
  > | 
				
			||||
    <PageCard | 
				
			||||
      v-for="page in pages" | 
				
			||||
      :key="page.id" | 
				
			||||
      :page="page" | 
				
			||||
    /> | 
				
			||||
  </div> | 
				
			||||
</template> | 
				
			||||
 | 
				
			||||
<script setup> | 
				
			||||
import PageCard from './PageCard.vue'; | 
				
			||||
import PageCard from "./PageCard.vue" | 
				
			||||
import pageService from "../../services/page" | 
				
			||||
import { useI18n } from "vue-i18n" | 
				
			||||
import { ref } from "vue" | 
				
			||||
 | 
				
			||||
defineProps({ | 
				
			||||
  pages: { | 
				
			||||
    type: Array, | 
				
			||||
    default () { | 
				
			||||
      return []; | 
				
			||||
    } | 
				
			||||
  }, | 
				
			||||
}); | 
				
			||||
</script> | 
				
			||||
const { locale } = useI18n() | 
				
			||||
 | 
				
			||||
const pages = ref([]) | 
				
			||||
 | 
				
			||||
pageService | 
				
			||||
  .findAll({ | 
				
			||||
    params : { | 
				
			||||
      "category.title": "home", | 
				
			||||
      enabled: "1", | 
				
			||||
      locale: locale.value, | 
				
			||||
    }, | 
				
			||||
  }) | 
				
			||||
  .then(response => response.json()) | 
				
			||||
  .then(json => pages.value = json["hydra:member"]) | 
				
			||||
</script> | 
				
			||||
					Loading…
					
					
				
		Reference in new issue