Skip to content
Snippets Groups Projects
Commit 40e5c18a authored by Ron Lucke's avatar Ron Lucke Committed by Elmar Ludwig
Browse files

fix #3143

Closes #3143

Merge request studip/studip!2143
parent 599ad994
No related branches found
No related tags found
No related merge requests found
...@@ -76,7 +76,7 @@ class Contents_CoursewareController extends CoursewareController ...@@ -76,7 +76,7 @@ class Contents_CoursewareController extends CoursewareController
/** @var array<mixed> $last */ /** @var array<mixed> $last */
$last = UserConfig::get($this->user_id)->getValue('COURSEWARE_LAST_ELEMENT'); $last = UserConfig::get($this->user_id)->getValue('COURSEWARE_LAST_ELEMENT');
if ($unit_id === null) { if (empty($unit_id)) {
$this->redirectToFirstUnit('user', $this->user_id, $last); $this->redirectToFirstUnit('user', $this->user_id, $last);
return; return;
......
...@@ -44,6 +44,7 @@ class Course_CoursewareController extends CoursewareController ...@@ -44,6 +44,7 @@ class Course_CoursewareController extends CoursewareController
public function courseware_action($unit_id = null): void public function courseware_action($unit_id = null): void
{ {
global $user; global $user;
Navigation::activateItem('course/courseware/unit'); Navigation::activateItem('course/courseware/unit');
if ($this->unitsNotFound) { if ($this->unitsNotFound) {
PageLayout::postMessage(MessageBox::info(_('Es wurde kein Lernmaterial gefunden.'))); PageLayout::postMessage(MessageBox::info(_('Es wurde kein Lernmaterial gefunden.')));
......
...@@ -5,12 +5,22 @@ use Courseware\Unit; ...@@ -5,12 +5,22 @@ use Courseware\Unit;
abstract class CoursewareController extends AuthenticatedController abstract class CoursewareController extends AuthenticatedController
{ {
public function before_filter(&$action, &$args): void
{
parent::before_filter($action, $args);
if ($action === 'index' && Request::int('element_id')) {
$element = StructuralElement::find(Request::int('element_id'));
$this->redirect($this->action_url('courseware#/structural_element/' . $element->id, $element->findUnit()->id));
}
}
public function redirectToFirstUnit(string $context, string $rangeId, array $last): void public function redirectToFirstUnit(string $context, string $rangeId, array $last): void
{ {
$path = $context === 'user' ? 'contents' : $context; $path = $context === 'user' ? 'contents' : $context;
$last_element = $this->getLastElement($last, $context, $rangeId); $last_element = $this->getLastElement($last, $context, $rangeId);
if ($last_element) { if ($last_element) {
$unit = $last_element->findUnit($last); $unit = $last_element->findUnit();
} else { } else {
$unit = Unit::findOneBySql('range_id = ? ORDER BY mkdate ASC', [$rangeId]); $unit = Unit::findOneBySql('range_id = ? ORDER BY mkdate ASC', [$rangeId]);
} }
......
...@@ -7,6 +7,17 @@ import { mapResourceModules } from '@elan-ev/reststate-vuex'; ...@@ -7,6 +7,17 @@ import { mapResourceModules } from '@elan-ev/reststate-vuex';
import { StockImagesPlugin } from './plugins/stock-images.js'; import { StockImagesPlugin } from './plugins/stock-images.js';
const mountApp = async (STUDIP, createApp, element) => { const mountApp = async (STUDIP, createApp, element) => {
// handle studip 5.0 to 5.2 urls
const elemId = window.location.hash.match(/structural_element\/(\d+)/);
if (elemId) {
let url = new URL(window.location.href);
url.searchParams.set('element_id', elemId[1]);
window.location.href = url;
return false;
}
const getHttpClient = () => const getHttpClient = () =>
axios.create({ axios.create({
baseURL: STUDIP.URLHelper.getURL(`jsonapi.php/v1`, {}, true), baseURL: STUDIP.URLHelper.getURL(`jsonapi.php/v1`, {}, true),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment