Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • alexander.vorwerk/studip
  • hochschule-wismar/stud-ip
  • tleilax/studip
  • marcus/studip
  • manschwa/studip
  • eberhardt/studip
  • uol/studip
  • pluta/studip
  • thienel/extern-uni-b
  • studip/studip
  • strohm/studip
  • uni-osnabrueck/studip
  • FloB/studip
  • universit-t-rostock/studip
  • Robinyyy/studip
  • jakob.diel/studip
  • HyperSpeeed/studip
  • ann/studip
  • nod3zer0/stud-ip-siple-saml-php-plugin
19 results
Show changes
Commits on Source (7)
......@@ -659,12 +659,8 @@ class ProfileController extends AuthenticatedController
/**
* Returns the visibility value
*
* @param string $param
* @param string $visibility
* @return string|bool
*/
private function getVisibilityValue(string $param, string $visibility = ''): string|bool
private function getVisibilityValue(string $param, string $visibility = ''): mixed
{
if (Visibility::verify($visibility ?: $param, $this->current_user->user_id)) {
return $this->current_user->$param;
......
......@@ -72,37 +72,40 @@ class Search_GlobalsearchController extends AuthenticatedController
}
}
$semester_filter = $sidebar->addWidget(new OptionsWidget(_('Semester')));
$semester_filter->id = 'semester_filter';
$semester_filter->addSelect(
_('Semester'),
null,
'semester',
$this->getSemesters(),
'future',
['id' => 'semester_select']
$filter_widget = $sidebar->addWidget(new OptionsWidget(_('Filter')));
$filter_widget->id = 'filter_widget';
$filter_widget->addElement(
new SelectListElement(
_('Semester'),
'semester',
$this->getSemesters(),
'future',
['id' => 'semester_select']
),
'semester_filter'
);
$seminar_type_filter = $sidebar->addWidget(new OptionsWidget(_('Veranstaltungstypen')));
$seminar_type_filter->id = 'seminar_type_filter';
$seminar_type_filter->addSelect(
_('Typ der Veranstaltung'),
null,
'seminar_type',
$this->getSemClasses(),
'',
['id' => 'seminar_type_select']
$filter_widget->addElement(
new SelectListElement(
_('Typ der Veranstaltung'),
'seminar_type',
$this->getSemClasses(),
'',
['id' => 'seminar_type_select']
),
'seminar_type_filter'
);
$institute_filter = $sidebar->addWidget(new OptionsWidget(_('Einrichtungen')));
$institute_filter->id = 'institute_filter';
$institute_filter->addSelect(
_('Einrichtung'),
null,
'institute',
$this->getInstitutes(),
'',
['id' => 'institute_select']
$filter_widget->addElement(
new SelectListElement(
_('Einrichtung'),
'institute',
$this->getInstitutes(),
'',
['id' => 'institute_select']
),
'institute_filter'
);
}
......
......@@ -1555,6 +1555,13 @@ class SimpleORMap implements ArrayAccess, Countable, IteratorAggregate
}
$this->setValue($options['foreign_key'], $assoc_foreign_key_value);
}
} elseif (
$value === null
&& $this->db_fields()[$options['foreign_key']]['null'] === 'YES'
) {
$this->resetRelation($field);
$this->setValue($options['foreign_key'], null);
} else {
throw new InvalidArgumentException(sprintf('relation %s expects object of type: %s', $field, $options['class_name']));
}
......
......@@ -649,8 +649,7 @@ abstract class StudipController extends Trails\Controller
$args = func_get_args();
$unconsumed = array_shift($args);
[$action, $extracted_args, $format] = $this->extract_action_and_args($unconsumed);
$this->format = isset($format) ? $format : 'html';
[$action, $extracted_args] = $this->extract_action_and_args($unconsumed);
$this->current_action = $action;
$args = array_merge($extracted_args, $args);
$callable = $this->map_action($action);
......
......@@ -31,8 +31,8 @@ class Controller
protected Dispatcher $dispatcher;
protected Response $response;
protected bool $performed = false;
protected Template|string|null $layout;
protected string $format = 'html';
protected Template|string|null $layout = null;
private string $format = 'html';
/**
* @param Dispatcher $dispatcher the dispatcher who creates this instance
......
......@@ -2,8 +2,6 @@ STUDIP.domReady(() => {
var cache = STUDIP.Search.getCache();
// initially hide all filters except for the semester filter
$('#reset-search').hide();
STUDIP.Search.hideAllFilters();
$('div#semester_filter').show();
STUDIP.Search.setActiveCategory('show_all_categories');
STUDIP.Search.showActiveFilters(STUDIP.Search.getFilter());
......
......@@ -339,7 +339,8 @@ const Search = {
* Hide all select filters in the sidebar.
*/
hideAllFilters: function () {
$('div[id$="_filter"]').hide();
$('#filter_widget').hide();
$('#filter_widget *[id$="_filter"]').hide();
},
/**
......@@ -350,12 +351,11 @@ const Search = {
showFilter: function (category) {
var filters = $('#search-results').data('filters');
STUDIP.Search.hideAllFilters();
if (filters && filters[category] !== undefined && category != 'show_all_categories') {
if (filters && filters[category] !== undefined && filters[category].length > 0) {
$('#filter_widget').show();
for (let i = 0; i < filters[category].length; i++) {
$(`#${filters[category][i]}_filter`).show();
}
} else if (category === 'show_all_categories') {
$('#semester_filter').show();
}
},
......@@ -547,7 +547,7 @@ const Search = {
if (item != 'category') {
var value = filter[item];
if (value.trim()) {
var name = $(`#${item}_filter .sidebar-widget-header`).text().trim();
var name = $(`#${item}_filter .label-text`).text().trim();
var value_text = $(`#${item}_select option:selected`).text().trim();
var filterItem = $('<button></button>').addClass('button remove-filter').text(name + ': ' + value_text).attr('data-filter-name', item);
filterItem.on('click', function () {
......
......@@ -29,10 +29,6 @@
}
}
#admin-filter-widget .label-text {
display: block;
}
.action-menu.filter {
margin-left: 1em;
}
......
......@@ -2,11 +2,11 @@
<div class="formpart">
<div class="sr-only" aria-live="polite" ref="list_message_field"></div>
<ul>
<li v-for="date in selected_date_list" v-bind="selected_date_list" :key="date">
<li v-for="date in selected_date_list" v-bind="selected_date_list" :key="getISODate(date)">
<input type="hidden" :name="input_name + '[]'" :value="getISODate(date)">
<studip-date-time :timestamp="Math.floor(date.getTime() / 1000)" :date_only="true"></studip-date-time>
<studip-icon shape="trash" :title="$gettext('Löschen')" @click="removeDate"
class="enter-accessible" aria-role="button" tabindex="0"></studip-icon>
<studip-icon shape="trash" :title="$gettext('Löschen')" @click="removeDate(date)"
class="icon enter-accessible button undecorated" aria-role="button" tabindex="0"></studip-icon>
</li>
</ul>
<label>
......@@ -82,13 +82,13 @@ export default {
this.selected_date_list.push(new Date(reformatted_date));
this.$refs.list_message_field.innerText = $gettextInterpolate($gettext('Datum %{date} hinzugefügt'), {date: this.selected_date_value});
},
removeDate(date_key) {
if (date_key) {
let date = this.selected_date_list.at(date_key);
let formatted_date = STUDIP.DateTime.getStudipDate(date, false, true);
this.selected_date_list.splice(date_key, 1);
this.$refs.list_message_field.innerText = $gettextInterpolate($gettext('Datum %{date} entfernt'), {date: formatted_date});
}
removeDate(date) {
this.selected_date_list = this.selected_date_list.filter(d => d !== date);
this.$refs.list_message_field.innerText = $gettextInterpolate(
$gettext('Datum %{date} entfernt'),
{date: STUDIP.DateTime.getStudipDate(date, false, true)}
);
},
getISODate(date) {
return STUDIP.DateTime.getISODate(date);
......
......@@ -100,7 +100,7 @@ $lang_attr = str_replace('_', '-', $_SESSION['_language']);
<?= Icon::create('arr_1up', 'info_alt')->asImg(24, ['class' => '']) ?>
</a>
<?= $this->render_partial('footer', ['link_params' => $header_template->link_params]); ?>
<?= $this->render_partial('footer', ['link_params' => $header_template->link_params ?? null]); ?>
<?= SkipLinks::getHTML() ?>
<section class="sr-only" id="notes_for_screenreader" aria-live="polite"></section>
......