Merge pull request #1569 from crazyserver/MOBILE-2613

Mobile 2613
main
Juan Leyva 2018-10-16 17:32:32 +02:00 committed by GitHub
commit f233dbf5b4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 48 additions and 38 deletions

View File

@ -219,6 +219,7 @@ function find_better_file {
#Parses the file.
function parse_file {
findbetter=$2
keys=`jq -r 'keys[]' $1`
for key in $keys; do
# Check if already parsed.
@ -229,7 +230,7 @@ function parse_file {
value=`$exec`
if [ -z "$found" ] || [ "$found" == 'null' ]; then
guess_file $key "$value"
else
elif [ ! -z "$findbetter" ]; then
find_better_file "$key" "$value" "$found"
fi
done
@ -253,7 +254,8 @@ if [ ! -f 'langindex.json' ]; then
echo "{}" > langindex.json
fi
parse_file '../src/assets/lang/en.json'
findbetter=$1
parse_file '../src/assets/lang/en.json' $findbetter
echo

View File

@ -10,6 +10,7 @@
"addon.badges.issuername": "badges",
"addon.badges.nobadges": "badges",
"addon.badges.recipientdetails": "badges",
"addon.block_myoverview.all": "block_myoverview",
"addon.block_myoverview.future": "block_myoverview",
"addon.block_myoverview.inprogress": "block_myoverview",
"addon.block_myoverview.morecourses": "block_myoverview",

View File

@ -26,7 +26,7 @@ export class AddonBlockComponent implements OnInit {
protected domUtils: CoreDomUtilsProvider;
protected logger;
constructor(injector: Injector, loggerName: string = 'CoreCourseModuleMainResourceComponent') {
constructor(injector: Injector, loggerName: string = 'AddonBlockComponent') {
this.domUtils = injector.get(CoreDomUtilsProvider);
const loggerProvider = injector.get(CoreLoggerProvider);
this.logger = loggerProvider.getInstance(loggerName);

View File

@ -9,6 +9,7 @@
<!-- "Time" selector. -->
<div padding class="clearfix" [hidden]="showFilter" ion-row justify-content-end>
<ion-select [hidden]="!showSelectorFilter" [title]="'core.show' | translate" [(ngModel)]="selectedFilter" ion-col (ngModelChange)="selectedChanged()" interface="popover" class="core-button-select">
<ion-option value="all">{{ 'addon.block_myoverview.all' | translate }}</ion-option>
<ion-option value="inprogress">{{ 'addon.block_myoverview.inprogress' | translate }}</ion-option>
<ion-option value="future">{{ 'addon.block_myoverview.future' | translate }}</ion-option>
<ion-option value="past">{{ 'addon.block_myoverview.past' | translate }}</ion-option>
@ -22,9 +23,11 @@
<ion-spinner *ngIf="!prefetchCoursesData[selectedFilter].icon || prefetchCoursesData[selectedFilter].icon == 'spinner'"></ion-spinner>
</div>
</div>
<core-empty-box *ngIf="courses[selectedFilter].length == 0 && selectedFilter == 'inprogress'" image="assets/img/icons/courses.svg" [message]="'addon.block_myoverview.nocoursesinprogress' | translate"></core-empty-box>
<core-empty-box *ngIf="courses[selectedFilter].length == 0 && selectedFilter == 'future'" image="assets/img/icons/courses.svg" [message]="'addon.block_myoverview.nocoursesfuture' | translate"></core-empty-box>
<core-empty-box *ngIf="courses[selectedFilter].length == 0 && selectedFilter == 'past'" image="assets/img/icons/courses.svg" [message]="'addon.block_myoverview.nocoursespast' | translate"></core-empty-box>
<ng-container *ngIf="courses[selectedFilter].length == 0">
<core-empty-box *ngIf="selectedFilter == 'inprogress'" image="assets/img/icons/courses.svg" [message]="'addon.block_myoverview.nocoursesinprogress' | translate"></core-empty-box>
<core-empty-box *ngIf="selectedFilter == 'future'" image="assets/img/icons/courses.svg" [message]="'addon.block_myoverview.nocoursesfuture' | translate"></core-empty-box>
<core-empty-box *ngIf="selectedFilter == 'past'" image="assets/img/icons/courses.svg" [message]="'addon.block_myoverview.nocoursespast' | translate"></core-empty-box>
</ng-container>
<!-- Filter courses. -->
<ion-searchbar #searchbar *ngIf="showFilter" [(ngModel)]="courses.filter" (ionInput)="filterChanged($event)" (ionCancel)="filterChanged()" [placeholder]="'core.courses.filtermycourses' | translate">
@ -39,4 +42,4 @@
</ion-row>
</ion-grid>
</div>
</core-loading>
</core-loading>

View File

@ -36,6 +36,7 @@ export class AddonBlockMyOverviewComponent extends AddonBlockComponent implement
courses = {
filter: '',
all: [],
past: [],
inprogress: [],
future: []
@ -44,6 +45,7 @@ export class AddonBlockMyOverviewComponent extends AddonBlockComponent implement
downloadAllCoursesEnabled: boolean;
filteredCourses: any[];
prefetchCoursesData = {
all: {},
inprogress: {},
past: {},
future: {}
@ -139,6 +141,7 @@ export class AddonBlockMyOverviewComponent extends AddonBlockComponent implement
}).then((courses) => {
const today = moment().unix();
this.courses.all = courses;
this.courses.past = [];
this.courses.inprogress = [];
this.courses.future = [];

View File

@ -1,4 +1,5 @@
{
"all": "All",
"future": "Future",
"inprogress": "In progress",
"past": "Past",
@ -6,4 +7,4 @@
"nocoursesfuture": "No future courses",
"nocoursesinprogress": "No in progress courses",
"nocoursespast": "No past courses"
}
}

View File

@ -48,7 +48,7 @@
<ion-avatar item-start core-user-link [userId]="discussion.userid" [courseId]="courseId">
<img [src]="discussion.userpictureurl" onError="this.src='assets/img/user-avatar.png'" core-external-content [alt]="'core.pictureof' | translate:{$a: discussion.userfullname}" role="presentation">
</ion-avatar>
<h2><ion-icon name="pin" *ngIf="discussion.pinned"></ion-icon> <core-format-text [text]="discussion.subject"></core-format-text></h2>
<h2><core-icon name="fa-map-pin" *ngIf="discussion.pinned"></core-icon> <core-format-text [text]="discussion.subject"></core-format-text></h2>
<p>
<ion-note float-end padding-left text-end>
{{discussion.created | coreDateDayOrTime}}

View File

@ -10,6 +10,7 @@
"addon.badges.issuername": "Issuer name",
"addon.badges.nobadges": "There are no badges available.",
"addon.badges.recipientdetails": "Recipient details",
"addon.block_myoverview.all": "All",
"addon.block_myoverview.future": "Future",
"addon.block_myoverview.inprogress": "In progress",
"addon.block_myoverview.morecourses": "More courses",

View File

@ -1,4 +1,4 @@
$core-progress-bar-height: 5px !default;
$core-progress-bar-height: 10px !default;
ion-app.app-root core-progress-bar {
@include padding(null, 55px, null, null);
@ -8,10 +8,10 @@ ion-app.app-root core-progress-bar {
.core-progress-text {
@include margin(null, null, null, 10px);
line-height: normal;
line-height: 40px;
font-size: 1.4rem;
color: $gray-darker;
@include position(-6px, 0, null, null);
@include position(-15px, 10px, null, null);
position: absolute;
}
@ -26,15 +26,16 @@ ion-app.app-root core-progress-bar {
.progress-bar-fallback,
&[value]::-webkit-progress-bar {
background-color: $gray-light;
border-radius: 2px;
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1) inset;
background-color: $gray-lighter;
border-radius: 999px;
border: 1px solid $gray-light;
box-shadow: none;
}
.progress-bar-fallback span,
&[value]::-webkit-progress-value {
background-color: $core-progressbar-color;
border-radius: 2px;
border-radius: 999px;
}
.progress-bar-fallback {

View File

@ -17,6 +17,7 @@ ion-app.app-root core-send-message-form {
@include appearance(none);
display: block;
width: 100%;
min-height: 28px;
border: 0;
font-family: inherit;
align-self: self-start;

View File

@ -1,5 +1,5 @@
<ion-card>
<div (click)="openCourse(course)" class="core-course-thumb core-course-color-{{course.id % 10}}" [class.core-course-color-img]="course.imageThumb">
<ion-card [attr.course-color]="course.id % 10">
<div (click)="openCourse(course)" class="core-course-thumb" [class.core-course-color-img]="course.imageThumb">
<img *ngIf="course.imageThumb" [src]="course.imageThumb" core-external-content alt=""/>
</div>
<ion-item tappable text-wrap detail-none (click)="openCourse(course)" [title]="course.displayname || course.fullname" class="core-course-link" [class.item-disabled]="course.visible == 0">

View File

@ -3,6 +3,19 @@ ion-app.app-root core-courses-course-progress {
display: flex;
flex-direction: column;
@for $i from 0 to length($core-course-image-background) {
&[course-color="#{$i}"] {
.core-course-thumb {
background: nth($core-course-image-background, $i + 1);
}
progress .progress-bar-fallback span,
progress[value]::-webkit-progress-value {
background-color: nth($core-course-image-background, $i + 1);
}
}
}
.core-course-thumb {
height: 150px;
width: 100%;
@ -11,12 +24,6 @@ ion-app.app-root core-courses-course-progress {
pointer-events: auto;
position: relative;
@for $i from 0 to length($core-course-image-background) {
&.core-course-color-#{$i} {
background: nth($core-course-image-background, $i + 1);
}
}
&.core-course-color-img {
background: white;
}

View File

@ -12,7 +12,7 @@
<ion-content>
<core-tabs [selectedIndex]="firstSelectedTab" [hideUntil]="tabsReady">
<!-- Site home tab. -->
<core-tab [show]="siteHomeEnabled" [title]="'core.sitehome.sitehome' | translate" (ionSelect)="tabChanged('sitehome')">
<core-tab [show]="siteHomeEnabled" [title]="'core.sitehome.sitehome' | translate">
<ng-template>
<ion-content>
<ion-refresher [enabled]="!!siteHomeComponent && siteHomeComponent.dataLoaded" (ionRefresh)="siteHomeComponent.doRefresh($event)">
@ -24,7 +24,7 @@
</core-tab>
<!-- Courses tab. -->
<core-tab [show]="coursesEnabled" [title]="'core.courses.courses' | translate" (ionSelect)="tabChanged('courses')">
<core-tab [show]="coursesEnabled" [title]="'core.courses.courses' | translate">
<ng-template>
<ion-content>
<ion-refresher [enabled]="!!blockMyOverview && blockMyOverview.loaded" (ionRefresh)="blockMyOverview.doRefresh($event)">
@ -36,7 +36,7 @@
</core-tab>
<!-- Timeline tab. -->
<core-tab [show]="timelineEnabled" [title]="'core.courses.timeline' | translate" (ionSelect)="tabChanged('timeline')">
<core-tab [show]="timelineEnabled" [title]="'core.courses.timeline' | translate">
<ng-template>
<ion-content>
<ion-refresher [enabled]="!!blockTimeline && blockTimeline.loaded" (ionRefresh)="blockTimeline.doRefresh($event)">

View File

@ -43,7 +43,6 @@ export class CoreCoursesDashboardPage implements OnDestroy {
timelineEnabled = false;
coursesEnabled = false;
tabsReady = false;
tabShown = 'courses';
searchEnabled: boolean;
tabs = [];
siteName: string;
@ -111,15 +110,6 @@ export class CoreCoursesDashboardPage implements OnDestroy {
this.tabsComponent && this.tabsComponent.ionViewDidLeave();
}
/**
* The tab has changed.
*
* @param {string} tab Name of the new tab.
*/
tabChanged(tab: string): void {
this.tabShown = tab;
}
/**
* Go to search courses.
*/

View File

@ -18,7 +18,7 @@ $black: #3a3a3a; // Headings, standard text.
$gray-darker: #626262; // Text (emphasis-detail), placeholder, background.
$gray-dark: #9e9e9e; // Borders (never text).
$gray: #dddddd;
$gray-light: #eeeeee; // Background.
$gray-light: #e9e9e9; // Background.
$gray-lighter: #f5f5f5;
$white: #ffffff; // Background, reversed text.