...
 
Commits (561)
......@@ -49,33 +49,33 @@ ngbuild:
paths:
- "$BUILD_DIR"
#review:
# stage: review
# script:
# - rsync -av --delete "$BUILD_DIR" /srv/nginx/pages/$CI_BUILD_REF_SLUG
# environment:
# name: review/$CI_BUILD_REF_NAME
# url: http://$CI_BUILD_REF_SLUG.$SERVER_URL
# on_stop: stop_review
# only:
# - branches
# except:
# - master
# tags:
# - nginx
review:
stage: review
script:
- rsync -av --delete "$BUILD_DIR" /srv/nginx/pages/$CI_BUILD_REF_SLUG
environment:
name: review/$CI_BUILD_REF_NAME
url: http://$CI_BUILD_REF_SLUG.$REVIEW_SERVER_URL
on_stop: stop_review
only:
- branches
except:
- master
tags:
- nginx
#stop_review:
# stage: review
# script:
# - rm -rf "$BUILD_DIR" /srv/nginx/pages/$CI_BUILD_REF_SLUG
# variables:
# GIT_STRATEGY: none
# when: manual
# environment:
# name: review/$CI_BUILD_REF_NAME
# action: stop
# tags:
# - nginx
stop_review:
stage: review
script:
- rm -rf "$BUILD_DIR" /srv/nginx/pages/$CI_BUILD_REF_SLUG
variables:
GIT_STRATEGY: none
when: manual
environment:
name: review/$CI_BUILD_REF_NAME
action: stop
tags:
- nginx
deploy:
......
# Changelog
## 1.3
Changes to the role system:
* Removes the distinction between participant and lecturer on login
* Adds a user home where all related sessions are listed
* Adds a moderator role
Moderated comment board:
* Creators of sessions can add moderators (via room settings)
* Creators and moderators have access to the moderator board
* Two modes of moderating:
* Default: new comments are auto-acknowledged and are visible on the normal comment board
* Whitelist: new comments are only visible in the moderator board and need acknowledgement
Other Changes:
* Comments can now be marked as wrong
* Comments can get banned (to the moderator board, see above)
* User can delete his account
* Improve wording
**This version is brought to you by:**
Project management: Klaus Quibeldey-Cirkel
Lead programming: Tom "tekay" Käsler, Lukas Mauß
## 1.2.1
Bug Fixes:
* Fix icons in room view for both roles
......
[TOC]
# Making HTML elements a11y
### Example (meeting_room) for Buttons
```html
<button mat-button *ngIf="user && deviceType === 'desktop'" [matMenuTriggerFor]="userMenu" aria-labelledby="meeting_room"></button>
<!--Hidden Div's for a11y-Descriptions-->
<div class="visually-hidden">
<div id="meeting_room">{{'header.a11y-meeting_room' | translate}}</div>
</div>
```
### style.sccs
```scss
.visually-hidden {
position: absolute;
width: 1px;
height: 1px;
overflow: hidden;
left: -10000px;
}
```
### Dynamic ARIA labels
Dynamic Aria labels like used in generic components are also possible!
For usage only the `attr.` tag prefix must be added like in following code example:
```html
<button
mat-button
attr.aria-labelledby="{{ ariaPrefix + 'cancel' }}"
...
...
<div id="{{ ariaPrefix + 'cancel'}}">{{ buttonsLabelSection + '.cancel-description' | translate }}</div>
```
@see: [Accessible components: #2 dynamic ARIA labels](https://blog.prototypr.io/accessible-components-2-dynamic-aria-labels-6bf281f26d17)
### Live Announcer
#### To Add Live Announcer you need to import:
``import { LiveAnnouncer } from '@angular/cdk/a11y';``
##### And add to the constructor:
```typescript
constructor(
...
private liveAnnouncer: LiveAnnouncer) {
...
}
```
#### You also need to add to the `ngOnInit()` - Function:
```typescript
ngOnInit() {
...
this.announce();
}
```
#### And this is the function to start the announcement:
```typescript
public announce() {
this.liveAnnouncer.announce('Willkommenstext', 'assertive');
}
```
#### Problems with JAWS and Microsoft Speech
JAWS and Microsoft Speech cannot play the "title" attributes. Only NVDA plays the "title" attribute.
Attribute "aria-label" does not work with multi-language titles, voice output reads registered string directly 1 to 1.
`aria-labelledby` works finde with Microsoft Speech, JAWS and NVDA. If "title" attribute is additionally set, NVDA plays the text twice.
### Keyboard Shortcut
To enter Keyboard Shortcuts you first need to import `Renderer2`, `InDestroy` and the `EventService` form `angular/core`:
```typescript
import { Component, OnInit, OnDestroy, Renderer2 } from '@angular/core';
import { EventService } from '../../../services/util/event.service';
```
After that you also need to add it to the constructor
```typescript
constructor(
...
private eventService: EventService,
private _r: Renderer2){
...
}
}
```
When this is done you need to add a listener to the ``ngOnInit()`` function.
Example:
```typescript
ngOnInit() {
...
// But first you need to add a variable:
listenerFn: () => void;
// listenerFn is for closing the listener in the ngOnDestroy() function when leaving the page
// Example of start-page
this.listenerFn = this._r.listen(document, 'keyup', (event) => {
if (event.keyCode === 49 && this.eventService.focusOnInput === false) {
document.getElementById('session_id-input').focus();
} else if (event.keyCode === 51 && this.eventService.focusOnInput === false) {
document.getElementById('new_session-button').focus();
} else if (event.keyCode === 52 && this.eventService.focusOnInput === false) {
document.getElementById('language-menu').focus();
} else if ((event.keyCode === 57 || event.keyCode === 27) && this.eventService.focusOnInput === false) {
this.announce();
} else if (event.keyCode === 27 && this.eventService.focusOnInput === true) {
document.getElementById('session_enter-button').focus();
}
});
}
// HTML Code:
<button id="session_enter-button" ...>
...
</button>
// 'focusOnInput' is a boolean variable which should be triggered when an input element is focused and unfocused
// Example of room-join.component.html
<input id="session_id-input" matInput #roomId (focus)="eventService.makeFocusOnInputTrue()"
(blur)="eventService.makeFocusOnInputFalse()"
.../>
// ngOnDestroy function for closing the listener when leaving the page
ngOnDestroy() {
this.listenerFn();
}
```
## HTML5 Accessibility: aria-hidden and role=”presentation”
A page about `aria-hidden` and `role="presentation"` attribute usage tests:
Source: [HTML5 Accessibility: aria-hidden and role=”presentation”](http://john.foliot.ca/aria-hidden/)
This diff is collapsed.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<diagram program="umlet" version="14.2">
<zoom_level>10</zoom_level>
<element>
<id>UMLPackage</id>
<coordinates>
<x>0</x>
<y>0</y>
<w>1020</w>
<h>600</h>
</coordinates>
<panel_attributes>ARSnova
--
bg=white
layer=-1</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>300</x>
<y>70</y>
<w>100</w>
<h>30</h>
</coordinates>
<panel_attributes>User</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>240</x>
<y>150</y>
<w>100</w>
<h>30</h>
</coordinates>
<panel_attributes>Creator</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>380</x>
<y>150</y>
<w>100</w>
<h>30</h>
</coordinates>
<panel_attributes>Participant</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>350</x>
<y>90</y>
<w>80</w>
<h>80</h>
</coordinates>
<panel_attributes>lt=&lt;&lt;-</panel_attributes>
<additional_attributes>10.0;10.0;10.0;40.0;60.0;40.0;60.0;60.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>280</x>
<y>90</y>
<w>80</w>
<h>80</h>
</coordinates>
<panel_attributes>lt=&lt;&lt;-</panel_attributes>
<additional_attributes>60.0;10.0;60.0;40.0;10.0;40.0;10.0;60.0</additional_attributes>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>240</x>
<y>260</y>
<w>220</w>
<h>50</h>
</coordinates>
<panel_attributes>Room
valign=center</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>300</x>
<y>400</y>
<w>100</w>
<h>30</h>
</coordinates>
<panel_attributes>Comment</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>340</x>
<y>300</y>
<w>100</w>
<h>120</h>
</coordinates>
<panel_attributes>lt=-
m1=1
m2=*
contains &gt;</panel_attributes>
<additional_attributes>10.0;10.0;10.0;100.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>150</x>
<y>300</y>
<w>120</w>
<h>120</h>
</coordinates>
<panel_attributes>lt=-
m1=1
m2=*
&lt; contains</panel_attributes>
<additional_attributes>100.0;10.0;100.0;50.0;10.0;50.0;10.0;100.0</additional_attributes>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>110</x>
<y>400</y>
<w>100</w>
<h>30</h>
</coordinates>
<panel_attributes>Feedback</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>490</x>
<y>400</y>
<w>100</w>
<h>110</h>
</coordinates>
<panel_attributes>Content
valign=center</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>440</x>
<y>300</y>
<w>120</w>
<h>120</h>
</coordinates>
<panel_attributes>lt=-
m1=1
m2=*
contains &gt;</panel_attributes>
<additional_attributes>10.0;10.0;10.0;50.0;100.0;50.0;100.0;100.0</additional_attributes>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>670</x>
<y>400</y>
<w>100</w>
<h>30</h>
</coordinates>
<panel_attributes>Statistics</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>670</x>
<y>440</y>
<w>100</w>
<h>30</h>
</coordinates>
<panel_attributes>Round</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>430</x>
<y>560</y>
<w>100</w>
<h>30</h>
</coordinates>
<panel_attributes>TextContent
</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>550</x>
<y>560</y>
<w>100</w>
<h>30</h>
</coordinates>
<panel_attributes>ChoiceContent</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>470</x>
<y>500</y>
<w>80</w>
<h>80</h>
</coordinates>
<panel_attributes>lt=&lt;&lt;-</panel_attributes>
<additional_attributes>60.0;10.0;60.0;40.0;10.0;40.0;10.0;60.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>540</x>
<y>500</y>
<w>80</w>
<h>80</h>
</coordinates>
<panel_attributes>lt=&lt;&lt;-</panel_attributes>
<additional_attributes>10.0;10.0;10.0;40.0;60.0;40.0;60.0;60.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>580</x>
<y>390</y>
<w>110</w>
<h>50</h>
</coordinates>
<panel_attributes>lt=-
m1=1
m2=1
has &gt;</panel_attributes>
<additional_attributes>10.0;20.0;90.0;20.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>580</x>
<y>430</y>
<w>110</w>
<h>50</h>
</coordinates>
<panel_attributes>lt=-
m1=1
m2=*
has &gt;</panel_attributes>
<additional_attributes>10.0;20.0;90.0;20.0</additional_attributes>
</element>
<element>
<type>CustomElementImpl</type>
<coordinates>
<x>470</x>
<y>610</y>
<w>551</w>
<h>331</h>
</coordinates>
<panel_attributes>ARSnova
arsnova frontend
THM, FB MNI, WiSe 2017/2018
https://git.thm.de/swtp-block-ws17/arsnova-angular-frontend
v0.1
keiner
keiner
Domänendiagramm
UMLet v14.2
v2.0
01.03.2018
Lukas Mauß, David Donges, Thomas Groß, Lukas Kimpel
01.03.2018
Lukas Kimpel
lukas.kimpel@mni.thm.de</panel_attributes>
<additional_attributes/>
<custom_code>height=330;
int y=textHeight();
String[] texts = {
"Projekt:",
"Projektbezeichnung:",
"Projektort und -zeitraum:",
"Projekt-Repository:",
"Release:",
"Staging Server:",
"Produktionsserver:",
"UML-Diagrammart:",
"UML-Tool:",
"Modellversion:",
"Erstelldatum:",
"Ersteller/in:",
"Letzte Änderung:",
"Letzter Bearbeiter",
"E-Mail:"
};
drawRectangle(0,0,width,height);
for(int i = 0; i&lt;texts.length;i++) {
drawLine(0,y+5,width,y+5);
drawLine(170,y-20,170,y+5);
y += printLeft(texts[i],y);
y += 5;
}
y=textHeight();
for(String line : textlines) {
y += printRight(line,y) + 5;
}
</custom_code>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>270</x>
<y>170</y>
<w>100</w>
<h>110</h>
</coordinates>
<panel_attributes>lt=-
m1=1
m2=*
creates &gt;</panel_attributes>
<additional_attributes>10.0;10.0;10.0;70.0;80.0;70.0;80.0;90.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>290</x>
<y>170</y>
<w>300</w>
<h>250</h>
</coordinates>
<panel_attributes>lt=-
m1=1
m2=*
creates &gt;</panel_attributes>
<additional_attributes>10.0;10.0;10.0;50.0;280.0;50.0;280.0;230.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>470</x>
<y>140</y>
<w>450</w>
<h>320</h>
</coordinates>
<panel_attributes>lt=-
m1=1
m2=*
creates &gt;</panel_attributes>
<additional_attributes>10.0;20.0;430.0;20.0;430.0;300.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>0</x>
<y>20</y>
<w>490</w>
<h>460</h>
</coordinates>
<panel_attributes>lt=-
m1=1
m2=*
creates &gt;</panel_attributes>
<additional_attributes>470.0;130.0;470.0;10.0;10.0;10.0;10.0;440.0;350.0;440.0;350.0;410.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>70</x>
<y>30</y>
<w>400</w>
<h>440</h>
</coordinates>
<panel_attributes>lt=-
m1=1
m2=*
creates &gt;</panel_attributes>
<additional_attributes>380.0;120.0;380.0;10.0;10.0;10.0;10.0;420.0;90.0;420.0;90.0;400.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>140</x>
<y>40</y>
<w>310</w>
<h>260</h>
</coordinates>
<panel_attributes>lt=-
m1=1
m2=*
&lt; joins</panel_attributes>
<additional_attributes>290.0;110.0;290.0;20.0;10.0;20.0;10.0;230.0;100.0;230.0</additional_attributes>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>850</x>
<y>440</y>
<w>100</w>
<h>30</h>
</coordinates>
<panel_attributes>Answer</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>760</x>
<y>430</y>
<w>110</w>
<h>50</h>
</coordinates>
<panel_attributes>lt=-
m1=1
m2=*
has &gt;</panel_attributes>
<additional_attributes>10.0;20.0;90.0;20.0</additional_attributes>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>790</x>
<y>520</y>
<w>100</w>
<h>30</h>
</coordinates>
<panel_attributes>TextAnswer</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>900</x>
<y>460</y>
<w>80</w>
<h>80</h>
</coordinates>
<panel_attributes>lt=&lt;&lt;-</panel_attributes>
<additional_attributes>10.0;10.0;10.0;40.0;60.0;40.0;60.0;60.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>830</x>
<y>460</y>
<w>80</w>
<h>80</h>
</coordinates>
<panel_attributes>lt=&lt;&lt;-</panel_attributes>
<additional_attributes>60.0;10.0;60.0;40.0;10.0;40.0;10.0;60.0</additional_attributes>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>910</x>
<y>520</y>
<w>100</w>
<h>30</h>
</coordinates>
<panel_attributes>ChoiceAnswer</panel_attributes>
<additional_attributes/>
</element>
</diagram>
@startuml
skinparam class {
BackgroundColor PaleGreen
BorderColor Green
ArrowColor black
FontSize 28
BackgroundColor<<USP>> Pink
BorderColor<<USP>> HotPink
}
skinparam backgroundColor Linen
skinparam linetype ortho
skinparam shadowing true
skinparam minClassWidth 200
skinparam LegendBackgroundColor Strategy
skinparam LegendBorderThickness 0
skinparam LegendFontSize 20
skinparam defaultFontSize 20
skinparam Padding 8
skinparam Nodesep 150
skinparam ArrowThickness 2
skinparam ArrowColor DarkSlateGray
hide methods
hide empty members
hide circle
package "frag.jetzt | domain diagram" <<Frame>> {
class GuestUser {
}
class RegisteredUser {
email
password
}
GuestUser -left-|> User
RegisteredUser -up-|> User
class SessionParticipant {
}
class TemporalSessionHolder {
}
SessionParticipant -left-|> GuestUser
TemporalSessionHolder -up-|> GuestUser
class Moderator <<USP>> {
}
class BonusParticipant <<USP>> {
}
class PermanentSessionHolder{
}
PermanentSessionHolder -left-|> RegisteredUser
Moderator -up-|> RegisteredUser
Moderator -down- Session :assigned to >
BonusParticipant -right-|> RegisteredUser
class Session {
id
name
description
holder
moderators
}
class Question {
votes
}
class Status {
affirmed
negated
bonus
discussed
}
Status -up- Question
class Board {
helpPage
}
class QuestionBoard {
counter
search
sorting
filtering
displayThreshold
}
class ModeratorBoard {
counter
search
sorting
filtering
}
Session *-right- Board
QuestionBoard -up-|> Board
ModeratorBoard -up-|> Board
Question -right-o QuestionBoard
ModeratorBoard o-down- BannedQuestion
}
legend right
|<img:https://git.thm.de/arsnova/arsnova-lite/raw/staging/src/assets/icons/Logo_frag_jetzt_128x128.png> |= \n\n »frag.jetzt« |
| Produktion | [[https://frag.jetzt]] |
| Repository | [[https://git.thm.de/arsnova/frag.jetzt]] |
| Staging Server | [[https://staging.frag.jetzt]] |
| UML-Tool| PlantUML v1.2019.5|
| Ersteller| Klaus Quibeldey-Cirkel|
| Mail| klaus.quibeldey-cirkel@mni.thm.de |
| Letzte Änderung| 26.08.2019 |
end legend
@enduml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<diagram program="umlet" version="14.2">
<zoom_level>13</zoom_level>
<element>
<id>UMLActor</id>
<coordinates>
<x>0</x>
<y>208</y>
<w>104</w>
<h>156</h>
</coordinates>
<panel_attributes>Participant
</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>65</x>
<y>221</y>
<w>442</w>
<h>104</h>
</coordinates>
<panel_attributes/>
<additional_attributes>10.0;10.0;320.0;60.0</additional_attributes>
</element>
<element>
<id>UMLUseCase</id>
<coordinates>
<x>884</x>
<y>208</y>
<w>182</w>
<h>52</h>
</coordinates>
<panel_attributes>join created
room</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLUseCase</id>
<coordinates>
<x>676</x>
<y>481</y>
<w>156</w>
<h>65</h>
</coordinates>
<panel_attributes>create content
for room</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLUseCase</id>
<coordinates>
<x>520</x>
<y>65</y>
<w>156</w>
<h>52</h>
</coordinates>
<panel_attributes>give a
comment</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLUseCase</id>
<coordinates>
<x>481</x>
<y>169</y>
<w>156</w>
<h>65</h>
</coordinates>
<panel_attributes>show content
in room</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLUseCase</id>
<coordinates>
<x>377</x>
<y>715</y>
<w>156</w>
<h>52</h>
</coordinates>
<panel_attributes>see feedback</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLUseCase</id>
<coordinates>
<x>975</x>
<y>611</y>
<w>208</w>
<h>65</h>
</coordinates>
<panel_attributes>see answer statistics</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>806</x>
<y>507</y>
<w>195</w>
<h>156</h>
</coordinates>
<panel_attributes>lt=.&gt;
&lt;&lt;extends&gt;&gt;</panel_attributes>
<additional_attributes>130.0;100.0;10.0;17.0</additional_attributes>
</element>
<element>
<id>UMLUseCase</id>
<coordinates>
<x>1001</x>
<y>468</y>
<w>169</w>
<h>78</h>
</coordinates>
<panel_attributes>start new
voting round</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>819</x>
<y>481</y>
<w>208</w>
<h>52</h>
</coordinates>
<panel_attributes>lt=.&gt;
&lt;&lt;extends&gt;&gt;</panel_attributes>
<additional_attributes>140.0;20.0;10.0;20.0</additional_attributes>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>156</x>
<y>13</y>
<w>156</w>
<h>39</h>
</coordinates>
<panel_attributes>ARSnova</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLActor</id>
<coordinates>
<x>0</x>
<y>546</y>
<w>78</w>
<h>156</h>
</coordinates>
<panel_attributes>Creator
</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>156</x>
<y>13</y>
<w>1144</w>
<h>949</h>
</coordinates>
<panel_attributes>
</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLUseCase</id>
<coordinates>
<x>481</x>
<y>273</y>
<w>156</w>
<h>52</h>
</coordinates>
<panel_attributes>give feedback
</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLUseCase</id>
<coordinates>
<x>416</x>
<y>598</y>
<w>156</w>
<h>52</h>
</coordinates>
<panel_attributes>create room
</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>26</x>
<y>559</y>
<w>416</w>
<h>91</h>
</coordinates>
<panel_attributes/>
<additional_attributes>300.0;50.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>UMLUseCase</id>
<coordinates>
<x>663</x>
<y>637</y>
<w>156</w>
<h>52</h>
</coordinates>
<panel_attributes>login</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>546</x>
<y>624</y>
<w>143</w>
<h>65</h>
</coordinates>
<panel_attributes>lt=&lt;.
&lt;&lt;include&gt;&gt;</panel_attributes>
<additional_attributes>90.0;30.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>663</x>
<y>78</y>
<w>247</w>
<h>169</h>
</coordinates>
<panel_attributes>lt=&lt;.
&lt;&lt;include&gt;&gt;</panel_attributes>
<additional_attributes>10.0;10.0;170.0;110.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>624</x>
<y>195</y>
<w>286</w>
<h>65</h>
</coordinates>
<panel_attributes>lt=&lt;.
&lt;&lt;include&gt;&gt;</panel_attributes>
<additional_attributes>10.0;10.0;200.0;30.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>624</x>
<y>234</y>
<w>286</w>
<h>91</h>
</coordinates>
<panel_attributes>lt=&lt;.
&lt;&lt;include&gt;&gt;</panel_attributes>
<additional_attributes>10.0;50.0;200.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>52</x>
<y>507</y>
<w>650</w>
<h>78</h>
</coordinates>
<panel_attributes/>
<additional_attributes>10.0;40.0;480.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>520</x>
<y>533</y>
<w>260</w>
<h>91</h>
</coordinates>
<panel_attributes>lt=&lt;.
&lt;&lt;include&gt;&gt;</panel_attributes>
<additional_attributes>10.0;50.0;180.0;10.0</additional_attributes>
</element>
<element>
<id>UMLUseCase</id>
<coordinates>
<x>429</x>
<y>832</y>
<w>156</w>
<h>78</h>
</coordinates>
<panel_attributes>see participant's
comments</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>39</x>
<y>598</y>
<w>416</w>
<h>286</h>
</coordinates>
<panel_attributes/>
<additional_attributes>10.0;10.0;300.0;200.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>39</x>
<y>585</y>
<w>364</w>
<h>182</h>
</coordinates>
<panel_attributes/>
<additional_attributes>10.0;10.0;260.0;120.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>520</x>
<y>637</y>
<w>117</w>
<h>130</h>
</coordinates>
<panel_attributes>lt=&lt;.
&lt;&lt;include&gt;&gt;</panel_attributes>
<additional_attributes>10.0;10.0;10.0;80.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>65</x>
<y>195</y>
<w>455</w>
<h>52</h>
</coordinates>
<panel_attributes/>
<additional_attributes>10.0;20.0;330.0;20.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>65</x>
<y>78</y>
<w>481</w>
<h>156</h>
</coordinates>
<panel_attributes/>
<additional_attributes>10.0;100.0;350.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>533</x>
<y>624</y>
<w>130</w>
<h>273</h>
</coordinates>
<panel_attributes>lt=&lt;.
&lt;&lt;include&gt;&gt;</panel_attributes>
<additional_attributes>10.0;10.0;40.0;190.0</additional_attributes>
</element>
<element>
<id>UMLUseCase</id>
<coordinates>
<x>338</x>
<y>26</y>
<w>182</w>
<h>52</h>
</coordinates>
<panel_attributes>give answer
to a content</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>403</x>
<y>65</y>
<w>156</w>
<h>156</h>
</coordinates>
<panel_attributes>lt=.&gt;
&lt;&lt;extends&gt;&gt;</panel_attributes>
<additional_attributes>60.0;100.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>65</x>
<y>65</y>
<w>351</w>
<h>156</h>
</coordinates>
<panel_attributes/>
<additional_attributes>250.0;10.0;10.0;100.0</additional_attributes>
</element>
</diagram>
@startuml
scale 1.0
left to right direction
skinparam backgroundColor Linen
skinparam LegendBackgroundColor Strategy
skinparam LegendBorderThickness 0
skinparam LegendFontSize 20
skinparam Padding 5
skinparam defaultFontSize 24
skinparam Nodesep 100
skinparam ArrowThickness 2
skinparam shadowing true
skinparam usecase {
BackgroundColor PaleGreen
BorderColor Green
BackgroundColor<<USP>> Pink
BorderColor<<USP>> HotPink
BorderThickness 2
ArrowThickness 2
ArrowColor Green
ActorBorderColor Green
}
actor Lecturer
actor Student
actor Moderator
note "If a lecturer is registered and logs in with her account, \nher sessions remain stored for 180 days after the last visit, \notherwise they are deleted when she logs out." as NoteForCreateSession
note "Registered students can receive a bonus \nfor particularly interesting questions." as NoteForJoinSession
rectangle "frag.jetzt | use-case diagram \n" << Business >> {
(Join session) --- NoteForJoinSession
(Create session) --- NoteForCreateSession
Lecturer -- (Create session)
(Evaluate questions) <.. (Delete question) : << extend >>
Student-- (Join session)
Moderator ---- (Moderate questions)
(Create session) <.. (Export questions) : << extend >>
(Create session) <.. (Assign moderator to session) : << extend >>
(Create session) <.. (Ask question) : << extend >>
(Create session) <.. (Evaluate questions) : << extend >>
(Moderate questions) <.. (Ban question) : << extend >>
(Evaluate questions) <.. (Ban question) : << extend >>
(Join session) <.. (Ask question) : << extend >>
(Join session) <.. (Vote up question) : << extend >>
(Join session) <.. (Vote down question) : << extend >>
}
legend right
|<img:https://git.thm.de/arsnova/arsnova-lite/raw/staging/src/assets/icons/Logo_frag_jetzt_128x128.png> |= \n\n »frag.jetzt« |
| Produktion | [[https://frag.jetzt]] |
| Repository | [[https://git.thm.de/arsnova/frag.jetzt]] |
| Staging Server | [[https://staging.frag.jetzt]] |
| UML-Tool| PlantUML v1.2019.5|
| Ersteller| Klaus Quibeldey-Cirkel|
| Mail| klaus.quibeldey-cirkel@mni.thm.de |
| Letzte Änderung| 26.08.2019 |
end legend
@enduml