Skip to content
This repository has been archived by the owner on Feb 25, 2024. It is now read-only.

Commit

Permalink
Merge branch 'hotfix/2.0.1' into 'master'
Browse files Browse the repository at this point in the history
Hotfix/2.0.1

See merge request Apps/ILIAS-Pegasus!27
  • Loading branch information
Jonathan Gerber committed Jul 3, 2018
2 parents 599296c + 79f070c commit a9742c3
Show file tree
Hide file tree
Showing 37 changed files with 1,206 additions and 384 deletions.
2 changes: 1 addition & 1 deletion docs/_config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ description: >- # this means to ignore newlines until "baseurl:"
Write an awesome description for your new site here. You can edit this
line in _config.yml. It will appear in your document head meta (for
Google search results) and in your feed.xml site description.
baseurl: "" # the subpath of your site, e.g. /blog
baseurl: "/ILIAS-Pegasus" # the subpath of your site, e.g. /blog
url: "" # the base hostname & protocol for your site, e.g. http://example.com
twitter_username: jekyllrb
github_username: jekyll
Expand Down
2 changes: 1 addition & 1 deletion docs/_data/metadata.yaml
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
title: "ILIAS Pegasus Documentation"
version: 2.0.0
version: 2.0.1
3 changes: 2 additions & 1 deletion src/actions/open-learnplace-action.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ export class OpenLearnplaceAction extends ILIASObjectAction {

async execute(): Promise<ILIASObjectActionResult> {

const loadingPage: Modal = this.modalController.create(LoadingPage);
const loadingPage: Modal = this.modalController.create(LoadingPage,undefined,
{ cssClass: "modal-fullscreen" });
await loadingPage.present();
try {
await this.loader.load(this.learnplaceObjectId);
Expand Down
52 changes: 30 additions & 22 deletions src/app/app.component.ts
Original file line number Diff line number Diff line change
@@ -1,33 +1,29 @@
import {Component, Inject, ViewChild} from "@angular/core";
import {
Platform, MenuController, Nav, Events, ToastController, Toast,
ToastOptions, Modal, ModalController, Config
} from "ionic-angular";
import {Network} from "@ionic-native/network";
import {SplashScreen} from "@ionic-native/splash-screen";
import {SQLite} from "@ionic-native/sqlite";
import {StatusBar} from "@ionic-native/status-bar";
import {LoginPage} from "../pages/login/login";
import {SettingsPage} from "../pages/settings/settings";
import {Config, Events, MenuController, ModalController, Nav, Platform, Toast, ToastController, ToastOptions} from "ionic-angular";
import {TranslateService} from "ng2-translate/src/translate.service";
import {PEGASUS_CONNECTION_NAME} from "../config/typeORM-config";
import {Settings} from "../models/settings";
import {User} from "../models/user";
import {FavoritesPage} from "../pages/favorites/favorites";
import {InfoPage} from "../pages/info/info";
import {ObjectListPage} from "../pages/object-list/object-list";
import {FooterToolbarService, Job} from "../services/footer-toolbar.service";
import {LoginPage} from "../pages/login/login";
import {NewObjectsPage} from "../pages/new-objects/new-objects";
import {Settings} from "../models/settings";
import {User} from "../models/user";
import {Network} from "@ionic-native/network";
import {TranslateService} from "ng2-translate/src/translate.service";
import {SynchronizationService} from "../services/synchronization.service";
import {ObjectListPage} from "../pages/object-list/object-list";
import {SettingsPage} from "../pages/settings/settings";
import {SQLiteDatabaseService} from "../services/database.service";
import {SQLite} from "@ionic-native/sqlite";
import {PEGASUS_CONNECTION_NAME} from "../config/typeORM-config";
import {SplashScreen} from "@ionic-native/splash-screen";
import {Database} from "../services/database/database";
import {DB_MIGRATION, DBMigration} from "../services/migration/migration.api";
import {FooterToolbarService, Job} from "../services/footer-toolbar.service";
import {Logger} from "../services/logging/logging.api";
import {Logging} from "../services/logging/logging.service";
import getMessage = Logging.getMessage;
import {HardwareFeaturePage} from "../pages/test-hardware-feature/test-hardware-feature";
import {NewsPage} from "../pages/news/news";
import {DB_MIGRATION, DBMigration} from "../services/migration/migration.api";
import {SynchronizationService} from "../services/synchronization.service";
import {LoadingPage} from "./fallback/loading/loading.component";
import getMessage = Logging.getMessage;
import { OnboardingPage } from "../pages/onboarding/onboarding";

@Component({
templateUrl: "app.html"
Expand All @@ -44,7 +40,8 @@ export class MyApp {
settingsPage: object = SettingsPage;
infoPage: object = InfoPage;
loginPage: object = LoginPage;
newsPage: object = NewsPage;
onboardingPage: object = OnboardingPage;
newsPage: string = "NewsPage"; //needs to be string in order to get lazy loaded
LoadingPage: object = LoadingPage;
loggedIn: boolean = false;
/**
Expand Down Expand Up @@ -148,7 +145,7 @@ export class MyApp {
*/
openTestpage(): void {
this.menu.close();
this.nav.push(LoadingPage);
this.nav.push(OnboardingPage);

}
// presentLoading(): void {
Expand Down Expand Up @@ -218,6 +215,7 @@ export class MyApp {

this.configureDefaultTranslation();
this.rootPage = this.loginPage;
this.presentOnboardingModal();
}
}

Expand Down Expand Up @@ -300,4 +298,14 @@ export class MyApp {
}
});
}

// tslint:disable-next-line:typedef
presentOnboardingModal() {
// tslint:disable-next-line:typedef
const onboardingModal = this.modal.create(OnboardingPage,
undefined,
{ cssClass: "modal-fullscreen" }
);
onboardingModal.present();
}
}
2 changes: 1 addition & 1 deletion src/app/app.html
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
{{ 'settings.title' | translate:[]}}
</button>

<!-- <button *ngIf="loggedIn" ion-item (click)="openTestpage()" color="nobg-w">
<!-- <button *ngIf="loggedIn" ion-item (click)="presentOnboardingModal()" color="nobg-w">
<ion-icon name="flask"></ion-icon>
TEST-BUTTON
</button> -->
Expand Down
20 changes: 9 additions & 11 deletions src/app/app.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import {StatusBar} from "@ionic-native/status-bar";
import {StreamingMedia} from "@ionic-native/streaming-media";
import {Toast} from "@ionic-native/toast";
import {IonicApp, IonicErrorHandler, IonicModule, ModalController, NavController, Platform} from "ionic-angular";
import {TranslateModule, TranslateService} from "ng2-translate/ng2-translate";
import {TranslateModule, TranslateService, MissingTranslationHandler} from "ng2-translate/ng2-translate";
import {TranslateLoader, TranslateStaticLoader} from "ng2-translate/src/translate.service";
import {OPEN_LEARNPLACE_ACTION_FACTORY, OpenLearnplaceAction, OpenLearnplaceActionFunction} from "../actions/open-learnplace-action";
import {OPEN_OBJECT_IN_ILIAS_ACTION_FACTORY, OpenObjectInILIASAction} from "../actions/open-object-in-ilias-action";
Expand Down Expand Up @@ -61,10 +61,10 @@ import {
} from "../learnplace/services/visitjournal.service";
import {FavoritesPage} from "../pages/favorites/favorites";
import {InfoPage} from "../pages/info/info";
import {OnboardingPage} from "../pages/onboarding/onboarding";
import {LoginPage} from "../pages/login/login";
import {ModalPage} from "../pages/modal/modal";
import {NewObjectsPage} from "../pages/new-objects/new-objects";
import {NewsPage} from "../pages/news/news";
import {ObjectDetailsPage} from "../pages/object-details/object-details";
import {ObjectListPage} from "../pages/object-list/object-list";
import {SettingsPage} from "../pages/settings/settings";
Expand All @@ -88,6 +88,7 @@ import {DiagnosticUtil} from "../services/device/hardware-features/diagnostics.u
import {Hardware} from "../services/device/hardware-features/hardware-feature.service";
import {FileService} from "../services/file.service";
import {FooterToolbarService} from "../services/footer-toolbar.service";
import {PegasusMissingTranslationHandler} from "../services/language/translation-missing-handler";
import {DEFAULT_LINK_BUILDER, DefaultLinkBuilder, DefaultLinkBuilderImpl} from "../services/link/default.builder";
import {LINK_BUILDER, LinkBuilderImpl} from "../services/link/link-builder.service";
import {
Expand All @@ -105,7 +106,6 @@ import {RESOURCE_LINK_BUILDER, ResourceLinkBuilder, ResourceLinkBuilderImpl} fro
import {TIMELINE_LINK_BUILDER, TimelineLinkBuilder, TimelineLinkBuilderImpl} from "../services/link/timeline.builder";
import {DB_MIGRATION, MIGRATION_SUPPLIER} from "../services/migration/migration.api";
import {SimpleMigrationSupplier, TypeOrmDbMigration} from "../services/migration/migration.service";
import {NEWS_FEED, NewsFeedImpl} from "../services/news/news.feed";
import {NEWS_SYNCHRONIZATION, NewsSynchronizationImpl} from "../services/news/news.synchronization";
import {SynchronizationService} from "../services/synchronization.service";
import {MyApp} from "./app.component";
Expand All @@ -131,8 +131,8 @@ import {HTTP} from "@ionic-native/http";
FileSizePipe,
SyncFinishedModal,
ModalPage,
NewsPage,
LoadingPage,
OnboardingPage,

/* from src/learnplace */
MapPage,
Expand All @@ -157,6 +157,7 @@ import {HTTP} from "@ionic-native/http";
IonicModule.forRoot(MyApp),
BrowserModule,
BrowserAnimationsModule,

HttpModule,
HttpClientModule,
TranslateModule.forRoot({
Expand All @@ -176,8 +177,9 @@ import {HTTP} from "@ionic-native/http";
ObjectDetailsPage,
LoginPage,
SyncFinishedModal,
NewsPage,
//NewsPage,
LoadingPage,
OnboardingPage,

/* from src/learnplace */
MapPage,
Expand Down Expand Up @@ -248,11 +250,6 @@ import {HTTP} from "@ionic-native/http";
DatabaseConnectionRegistry,
Database,

/* from src/services/news/news.feed */
{
provide: NEWS_FEED,
useClass: NewsFeedImpl
},
/* from src/services/news/news.synchronization */
{
provide: NEWS_SYNCHRONIZATION,
Expand Down Expand Up @@ -466,7 +463,8 @@ import {HTTP} from "@ionic-native/http";

IonicErrorHandler,
{provide: ErrorHandler, useClass: PegasusErrorHandler},
<ClassProvider>{provide: XhrFactory, useClass: PegasusXhrFactory, multi: false}
<ClassProvider>{provide: XhrFactory, useClass: PegasusXhrFactory, multi: false},
<ClassProvider>{provide: MissingTranslationHandler, useClass: PegasusMissingTranslationHandler, multi: false}
],
exports: [
TranslateModule
Expand Down
11 changes: 8 additions & 3 deletions src/app/fallback/loading/loading.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,18 @@
<ion-navbar color="nobg-w"></ion-navbar>
</ion-header>
<ion-content class="blue-gradient" color="nobg-w">
<div class="custom-spinner">
<div class="bounce1"></div>
<div class="bounce2"></div>
<div class="bounce3"></div>
</div>

<img src="assets/img/walking_pony.png" class="walking-pony">
<!-- <img src="assets/img/walking_pony.png" class="walking-pony"> -->
<ion-grid>
<ion-row justify-content-center padding>
<h1 text-center color="white">
<!-- <h1 text-center color="white">
<ion-spinner [paused]="!footerToolbar.isLoading" *ngIf="footerToolbar.isLoading" class=big-spinner></ion-spinner>
</h1>
</h1> -->
</ion-row>
<ion-row justify-content-center padding>
<h1 text-center color="white">
Expand Down
43 changes: 43 additions & 0 deletions src/app/fallback/loading/loading.scss
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,46 @@
// 50% { padding-left: 50%; }
100% { margin-left: 150%; }
}

.custom-spinner {
margin: 100px auto 0;
width: 200px;
text-align: center;
}

.custom-spinner > div {
width: 60px;
height: 60px;
// background-color: color($colors, primary, base);
background-image: url("/assets/img/molly_pony_white.svg");

border-radius: 100%;
display: inline-block;
-webkit-animation: sk-bouncedelay 1.4s infinite ease-in-out both;
animation: sk-bouncedelay 1.4s infinite ease-in-out both;
}

.custom-spinner .bounce1 {
-webkit-animation-delay: -0.32s;
animation-delay: -0.32s;
}

.custom-spinner .bounce2 {
-webkit-animation-delay: -0.16s;
animation-delay: -0.16s;
}

@-webkit-keyframes sk-bouncedelay {
0%, 80%, 100% { -webkit-transform: scale(0) }
40% { -webkit-transform: scale(1.0) }
}

@keyframes sk-bouncedelay {
0%, 80%, 100% {
-webkit-transform: scale(0);
transform: scale(0);
} 40% {
-webkit-transform: scale(1.0);
transform: scale(1.0);
}
}
19 changes: 18 additions & 1 deletion src/assets/i18n/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@
"download_successful": "Datei wurde heruntergeladen",
"cant_open_file": "Es wurde keine Applikation gefunden, die diesen Dateityp öffnen kann.",
"server_not_reachable": "Sie haben keine Verbindung zum Server, versuchen Sie es später erneut oder loggen Sie sich erneut ein.",
"server_response_validation_error": "Es besteht ein Problem mit der Server Kommunikation, dies kann durch eine veraltete App Version verursacht werden."
"server_response_validation_error": "Es besteht ein Problem mit der Server Kommunikation, dies kann durch eine veraltete App Version verursacht werden. Falls der Fehler bestehen bleibt, versuche Dich auszulogen und neu einzulogen."
},
"details" : {
"last_update": "Letztes Update",
Expand Down Expand Up @@ -158,6 +158,7 @@
"object_type": {
"crs" : "Kurs",
"grp" : "Gruppe",
"grpr" : "Gruppe-Referenz",
"frm" : "Forum",
"fold": "Ordner",
"sess": "Sitzung",
Expand All @@ -174,6 +175,7 @@
"lm" : "Lernmodul",
"htlm" : "Lernmodul",
"sahs" : "Lernmodul",
"iass" : "Individuelle Bewertung",
"glo" : "Glossar",
"dcl" : "Datensammlung",
"bibl" : "Literaturliste",
Expand Down Expand Up @@ -238,5 +240,20 @@
"activate": "Standort aktivieren",
"back": "Nope, ich will zurück"
}
},
"onboarding": {
"title1": "Mit ILIAS Pegasus kannst Du:",
"function1": "Deine ILIAS Kursunterlagen auf Deinem Smartphone nutzen.",
"function2": "Deine Kurse & Dateien offline verfügbar machen.",
"function3": "Dich einmal einloggen und bleibst dann immer eingeloggt.",
"title2": "Eine dezentrale App",
"concept1": "Die Pegasus App verbindet Dich mit der ILIAS Installation Deiner Institution, Uni oder Schule. Und nur mit dieser.",
"concept2": "Wenn Deine Institution noch nicht mitmacht, schreib uns doch an",
"title3":"Deine Daten sind sicher!",
"datasecurity1": "Deine Daten werden nur auf Deinem Gerät gespeichert. Die App erhebt keinerlei personenbezogene Daten. Wenn Du dies im Detail prüfen möchtest, findest Du hier die",
"datasecurity2": "Datenschutzerklärung",
"datasecurity3": "ILIAS Pegasus ist ein Open Source Projekt. Wenn Du Dich selbst überzeugen möchtest, was die App tut, dann kannst Du hier den Code einsehen:",
"next":"Weiter",
"start": "Los geht's"
}
}
24 changes: 22 additions & 2 deletions src/assets/i18n/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,9 @@
},
"info": {
"title": "Info",
"guide": "Guide"
"guide": "Guide",
"instructions1": "If you're on the Home page 'My Courses and Groups' you can mark the courses and groups as 'available Offline'. They are marked with a gray cloud. Once the files are synced, the cloud turns blue.",
"instructions2": "The synchronization will start automatically each time the app is started or if a course has been marked as Available Offline. Manual synchronization can also be started by dragging (Pull to Refresh) the 'My Courses and Groups' page."
},
"logout": {
"title": "Logout",
Expand Down Expand Up @@ -110,7 +112,7 @@
"download_successful": "Download successful",
"cant_open_file": "There's no application that could open this filetype.",
"server_not_reachable": "We cannot reach the server, please try again later or try logging in again.",
"server_response_validation_error": "Server communication issue, please make sure to run the latest app and try again."
"server_response_validation_error": "Server communication issue, please make sure to run the latest app and try again. Try login out and log in again-"
},
"details" : {
"last_update": "Last update",
Expand Down Expand Up @@ -154,7 +156,9 @@
},
"object_type": {
"crs" : "Course",
"crsr": "Course Reference",
"grp" : "Group",
"grpr" : "Group Reference",
"frm" : "Forum",
"fold": "Folder",
"sess": "Session",
Expand All @@ -170,6 +174,7 @@
"lm" : "Learning Module",
"htlm" : "Learning Module",
"sahs" : "Learning Module",
"iass" : "Individual Assessment",
"glo" : "Glossary",
"dcl" : "Data Collection",
"bibl" : "Bibliography",
Expand Down Expand Up @@ -229,5 +234,20 @@
"browser_no": "No. return!",
"loading": "Learnplace",
"loading_subtitle": "Hang on a minute. If the learnplace contains a lot of content, it may take some time to download."
},
"onboarding": {
"title1": "Whith the help of ILIAS Pegasus you can:",
"function1": "access your ILIAS courses on your smartphone.",
"function2": "make your courses & files available offline.",
"function3": "log in once and stay logged in.",
"title2": "A decentralized app",
"concept1": "The Pegasus app connects you to the ILIAS installation of your institution, university or school.",
"concept2": "If your institution did not join yet, contact us",
"title3":"Your data is safe!",
"datasecurity1": "Your data will only be stored on your device. The app does not collect any personal information. If you want to check this in detail, you will find here the",
"datasecurity2": "privacy policy",
"datasecurity3": "ILIAS Pegasus is an open source project. If you want to see for yourself what the app does, then you can see the code here:",
"next":"next",
"start": "Let's go"
}
}
Loading

0 comments on commit a9742c3

Please sign in to comment.