diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/absences/ManageStudentsTrigger.vue b/aleksis/apps/alsijil/frontend/components/coursebook/absences/ManageStudentsTrigger.vue
new file mode 100644
index 0000000000000000000000000000000000000000..f46cb30d0929a61d95e2c9f6b11204e5132b70f3
--- /dev/null
+++ b/aleksis/apps/alsijil/frontend/components/coursebook/absences/ManageStudentsTrigger.vue
@@ -0,0 +1,53 @@
+<script>
+import { DateTime } from "luxon";
+import ManageStudentsDialog from "./ManageStudentsDialog.vue";
+import documentationPartMixin from "../documentation/documentationPartMixin";
+
+export default {
+  name: "ManageStudentsTrigger",
+  components: { ManageStudentsDialog },
+  mixins: [documentationPartMixin],
+  data() {
+    return {
+      canOpenParticipation: false,
+      timeout: null,
+    };
+  },
+  mounted() {
+    const lessonStart = DateTime.fromISO(this.documentation.datetimeStart);
+    const now = DateTime.now();
+    this.canOpenParticipation = now >= lessonStart;
+
+    if (!this.canOpenParticipation) {
+      this.timeout = setTimeout(
+        () => (this.canOpenParticipation = true),
+        lessonStart.diff(now).toObject().milliseconds,
+      );
+    }
+  },
+  beforeDestroy() {
+    if (this.timeout) {
+      clearTimeout(this.timeout);
+    }
+  },
+};
+</script>
+
+<template>
+  <manage-students-dialog v-bind="documentationPartProps">
+    <template #activator="{ attrs, on }">
+      <v-chip
+        dense
+        color="primary"
+        outlined
+        :disabled="!canOpenParticipation"
+        v-bind="attrs"
+        v-on="on"
+      >
+        <v-icon>$edit</v-icon>
+      </v-chip>
+    </template>
+  </manage-students-dialog>
+</template>
+
+<style scoped></style>
diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonNotes.vue b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonNotes.vue
index 9206dd398e426aef0694e18a58e242a1539b1884..d593cb8660203ccc4729a4b08d825c34f9698d3a 100644
--- a/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonNotes.vue
+++ b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonNotes.vue
@@ -28,23 +28,17 @@
       Hausaufgaben vergessen
     </v-chip>
     <!-- eslint-enable @intlify/vue-i18n/no-raw-text -->
-    <manage-students-dialog v-bind="documentationPartProps">
-      <template #activator="{ attrs, on }">
-        <v-chip dense color="primary" outlined v-bind="attrs" v-on="on">
-          <v-icon>$edit</v-icon>
-        </v-chip>
-      </template>
-    </manage-students-dialog>
+    <manage-students-trigger v-bind="documentationPartProps" />
   </div>
 </template>
 
 <script>
 import documentationPartMixin from "./documentationPartMixin";
-import ManageStudentsDialog from "../absences/ManageStudentsDialog.vue";
+import ManageStudentsTrigger from "../absences/ManageStudentsTrigger.vue";
 
 export default {
   name: "LessonNotes",
-  components: {ManageStudentsDialog},
+  components: { ManageStudentsTrigger },
   mixins: [documentationPartMixin],
 };
 </script>