aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/routes/Semester.php38
-rw-r--r--app/views/resources/room_planning/booking_plan.php11
-rw-r--r--app/views/resources/room_planning/semester_plan.php8
-rw-r--r--app/views/resources/room_request/planning.php14
-rw-r--r--app/views/room_management/planning/index.php18
-rw-r--r--app/views/room_management/planning/semester_plan.php14
-rw-r--r--db/migrations/5.2.16_activate_semester_routes.php14
-rw-r--r--resources/assets/javascripts/lib/fullcalendar.js44
-rw-r--r--resources/assets/javascripts/lib/resources.js70
-rw-r--r--resources/assets/stylesheets/less/resources-print.less2
10 files changed, 101 insertions, 132 deletions
diff --git a/app/routes/Semester.php b/app/routes/Semester.php
index 1363953..52de1e7 100644
--- a/app/routes/Semester.php
+++ b/app/routes/Semester.php
@@ -43,6 +43,44 @@ class Semester extends \RESTAPI\RouteMap
}
/**
+ * Returns the semester week as string for a given string
+ *
+ * @get /semester/:timestamp/week
+ */
+ public function getSemesterWeek(int $timestamp)
+ {
+ $semester = \Semester::findByTimestamp($timestamp);
+ if (!$semester) {
+ return null;
+ }
+ $timestamp = strtotime('today', $timestamp);
+ $week_begin_timestamp = strtotime('monday this week', $semester->vorles_beginn);
+ $end_date = $semester->vorles_ende;
+
+ $i = 0;
+ $result = [
+ 'semester_name' => (string)$semester->name,
+ 'week_number' => sprintf(_('KW %u'), date('W', $timestamp)),
+ 'current_day' => strftime('%x', $timestamp)
+ ];
+ while ($week_begin_timestamp < $end_date) {
+ $next_week_timestamp = strtotime('+1 week', $week_begin_timestamp);
+ if ($week_begin_timestamp <= $timestamp && $timestamp < $next_week_timestamp) {
+ $result['sem_week'] = sprintf(
+ _('%u. Vorlesungswoche (ab %s)'),
+ $i + 1,
+ strftime('%x', $week_begin_timestamp));
+ break;
+ }
+ $i += 1;
+
+ $week_begin_timestamp = $next_week_timestamp;
+ }
+
+ return $result;
+ }
+
+ /**
* Returns a single semester.
*
* @get /semester/:semester_id
diff --git a/app/views/resources/room_planning/booking_plan.php b/app/views/resources/room_planning/booking_plan.php
index 0c2944a..d314218 100644
--- a/app/views/resources/room_planning/booking_plan.php
+++ b/app/views/resources/room_planning/booking_plan.php
@@ -19,13 +19,10 @@
<?= htmlReady($resource->name) ?>
<? endif ?>
<span id="booking-plan-header-semrow">
- <strong>
- <span id="booking-plan-header-semname"></span>
- <span id="booking-plan-header-semweek-part">
- <?= _('Vorlesungswoche') ?>
- <span id="booking-plan-header-semweek"></span>
- </span>
- </strong>
+ <strong><span id="booking-plan-header-semname"></span> </strong>
+ <span id="booking-plan-header-semweek-part">
+ <span id="booking-plan-header-semweek"></span>
+ </span>
</span>
</span>
<? if ($resource->getProperty('room_administrator')): ?>
diff --git a/app/views/resources/room_planning/semester_plan.php b/app/views/resources/room_planning/semester_plan.php
index 34e8f9d..55d7056 100644
--- a/app/views/resources/room_planning/semester_plan.php
+++ b/app/views/resources/room_planning/semester_plan.php
@@ -50,9 +50,10 @@
<?= htmlReady($resource->name) ?>
<? endif ?>
<span id="booking-plan-header-semrow">
- <strong>
- <?= _('Semester') ?>
- <span id="booking-plan-header-semname"><?= htmlReady($semester->name) ?></span>
+ <strong>
+ <?= _('Semester') ?>
+ <span id="booking-plan-header-semname"><?= htmlReady($semester->name) ?></span>
+ </strong>
<span id="booking-plan-header-semspan">
<? if (Request::get("semester_timerange") == 'fullsem') : ?>
<?= sprintf('(%1$s - %2$s)', date('d.m.Y',$semester->beginn), date('d.m.Y', $semester->ende)); ?>
@@ -60,7 +61,6 @@
<?= sprintf('(%1$s - %2$s)', date('d.m.Y',$semester->vorles_beginn), date('d.m.Y', $semester->vorles_ende)); ?>
<? endif ?>
</span>
- </strong>
</span>
</div>
<? if ($resource->getProperty('room_administrator')): ?>
diff --git a/app/views/resources/room_request/planning.php b/app/views/resources/room_request/planning.php
index 9b645a6..20e9efb 100644
--- a/app/views/resources/room_request/planning.php
+++ b/app/views/resources/room_request/planning.php
@@ -32,14 +32,14 @@
<strong>
<?= _('Semester') ?>
<span id="booking-plan-header-semname"><?= htmlReady($semester->name) ?></span>
- <span id="booking-plan-header-semspan">
- <? if (Request::get("semester_timerange") == 'fullsem') : ?>
- <?= sprintf('(%1$s - %2$s)', date('d.m.Y', $semester->beginn), date('d.m.Y', $semester->ende)); ?>
- <? else : ?>
- <?= sprintf('(%1$s - %2$s)', date('d.m.Y', $semester->vorles_beginn), date('d.m.Y', $semester->vorles_ende)); ?>
- <? endif ?>
- </span>
</strong>
+ <span id="booking-plan-header-semspan">
+ <? if (Request::get("semester_timerange") == 'fullsem') : ?>
+ <?= sprintf('(%1$s - %2$s)', date('d.m.Y', $semester->beginn), date('d.m.Y', $semester->ende)); ?>
+ <? else : ?>
+ <?= sprintf('(%1$s - %2$s)', date('d.m.Y', $semester->vorles_beginn), date('d.m.Y', $semester->vorles_ende)); ?>
+ <? endif ?>
+ </span>
</span>
</div>
<? if ($resource->getProperty('room_administrator')): ?>
diff --git a/app/views/room_management/planning/index.php b/app/views/room_management/planning/index.php
index f42f8a0..c5d7d5f 100644
--- a/app/views/room_management/planning/index.php
+++ b/app/views/room_management/planning/index.php
@@ -18,18 +18,14 @@
<div>
<?= _('Raumgruppe') ?>
<span id="booking-plan-header-roomgroup"><?= htmlReady($clipboard->name) ?></span>
- <strong>
- <?= _('KW') ?>
- <span id="booking-plan-header-calweek"></span>
- (<span id="booking-plan-header-calbegin"></span>)
- <span id="booking-plan-header-semrow">
- <span id="booking-plan-header-semname"></span>
- <span id="booking-plan-header-semweek-part">
- <?= _('Vorlesungswoche') ?>
- <span id="booking-plan-header-semweek"></span>
- </span>
+ <span id="booking-plan-header-calweek"></span>
+ <span id="booking-plan-header-calbegin"></span>
+ <span id="booking-plan-header-semrow">
+ <strong><span id="booking-plan-header-semname"></span></strong>
+ <span id="booking-plan-header-semweek-part">
+ <span id="booking-plan-header-semweek"></span>
</span>
- </strong>
+ </span>
</div>
</section>
diff --git a/app/views/room_management/planning/semester_plan.php b/app/views/room_management/planning/semester_plan.php
index 85d6924..f5b9c94 100644
--- a/app/views/room_management/planning/semester_plan.php
+++ b/app/views/room_management/planning/semester_plan.php
@@ -24,14 +24,14 @@
<strong>
<?= _('Semester')?>
<span id="booking-plan-header-semname"><?= htmlReady($semester->name) ?></span>
- <span id="booking-plan-header-semspan">
- <? if (Request::get("semester_timerange") == 'fullsem') : ?>
- <?= sprintf('(%1$s - %2$s)', date('d.m.Y',$semester->beginn), date('d.m.Y', $semester->ende)); ?>
- <? else : ?>
- <?= sprintf('(%1$s - %2$s)', date('d.m.Y',$semester->vorles_beginn), date('d.m.Y', $semester->vorles_ende)); ?>
- <? endif ?>
- </span>
</strong>
+ <span id="booking-plan-header-semspan">
+ <? if (Request::get("semester_timerange") == 'fullsem') : ?>
+ <?= sprintf('(%1$s - %2$s)', date('d.m.Y',$semester->beginn), date('d.m.Y', $semester->ende)); ?>
+ <? else : ?>
+ <?= sprintf('(%1$s - %2$s)', date('d.m.Y',$semester->vorles_beginn), date('d.m.Y', $semester->vorles_ende)); ?>
+ <? endif ?>
+ </span>
</span>
</div>
</section>
diff --git a/db/migrations/5.2.16_activate_semester_routes.php b/db/migrations/5.2.16_activate_semester_routes.php
new file mode 100644
index 0000000..082a5db
--- /dev/null
+++ b/db/migrations/5.2.16_activate_semester_routes.php
@@ -0,0 +1,14 @@
+<?php
+class ActivateSemesterRoutes extends Migration
+{
+ public function description()
+ {
+ return "Activates all semester routes";
+ }
+
+ public function up()
+ {
+ require_once 'app/routes/Semester.php';
+ RESTAPI\ConsumerPermissions::get()->activateRouteMap(new RESTAPI\Routes\Semester());
+ }
+}
diff --git a/resources/assets/javascripts/lib/fullcalendar.js b/resources/assets/javascripts/lib/fullcalendar.js
index 2268305..1a1945a 100644
--- a/resources/assets/javascripts/lib/fullcalendar.js
+++ b/resources/assets/javascripts/lib/fullcalendar.js
@@ -535,37 +535,31 @@ class Fullcalendar
}
},
datesRender (info) {
- var activeRange = info.view.props.dateProfile.activeRange;
- var start = activeRange.start;
- var end = activeRange.end;
-
+ let activeRange = info.view.props.dateProfile.activeRange;
+ let timestamp = activeRange.start.getTime() / 1000;
if ($(info.el).hasClass('institute-plan')) {
$('.fc-slats tr:odd .fc-widget-content:not(.fc-axis)').remove();
}
- if ($('.booking-plan-header').length) {
- end.setDate(end.getDate());
- let semester = $('.booking-plan-header').data('semester');
- let sem_start = null;
- let sem_end = null;
- if (semester) {
- sem_start = semester.seminars_begin;
- sem_end = semester.seminars_end;
- }
+ STUDIP.api.GET(`semester/${timestamp}/week`).done((data) => {
- if (sem_start && (start.getTime() / 1000 < sem_start || start.getTime() / 1000 > sem_end)) {
- sem_start = null;
- sem_end = null;
- } else if (sem_start) {
- STUDIP.Resources.updateBookingPlanDateInfos(activeRange.start, activeRange.end, semester);
- }
- $('#booking-plan-header-calweek').text(start.getWeekNumber());
- $('#booking-plan-header-calbegin').text(start.toLocaleDateString('de-DE', {weekday: 'short'}) + ' ' + start.toLocaleDateString('de-DE'));
- $('#booking-plan-header-calend').text(end.toLocaleDateString('de-DE', {weekday: 'short'}) + ' ' + end.toLocaleDateString('de-DE'));
- if (!sem_start || !sem_end) {
- STUDIP.Resources.updateBookingPlanSemesterByView(activeRange);
+ if (data) {
+ $('#booking-plan-header-semname').text(data.semester_name);
+ if (data.sem_week) {
+ $('#booking-plan-header-semweek').text(data.sem_week);
+ $('#booking-plan-header-semweek-part').show();
+ } else {
+ $('#booking-plan-header-semweek').text('');
+ $('#booking-plan-header-semweek-part').hide();
+ }
+ $('#booking-plan-header-semrow').show();
+ $('#booking-plan-header-calweek').text(data.week_number);
+ $('#booking-plan-header-calbegin').text('(' + data.current_day + ')');
+ } else {
+ $('#booking-plan-header-semrow').hide();
+ $('#booking-plan-header-semweek-part').hide();
}
- }
+ })
},
resourceRender (renderInfo) {
if ($(renderInfo.view.context.calendar.el).hasClass('room-group-booking-plan')) {
diff --git a/resources/assets/javascripts/lib/resources.js b/resources/assets/javascripts/lib/resources.js
index a3192fc..57965ce 100644
--- a/resources/assets/javascripts/lib/resources.js
+++ b/resources/assets/javascripts/lib/resources.js
@@ -705,76 +705,6 @@ class Resources
STUDIP.Resources.updateEventUrlsInCalendar(info.event);
}
-
- static updateBookingPlanSemesterByView(activeRange, api_url = 'api.php/semesters') {
- let semester = null;
- jQuery.ajax(
- STUDIP.URLHelper.getURL(api_url),
- {
- method: 'get',
- dataType: 'json',
- success: function (data) {
- if (data) {
- Object.values(data.collection).forEach(item => {
- if (activeRange.start.getTime() / 1000 >= item.begin && activeRange.start.getTime() / 1000 < item.end) {
- semester = item;
- }
- });
- if (!semester) {
- if (data.pagination && data.pagination.links && data.pagination.links.next != api_url) {
- semester = STUDIP.Resources.updateBookingPlanSemesterByView(activeRange, data.pagination.links.next);
- }
- }
- }
- STUDIP.Resources.updateBookingPlanDateInfos(activeRange.start, activeRange.end, semester);
- }
- }
- );
- }
-
- static updateBookingPlanDateInfos(plan_begin, plan_end, semester = null)
- {
- if (semester) {
- let show_lecture_week = false;
- let fake_plan_end = new Date(plan_end.getTime() - 1000);
- if (plan_begin.getUTCDay() == fake_plan_end.getUTCDay()) {
- show_lecture_week = (plan_begin.getTime() / 1000 + 43200) >= semester.seminars_begin && (plan_begin.getTime() / 1000) < semester.seminars_end;
- } else {
- show_lecture_week = (plan_end.getTime() / 1000 + 43200) >= semester.seminars_begin && (plan_end.getTime() / 1000) < semester.seminars_end;
- }
- $(".booking-plan-header").data('semester', semester);
- $("#booking-plan-header-semname").text(semester.title);
- if (show_lecture_week) {
- let lecture_week_start = new Date((semester.seminars_begin + 43200) * 1000);
- let lecture_week_start_day = lecture_week_start.getDay();
- if (lecture_week_start_day == 0) {
- //Sunday is 7, not 0!
- lecture_week_start_day = 7;
- }
- lecture_week_start_day--;
- let normal_sem_week_begin = semester.seminars_begin - (lecture_week_start_day * 86400);
- let sem_week = Math.floor((plan_end.getTime() / 1000 - 10800 - normal_sem_week_begin) / 604800) + 1;
- if (sem_week > 0) {
- $("#booking-plan-header-semweek").text(sem_week);
- $("#booking-plan-header-semweek-part").show();
- } else {
- $("#booking-plan-header-semweek-part").hide();
- }
- } else {
- $("#booking-plan-header-semweek-part").hide();
- }
- $("#booking-plan-header-semrow").show();
- } else {
- $(".booking-plan-header").data('semester', null);
- $('#booking-plan-header-semrow').hide();
- }
-
- $('#booking-plan-header-calweek').text(plan_begin.getWeekNumber());
- $('#booking-plan-header-calbegin').text(plan_begin.toLocaleDateString('de-DE', {weekday: 'short'}) + ' ' + plan_begin.toLocaleDateString('de-DE'));
- $('#booking-plan-header-calend').text(plan_end.toLocaleDateString('de-DE', {weekday: 'short'}) + ' ' + plan_end.toLocaleDateString('de-DE'));
- }
-
-
static toggleRequestMarked(source_node)
{
if (!source_node) {
diff --git a/resources/assets/stylesheets/less/resources-print.less b/resources/assets/stylesheets/less/resources-print.less
index 889f1d4..a2c8d1f 100644
--- a/resources/assets/stylesheets/less/resources-print.less
+++ b/resources/assets/stylesheets/less/resources-print.less
@@ -1,5 +1,5 @@
@media print {
- #booking-plan-header-semrow-line #booking-plan-header-semweek-part,
+ #booking-plan-header-semweek-part,
#booking-plan-header-resource-name-line,
#booking-plan-header-seats-line,
#booking-plan-header-administration_url-line {