responsible: Marios Meimarisdeck Kostis Pristouris
object_id = {
type: 'string', //should be 'integer'
maxLength: 24, //does not need to be so long
minLength: 1
}
Contributor =
property | type | required | format checking | state of implementation | Remarks |
---|---|---|---|---|---|
user | integer | yes | isInteger | implemented | user id |
count | integer | yes | isInteger | implemented | count stores a number of occurrences of this user_id being an author of a deck revision |
DataSource =
property | type | required | format checking | state of implementation | Remarks |
---|---|---|---|---|---|
type | string | yes | implemented | ||
title | string | yes | implemented | ||
url | string | no | implemented | ||
comment | string | no | implemented | ||
authors | string | no | implemented | ||
year | string | no | implemented |
User=
property | type | required | format checking | state of implementation | remarks |
---|---|---|---|---|---|
id | integer | yes | ready to merge | ||
joined | string | yes | ISO date | ready to merge | the timestamp the user/group joined the deck editors |
username | string | no | see user service | ready to merge | |
picture | string | no | see user service model | ready to merge |
Group =
property | type | required | format checking | state of implementation | remarks |
---|---|---|---|---|---|
id | integer | yes | ready to merge | ||
joined | string | yes | ISO date | ready to merge | the timestamp the user/group joined the deck editors |
name | string | no | see user service | ready to merge |
EditorsRights=
property | type | required | state of implementation | remarks |
---|---|---|---|---|
users | array of Users | yes | ready to merge | lists the users that explicitly are editors of the deck |
groups | array of Groups | yes | ready to merge | lists the groups whose users explicitly can edit the deck |
DeckOrigin = SlideOrigin
property | type | required | state of implemenation |
---|---|---|---|
id | integer | yes | implemented |
revision | integer | yes | implemented |
title | string | no | implemented |
user | integer | no | implemented |
kind | string | no | implemented in branch 1319 |
Deck =
...
property | type | required | format checking | state of implementation | Remarks |
---|---|---|---|---|---|
_id | integer, autoincrement | yes | isInteger | implemented | for now is 'string' in the code |
timestamp |
date | yes | auto generated | implemented | add 'format: datetime' |
user | integer |
yes | isInteger | implemented (passed to service) |
editors | EditorsRights | no | implemented | ||
origin | DeckOrigin | no | implemented | references the deck revision this deck was forked from | |
description | string | no |
implemented |
translations | array of {language |
: 'string', deck_id: object_id} | no | implemented in branch 1287 | language is in format 'de_DE' as we need this to save the new deck | |
translated_from | has field 'status' with possible values 'original', 'google', 'revised' |
auto generated | implemented | Not in use now, but implemented. Could be used later in front-end | |||
lastUpdate | string, datetime | no | auto |
-generated on creating new slide revision inside the deck | ||||
revisions | [ array of DeckRevision ] | yes | auto generated | implemented |
active |
integer |
yes | if the revision exists, when a new deck is added is set to 1 | implemented | |||
datasource | string | no | if the whole deck is the adaptation of a resource | ||
license | string enumeration | yes | is one of enumerables ['CC0', 'CC BY', 'CC BY-SA'] | implemented | should move it from revision, it is the same for the whole deck |
contributors | array of contributors | no | in process |
ContentItem =
...
property | type | required | format checking | state of implementation |
---|---|---|---|---|
order | integer | yes | isInteger | implemented |
kind | string | yes | enum ('deck', 'slide') | implemented |
ref | object: {id, revision} | yes |
implemented | ||||
ref.id | integer | yes | isInteger | implemented |
ref.revision | integer | yes | isInteger | implemented |
Tag =
property | type | required | format checking | state of implementation |
---|---|---|---|---|
tagName | string | yes | to be decided | implemented |
DeckRevision =
...
property | type | required | format checking | state of implementation | remarks |
---|---|---|---|---|---|
id |
objectId, autoincrement (scope limited to parent item) | yes | isInteger | implemented | |
title | string | yes |
implemented | |||
timestamp |
date | yes | auto generated | implemented | |
user |
objectid | yes | isInteger | implemented | |
parent |
object {id: objectId, revision: objectId} | no | isInteger | not implemented | reference to a previous revision/branch etc. | |
---|---|---|---|---|---|
language | string | yes | implemented | ||
popularity | integer | no | isInteger | not implemented | |
theme | object | no |
not implemented | ||
transition | object | no |
not implemented | ||
comment | string | no |
implemented | this is a comment of the revision - like in github | |
---|---|---|
abstract | string | no |
implemented | |||
footer |
string | no |
implemented |
changed to string | |||||
---|---|---|---|---|---|
allowMarkdown | boolean | no | isBoolean | not implemented | if checked, authors have an additional editor for markdown |
isFeatured | boolean | no | isBoolean | not implemented | |
priority | integer | no | isInteger | not implemented | |
visibility | boolean | no | isBoolean | not implemented |
translated_from | object { status: string, enum['original', 'google', 'revised', null], source: { id: object_id, revision: object_id}, translator: {id: object_id, name: string} } | no | not implemented | Most likely this is redundant - as we store everything in the "origin" field of the deck and we do not allow to have more than one translation in a certain language (we might create a revision instead, but for now it is just impossible - UI does not allow this) | |
---|---|---|---|---|---|
tags | array of Tags | no | implemented | ||
contentItems | array of ContentItems | yes |
implemented | |||
dataSources | array of DataSources | no |
implemented | collects all data sources from slides | ||||
---|---|---|---|---|---|
usage | array of objects { id: object_id, revision: object_id} | no | implemented |
Slide =
property | type | required | format checking | state of implementation | remarks |
---|---|---|---|---|---|
_id |
objectId, autoincrement | yes | isInteger | implemented | |
timestamp |
date | yes | auto generated |
should be format datetime | |
user |
objectId | yes | isInteger | implemented (passed to service) |
origin | SlideOrigin | no | implemented | references the slide revision this slide was translated from (for keeping track of the translation links) | |
translated_from | object { status: string, enum['original', 'google', 'revised', null], source: { id: object_id, revision: object_id}, translator: {id: object_id, name: string} } | no | not implemented | most likely a redundant field (except of status, which we might need) | |
translations | array of {language: 'string', slide_id: object_id} | no | implemented | language is in a 5-signs format | |
description | string | no | implemented | ||
contributors | [array of contributor ] | no |
not implemented | ||||
revisions | [ array of SlideRevisions ] | yes | auto generated | implemented |
active | objectId (integer) | no | if the revision exists, when a new deck is added is set to 1 | not implemented | is this really needed? active shows on content items of resp.parent |
datasource | string | no | not implemented | ||
license | string enumeration | yes | is one of enumerables ['CC0', 'CC BY', 'CC BY-SA'] | implemented | |
lastUpdate | string, datetime | no | autogenerated on creation of new revision | not implemented |
slideRevision SlideRevision =
...
property | type | required | format checking | state of implementation | remarks |
---|---|---|---|---|---|
id | integer, autoincrement | yes | isInteger | implemented | |
title | string | yes |
implemented | |||
timestamp |
date | yes | auto generated | implemented | ||
content | string | yes | ?? only allowed tags | implemented | |
markdown | string | no | ?? only allowed tags | not implemented yet | |
user | integer, autoincrement | yes | isInteger | implemented | |
parent |
object { id: objectId, revision: objectId } | no |
not implemented | keeps link to a previsous revision | ||
speakerNotes | string | no |
implemented | |||||
popularity | integer | no | isInteger | not implemented | |
comment | string | no |
implemented | comment of revision | |||
tags | array of Tags | no | implemented |
media |
array | no |
not implemented | |||||
dataSources | array of DataSources | no | implemented | ||
language | string | yes | implemented | ||
usage | array of objects { id: object_id, revision: object_id} | no | not implemented | ||
ltiURL | string | no | being implemented | ||
ltiKey | string | no | being implemented | ||
ltiWidth | string | no | being implemented | ||
ltiHeight | string | no | being implemented | ||
ltiZIndex | string | no | being implemented |