Merge branch 'dev-publicity_calendars'
This commit is contained in:
commit
93d35f5cc0
15 changed files with 135 additions and 68 deletions
|
@ -26,6 +26,7 @@
|
||||||
"calendar.name": "Name",
|
"calendar.name": "Name",
|
||||||
"calendar.resource": "Resource",
|
"calendar.resource": "Resource",
|
||||||
"calendar.access.access": "Zugriff",
|
"calendar.access.access": "Zugriff",
|
||||||
|
"calendar.access.public": "öffentlich",
|
||||||
"calendar.access.default_level": "Standard",
|
"calendar.access.default_level": "Standard",
|
||||||
"calendar.access.attributed": "Zuweisungen",
|
"calendar.access.attributed": "Zuweisungen",
|
||||||
"widget.weekview.controls.year": "Jahr",
|
"widget.weekview.controls.year": "Jahr",
|
||||||
|
@ -50,6 +51,7 @@
|
||||||
"page.event_edit.title.read_only": "Termin-Details",
|
"page.event_edit.title.read_only": "Termin-Details",
|
||||||
"page.event_edit.actions.change": "ändern",
|
"page.event_edit.actions.change": "ändern",
|
||||||
"page.event_edit.actions.remove": "löschen",
|
"page.event_edit.actions.remove": "löschen",
|
||||||
"page.overview.title": "Übersicht"
|
"page.overview.title": "Übersicht",
|
||||||
|
"page.overview.login_hint": "anmelden um nicht-öffentliche Termine zu sehen"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
"calendar.name": "name",
|
"calendar.name": "name",
|
||||||
"calendar.resource": "resource",
|
"calendar.resource": "resource",
|
||||||
"calendar.access.access": "access",
|
"calendar.access.access": "access",
|
||||||
|
"calendar.access.public": "public",
|
||||||
"calendar.access.default_level": "default",
|
"calendar.access.default_level": "default",
|
||||||
"calendar.access.attributed": "attributed",
|
"calendar.access.attributed": "attributed",
|
||||||
"widget.weekview.controls.year": "Year",
|
"widget.weekview.controls.year": "Year",
|
||||||
|
@ -50,6 +51,7 @@
|
||||||
"page.event_edit.title.read_only": "Event details",
|
"page.event_edit.title.read_only": "Event details",
|
||||||
"page.event_edit.actions.change": "change",
|
"page.event_edit.actions.change": "change",
|
||||||
"page.event_edit.actions.remove": "delete",
|
"page.event_edit.actions.remove": "delete",
|
||||||
"page.overview.title": "Overview"
|
"page.overview.title": "Overview",
|
||||||
|
"page.overview.login_hint": "log in to view non-public events"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -308,6 +308,7 @@ namespace _zeitbild.frontend_web.backend
|
||||||
{
|
{
|
||||||
"name": raw.name,
|
"name": raw.name,
|
||||||
"access": {
|
"access": {
|
||||||
|
"public": raw.access.public,
|
||||||
"default_level": access_level_decode(raw.access.default_level),
|
"default_level": access_level_decode(raw.access.default_level),
|
||||||
"attributed": lib_plankton.map.hashmap.implementation_map(
|
"attributed": lib_plankton.map.hashmap.implementation_map(
|
||||||
lib_plankton.map.hashmap.make(
|
lib_plankton.map.hashmap.make(
|
||||||
|
@ -359,6 +360,7 @@ namespace _zeitbild.frontend_web.backend
|
||||||
{
|
{
|
||||||
"name": calendar_object.name,
|
"name": calendar_object.name,
|
||||||
"access": {
|
"access": {
|
||||||
|
"public": calendar_object.access.public,
|
||||||
"default_level": access_level_encode(calendar_object.access.default_level),
|
"default_level": access_level_encode(calendar_object.access.default_level),
|
||||||
"attributed": (
|
"attributed": (
|
||||||
lib_plankton.map.dump(calendar_object.access.attributed)
|
lib_plankton.map.dump(calendar_object.access.attributed)
|
||||||
|
@ -396,6 +398,7 @@ namespace _zeitbild.frontend_web.backend
|
||||||
{
|
{
|
||||||
"name": calendar_object.name,
|
"name": calendar_object.name,
|
||||||
"access": {
|
"access": {
|
||||||
|
"public": calendar_object.access.public,
|
||||||
"default_level": access_level_encode(calendar_object.access.default_level),
|
"default_level": access_level_encode(calendar_object.access.default_level),
|
||||||
"attributed": (
|
"attributed": (
|
||||||
lib_plankton.map.dump(calendar_object.access.attributed)
|
lib_plankton.map.dump(calendar_object.access.attributed)
|
||||||
|
|
|
@ -37,7 +37,7 @@ namespace _zeitbild.frontend_web
|
||||||
document.querySelector("main"),
|
document.querySelector("main"),
|
||||||
{
|
{
|
||||||
"fallback": {
|
"fallback": {
|
||||||
"name": "login",
|
"name": "overview",
|
||||||
"parameters": {}
|
"parameters": {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -96,6 +96,7 @@ namespace _zeitbild.frontend_web.type
|
||||||
export type calendar_object = {
|
export type calendar_object = {
|
||||||
name : string;
|
name : string;
|
||||||
access : {
|
access : {
|
||||||
|
public : boolean;
|
||||||
default_level : enum_access_level;
|
default_level : enum_access_level;
|
||||||
attributed : lib_plankton.map.type_map<
|
attributed : lib_plankton.map.type_map<
|
||||||
user_id,
|
user_id,
|
||||||
|
|
|
@ -19,6 +19,7 @@ namespace _zeitbild.frontend_web.pages
|
||||||
{
|
{
|
||||||
name : string;
|
name : string;
|
||||||
access : {
|
access : {
|
||||||
|
public : boolean;
|
||||||
default_level : _zeitbild.frontend_web.type.enum_access_level;
|
default_level : _zeitbild.frontend_web.type.enum_access_level;
|
||||||
attributed : lib_plankton.map.type_map<
|
attributed : lib_plankton.map.type_map<
|
||||||
_zeitbild.frontend_web.type.user_id,
|
_zeitbild.frontend_web.type.user_id,
|
||||||
|
@ -32,6 +33,7 @@ namespace _zeitbild.frontend_web.pages
|
||||||
{
|
{
|
||||||
name : string;
|
name : string;
|
||||||
access : {
|
access : {
|
||||||
|
public : boolean;
|
||||||
default_level : _zeitbild.frontend_web.type.enum_access_level;
|
default_level : _zeitbild.frontend_web.type.enum_access_level;
|
||||||
attributed : lib_plankton.map.type_map<
|
attributed : lib_plankton.map.type_map<
|
||||||
_zeitbild.frontend_web.type.user_id,
|
_zeitbild.frontend_web.type.user_id,
|
||||||
|
@ -88,6 +90,11 @@ namespace _zeitbild.frontend_web.pages
|
||||||
"name": "access",
|
"name": "access",
|
||||||
"input": new lib_plankton.zoo_input.class_input_group(
|
"input": new lib_plankton.zoo_input.class_input_group(
|
||||||
[
|
[
|
||||||
|
{
|
||||||
|
"name": "public",
|
||||||
|
"input": new lib_plankton.zoo_input.class_input_checkbox(),
|
||||||
|
"label": lib_plankton.translate.get("calendar.access.public"),
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "default_level",
|
"name": "default_level",
|
||||||
"input": _zeitbild.frontend_web.helpers.input_access_level(),
|
"input": _zeitbild.frontend_web.helpers.input_access_level(),
|
||||||
|
|
|
@ -21,6 +21,7 @@ namespace _zeitbild.frontend_web.pages
|
||||||
{
|
{
|
||||||
name : string;
|
name : string;
|
||||||
access : {
|
access : {
|
||||||
|
public : boolean;
|
||||||
default_level : _zeitbild.frontend_web.type.enum_access_level;
|
default_level : _zeitbild.frontend_web.type.enum_access_level;
|
||||||
attributed : lib_plankton.map.type_map<
|
attributed : lib_plankton.map.type_map<
|
||||||
_zeitbild.frontend_web.type.user_id,
|
_zeitbild.frontend_web.type.user_id,
|
||||||
|
@ -33,6 +34,7 @@ namespace _zeitbild.frontend_web.pages
|
||||||
{
|
{
|
||||||
name : string;
|
name : string;
|
||||||
access : {
|
access : {
|
||||||
|
public : boolean;
|
||||||
default_level : _zeitbild.frontend_web.type.enum_access_level;
|
default_level : _zeitbild.frontend_web.type.enum_access_level;
|
||||||
attributed : lib_plankton.map.type_map<
|
attributed : lib_plankton.map.type_map<
|
||||||
_zeitbild.frontend_web.type.user_id,
|
_zeitbild.frontend_web.type.user_id,
|
||||||
|
@ -66,6 +68,11 @@ namespace _zeitbild.frontend_web.pages
|
||||||
"name": "access",
|
"name": "access",
|
||||||
"input": new lib_plankton.zoo_input.class_input_group(
|
"input": new lib_plankton.zoo_input.class_input_group(
|
||||||
[
|
[
|
||||||
|
{
|
||||||
|
"name": "public",
|
||||||
|
"input": new lib_plankton.zoo_input.class_input_checkbox(),
|
||||||
|
"label": lib_plankton.translate.get("calendar.access.public"),
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "default_level",
|
"name": "default_level",
|
||||||
"input": _zeitbild.frontend_web.helpers.input_access_level(),
|
"input": _zeitbild.frontend_web.helpers.input_access_level(),
|
||||||
|
|
|
@ -11,7 +11,7 @@ namespace _zeitbild.frontend_web.pages
|
||||||
);
|
);
|
||||||
lib_plankton.zoo_page.set(
|
lib_plankton.zoo_page.set(
|
||||||
{
|
{
|
||||||
"name": "login",
|
"name": "overview",
|
||||||
"parameters": {
|
"parameters": {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,6 +31,15 @@ namespace _zeitbild.frontend_web.pages.overview
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
target_element.querySelector("#overview").classList.toggle("compact", compact);
|
target_element.querySelector("#overview").classList.toggle("compact", compact);
|
||||||
|
// hint
|
||||||
|
{
|
||||||
|
if (! await _zeitbild.frontend_web.backend.is_logged_in()) {
|
||||||
|
target_element.querySelector("#overview-head").textContent = lib_plankton.translate.get("page.overview.login_hint");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// do nothing
|
||||||
|
}
|
||||||
|
}
|
||||||
// sources
|
// sources
|
||||||
{
|
{
|
||||||
const data : Array<
|
const data : Array<
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
<div id="overview">
|
<div id="overview">
|
||||||
<div id="overview-pane-left">
|
<div id="overview-head">
|
||||||
</div>
|
</div>
|
||||||
<div id="overview-pane-right">
|
<div id="overview-body">
|
||||||
|
<div id="overview-pane-left">
|
||||||
|
</div>
|
||||||
|
<div id="overview-pane-right">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -25,29 +25,36 @@
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
#overview
|
#overview-head
|
||||||
|
{
|
||||||
|
text-align: center;
|
||||||
|
font-weight: bold;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#overview-body
|
||||||
{
|
{
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
#overview:not(.compact) #overview-pane-left
|
#overview-body:not(.compact) #overview-pane-left
|
||||||
{
|
{
|
||||||
flex-basis: 12.5%;
|
flex-basis: 12.5%;
|
||||||
}
|
}
|
||||||
|
|
||||||
#overview:not(.compact) #overview-pane-right
|
#overview-body:not(.compact) #overview-pane-right
|
||||||
{
|
{
|
||||||
flex-basis: 87.5%;
|
flex-basis: 87.5%;
|
||||||
}
|
}
|
||||||
|
|
||||||
#overview.compact #overview-pane-left
|
#overview-body.compact #overview-pane-left
|
||||||
{
|
{
|
||||||
flex-basis: 0%;
|
flex-basis: 0%;
|
||||||
}
|
}
|
||||||
|
|
||||||
#overview.compact #overview-pane-right
|
#overview-body.compact #overview-pane-right
|
||||||
{
|
{
|
||||||
flex-basis: 100%;
|
flex-basis: 100%;
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,3 +23,13 @@
|
||||||
.plankton_input_group {
|
.plankton_input_group {
|
||||||
margin-left: 24px;
|
margin-left: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.plankton_input_list_element > *
|
||||||
|
{
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.plankton_input_list_element > .plankton_input_list_element_input > .plankton_input_group > *
|
||||||
|
{
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
|
@ -19,6 +19,11 @@
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.weekview-control
|
||||||
|
{
|
||||||
|
margin: 0 12px;
|
||||||
|
}
|
||||||
|
|
||||||
.weekview-table table
|
.weekview-table table
|
||||||
{
|
{
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
|
@ -772,63 +772,73 @@ namespace _zeitbild.frontend_web.widgets.weekview
|
||||||
);
|
);
|
||||||
// cells
|
// cells
|
||||||
{
|
{
|
||||||
context.querySelectorAll(".calendar-cell-regular").forEach(
|
if (! await _zeitbild.frontend_web.backend.is_logged_in()) {
|
||||||
(element) => {
|
// do nothing
|
||||||
element.addEventListener(
|
}
|
||||||
"click",
|
else {
|
||||||
(event) => {
|
context.querySelectorAll(".calendar-cell-regular").forEach(
|
||||||
if (! (element === event.target)) {
|
(element) => {
|
||||||
// do nothing
|
element.addEventListener(
|
||||||
|
"click",
|
||||||
|
(event) => {
|
||||||
|
if (! (element === event.target)) {
|
||||||
|
// do nothing
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
const rel : string = element.getAttribute("rel");
|
||||||
|
const parts : Array<string> = rel.split("-");
|
||||||
|
const date : lib_plankton.pit.type_date = {
|
||||||
|
"year": parseInt(parts[0]),
|
||||||
|
"month": parseInt(parts[1]),
|
||||||
|
"day": parseInt(parts[2]),
|
||||||
|
};
|
||||||
|
this.action_select_day(date);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
);
|
||||||
const rel : string = element.getAttribute("rel");
|
}
|
||||||
const parts : Array<string> = rel.split("-");
|
);
|
||||||
const date : lib_plankton.pit.type_date = {
|
}
|
||||||
"year": parseInt(parts[0]),
|
|
||||||
"month": parseInt(parts[1]),
|
|
||||||
"day": parseInt(parts[2]),
|
|
||||||
};
|
|
||||||
this.action_select_day(date);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
// events
|
// events
|
||||||
{
|
{
|
||||||
context.querySelectorAll(".calendar-event_entry").forEach(
|
if (! await _zeitbild.frontend_web.backend.is_logged_in()) {
|
||||||
(element) => {
|
// do nothing
|
||||||
element.addEventListener(
|
}
|
||||||
"click",
|
else {
|
||||||
() => {
|
context.querySelectorAll(".calendar-event_entry").forEach(
|
||||||
const rel : string = element.getAttribute("rel");
|
(element) => {
|
||||||
const parts : Array<string> = rel.split("/");
|
element.addEventListener(
|
||||||
const calendar_id : _zeitbild.frontend_web.type.calendar_id = parseInt(parts[0]);
|
"click",
|
||||||
const event_id : (null | _zeitbild.frontend_web.type.local_resource_event_id) = (
|
() => {
|
||||||
(parts[1] === "-")
|
const rel : string = element.getAttribute("rel");
|
||||||
?
|
const parts : Array<string> = rel.split("/");
|
||||||
null
|
const calendar_id : _zeitbild.frontend_web.type.calendar_id = parseInt(parts[0]);
|
||||||
:
|
const event_id : (null | _zeitbild.frontend_web.type.local_resource_event_id) = (
|
||||||
parseInt(parts[1])
|
(parts[1] === "-")
|
||||||
);
|
?
|
||||||
const access_level : _zeitbild.frontend_web.type.enum_access_level = (() => {
|
null
|
||||||
switch (parts[2]) {
|
:
|
||||||
case "none": return _zeitbild.frontend_web.type.enum_access_level.none;
|
parseInt(parts[1])
|
||||||
case "view": return _zeitbild.frontend_web.type.enum_access_level.view;
|
);
|
||||||
case "edit": return _zeitbild.frontend_web.type.enum_access_level.edit;
|
const access_level : _zeitbild.frontend_web.type.enum_access_level = (() => {
|
||||||
case "admin": return _zeitbild.frontend_web.type.enum_access_level.admin;
|
switch (parts[2]) {
|
||||||
}
|
case "none": return _zeitbild.frontend_web.type.enum_access_level.none;
|
||||||
}) ();
|
case "view": return _zeitbild.frontend_web.type.enum_access_level.view;
|
||||||
this.action_select_event(
|
case "edit": return _zeitbild.frontend_web.type.enum_access_level.edit;
|
||||||
calendar_id,
|
case "admin": return _zeitbild.frontend_web.type.enum_access_level.admin;
|
||||||
access_level,
|
}
|
||||||
event_id
|
}) ();
|
||||||
);
|
this.action_select_event(
|
||||||
}
|
calendar_id,
|
||||||
);
|
access_level,
|
||||||
}
|
event_id
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Promise.resolve<void>(undefined);
|
return Promise.resolve<void>(undefined);
|
||||||
|
|
|
@ -1,18 +1,18 @@
|
||||||
<div class="weekview">
|
<div class="weekview">
|
||||||
<div class="weekview-controls">
|
<div class="weekview-controls">
|
||||||
<label class="weekview-control-year">
|
<label class="weekview-control weekview-control-year">
|
||||||
<span>{{label_control_year}}</span>
|
<span>{{label_control_year}}</span>
|
||||||
<input type="number"/>
|
<input type="number"/>
|
||||||
</label>
|
</label>
|
||||||
<label class="weekview-control-week">
|
<label class="weekview-control weekview-control-week">
|
||||||
<span>{{label_control_week}}</span>
|
<span>{{label_control_week}}</span>
|
||||||
<input type="number"/>
|
<input type="number"/>
|
||||||
</label>
|
</label>
|
||||||
<label class="weekview-control-count">
|
<label class="weekview-control weekview-control-count">
|
||||||
<span>{{label_control_count}}</span>
|
<span>{{label_control_count}}</span>
|
||||||
<input type="number"/>
|
<input type="number"/>
|
||||||
</label>
|
</label>
|
||||||
<input type="submit" class="weekview-control-apply" value="{{label_control_apply}}"/>
|
<input type="submit" class="weekview-control weekview-control-apply" value="{{label_control_apply}}"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="weekview-table">
|
<div class="weekview-table">
|
||||||
<table>
|
<table>
|
||||||
|
|
Loading…
Add table
Reference in a new issue