|
|
|
@ -1587,7 +1587,7 @@ checking. Previous chapters implies, that each user has to have a role, which
|
|
|
|
|
corresponds to his/her privileges. Our research showed, that three roles are
|
|
|
|
|
sufficient -- student, supervisor and administrator. The user role has to be
|
|
|
|
|
checked with every request. The good points is, that roles nicely match with
|
|
|
|
|
granuality of API endpoints, so the permission checking can be done at the
|
|
|
|
|
granularity of API endpoints, so the permission checking can be done at the
|
|
|
|
|
beginning of each request. That is implemented using PHP annotations, which
|
|
|
|
|
allows to specify allowed user roles for each request with very little of code,
|
|
|
|
|
but all the business logic is the same, together in one place.
|
|
|
|
@ -1629,7 +1629,7 @@ jobs which failed on a worker hardware issue. These jobs are typically submitted
|
|
|
|
|
by different user than the author (an administrator for example), so the
|
|
|
|
|
original authors should be notified. In this case it is more reasonable to load
|
|
|
|
|
the results immediately and optionally send them a notification via an email.
|
|
|
|
|
This is exactely what we do.
|
|
|
|
|
This is exactly what we do.
|
|
|
|
|
|
|
|
|
|
It seems with the benefit of hindsight that immediate loading of all jobs could
|
|
|
|
|
simplify the code and it has no major drawbacks. In the next version of ReCodEx
|
|
|
|
@ -1678,7 +1678,7 @@ etc. The easiest solution is to manage this information by hand, every instance
|
|
|
|
|
of the API server has to have an administrator which would have to fill them.
|
|
|
|
|
This of course includes only the currently available workers and runtime
|
|
|
|
|
environments which does not change very often. The real-time statistics of the
|
|
|
|
|
backend cannot be made accesible this way in a reasonable way.
|
|
|
|
|
backend cannot be made accessible this way in a reasonable way.
|
|
|
|
|
|
|
|
|
|
A better solution is to update this information automatically. This can be
|
|
|
|
|
done in two ways:
|
|
|
|
@ -1708,7 +1708,7 @@ One of the downsides is the large number of different web browsers (including
|
|
|
|
|
the older versions of a specific browser) and their different interpretation
|
|
|
|
|
of the code (HTML, CSS, JS). Some features of the latest specifications of HTML5
|
|
|
|
|
are implemented in some browsers which are used by a subset of the Internet
|
|
|
|
|
users. This has to be taken into account when choosing apropriate tools
|
|
|
|
|
users. This has to be taken into account when choosing appropriate tools
|
|
|
|
|
for implementation of a website.
|
|
|
|
|
|
|
|
|
|
There are two basic ways how to create a website these days:
|
|
|
|
@ -1734,7 +1734,7 @@ There are two basic ways how to create a website these days:
|
|
|
|
|
based on the data received from the API server. The script file is usually
|
|
|
|
|
quite large but it can be cached and does not have to be downloaded from the
|
|
|
|
|
server again (until the cached file expires). Only the data from the API
|
|
|
|
|
server needs to be transfered over the Internet and thus reduce the volume of
|
|
|
|
|
server needs to be transferred over the Internet and thus reduce the volume of
|
|
|
|
|
payload on each request which leads to a much more responsive user experience,
|
|
|
|
|
especially on slower networks. Since the client-side code has full control
|
|
|
|
|
over the UI and a more sophisticated user interactions with the UI can be
|
|
|
|
@ -1914,9 +1914,9 @@ instance have own group hierarchy, so you can choose only those from your
|
|
|
|
|
instance. That is why list of groups is available from instance link located in
|
|
|
|
|
sidebar. This link brings you to instance detail page.
|
|
|
|
|
|
|
|
|
|
In there you can see a description of the intance and most importantly in
|
|
|
|
|
In there you can see a description of the instance and most importantly in
|
|
|
|
|
"Groups hierarchy" box there is a hierarchical list of all public groups in the
|
|
|
|
|
instance. Please note that groups with plus sign are collapsable and can be
|
|
|
|
|
instance. Please note that groups with plus sign are collapsible and can be
|
|
|
|
|
further extended. If you successfully located group you would like to join,
|
|
|
|
|
continue by clicking on "See group's page" link following with "Join group"
|
|
|
|
|
link.
|
|
|
|
@ -1928,9 +1928,9 @@ link.
|
|
|
|
|
On the group detail page there are multiple interesting things for you. First
|
|
|
|
|
one is brief overview with information describing the group, there is list with
|
|
|
|
|
supervisors and also hierarchy of subgroups. Most importantly there is
|
|
|
|
|
"Student's dasboard" section. This section contains list of assignments and list
|
|
|
|
|
of fellow students. If supervisors of groups allowed students to see each others
|
|
|
|
|
statistics there will also be points which particular students gained.
|
|
|
|
|
"Student's dashboard" section. This section contains list of assignments and
|
|
|
|
|
list of fellow students. If supervisors of groups allowed students to see each
|
|
|
|
|
others statistics there will also be points which particular students gained.
|
|
|
|
|
|
|
|
|
|
In the "Assignments" box on the group detail page there is list of assigned
|
|
|
|
|
exercises which students are supposed to solve. The assignments are displayed
|
|
|
|
@ -1943,7 +1943,7 @@ deadlines can be different.
|
|
|
|
|
An assignment link will lead you to assignment detail page where are presented
|
|
|
|
|
all known details about assignment. There are of course both deadlines, limit of
|
|
|
|
|
submissions which you can make and also full-range description of assignment,
|
|
|
|
|
which can be localized. The localization can be ondemand switched between all
|
|
|
|
|
which can be localized. The localization can be on demand switched between all
|
|
|
|
|
language variants in tab like box.
|
|
|
|
|
|
|
|
|
|
Further on the page you can find "Submitted solutions" box where is a list of
|
|
|
|
@ -1968,9 +1968,9 @@ submitter name (supervisor can submit solution on your behalf), further there
|
|
|
|
|
are files which were uploaded on submission and most importantly "Evaluation
|
|
|
|
|
details" and "Test results" boxes.
|
|
|
|
|
|
|
|
|
|
Evalation details contains overall results of your solution. There are
|
|
|
|
|
Evaluation details contains overall results of your solution. There are
|
|
|
|
|
information such as if solution was provided before deadlines, if the evaluation
|
|
|
|
|
process succesfully finished or if compilation succeeded. After that you can
|
|
|
|
|
process successfully finished or if compilation succeeded. After that you can
|
|
|
|
|
find a lot of values, most important one is the last, "Total score", consisting
|
|
|
|
|
of your score, slash and the maximum number of points for this assignment.
|
|
|
|
|
Interestingly the your score value can be higher than the maximum, which is
|
|
|
|
@ -2019,7 +2019,7 @@ of the matching group box.
|
|
|
|
|
### Manage group
|
|
|
|
|
|
|
|
|
|
Locate group you supervise and you want to manage. All your supervised groups
|
|
|
|
|
are available in sidebar under "Groups -- supervisor" collapsable menu. If you
|
|
|
|
|
are available in sidebar under "Groups -- supervisor" collapsible menu. If you
|
|
|
|
|
click on one of those you will be redirected to group detail page. In addition
|
|
|
|
|
to basic group information you can also see "Supervisor's controls" section. In
|
|
|
|
|
this section there are lists of current students and assignments.
|
|
|
|
@ -2121,7 +2121,7 @@ runtime environment and another nested tabbed box. In there you can find all
|
|
|
|
|
hardware groups which are available for exercise and set limits for all test
|
|
|
|
|
cases. The time limits have to be filled in seconds (float), memory limits are
|
|
|
|
|
in bytes (int). If you are interested in some reference values to particular
|
|
|
|
|
test case then you can take a peek on collapsable "Reference solutions'
|
|
|
|
|
test case then you can take a peek on collapsible "Reference solutions'
|
|
|
|
|
evaluations" items. If you are satisfied with changes you made to the limits,
|
|
|
|
|
save form with "Change limits" button right under environments box.
|
|
|
|
|
|
|
|
|
@ -2183,7 +2183,7 @@ during execution according to job configuration.
|
|
|
|
|
|
|
|
|
|
Files can be uploaded either by drag and drop mechanism or by standard "Add a
|
|
|
|
|
file" button. In opened dialog window choose file which should be uploaded. All
|
|
|
|
|
chosen files are immediatelly uploaded to server but to save supplementary files
|
|
|
|
|
chosen files are immediately uploaded to server but to save supplementary files
|
|
|
|
|
list you have to hit "Save supplementary files" button. All previously uploaded
|
|
|
|
|
files are visible right under drag and drop area, please note that files are
|
|
|
|
|
stored on fileserver and cannot be deleted after upload.
|
|
|
|
@ -2227,7 +2227,7 @@ get the up-to-date information).
|
|
|
|
|
## Group administrator
|
|
|
|
|
|
|
|
|
|
Group administrator is the group supervisor with some additional permissions in
|
|
|
|
|
particular group. Namely group administator is capable of creating a subgroups
|
|
|
|
|
particular group. Namely group administrator is capable of creating a subgroups
|
|
|
|
|
in managed group and also adding and deleting supervisors. Administrator of the
|
|
|
|
|
particular group can be only one person.
|
|
|
|
|
|
|
|
|
@ -2239,7 +2239,7 @@ sidebar and choose the right group detail page. If you are there you can see
|
|
|
|
|
"Administrator controls" section, here you can either add supervisor to group or
|
|
|
|
|
create new subgroup.
|
|
|
|
|
|
|
|
|
|
Form for creatingi a subgroup is present right on the group detail page in "Add
|
|
|
|
|
Form for creating a subgroup is present right on the group detail page in "Add
|
|
|
|
|
subgroup" box. Group can be created with following options:
|
|
|
|
|
|
|
|
|
|
- name which will be visible in group hierarchy
|
|
|
|
@ -2270,7 +2270,7 @@ particular supervisor should not to be supervisor of the group anymore.
|
|
|
|
|
|
|
|
|
|
Instance administrator can be only one person per instance. In addition to
|
|
|
|
|
previous roles this administrator should be able to modify the instance details,
|
|
|
|
|
manage licences and take care of top level groups which belong to the instance.
|
|
|
|
|
manage licenses and take care of top level groups which belong to the instance.
|
|
|
|
|
|
|
|
|
|
### Instance management
|
|
|
|
|
|
|
|
|
@ -2287,7 +2287,7 @@ with corresponding form. In there you can fill following information:
|
|
|
|
|
- name of the instance which will be visible to every other user
|
|
|
|
|
- brief description of instance and for whom it is intended
|
|
|
|
|
- checkbox if instance is open or not which means public or private (hidden from
|
|
|
|
|
potentional users)
|
|
|
|
|
potential users)
|
|
|
|
|
|
|
|
|
|
If you are done with your editation, save filled information by clicking on
|
|
|
|
|
"Update instance" button.
|
|
|
|
@ -2306,7 +2306,7 @@ appear in "Groups hierarchy" box at the top of the page.
|
|
|
|
|
## Superadministrator
|
|
|
|
|
|
|
|
|
|
Superadministrator is a user with the most privileges and as such superadmin
|
|
|
|
|
should be quite a unique role. Ideally, there should be only oneu ser of this
|
|
|
|
|
should be quite a unique role. Ideally, there should be only one user of this
|
|
|
|
|
kind, used with special caution and adequate security. With this stated it is
|
|
|
|
|
obvious that superadmin can perform any action the API is capable of.
|
|
|
|
|
|
|
|
|
|