Skip to content

Commit

Permalink
[frontend/task_dispenser] Adding "hidden" config item to Section (#917)
Browse files Browse the repository at this point in the history
Fix #914 and #433
  • Loading branch information
Drumor committed Jun 14, 2023
1 parent a9962ca commit dd7dacf
Show file tree
Hide file tree
Showing 6 changed files with 41 additions and 37 deletions.
2 changes: 1 addition & 1 deletion inginious/frontend/task_dispensers/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ def render_edit(self, template_helper, course, task_data):
pass

@abstractmethod
def render(self, template_helper, course, tasks_data, tag_list):
def render(self, template_helper, course, tasks_data, tag_list,username):
""" Returns the formatted task list"""
pass

Expand Down
2 changes: 1 addition & 1 deletion inginious/frontend/task_dispensers/combinatory_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ def render_edit(self, template_helper, course, task_data):
course_structure=self._toc, tasks=task_data, config_fields=config_fields,
config_items_funcs=["dispenser_util_get_" + config_item.get_id() for config_item in self.config_items])

def render(self, template_helper, course, tasks_data, tag_list):
def render(self, template_helper, course, tasks_data, tag_list, username):
""" Returns the formatted task list"""
return template_helper.render("task_dispensers/toc.html", course=course, tasks=self._task_list_func(),
tasks_data=tasks_data, tag_filter_list=tag_list, sections=self._toc)
Expand Down
8 changes: 5 additions & 3 deletions inginious/frontend/task_dispensers/toc.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,16 +100,18 @@ def get_dispenser_data(self):
def render_edit(self, template_helper, course, task_data):
""" Returns the formatted task list edition form """
config_fields = {
"closed": SectionConfigItem(_("Closed by default"), "checkbox", False)
"closed": SectionConfigItem(_("Closed by default"), "checkbox", False),
"hidden_if_empty": SectionConfigItem(_("Hidden if empty"),"checkbox",False)
}
return template_helper.render("course_admin/task_dispensers/toc.html", course=course,
course_structure=self._toc, tasks=task_data, config_fields=config_fields,
config_items_funcs=["dispenser_util_get_" + config_item.get_id() for config_item in self.config_items])

def render(self, template_helper, course, tasks_data, tag_list):
def render(self, template_helper, course, tasks_data, tag_list, username):
""" Returns the formatted task list"""
accessibilities = course.get_task_dispenser().get_accessibilities(self._task_list_func(),[username])
return template_helper.render("task_dispensers/toc.html", course=course, tasks=self._task_list_func(),
tasks_data=tasks_data, tag_filter_list=tag_list, sections=self._toc)
tasks_data=tasks_data, tag_filter_list=tag_list, sections=self._toc,accessibilities=accessibilities)

def check_dispenser_data(self, dispenser_data):
""" Checks the dispenser data as formatted by the form from render_edit function """
Expand Down
2 changes: 1 addition & 1 deletion inginious/frontend/templates/course.html
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ <h2>{{ course.get_name(user_manager.session_language()) }}</h2>
}
</style>

{{ course.get_task_dispenser().render(template_helper, course, tasks_data, category_filter_list) | safe }}
{{ course.get_task_dispenser().render(template_helper, course, tasks_data, category_filter_list,user_manager.session_username()) | safe }}

{% include "unregister_modal.html" %}

Expand Down
4 changes: 2 additions & 2 deletions inginious/frontend/templates/task_dispensers/task_list.html
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,12 @@
{% set succeeded = tasks_data[taskid]["succeeded"] %}
{% set completion = tasks_data[taskid]["grade"] %}
<a href="{{ get_homepath() }}/course/{{course.get_id()}}/{{taskid}}" class="list-group-item list-group-item-action
{% if not task_dispenser.get_accessibility(taskid, user_manager.session_username()).is_open() %} disabled {% endif %}">
{% if not accessibilities[user_manager.session_username()][taskid].is_open() %} disabled {% endif %}">
<div class="row">
<div class="col-xs-12 col-md-7 pl-1">
<i style="color: {% if succeeded %}#468847{% else %}transparent{% endif %};" class="fa fa-check"></i>
{{ task.get_name(user_manager.session_language()) }}
{% if not task_dispenser.get_accessibility(task.get_id(), user_manager.session_username()).is_open() %}
{% if not accessibilities[user_manager.session_username()][taskid].is_open() %}
- <b> {{ _("deadline reached") }} </b>
{% endif %}
</div>
Expand Down
60 changes: 31 additions & 29 deletions inginious/frontend/templates/task_dispensers/toc.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,37 +4,39 @@
{# Recursively print a list of sections and their content #}

{% set level = level|default(3, true) %}

{% for section in sections %}
{% if section.is_terminal() %}
{% set ns = namespace(section_tasks=[]) %}
{% for taskid in section.get_tasks() if taskid in tasks %}
{% set ns.section_tasks = ns.section_tasks + [tasks[taskid]] %}
{% endfor %}
{% with tasks=ns.section_tasks, tag_list=tag_filter_list, title=section.get_title(), config=section.get_config() %}
{% include "task_dispensers/task_list.html" %}
{% endwith %}
{% else %}
<div class="section sections-list mb-4">
<div class="section_header d-flex justify-content-between divided pr-3" onclick="dropdown(this)">
<span class="title h{{level}} mr-3">
{{ _(section.get_title()) }}
</span>
<span class="divider"></span>
{% set ns = namespace(section_tasks=[],have_accessible_tasks=False) %}
{% for taskid in section.get_tasks() if taskid in tasks %}
{% set ns.section_tasks = ns.section_tasks + [tasks[taskid]] %}
{% set ns.have_accessible_tasks = ns.have_accessible_tasks or accessibilities[user_manager.session_username()][taskid].is_open()%}
{% endfor %}
{% if not section.get_config().get('hidden_if_empty', False) or ns.have_accessible_tasks %}
{% if section.is_terminal() %}
{% with tasks=ns.section_tasks, tag_list=tag_filter_list, title=section.get_title(), config=section.get_config(),accessibilities=accessibilities %}
{% include "task_dispensers/task_list.html" %}
{% endwith %}
{% else %}
<div class="section sections-list mb-4">
<div class="section_header d-flex justify-content-between divided pr-3" onclick="dropdown(this)">
<span class="title h{{level}} mr-3">
{{ _(section.get_title()) }}
</span>
<span class="divider"></span>

<span style="font-size: 1.5rem;" class="dropdown_button fa
{% if section.get_config().get('closed', False) %}
fa-caret-left
{% else %}
fa-caret-down
{% endif %} close pl-3">
</span>
</div>
<div class="content ml-4" style="{% if section.get_config().get('closed', False) %} display:none; {% endif %}">
{% with sections=section.get_sections_list(), level=level+1 %}
{% include "task_dispensers/toc.html" %}
{% endwith %}
<span style="font-size: 1.5rem;" class="dropdown_button fa
{% if section.get_config().get('closed', False) %}
fa-caret-left
{% else %}
fa-caret-down
{% endif %} close pl-3">
</span>
</div>
<div class="content ml-4" style="{% if section.get_config().get('closed', False) %} display:none; {% endif %}">
{% with sections=section.get_sections_list(), level=level+1 %}
{% include "task_dispensers/toc.html" %}
{% endwith %}
</div>
</div>
</div>
{% endif %}
{% endif %}
{% endfor %}

0 comments on commit dd7dacf

Please sign in to comment.