{% from 'events/abstracts/reviewing/timeline.html' import render_abstract_review_action_text, render_ratings_details_titled_rule, render_ratings_details_extra %} {% from 'events/abstracts/reviewing/_common.html' import render_track %} {% from 'events/reviews/_common.html' import render_edited_hint, render_group, render_score, render_visibility_hint, render_user_avatar %} {% from 'events/reviews/_omnibox.html' import render_omnibox %} {% macro render_timeline(proposal, comment_form, review_form=none, revision_form=none) %} {% set event_locked = proposal.event.is_locked %} {% set can_comment = not event_locked and proposal.can_comment(session.user, check_state=true) %} {% set can_review = not event_locked and proposal.can_review(session.user, check_state=true) %} {% for revision in proposal.get_revisions() %} {% set timeline = revision.get_timeline(session.user) %} {% if not loop.first %}
{% endif %} {{ caller('revision-info', revision) }} {% set timeline_class = 'weak-hidden' if revision != proposal.get_last_revision() %}
{% if timeline or (can_comment or can_review) %}
{% for item in timeline %} {% if item.timeline_item_type == 'comment' %} {{ render_comment(item, proposal) }} {% elif item.timeline_item_type == 'review' %} {{ render_review(item, form=form) }} {% elif item.timeline_item_type == 'judgment' %} {{ caller('revision-judgment', revision) }} {% endif %} {% endfor %} {% if loop.last and (can_comment or can_review) %} {% set caller_ = caller %} {% call(block) render_omnibox(proposal, comment_form, review_form) %} {{ caller_(block) }} {% endcall %} {% endif %}
{% endif %} {% if loop.last %}
{# XXX: We need to nest the connector into another .i-timeline to keep the same nesting #}
{{ caller('submit-revision') }} {% if proposal.is_in_final_state %} {{ caller('revision-judgment', revision) }} {% endif %} {% endif %}
{% endfor %} {% endmacro %} {% macro render_comment(comment, proposal) %}
{{ render_user_avatar(comment.user) }}
{% trans name=comment.user.name -%} {{ name }} left a comment {%- endtrans %} {{ render_visibility_hint(comment.visibility) }} {% if comment.modified_dt %} {{ render_edited_hint(comment.modified_dt, comment.modified_by) }} {% endif %}
{% if comment.can_edit(session.user) %} {% endif %}
{{ comment.text }}
{% endmacro %} {% macro render_review(review, form) %} {% set no_content = not review.comment and not review.ratings %} {% set ratings = review.ratings|rejectattr('question.is_deleted')|sort(attribute='question.position') %} {% set proposal = review.revision.proposal %}
{{ render_user_avatar(review.user) }}
{% if proposal.proposal_type == 'abstract' %} {{ render_abstract_review_action_text(review) }} {% endif %} {% if ratings %} {% if review.score is not none %} {% set pretty_score = render_score(review.score, proposal.cfp.rating_range, classes='bold semantic-text') %} ยท {% trans %}score {{ pretty_score }}{% endtrans %} {% endif %} ({#--#} {% trans %}show ratings{% endtrans %}{#--#} {% trans %}hide ratings{% endtrans %}{#--#} ) {% endif %}
{% if review.can_edit(session.user, check_state=true) %}
{% endif %}
{% if ratings %}
    {% for rating in ratings %}
  • {{ loop.index }}
    {{- rating.question.title -}}
    {% if rating.question.field_type == 'rating' %} {{ _render_rating(proposal.cfp.rating_range, rating.value) }} {{ rating.value if rating.value is not none else '-' }} {% elif rating.question.field_type == 'bool' %} {% if rating.value is not none %} {{ _('Yes') if rating.value else _('No') }} {% endif %} {% else %} {{ rating.value }} {% endif %}
  • {% endfor %}
{% if proposal.proposal_type == 'abstract' %} {{ render_ratings_details_titled_rule(review) }} {% else %} {% if review.comment %}
{% trans %}Comment{% endtrans %}
{% endif %} {% endif %}
{% endif %} {% if proposal.proposal_type == 'abstract' %} {{ render_ratings_details_extra(review) }} {% endif %} {% if review.comment %}
{{ review.comment }}
{% endif %}
{% endmacro %} {% macro _render_rating(rating_range, value) %} {%- for bullet in range(rating_range[0], rating_range[1] + 1) -%} {%- endfor -%} {% endmacro %}