Merge pull request #2855 from crazyserver/MOBILE-3320

Mobile 3320
main
Dani Palou 2021-06-29 16:11:17 +02:00 committed by GitHub
commit 00c8bd56fe
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 70 additions and 65 deletions

View File

@ -248,6 +248,11 @@
<edit-config file="*-Info.plist" mode="merge" target="CFBundleShortVersionString"> <edit-config file="*-Info.plist" mode="merge" target="CFBundleShortVersionString">
<string>3.9.5</string> <string>3.9.5</string>
</edit-config> </edit-config>
<edit-config target="CFBundleLocalizations" file="*-Info.plist" mode="overwrite">
<array>
<string>en</string>
</array>
</edit-config>
<config-file parent="FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED" target="*-Info.plist"> <config-file parent="FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED" target="*-Info.plist">
<string>YES</string> <string>YES</string>
</config-file> </config-file>

View File

@ -2,9 +2,10 @@
<ion-label> <ion-label>
<h2>{{ 'addon.block_myoverview.pluginname' | translate }}</h2> <h2>{{ 'addon.block_myoverview.pluginname' | translate }}</h2>
</ion-label> </ion-label>
<div slot="end" class="flex-row">
<!-- Download all courses. --> <!-- Download all courses. -->
<div *ngIf="downloadCoursesEnabled && downloadEnabled && filteredCourses.length > 1 && !showFilter" class="core-button-spinner" <div *ngIf="downloadCoursesEnabled && downloadEnabled && filteredCourses.length > 1 && !showFilter"
slot="end"> class="core-button-spinner">
<ion-button *ngIf="!prefetchCoursesData[selectedFilter].loading" fill="clear" color="dark" (click)="prefetchCourses()" <ion-button *ngIf="!prefetchCoursesData[selectedFilter].loading" fill="clear" color="dark" (click)="prefetchCourses()"
[attr.aria-label]="'core.courses.downloadcourses' | translate"> [attr.aria-label]="'core.courses.downloadcourses' | translate">
<ion-icon [name]="prefetchCoursesData[selectedFilter].icon" slot="icon-only" aria-hidden="true"> <ion-icon [name]="prefetchCoursesData[selectedFilter].icon" slot="icon-only" aria-hidden="true">
@ -19,7 +20,7 @@
<ion-spinner *ngIf="prefetchCoursesData[selectedFilter].loading" [attr.aria-label]="'core.loading' | translate"> <ion-spinner *ngIf="prefetchCoursesData[selectedFilter].loading" [attr.aria-label]="'core.loading' | translate">
</ion-spinner> </ion-spinner>
</div> </div>
<core-context-menu slot="end"> <core-context-menu>
<core-context-menu-item *ngIf="loaded && showFilterSwitchButton()" [priority]="1000" <core-context-menu-item *ngIf="loaded && showFilterSwitchButton()" [priority]="1000"
[content]="'core.courses.filtermycourses' | translate" (action)="switchFilter()" iconAction="fas-filter" [content]="'core.courses.filtermycourses' | translate" (action)="switchFilter()" iconAction="fas-filter"
(onClosed)="switchFilterClosed()"></core-context-menu-item> (onClosed)="switchFilterClosed()"></core-context-menu-item>
@ -36,6 +37,7 @@
(action)="switchSort('lastaccess')" [iconAction]="sort == 'lastaccess' ? 'far-dot-circle' : 'far-circle'"> (action)="switchSort('lastaccess')" [iconAction]="sort == 'lastaccess' ? 'far-dot-circle' : 'far-circle'">
</core-context-menu-item> </core-context-menu-item>
</core-context-menu> </core-context-menu>
</div>
</ion-item-divider> </ion-item-divider>
<core-loading [hideUntil]="loaded" [fullscreen]="false" class="margin"> <core-loading [hideUntil]="loaded" [fullscreen]="false" class="margin">
<div class="safe-padding-horizontal" [hidden]="showFilter || !showSelectorFilter"> <div class="safe-padding-horizontal" [hidden]="showFilter || !showSelectorFilter">

View File

@ -109,7 +109,8 @@
<!-- Summary of submissions with draft status. --> <!-- Summary of submissions with draft status. -->
<ion-item class="ion-text-wrap" *ngIf="assign.submissiondrafts && summary && summary.submissionsenabled" <ion-item class="ion-text-wrap" *ngIf="assign.submissiondrafts && summary && summary.submissionsenabled"
[detail]="!showNumbers || summary.submissiondraftscount" [class.hide-detail]="showNumbers && !summary.submissiondraftscount"
detail="true"
[button]="!showNumbers || summary.submissiondraftscount" [button]="!showNumbers || summary.submissiondraftscount"
(click)="goToSubmissionList(submissionStatusDraft, !!summary.submissiondraftscount)"> (click)="goToSubmissionList(submissionStatusDraft, !!summary.submissiondraftscount)">
<ion-label><h2>{{ 'addon.mod_assign.numberofdraftsubmissions' | translate }}</h2></ion-label> <ion-label><h2>{{ 'addon.mod_assign.numberofdraftsubmissions' | translate }}</h2></ion-label>
@ -124,7 +125,8 @@
<!-- Summary of submissions with submitted status. --> <!-- Summary of submissions with submitted status. -->
<ion-item class="ion-text-wrap" *ngIf="summary && summary.submissionsenabled" <ion-item class="ion-text-wrap" *ngIf="summary && summary.submissionsenabled"
[detail]="!showNumbers || summary.submissionssubmittedcount" [class.hide-detail]="showNumbers && !summary.submissionssubmittedcount"
detail="true"
[button]="!showNumbers || summary.submissionssubmittedcount" [button]="!showNumbers || summary.submissionssubmittedcount"
(click)="goToSubmissionList(submissionStatusSubmitted, !!summary.submissionssubmittedcount)"> (click)="goToSubmissionList(submissionStatusSubmitted, !!summary.submissionssubmittedcount)">
<ion-label><h2>{{ 'addon.mod_assign.numberofsubmittedassignments' | translate }}</h2></ion-label> <ion-label><h2>{{ 'addon.mod_assign.numberofsubmittedassignments' | translate }}</h2></ion-label>
@ -139,7 +141,9 @@
<!-- Summary of submissions that need grading. --> <!-- Summary of submissions that need grading. -->
<ion-item class="ion-text-wrap" *ngIf="summary && summary.submissionsenabled && !assign.teamsubmission && showNumbers" <ion-item class="ion-text-wrap" *ngIf="summary && summary.submissionsenabled && !assign.teamsubmission && showNumbers"
[detail]="needsGradingAvailable" [button]="needsGradingAvailable" [class.hide-detail]="!needsGradingAvailable"
detail="true"
[button]="needsGradingAvailable"
(click)="goToSubmissionList(needGrading, needsGradingAvailable)"> (click)="goToSubmissionList(needGrading, needsGradingAvailable)">
<ion-label><h2>{{ 'addon.mod_assign.numberofsubmissionsneedgrading' | translate }}</h2></ion-label> <ion-label><h2>{{ 'addon.mod_assign.numberofsubmissionsneedgrading' | translate }}</h2></ion-label>
<ion-badge slot="end" color="primary"> <ion-badge slot="end" color="primary">

View File

@ -73,7 +73,9 @@
</ion-select-option> </ion-select-option>
</ion-select> </ion-select>
</ion-item> </ion-item>
<ion-item class="ion-text-wrap" (click)="openRespondents()" [detail]="access.canviewreports && completedCount > 0" <ion-item class="ion-text-wrap" (click)="openRespondents()"
[class.hide-detail]="!(access.canviewreports && completedCount > 0)"
detail="true"
[button]="access.canviewreports && completedCount > 0"> [button]="access.canviewreports && completedCount > 0">
<ion-label> <ion-label>
<h2>{{ 'addon.mod_feedback.completed_feedbacks' | translate }}</h2> <h2>{{ 'addon.mod_feedback.completed_feedbacks' | translate }}</h2>

View File

@ -63,7 +63,7 @@
<!-- Template to render a list of conversations. --> <!-- Template to render a list of conversations. -->
<ng-template #attemptsTemplate let-attempts="attempts"> <ng-template #attemptsTemplate let-attempts="attempts">
<!-- "Header" of the table --> <!-- "Header" of the table -->
<ion-item class="ion-text-wrap addon-mod_h5pactivity-table-header" detail="true"> <ion-item class="ion-text-wrap addon-mod_h5pactivity-table-header hide-detail" detail="true">
<ion-label> <ion-label>
<ion-row class="ion-align-items-center"> <ion-row class="ion-align-items-center">
<ion-col class="ion-text-center">#</ion-col> <ion-col class="ion-text-center">#</ion-col>

View File

@ -1,6 +1,5 @@
:host { :host {
.addon-mod_h5pactivity-table-header { .addon-mod_h5pactivity-table-header {
--detail-icon-opacity: 0;
font-weight: bold; font-weight: bold;
} }

View File

@ -74,7 +74,7 @@
</ion-card-header> </ion-card-header>
<ion-card-content role="table"> <ion-card-content role="table">
<!-- "Header" of the table --> <!-- "Header" of the table -->
<ion-item class="ion-text-wrap addon-mod_quiz-table-header"> <ion-item class="ion-text-wrap addon-mod_quiz-table-header detail-hide">
<ion-label role="rowgroup"> <ion-label role="rowgroup">
<ion-row class="ion-align-items-center" role="row"> <ion-row class="ion-align-items-center" role="row">
<ion-col class="ion-text-center" *ngIf="quiz.showAttemptColumn" role="columnheader"> <ion-col class="ion-text-center" *ngIf="quiz.showAttemptColumn" role="columnheader">

View File

@ -1,10 +1,6 @@
:host { :host {
.addon-mod_quiz-table { .addon-mod_quiz-table {
.addon-mod_quiz-table-header {
--detail-icon-opacity: 0;
}
ion-card-content { ion-card-content {
padding-left: 0; padding-left: 0;
padding-right: 0; padding-right: 0;

View File

@ -24,7 +24,6 @@ import { CoreStyleHandler, CoreStylesService } from '@features/styles/services/s
import { CoreLogger } from '@singletons/logger'; import { CoreLogger } from '@singletons/logger';
import { CoreUtils } from '@services/utils/utils'; import { CoreUtils } from '@services/utils/utils';
const SEPARATOR_35 = /\/\*\*? *3\.5(\.0)? *styles? *\*\//i; // A comment like "/* 3.5 styles */".
const COMPONENT = 'mmaRemoteStyles'; const COMPONENT = 'mmaRemoteStyles';
/** /**
@ -61,7 +60,7 @@ export class AddonRemoteThemesHandlerService implements CoreStyleHandler {
} }
// Config received, it's a temp site. // Config received, it's a temp site.
return await this.get35Styles(config.mobilecssurl); return await this.getRemoteStyles(config.mobilecssurl);
} }
const site = await CoreSites.getSite(siteId); const site = await CoreSites.getSite(siteId);
@ -86,7 +85,7 @@ export class AddonRemoteThemesHandlerService implements CoreStyleHandler {
this.logger.debug('Loading styles from: ', fileUrl); this.logger.debug('Loading styles from: ', fileUrl);
// Get the CSS content using HTTP because we will treat the styles before saving them in the file. // Get the CSS content using HTTP because we will treat the styles before saving them in the file.
const style = await this.get35Styles(fileUrl); const style = await this.getRemoteStyles(fileUrl);
if (style != '') { if (style != '') {
// Treat the CSS. // Treat the CSS.
@ -99,24 +98,17 @@ export class AddonRemoteThemesHandlerService implements CoreStyleHandler {
} }
/** /**
* Check if the CSS code has a separator for 3.5 styles. If it does, get only the styles after the separator. * Get styles from the url.
* *
* @param url Url to get the code from. * @param url Url to get the code from.
* @return The filtered styles. * @return The styles.
*/ */
protected async get35Styles(url?: string): Promise<string> { protected async getRemoteStyles(url?: string): Promise<string> {
if (!url) { if (!url) {
return ''; return '';
} }
const cssCode = await CoreWS.getText(url); return await CoreWS.getText(url);
const separatorPos = cssCode.search(SEPARATOR_35);
if (separatorPos > -1) {
return cssCode.substr(separatorPos).replace(SEPARATOR_35, '');
}
return cssCode;
} }
/** /**

View File

@ -284,7 +284,7 @@ core-format-text {
} }
core-format-text, core-format-text .core-format-text-content,
core-rich-text-editor .core-rte-editor { core-rich-text-editor .core-rte-editor {
@include core-headings(); @include core-headings();

View File

@ -148,22 +148,22 @@
@mixin core-headings() { @mixin core-headings() {
h1 { h1 {
font-size: 3rem; font-size: 26px;
} }
h2, .item-heading { h2, .item-heading {
font-size: 2.8rem; font-size: 24px;
} }
h3 { h3 {
font-size: 2.6rem; font-size: 22px;
} }
h4 { h4 {
font-size: 2.2rem; font-size: 20px;
} }
h5 { h5 {
font-size: 1.8rem; font-size: 18px;
} }
h6 { h6 {
font-size: 1.4rem; font-size: 16px;
} }
} }

View File

@ -881,6 +881,11 @@ ion-datetime.datetime-disabled {
opacity: .8 !important; opacity: .8 !important;
} }
// Hide details on items to align badges.
ion-item.hide-detail {
--detail-icon-opacity: 0;
}
// Make links clickable when inside radio or checkbox items. Style part. // Make links clickable when inside radio or checkbox items. Style part.
@media (hover: hover) { @media (hover: hover) {
ion-item.item-multiple-inputs:hover::part(native) { ion-item.item-multiple-inputs:hover::part(native) {