commit
						42947cb3c1
					
				| @ -19,7 +19,7 @@ | |||||||
|         </ion-item-group> |         </ion-item-group> | ||||||
| 
 | 
 | ||||||
|         <ion-item-group *ngIf="user.fullname"> |         <ion-item-group *ngIf="user.fullname"> | ||||||
|             <ion-item-divider color="light"> |             <ion-item-divider> | ||||||
|                 <h2>{{ 'addon.badges.recipientdetails' | translate}}</h2> |                 <h2>{{ 'addon.badges.recipientdetails' | translate}}</h2> | ||||||
|             </ion-item-divider> |             </ion-item-divider> | ||||||
|             <ion-item text-wrap> |             <ion-item text-wrap> | ||||||
| @ -31,7 +31,7 @@ | |||||||
|         </ion-item-group> |         </ion-item-group> | ||||||
| 
 | 
 | ||||||
|         <ion-item-group> |         <ion-item-group> | ||||||
|             <ion-item-divider color="light"> |             <ion-item-divider> | ||||||
|                 <h2>{{ 'addon.badges.issuerdetails' | translate}}</h2> |                 <h2>{{ 'addon.badges.issuerdetails' | translate}}</h2> | ||||||
|             </ion-item-divider> |             </ion-item-divider> | ||||||
|             <ion-item text-wrap *ngIf="badge.issuername"> |             <ion-item text-wrap *ngIf="badge.issuername"> | ||||||
| @ -49,7 +49,7 @@ | |||||||
|         </ion-item-group> |         </ion-item-group> | ||||||
| 
 | 
 | ||||||
|         <ion-item-group> |         <ion-item-group> | ||||||
|             <ion-item-divider color="light"> |             <ion-item-divider> | ||||||
|                 <h2>{{ 'addon.badges.badgedetails' | translate}}</h2> |                 <h2>{{ 'addon.badges.badgedetails' | translate}}</h2> | ||||||
|             </ion-item-divider> |             </ion-item-divider> | ||||||
|             <ion-item text-wrap *ngIf="badge.name"> |             <ion-item text-wrap *ngIf="badge.name"> | ||||||
| @ -100,7 +100,7 @@ | |||||||
|         </ion-item-group> |         </ion-item-group> | ||||||
| 
 | 
 | ||||||
|         <ion-item-group> |         <ion-item-group> | ||||||
|             <ion-item-divider color="light"> |             <ion-item-divider> | ||||||
|                 <h2>{{ 'addon.badges.issuancedetails' | translate}}</h2> |                 <h2>{{ 'addon.badges.issuancedetails' | translate}}</h2> | ||||||
|             </ion-item-divider> |             </ion-item-divider> | ||||||
|             <ion-item text-wrap *ngIf="badge.dateissued"> |             <ion-item text-wrap *ngIf="badge.dateissued"> | ||||||
| @ -121,7 +121,7 @@ | |||||||
| 
 | 
 | ||||||
|         <!-- Endorsement --> |         <!-- Endorsement --> | ||||||
|         <ion-item-group *ngIf="badge.endorsement"> |         <ion-item-group *ngIf="badge.endorsement"> | ||||||
|             <ion-item-divider color="light"> |             <ion-item-divider> | ||||||
|                 <h2>{{ 'addon.badges.bendorsement' | translate}}</h2> |                 <h2>{{ 'addon.badges.bendorsement' | translate}}</h2> | ||||||
|             </ion-item-divider> |             </ion-item-divider> | ||||||
|             <ion-item text-wrap *ngIf="badge.endorsement.issuername"> |             <ion-item text-wrap *ngIf="badge.endorsement.issuername"> | ||||||
| @ -160,7 +160,7 @@ | |||||||
| 
 | 
 | ||||||
|         <!-- Related badges --> |         <!-- Related badges --> | ||||||
|         <ion-item-group *ngIf="badge.relatedbadges"> |         <ion-item-group *ngIf="badge.relatedbadges"> | ||||||
|             <ion-item-divider color="light"> |             <ion-item-divider> | ||||||
|                 <h2>{{ 'addon.badges.relatedbages' | translate}}</h2> |                 <h2>{{ 'addon.badges.relatedbages' | translate}}</h2> | ||||||
|             </ion-item-divider> |             </ion-item-divider> | ||||||
|             <ion-item text-wrap *ngFor="let relatedBadge of badge.relatedbadges"> |             <ion-item text-wrap *ngFor="let relatedBadge of badge.relatedbadges"> | ||||||
| @ -173,7 +173,7 @@ | |||||||
| 
 | 
 | ||||||
|         <!-- Competencies alignment --> |         <!-- Competencies alignment --> | ||||||
|         <ion-item-group *ngIf="badge.competencies"> |         <ion-item-group *ngIf="badge.competencies"> | ||||||
|             <ion-item-divider color="light"> |             <ion-item-divider> | ||||||
|                 <h2>{{ 'addon.badges.alignment' | translate}}</h2> |                 <h2>{{ 'addon.badges.alignment' | translate}}</h2> | ||||||
|             </ion-item-divider> |             </ion-item-divider> | ||||||
|             <a ion-item text-wrap *ngFor="let competency of badge.competencies" [href]="competency.targeturl" core-link auto-login="no"> |             <a ion-item text-wrap *ngFor="let competency of badge.competencies" [href]="competency.targeturl" core-link auto-login="no"> | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| <ion-item-divider color="light"> | <ion-item-divider> | ||||||
|     <h2>{{ 'addon.block_activitymodules.pluginname' | translate }}</h2> |     <h2>{{ 'addon.block_activitymodules.pluginname' | translate }}</h2> | ||||||
| </ion-item-divider> | </ion-item-divider> | ||||||
| <core-loading [hideUntil]="loaded" class="core-loading-center"> | <core-loading [hideUntil]="loaded" class="core-loading-center"> | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| <ion-item-divider color="light"> | <ion-item-divider> | ||||||
|     <h2>{{ 'addon.block_myoverview.pluginname' | translate }}</h2> |     <h2>{{ 'addon.block_myoverview.pluginname' | translate }}</h2> | ||||||
|     <!-- Download all courses. --> |     <!-- Download all courses. --> | ||||||
|     <div *ngIf="downloadEnabled && courses[selectedFilter] && courses[selectedFilter].length > 1 && !showFilter" class="core-button-spinner" item-end> |     <div *ngIf="downloadEnabled && courses[selectedFilter] && courses[selectedFilter].length > 1 && !showFilter" class="core-button-spinner" item-end> | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| <ion-item-divider color="light"> | <ion-item-divider> | ||||||
|     <h2>{{ 'addon.block_recentlyaccessedcourses.pluginname' | translate }}</h2> |     <h2>{{ 'addon.block_recentlyaccessedcourses.pluginname' | translate }}</h2> | ||||||
|     <div *ngIf="downloadEnabled && courses && courses.length > 1" class="core-button-spinner" item-end> |     <div *ngIf="downloadEnabled && courses && courses.length > 1" class="core-button-spinner" item-end> | ||||||
|         <button *ngIf="prefetchCoursesData.icon && prefetchCoursesData.icon != 'spinner'" ion-button icon-only clear color="dark" (click)="prefetchCourses()"> |         <button *ngIf="prefetchCoursesData.icon && prefetchCoursesData.icon != 'spinner'" ion-button icon-only clear color="dark" (click)="prefetchCourses()"> | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| <ion-item-divider color="light"> | <ion-item-divider> | ||||||
|     <h2>{{ 'addon.block_recentlyaccesseditems.pluginname' | translate }}</h2> |     <h2>{{ 'addon.block_recentlyaccesseditems.pluginname' | translate }}</h2> | ||||||
| </ion-item-divider> | </ion-item-divider> | ||||||
| <core-loading [hideUntil]="loaded" class="core-loading-center"> | <core-loading [hideUntil]="loaded" class="core-loading-center"> | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| <ion-item-divider color="light"> | <ion-item-divider> | ||||||
|     <h2>{{ 'addon.block_sitemainmenu.pluginname' | translate }}</h2> |     <h2>{{ 'addon.block_sitemainmenu.pluginname' | translate }}</h2> | ||||||
| </ion-item-divider> | </ion-item-divider> | ||||||
| <core-loading [hideUntil]="loaded" class="core-loading-center"> | <core-loading [hideUntil]="loaded" class="core-loading-center"> | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| <ion-item-divider color="light"> | <ion-item-divider> | ||||||
|     <h2>{{ 'addon.block_starredcourses.pluginname' | translate }}</h2> |     <h2>{{ 'addon.block_starredcourses.pluginname' | translate }}</h2> | ||||||
|     <div *ngIf="downloadEnabled && courses && courses.length > 1" class="core-button-spinner" item-end> |     <div *ngIf="downloadEnabled && courses && courses.length > 1" class="core-button-spinner" item-end> | ||||||
|         <button *ngIf="prefetchCoursesData.icon && prefetchCoursesData.icon != 'spinner'" ion-button icon-only clear color="dark" (click)="prefetchCourses()"> |         <button *ngIf="prefetchCoursesData.icon && prefetchCoursesData.icon != 'spinner'" ion-button icon-only clear color="dark" (click)="prefetchCourses()"> | ||||||
|  | |||||||
| @ -3,13 +3,24 @@ | |||||||
|         <h2>{{ dayEvents.dayTimestamp * 1000 | coreFormatDate:"strftimedayshort" }}</h2> |         <h2>{{ dayEvents.dayTimestamp * 1000 | coreFormatDate:"strftimedayshort" }}</h2> | ||||||
|     </ion-item-divider> |     </ion-item-divider> | ||||||
|     <ng-container *ngFor="let event of dayEvents.events"> |     <ng-container *ngFor="let event of dayEvents.events"> | ||||||
|         <a ion-item text-wrap detail-none class="core-course-module-handler item-media" (click)="action($event, event)" [title]="event.action.actionable ? event.action.name: event.name"> |         <a ion-item text-wrap detail-none class="core-course-module-handler item-media" (click)="action($event, event.url)" [title]="event.name"> | ||||||
|             <img item-start [src]="event.iconUrl" core-external-content alt="" role="presentation" *ngIf="event.iconUrl" class="core-module-icon"> |             <img item-start [src]="event.iconUrl" core-external-content alt="" role="presentation" *ngIf="event.iconUrl" class="core-module-icon"> | ||||||
|             <h2><core-format-text [text]="event.name"></core-format-text></h2> |             <h2><core-format-text [text]="event.name"></core-format-text></h2> | ||||||
|             <p *ngIf="showCourse"> |             <p *ngIf="showCourse"> | ||||||
|                 <core-format-text [text]="event.course.fullnamedisplay"></core-format-text> |                 <core-format-text [text]="event.course.fullnamedisplay"></core-format-text> | ||||||
|             </p> |             </p> | ||||||
|  | 
 | ||||||
|  |             <button ion-button clear class="hidden-tablet" (click)="action($event, event.action.url)" [title]="event.action.name" [disabled]="!event.action.actionable" *ngIf="event.action"> | ||||||
|  |                 {{event.action.name}} | ||||||
|  |                 <ion-badge item-end margin-start *ngIf="event.action.showitemcount">{{event.action.itemcount}}</ion-badge> | ||||||
|  |             </button> | ||||||
|  | 
 | ||||||
|             <ion-badge color="light" item-end>{{event.timesort * 1000 | coreFormatDate:"strftimetime24" }}</ion-badge> |             <ion-badge color="light" item-end>{{event.timesort * 1000 | coreFormatDate:"strftimetime24" }}</ion-badge> | ||||||
|  | 
 | ||||||
|  |             <button ion-button clear item-end class="hidden-phone" (click)="action($event, event.action.url)" [title]="event.action.name" [disabled]="!event.action.actionable" *ngIf="event.action"> | ||||||
|  |                 {{event.action.name}} | ||||||
|  |                 <ion-badge item-end margin-start *ngIf="event.action.showitemcount">{{event.action.itemcount}}</ion-badge> | ||||||
|  |             </button> | ||||||
|         </a> |         </a> | ||||||
|     </ng-container> |     </ng-container> | ||||||
| </ion-item-group> | </ion-item-group> | ||||||
| @ -22,4 +33,4 @@ | |||||||
|     <ion-spinner *ngIf="loadingMore"></ion-spinner> |     <ion-spinner *ngIf="loadingMore"></ion-spinner> | ||||||
| </div> | </div> | ||||||
| 
 | 
 | ||||||
| <core-empty-box *ngIf="empty" image="assets/img/icons/activities.svg" [message]="'addon.block_timeline.noevents' | translate" [inline]="!showCourse"></core-empty-box> | <core-empty-box *ngIf="empty" image="assets/img/icons/activities.svg" [message]="'addon.block_timeline.noevents' | translate" [inline]="!showCourse"></core-empty-box> | ||||||
| @ -21,4 +21,8 @@ ion-app.app-root core-courses-course-progress { | |||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | ion-app.app-root addon-block-timeline-events { | ||||||
|  |     a button { | ||||||
|  |         pointer-events: auto; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | |||||||
| @ -122,19 +122,14 @@ export class AddonBlockTimelineEventsComponent implements OnChanges { | |||||||
|      * Action clicked. |      * Action clicked. | ||||||
|      * |      * | ||||||
|      * @param {Event} e     Click event. |      * @param {Event} e     Click event. | ||||||
|      * @param {any} event   Calendar event info. |      * @param {string} url  Url of the action. | ||||||
|      */ |      */ | ||||||
|     action(e: Event, event: any): void { |     action(e: Event, url: string): void { | ||||||
|         e.preventDefault(); |         e.preventDefault(); | ||||||
|         e.stopPropagation(); |         e.stopPropagation(); | ||||||
|         let url; |  | ||||||
| 
 | 
 | ||||||
|         if (event.action.actionable) { |         // Fix URL format.
 | ||||||
|             // Fix URL format.
 |         url = this.textUtils.decodeHTMLEntities(url); | ||||||
|             url = this.textUtils.decodeHTMLEntities(event.action.url); |  | ||||||
|         } else { |  | ||||||
|             url = this.textUtils.decodeHTMLEntities(event.url); |  | ||||||
|         } |  | ||||||
| 
 | 
 | ||||||
|         const modal = this.domUtils.showModalLoading(); |         const modal = this.domUtils.showModalLoading(); | ||||||
|         this.contentLinksHelper.handleLink(url, undefined, this.navCtrl).then((treated) => { |         this.contentLinksHelper.handleLink(url, undefined, this.navCtrl).then((treated) => { | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| <ion-item-divider color="light"> | <ion-item-divider> | ||||||
|     <h2>{{ 'addon.block_timeline.pluginname' | translate }}</h2> |     <h2>{{ 'addon.block_timeline.pluginname' | translate }}</h2> | ||||||
|     <core-context-menu item-end> |     <core-context-menu item-end> | ||||||
|         <core-context-menu-item *ngIf="loaded" [priority]="900" [content]="'addon.block_timeline.sortbydates' | translate" (action)="switchSort('sortbydates')" [iconAction]="sort == 'sortbydates' ? 'radio-button-on' : 'radio-button-off'"></core-context-menu-item> |         <core-context-menu-item *ngIf="loaded" [priority]="900" [content]="'addon.block_timeline.sortbydates' | translate" (action)="switchSort('sortbydates')" [iconAction]="sort == 'sortbydates' ? 'radio-button-on' : 'radio-button-off'"></core-context-menu-item> | ||||||
|  | |||||||
| @ -12,7 +12,7 @@ | |||||||
| 
 | 
 | ||||||
|         <ion-list *ngFor="let contactType of contactTypes" no-margin> |         <ion-list *ngFor="let contactType of contactTypes" no-margin> | ||||||
|             <ng-container *ngIf="contacts[contactType] && (contacts[contactType].length > 0 || contactType === searchType)"> |             <ng-container *ngIf="contacts[contactType] && (contacts[contactType].length > 0 || contactType === searchType)"> | ||||||
|                 <ion-item-divider color="light"> |                 <ion-item-divider> | ||||||
|                     <h2>{{ 'addon.messages.type_' + contactType | translate }}</h2> |                     <h2>{{ 'addon.messages.type_' + contactType | translate }}</h2> | ||||||
|                     <ion-note item-end>{{ contacts[contactType].length }}</ion-note> |                     <ion-note item-end>{{ contacts[contactType].length }}</ion-note> | ||||||
|                 </ion-item-divider> |                 </ion-item-divider> | ||||||
|  | |||||||
| @ -8,7 +8,7 @@ | |||||||
|     <core-loading [hideUntil]="loaded" [message]="loadingMessage"> |     <core-loading [hideUntil]="loaded" [message]="loadingMessage"> | ||||||
| 
 | 
 | ||||||
|         <ion-list *ngIf="search.showResults" no-margin> |         <ion-list *ngIf="search.showResults" no-margin> | ||||||
|             <ion-item-divider color="light"> |             <ion-item-divider> | ||||||
|                 <h2>{{ 'core.searchresults' | translate }}</h2> |                 <h2>{{ 'core.searchresults' | translate }}</h2> | ||||||
|                 <ion-note item-end>{{ search.results.length }}</ion-note> |                 <ion-note item-end>{{ search.results.length }}</ion-note> | ||||||
|             </ion-item-divider> |             </ion-item-divider> | ||||||
|  | |||||||
| @ -129,7 +129,6 @@ ion-app.app-root page-addon-messages-discussion { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     .addon-messages-discussion-group .addon-message + .addon-message-no-user, |  | ||||||
|     .addon-message.addon-message-mine + .addon-message-no-user.addon-message-mine, |     .addon-message.addon-message-mine + .addon-message-no-user.addon-message-mine, | ||||||
|     .addon-message.addon-message-not-mine + .addon-message-no-user.addon-message-not-mine { |     .addon-message.addon-message-not-mine + .addon-message-no-user.addon-message-not-mine { | ||||||
|         h2 { |         h2 { | ||||||
|  | |||||||
| @ -20,14 +20,14 @@ | |||||||
|         </ion-refresher> |         </ion-refresher> | ||||||
| 
 | 
 | ||||||
|         <core-loading [hideUntil]="loaded" [message]="loadingMessage"> |         <core-loading [hideUntil]="loaded" [message]="loadingMessage"> | ||||||
|             <a ion-item text-wrap (click)="gotoContacts($event)" [attr.aria-label]="'addon.messages.contacts' | translate" class="addon-message-discussion"> |  | ||||||
|                 <ion-icon name="person" item-start></ion-icon> |  | ||||||
|                 <h2>{{ 'addon.messages.contacts' | translate }}</h2> |  | ||||||
|                 <ion-badge *ngIf="contactRequestsCount > 0" item-end>{{contactRequestsCount}}</ion-badge> |  | ||||||
|             </a> |  | ||||||
|             <ion-list> |             <ion-list> | ||||||
|  |                 <a ion-item text-wrap (click)="gotoContacts($event)" [attr.aria-label]="'addon.messages.contacts' | translate" class="addon-message-discussion"> | ||||||
|  |                     <ion-icon name="person" item-start></ion-icon> | ||||||
|  |                     <h2>{{ 'addon.messages.contacts' | translate }}</h2> | ||||||
|  |                     <ion-badge *ngIf="contactRequestsCount > 0" item-end>{{contactRequestsCount}}</ion-badge> | ||||||
|  |                 </a> | ||||||
|                 <!-- Favourite conversations. --> |                 <!-- Favourite conversations. --> | ||||||
|                 <ion-item-divider color="light" text-wrap *ngIf="favourites.conversations" (click)="toggle(favourites)" class="core-expandable"> |                 <ion-item-divider text-wrap *ngIf="favourites.conversations" (click)="toggle(favourites)" class="core-expandable"> | ||||||
|                     <core-icon *ngIf="!favourites.expanded" name="fa-caret-right" item-start></core-icon> |                     <core-icon *ngIf="!favourites.expanded" name="fa-caret-right" item-start></core-icon> | ||||||
|                     <core-icon *ngIf="favourites.expanded" name="fa-caret-down" item-start></core-icon> |                     <core-icon *ngIf="favourites.expanded" name="fa-caret-down" item-start></core-icon> | ||||||
|                     {{ 'core.favourites' | translate }} ({{ favourites.count }}) |                     {{ 'core.favourites' | translate }} ({{ favourites.count }}) | ||||||
| @ -43,7 +43,7 @@ | |||||||
|                 </div> |                 </div> | ||||||
| 
 | 
 | ||||||
|                 <!-- Group conversations. --> |                 <!-- Group conversations. --> | ||||||
|                 <ion-item-divider color="light" text-wrap *ngIf="group.conversations" (click)="toggle(group)" class="core-expandable"> |                 <ion-item-divider text-wrap *ngIf="group.conversations" (click)="toggle(group)" class="core-expandable"> | ||||||
|                     <core-icon *ngIf="!group.expanded" name="fa-caret-right" item-start></core-icon> |                     <core-icon *ngIf="!group.expanded" name="fa-caret-right" item-start></core-icon> | ||||||
|                     <core-icon *ngIf="group.expanded" name="fa-caret-down" item-start></core-icon> |                     <core-icon *ngIf="group.expanded" name="fa-caret-down" item-start></core-icon> | ||||||
|                     {{ 'addon.messages.groupconversations' | translate }} ({{ group.count }}) |                     {{ 'addon.messages.groupconversations' | translate }} ({{ group.count }}) | ||||||
| @ -58,7 +58,7 @@ | |||||||
|                     </ion-item> |                     </ion-item> | ||||||
|                 </div> |                 </div> | ||||||
| 
 | 
 | ||||||
|                 <ion-item-divider color="light" text-wrap *ngIf="individual.conversations" (click)="toggle(individual)" class="core-expandable"> |                 <ion-item-divider text-wrap *ngIf="individual.conversations" (click)="toggle(individual)" class="core-expandable"> | ||||||
|                     <core-icon *ngIf="!individual.expanded" name="fa-caret-right" item-start></core-icon> |                     <core-icon *ngIf="!individual.expanded" name="fa-caret-right" item-start></core-icon> | ||||||
|                     <core-icon *ngIf="individual.expanded" name="fa-caret-down" item-start></core-icon> |                     <core-icon *ngIf="individual.expanded" name="fa-caret-down" item-start></core-icon> | ||||||
|                     {{ 'addon.messages.individualconversations' | translate }} ({{ individual.count }}) |                     {{ 'addon.messages.individualconversations' | translate }} ({{ individual.count }}) | ||||||
|  | |||||||
| @ -24,7 +24,7 @@ | |||||||
| 
 | 
 | ||||||
| <!-- Template to render a list of results --> | <!-- Template to render a list of results --> | ||||||
| <ng-template #resultsTemplate let-item="item"> | <ng-template #resultsTemplate let-item="item"> | ||||||
|     <ion-item-divider color="light" text-wrap>{{ item.titleString | translate }}</ion-item-divider> |     <ion-item-divider text-wrap>{{ item.titleString | translate }}</ion-item-divider> | ||||||
|     <ion-item text-wrap *ngIf="item.results.length == 0"> |     <ion-item text-wrap *ngIf="item.results.length == 0"> | ||||||
|         {{ item.emptyString | translate }} |         {{ item.emptyString | translate }} | ||||||
|     </ion-item> |     </ion-item> | ||||||
|  | |||||||
| @ -16,7 +16,7 @@ | |||||||
|             </ion-item> |             </ion-item> | ||||||
| 
 | 
 | ||||||
|             <ion-list *ngIf="advancedContactable" text-wrap radio-group [(ngModel)]="contactablePrivacy" (ionChange)="saveContactablePrivacy(contactablePrivacy)"> |             <ion-list *ngIf="advancedContactable" text-wrap radio-group [(ngModel)]="contactablePrivacy" (ionChange)="saveContactablePrivacy(contactablePrivacy)"> | ||||||
|                 <ion-item-divider color="light">{{ 'addon.messages.contactableprivacy' | translate }}</ion-item-divider> |                 <ion-item-divider>{{ 'addon.messages.contactableprivacy' | translate }}</ion-item-divider> | ||||||
|                 <ion-item> |                 <ion-item> | ||||||
|                     <ion-label>{{ 'addon.messages.contactableprivacy_onlycontacts' | translate }}</ion-label> |                     <ion-label>{{ 'addon.messages.contactableprivacy_onlycontacts' | translate }}</ion-label> | ||||||
|                     <ion-radio [value]="onlyContactsValue"></ion-radio> |                     <ion-radio [value]="onlyContactsValue"></ion-radio> | ||||||
| @ -35,7 +35,7 @@ | |||||||
|         <ng-container *ngIf="preferences"> |         <ng-container *ngIf="preferences"> | ||||||
|             <div *ngFor="let component of preferences.components"> |             <div *ngFor="let component of preferences.components"> | ||||||
|                 <ion-card list *ngFor="let notification of component.notifications"> |                 <ion-card list *ngFor="let notification of component.notifications"> | ||||||
|                     <ion-item-divider color="light" text-wrap> |                     <ion-item-divider text-wrap> | ||||||
|                         <ion-row no-padding> |                         <ion-row no-padding> | ||||||
|                             <ng-container *ngIf="!groupMessagingEnabled"> |                             <ng-container *ngIf="!groupMessagingEnabled"> | ||||||
|                                 <ion-col no-padding>{{ notification.displayname }}</ion-col> |                                 <ion-col no-padding>{{ notification.displayname }}</ion-col> | ||||||
|  | |||||||
| @ -14,6 +14,6 @@ | |||||||
| 
 | 
 | ||||||
| <!-- Edit --> | <!-- Edit --> | ||||||
| <div *ngIf="edit"> | <div *ngIf="edit"> | ||||||
|     <ion-item-divider text-wrap color="light">{{plugin.name}}</ion-item-divider> |     <ion-item-divider text-wrap>{{plugin.name}}</ion-item-divider> | ||||||
|     <core-attachments [files]="files" [maxSize]="configs.maxsubmissionsizebytes" [maxSubmissions]="configs.maxfilesubmissions" [component]="component" [componentId]="assign.cmid" [acceptedTypes]="configs.filetypeslist" [allowOffline]="allowOffline"></core-attachments> |     <core-attachments [files]="files" [maxSize]="configs.maxsubmissionsizebytes" [maxSubmissions]="configs.maxfilesubmissions" [component]="component" [componentId]="assign.cmid" [acceptedTypes]="configs.filetypeslist" [allowOffline]="allowOffline"></core-attachments> | ||||||
| </div> | </div> | ||||||
|  | |||||||
| @ -9,7 +9,7 @@ | |||||||
| 
 | 
 | ||||||
| <!-- Edit --> | <!-- Edit --> | ||||||
| <div *ngIf="edit && loaded"> | <div *ngIf="edit && loaded"> | ||||||
|     <ion-item-divider text-wrap color="light">{{ plugin.name }}</ion-item-divider> |     <ion-item-divider text-wrap>{{ plugin.name }}</ion-item-divider> | ||||||
|     <ion-item text-wrap *ngIf="configs.wordlimitenabled && words >= 0"> |     <ion-item text-wrap *ngIf="configs.wordlimitenabled && words >= 0"> | ||||||
|         <h2>{{ 'addon.mod_assign.wordlimit' | translate }}</h2> |         <h2>{{ 'addon.mod_assign.wordlimit' | translate }}</h2> | ||||||
|         <p>{{ 'core.numwords' | translate: {'$a': words + ' / ' + configs.wordlimit} }}</p> |         <p>{{ 'core.numwords' | translate: {'$a': words + ' / ' + configs.wordlimit} }}</p> | ||||||
|  | |||||||
| @ -62,7 +62,7 @@ | |||||||
| 
 | 
 | ||||||
|     <!-- Choice results --> |     <!-- Choice results --> | ||||||
|     <div *ngIf="canSeeResults"> |     <div *ngIf="canSeeResults"> | ||||||
|         <ion-item-divider color="light" text-center> |         <ion-item-divider text-center> | ||||||
|             {{ 'addon.mod_choice.responses' | translate }} |             {{ 'addon.mod_choice.responses' | translate }} | ||||||
|         </ion-item-divider> |         </ion-item-divider> | ||||||
|         <ion-grid no-padding> |         <ion-grid no-padding> | ||||||
| @ -77,7 +77,7 @@ | |||||||
|                 </ion-col> |                 </ion-col> | ||||||
|                 <ion-col *ngIf="choice.publish && results" col-12 col-lg-7> |                 <ion-col *ngIf="choice.publish && results" col-12 col-lg-7> | ||||||
|                     <ion-item-group *ngFor="let result of results"> |                     <ion-item-group *ngFor="let result of results"> | ||||||
|                         <ion-item-divider text-wrap color="light"> |                         <ion-item-divider text-wrap> | ||||||
|                             <h2><core-format-text [text]="result.text"></core-format-text></h2> |                             <h2><core-format-text [text]="result.text"></core-format-text></h2> | ||||||
|                             <p>{{ 'addon.mod_choice.numberofuser' | translate }}: {{ result.numberofuser }} ({{ 'core.percentagenumber' | translate: {$a: result.percentageamount} }})</p> |                             <p>{{ 'addon.mod_choice.numberofuser' | translate }}: {{ result.numberofuser }} ({{ 'core.percentagenumber' | translate: {$a: result.percentageamount} }})</p> | ||||||
|                         </ion-item-divider> |                         </ion-item-divider> | ||||||
|  | |||||||
| @ -18,7 +18,7 @@ | |||||||
|             </ion-item > |             </ion-item > | ||||||
|             <ng-container *ngIf="items && items.length"> |             <ng-container *ngIf="items && items.length"> | ||||||
|                 <ng-container *ngFor="let item of items"> |                 <ng-container *ngFor="let item of items"> | ||||||
|                     <ion-item-divider *ngIf="item.typ == 'pagebreak'" color="light"></ion-item-divider> |                     <ion-item-divider *ngIf="item.typ == 'pagebreak'"></ion-item-divider> | ||||||
|                     <ion-item text-wrap *ngIf="item.typ != 'pagebreak'" [color]="item.dependitem > 0 ? 'light' : ''"> |                     <ion-item text-wrap *ngIf="item.typ != 'pagebreak'" [color]="item.dependitem > 0 ? 'light' : ''"> | ||||||
|                         <h2 *ngIf="item.name" [core-mark-required]="item.required"> |                         <h2 *ngIf="item.name" [core-mark-required]="item.required"> | ||||||
|                             <span *ngIf="feedback.autonumbering && item.itemnumber">{{item.itemnumber}}. </span><core-format-text  [component]="component" [componentId]="componentId" [text]="item.name"></core-format-text> |                             <span *ngIf="feedback.autonumbering && item.itemnumber">{{item.itemnumber}}. </span><core-format-text  [component]="component" [componentId]="componentId" [text]="item.name"></core-format-text> | ||||||
|  | |||||||
| @ -13,7 +13,7 @@ | |||||||
|                     <p *ngIf="!access.isanonymous">{{ 'addon.mod_feedback.non_anonymous' | translate }}</p> |                     <p *ngIf="!access.isanonymous">{{ 'addon.mod_feedback.non_anonymous' | translate }}</p> | ||||||
|                 </ion-item> |                 </ion-item> | ||||||
|                 <ng-container *ngFor="let item of items"> |                 <ng-container *ngFor="let item of items"> | ||||||
|                     <ion-item-divider *ngIf="item.typ == 'pagebreak'" color="light"></ion-item-divider> |                     <ion-item-divider *ngIf="item.typ == 'pagebreak'"></ion-item-divider> | ||||||
|                     <ion-item text-wrap *ngIf="item.typ != 'pagebreak'" [color]="item.dependitem > 0 ? 'light' : ''" [class.core-danger-item]="item.isEmpty || item.hasError"> |                     <ion-item text-wrap *ngIf="item.typ != 'pagebreak'" [color]="item.dependitem > 0 ? 'light' : ''" [class.core-danger-item]="item.isEmpty || item.hasError"> | ||||||
|                         <ion-label *ngIf="item.name" [core-mark-required]="item.required" stacked> |                         <ion-label *ngIf="item.name" [core-mark-required]="item.required" stacked> | ||||||
|                             <span *ngIf="feedback.autonumbering && item.itemnumber">{{item.itemnumber}}. </span> |                             <span *ngIf="feedback.autonumbering && item.itemnumber">{{item.itemnumber}}. </span> | ||||||
|  | |||||||
| @ -16,7 +16,7 @@ | |||||||
|                     <ion-option *ngFor="let groupOpt of groupInfo.groups" [value]="groupOpt.id">{{groupOpt.name}}</ion-option> |                     <ion-option *ngFor="let groupOpt of groupInfo.groups" [value]="groupOpt.id">{{groupOpt.name}}</ion-option> | ||||||
|                 </ion-select> |                 </ion-select> | ||||||
|             </ion-item> |             </ion-item> | ||||||
|             <ion-item-divider color="light"> |             <ion-item-divider> | ||||||
|                 {{ 'addon.mod_feedback.non_respondents_students' | translate : {$a: total } }} |                 {{ 'addon.mod_feedback.non_respondents_students' | translate : {$a: total } }} | ||||||
|             </ion-item-divider> |             </ion-item-divider> | ||||||
|             <ng-container *ngIf="total > 0"> |             <ng-container *ngIf="total > 0"> | ||||||
|  | |||||||
| @ -18,7 +18,7 @@ | |||||||
|                     </ion-select> |                     </ion-select> | ||||||
|                 </ion-item> |                 </ion-item> | ||||||
|                 <ng-container *ngIf="responses.total > 0"> |                 <ng-container *ngIf="responses.total > 0"> | ||||||
|                     <ion-item-divider color="light"> |                     <ion-item-divider> | ||||||
|                         {{ 'addon.mod_feedback.non_anonymous_entries' | translate : {$a: responses.total } }} |                         {{ 'addon.mod_feedback.non_anonymous_entries' | translate : {$a: responses.total } }} | ||||||
|                     </ion-item-divider> |                     </ion-item-divider> | ||||||
|                     <a *ngFor="let attempt of responses.attempts" ion-item text-wrap (click)="gotoAttempt(attempt)" [class.core-split-item-selected]="attempt.id == attemptId"> |                     <a *ngFor="let attempt of responses.attempts" ion-item text-wrap (click)="gotoAttempt(attempt)" [class.core-split-item-selected]="attempt.id == attemptId"> | ||||||
| @ -33,7 +33,7 @@ | |||||||
|                     </ion-item> |                     </ion-item> | ||||||
|                 </ng-container> |                 </ng-container> | ||||||
|                 <ng-container *ngIf="anonResponses.total > 0"> |                 <ng-container *ngIf="anonResponses.total > 0"> | ||||||
|                     <ion-item-divider color="light"> |                     <ion-item-divider> | ||||||
|                         {{ 'addon.mod_feedback.anonymous_entries' |translate : {$a: anonResponses.total } }} |                         {{ 'addon.mod_feedback.anonymous_entries' |translate : {$a: anonResponses.total } }} | ||||||
|                     </ion-item-divider> |                     </ion-item-divider> | ||||||
|                     <a *ngFor="let attempt of anonResponses.attempts" ion-item text-wrap (click)="gotoAttempt(attempt)" [class.core-split-item-selected]="attempt.id == attemptId"> |                     <a *ngFor="let attempt of anonResponses.attempts" ion-item text-wrap (click)="gotoAttempt(attempt)" [class.core-split-item-selected]="attempt.id == attemptId"> | ||||||
|  | |||||||
| @ -36,7 +36,7 @@ | |||||||
| 
 | 
 | ||||||
|         <ion-card *ngIf="sort != 'nested'"> |         <ion-card *ngIf="sort != 'nested'"> | ||||||
|             <ng-container *ngFor="let post of posts; first as first"> |             <ng-container *ngFor="let post of posts; first as first"> | ||||||
|                 <ion-item-divider color="light" *ngIf="!first"></ion-item-divider> |                 <ion-item-divider *ngIf="!first"></ion-item-divider> | ||||||
|                 <addon-mod-forum-post [post]="post" [courseId]="courseId" [discussionId]="discussionId" [component]="component" [componentId]="cmId" [replyData]="replyData" [originalData]="originalData" [defaultSubject]="defaultSubject" [forum]="forum" [trackPosts]="trackPosts" (onPostChange)="postListChanged()"></addon-mod-forum-post> |                 <addon-mod-forum-post [post]="post" [courseId]="courseId" [discussionId]="discussionId" [component]="component" [componentId]="cmId" [replyData]="replyData" [originalData]="originalData" [defaultSubject]="defaultSubject" [forum]="forum" [trackPosts]="trackPosts" (onPostChange)="postListChanged()"></addon-mod-forum-post> | ||||||
|             </ng-container> |             </ng-container> | ||||||
|         </ion-card> |         </ion-card> | ||||||
|  | |||||||
| @ -33,7 +33,7 @@ | |||||||
|         <core-loading [hideUntil]="loaded" class="core-loading-center"> |         <core-loading [hideUntil]="loaded" class="core-loading-center"> | ||||||
| 
 | 
 | ||||||
|             <ion-list *ngIf="viewMode != 'search' && offlineEntries.length > 0"> |             <ion-list *ngIf="viewMode != 'search' && offlineEntries.length > 0"> | ||||||
|                 <ion-item-divider color="light"> |                 <ion-item-divider> | ||||||
|                     {{ 'addon.mod_glossary.entriestobesynced' | translate }} |                     {{ 'addon.mod_glossary.entriestobesynced' | translate }} | ||||||
|                 </ion-item-divider> |                 </ion-item-divider> | ||||||
|                 <a ion-item *ngFor="let entry of offlineEntries" (click)="openNewEntry(entry)" detail-none> |                 <a ion-item *ngFor="let entry of offlineEntries" (click)="openNewEntry(entry)" detail-none> | ||||||
| @ -44,7 +44,7 @@ | |||||||
|             <ion-list *ngIf="entries.length > 0"> |             <ion-list *ngIf="entries.length > 0"> | ||||||
|                 <ng-container *ngFor="let entry of entries; let index = index"> |                 <ng-container *ngFor="let entry of entries; let index = index"> | ||||||
| 
 | 
 | ||||||
|                     <ion-item-divider color="light" *ngIf="showDivider(entry, entries[index - 1])"> |                     <ion-item-divider *ngIf="showDivider(entry, entries[index - 1])"> | ||||||
|                         {{getDivider(entry)}} |                         {{getDivider(entry)}} | ||||||
|                     </ion-item-divider> |                     </ion-item-divider> | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -27,10 +27,10 @@ | |||||||
|                 <ion-label stacked id="addon-mod-glossary-aliases-label">{{ 'addon.mod_glossary.aliases' | translate }}</ion-label> |                 <ion-label stacked id="addon-mod-glossary-aliases-label">{{ 'addon.mod_glossary.aliases' | translate }}</ion-label> | ||||||
|                 <ion-textarea [(ngModel)]="options.aliases" rows="1" core-auto-rows aria-labelledby="addon-mod-glossary-aliases-label"></ion-textarea> |                 <ion-textarea [(ngModel)]="options.aliases" rows="1" core-auto-rows aria-labelledby="addon-mod-glossary-aliases-label"></ion-textarea> | ||||||
|             </ion-item> |             </ion-item> | ||||||
|             <ion-item-divider color="light">{{ 'addon.mod_glossary.attachment' | translate }}</ion-item-divider> |             <ion-item-divider>{{ 'addon.mod_glossary.attachment' | translate }}</ion-item-divider> | ||||||
|             <core-attachments [files]="attachments" [component]="component" [componentId]="glossary.cmid" [allowOffline]="true"></core-attachments> |             <core-attachments [files]="attachments" [component]="component" [componentId]="glossary.cmid" [allowOffline]="true"></core-attachments> | ||||||
|             <ng-container *ngIf="glossary.usedynalink"> |             <ng-container *ngIf="glossary.usedynalink"> | ||||||
|                 <ion-item-divider color="light">{{ 'addon.mod_glossary.linking' | translate }}</ion-item-divider> |                 <ion-item-divider>{{ 'addon.mod_glossary.linking' | translate }}</ion-item-divider> | ||||||
|                 <ion-item text-wrap> |                 <ion-item text-wrap> | ||||||
|                     <ion-label>{{ 'addon.mod_glossary.entryusedynalink' | translate }}</ion-label> |                     <ion-label>{{ 'addon.mod_glossary.entryusedynalink' | translate }}</ion-label> | ||||||
|                     <ion-toggle [(ngModel)]="options.usedynalink"></ion-toggle> |                     <ion-toggle [(ngModel)]="options.usedynalink"></ion-toggle> | ||||||
|  | |||||||
| @ -1,3 +1,19 @@ | |||||||
| a.core-course-module-handler.addon-mod-label-handler { | a.core-course-module-handler.addon-mod-label-handler { | ||||||
|     align-items: center; |     align-items: center; | ||||||
|  | 
 | ||||||
|  |     &:hover { | ||||||
|  |         opacity: 1; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .md a.core-course-module-handler.addon-mod-label-handler .item-inner { | ||||||
|  |     padding-bottom: $item-md-padding-bottom; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .ios a.core-course-module-handler.addon-mod-label-handler .item-inner { | ||||||
|  |     padding-bottom: $item-ios-padding-bottom; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .wp a.core-course-module-handler.addon-mod-label-handler .item-inner { | ||||||
|  |     padding-bottom: $item-wp-padding-bottom; | ||||||
| } | } | ||||||
|  | |||||||
| @ -66,6 +66,7 @@ export class AddonModLabelModuleHandler implements CoreCourseModuleHandler { | |||||||
|         return { |         return { | ||||||
|             icon: '', |             icon: '', | ||||||
|             title: title, |             title: title, | ||||||
|  |             a11yTitle: '', | ||||||
|             class: 'addon-mod-label-handler' |             class: 'addon-mod-label-handler' | ||||||
|         }; |         }; | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -13,13 +13,13 @@ | |||||||
|         <ion-list> |         <ion-list> | ||||||
|             <!-- Media file. --> |             <!-- Media file. --> | ||||||
|             <ng-container *ngIf="pageInstance.mediaFile"> |             <ng-container *ngIf="pageInstance.mediaFile"> | ||||||
|                 <ion-item-divider color="light"><h2>{{ 'addon.mod_lesson.linkedmedia' | translate }}</h2></ion-item-divider> |                 <ion-item-divider><h2>{{ 'addon.mod_lesson.linkedmedia' | translate }}</h2></ion-item-divider> | ||||||
|                 <core-file [file]="pageInstance.mediaFile" [component]="pageInstance.component" [componentId]="pageInstance.lesson.coursemodule"></core-file> |                 <core-file [file]="pageInstance.mediaFile" [component]="pageInstance.component" [componentId]="pageInstance.lesson.coursemodule"></core-file> | ||||||
|             </ng-container> |             </ng-container> | ||||||
| 
 | 
 | ||||||
|             <!-- Lesson menu. --> |             <!-- Lesson menu. --> | ||||||
|             <ng-container *ngIf="pageInstance.displayMenu"> |             <ng-container *ngIf="pageInstance.displayMenu"> | ||||||
|                 <ion-item-divider color="light"><h2>{{ 'addon.mod_lesson.lessonmenu' | translate }}</h2></ion-item-divider> |                 <ion-item-divider><h2>{{ 'addon.mod_lesson.lessonmenu' | translate }}</h2></ion-item-divider> | ||||||
|                 <ion-item text-center *ngIf="pageInstance.loadingMenu"> |                 <ion-item text-center *ngIf="pageInstance.loadingMenu"> | ||||||
|                     <ion-spinner></ion-spinner> |                     <ion-spinner></ion-spinner> | ||||||
|                 </ion-item> |                 </ion-item> | ||||||
|  | |||||||
| @ -39,7 +39,7 @@ | |||||||
|                 <!-- Question page. --> |                 <!-- Question page. --> | ||||||
|                 <!-- We need to set ngIf loaded to make formGroup directive restart every time a page changes, see MOBILE-2540. --> |                 <!-- We need to set ngIf loaded to make formGroup directive restart every time a page changes, see MOBILE-2540. --> | ||||||
|                 <form *ngIf="question && loaded" ion-list [formGroup]="questionForm"> |                 <form *ngIf="question && loaded" ion-list [formGroup]="questionForm"> | ||||||
|                     <ion-item-divider text-wrap color="light"> |                     <ion-item-divider text-wrap> | ||||||
|                         <core-format-text [component]="component" [componentId]="lesson.coursemodule" [text]="pageContent"></core-format-text> |                         <core-format-text [component]="component" [componentId]="lesson.coursemodule" [text]="pageContent"></core-format-text> | ||||||
|                     </ion-item-divider> |                     </ion-item-divider> | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -49,7 +49,7 @@ | |||||||
|             <div *ngFor="let question of questions"> |             <div *ngFor="let question of questions"> | ||||||
|                 <ion-card id="addon-mod_quiz-question-{{question.slot}}"> |                 <ion-card id="addon-mod_quiz-question-{{question.slot}}"> | ||||||
|                     <!-- "Header" of the question. --> |                     <!-- "Header" of the question. --> | ||||||
|                     <ion-item-divider color="light"> |                     <ion-item-divider> | ||||||
|                         <h2 *ngIf="question.number" class="inline">{{ 'core.question.questionno' | translate:{$a: question.number} }}</h2> |                         <h2 *ngIf="question.number" class="inline">{{ 'core.question.questionno' | translate:{$a: question.number} }}</h2> | ||||||
|                         <h2 *ngIf="!question.number" class="inline">{{ 'core.question.information' | translate }}</h2> |                         <h2 *ngIf="!question.number" class="inline">{{ 'core.question.information' | translate }}</h2> | ||||||
|                         <ion-note text-wrap item-end *ngIf="question.status || question.readableMark"> |                         <ion-note text-wrap item-end *ngIf="question.status || question.readableMark"> | ||||||
|  | |||||||
| @ -16,7 +16,7 @@ | |||||||
|                 <core-dynamic-component [component]="data.component" [data]="data.data"> |                 <core-dynamic-component [component]="data.component" [data]="data.data"> | ||||||
|                     <p padding>Couldn't find the directive to render this access rule.</p> |                     <p padding>Couldn't find the directive to render this access rule.</p> | ||||||
|                 </core-dynamic-component> |                 </core-dynamic-component> | ||||||
|                 <ion-item-divider color="light" *ngIf="!last"></ion-item-divider> |                 <ion-item-divider *ngIf="!last"></ion-item-divider> | ||||||
|             </ng-container> |             </ng-container> | ||||||
| 
 | 
 | ||||||
|             <button ion-button block type="submit"> |             <button ion-button block type="submit"> | ||||||
|  | |||||||
| @ -66,7 +66,7 @@ | |||||||
|             <div *ngFor="let question of questions"> |             <div *ngFor="let question of questions"> | ||||||
|                 <ion-card id="addon-mod_quiz-question-{{question.slot}}"> |                 <ion-card id="addon-mod_quiz-question-{{question.slot}}"> | ||||||
|                     <!-- "Header" of the question. --> |                     <!-- "Header" of the question. --> | ||||||
|                     <ion-item-divider color="light"> |                     <ion-item-divider> | ||||||
|                         <h2 *ngIf="question.number" class="inline">{{ 'core.question.questionno' | translate:{$a: question.number} }}</h2> |                         <h2 *ngIf="question.number" class="inline">{{ 'core.question.questionno' | translate:{$a: question.number} }}</h2> | ||||||
|                         <h2 *ngIf="!question.number" class="inline">{{ 'core.question.information' | translate }}</h2> |                         <h2 *ngIf="!question.number" class="inline">{{ 'core.question.information' | translate }}</h2> | ||||||
|                         <ion-note text-wrap item-end *ngIf="question.status || question.readableMark"> |                         <ion-note text-wrap item-end *ngIf="question.status || question.readableMark"> | ||||||
|  | |||||||
| @ -58,7 +58,7 @@ | |||||||
|             <ng-template> |             <ng-template> | ||||||
|                 <ion-list> |                 <ion-list> | ||||||
|                     <ng-container *ngFor="let letter of map"> |                     <ng-container *ngFor="let letter of map"> | ||||||
|                         <ion-item-divider color="light" *ngIf="letter.label"> |                         <ion-item-divider *ngIf="letter.label"> | ||||||
|                             {{ letter.label }} |                             {{ letter.label }} | ||||||
|                         </ion-item-divider> |                         </ion-item-divider> | ||||||
|                         <a ion-item text-wrap *ngFor="let page of letter.pages" (click)="goToPage(page)"> |                         <a ion-item text-wrap *ngFor="let page of letter.pages" (click)="goToPage(page)"> | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| <ion-list> | <ion-list> | ||||||
|     <ng-container *ngFor="let group of subwikis"> |     <ng-container *ngFor="let group of subwikis"> | ||||||
|         <ion-item-divider *ngIf="group.label" color="light"> |         <ion-item-divider *ngIf="group.label"> | ||||||
|             {{ group.label }} |             {{ group.label }} | ||||||
|         </ion-item-divider> |         </ion-item-divider> | ||||||
|         <a ion-item text-wrap *ngFor="let subwiki of group.subwikis;" (click)="openSubwiki(subwiki)" [attr.disabled]="!subwiki.canedit && subwiki.id <= 0 ? true : null" [ngClass]="{'addon-mod_wiki-subwiki-selected': isSubwikiSelected(subwiki)}" detail-none> |         <a ion-item text-wrap *ngFor="let subwiki of group.subwikis;" (click)="openSubwiki(subwiki)" [attr.disabled]="!subwiki.canedit && subwiki.id <= 0 ? true : null" [ngClass]="{'addon-mod_wiki-subwiki-selected': isSubwikiSelected(subwiki)}" detail-none> | ||||||
|  | |||||||
| @ -49,7 +49,7 @@ | |||||||
|             </ion-card> |             </ion-card> | ||||||
| 
 | 
 | ||||||
|             <ion-card class="with-borders" *ngIf="userGrades"> |             <ion-card class="with-borders" *ngIf="userGrades"> | ||||||
|                 <ion-item-divider color="light" text-wrap> |                 <ion-item-divider text-wrap> | ||||||
|                     <h2>{{ 'addon.mod_workshop.yourgrades' | translate }}</h2> |                     <h2>{{ 'addon.mod_workshop.yourgrades' | translate }}</h2> | ||||||
|                 </ion-item-divider> |                 </ion-item-divider> | ||||||
|                 <ion-item text-wrap *ngIf="userGrades.submissionlongstrgrade"> |                 <ion-item text-wrap *ngIf="userGrades.submissionlongstrgrade"> | ||||||
| @ -78,7 +78,7 @@ | |||||||
|             </ion-item> |             </ion-item> | ||||||
| 
 | 
 | ||||||
|             <ng-container *ngIf="submission"> |             <ng-container *ngIf="submission"> | ||||||
|                 <ion-item-divider color="light" text-wrap> |                 <ion-item-divider text-wrap> | ||||||
|                     <h2>{{ 'addon.mod_workshop.yoursubmission' | translate }}</h2> |                     <h2>{{ 'addon.mod_workshop.yoursubmission' | translate }}</h2> | ||||||
|                 </ion-item-divider> |                 </ion-item-divider> | ||||||
|                 <addon-mod-workshop-submission [submission]="submission" [courseId]="workshop.course" [module]="module" [workshop]="workshop" [access]="access"></addon-mod-workshop-submission> |                 <addon-mod-workshop-submission [submission]="submission" [courseId]="workshop.course" [module]="module" [workshop]="workshop" [access]="access"></addon-mod-workshop-submission> | ||||||
| @ -101,7 +101,7 @@ | |||||||
| 
 | 
 | ||||||
|         <ng-container *ngIf="workshop.phase >= workshopPhases.PHASE_CLOSED"> |         <ng-container *ngIf="workshop.phase >= workshopPhases.PHASE_CLOSED"> | ||||||
|             <ion-card class="with-borders" *ngIf="publishedSubmissions && publishedSubmissions.length"> |             <ion-card class="with-borders" *ngIf="publishedSubmissions && publishedSubmissions.length"> | ||||||
|                 <ion-item-divider color="light" text-wrap> |                 <ion-item-divider text-wrap> | ||||||
|                     <h2>{{ 'addon.mod_workshop.publishedsubmissions' | translate }}</h2> |                     <h2>{{ 'addon.mod_workshop.publishedsubmissions' | translate }}</h2> | ||||||
|                 </ion-item-divider> |                 </ion-item-divider> | ||||||
|                 <ng-container *ngFor="let submission of publishedSubmissions"> |                 <ng-container *ngFor="let submission of publishedSubmissions"> | ||||||
| @ -120,7 +120,7 @@ | |||||||
|             </ion-card> |             </ion-card> | ||||||
| 
 | 
 | ||||||
|             <ion-card class="with-borders" *ngIf="canAssess"> |             <ion-card class="with-borders" *ngIf="canAssess"> | ||||||
|                 <ion-item-divider color="light" text-wrap> |                 <ion-item-divider text-wrap> | ||||||
|                     <h2>{{ 'addon.mod_workshop.assignedassessments' | translate }}</h2> |                     <h2>{{ 'addon.mod_workshop.assignedassessments' | translate }}</h2> | ||||||
|                 </ion-item-divider> |                 </ion-item-divider> | ||||||
|                 <ion-item text-wrap *ngIf="!assessments || !assessments.length"> |                 <ion-item text-wrap *ngIf="!assessments || !assessments.length"> | ||||||
| @ -134,10 +134,10 @@ | |||||||
| 
 | 
 | ||||||
|         <!-- MULTIPLE PHASES SUBMISSION OR GREATER only teachers --> |         <!-- MULTIPLE PHASES SUBMISSION OR GREATER only teachers --> | ||||||
|         <ion-card class="with-borders" *ngIf="access.canviewallsubmissions && workshop.phase >= workshopPhases.PHASE_SUBMISSION && ((grades && grades.length) || (groupInfo && (groupInfo.separateGroups || groupInfo.visibleGroups)))"> |         <ion-card class="with-borders" *ngIf="access.canviewallsubmissions && workshop.phase >= workshopPhases.PHASE_SUBMISSION && ((grades && grades.length) || (groupInfo && (groupInfo.separateGroups || groupInfo.visibleGroups)))"> | ||||||
|             <ion-item-divider color="light" text-wrap *ngIf="workshop.phase == workshopPhases.PHASE_SUBMISSION"> |             <ion-item-divider text-wrap *ngIf="workshop.phase == workshopPhases.PHASE_SUBMISSION"> | ||||||
|                 <h2>{{ 'addon.mod_workshop.submissionsreport' | translate }}</h2> |                 <h2>{{ 'addon.mod_workshop.submissionsreport' | translate }}</h2> | ||||||
|             </ion-item-divider> |             </ion-item-divider> | ||||||
|            <ion-item-divider color="light" text-wrap *ngIf="workshop.phase > workshopPhases.PHASE_SUBMISSION"> |            <ion-item-divider text-wrap *ngIf="workshop.phase > workshopPhases.PHASE_SUBMISSION"> | ||||||
|                 <h2>{{ 'addon.mod_workshop.gradesreport' | translate }}</h2> |                 <h2>{{ 'addon.mod_workshop.gradesreport' | translate }}</h2> | ||||||
|             </ion-item-divider> |             </ion-item-divider> | ||||||
|             <ion-item text-wrap *ngIf="groupInfo && (groupInfo.separateGroups || groupInfo.visibleGroups)"> |             <ion-item text-wrap *ngIf="groupInfo && (groupInfo.separateGroups || groupInfo.visibleGroups)"> | ||||||
|  | |||||||
| @ -11,7 +11,7 @@ | |||||||
| <ion-content> | <ion-content> | ||||||
|     <ion-list> |     <ion-list> | ||||||
|         <ng-container *ngFor="let phase of phases"> |         <ng-container *ngFor="let phase of phases"> | ||||||
|             <ion-item-divider color="light" [class.core-workshop-phase-selected]="workshopPhase == phase.code"> |             <ion-item-divider [class.core-workshop-phase-selected]="workshopPhase == phase.code"> | ||||||
|                 <h2>{{ phase.title }}</h2> |                 <h2>{{ phase.title }}</h2> | ||||||
|                 <p text-wrap *ngIf="workshopPhase == phase.code">{{ 'addon.mod_workshop.userplancurrentphase' | translate }}</p> |                 <p text-wrap *ngIf="workshopPhase == phase.code">{{ 'addon.mod_workshop.userplancurrentphase' | translate }}</p> | ||||||
|             </ion-item-divider> |             </ion-item-divider> | ||||||
|  | |||||||
| @ -41,7 +41,7 @@ | |||||||
|             </div> |             </div> | ||||||
| 
 | 
 | ||||||
|             <ion-card list *ngFor="let component of components"> |             <ion-card list *ngFor="let component of components"> | ||||||
|                 <ion-item-divider color="light" text-wrap> |                 <ion-item-divider text-wrap> | ||||||
|                     <ion-row no-padding> |                     <ion-row no-padding> | ||||||
|                         <ion-col no-padding>{{ component.displayname }}</ion-col> |                         <ion-col no-padding>{{ component.displayname }}</ion-col> | ||||||
|                         <ion-col col-2 text-center no-padding class="hidden-phone">{{ 'core.settings.loggedin' | translate }}</ion-col> |                         <ion-col col-2 text-center no-padding class="hidden-phone">{{ 'core.settings.loggedin' | translate }}</ion-col> | ||||||
|  | |||||||
| @ -50,6 +50,7 @@ ion-app.app-root { | |||||||
|       align-items: center !important; |       align-items: center !important; | ||||||
|       > * { |       > * { | ||||||
|         margin: 0 auto; |         margin: 0 auto; | ||||||
|  |         width: 100%; | ||||||
|         max-width: 600px; |         max-width: 600px; | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
| @ -881,6 +882,12 @@ ion-app.app-root { | |||||||
|   .text-#{$color-name} { |   .text-#{$color-name} { | ||||||
|     color: $color-contrast; |     color: $color-contrast; | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|  |   .item-divider-md-#{$color-name} h2, | ||||||
|  |   .item-divider-wp-#{$color-name} h2, | ||||||
|  |   .item-divider-ios-#{$color-name} h2 { | ||||||
|  |     color: $color-contrast; | ||||||
|  |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| [dir="ltr"] body, [dir="rtl"] body { | [dir="ltr"] body, [dir="rtl"] body { | ||||||
|  | |||||||
| @ -17,7 +17,8 @@ ion-app.app-root .core-tabs-bar { | |||||||
|         color: $core-top-tabs-color !important; |         color: $core-top-tabs-color !important; | ||||||
|         font-size: 1.6rem; |         font-size: 1.6rem; | ||||||
|         border: 0; |         border: 0; | ||||||
|         padding: 0 !important; |         padding: 0 5px 0 5px !important; | ||||||
|  |         margin: 0 auto !important; | ||||||
|         display: flex; |         display: flex; | ||||||
|         flex-direction: row; |         flex-direction: row; | ||||||
| 
 | 
 | ||||||
| @ -45,6 +46,7 @@ ion-app.app-root .core-tabs-bar { | |||||||
|             color: $core-top-tabs-color-active !important; |             color: $core-top-tabs-color-active !important; | ||||||
|             border: 0 !important; |             border: 0 !important; | ||||||
|             border-bottom: 2px solid $core-top-tabs-border-active !important; |             border-bottom: 2px solid $core-top-tabs-border-active !important; | ||||||
|  |             padding: 0 !important; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| <a *ngIf="module && module.visibleoncoursepage !== 0" ion-item text-wrap id="core-course-module-{{module.id}}" class="core-course-module-handler {{module.handlerData.class}}" (click)="moduleClicked($event)" [ngClass]="{'item-media': module.handlerData.icon, 'core-not-clickable': !module.handlerData.action || !module.uservisible === false, 'item-dimmed': module.visible === 0 || module.uservisible === false}" title="{{ module.handlerData.title }}" detail-none> | <a *ngIf="module && module.visibleoncoursepage !== 0" ion-item text-wrap id="core-course-module-{{module.id}}" class="core-course-module-handler {{module.handlerData.class}}" (click)="moduleClicked($event)" [ngClass]="{'item-media': module.handlerData.icon, 'core-not-clickable': !module.handlerData.action || !module.uservisible === false, 'item-dimmed': module.visible === 0 || module.uservisible === false}" [title]="module.handlerData.a11yTitle" detail-none> | ||||||
| 
 | 
 | ||||||
|     <img item-start *ngIf="module.handlerData.icon" [src]="module.handlerData.icon" alt="" role="presentation" class="core-module-icon"> |     <img item-start *ngIf="module.handlerData.icon" [src]="module.handlerData.icon" alt="" role="presentation" class="core-module-icon"> | ||||||
|     <div class="core-module-title"> |     <div class="core-module-title"> | ||||||
|  | |||||||
| @ -94,6 +94,9 @@ export class CoreCourseModuleComponent implements OnInit, OnDestroy { | |||||||
|                 } |                 } | ||||||
|             }, this.sitesProvider.getCurrentSiteId()); |             }, this.sitesProvider.getCurrentSiteId()); | ||||||
|         } |         } | ||||||
|  | 
 | ||||||
|  |         this.module.handlerData.a11yTitle = typeof this.module.handlerData.a11yTitle != 'undefined' ? | ||||||
|  |             this.module.handlerData.a11yTitle : this.module.handlerData.title; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|  | |||||||
| @ -98,6 +98,12 @@ export interface CoreCourseModuleHandlerData { | |||||||
|      */ |      */ | ||||||
|     title: string; |     title: string; | ||||||
| 
 | 
 | ||||||
|  |     /** | ||||||
|  |      * The accessibility title to use in the module. If not provided, title will be used. | ||||||
|  |      * @type {string} | ||||||
|  |      */ | ||||||
|  |     a11yTitle?: string; | ||||||
|  | 
 | ||||||
|     /** |     /** | ||||||
|      * The image to use as icon (path to the image). |      * The image to use as icon (path to the image). | ||||||
|      * @type {string} |      * @type {string} | ||||||
|  | |||||||
| @ -17,7 +17,7 @@ | |||||||
|         </ion-item> |         </ion-item> | ||||||
| 
 | 
 | ||||||
|         <div *ngIf="categories.length > 0"> |         <div *ngIf="categories.length > 0"> | ||||||
|             <ion-item-divider color="light">{{ 'core.courses.categories' | translate }}</ion-item-divider> |             <ion-item-divider>{{ 'core.courses.categories' | translate }}</ion-item-divider> | ||||||
|             <section *ngFor="let category of categories"> |             <section *ngFor="let category of categories"> | ||||||
|                 <a ion-item text-wrap (click)="openCategory(category.id)" [title]="category.name"> |                 <a ion-item text-wrap (click)="openCategory(category.id)" [title]="category.name"> | ||||||
|                     <ion-icon name="folder" item-start></ion-icon> |                     <ion-icon name="folder" item-start></ion-icon> | ||||||
| @ -28,7 +28,7 @@ | |||||||
|         </div> |         </div> | ||||||
| 
 | 
 | ||||||
|         <div *ngIf="courses.length > 0"> |         <div *ngIf="courses.length > 0"> | ||||||
|             <ion-item-divider color="light">{{ 'core.courses.courses' | translate }}</ion-item-divider> |             <ion-item-divider>{{ 'core.courses.courses' | translate }}</ion-item-divider> | ||||||
|             <core-courses-course-list-item *ngFor="let course of courses" [course]="course"></core-courses-course-list-item> |             <core-courses-course-list-item *ngFor="let course of courses" [course]="course"></core-courses-course-list-item> | ||||||
|         </div> |         </div> | ||||||
|         <core-empty-box *ngIf="!categories.length && !courses.length" icon="ionic" [message]="'core.courses.nocoursesyet' | translate"> |         <core-empty-box *ngIf="!categories.length && !courses.length" icon="ionic" [message]="'core.courses.nocoursesyet' | translate"> | ||||||
|  | |||||||
| @ -25,12 +25,12 @@ | |||||||
|             </ion-item> |             </ion-item> | ||||||
| 
 | 
 | ||||||
|             <ng-container text-wrap *ngIf="course.contacts && course.contacts.length"> |             <ng-container text-wrap *ngIf="course.contacts && course.contacts.length"> | ||||||
|                 <ion-item-divider color="light">{{ 'core.teachers' | translate }}</ion-item-divider> |                 <ion-item-divider>{{ 'core.teachers' | translate }}</ion-item-divider> | ||||||
|                 <a ion-item text-wrap *ngFor="let contact of course.contacts" core-user-link [userId]="contact.id" [courseId]="isEnrolled ? course.id : null" [attr.aria-label]="'core.viewprofile' | translate"> |                 <a ion-item text-wrap *ngFor="let contact of course.contacts" core-user-link [userId]="contact.id" [courseId]="isEnrolled ? course.id : null" [attr.aria-label]="'core.viewprofile' | translate"> | ||||||
|                     <ion-avatar core-user-avatar [user]="contact" item-start [userId]="contact.id" [courseId]="isEnrolled ? course.id : null"></ion-avatar> |                     <ion-avatar core-user-avatar [user]="contact" item-start [userId]="contact.id" [courseId]="isEnrolled ? course.id : null"></ion-avatar> | ||||||
|                     <h2>{{contact.fullname}}</h2> |                     <h2>{{contact.fullname}}</h2> | ||||||
|                 </a> |                 </a> | ||||||
|                 <ion-item-divider color="light"></ion-item-divider> |                 <ion-item-divider></ion-item-divider> | ||||||
|             </ng-container> |             </ng-container> | ||||||
|             <core-file *ngFor="let file of course.overviewfiles" [file]="file" [component]="component" [componentId]="course.id"></core-file> |             <core-file *ngFor="let file of course.overviewfiles" [file]="file" [component]="component" [componentId]="course.id"></core-file> | ||||||
|             <div *ngIf="!isEnrolled" detail-none> |             <div *ngIf="!isEnrolled" detail-none> | ||||||
|  | |||||||
| @ -7,7 +7,7 @@ | |||||||
|     <core-search-box (onSubmit)="search($event)" [placeholder]="'core.courses.search' | translate" [searchLabel]="'core.courses.search' | translate" autoFocus="true" showClear="false"></core-search-box> |     <core-search-box (onSubmit)="search($event)" [placeholder]="'core.courses.search' | translate" [searchLabel]="'core.courses.search' | translate" autoFocus="true" showClear="false"></core-search-box> | ||||||
| 
 | 
 | ||||||
|     <div *ngIf="courses"> |     <div *ngIf="courses"> | ||||||
|         <ion-item-divider color="light">{{ 'core.courses.totalcoursesearchresults' | translate:{$a: total} }}</ion-item-divider> |         <ion-item-divider>{{ 'core.courses.totalcoursesearchresults' | translate:{$a: total} }}</ion-item-divider> | ||||||
|         <core-empty-box *ngIf="total == 0" icon="search" [message]="'core.courses.nosearchresults' | translate"></core-empty-box> |         <core-empty-box *ngIf="total == 0" icon="search" [message]="'core.courses.nosearchresults' | translate"></core-empty-box> | ||||||
|         <core-courses-course-list-item *ngFor="let course of courses" [course]="course"></core-courses-course-list-item> |         <core-courses-course-list-item *ngFor="let course of courses" [course]="course"></core-courses-course-list-item> | ||||||
|         <core-infinite-loading [enabled]="canLoadMore" (action)="loadMoreResults($event)" [error]="loadMoreError"></core-infinite-loading> |         <core-infinite-loading [enabled]="canLoadMore" (action)="loadMoreResults($event)" [error]="loadMoreError"></core-infinite-loading> | ||||||
|  | |||||||
| @ -18,7 +18,7 @@ | |||||||
| 
 | 
 | ||||||
|         <!-- Age verification. --> |         <!-- Age verification. --> | ||||||
|         <form ion-list *ngIf="settingsLoaded && settings && ageDigitalConsentVerification" [formGroup]="ageVerificationForm" (ngSubmit)="verifyAge($event)"> |         <form ion-list *ngIf="settingsLoaded && settings && ageDigitalConsentVerification" [formGroup]="ageVerificationForm" (ngSubmit)="verifyAge($event)"> | ||||||
|             <ion-item-divider color="light" text-wrap> |             <ion-item-divider text-wrap> | ||||||
|                 <p class="item-heading">{{ 'core.agelocationverification' | translate }}</p> |                 <p class="item-heading">{{ 'core.agelocationverification' | translate }}</p> | ||||||
|             </ion-item-divider> |             </ion-item-divider> | ||||||
| 
 | 
 | ||||||
| @ -29,7 +29,7 @@ | |||||||
| 
 | 
 | ||||||
|             <ion-item text-wrap> |             <ion-item text-wrap> | ||||||
|                 <ion-label stacked core-mark-required="true">{{ 'core.wheredoyoulive' | translate }}</ion-label> |                 <ion-label stacked core-mark-required="true">{{ 'core.wheredoyoulive' | translate }}</ion-label> | ||||||
|                 <ion-select name="country" formControlName="country"> |                 <ion-select name="country" formControlName="country" [placeholder]="'core.login.selectacountry' | translate"> | ||||||
|                     <ion-option value="">{{ 'core.login.selectacountry' | translate }}</ion-option> |                     <ion-option value="">{{ 'core.login.selectacountry' | translate }}</ion-option> | ||||||
|                     <ion-option *ngFor="let key of countriesKeys" [value]="key">{{countries[key]}}</ion-option> |                     <ion-option *ngFor="let key of countriesKeys" [value]="key">{{countries[key]}}</ion-option> | ||||||
|                 </ion-select> |                 </ion-select> | ||||||
| @ -57,7 +57,7 @@ | |||||||
|             </ion-item> |             </ion-item> | ||||||
| 
 | 
 | ||||||
|             <!-- Username and password. --> |             <!-- Username and password. --> | ||||||
|             <ion-item-divider text-wrap color="light"> |             <ion-item-divider text-wrap> | ||||||
|                 {{ 'core.login.createuserandpass' | translate }} |                 {{ 'core.login.createuserandpass' | translate }} | ||||||
|             </ion-item-divider> |             </ion-item-divider> | ||||||
|             <ion-item text-wrap> |             <ion-item text-wrap> | ||||||
| @ -77,7 +77,7 @@ | |||||||
|             </ion-item> |             </ion-item> | ||||||
| 
 | 
 | ||||||
|             <!-- More details. --> |             <!-- More details. --> | ||||||
|             <ion-item-divider text-wrap color="light"> |             <ion-item-divider text-wrap> | ||||||
|                 {{ 'core.login.supplyinfo' | translate }} |                 {{ 'core.login.supplyinfo' | translate }} | ||||||
|             </ion-item-divider> |             </ion-item-divider> | ||||||
|             <ion-item text-wrap> |             <ion-item text-wrap> | ||||||
| @ -101,7 +101,7 @@ | |||||||
|             </ion-item> |             </ion-item> | ||||||
|             <ion-item text-wrap> |             <ion-item text-wrap> | ||||||
|                 <ion-label stacked id="core-login-signup-country">{{ 'core.user.country' | translate }}</ion-label> |                 <ion-label stacked id="core-login-signup-country">{{ 'core.user.country' | translate }}</ion-label> | ||||||
|                 <ion-select name="country" formControlName="country" aria-labelledby="core-login-signup-country"> |                 <ion-select name="country" formControlName="country" aria-labelledby="core-login-signup-country" [placeholder]="'core.login.selectacountry' | translate"> | ||||||
|                     <ion-option value="">{{ 'core.login.selectacountry' | translate }}</ion-option> |                     <ion-option value="">{{ 'core.login.selectacountry' | translate }}</ion-option> | ||||||
|                     <ion-option *ngFor="let key of countriesKeys" [value]="key">{{countries[key]}}</ion-option> |                     <ion-option *ngFor="let key of countriesKeys" [value]="key">{{countries[key]}}</ion-option> | ||||||
|                 </ion-select> |                 </ion-select> | ||||||
| @ -109,13 +109,13 @@ | |||||||
| 
 | 
 | ||||||
|             <!-- Other categories. --> |             <!-- Other categories. --> | ||||||
|             <ng-container *ngFor="let category of categories"> |             <ng-container *ngFor="let category of categories"> | ||||||
|                 <ion-item-divider text-wrap color="light">{{ category.name }}</ion-item-divider> |                 <ion-item-divider text-wrap>{{ category.name }}</ion-item-divider> | ||||||
|                 <core-user-profile-field *ngFor="let field of category.fields" [field]="field" edit="true" signup="true" registerAuth="email" [form]="signupForm"></core-user-profile-field> |                 <core-user-profile-field *ngFor="let field of category.fields" [field]="field" edit="true" signup="true" registerAuth="email" [form]="signupForm"></core-user-profile-field> | ||||||
|             </ng-container> |             </ng-container> | ||||||
| 
 | 
 | ||||||
|             <!-- ReCAPTCHA --> |             <!-- ReCAPTCHA --> | ||||||
|             <ng-container *ngIf="settings.recaptchapublickey"> |             <ng-container *ngIf="settings.recaptchapublickey"> | ||||||
|                 <ion-item-divider text-wrap color="light">{{ 'core.login.security_question' | translate }}</ion-item-divider> |                 <ion-item-divider text-wrap>{{ 'core.login.security_question' | translate }}</ion-item-divider> | ||||||
|                 <ion-item text-wrap> |                 <ion-item text-wrap> | ||||||
|                     <core-recaptcha [publicKey]="settings.recaptchapublickey" [model]="captcha" [siteUrl]="siteUrl"></core-recaptcha> |                     <core-recaptcha [publicKey]="settings.recaptchapublickey" [model]="captcha" [siteUrl]="siteUrl"></core-recaptcha> | ||||||
|                 </ion-item> |                 </ion-item> | ||||||
| @ -123,7 +123,7 @@ | |||||||
| 
 | 
 | ||||||
|             <!-- Site policy (if any). --> |             <!-- Site policy (if any). --> | ||||||
|             <ng-container *ngIf="settings.sitepolicy"> |             <ng-container *ngIf="settings.sitepolicy"> | ||||||
|                 <ion-item-divider text-wrap color="light">{{ 'core.login.policyagreement' | translate }}</ion-item-divider> |                 <ion-item-divider text-wrap>{{ 'core.login.policyagreement' | translate }}</ion-item-divider> | ||||||
|                 <ion-item text-wrap> |                 <ion-item text-wrap> | ||||||
|                     <p><a [href]="settings.sitepolicy" core-link capture="false">{{ 'core.login.policyagreementclick' | translate }}</a></p> |                     <p><a [href]="settings.sitepolicy" core-link capture="false">{{ 'core.login.policyagreementclick' | translate }}</a></p> | ||||||
|                 </ion-item> |                 </ion-item> | ||||||
| @ -144,7 +144,7 @@ | |||||||
|     </core-loading> |     </core-loading> | ||||||
| 
 | 
 | ||||||
|     <ion-list *ngIf="isMinor"> |     <ion-list *ngIf="isMinor"> | ||||||
|         <ion-item-divider color="light" text-wrap> |         <ion-item-divider text-wrap> | ||||||
|             <p *ngIf="siteName" class="item-heading padding"><core-format-text [text]="siteName"></core-format-text></p> |             <p *ngIf="siteName" class="item-heading padding"><core-format-text [text]="siteName"></core-format-text></p> | ||||||
|         </ion-item-divider> |         </ion-item-divider> | ||||||
|         <ion-item text-wrap> |         <ion-item text-wrap> | ||||||
|  | |||||||
| @ -11,7 +11,7 @@ | |||||||
|     </ion-list> |     </ion-list> | ||||||
|     <ion-card> |     <ion-card> | ||||||
|         <form ion-list [formGroup]="myForm" (ngSubmit)="resetPassword($event)"> |         <form ion-list [formGroup]="myForm" (ngSubmit)="resetPassword($event)"> | ||||||
|             <ion-item-divider text-wrap color="light"> |             <ion-item-divider text-wrap> | ||||||
|                 {{ 'core.login.searchby' | translate }} |                 {{ 'core.login.searchby' | translate }} | ||||||
|             </ion-item-divider> |             </ion-item-divider> | ||||||
|             <div radio-group formControlName="field"> |             <div radio-group formControlName="field"> | ||||||
|  | |||||||
| @ -53,7 +53,7 @@ | |||||||
|         <ion-list *ngIf="identityProviders && identityProviders.length" padding-top> |         <ion-list *ngIf="identityProviders && identityProviders.length" padding-top> | ||||||
|             <ion-list-header text-wrap>{{ 'core.login.potentialidps' | translate }}</ion-list-header> |             <ion-list-header text-wrap>{{ 'core.login.potentialidps' | translate }}</ion-list-header> | ||||||
|             <button ion-item *ngFor="let provider of identityProviders" text-wrap class="core-oauth-icon" (click)="oauthClicked(provider)" title="{{provider.name}}"> |             <button ion-item *ngFor="let provider of identityProviders" text-wrap class="core-oauth-icon" (click)="oauthClicked(provider)" title="{{provider.name}}"> | ||||||
|                 <img [src]="provider.iconurl" alt="{{provider.name}}" item-start> |                 <img [src]="provider.iconurl" alt="" width="32" height="32" item-start> | ||||||
|                 {{provider.name}} |                 {{provider.name}} | ||||||
|             </button> |             </button> | ||||||
|         </ion-list> |         </ion-list> | ||||||
|  | |||||||
| @ -9,7 +9,7 @@ | |||||||
|             <ion-avatar core-user-avatar [user]="siteInfo" item-start></ion-avatar> |             <ion-avatar core-user-avatar [user]="siteInfo" item-start></ion-avatar> | ||||||
|             <p>{{siteInfo.fullname}}</p> |             <p>{{siteInfo.fullname}}</p> | ||||||
|         </a> |         </a> | ||||||
|         <ion-item-divider color="light"></ion-item-divider> |         <ion-item-divider></ion-item-divider> | ||||||
|         <ion-item text-center *ngIf="(!handlers || !handlers.length) && !handlersLoaded"> |         <ion-item text-center *ngIf="(!handlers || !handlers.length) && !handlersLoaded"> | ||||||
|             <ion-spinner></ion-spinner> |             <ion-spinner></ion-spinner> | ||||||
|         </ion-item> |         </ion-item> | ||||||
|  | |||||||
| @ -8,7 +8,7 @@ | |||||||
|         <h2>{{ appName }} {{ versionName }}</h2> |         <h2>{{ appName }} {{ versionName }}</h2> | ||||||
|     </ion-item> |     </ion-item> | ||||||
|     <ion-item-group> |     <ion-item-group> | ||||||
|         <ion-item-divider text-wrap color="light"> |         <ion-item-divider text-wrap> | ||||||
|             {{ 'core.settings.license' | translate }} |             {{ 'core.settings.license' | translate }} | ||||||
|         </ion-item-divider> |         </ion-item-divider> | ||||||
|         <ion-item text-wrap> |         <ion-item text-wrap> | ||||||
| @ -17,7 +17,7 @@ | |||||||
|         </ion-item> |         </ion-item> | ||||||
|     </ion-item-group> |     </ion-item-group> | ||||||
|     <ion-item-group *ngIf="privacyPolicy"> |     <ion-item-group *ngIf="privacyPolicy"> | ||||||
|         <ion-item-divider text-wrap color="light"> |         <ion-item-divider text-wrap> | ||||||
|             {{ 'core.settings.privacypolicy' | translate }} |             {{ 'core.settings.privacypolicy' | translate }} | ||||||
|         </ion-item-divider> |         </ion-item-divider> | ||||||
|         <ion-item text-wrap> |         <ion-item text-wrap> | ||||||
| @ -25,7 +25,7 @@ | |||||||
|         </ion-item> |         </ion-item> | ||||||
|     </ion-item-group> |     </ion-item-group> | ||||||
|     <ion-item-group> |     <ion-item-group> | ||||||
|         <ion-item-divider text-wrap color="light"> |         <ion-item-divider text-wrap> | ||||||
|             {{ 'core.settings.deviceinfo' | translate }} |             {{ 'core.settings.deviceinfo' | translate }} | ||||||
|         </ion-item-divider> |         </ion-item-divider> | ||||||
|         <ion-item text-wrap *ngIf="versionName"> |         <ion-item text-wrap *ngIf="versionName"> | ||||||
|  | |||||||
| @ -16,7 +16,7 @@ | |||||||
|                 <ion-icon name="trash"></ion-icon> |                 <ion-icon name="trash"></ion-icon> | ||||||
|             </button> |             </button> | ||||||
|         </ion-item> |         </ion-item> | ||||||
|         <ion-item-divider color="light"> |         <ion-item-divider> | ||||||
|             <p>{{ 'core.settings.total' | translate }}</p> |             <p>{{ 'core.settings.total' | translate }}</p> | ||||||
|             <p item-end>{{ totalUsage | coreBytesToSize }}</p> |             <p item-end>{{ totalUsage | coreBytesToSize }}</p> | ||||||
|         </ion-item-divider> |         </ion-item-divider> | ||||||
|  | |||||||
| @ -5,7 +5,7 @@ | |||||||
| </ion-header> | </ion-header> | ||||||
| <ion-content> | <ion-content> | ||||||
|     <core-loading [hideUntil]="sitesLoaded"> |     <core-loading [hideUntil]="sitesLoaded"> | ||||||
|         <ion-item-divider color="light"> |         <ion-item-divider> | ||||||
|             <p>{{ 'core.settings.syncsettings' | translate }}</p> |             <p>{{ 'core.settings.syncsettings' | translate }}</p> | ||||||
|         </ion-item-divider> |         </ion-item-divider> | ||||||
|         <ion-item text-wrap> |         <ion-item text-wrap> | ||||||
| @ -13,7 +13,7 @@ | |||||||
|             <ion-toggle item-end [(ngModel)]="syncOnlyOnWifi" (ngModelChange)="syncOnlyOnWifiChanged()"> |             <ion-toggle item-end [(ngModel)]="syncOnlyOnWifi" (ngModelChange)="syncOnlyOnWifiChanged()"> | ||||||
|             </ion-toggle> |             </ion-toggle> | ||||||
|         </ion-item> |         </ion-item> | ||||||
|         <ion-item-divider color="light"> |         <ion-item-divider> | ||||||
|             <p>{{ 'core.settings.sites' | translate }}</p> |             <p>{{ 'core.settings.sites' | translate }}</p> | ||||||
|         </ion-item-divider> |         </ion-item-divider> | ||||||
|         <ion-item *ngFor="let site of sites" [class.core-primary-selected-item]="site.id == currentSiteId" text-wrap> |         <ion-item *ngFor="let site of sites" [class.core-primary-selected-item]="site.id == currentSiteId" text-wrap> | ||||||
|  | |||||||
| @ -12,7 +12,7 @@ | |||||||
| 
 | 
 | ||||||
|         <!-- Site home items: news, categories, courses, etc. --> |         <!-- Site home items: news, categories, courses, etc. --> | ||||||
|         <ng-container *ngIf="items.length > 0"> |         <ng-container *ngIf="items.length > 0"> | ||||||
|             <ion-item-divider color="light" *ngIf="section && section.hasContent"></ion-item-divider> |             <ion-item-divider *ngIf="section && section.hasContent"></ion-item-divider> | ||||||
|             <ng-container *ngFor="let item of items"> |             <ng-container *ngFor="let item of items"> | ||||||
|                 <core-sitehome-all-course-list class="item" *ngIf="item == 'all-course-list'"></core-sitehome-all-course-list> |                 <core-sitehome-all-course-list class="item" *ngIf="item == 'all-course-list'"></core-sitehome-all-course-list> | ||||||
|                 <core-sitehome-categories  *ngIf="item == 'categories'"></core-sitehome-categories> |                 <core-sitehome-categories  *ngIf="item == 'categories'"></core-sitehome-categories> | ||||||
|  | |||||||
| @ -10,7 +10,7 @@ | |||||||
|     <core-loading [hideUntil]="userLoaded"> |     <core-loading [hideUntil]="userLoaded"> | ||||||
|         <div *ngIf="user"> |         <div *ngIf="user"> | ||||||
|             <ion-item-group *ngIf="hasContact"> |             <ion-item-group *ngIf="hasContact"> | ||||||
|                 <ion-item-divider color="light">{{ 'core.user.contact' | translate}}</ion-item-divider> |                 <ion-item-divider>{{ 'core.user.contact' | translate}}</ion-item-divider> | ||||||
|                 <ion-item text-wrap *ngIf="user.email"> |                 <ion-item text-wrap *ngIf="user.email"> | ||||||
|                     <h2>{{ 'core.user.email' | translate }}</h2> |                     <h2>{{ 'core.user.email' | translate }}</h2> | ||||||
|                     <p><a href="mailto:{{user.email}}" core-link auto-login="no"> |                     <p><a href="mailto:{{user.email}}" core-link auto-login="no"> | ||||||
| @ -46,7 +46,7 @@ | |||||||
|                 </ion-item> |                 </ion-item> | ||||||
|             </ion-item-group> |             </ion-item-group> | ||||||
|             <ion-item-group *ngIf="hasDetails"> |             <ion-item-group *ngIf="hasDetails"> | ||||||
|                 <ion-item-divider color="light">{{ 'core.userdetails' | translate}}</ion-item-divider> |                 <ion-item-divider>{{ 'core.userdetails' | translate}}</ion-item-divider> | ||||||
|                 <ion-item text-wrap *ngIf="user.url"> |                 <ion-item text-wrap *ngIf="user.url"> | ||||||
|                     <h2>{{ 'core.user.webpage' | translate}}</h2> |                     <h2>{{ 'core.user.webpage' | translate}}</h2> | ||||||
|                     <p><a href="{{user.url}}" core-link> |                     <p><a href="{{user.url}}" core-link> | ||||||
| @ -60,7 +60,7 @@ | |||||||
|                 <core-user-profile-field *ngFor="let field of user.customfields" [field]="field"></core-user-profile-field> |                 <core-user-profile-field *ngFor="let field of user.customfields" [field]="field"></core-user-profile-field> | ||||||
|             </ion-item-group> |             </ion-item-group> | ||||||
|             <ion-item-group *ngIf="user.description"> |             <ion-item-group *ngIf="user.description"> | ||||||
|                 <ion-item-divider color="light">{{ 'core.user.description' | translate}}</ion-item-divider> |                 <ion-item-divider>{{ 'core.user.description' | translate}}</ion-item-divider> | ||||||
|                 <ion-item text-wrap> |                 <ion-item text-wrap> | ||||||
|                     <p><core-format-text [text]="user.description"></core-format-text></p> |                     <p><core-format-text [text]="user.description"></core-format-text></p> | ||||||
|                 </ion-item> |                 </ion-item> | ||||||
|  | |||||||
| @ -123,6 +123,8 @@ $item-avatar-size: 54px !default; | |||||||
| $input-select-opacity: .5 !default; | $input-select-opacity: .5 !default; | ||||||
| $note-color: $gray-dark !default; | $note-color: $gray-dark !default; | ||||||
| $popover-width: 280px !default; | $popover-width: 280px !default; | ||||||
|  | $item-divider-background: $gray-lighter !default; | ||||||
|  | $item-divider-color: $black !default; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| // Moodle Mobile variables | // Moodle Mobile variables | ||||||
| @ -169,6 +171,8 @@ $checkbox-ios-disabled-opacity: $input-select-opacity !default; | |||||||
| $toggle-ios-disabled-opacity: $input-select-opacity !default; | $toggle-ios-disabled-opacity: $input-select-opacity !default; | ||||||
| $note-ios-color: $note-color; | $note-ios-color: $note-color; | ||||||
| $popover-ios-width: $popover-width; | $popover-ios-width: $popover-width; | ||||||
|  | $item-ios-divider-background: $item-divider-background; | ||||||
|  | $item-ios-divider-color: $item-divider-color; | ||||||
| 
 | 
 | ||||||
| // App Material Design Variables | // App Material Design Variables | ||||||
| // -------------------------------------------------- | // -------------------------------------------------- | ||||||
| @ -190,6 +194,8 @@ $toggle-md-disabled-opacity: $input-select-opacity !default; | |||||||
| $note-md-color: $note-color; | $note-md-color: $note-color; | ||||||
| $popover-md-width: $popover-width; | $popover-md-width: $popover-width; | ||||||
| $action-sheet-md-title-color: $core-color; | $action-sheet-md-title-color: $core-color; | ||||||
|  | $item-md-divider-background: $item-divider-background; | ||||||
|  | $item-md-divider-color: $item-divider-color; | ||||||
| 
 | 
 | ||||||
| // App Windows Variables | // App Windows Variables | ||||||
| // -------------------------------------------------- | // -------------------------------------------------- | ||||||
| @ -209,6 +215,8 @@ $checkbox-wp-disabled-opacity: $input-select-opacity !default; | |||||||
| $toggle-wp-disabled-opacity: $input-select-opacity !default; | $toggle-wp-disabled-opacity: $input-select-opacity !default; | ||||||
| $note-wp-color: $note-color; | $note-wp-color: $note-color; | ||||||
| $popover-wp-width: $popover-width; | $popover-wp-width: $popover-width; | ||||||
|  | $item-wp-divider-background: $item-divider-background; | ||||||
|  | $item-wp-divider-color: $item-divider-color; | ||||||
| 
 | 
 | ||||||
| // App Theme | // App Theme | ||||||
| // -------------------------------------------------- | // -------------------------------------------------- | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user