diff options
| author | Murtaza Sultani <sultani@data-quest.de> | 2025-12-25 13:59:25 +0100 |
|---|---|---|
| committer | Murtaza Sultani <sultani@data-quest.de> | 2026-03-19 17:34:49 +0100 |
| commit | 79bc665fa72e31b60ec854584ef2f818365f4ff2 (patch) | |
| tree | cca176ca268b48be6db21f7a9404d629d80be1a0 /resources | |
| parent | 3dde0b3242f0e8ac8e0555a02a4e2ee7e9a344e3 (diff) | |
Resource detail page
Diffstat (limited to 'resources')
| -rw-r--r-- | resources/assets/stylesheets/scss/lti.scss | 2 | ||||
| -rw-r--r-- | resources/vue/components/lti/helpers/urls.js | 2 | ||||
| -rw-r--r-- | resources/vue/components/lti/resources/ResourceDetail.vue | 84 |
3 files changed, 66 insertions, 22 deletions
diff --git a/resources/assets/stylesheets/scss/lti.scss b/resources/assets/stylesheets/scss/lti.scss index 6fe8acf..5ff1618 100644 --- a/resources/assets/stylesheets/scss/lti.scss +++ b/resources/assets/stylesheets/scss/lti.scss @@ -7,7 +7,7 @@ .header { display: flex; background-color: var(--color--fieldset-header); - margin-bottom: 20px; + margin-bottom: 15px; &__content { padding: 10px 15px; diff --git a/resources/vue/components/lti/helpers/urls.js b/resources/vue/components/lti/helpers/urls.js index dedda4c..0a31ff5 100644 --- a/resources/vue/components/lti/helpers/urls.js +++ b/resources/vue/components/lti/helpers/urls.js @@ -29,6 +29,6 @@ export const deleteResourceURL = id => STUDIP.URLHelper.getURL(`dispatch.php/adm // Others: -export const launchResourceURL = id => STUDIP.URLHelper.getURL(`dispatch.php/course/lti/iframe/${id}`); +export const launchResourceURL = id => STUDIP.URLHelper.getURL(`dispatch.php/course/lti/launch/${id}`); export const showRangeURL = rangeId => STUDIP.URLHelper.getURL(`dispatch.php/course/details/index/${rangeId}`); diff --git a/resources/vue/components/lti/resources/ResourceDetail.vue b/resources/vue/components/lti/resources/ResourceDetail.vue index 7014823..5e337ca 100644 --- a/resources/vue/components/lti/resources/ResourceDetail.vue +++ b/resources/vue/components/lti/resources/ResourceDetail.vue @@ -3,7 +3,10 @@ import StudipDialog from "../../StudipDialog.vue"; import {$gettext} from "../../../../assets/javascripts/lib/gettext"; import StudipDateTime from "../../StudipDateTime.vue"; import {computed} from "vue"; +import {launchResourceURL} from "../helpers/urls"; +import {useLtiConfig} from "../../../store/pinia/lti/Config"; +const ltiConfig = useLtiConfig(); const props = defineProps({ resource: { type: Object, @@ -15,6 +18,7 @@ const isOpen = defineModel('isOpen'); const title = computed(() => props.resource.title || props.resource.registration.name); const description = computed(() => props.resource.description || props.resource.registration.description); +const resourceURL = computed(() => launchResourceURL(props.resource.id)); const configs = computed(() => { if (props.resource.registration.version === '1.3a') { return JSON.stringify({ @@ -22,6 +26,7 @@ const configs = computed(() => { client_id: props.resource.deployment.client_id, deployment_id: props.resource.deployment.deployment_id, custom_parameters: props.resource.custom_parameters, + container: props.resource.container, registration: { id: props.resource.registration.id, audience: props.resource.registration.audience, @@ -32,7 +37,7 @@ const configs = computed(() => { jwks_url: props.resource.registration.jwks_url, public_key: props.resource.registration.public_key, custom_parameters: props.resource.registration.custom_parameters, - container: props.resource.registration.container, + container: props.resource.registration.container } }, null, 2); } @@ -67,34 +72,73 @@ const configs = computed(() => { <StudipDateTime :iso="resource.mkdate" /> </dd> - <dt>{{ $gettext('Direktlink zum LTI-Tool') }}</dt> <dd> - <a href="#" target="_blank"> - TBA + <a :href="resourceURL" target="_blank" :title="$gettext('Anwendung starten')"> + {{ resourceURL }} </a> </dd> + </dl> - <dt>{{ $gettext('Client-ID') }}</dt> - <dd> - {{ resource.deployment.client_id }} - </dd> - - <dt>{{ $gettext('Deployment-ID') }}</dt> - <dd> - {{ resource.deployment.deployment_id }} - </dd> - - <dt>{{ $gettext('Zusätzliche LTI-Parameter') }}</dt> - <dd class="break-word"> - <p>{{ resource.custom_parameters }}</p> - </dd> + <article v-if="ltiConfig.isModerator" class="studip"> + <header> + <h1> + {{ $gettext('Konfiguration') }} + </h1> + </header> + <dl> + <dt>{{ $gettext('Client-ID') }}</dt> + <dd> + {{ resource.deployment.client_id }} + </dd> + <dt>{{ $gettext('Deployment-ID') }}</dt> + <dd> + {{ resource.deployment.deployment_id }} + </dd> - </dl> + <dt>{{ $gettext('Zusätzliche LTI-Parameter') }}</dt> + <dd class="break-word"> + <p>{{ resource.custom_parameters }}</p> + </dd> + </dl> - <pre><code class="json">{{ configs }}</code></pre> + <pre v-if="ltiConfig.isAdmin"><code class="json">{{ configs }}</code></pre> + </article> </div> </template> </StudipDialog> </template> + +<style lang="scss" scoped> +pre { + background-color: var(--light-gray-color-20); + padding: 15px 20px; + border-radius: 8px; + overflow-x: auto; + font-family: ui-monospace; + line-height: 1.6; + border: 1px solid var(--color--content-box-border); +} + +pre code { + display: block; + padding: 0; + background: transparent; + color: inherit; + white-space: pre; +} + +pre::-webkit-scrollbar { + height: 8px; +} + +pre::-webkit-scrollbar-thumb { + background-color: var(--color--button-inactive-border); + border-radius: 4px; +} + +pre::-webkit-scrollbar-track { + background: transparent; +} +</style> |
