commit
f233dbf5b4
|
@ -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
|
||||
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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 = [];
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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}}
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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)">
|
||||
|
|
|
@ -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.
|
||||
*/
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
Loading…
Reference in New Issue