diff options
| author | Murtaza Sultani <sultani@data-quest.de> | 2026-01-27 13:38:51 +0100 |
|---|---|---|
| committer | Murtaza Sultani <sultani@data-quest.de> | 2026-03-19 17:36:05 +0100 |
| commit | 8eae6da6ebe7a2f201b956235854bfcaec361037 (patch) | |
| tree | d66a80530db40a158768f261de532d1e4994ca60 /resources | |
| parent | 097a4f4244f6e491118dafdc2f24af4ad4410fda (diff) | |
Account provisioning modes
Diffstat (limited to 'resources')
| -rw-r--r-- | resources/assets/stylesheets/scss/lti.scss | 76 | ||||
| -rw-r--r-- | resources/assets/stylesheets/scss/responsive.scss | 2 | ||||
| -rw-r--r-- | resources/vue/apps/lti/publications/Index.vue | 72 | ||||
| -rw-r--r-- | resources/vue/apps/lti/publications/Show.vue | 4 | ||||
| -rw-r--r-- | resources/vue/apps/lti/registrations/Index.vue | 12 | ||||
| -rw-r--r-- | resources/vue/apps/lti/resources/Index.vue | 1 | ||||
| -rw-r--r-- | resources/vue/components/lti/helpers/urls.js | 4 |
7 files changed, 140 insertions, 31 deletions
diff --git a/resources/assets/stylesheets/scss/lti.scss b/resources/assets/stylesheets/scss/lti.scss index 27efc0b..b2c7b38 100644 --- a/resources/assets/stylesheets/scss/lti.scss +++ b/resources/assets/stylesheets/scss/lti.scss @@ -232,5 +232,81 @@ .mb-10 { margin-bottom: 10px; } + .w-full { + width: 100%; + } + } + + .messages-container { + padding: 0; + list-style-type: none; + } +} + +#lti { + #current-page-structure { + display: none; + } + + #content-wrapper #content { + width: 100%; + max-width: 1152px; + margin: 0 auto; + } + + .provisioning-modes { + margin-top: 30px; + + .studip-card-container { + padding: 0; + display: grid; + gap: 20px; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + } + + .studip-card { + &__title { + font-size: 20px; + } + + &__subtitle { + font-size: 18px; + } + + &__body { + margin-top: 20px; + align-items: center; + + .studip-icon { + width: 50px !important; + height: 50px !important; + } + } + + &__footer { + form { + width: 100%; + } + + .button { + margin: 0; + width: 100%; + } + } + } + } + + @media only screen and (max-width: 768px) { + #responsive-contentbar { + display: none; + } + #content-wrapper { + margin-top: 0; + } + + .provisioning-modes { + margin-top: 10px; + margin-bottom: 10px; + } } } diff --git a/resources/assets/stylesheets/scss/responsive.scss b/resources/assets/stylesheets/scss/responsive.scss index e72ce27..8776a4c 100644 --- a/resources/assets/stylesheets/scss/responsive.scss +++ b/resources/assets/stylesheets/scss/responsive.scss @@ -66,7 +66,7 @@ $sidebarOut: -330px; #responsive-navigation-button:not(.slide-enter-active):not(.slide-leave-active) { cursor: pointer; - margin-left: -3px; + margin-left: 5px; } #responsive-navigation-items { diff --git a/resources/vue/apps/lti/publications/Index.vue b/resources/vue/apps/lti/publications/Index.vue index c7d810d..5955a26 100644 --- a/resources/vue/apps/lti/publications/Index.vue +++ b/resources/vue/apps/lti/publications/Index.vue @@ -94,101 +94,122 @@ const deletePublication = id => { <thead> <tr class="sortable"> <th + scope="col" :class="getSortClass('name')" :aria-sort="getAriaSortString('name')" :aria-label="getAriaSortLabel('name', $gettext('Name'))" > <button type="button" - class="button__table-sort button-base" + class="as-link" @click="sortBy('name')" - :title="$gettext('Nach Name sortieren')"> + :title="$gettext('Nach Name sortieren')" + :aria-label="$gettext('Nach Name sortieren')" + > {{ $gettext('Name') }} </button> </th> <th + scope="col" :class="getSortClass('version')" :aria-sort="getAriaSortString('version')" :aria-label="getAriaSortLabel('version', $gettext('Version'))" > <button type="button" - class="button__table-sort button-base" + class="as-link" @click="sortBy('version')" - :title="$gettext('Nach Version sortieren')"> + :title="$gettext('Nach Version sortieren')" + :aria-label="$gettext('Nach Version sortieren')" + > {{ $gettext('Version') }} </button> </th> <th v-if="!RANGE_ID" + scope="col" :class="getSortClass('range_name')" :aria-sort="getAriaSortString('range_name')" :aria-label="getAriaSortLabel('range_name', $gettext('Bereich'))" > <button type="button" - class="button__table-sort button-base" + class="as-link" @click="sortBy('range_name')" - :title="$gettext('Nach Bereich sortieren')"> + :title="$gettext('Nach Bereich sortieren')" + :aria-label="$gettext('Nach Bereich sortieren')" + > {{ $gettext('Bereich') }} </button> </th> <th + scope="col" :class="getSortClass('status.value')" :aria-sort="getAriaSortString('status.value')" :aria-label="getAriaSortLabel('status.value', $gettext('Status'))" > <button type="button" - class="button__table-sort button-base" + class="as-link" @click="sortBy('status.value')" - :title="$gettext('Nach Status sortieren')"> + :title="$gettext('Nach Status sortieren')" + :aria-label="$gettext('Nach Status sortieren')" + > {{ $gettext('Status') }} </button> </th> <th + scope="col" :class="getSortClass('members')" :aria-sort="getAriaSortString('members')" :aria-label="getAriaSortLabel('members', $gettext('Anzahl der Teilnehmenden'))" > <button type="button" - class="button__table-sort button-base" + class="as-link" @click="sortBy('members')" - :title="$gettext('Nach Anzahl der Teilnehmenden sortieren')"> + :title="$gettext('Nach Anzahl der Teilnehmenden sortieren')" + :aria-label="$gettext('Nach Anzahl der Teilnehmenden sortieren')" + > {{ $gettext('Anzahl der Teilnehmenden') }} </button> </th> - <th> + <th scope="col"> {{ $gettext('Custom-Parameter') }} </th> <th + scope="col" :class="getSortClass('user.name')" :aria-sort="getAriaSortString('user.name')" :aria-label="getAriaSortLabel('user.name', $gettext('Erstellt von'))" > <button type="button" - class="button__table-sort button-base" + class="as-link" @click="sortBy('user.name')" - :title="$gettext('Nach Autor sortieren')"> + :title="$gettext('Nach Autor/in sortieren')" + :aria-label="$gettext('Nach Autor/in sortieren')" + > {{ $gettext('Erstellt von') }} </button> </th> <th + scope="col" :class="getSortClass('mkdate')" :aria-sort="getAriaSortString('mkdate')" :aria-label="getAriaSortLabel('mkdate', $gettext('Erstellt am'))" > <button type="button" - class="button__table-sort button-base" + class="as-link" @click="sortBy('mkdate')" - :title="$gettext('Nach Erstellt Datum sortieren')"> + :title="$gettext('Nach Erstellt Datum sortieren')" + :aria-label="$gettext('Nach Erstellt Datum sortieren')" + > {{ $gettext('Erstellt am') }} </button> </th> - <th class="actions" style="width: 20px">{{ $gettext('Aktionen') }}</th> + <th scope="col" class="actions" style="width: 20px">{{ $gettext('Aktionen') }}</th> </tr> </thead> <tbody> @@ -196,15 +217,21 @@ const deletePublication = id => { <td> <button type="button" - class="styleless button-base" + class="as-link" @click="showPublication(publication.id)" - :title="$gettext('Konfiguration anzeigen')"> + :title="$gettext('Konfiguration anzeigen')" + :aria-label="$gettext('Konfiguration anzeigen')" + > {{ publication.name }} </button> </td> <td>{{ publication.version }}</td> <td v-if="!RANGE_ID"> - <a :href="showRangeURL(publication.range_id)" :title="$gettext('Zur Veranstaltung')"> + <a + :href="showRangeURL(publication.range_id)" + :title="$gettext('Zur Veranstaltung')" + :aria-label="$gettext('Zur Veranstaltung')" + > {{ publication.range_name }} </a> </td> @@ -223,6 +250,7 @@ const deletePublication = id => { type="button" class="styleless button-base" :title="$gettext('Teilnehmenden anschauen')" + :aria-label="$gettext('Teilnehmenden anschauen')" @click="showMembers(publication)" > {{ publication.members.length }} @@ -236,7 +264,11 @@ const deletePublication = id => { <td> <div class="user-avatar-container"> <UserAvatarDropdown :user="publication.user" /> - <a :href="userProfileURL(publication.user.username)" :title="$gettext('Zum Benutzerprofil')"> + <a + :href="userProfileURL(publication.user.username)" + :title="$gettext('Zum Benutzerprofil')" + :aria-label="$gettext('Zum Benutzerprofil')" + > {{ publication.user.name }} </a> </div> diff --git a/resources/vue/apps/lti/publications/Show.vue b/resources/vue/apps/lti/publications/Show.vue index 784472e..757ed5f 100644 --- a/resources/vue/apps/lti/publications/Show.vue +++ b/resources/vue/apps/lti/publications/Show.vue @@ -118,12 +118,12 @@ defineProps({ <dt>{{ $gettext('Bereitstellungsmodus beim ersten Start durch die Lehrende') }}</dt> <dd> - {{ publication.provisioning_mode_instructor.label }} + {{ publication.provisioning_mode_instructor?.label }} </dd> <dt>{{ $gettext('Bereitstellungsmodus beim ersten Start durch die Studierende') }}</dt> <dd> - {{ publication.provisioning_mode_student.label }} + {{ publication.provisioning_mode_student?.label }} </dd> </dl> </article> diff --git a/resources/vue/apps/lti/registrations/Index.vue b/resources/vue/apps/lti/registrations/Index.vue index fec1c8f..222a1fa 100644 --- a/resources/vue/apps/lti/registrations/Index.vue +++ b/resources/vue/apps/lti/registrations/Index.vue @@ -116,7 +116,7 @@ const deleteRegistration = id => { > <button type="button" - class="button__table-sort button-base" + class="as-link" @click="sortBy('name')" :title="$gettext('Nach Name sortieren')"> {{ $gettext('Name') }} @@ -130,7 +130,7 @@ const deleteRegistration = id => { > <button type="button" - class="button__table-sort button-base" + class="as-link" @click="sortBy('version')" :title="$gettext('Nach Version sortieren')"> {{ $gettext('Version') }} @@ -144,7 +144,7 @@ const deleteRegistration = id => { > <button type="button" - class="button__table-sort button-base" + class="as-link" @click="sortBy('deployments')" :title="$gettext('Nach Anzahl der Deployments sortieren')"> {{ $gettext('Deployments') }} @@ -158,7 +158,7 @@ const deleteRegistration = id => { > <button type="button" - class="button__table-sort button-base" + class="as-link" @click="sortBy('range_name')" :title="$gettext('Nach Bereich sortieren')"> {{ $gettext('Bereich') }} @@ -172,7 +172,7 @@ const deleteRegistration = id => { > <button type="button" - class="button__table-sort button-base" + class="as-link" @click="sortBy('status.value')" :title="$gettext('Nach Status sortieren')"> {{ $gettext('Status') }} @@ -185,7 +185,7 @@ const deleteRegistration = id => { > <button type="button" - class="button__table-sort button-base" + class="as-link" @click="sortBy('mkdate')" :title="$gettext('Nach Erstellt Datum sortieren')"> {{ $gettext('Erstellt am') }} diff --git a/resources/vue/apps/lti/resources/Index.vue b/resources/vue/apps/lti/resources/Index.vue index 24580ab..19899cc 100644 --- a/resources/vue/apps/lti/resources/Index.vue +++ b/resources/vue/apps/lti/resources/Index.vue @@ -11,6 +11,7 @@ import {debounce} from 'lodash'; import {deserializeJSONAPIResponse} from "../../../../assets/javascripts/lib/jsonapiUtils"; import StudipPagination from "../../../components/StudipPagination.vue"; import ResourceDetail from "../../../components/lti/resources/ResourceDetail.vue"; +import StudipDialog from "../../../components/StudipDialog.vue"; const ltiConfig = useLtiConfig(); diff --git a/resources/vue/components/lti/helpers/urls.js b/resources/vue/components/lti/helpers/urls.js index 49af655..f1f05a2 100644 --- a/resources/vue/components/lti/helpers/urls.js +++ b/resources/vue/components/lti/helpers/urls.js @@ -19,9 +19,9 @@ export const deleteDeploymentURL = id => STUDIP.URLHelper.getURL(`dispatch.php/a // Resource Links URLS: export const createResourceURL = () => STUDIP.URLHelper.getURL(`dispatch.php/admin/lti/resources/create`); -export const editResourceURL = (id) => STUDIP.URLHelper.getURL(`dispatch.php/admin/lti/resources/edit/${id}`); +export const editResourceURL = id => STUDIP.URLHelper.getURL(`dispatch.php/admin/lti/resources/edit/${id}`); -export const editResourceConsentURL = (id) => STUDIP.URLHelper.getURL(`dispatch.php/course/lti/consent/${id}`); +export const editResourceConsentURL = registrationId => STUDIP.URLHelper.getURL(`dispatch.php/course/lti/consent/${registrationId}`); export const storeResourceURL = () => STUDIP.URLHelper.getURL(`dispatch.php/admin/lti/resources/store`); export const updateResourceURL = id => STUDIP.URLHelper.getURL(`dispatch.php/admin/lti/resources/update/${id}`); |
