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
/** @var array<mixed> $last */
$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);
return;
......
......@@ -44,6 +44,7 @@ class Course_CoursewareController extends CoursewareController
public function courseware_action($unit_id = null): void
{
global $user;
Navigation::activateItem('course/courseware/unit');
if ($this->unitsNotFound) {
PageLayout::postMessage(MessageBox::info(_('Es wurde kein Lernmaterial gefunden.')));
......
......@@ -5,12 +5,22 @@ use Courseware\Unit;
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
{
$path = $context === 'user' ? 'contents' : $context;
$last_element = $this->getLastElement($last, $context, $rangeId);
if ($last_element) {
$unit = $last_element->findUnit($last);
$unit = $last_element->findUnit();
} else {
$unit = Unit::findOneBySql('range_id = ? ORDER BY mkdate ASC', [$rangeId]);
}
......
......@@ -7,6 +7,17 @@ import { mapResourceModules } from '@elan-ev/reststate-vuex';
import { StockImagesPlugin } from './plugins/stock-images.js';
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 = () =>
axios.create({
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