<commit_before><!-- Buttons to add to the header. -->
<core-navbar-buttons slot="end">
    <core-context-menu>
        <core-context-menu-item *ngIf="externalUrl" [priority]="900" [content]="'core.openinbrowser' | translate"
            [href]="externalUrl" iconAction="fas-external-link-alt">
        </core-context-menu-item>
        <core-context-menu-item *ngIf="description" [priority]="800" [content]="'core.moduleintro' | translate"
            (action)="expandDescription()" iconAction="fas-arrow-right">
        </core-context-menu-item>
        <core-context-menu-item *ngIf="blog" [priority]="750" content="{{'addon.blog.blog' | translate}}"
            iconAction="far-newspaper" (action)="gotoBlog()">
        </core-context-menu-item>
        <core-context-menu-item *ngIf="loaded && !hasOffline && isOnline" [priority]="700" [content]="'core.refresh' | translate"
            (action)="doRefresh(null, $event)" [iconAction]="refreshIcon" [closeOnClick]="false">
        </core-context-menu-item>
        <core-context-menu-item *ngIf="loaded && hasOffline && isOnline" [priority]="600" (action)="doRefresh(null, $event, true)"
            [content]="'core.settings.synchronizenow' | translate" [iconAction]="syncIcon" [closeOnClick]="false">
        </core-context-menu-item>
        <core-context-menu-item *ngIf="prefetchStatusIcon" [priority]="500" [content]="prefetchText" (action)="prefetch($event)"
            [iconAction]="prefetchStatusIcon" [closeOnClick]="false">
        </core-context-menu-item>
        <core-context-menu-item *ngIf="size" [priority]="400" [content]="'core.clearstoreddata' | translate:{$a: size}"
            iconDescription="fas-archive" (action)="removeFiles($event)" iconAction="fas-trash" [closeOnClick]="false">
        </core-context-menu-item>
    </core-context-menu>
</core-navbar-buttons>

<!-- Content. -->
<core-loading [hideUntil]="loaded">

    <!-- Activity info. -->
    <core-course-module-info *ngIf="showCompletion" [module]="module" [showManualCompletion]="true"
        (completionChanged)="onCompletionChange()">
    </core-course-module-info>

    <core-course-module-description [description]="description" [component]="component" [componentId]="componentId"
        contextLevel="module" [contextInstanceId]="module.id" [courseId]="courseId">
    </core-course-module-description>

    <core-tabs [hideUntil]="tabsReady" [selectedIndex]="firstSelectedTab">
        <core-tab [title]="'addon.mod_feedback.overview' | translate" id="overview" (ionSelect)="tabChanged('overview')">
            <ng-template>
                <ng-container *ngTemplateOutlet="tabOverview"></ng-container>
            </ng-template>
        </core-tab>
        <core-tab *ngIf="showAnalysis && access && access.canviewreports" id="analysis"
            [title]="'addon.mod_feedback.analysis' | translate" (ionSelect)="tabChanged('analysis')">
            <ng-template>
                <ng-container *ngTemplateOutlet="tabAnalysis"></ng-container>
            </ng-template>
        </core-tab>

        <core-tab *ngIf="showAnalysis && access && !access.canviewreports" id="analysis"
            [title]="'addon.mod_feedback.completed_feedbacks' | translate" (ionSelect)="tabChanged('analysis')">
            <ng-template>
                <ng-container *ngTemplateOutlet="tabAnalysis"></ng-container>
            </ng-template>
        </core-tab>
    </core-tabs>
</core-loading>

<ng-template #basicInfo>
    <ion-list *ngIf="access && access.canviewanalysis && !access.isempty">
        <ion-item class="ion-text-wrap" *ngIf="groupInfo && (groupInfo.separateGroups || groupInfo.visibleGroups)">
            <ion-label id="addon-feedback-groupslabel">
                <ng-container *ngIf="groupInfo.separateGroups">{{'core.groupsseparate' | translate }}</ng-container>
                <ng-container *ngIf="groupInfo.visibleGroups">{{'core.groupsvisible' | translate }}</ng-container>
            </ion-label>
            <ion-select [(ngModel)]="group" (ionChange)="setGroup(group)" aria-labelledby="addon-feedback-groupslabel"
                interface="action-sheet">
                <ion-select-option *ngFor="let groupOpt of groupInfo.groups" [value]="groupOpt.id">
                    {{groupOpt.name}}
                </ion-select-option>
            </ion-select>
        </ion-item>
        <ion-item class="ion-text-wrap" (click)="openRespondents()" [detail]="access.canviewreports && completedCount > 0"
            button>
            <ion-label>
                <h2>{{ 'addon.mod_feedback.completed_feedbacks' | translate }}</h2>
            </ion-label>
            <ion-badge slot="end">
                <span aria-hidden="true">{{completedCount}}</span>
                <span class="sr-only">
                    {{ 'addon.mod_feedback.completedfeedbackscountdescription' | translate:{count: completedCount} }}
                </span>
            </ion-badge>
        </ion-item>
        <ion-item class="ion-text-wrap" *ngIf="!access.isanonymous && access.canviewreports" (click)="openNonRespondents()"
            detail="true" button>
            <ion-label>
                <h2>{{ 'addon.mod_feedback.show_nonrespondents' | translate }}</h2>
            </ion-label>
        </ion-item>
        <ion-item class="ion-text-wrap">
            <ion-label>
                <h2>{{ 'addon.mod_feedback.questions' | translate }}</h2>
            </ion-label>
            <ion-badge slot="end">
                <span aria-hidden="true">{{itemsCount}}</span>
                <span class="sr-only">
                    {{ 'addon.mod_feedback.questionscountdescription' | translate:{count: itemsCount} }}
                </span>
            </ion-badge><commit_msg>MOBILE-3320 feedback: Remove wrong click effect for students<commit_after><!-- Buttons to add to the header. -->
<core-navbar-buttons slot="end">
    <core-context-menu>
        <core-context-menu-item *ngIf="externalUrl" [priority]="900" [content]="'core.openinbrowser' | translate"
            [href]="externalUrl" iconAction="fas-external-link-alt">
        </core-context-menu-item>
        <core-context-menu-item *ngIf="description" [priority]="800" [content]="'core.moduleintro' | translate"
            (action)="expandDescription()" iconAction="fas-arrow-right">
        </core-context-menu-item>
        <core-context-menu-item *ngIf="blog" [priority]="750" content="{{'addon.blog.blog' | translate}}"
            iconAction="far-newspaper" (action)="gotoBlog()">
        </core-context-menu-item>
        <core-context-menu-item *ngIf="loaded && !hasOffline && isOnline" [priority]="700" [content]="'core.refresh' | translate"
            (action)="doRefresh(null, $event)" [iconAction]="refreshIcon" [closeOnClick]="false">
        </core-context-menu-item>
        <core-context-menu-item *ngIf="loaded && hasOffline && isOnline" [priority]="600" (action)="doRefresh(null, $event, true)"
            [content]="'core.settings.synchronizenow' | translate" [iconAction]="syncIcon" [closeOnClick]="false">
        </core-context-menu-item>
        <core-context-menu-item *ngIf="prefetchStatusIcon" [priority]="500" [content]="prefetchText" (action)="prefetch($event)"
            [iconAction]="prefetchStatusIcon" [closeOnClick]="false">
        </core-context-menu-item>
        <core-context-menu-item *ngIf="size" [priority]="400" [content]="'core.clearstoreddata' | translate:{$a: size}"
            iconDescription="fas-archive" (action)="removeFiles($event)" iconAction="fas-trash" [closeOnClick]="false">
        </core-context-menu-item>
    </core-context-menu>
</core-navbar-buttons>

<!-- Content. -->
<core-loading [hideUntil]="loaded">

    <!-- Activity info. -->
    <core-course-module-info *ngIf="showCompletion" [module]="module" [showManualCompletion]="true"
        (completionChanged)="onCompletionChange()">
    </core-course-module-info>

    <core-course-module-description [description]="description" [component]="component" [componentId]="componentId"
        contextLevel="module" [contextInstanceId]="module.id" [courseId]="courseId">
    </core-course-module-description>

    <core-tabs [hideUntil]="tabsReady" [selectedIndex]="firstSelectedTab">
        <core-tab [title]="'addon.mod_feedback.overview' | translate" id="overview" (ionSelect)="tabChanged('overview')">
            <ng-template>
                <ng-container *ngTemplateOutlet="tabOverview"></ng-container>
            </ng-template>
        </core-tab>
        <core-tab *ngIf="showAnalysis && access && access.canviewreports" id="analysis"
            [title]="'addon.mod_feedback.analysis' | translate" (ionSelect)="tabChanged('analysis')">
            <ng-template>
                <ng-container *ngTemplateOutlet="tabAnalysis"></ng-container>
            </ng-template>
        </core-tab>

        <core-tab *ngIf="showAnalysis && access && !access.canviewreports" id="analysis"
            [title]="'addon.mod_feedback.completed_feedbacks' | translate" (ionSelect)="tabChanged('analysis')">
            <ng-template>
                <ng-container *ngTemplateOutlet="tabAnalysis"></ng-container>
            </ng-template>
        </core-tab>
    </core-tabs>
</core-loading>

<ng-template #basicInfo>
    <ion-list *ngIf="access && access.canviewanalysis && !access.isempty">
        <ion-item class="ion-text-wrap" *ngIf="groupInfo && (groupInfo.separateGroups || groupInfo.visibleGroups)">
            <ion-label id="addon-feedback-groupslabel">
                <ng-container *ngIf="groupInfo.separateGroups">{{'core.groupsseparate' | translate }}</ng-container>
                <ng-container *ngIf="groupInfo.visibleGroups">{{'core.groupsvisible' | translate }}</ng-container>
            </ion-label>
            <ion-select [(ngModel)]="group" (ionChange)="setGroup(group)" aria-labelledby="addon-feedback-groupslabel"
                interface="action-sheet">
                <ion-select-option *ngFor="let groupOpt of groupInfo.groups" [value]="groupOpt.id">
                    {{groupOpt.name}}
                </ion-select-option>
            </ion-select>
        </ion-item>
        <ion-item class="ion-text-wrap" (click)="openRespondents()" [detail]="access.canviewreports && completedCount > 0"
            [button]="access.canviewreports && completedCount > 0">
            <ion-label>
                <h2>{{ 'addon.mod_feedback.completed_feedbacks' | translate }}</h2>
            </ion-label>
            <ion-badge slot="end">
                <span aria-hidden="true">{{completedCount}}</span>
                <span class="sr-only">
                    {{ 'addon.mod_feedback.completedfeedbackscountdescription' | translate:{count: completedCount} }}
                </span>
            </ion-badge>
        </ion-item>
        <ion-item class="ion-text-wrap" *ngIf="!access.isanonymous && access.canviewreports" (click)="openNonRespondents()"
            detail="true" button>
            <ion-label>
                <h2>{{ 'addon.mod_feedback.show_nonrespondents' | translate }}</h2>
            </ion-label>
        </ion-item>
        <ion-item class="ion-text-wrap">
            <ion-label>
                <h2>{{ 'addon.mod_feedback.questions' | translate }}</h2>
            </ion-label>
            <ion-badge slot="end">
                <span aria-hidden="true">{{itemsCount}}</span>
                <span class="sr-only">
                    {{ 'addon.mod_feedback.questionscountdescription' | translate:{count: itemsCount} }}
                </span>
            </ion-badge>
{'fraction_non_alphanumeric': 0.17563469370071919, 'fraction_numerical': 0.005285503855818386, 'mean_word_length': 2.8422103861517978, 'pattern_counts': {'":': 0, '<': 183, '<?xml version=': 0, '>': 186, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5045311', 'n_tokens_mistral': 3566, 'n_tokens_neox': 3381, 'n_words': 478}