MOBILE-2317 user: Solve PR errors and lints
parent
96d548e706
commit
debfb5c6c6
|
@ -46,7 +46,7 @@ export class AddonCalendarModule {
|
|||
localNotificationsProvider.registerClick(AddonCalendarProvider.COMPONENT, (data) => {
|
||||
if (data.eventid) {
|
||||
initDelegate.ready().then(() => {
|
||||
calendarProvider.isDisabled(data.siteId).then(function(disabled) {
|
||||
calendarProvider.isDisabled(data.siteId).then((disabled) => {
|
||||
if (disabled) {
|
||||
// The calendar is disabled in the site, don't open it.
|
||||
return;
|
||||
|
|
|
@ -45,10 +45,10 @@ export class AddonCalendarEventPage {
|
|||
courseName: string;
|
||||
notificationsEnabled = false;
|
||||
|
||||
constructor(private translate: TranslateService, private calendarProvider: AddonCalendarProvider, private navParams: NavParams,
|
||||
constructor(private translate: TranslateService, private calendarProvider: AddonCalendarProvider, navParams: NavParams,
|
||||
private domUtils: CoreDomUtilsProvider, private coursesProvider: CoreCoursesProvider,
|
||||
private calendarHelper: AddonCalendarHelperProvider, private sitesProvider: CoreSitesProvider,
|
||||
private localNotificationsProvider: CoreLocalNotificationsProvider, private courseProvider: CoreCourseProvider) {
|
||||
private calendarHelper: AddonCalendarHelperProvider, sitesProvider: CoreSitesProvider,
|
||||
localNotificationsProvider: CoreLocalNotificationsProvider, private courseProvider: CoreCourseProvider) {
|
||||
|
||||
this.eventId = navParams.get('id');
|
||||
this.notificationsEnabled = localNotificationsProvider.isAvailable();
|
||||
|
|
|
@ -63,11 +63,11 @@ export class AddonCalendarListPage implements OnDestroy {
|
|||
course: this.allCourses
|
||||
};
|
||||
|
||||
constructor(private translate: TranslateService, private calendarProvider: AddonCalendarProvider, private navParams: NavParams,
|
||||
constructor(private translate: TranslateService, private calendarProvider: AddonCalendarProvider, navParams: NavParams,
|
||||
private domUtils: CoreDomUtilsProvider, private coursesProvider: CoreCoursesProvider, private utils: CoreUtilsProvider,
|
||||
private calendarHelper: AddonCalendarHelperProvider, private sitesProvider: CoreSitesProvider,
|
||||
private localNotificationsProvider: CoreLocalNotificationsProvider, private popoverCtrl: PopoverController,
|
||||
private eventsProvider: CoreEventsProvider, private navCtrl: NavController, private appProvider: CoreAppProvider) {
|
||||
private calendarHelper: AddonCalendarHelperProvider, sitesProvider: CoreSitesProvider,
|
||||
localNotificationsProvider: CoreLocalNotificationsProvider, private popoverCtrl: PopoverController,
|
||||
eventsProvider: CoreEventsProvider, private navCtrl: NavController, appProvider: CoreAppProvider) {
|
||||
|
||||
this.siteHomeId = sitesProvider.getCurrentSite().getSiteHomeId();
|
||||
this.notificationsEnabled = localNotificationsProvider.isAvailable();
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
|
||||
import { Injectable } from '@angular/core';
|
||||
import { CoreLoggerProvider } from '../../../providers/logger';
|
||||
import { CoreSitesProvider } from '../../../providers/sites';
|
||||
import { CoreCourseProvider } from '../../../core/course/providers/course';
|
||||
|
||||
/**
|
||||
|
@ -32,7 +31,7 @@ export class AddonCalendarHelperProvider {
|
|||
'category': 'albums'
|
||||
};
|
||||
|
||||
constructor(logger: CoreLoggerProvider, private sitesProvider: CoreSitesProvider, private courseProvider: CoreCourseProvider) {
|
||||
constructor(logger: CoreLoggerProvider, private courseProvider: CoreCourseProvider) {
|
||||
this.logger = logger.getInstance('AddonCalendarHelperProvider');
|
||||
}
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
|
||||
import { Component, Input, OnInit } from '@angular/core';
|
||||
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
|
||||
import { CoreUtilsProvider } from '../../../../providers/utils/utils';
|
||||
|
||||
/**
|
||||
* Directive to render a checkbox user profile field.
|
||||
|
@ -28,7 +29,7 @@ export class AddonUserProfileFieldCheckboxComponent implements OnInit {
|
|||
@Input() disabled?: boolean = false; // True if disabled. Defaults to false.
|
||||
@Input() form?: FormGroup; // Form where to add the form control.
|
||||
|
||||
constructor(private fb: FormBuilder) {}
|
||||
constructor(private fb: FormBuilder, protected utils: CoreUtilsProvider) {}
|
||||
|
||||
/**
|
||||
* Component being initialized.
|
||||
|
@ -41,10 +42,11 @@ export class AddonUserProfileFieldCheckboxComponent implements OnInit {
|
|||
|
||||
// Initialize the value.
|
||||
let formData = {
|
||||
value: field.defaultdata && field.defaultdata !== '0' && field.defaultdata !== 'false',
|
||||
value: this.utils.isTrueOrOne(field.defaultdata),
|
||||
disabled: this.disabled
|
||||
};
|
||||
this.form.addControl(field.modelName, this.fb.control(formData, field.required && !field.locked ? Validators.requiredTrue : null));
|
||||
this.form.addControl(field.modelName, this.fb.control(formData,
|
||||
field.required && !field.locked ? Validators.requiredTrue : null));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -13,7 +13,8 @@
|
|||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
import { Injectable } from '@angular/core';
|
||||
import { CoreUserProfileFieldHandler, CoreUserProfileFieldHandlerData } from '../../../../core/user/providers/user-profile-field-delegate';
|
||||
import { CoreUserProfileFieldHandler, CoreUserProfileFieldHandlerData } from
|
||||
'../../../../core/user/providers/user-profile-field-delegate';
|
||||
import { AddonUserProfileFieldCheckboxComponent } from '../component/checkbox';
|
||||
|
||||
/**
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
import { Component, Input, OnInit } from '@angular/core';
|
||||
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
|
||||
import { CoreTimeUtilsProvider } from '../../../../providers/utils/time';
|
||||
import { CoreUtilsProvider } from '../../../../providers/utils/utils';
|
||||
|
||||
/**
|
||||
* Directive to render a datetime user profile field.
|
||||
|
@ -29,7 +30,7 @@ export class AddonUserProfileFieldDatetimeComponent implements OnInit {
|
|||
@Input() disabled?: boolean = false; // True if disabled. Defaults to false.
|
||||
@Input() form?: FormGroup; // Form where to add the form control.
|
||||
|
||||
constructor(private fb: FormBuilder, private timeUtils: CoreTimeUtilsProvider) {}
|
||||
constructor(private fb: FormBuilder, private timeUtils: CoreTimeUtilsProvider, protected utils: CoreUtilsProvider) {}
|
||||
|
||||
/**
|
||||
* Component being initialized.
|
||||
|
@ -41,7 +42,7 @@ export class AddonUserProfileFieldDatetimeComponent implements OnInit {
|
|||
field.modelName = 'profile_field_' + field.shortname;
|
||||
|
||||
// Check if it's only date or it has time too.
|
||||
let hasTime = field.param3 && field.param3 !== '0' && field.param3 !== 'false';
|
||||
let hasTime = this.utils.isTrueOrOne(field.param3);
|
||||
field.format = hasTime ? this.timeUtils.getLocalizedDateFormat('LLL') : this.timeUtils.getLocalizedDateFormat('LL');
|
||||
|
||||
// Check min value.
|
||||
|
@ -64,7 +65,8 @@ export class AddonUserProfileFieldDatetimeComponent implements OnInit {
|
|||
value: field.defaultdata,
|
||||
disabled: this.disabled
|
||||
};
|
||||
this.form.addControl(field.modelName, this.fb.control(formData, field.required && !field.locked ? Validators.required : null));
|
||||
this.form.addControl(field.modelName, this.fb.control(formData,
|
||||
field.required && !field.locked ? Validators.required : null));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -13,9 +13,9 @@
|
|||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
import { Injectable } from '@angular/core';
|
||||
import { CoreUserProfileFieldHandler, CoreUserProfileFieldHandlerData } from '../../../../core/user/providers/user-profile-field-delegate';
|
||||
import { CoreUserProfileFieldHandler, CoreUserProfileFieldHandlerData } from
|
||||
'../../../../core/user/providers/user-profile-field-delegate';
|
||||
import { AddonUserProfileFieldDatetimeComponent } from '../component/datetime';
|
||||
import { Platform } from 'ionic-angular';
|
||||
|
||||
/**
|
||||
* Datetime user profile field handlers.
|
||||
|
@ -24,7 +24,7 @@ import { Platform } from 'ionic-angular';
|
|||
export class AddonUserProfileFieldDatetimeHandler implements CoreUserProfileFieldHandler {
|
||||
name = 'datetime';
|
||||
|
||||
constructor(private platform: Platform) {}
|
||||
constructor() {}
|
||||
|
||||
/**
|
||||
* Whether or not the handler is enabled on a site level.
|
||||
|
|
|
@ -51,7 +51,8 @@ export class AddonUserProfileFieldMenuComponent implements OnInit {
|
|||
disabled: this.disabled
|
||||
};
|
||||
// Initialize the value using default data.
|
||||
this.form.addControl(field.modelName, this.fb.control(formData, field.required && !field.locked ? Validators.required : null));
|
||||
this.form.addControl(field.modelName, this.fb.control(formData,
|
||||
field.required && !field.locked ? Validators.required : null));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -13,7 +13,8 @@
|
|||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
import { Injectable } from '@angular/core';
|
||||
import { CoreUserProfileFieldHandler, CoreUserProfileFieldHandlerData } from '../../../../core/user/providers/user-profile-field-delegate';
|
||||
import { CoreUserProfileFieldHandler, CoreUserProfileFieldHandlerData } from
|
||||
'../../../../core/user/providers/user-profile-field-delegate';
|
||||
import { AddonUserProfileFieldMenuComponent } from '../component/menu';
|
||||
|
||||
/**
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
|
||||
import { Component, Input, OnInit } from '@angular/core';
|
||||
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
|
||||
import { CoreUtilsProvider } from '../../../../providers/utils/utils';
|
||||
|
||||
/**
|
||||
* Directive to render a text user profile field.
|
||||
|
@ -28,7 +29,7 @@ export class AddonUserProfileFieldTextComponent implements OnInit {
|
|||
@Input() disabled?: boolean = false; // True if disabled. Defaults to false.
|
||||
@Input() form?: FormGroup; // Form where to add the form control.
|
||||
|
||||
constructor(private fb: FormBuilder) {}
|
||||
constructor(private fb: FormBuilder, protected utils: CoreUtilsProvider) {}
|
||||
|
||||
/**
|
||||
* Component being initialized.
|
||||
|
@ -45,14 +46,15 @@ export class AddonUserProfileFieldTextComponent implements OnInit {
|
|||
}
|
||||
|
||||
// Check if it's a password or text.
|
||||
field.inputType = field.param3 && field.param3 !== '0' && field.param3 !== 'false' ? 'password' : 'text';
|
||||
field.inputType = this.utils.isTrueOrOne(field.param3) ? 'password' : 'text';
|
||||
|
||||
let formData = {
|
||||
value: field.defaultdata,
|
||||
disabled: this.disabled
|
||||
};
|
||||
// Initialize the value using default data.
|
||||
this.form.addControl(field.modelName, this.fb.control(formData, field.required && !field.locked ? Validators.required : null));
|
||||
this.form.addControl(field.modelName, this.fb.control(formData,
|
||||
field.required && !field.locked ? Validators.required : null));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -13,7 +13,8 @@
|
|||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
import { Injectable } from '@angular/core';
|
||||
import { CoreUserProfileFieldHandler, CoreUserProfileFieldHandlerData } from '../../../../core/user/providers/user-profile-field-delegate';
|
||||
import { CoreUserProfileFieldHandler, CoreUserProfileFieldHandlerData } from
|
||||
'../../../../core/user/providers/user-profile-field-delegate';
|
||||
import { AddonUserProfileFieldTextComponent } from '../component/text';
|
||||
import { CoreTextUtilsProvider } from '../../../../providers/utils/text';
|
||||
|
||||
|
|
|
@ -40,15 +40,15 @@ export class AddonUserProfileFieldTextareaComponent implements OnInit {
|
|||
|
||||
if (field && this.edit && this.form) {
|
||||
field.modelName = 'profile_field_' + field.shortname;
|
||||
|
||||
let formData = {
|
||||
value: field.defaultdata,
|
||||
disabled: this.disabled
|
||||
};
|
||||
|
||||
this.control = new FormControl(formData, field.required && !field.locked ? Validators.required : null);
|
||||
this.form.addControl(field.modelName, this.control);
|
||||
}
|
||||
|
||||
let formData = {
|
||||
value: field.defaultdata,
|
||||
disabled: this.disabled
|
||||
};
|
||||
|
||||
this.control = new FormControl(formData, field.required && !field.locked ? Validators.required : null);
|
||||
this.form.addControl(field.modelName, this.control);
|
||||
}
|
||||
|
||||
}
|
|
@ -13,7 +13,8 @@
|
|||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
import { Injectable } from '@angular/core';
|
||||
import { CoreUserProfileFieldHandler, CoreUserProfileFieldHandlerData } from '../../../../core/user/providers/user-profile-field-delegate';
|
||||
import { CoreUserProfileFieldHandler, CoreUserProfileFieldHandlerData } from
|
||||
'../../../../core/user/providers/user-profile-field-delegate';
|
||||
import { AddonUserProfileFieldTextareaComponent } from '../component/textarea';
|
||||
import { CoreTextUtilsProvider } from '../../../../providers/utils/text';
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@ export class CoreDelegate {
|
|||
|
||||
/**
|
||||
* Logger instance get from CoreLoggerProvider.
|
||||
* @type {function}
|
||||
* @type {any}
|
||||
*/
|
||||
protected logger;
|
||||
|
||||
|
@ -84,7 +84,6 @@ export class CoreDelegate {
|
|||
constructor(delegateName: string, protected loggerProvider: CoreLoggerProvider, protected sitesProvider: CoreSitesProvider,
|
||||
protected eventsProvider: CoreEventsProvider) {
|
||||
this.logger = this.loggerProvider.getInstance(delegateName);
|
||||
this.sitesProvider = sitesProvider;
|
||||
|
||||
// Update handlers on this cases.
|
||||
eventsProvider.on(CoreEventsProvider.LOGIN, this.updateHandlers.bind(this));
|
||||
|
@ -151,9 +150,9 @@ export class CoreDelegate {
|
|||
*
|
||||
* @param {string} name The handler name.
|
||||
* @param {boolean} [enabled] Only enabled, or any.
|
||||
* @return {boolean} If the controller is installed or not.
|
||||
* @return {boolean} If the handler is registered or not.
|
||||
*/
|
||||
hasHandler(name: string, enabled = false) : boolean {
|
||||
hasHandler(name: string, enabled = false): boolean {
|
||||
return enabled ? typeof this.enabledHandlers[name] !== 'undefined' : typeof this.handlers[name] !== 'undefined';
|
||||
}
|
||||
|
||||
|
@ -172,9 +171,12 @@ export class CoreDelegate {
|
|||
}
|
||||
|
||||
/**
|
||||
* Register a profile handler.
|
||||
* Register a handler.
|
||||
*
|
||||
* @param {CoreDelegateHandler} handler The handler delegate object to register.
|
||||
* @return {boolean} True when registered, false if already registered.
|
||||
*/
|
||||
registerHandler(handler: CoreDelegateHandler) {
|
||||
registerHandler(handler: CoreDelegateHandler): boolean {
|
||||
if (typeof this.handlers[handler.name] !== 'undefined') {
|
||||
this.logger.log(`Addon '${handler.name}' already registered`);
|
||||
return false;
|
||||
|
|
|
@ -26,7 +26,7 @@ export class CoreCoursePickerMenuPopoverComponent {
|
|||
courses: any[];
|
||||
courseId = -1;
|
||||
|
||||
constructor(private navParams: NavParams, private viewCtrl: ViewController) {
|
||||
constructor(navParams: NavParams, private viewCtrl: ViewController) {
|
||||
this.courses = navParams.get('courses') || [];
|
||||
this.courseId = navParams.get('courseId') || -1;
|
||||
}
|
||||
|
|
|
@ -29,8 +29,7 @@ import { Keyboard } from '@ionic-native/keyboard';
|
|||
* could be easily broken.
|
||||
*
|
||||
* Example:
|
||||
* <core-rich-text-editor model="newpost" placeholder="{{ 'mma.mod_forum.message' | translate }}" scroll-handle="mmaScrollHandle">
|
||||
* </core-rich-text-editor>
|
||||
* <core-rich-text-editor item-content [control]="control" [placeholder]="field.name"></core-rich-text-editor>
|
||||
*
|
||||
* In the example above, the text written in the editor will be stored in newpost.text.
|
||||
*/
|
||||
|
|
|
@ -14,9 +14,8 @@
|
|||
|
||||
// Code based on https://github.com/martinpritchardelevate/ionic-split-pane-demo
|
||||
|
||||
import { Component, ViewChild, Injectable, Input, ElementRef, OnInit } from '@angular/core';
|
||||
import { Component, ViewChild, Input, ElementRef, OnInit } from '@angular/core';
|
||||
import { NavController, Nav } from 'ionic-angular';
|
||||
import { CoreSplitViewPlaceholderPage } from './placeholder/placeholder';
|
||||
|
||||
/**
|
||||
* Directive to create a split view layout.
|
||||
|
|
|
@ -12,8 +12,7 @@
|
|||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
import { Component, Input, Output, OnInit, OnDestroy, ElementRef, EventEmitter, ContentChild, TemplateRef,
|
||||
ViewChild } from '@angular/core';
|
||||
import { Component, Input, Output, OnInit, OnDestroy, ElementRef, EventEmitter, ContentChild, TemplateRef } from '@angular/core';
|
||||
import { CoreTabsComponent } from './tabs';
|
||||
import { Content } from 'ionic-angular';
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// limitations under the License.
|
||||
|
||||
import { Component, Input, Output, EventEmitter, OnInit, OnChanges, AfterViewInit, ViewChild, ElementRef,
|
||||
SimpleChange } from '@angular/core';
|
||||
SimpleChange } from '@angular/core';
|
||||
import { CoreTabComponent } from './tab';
|
||||
import { Content } from 'ionic-angular';
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@ export class CoreContentLinksHelperProvider {
|
|||
*/
|
||||
goInSite(navCtrl: NavController, pageName: string, pageParams: any, siteId?: string) : void {
|
||||
siteId = siteId || this.sitesProvider.getCurrentSiteId();
|
||||
if (siteId == this.sitesProvider.getCurrentSiteId()) {
|
||||
if (navCtrl && siteId == this.sitesProvider.getCurrentSiteId()) {
|
||||
navCtrl.push(pageName, pageParams);
|
||||
} else {
|
||||
this.loginHelper.redirect(pageName, pageParams, siteId);
|
||||
|
|
|
@ -13,9 +13,6 @@
|
|||
// limitations under the License.
|
||||
|
||||
import { Component, Input, OnInit } from '@angular/core';
|
||||
import { IonicPage, NavParams } from 'ionic-angular';
|
||||
import { TranslateService } from '@ngx-translate/core';
|
||||
import { CoreTextUtilsProvider } from '../../../../providers/utils/text';
|
||||
import { CoreCourseProvider } from '../../providers/course';
|
||||
import { CoreCourseModuleDelegate } from '../../providers/module-delegate';
|
||||
|
||||
|
@ -34,8 +31,7 @@ export class CoreCourseUnsupportedModuleComponent implements OnInit {
|
|||
isSupportedByTheApp: boolean;
|
||||
moduleName: string;
|
||||
|
||||
constructor(navParams: NavParams, private translate: TranslateService, private textUtils: CoreTextUtilsProvider,
|
||||
private courseProvider: CoreCourseProvider, private moduleDelegate: CoreCourseModuleDelegate) {}
|
||||
constructor(private courseProvider: CoreCourseProvider, private moduleDelegate: CoreCourseModuleDelegate) {}
|
||||
|
||||
/**
|
||||
* Component being initialized.
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// limitations under the License.
|
||||
|
||||
import { Component } from '@angular/core';
|
||||
import { IonicPage, NavParams, NavController } from 'ionic-angular';
|
||||
import { IonicPage, NavParams } from 'ionic-angular';
|
||||
import { TranslateService } from '@ngx-translate/core';
|
||||
import { CoreTextUtilsProvider } from '../../../../providers/utils/text';
|
||||
|
||||
|
@ -28,8 +28,7 @@ import { CoreTextUtilsProvider } from '../../../../providers/utils/text';
|
|||
export class CoreCourseUnsupportedModulePage {
|
||||
module: any;
|
||||
|
||||
constructor(navParams: NavParams, private translate: TranslateService, private textUtils: CoreTextUtilsProvider,
|
||||
private navCtrl: NavController) {
|
||||
constructor(navParams: NavParams, private translate: TranslateService, private textUtils: CoreTextUtilsProvider) {
|
||||
this.module = navParams.get('module') || {};
|
||||
}
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ import { CoreCoursesDelegate, CoreCoursesHandlerToDisplay } from '../../courses/
|
|||
import { CoreSiteHomeProvider } from '../../sitehome/providers/sitehome';
|
||||
import { CoreCourseProvider } from './course';
|
||||
import { CoreCourseModuleDelegate } from './module-delegate';
|
||||
import { CoreCourseModulePrefetchDelegate, CoreCourseModulePrefetchHandler } from './module-prefetch-delegate';
|
||||
import { CoreCourseModulePrefetchDelegate } from './module-prefetch-delegate';
|
||||
import { CoreLoginHelperProvider } from '../../login/providers/helper';
|
||||
import { CoreConstants } from '../../constants';
|
||||
import { CoreSite } from '../../../classes/site';
|
||||
|
|
|
@ -13,7 +13,6 @@
|
|||
// limitations under the License.
|
||||
|
||||
import { Injectable } from '@angular/core';
|
||||
import { NavController } from 'ionic-angular';
|
||||
import { CoreEventsProvider } from '../../../providers/events';
|
||||
import { CoreFileProvider } from '../../../providers/file';
|
||||
import { CoreFilepoolProvider } from '../../../providers/filepool';
|
||||
|
@ -957,8 +956,7 @@ export class CoreCourseModulePrefetchDelegate {
|
|||
* @return {Promise<boolean>} Promise resolved with true if downloadable, false otherwise.
|
||||
*/
|
||||
isModuleDownloadable(module: any, courseId: number) : Promise<boolean> {
|
||||
let handler = this.getPrefetchHandlerFor(module),
|
||||
promise;
|
||||
let handler = this.getPrefetchHandlerFor(module);
|
||||
|
||||
if (handler) {
|
||||
if (typeof handler.isDownloadable == 'function') {
|
||||
|
|
|
@ -31,7 +31,8 @@ import { CoreCoursesProvider } from '../../providers/courses';
|
|||
export class CoreCoursesCourseListItemComponent implements OnInit {
|
||||
@Input() course: any; // The course to render.
|
||||
|
||||
constructor(private navCtrl: NavController, private translate: TranslateService, private coursesProvider: CoreCoursesProvider) {}
|
||||
constructor(private navCtrl: NavController, private translate: TranslateService, private coursesProvider: CoreCoursesProvider) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Component being initialized.
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
|
||||
import { Component, Input, OnInit, OnDestroy } from '@angular/core';
|
||||
import { NavController } from 'ionic-angular';
|
||||
import { TranslateService } from '@ngx-translate/core';
|
||||
import { CoreEventsProvider } from '../../../../providers/events';
|
||||
import { CoreSitesProvider } from '../../../../providers/sites';
|
||||
import { CoreDomUtilsProvider } from '../../../../providers/utils/dom';
|
||||
|
@ -45,7 +44,7 @@ export class CoreCoursesCourseProgressComponent implements OnInit, OnDestroy {
|
|||
protected isDestroyed = false;
|
||||
protected courseStatusObserver;
|
||||
|
||||
constructor(private navCtrl: NavController, private translate: TranslateService, private courseHelper: CoreCourseHelperProvider,
|
||||
constructor(private navCtrl: NavController, private courseHelper: CoreCourseHelperProvider,
|
||||
private courseFormatDelegate: CoreCourseFormatDelegate, private domUtils: CoreDomUtilsProvider,
|
||||
private courseProvider: CoreCourseProvider, eventsProvider: CoreEventsProvider, sitesProvider: CoreSitesProvider) {
|
||||
// Listen for status change in course.
|
||||
|
|
|
@ -16,7 +16,6 @@ import { Injectable } from '@angular/core';
|
|||
import { CoreContentLinksHandlerBase } from '../../contentlinks/classes/base-handler';
|
||||
import { CoreContentLinksAction } from '../../contentlinks/providers/delegate';
|
||||
import { CoreLoginHelperProvider } from '../../login/providers/helper';
|
||||
import { CoreCoursesProvider } from './courses';
|
||||
|
||||
/**
|
||||
* Handler to treat links to my overview.
|
||||
|
@ -27,7 +26,7 @@ export class CoreCoursesMyOverviewLinkHandler extends CoreContentLinksHandlerBas
|
|||
featureName = '$mmSideMenuDelegate_mmCourses';
|
||||
pattern = /\/my\/?$/;
|
||||
|
||||
constructor(private coursesProvider: CoreCoursesProvider, private loginHelper: CoreLoginHelperProvider) {
|
||||
constructor(private loginHelper: CoreLoginHelperProvider) {
|
||||
super();
|
||||
}
|
||||
|
||||
|
|
|
@ -384,7 +384,8 @@ export class FileMock extends File {
|
|||
* @param {string} dirName The source directory name.
|
||||
* @param {string} newPath The destionation path to the directory.
|
||||
* @param {string} newDirName The destination directory name.
|
||||
* @returns {Promise<DirectoryEntry|Entry>} Returns a Promise that resolves to the new DirectoryEntry object or rejects with an error.
|
||||
* @returns {Promise<DirectoryEntry|Entry>} Returns a Promise that resolves to the new DirectoryEntry object or rejects with
|
||||
* an error.
|
||||
*/
|
||||
moveDir(path: string, dirName: string, newPath: string, newDirName: string): Promise<DirectoryEntry | Entry> {
|
||||
return this.resolveDirectoryUrl(path).then((fse) => {
|
||||
|
@ -421,7 +422,8 @@ export class FileMock extends File {
|
|||
* Read file and return data as an ArrayBuffer.
|
||||
* @param {string} path Base FileSystem.
|
||||
* @param {string} file Name of file, relative to path.
|
||||
* @returns {Promise<ArrayBuffer>} Returns a Promise that resolves with the contents of the file as ArrayBuffer or rejects with an error.
|
||||
* @returns {Promise<ArrayBuffer>} Returns a Promise that resolves with the contents of the file as ArrayBuffer or rejects
|
||||
* with an error.
|
||||
*/
|
||||
readAsArrayBuffer(path: string, file: string): Promise<ArrayBuffer> {
|
||||
return this.readFileMock<ArrayBuffer>(path, file, 'ArrayBuffer');
|
||||
|
@ -444,7 +446,8 @@ export class FileMock extends File {
|
|||
|
||||
* @param {string} path Base FileSystem.
|
||||
* @param {string} file Name of file, relative to path.
|
||||
* @returns {Promise<string>} Returns a Promise that resolves with the contents of the file as data URL or rejects with an error.
|
||||
* @returns {Promise<string>} Returns a Promise that resolves with the contents of the file as data URL or rejects
|
||||
* with an error.
|
||||
*/
|
||||
readAsDataURL(path: string, file: string): Promise<string> {
|
||||
return this.readFileMock<string>(path, file, 'DataURL');
|
||||
|
|
|
@ -712,7 +712,8 @@ export class LocalNotificationsMock extends LocalNotifications {
|
|||
let tileNotif = new this.winNotif.TileNotification({
|
||||
tag: notification.id + '',
|
||||
template: this.tileTemplate,
|
||||
strings: [notification.title, notification.text, notification.title, notification.text, notification.title, notification.text],
|
||||
strings: [notification.title, notification.text, notification.title, notification.text, notification.title,
|
||||
notification.text],
|
||||
expirationTime: new Date(Date.now() + CoreConstants.SECONDS_HOUR * 1000) // Expire in 1 hour.
|
||||
})
|
||||
|
||||
|
|
|
@ -65,7 +65,8 @@ export class CoreFileUploaderHelperProvider {
|
|||
}
|
||||
|
||||
wifiThreshold = typeof wifiThreshold == 'undefined' ? CoreFileUploaderProvider.WIFI_SIZE_WARNING : wifiThreshold;
|
||||
limitedThreshold = typeof limitedThreshold == 'undefined' ? CoreFileUploaderProvider.LIMITED_SIZE_WARNING : limitedThreshold;
|
||||
limitedThreshold = typeof limitedThreshold == 'undefined' ?
|
||||
CoreFileUploaderProvider.LIMITED_SIZE_WARNING : limitedThreshold;
|
||||
|
||||
if (size < 0) {
|
||||
return this.domUtils.showConfirm(this.translate.instant('core.fileuploader.confirmuploadunknownsize'));
|
||||
|
|
|
@ -229,7 +229,8 @@ export class CoreLoginEmailSignupPage {
|
|||
}
|
||||
|
||||
// Get the data for the custom profile fields.
|
||||
this.userProfileFieldDelegate.getDataForFields(this.settings.profilefields, true, 'email', this.signupForm.value).then((fieldsData) => {
|
||||
this.userProfileFieldDelegate.getDataForFields(this.settings.profilefields, true, 'email', this.signupForm.value).then(
|
||||
(fieldsData) => {
|
||||
params.customprofilefields = fieldsData;
|
||||
|
||||
this.wsProvider.callAjax('auth_email_signup_user', params, {siteUrl: this.siteUrl}).then((result) => {
|
||||
|
|
|
@ -88,7 +88,7 @@ export class CoreMainMenuDelegate extends CoreDelegate {
|
|||
protected handlers: {[s: string]: CoreMainMenuHandler} = {};
|
||||
protected enabledHandlers: {[s: string]: CoreMainMenuHandler} = {};
|
||||
protected loaded = false;
|
||||
protected siteHandlers: Subject<CoreMainMenuHandlerToDisplay[]> = new BehaviorSubject<CoreMainMenuHandlerData[]>([]);
|
||||
protected siteHandlers: Subject<CoreMainMenuHandlerToDisplay[]> = new BehaviorSubject<CoreMainMenuHandlerToDisplay[]>([]);
|
||||
protected featurePrefix = '$mmSideMenuDelegate_';
|
||||
|
||||
constructor(protected loggerProvider: CoreLoggerProvider, protected sitesProvider: CoreSitesProvider,
|
||||
|
|
|
@ -12,8 +12,7 @@
|
|||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
import { Component, Input } from '@angular/core';
|
||||
import { IonicPage } from 'ionic-angular';
|
||||
import { Component } from '@angular/core';
|
||||
import { CoreCoursesProvider } from '../../../courses/providers/courses';
|
||||
|
||||
/**
|
||||
|
|
|
@ -12,8 +12,7 @@
|
|||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
import { Component, Input } from '@angular/core';
|
||||
import { IonicPage } from 'ionic-angular';
|
||||
import { Component } from '@angular/core';
|
||||
import { CoreCoursesProvider } from '../../../courses/providers/courses';
|
||||
|
||||
/**
|
||||
|
|
|
@ -12,8 +12,7 @@
|
|||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
import { Component, Input } from '@angular/core';
|
||||
import { IonicPage } from 'ionic-angular';
|
||||
import { Component } from '@angular/core';
|
||||
import { CoreCoursesProvider } from '../../../courses/providers/courses';
|
||||
|
||||
/**
|
||||
|
|
|
@ -12,8 +12,7 @@
|
|||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
import { Component, Input, OnInit } from '@angular/core';
|
||||
import { IonicPage } from 'ionic-angular';
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
import { CoreCoursesProvider } from '../../../courses/providers/courses';
|
||||
|
||||
/**
|
||||
|
|
|
@ -12,8 +12,7 @@
|
|||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
import { Component, OnInit, Input } from '@angular/core';
|
||||
import { IonicPage } from 'ionic-angular';
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
import { CoreSitesProvider } from '../../../../providers/sites';
|
||||
import { CoreDomUtilsProvider } from '../../../../providers/utils/dom';
|
||||
import { CoreCourseProvider } from '../../../course/providers/course';
|
||||
|
|
|
@ -12,8 +12,7 @@
|
|||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
import { Component, OnInit, Input } from '@angular/core';
|
||||
import { IonicPage } from 'ionic-angular';
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
import { CoreSitesProvider } from '../../../../providers/sites';
|
||||
|
||||
/**
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
import { Component, Input, ViewChild, ViewContainerRef, ComponentFactoryResolver, ComponentRef, OnInit } from '@angular/core';
|
||||
import { Component, Input, ViewChild, ViewContainerRef, ComponentFactoryResolver, OnInit } from '@angular/core';
|
||||
import { CoreLoggerProvider } from '../../../../providers/logger';
|
||||
import { CoreUserProfileFieldDelegate } from '../../providers/user-profile-field-delegate';
|
||||
import { CoreUtilsProvider } from '../../../../providers/utils/utils';
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<ion-refresher [enabled]="userLoaded" (ionRefresh)="refreshUser($event)">
|
||||
<ion-refresher-content pullingText="{{ 'core.pulltorefresh' | translate }}"></ion-refresher-content>
|
||||
</ion-refresher>
|
||||
<core-loading [hideUntil]="userLoaded" class="core-loading-center">
|
||||
<core-loading [hideUntil]="userLoaded">
|
||||
<div *ngIf="user">
|
||||
<ion-item-group *ngIf="hasContact">
|
||||
<ion-item-divider color="light">{{ 'core.user.contact' | translate}}</ion-item-divider>
|
||||
|
@ -20,13 +20,13 @@
|
|||
<ion-item text-wrap *ngIf="user.phone1">
|
||||
<h2>{{ 'core.user.phone1' | translate}}</h2>
|
||||
<p><a href="tel:{{user.phone1}}" core-link auto-login="no">
|
||||
<core-format-text [text]="user.phone1"></core-format-text>
|
||||
<core-format-text [text]="user.phone1"></core-format-text>
|
||||
</a></p>
|
||||
</ion-item>
|
||||
<ion-item text-wrap *ngIf="user.phone2">
|
||||
<h2>{{ 'core.user.phone2' | translate}}</h2>
|
||||
<p><a href="tel:{{user.phone2}}" core-link auto-login="no">
|
||||
<core-format-text [text]="user.phone2"></core-format-text>
|
||||
<core-format-text [text]="user.phone2"></core-format-text>
|
||||
</a></p>
|
||||
</ion-item>
|
||||
<ion-item text-wrap *ngIf="user.address">
|
||||
|
@ -36,7 +36,8 @@
|
|||
</a>
|
||||
<a *ngIf="!isAndroid" href="http://maps.google.com?q={{user.encodedAddress}}" core-link auto-login="no">
|
||||
<core-format-text [text]="user.address"></core-format-text>
|
||||
</a></p>
|
||||
</a>
|
||||
</p>
|
||||
</ion-item>
|
||||
<ion-item text-wrap *ngIf="user.city && !user.address">
|
||||
<h2>{{ 'core.user.city' | translate}}</h2>
|
||||
|
@ -52,7 +53,7 @@
|
|||
<ion-item text-wrap *ngIf="user.url">
|
||||
<h2>{{ 'core.user.webpage' | translate}}</h2>
|
||||
<p><a href="{{user.url}}" core-link>
|
||||
<core-format-text [text]="user.url"></core-format-text>
|
||||
<core-format-text [text]="user.url"></core-format-text>
|
||||
</a></p>
|
||||
</ion-item>
|
||||
<ion-item text-wrap *ngIf="user.interests">
|
||||
|
|
|
@ -17,7 +17,6 @@ import { IonicPage, NavParams, Platform } from 'ionic-angular';
|
|||
import { CoreUserProvider } from '../../providers/user';
|
||||
import { CoreUserHelperProvider } from '../../providers/helper';
|
||||
import { CoreDomUtilsProvider } from '../../../../providers/utils/dom';
|
||||
import { CoreCoursesProvider } from '../../../courses/providers/courses';
|
||||
import { CoreEventsProvider } from '../../../../providers/events';
|
||||
import { CoreSitesProvider } from '../../../../providers/sites';
|
||||
|
||||
|
@ -41,7 +40,7 @@ export class CoreUserAboutPage {
|
|||
user: any = {};
|
||||
title: string;
|
||||
|
||||
constructor(private navParams: NavParams, private userProvider: CoreUserProvider, private userHelper: CoreUserHelperProvider,
|
||||
constructor(navParams: NavParams, private userProvider: CoreUserProvider, private userHelper: CoreUserHelperProvider,
|
||||
private domUtils: CoreDomUtilsProvider, private eventsProvider: CoreEventsProvider,
|
||||
private sitesProvider: CoreSitesProvider, private platform: Platform) {
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<ion-refresher [enabled]="userLoaded" (ionRefresh)="refreshUser($event)">
|
||||
<ion-refresher-content pullingText="{{ 'core.pulltorefresh' | translate }}"></ion-refresher-content>
|
||||
</ion-refresher>
|
||||
<core-loading [hideUntil]="userLoaded" class="core-loading-center">
|
||||
<core-loading [hideUntil]="userLoaded">
|
||||
<ion-list *ngIf="user && !isDeleted">
|
||||
<ion-item text-center>
|
||||
<div class="item-avatar-center">
|
||||
|
@ -51,7 +51,7 @@
|
|||
</a>
|
||||
|
||||
<ion-item *ngIf="actionHandlers && actionHandlers.length">
|
||||
<button *ngFor="let actHandler of actionHandlers" ion-button block outline [ngClass]="['core-user-profile-handler', actHandler.class]" (click)="actHandler.action($event)" [hidden]="actHandler.hidden" title="{{ actHandler.title | translate }}">
|
||||
<button *ngFor="let actHandler of actionHandlers" ion-button block outline [ngClass]="['core-user-profile-handler', actHandler.class]" (click)="actHandler.action($event, user, courseId)" [hidden]="actHandler.hidden" title="{{ actHandler.title | translate }}">
|
||||
<ion-icon *ngIf="actHandler.icon" [name]="actHandler.icon" item-start></ion-icon>
|
||||
{{ actHandler.title | translate }}
|
||||
<ion-spinner *ngIf="actHandler.spinner" item-end></ion-spinner>
|
||||
|
|
|
@ -49,7 +49,7 @@ export class CoreUserProfilePage {
|
|||
newPageHandlers = [];
|
||||
communicationHandlers = [];
|
||||
|
||||
constructor(private navParams: NavParams, private userProvider: CoreUserProvider, private userHelper: CoreUserHelperProvider,
|
||||
constructor(navParams: NavParams, private userProvider: CoreUserProvider, private userHelper: CoreUserHelperProvider,
|
||||
private domUtils: CoreDomUtilsProvider, private translate: TranslateService, private eventsProvider: CoreEventsProvider,
|
||||
private coursesProvider: CoreCoursesProvider, private sitesProvider: CoreSitesProvider,
|
||||
private mimetypeUtils: CoreMimetypeUtilsProvider, private fileUploaderHelper: CoreFileUploaderHelperProvider,
|
||||
|
@ -81,7 +81,7 @@ export class CoreUserProfilePage {
|
|||
ionViewDidLoad() {
|
||||
this.fetchUser().then(() => {
|
||||
return this.userProvider.logView(this.userId, this.courseId).catch((error) => {
|
||||
this.isDeleted = error === this.translate.instant('core.userdeleted');
|
||||
this.isDeleted = error.errorcode === 'userdeleted';
|
||||
});
|
||||
}).finally(() => {
|
||||
this.userLoaded = true;
|
||||
|
@ -142,10 +142,11 @@ export class CoreUserProfilePage {
|
|||
let modal = this.domUtils.showModalLoading('core.sending', true);
|
||||
|
||||
return this.userProvider.changeProfilePicture(result.itemid, this.userId).then((profileImageURL) => {
|
||||
this.eventsProvider.trigger(CoreUserProvider.PROFILE_PICTURE_UPDATED, {userId: this.userId, picture: profileImageURL});
|
||||
this.eventsProvider.trigger(CoreUserProvider.PROFILE_PICTURE_UPDATED, {userId: this.userId,
|
||||
picture: profileImageURL});
|
||||
this.sitesProvider.updateSiteInfo(this.site.getId());
|
||||
this.refreshUser();
|
||||
}).finally(function() {
|
||||
}).finally(() => {
|
||||
modal.dismiss();
|
||||
});
|
||||
}).catch((message) => {
|
||||
|
|
|
@ -72,7 +72,7 @@ export interface CoreUserProfileHandlerData {
|
|||
* Additional class to add to the HTML.
|
||||
* @type {string}
|
||||
*/
|
||||
class: string;
|
||||
class?: string;
|
||||
|
||||
/**
|
||||
* If enabled, element will be hidden. Only for TYPE_NEW_PAGE and TYPE_ACTION.
|
||||
|
@ -135,7 +135,7 @@ export class CoreUserDelegate extends CoreDelegate {
|
|||
* @param {number} courseId The course ID.
|
||||
* @return {Promise<any>} Resolved with an array of objects containing 'priority', 'data' and 'type'.
|
||||
*/
|
||||
getProfileHandlersFor(user: any, courseId): Promise<any> {
|
||||
getProfileHandlersFor(user: any, courseId: number): Promise<any> {
|
||||
let handlers = [],
|
||||
promises = [];
|
||||
|
||||
|
@ -147,7 +147,7 @@ export class CoreUserDelegate extends CoreDelegate {
|
|||
|
||||
return this.coursesProvider.getCoursesOptions(courseIds).then((options) => {
|
||||
// For backwards compatibility we don't modify the courseId.
|
||||
let courseIdForOptions = courseId || this.sitesProvider.getSiteHomeId(),
|
||||
let courseIdForOptions = courseId || this.sitesProvider.getCurrentSiteHomeId(),
|
||||
navOptions = options.navOptions[courseIdForOptions],
|
||||
admOptions = options.admOptions[courseIdForOptions];
|
||||
|
||||
|
@ -165,7 +165,7 @@ export class CoreUserDelegate extends CoreDelegate {
|
|||
} else {
|
||||
return Promise.reject(null);
|
||||
}
|
||||
}).catch(function() {
|
||||
}).catch(() => {
|
||||
// Nothing to do here, it is not enabled for this user.
|
||||
});
|
||||
promises.push(promise);
|
||||
|
@ -175,7 +175,7 @@ export class CoreUserDelegate extends CoreDelegate {
|
|||
return handlers;
|
||||
});
|
||||
});
|
||||
}).catch(function() {
|
||||
}).catch(() => {
|
||||
// Never fails.
|
||||
return handlers;
|
||||
});
|
||||
|
|
|
@ -63,7 +63,7 @@ export class CoreUserProfileMailHandler implements CoreUserProfileHandler {
|
|||
action: ($event, user, courseId) => {
|
||||
$event.preventDefault();
|
||||
$event.stopPropagation();
|
||||
window.location.href = "mailto:" + user.email;
|
||||
window.open("mailto:" + user.email, '_blank');
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
import { Injectable } from '@angular/core';
|
||||
import { CoreContentLinksHandlerBase } from '../../contentlinks/classes/base-handler';
|
||||
import { CoreContentLinksAction } from '../../contentlinks/providers/delegate';
|
||||
import { CoreLoginHelperProvider } from '../../login/providers/helper';
|
||||
import { CoreContentLinksHelperProvider } from '../../contentlinks/providers/helper';
|
||||
|
||||
/**
|
||||
* Handler to treat links to user profiles.
|
||||
|
@ -26,7 +26,7 @@ export class CoreUserProfileLinkHandler extends CoreContentLinksHandlerBase {
|
|||
// Match user/view.php and user/profile.php but NOT grade/report/user/.
|
||||
pattern = /((\/user\/view\.php)|(\/user\/profile\.php)).*([\?\&]id=\d+)/;
|
||||
|
||||
constructor(private loginHelper: CoreLoginHelperProvider) {
|
||||
constructor(private linkHelper: CoreContentLinksHelperProvider) {
|
||||
super();
|
||||
}
|
||||
|
||||
|
@ -43,12 +43,12 @@ export class CoreUserProfileLinkHandler extends CoreContentLinksHandlerBase {
|
|||
CoreContentLinksAction[]|Promise<CoreContentLinksAction[]> {
|
||||
return [{
|
||||
action: (siteId, navCtrl?) => {
|
||||
let stateParams = {
|
||||
let pageParams = {
|
||||
courseId: params.course,
|
||||
userId: parseInt(params.id, 10)
|
||||
};
|
||||
// Always use redirect to make it the new history root (to avoid "loops" in history).
|
||||
this.loginHelper.redirect('CoreUserProfilePage', stateParams, siteId);
|
||||
this.linkHelper.goInSite(navCtrl, 'CoreUserProfilePage', pageParams, siteId);
|
||||
}
|
||||
}];
|
||||
}
|
||||
|
|
|
@ -61,10 +61,10 @@ export class CoreUserProvider {
|
|||
* Change the given user profile picture.
|
||||
*
|
||||
* @param {number} draftItemId New picture draft item id.
|
||||
* @param {number} id User ID.
|
||||
* @return {Promise<any>} Promise resolve with the new profileimageurl
|
||||
* @param {number} userId User ID.
|
||||
* @return {Promise<string>} Promise resolve with the new profileimageurl
|
||||
*/
|
||||
changeProfilePicture(draftItemId: number, userId: number): Promise<any> {
|
||||
changeProfilePicture(draftItemId: number, userId: number): Promise<string> {
|
||||
var data = {
|
||||
'draftitemid': draftItemId,
|
||||
'delete': 0,
|
||||
|
@ -83,7 +83,7 @@ export class CoreUserProvider {
|
|||
* Store user basic information in local DB to be retrieved if the WS call fails.
|
||||
*
|
||||
* @param {number} userId User ID.
|
||||
* @param {string} [siteId] ID of the site the event belongs to. If not defined, use current site.
|
||||
* @param {string} [siteId] ID of the site. If not defined, use current site.
|
||||
* @return {Promise<any>} Promise resolve when the user is deleted.
|
||||
*/
|
||||
deleteStoredUser(userId: number, siteId?: string): Promise<any> {
|
||||
|
@ -111,24 +111,24 @@ export class CoreUserProvider {
|
|||
* @param {number} userId User's ID.
|
||||
* @param {number} [courseId] Course ID to get course profile, undefined or 0 to get site profile.
|
||||
* @param {boolean} [forceLocal] True to retrieve the user data from local DB, false to retrieve it from WS.
|
||||
* @param {string} [siteId] ID of the site the event belongs to. If not defined, use current site.
|
||||
* @param {string} [siteId] ID of the site. If not defined, use current site.
|
||||
* @return {Promise<any>} Promise resolved with the user data.
|
||||
*/
|
||||
getProfile(userId: number, courseId: number, forceLocal = false, siteId?: string): Promise<any> {
|
||||
getProfile(userId: number, courseId?: number, forceLocal = false, siteId?: string): Promise<any> {
|
||||
siteId = siteId || this.sitesProvider.getCurrentSiteId();
|
||||
|
||||
if (forceLocal) {
|
||||
return this.getUserFromLocalDb(userId, siteId).catch(function() {
|
||||
return this.getUserFromLocalDb(userId, siteId).catch(() => {
|
||||
return this.getUserFromWS(userId, courseId, siteId);
|
||||
});
|
||||
}
|
||||
return this.getUserFromWS(userId, courseId, siteId).catch(function() {
|
||||
return this.getUserFromWS(userId, courseId, siteId).catch(() => {
|
||||
return this.getUserFromLocalDb(userId, siteId);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Invalidates user WS calls.
|
||||
* Get cache key for a user WS call.
|
||||
*
|
||||
* @param {number} userId User ID.
|
||||
* @return {string} Cache key.
|
||||
|
@ -141,7 +141,7 @@ export class CoreUserProvider {
|
|||
* Get user basic information from local DB.
|
||||
*
|
||||
* @param {number} userId User ID.
|
||||
* @param {string} [siteId] ID of the site the event belongs to. If not defined, use current site.
|
||||
* @param {string} [siteId] ID of the site. If not defined, use current site.
|
||||
* @return {Promise<any>} Promise resolve when the user is retrieved.
|
||||
*/
|
||||
protected getUserFromLocalDb(userId: number, siteId?: string): Promise<any> {
|
||||
|
@ -158,7 +158,7 @@ export class CoreUserProvider {
|
|||
* @param {string} [siteId] ID of the site. If not defined, use current site.
|
||||
* @return {Promise<any>} Promise resolve when the user is retrieved.
|
||||
*/
|
||||
protected getUserFromWS(userId: number, courseId: number, siteId?: string): Promise<any> {
|
||||
protected getUserFromWS(userId: number, courseId?: number, siteId?: string): Promise<any> {
|
||||
return this.sitesProvider.getSite(siteId).then((site) => {
|
||||
let presets = {
|
||||
cacheKey: this.getUserCacheKey(userId)
|
||||
|
@ -218,7 +218,7 @@ export class CoreUserProvider {
|
|||
* @return {boolean} True if disabled, false otherwise.
|
||||
*/
|
||||
isUpdatePictureDisabledInSite(site?: CoreSite) : boolean {
|
||||
site = site || this.sitesProvider.getCurrentSite();
|
||||
site = site || this.sitesProvider.getCurrentSite();
|
||||
return site.isFeatureDisabled('$mmUserDelegate_picture');
|
||||
};
|
||||
|
||||
|
@ -226,14 +226,18 @@ export class CoreUserProvider {
|
|||
/**
|
||||
* Log User Profile View in Moodle.
|
||||
* @param {number} userId User ID.
|
||||
* @param {number} courseId Course ID.
|
||||
* @param {number} [courseId] Course ID.
|
||||
* @return {Promise<any>} Promise resolved when done.
|
||||
*/
|
||||
logView(userId: number, courseId?: number) : Promise<any> {
|
||||
return this.sitesProvider.getCurrentSite().write('core_user_view_user_profile', {
|
||||
userid: userId,
|
||||
courseid: courseId
|
||||
});
|
||||
let params = {
|
||||
userid: userId
|
||||
};
|
||||
|
||||
if (courseId) {
|
||||
params['courseid'] = courseId;
|
||||
}
|
||||
return this.sitesProvider.getCurrentSite().write('core_user_view_user_profile', params);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -242,10 +246,10 @@ export class CoreUserProvider {
|
|||
* @param {number} userId User ID.
|
||||
* @param {string} fullname User full name.
|
||||
* @param {string} avatar User avatar URL.
|
||||
* @param {string} [siteId] ID of the site the event belongs to. If not defined, use current site.
|
||||
* @param {string} [siteId] ID of the site. If not defined, use current site.
|
||||
* @return {Promise<any>} Promise resolve when the user is stored.
|
||||
*/
|
||||
protected storeUser(userId: number, fullname: string, avatar: string, siteId?: string) {
|
||||
protected storeUser(userId: number, fullname: string, avatar: string, siteId?: string): Promise<any> {
|
||||
return this.sitesProvider.getSite(siteId).then((site) => {
|
||||
let userRecord = {
|
||||
id: userId,
|
||||
|
|
|
@ -46,7 +46,8 @@ export class CoreFormatTextDirective implements OnChanges {
|
|||
@Input() componentId?: string|number; // Component ID to use in conjunction with the component.
|
||||
@Input() adaptImg?: boolean|string = true; // Whether to adapt images to screen width.
|
||||
@Input() clean?: boolean|string; // Whether all the HTML tags should be removed.
|
||||
@Input() singleLine?: boolean|string; // Whether new lines should be removed (all text in single line). Only valid if clean=true.
|
||||
@Input() singleLine?: boolean|string; // Whether new lines should be removed (all text in single line). Only valid if
|
||||
// clean=true.
|
||||
@Input() maxHeight?: number; // Max height in pixels to render the content box. It should be 50 at least to make sense.
|
||||
// Using this parameter will force display: block to calculate height better. If you want to
|
||||
// avoid this use class="inline" at the same time to use display: inline-block.
|
||||
|
@ -253,7 +254,8 @@ export class CoreFormatTextDirective implements OnChanges {
|
|||
site = siteInstance;
|
||||
|
||||
// Apply format text function.
|
||||
return this.textUtils.formatText(this.text, this.utils.isTrueOrOne(this.clean), this.utils.isTrueOrOne(this.singleLine));
|
||||
return this.textUtils.formatText(this.text, this.utils.isTrueOrOne(this.clean),
|
||||
this.utils.isTrueOrOne(this.singleLine));
|
||||
}).then((formatted) => {
|
||||
let div = document.createElement('div'),
|
||||
canTreatVimeo = site && site.isVersionGreaterEqualThan(['3.3.4', '3.4']),
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
import { Directive, Input, OnInit, ElementRef } from '@angular/core';
|
||||
import { NavController } from 'ionic-angular';
|
||||
/**
|
||||
* Directive to open a link in external browser.
|
||||
* Directive to go to user profile on click.
|
||||
*/
|
||||
@Directive({
|
||||
selector: '[core-user-link]'
|
||||
|
|
|
@ -664,6 +664,20 @@ export class CoreSitesProvider {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the site home ID of the current site.
|
||||
*
|
||||
* @return {number} Current site home ID.
|
||||
*/
|
||||
getCurrentSiteHomeId() : number {
|
||||
if (this.currentSite) {
|
||||
return this.currentSite.getSiteHomeId();
|
||||
} else {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check if the user is logged in a site.
|
||||
*
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
import { Injectable } from '@angular/core';
|
||||
import { LoadingController, Loading, ToastController, Toast, AlertController, Alert, Platform, Content,
|
||||
NavController, ModalController } from 'ionic-angular';
|
||||
ModalController } from 'ionic-angular';
|
||||
import { TranslateService } from '@ngx-translate/core';
|
||||
import { CoreTextUtilsProvider } from './text';
|
||||
import { CoreAppProvider } from '../app';
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// limitations under the License.
|
||||
|
||||
import { Injectable } from '@angular/core';
|
||||
import { NavController, ModalController } from 'ionic-angular';
|
||||
import { ModalController } from 'ionic-angular';
|
||||
import { TranslateService } from '@ngx-translate/core';
|
||||
import { CoreLangProvider } from '../lang';
|
||||
|
||||
|
|
|
@ -144,7 +144,8 @@ export class CoreWSProvider {
|
|||
* @param {string} siteUrl Complete site url to perform the call.
|
||||
* @param {any} ajaxData Arguments to pass to the method.
|
||||
* @param {CoreWSPreSets} preSets Extra settings and information.
|
||||
* @return {Promise<any>} Deferred promise resolved with the response data in success and rejected with the error message if it fails.
|
||||
* @return {Promise<any>} Deferred promise resolved with the response data in success and rejected with the error message
|
||||
* if it fails.
|
||||
*/
|
||||
protected addToRetryQueue(method: string, siteUrl: string, ajaxData: any, preSets: CoreWSPreSets) : Promise<any> {
|
||||
let call = {
|
||||
|
|
Loading…
Reference in New Issue