diff --git a/client/src/App.vue b/client/src/App.vue
index 35725e99..8e26ed22 100644
--- a/client/src/App.vue
+++ b/client/src/App.vue
@@ -10,6 +10,7 @@
import DefaultLayout from '@/layouts/DefaultLayout';
import SimpleLayout from '@/layouts/SimpleLayout';
import BlankLayout from '@/layouts/BlankLayout';
+ import FullScreenLayout from '@/layouts/FullScreenLayout';
import Modal from '@/components/Modal';
import MobileNavigation from '@/components/MobileNavigation';
import NewContentBlockWizard from '@/components/content-block-form/NewContentBlockWizard';
@@ -33,6 +34,7 @@
DefaultLayout,
SimpleLayout,
BlankLayout,
+ FullScreenLayout,
Modal,
MobileNavigation,
NewContentBlockWizard,
diff --git a/client/src/components/ContentBlock.vue b/client/src/components/ContentBlock.vue
index 1be89d92..f15b1161 100644
--- a/client/src/components/ContentBlock.vue
+++ b/client/src/components/ContentBlock.vue
@@ -61,6 +61,7 @@
import EyeIcon from '@/components/icons/EyeIcon';
import PenIcon from '@/components/icons/PenIcon';
import TrashIcon from '@/components/icons/TrashIcon';
+ import ModuleRoomSlug from '@/components/content-blocks/ModuleRoomSlug'
import CHAPTER_QUERY from '@/graphql/gql/chapterQuery.gql';
import DELETE_CONTENT_BLOCK_MUTATION from '@/graphql/gql/mutations/deleteContentBlock.gql';
@@ -93,6 +94,7 @@
'genially_block': GeniallyBlock,
'subtitle': SubtitleBlock,
'content_list': ContentListBlock,
+ 'module_room_slug': ModuleRoomSlug,
Survey,
Solution,
Assignment,
diff --git a/client/src/components/content-blocks/ModuleRoomSlug.vue b/client/src/components/content-blocks/ModuleRoomSlug.vue
new file mode 100644
index 00000000..b5f2f686
--- /dev/null
+++ b/client/src/components/content-blocks/ModuleRoomSlug.vue
@@ -0,0 +1,20 @@
+
+
+ Raum anzeigen
+
+
+
+
+
+
+
diff --git a/client/src/components/mixins/room.js b/client/src/components/mixins/room.js
new file mode 100644
index 00000000..6059b87e
--- /dev/null
+++ b/client/src/components/mixins/room.js
@@ -0,0 +1,38 @@
+import AddRoomEntryButton from '@/components/rooms/AddRoomEntryButton.vue';
+import RoomEntry from '@/components/rooms/RoomEntry.vue';
+import RoomGroupWidget from '@/components/rooms/RoomGroupWidget';
+import EntryCountWidget from '@/components/rooms/EntryCountWidget';
+import RoomActions from '@/components/rooms/RoomActions';
+
+export default {
+ components: {
+ EntryCountWidget,
+ RoomGroupWidget,
+ AddRoomEntryButton,
+ RoomEntry,
+ RoomActions
+ },
+
+ beforeDestroy() {
+ this.$store.dispatch('setSpecialContainerClass', '');
+ },
+
+ created() {
+ },
+
+ data() {
+ return {
+ room: [],
+ entries: []
+ }
+ },
+
+ computed: {
+ roomEntryCount() {
+ return (this.room && this.room.roomEntries) ? this.room.roomEntries.length : 0
+ },
+ roomAppearance() {
+ return this.room ? this.room.appearance : ''
+ }
+ }
+}
diff --git a/client/src/components/modules/ModuleNavigation.vue b/client/src/components/modules/ModuleNavigation.vue
index d7496eb0..0ad57d14 100644
--- a/client/src/components/modules/ModuleNavigation.vue
+++ b/client/src/components/modules/ModuleNavigation.vue
@@ -10,7 +10,7 @@
:key="assignment.id"
class="module-navigation__anchor sub-navigation-item__link"
exact-active-class="module-navigation__anchor--active"
- >{{assignmentTitle(assignment)}}
+ >{{assignment.value.assignment}}
@@ -41,8 +41,6 @@
class="module-navigation__solution-toggle"
data-cy="toggle-enable-solutions">
-
-
@@ -79,13 +77,14 @@
showResults() {
return this.me.permissions.includes('users.can_manage_school_class_content');
},
- assignments() {
- return [...this.module.assignments].sort((a, b) => {
- return a.title.toLowerCase() > b.title.toLowerCase() ? 1 : -1;
- })
- },
canManageContent() {
return this.me.permissions.includes('users.can_manage_school_class_content');
+ },
+ assignments() {
+ if (!this.module.chapters) {
+ return [];
+ }
+ return this.extractAssignmentsFromChapters(this.module.chapters, []);
}
},
@@ -105,10 +104,47 @@
return `#chapter-${index}`
},
submissionsLink(assignment) {
- return `/module/${this.module.slug}/submissions/${assignment.id}`;
+ return `/module/${this.module.slug}/submissions/${assignment.value.id}`;
},
- assignmentTitle(assignment) {
- return assignment.assignment.length > 25 ? assignment.assignment.substring(0, 22) + '...' : assignment.assignment;
+ extractAssignmentsFromChapters(chapters, assignments) {
+ chapters.forEach(node => {
+ if (node.contentBlocks) { // in chapter node
+ // if chapter information is required then do it here like so:
+ // assignments.push({
+ // chapterTitle: node.title
+ // });
+ // return this.extractAssignmentsFromChapters(node.contentBlocks, assignments);
+ assignments = this.extractAssignmentsFromChapters(node.contentBlocks, assignments);
+ } else if (node.contents) {
+ let foundAssignments = [];
+ node.contents.forEach(contentNode => {
+ foundAssignments = this.concatAssignments(foundAssignments, contentNode);
+ });
+ assignments = [...assignments, ...foundAssignments];
+ }
+ });
+ return assignments;
+ },
+ concatAssignments(foundAssignments, node) {
+ let foundAssignment = this.findAssignment(node);
+ return foundAssignment ? [...foundAssignments, ...foundAssignment] : foundAssignments;
+ },
+ findAssignment(node) {
+ if (node.type && node.type === 'assignment') {
+ return [node];
+ } else if (node.type && node.type === 'content_list_item') {
+ let foundAssignments = [];
+ node.value.forEach(contentNode => {
+ foundAssignments = this.concatAssignments(foundAssignments, contentNode);
+ });
+ return this.flattenArray(foundAssignments)
+ } else {
+ return null;
+ }
+ },
+ flattenArray(arrayToFlatten) {
+ // https://stackoverflow.com/questions/10865025/merge-flatten-an-array-of-arrays
+ return [].concat.apply([], arrayToFlatten);
}
}
}
@@ -156,6 +192,9 @@
font-size: 0.875rem;
line-height: 1.2rem;
margin-bottom: .6875rem;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ overflow: hidden;
&--active {
color: $color-brand;
diff --git a/client/src/components/portfolio/ProjectWidget.vue b/client/src/components/portfolio/ProjectWidget.vue
index 87873352..df9493ad 100644
--- a/client/src/components/portfolio/ProjectWidget.vue
+++ b/client/src/components/portfolio/ProjectWidget.vue
@@ -59,8 +59,8 @@
display: grid;
margin-bottom: 0;
}
- grid-template-rows: 150px 1fr;
- -ms-grid-rows: 150px 48px;
+ grid-template-rows: 175px 1fr;
+ -ms-grid-rows: 175px 48px;
-ms-grid-columns: 1fr;
&__content {
diff --git a/client/src/components/profile/Avatar.vue b/client/src/components/profile/Avatar.vue
index 8e781a7e..7d19d570 100644
--- a/client/src/components/profile/Avatar.vue
+++ b/client/src/components/profile/Avatar.vue
@@ -25,8 +25,10 @@
mounted () {
if (this.avatarUrl !== '') {
this.$refs.fakeImage.addEventListener('load', () => {
- this.$refs.fakeImage.remove();
- this.isAvatarLoaded = true;
+ if (this.$refs.fakeImage) {
+ this.$refs.fakeImage.remove();
+ this.isAvatarLoaded = true;
+ }
});
};
}
diff --git a/client/src/components/toggle-menu/ToggleSolutionsForModule.vue b/client/src/components/toggle-menu/ToggleSolutionsForModule.vue
index 21d23ce9..503c448f 100644
--- a/client/src/components/toggle-menu/ToggleSolutionsForModule.vue
+++ b/client/src/components/toggle-menu/ToggleSolutionsForModule.vue
@@ -1,5 +1,5 @@
-
diff --git a/client/src/graphql/gql/moduleRoomEntryQuery.gql b/client/src/graphql/gql/moduleRoomEntryQuery.gql
new file mode 100644
index 00000000..5f0d275d
--- /dev/null
+++ b/client/src/graphql/gql/moduleRoomEntryQuery.gql
@@ -0,0 +1,14 @@
+#import "./fragments/roomParts.gql"
+#import "./fragments/roomEntryParts.gql"
+query ModuleRoomEntriesQuery($slug: String, $classId: ID!) {
+ moduleRoom(slug: $slug, classId: $classId) {
+ ...RoomParts
+ roomEntries {
+ edges {
+ node {
+ ...RoomEntryParts
+ }
+ }
+ }
+ }
+}
diff --git a/client/src/layouts/DefaultLayout.vue b/client/src/layouts/DefaultLayout.vue
index d9e05517..b29dabc7 100644
--- a/client/src/layouts/DefaultLayout.vue
+++ b/client/src/layouts/DefaultLayout.vue
@@ -35,74 +35,6 @@
diff --git a/client/src/layouts/FullScreenLayout.vue b/client/src/layouts/FullScreenLayout.vue
new file mode 100644
index 00000000..446edf75
--- /dev/null
+++ b/client/src/layouts/FullScreenLayout.vue
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
diff --git a/client/src/layouts/SimpleLayout.vue b/client/src/layouts/SimpleLayout.vue
index ff35ba0f..58442114 100644
--- a/client/src/layouts/SimpleLayout.vue
+++ b/client/src/layouts/SimpleLayout.vue
@@ -7,7 +7,7 @@
-
diff --git a/client/src/pages/portfolio.vue b/client/src/pages/portfolio.vue
index 4b74e30d..8b796d3f 100644
--- a/client/src/pages/portfolio.vue
+++ b/client/src/pages/portfolio.vue
@@ -66,7 +66,7 @@
grid-template-columns: minmax(max-content, 840px);
}
grid-row-gap: 30px;
- grid-auto-rows: 200px;
+ grid-auto-rows: 225px;
max-width: 840px;
width: 100vw;
/*justify-self: center;*/
diff --git a/client/src/pages/room.vue b/client/src/pages/room.vue
index 9b781af1..bc527133 100644
--- a/client/src/pages/room.vue
+++ b/client/src/pages/room.vue
@@ -25,46 +25,11 @@
diff --git a/client/src/pages/start.vue b/client/src/pages/start.vue
index b95af4cc..704ad233 100644
--- a/client/src/pages/start.vue
+++ b/client/src/pages/start.vue
@@ -35,16 +35,16 @@
-
+
+
+
+
+
+
+
+
+
+