parent
							
								
									b40cd23a65
								
							
						
					
					
						commit
						46c37efebf
					
				@ -0,0 +1,30 @@ | 
				
			||||
.document-show { | 
				
			||||
 | 
				
			||||
  &__section { | 
				
			||||
    @apply flex flex-row mt-4 gap-4; | 
				
			||||
  } | 
				
			||||
 | 
				
			||||
  &__content-side { | 
				
			||||
    @apply w-2/3 flex justify-center; | 
				
			||||
 | 
				
			||||
    img { | 
				
			||||
      @apply block; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    video { | 
				
			||||
      @apply w-full; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    iframe { | 
				
			||||
      @apply aspect-square w-full border-0; | 
				
			||||
    } | 
				
			||||
  } | 
				
			||||
 | 
				
			||||
  &__details-side { | 
				
			||||
    @apply w-1/3; | 
				
			||||
 | 
				
			||||
    table { | 
				
			||||
      @apply mb-4; | 
				
			||||
    } | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
@ -0,0 +1,142 @@ | 
				
			||||
<template> | 
				
			||||
  <div | 
				
			||||
    v-if="item" | 
				
			||||
    class="document-show" | 
				
			||||
  > | 
				
			||||
    <Toolbar | 
				
			||||
      v-if="item && isCurrentTeacher" | 
				
			||||
      :handle-delete="del" | 
				
			||||
      :handle-edit="editHandler" | 
				
			||||
    /> | 
				
			||||
 | 
				
			||||
    <div class="section-header section-header--h6"> | 
				
			||||
      <h6 v-text="item.title" /> | 
				
			||||
    </div> | 
				
			||||
 | 
				
			||||
    <div | 
				
			||||
      class="document-show__section" | 
				
			||||
    > | 
				
			||||
      <div class="document-show__content-side"> | 
				
			||||
        <div | 
				
			||||
          v-if="item['resourceNode']['resourceFile']" | 
				
			||||
        > | 
				
			||||
          <img | 
				
			||||
            v-if="item.resourceNode.resourceFile.image" | 
				
			||||
            :src="item.contentUrl + '&w=500'" | 
				
			||||
            :alt="item.title" | 
				
			||||
          /> | 
				
			||||
 | 
				
			||||
          <video | 
				
			||||
            v-else-if="item['resourceNode']['resourceFile']['video']" | 
				
			||||
            controls | 
				
			||||
          > | 
				
			||||
            <source :src="item['contentUrl']" /> | 
				
			||||
          </video> | 
				
			||||
 | 
				
			||||
          <iframe | 
				
			||||
            v-if="'text/html' === item['resourceNode']['resourceFile']['mimeType']" | 
				
			||||
            :src="item['contentUrl']" | 
				
			||||
          /> | 
				
			||||
        </div> | 
				
			||||
        <div | 
				
			||||
          v-else | 
				
			||||
        > | 
				
			||||
          <BaseIcon icon="folder-generic" /> | 
				
			||||
        </div> | 
				
			||||
      </div> | 
				
			||||
 | 
				
			||||
      <div class="document-show__details-side"> | 
				
			||||
        <table> | 
				
			||||
          <tr> | 
				
			||||
            <th v-text="$t('Author')" /> | 
				
			||||
            <td v-text="item.resourceNode.creator.username" /> | 
				
			||||
          </tr> | 
				
			||||
          <tr | 
				
			||||
           v-if="item.comment" | 
				
			||||
          > | 
				
			||||
            <th v-text="$t('Comment')" /> | 
				
			||||
            <td v-text="item.comment" /> | 
				
			||||
          </tr> | 
				
			||||
          <tr> | 
				
			||||
            <th v-text="$t('Created at')" /> | 
				
			||||
            <td> | 
				
			||||
              {{ item["resourceNode"] ? relativeDatetime(item["resourceNode"].createdAt) : "" }} | 
				
			||||
            </td> | 
				
			||||
          </tr> | 
				
			||||
          <tr> | 
				
			||||
            <th v-text="$t('Updated at')" /> | 
				
			||||
            <td> | 
				
			||||
              {{ item["resourceNode"] ? relativeDatetime(item["resourceNode"].updatedAt) : "" }} | 
				
			||||
            </td> | 
				
			||||
          </tr> | 
				
			||||
          <tr v-if="item['resourceNode']['resourceFile']"> | 
				
			||||
            <th v-text="$t('File')" /> | 
				
			||||
            <td> | 
				
			||||
                <a | 
				
			||||
                  :href="item['downloadUrl']" | 
				
			||||
                  class="btn btn--primary" | 
				
			||||
                > | 
				
			||||
                  <BaseIcon icon="download" /> {{ $t("Download file") }} | 
				
			||||
                </a> | 
				
			||||
            </td> | 
				
			||||
          </tr> | 
				
			||||
        </table> | 
				
			||||
 | 
				
			||||
        <ShowLinks :item="item" /> | 
				
			||||
      </div> | 
				
			||||
    </div> | 
				
			||||
  </div> | 
				
			||||
  <Loading :visible="isLoading" /> | 
				
			||||
</template> | 
				
			||||
 | 
				
			||||
<script> | 
				
			||||
import { mapActions, mapGetters } from "vuex" | 
				
			||||
import { mapFields } from "vuex-map-fields" | 
				
			||||
import Loading from "../../components/Loading.vue" | 
				
			||||
import ShowMixin from "../../mixins/ShowMixin" | 
				
			||||
import Toolbar from "../../components/Toolbar.vue" | 
				
			||||
 | 
				
			||||
import ShowLinks from "../../components/resource_links/ShowLinks.vue" | 
				
			||||
import BaseIcon from "../../components/basecomponents/BaseIcon.vue" | 
				
			||||
 | 
				
			||||
import { useFormatDate } from "../../composables/formatDate" | 
				
			||||
 | 
				
			||||
const servicePrefix = "Documents" | 
				
			||||
 | 
				
			||||
export default { | 
				
			||||
  name: "DocumentsShow", | 
				
			||||
  components: { | 
				
			||||
    BaseIcon, | 
				
			||||
    Loading, | 
				
			||||
    Toolbar, | 
				
			||||
    ShowLinks, | 
				
			||||
  }, | 
				
			||||
  mixins: [ShowMixin], | 
				
			||||
  data() { | 
				
			||||
    const { relativeDatetime } = useFormatDate() | 
				
			||||
 | 
				
			||||
    return { | 
				
			||||
      relativeDatetime, | 
				
			||||
    } | 
				
			||||
  }, | 
				
			||||
  computed: { | 
				
			||||
    ...mapFields("documents", { | 
				
			||||
      isLoading: "isLoading", | 
				
			||||
    }), | 
				
			||||
    ...mapGetters("documents", ["find"]), | 
				
			||||
    ...mapGetters({ | 
				
			||||
      isAuthenticated: "security/isAuthenticated", | 
				
			||||
      isAdmin: "security/isAdmin", | 
				
			||||
      isCurrentTeacher: "security/isCurrentTeacher", | 
				
			||||
    }), | 
				
			||||
  }, | 
				
			||||
  methods: { | 
				
			||||
    ...mapActions("documents", { | 
				
			||||
      deleteItem: "del", | 
				
			||||
      reset: "resetShow", | 
				
			||||
      retrieve: "loadWithQuery", | 
				
			||||
    }), | 
				
			||||
  }, | 
				
			||||
  servicePrefix, | 
				
			||||
} | 
				
			||||
</script> | 
				
			||||
@ -1,180 +0,0 @@ | 
				
			||||
<template> | 
				
			||||
  <div> | 
				
			||||
    <Toolbar | 
				
			||||
      v-if="item && isCurrentTeacher" | 
				
			||||
      :handle-delete="del" | 
				
			||||
      :handle-edit="editHandler" | 
				
			||||
    ></Toolbar> | 
				
			||||
 | 
				
			||||
    <div | 
				
			||||
      v-if="item" | 
				
			||||
      class="flex flex-row" | 
				
			||||
    > | 
				
			||||
      <div class="w-1/2"> | 
				
			||||
        <p class="text-lg"> | 
				
			||||
          {{ item["title"] }} | 
				
			||||
        </p> | 
				
			||||
 | 
				
			||||
        <div | 
				
			||||
          v-if="item['resourceNode']['resourceFile']" | 
				
			||||
          class="flex justify-center" | 
				
			||||
        > | 
				
			||||
          <div class="w-4/5"> | 
				
			||||
            <q-img | 
				
			||||
              v-if="item['resourceNode']['resourceFile']['image']" | 
				
			||||
              :src="item['contentUrl'] + '&w=300'" | 
				
			||||
              spinner-color="primary" | 
				
			||||
            /> | 
				
			||||
 | 
				
			||||
            <span v-else-if="item['resourceNode']['resourceFile']['video']"> | 
				
			||||
              <video controls> | 
				
			||||
                <source :src="item['contentUrl']" /> | 
				
			||||
              </video> | 
				
			||||
            </span> | 
				
			||||
 | 
				
			||||
            <span v-if="'text/html' === item['resourceNode']['resourceFile']['mimeType']"> | 
				
			||||
              <iframe | 
				
			||||
                :src="item['contentUrl']" | 
				
			||||
                border="0" | 
				
			||||
                height="100%" | 
				
			||||
                width="100%" | 
				
			||||
              /> | 
				
			||||
            </span> | 
				
			||||
 | 
				
			||||
            <!--            <span v-else>--> | 
				
			||||
            <!--                <q-btn--> | 
				
			||||
            <!--                    class="btn btn--primary"--> | 
				
			||||
            <!--                    :to="item['downloadUrl']"--> | 
				
			||||
            <!--                >--> | 
				
			||||
            <!--                  <v-icon icon="mdi-file-download"/>--> | 
				
			||||
            <!--                  {{ $t('Download file') }}--> | 
				
			||||
            <!--                </q-btn>--> | 
				
			||||
            <!--              </span>--> | 
				
			||||
          </div> | 
				
			||||
        </div> | 
				
			||||
        <div | 
				
			||||
          v-else | 
				
			||||
          class="flex justify-center" | 
				
			||||
        > | 
				
			||||
          <v-icon icon="mdi-folder" /> | 
				
			||||
        </div> | 
				
			||||
      </div> | 
				
			||||
 | 
				
			||||
      <span class="w-1/2"> | 
				
			||||
        <q-markup-table> | 
				
			||||
          <tbody> | 
				
			||||
            <tr> | 
				
			||||
              <td> | 
				
			||||
                <strong>{{ $t("Author") }}</strong> | 
				
			||||
              </td> | 
				
			||||
              <td> | 
				
			||||
                {{ item["resourceNode"].creator.username }} | 
				
			||||
              </td> | 
				
			||||
              <td></td> | 
				
			||||
              <td /> | 
				
			||||
            </tr> | 
				
			||||
            <tr> | 
				
			||||
              <td> | 
				
			||||
                <strong>{{ $t("Comment") }}</strong> | 
				
			||||
              </td> | 
				
			||||
              <td> | 
				
			||||
                {{ item["comment"] }} | 
				
			||||
              </td> | 
				
			||||
            </tr> | 
				
			||||
            <tr> | 
				
			||||
              <td> | 
				
			||||
                <strong>{{ $t("Created at") }}</strong> | 
				
			||||
              </td> | 
				
			||||
              <td> | 
				
			||||
                {{ item["resourceNode"] ? relativeDatetime(item["resourceNode"].createdAt) : "" }} | 
				
			||||
              </td> | 
				
			||||
              <td /> | 
				
			||||
            </tr> | 
				
			||||
            <tr> | 
				
			||||
              <td> | 
				
			||||
                <strong>{{ $t("Updated at") }}</strong> | 
				
			||||
              </td> | 
				
			||||
              <td> | 
				
			||||
                {{ item["resourceNode"] ? relativeDatetime(item["resourceNode"].updatedAt) : "" }} | 
				
			||||
              </td> | 
				
			||||
              <td /> | 
				
			||||
            </tr> | 
				
			||||
            <tr v-if="item['resourceNode']['resourceFile']"> | 
				
			||||
              <td> | 
				
			||||
                <strong>{{ $t("File") }}</strong> | 
				
			||||
              </td> | 
				
			||||
              <td> | 
				
			||||
                <div> | 
				
			||||
                  <a | 
				
			||||
                    :href="item['downloadUrl']" | 
				
			||||
                    class="btn btn--primary" | 
				
			||||
                  > | 
				
			||||
                    <v-icon icon="mdi-file-download" /> | 
				
			||||
                    {{ $t("Download file") }} | 
				
			||||
                  </a> | 
				
			||||
                </div> | 
				
			||||
              </td> | 
				
			||||
              <td /> | 
				
			||||
            </tr> | 
				
			||||
          </tbody> | 
				
			||||
        </q-markup-table> | 
				
			||||
 | 
				
			||||
        <hr /> | 
				
			||||
 | 
				
			||||
        <ShowLinks :item="item" /> | 
				
			||||
      </span> | 
				
			||||
    </div> | 
				
			||||
 | 
				
			||||
    <Loading :visible="isLoading" /> | 
				
			||||
  </div> | 
				
			||||
</template> | 
				
			||||
 | 
				
			||||
<script> | 
				
			||||
import { mapActions, mapGetters } from "vuex" | 
				
			||||
import { mapFields } from "vuex-map-fields" | 
				
			||||
import Loading from "../../components/Loading.vue" | 
				
			||||
import ShowMixin from "../../mixins/ShowMixin" | 
				
			||||
import Toolbar from "../../components/Toolbar.vue" | 
				
			||||
 | 
				
			||||
import ShowLinks from "../../components/resource_links/ShowLinks.vue" | 
				
			||||
 | 
				
			||||
import { useFormatDate } from "../../composables/formatDate" | 
				
			||||
 | 
				
			||||
const servicePrefix = "Documents" | 
				
			||||
 | 
				
			||||
export default { | 
				
			||||
  name: "DocumentsShow", | 
				
			||||
  components: { | 
				
			||||
    Loading, | 
				
			||||
    Toolbar, | 
				
			||||
    ShowLinks, | 
				
			||||
  }, | 
				
			||||
  mixins: [ShowMixin], | 
				
			||||
  data() { | 
				
			||||
    const { relativeDatetime } = useFormatDate() | 
				
			||||
 | 
				
			||||
    return { | 
				
			||||
      relativeDatetime, | 
				
			||||
    } | 
				
			||||
  }, | 
				
			||||
  computed: { | 
				
			||||
    ...mapFields("documents", { | 
				
			||||
      isLoading: "isLoading", | 
				
			||||
    }), | 
				
			||||
    ...mapGetters("documents", ["find"]), | 
				
			||||
    ...mapGetters({ | 
				
			||||
      isAuthenticated: "security/isAuthenticated", | 
				
			||||
      isAdmin: "security/isAdmin", | 
				
			||||
      isCurrentTeacher: "security/isCurrentTeacher", | 
				
			||||
    }), | 
				
			||||
  }, | 
				
			||||
  methods: { | 
				
			||||
    ...mapActions("documents", { | 
				
			||||
      deleteItem: "del", | 
				
			||||
      reset: "resetShow", | 
				
			||||
      retrieve: "loadWithQuery", | 
				
			||||
    }), | 
				
			||||
  }, | 
				
			||||
  servicePrefix, | 
				
			||||
} | 
				
			||||
</script> | 
				
			||||
					Loading…
					
					
				
		Reference in new issue