
Tags can be added to exercises in the edit view. Tags can monitored under /tags. Added the concept of ProxyExercises which are a collection of Exercises. They can be found under /proxy_exercises Added Interventions as prework to show interventions later to the user. Added exercise/[:id]/working_time to return the working time of the user in this exercise and the average working time of all users in this exercise
55 lines
3.1 KiB
Plaintext
55 lines
3.1 KiB
Plaintext
h1 = Exercise.model_name.human(count: 2)
|
|
|
|
= render(layout: 'shared/form_filters') do |f|
|
|
.form-group
|
|
= f.label(:execution_environment_id_eq, t('activerecord.attributes.exercise.execution_environment'), class: 'sr-only')
|
|
= f.collection_select(:execution_environment_id_eq, ExecutionEnvironment.with_exercises, :id, :name, class: 'form-control', prompt: t('activerecord.attributes.exercise.execution_environment'))
|
|
.form-group
|
|
= f.label(:title_cont, t('activerecord.attributes.exercise.title'), class: 'sr-only')
|
|
= f.search_field(:title_cont, class: 'form-control', placeholder: t('activerecord.attributes.exercise.title'))
|
|
|
|
.table-responsive
|
|
table.table
|
|
thead
|
|
tr
|
|
th = sort_link(@search, :title, t('activerecord.attributes.exercise.title'))
|
|
th = sort_link(@search, :execution_environment_id, t('activerecord.attributes.exercise.execution_environment'))
|
|
th = t('.test_files')
|
|
th = t('activerecord.attributes.exercise.maximum_score')
|
|
th = t('activerecord.attributes.exercise.tags')
|
|
th = t('activerecord.attributes.exercise.difficulty')
|
|
th = t('activerecord.attributes.exercise.worktime')
|
|
th
|
|
= t('activerecord.attributes.exercise.public')
|
|
- if policy(Exercise).batch_update?
|
|
br
|
|
span.batch = link_to(t('shared.batch_update'), '#', 'data-text' => t('shared.update', model: t('activerecord.models.exercise.other')))
|
|
th colspan=6 = t('shared.actions')
|
|
tbody
|
|
- @exercises.each do |exercise|
|
|
tr data-id=exercise.id
|
|
td = exercise.title
|
|
td = link_to_if(exercise.execution_environment && policy(exercise.execution_environment).show?, exercise.execution_environment, exercise.execution_environment)
|
|
td = exercise.files.teacher_defined_tests.count
|
|
td = exercise.maximum_score
|
|
td = exercise.exercise_tags.count
|
|
td = exercise.expected_difficulty
|
|
td = (exercise.expected_worktime_seconds / 60).ceil
|
|
td.public data-value=exercise.public? = symbol_for(exercise.public?)
|
|
td = link_to(t('shared.edit'), edit_exercise_path(exercise)) if policy(exercise).edit?
|
|
td = link_to(t('.implement'), implement_exercise_path(exercise)) if policy(exercise).implement?
|
|
td = link_to(t('shared.statistics'), statistics_exercise_path(exercise)) if policy(exercise).statistics?
|
|
|
|
td
|
|
.btn-group
|
|
button.btn.btn-primary-outline.btn-xs.dropdown-toggle data-toggle="dropdown" type="button" = t('shared.actions_button')
|
|
span.caret
|
|
span.sr-only Toggle Dropdown
|
|
ul.dropdown-menu.pull-right role="menu"
|
|
li = link_to(t('shared.show'), exercise) if policy(exercise).show?
|
|
li = link_to(t('shared.destroy'), exercise, data: {confirm: t('shared.confirm_destroy')}, method: :delete) if policy(exercise).destroy?
|
|
li = link_to(t('.clone'), clone_exercise_path(exercise), data: {confirm: t('shared.confirm_destroy')}, method: :post) if policy(exercise).clone?
|
|
|
|
= render('shared/pagination', collection: @exercises)
|
|
p = render('shared/new_button', model: Exercise)
|