bkd-mba-fbi / kursausschreibung Goto Github PK
View Code? Open in Web Editor NEWSLH.Evento JS Module for online course announcement
Home Page: https://bkd-mba-fbi.github.io/kursausschreibung
License: MIT License
SLH.Evento JS Module for online course announcement
Home Page: https://bkd-mba-fbi.github.io/kursausschreibung
License: MIT License
Das Modul kann Markdown in EventText Felder interpretieren.
CLX hat mit dem neuen Release eine Valideirung eingebaut die bei erfassen Person die PLZ und der eingegeben Ort Name mit den Evento Daten verglecht wenn diese nicht identisch sind wird folgende 409 beim PUT /Persons/
zurückgemeldet.
Request Body
{
"FormOfAddress": "Herr",
"FormOfAddressId": 105,
"Email2": "[email protected]",
"FirstName": "Sandro",
"LastName": "Scheidt",
"Location": "Bern qe4t",
"Zip": "3006",
"Id": 38381
}
Response Body
{"HasErrors":true,"HasQuestions":false,"Issues":[{"ConflictingObject":null,"ConflictingObjectType":null,"Id":null,"Message":"Mit der angegebenen PLZ muss der Ort wie folgt heissen: Bern","MessageId":null,"MessageType":"Error","Property":null}]}
Solution
onfocus event in subscribe-form eingebaut.
datalist
mit den zum PLZ zugehörigen Orte drgestellt.settings.js
formfields id=Location datalist konfigurieren bsp.
{
"id": "Location",
"dataType": "string",
"options": { "required": true, "autocomplete": "address-level2", "datalist": "locationCodes" }
}
Beim ics download auf Safari wird, dass gelieferte Datumzeit Format yyyy-mm-ddThh:mm:ss
nicht korrekt erkannt.
bsp. aus 2019-11-18T18:30:00
macht Safari 2019-11-18T20:30:00
Lösung:
Safari, Chrome, Friefox, IE11 und Edge erkennen folgendes Format.
yyyy\mm\dd hh:mm:ss
Internet Explorer
Suche mit Enter bestätigen für zu einen Reload der Seite. Firefox und Chrome wird keine aktion beim drücken der Entertaste ausgeführt.
Es soll möglich sein nach EventCodes auf den routen AreaOfEducation
und EventCategory
zu filtern. Es sollen nur die Codes angezeigt werden für die es in der route auch events gibt.
Rest Api Endpunkt /EventCodes/
https://getuikit.com/docs/filter
In Mobile Modus muss die Code Filterung ausgeblendet werden, weil sonst die Übersichtlichkeit verloren geht.
see title
Wenn /SubscriptionDetails
mit dem Type "VssStyleDescription": "DropDownWithText"
vorhaden ist, soll es möglich sein auch Freitext einzugeben.
Android ignoriert die locale Zeitzone (ohne Z am ende) in einer ics Datei. Es wird immer in UTC umgerechnet (Siehe Googlekalender answer).
Lösung:
In die Standard Lib von ics.js sollen die folgenden Eigenschaften (Zeitzone MEZ) eingebaut werden, weil unser Kunden nur in einer Zeitzone geschäften.
BEGIN:VTIMEZONE
TZID:Europe/Zurich
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
DTSTART:19810329T020000
TZNAME:MESZ
TZOFFSETTO:+0200
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0200
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
DTSTART:19961027T030000
TZNAME:MEZ
TZOFFSETTO:+0100
END:STANDARD
END:VTIMEZONE
Der Datei Upload soll wie folgt umgesetzt werden.
Wenn die Eigenschaft SubscriptionDetails.VssStyle: PD=PDF, DA=Datei, PF=PersonenFoto ist muss folgender Prozess beim Upload, vlaidierung und speicherung durchlaufen werden.
Validierung:
Upload nach erstellung der /Subscription pro SubscriptionDetails.files muss folgender Request durchgeführt werden
bsp.
POST /restApi/SubscriptionDetails/files
POST /restApi/SubscriptionDetails/files HTTP/1.1
Host: eventoapp-test.erz.be.ch
CLX-Authorization: token_type=urn:ietf:params:oauth:token-type:jwt-bearer, access_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJvYXV0aHB1YmxpYyIsImF1ZCI6Imh0dHBzOi8vZGV2NDIwMC8iLCJuYmYiOjE2MDEzNzIxNTcsImV4cCI6MTYwMTM4Njg1NywidG9rZW5fcHVycG9zZSI6IlVzZXIiLCJzY29wZSI6IlB1YmxpYyIsImNvbnN1bWVyX2lkIjoiZGV2NDIwMCIsImluc3RhbmNlX2lkIjoiQnNUZXN0IiwidXNlcm5hbWUiOiJDTFhfUmVzdCIsImN1bHR1cmVfaW5mbyI6ImRlLUNIIiwicmVkaXJlY3RfdXJpIjoiaHR0cDovL2xvY2FsaG9zdDo0MjAwIiwiaWRfbWFuZGFudCI6Ijk2MCIsInJvbGVzIjoiIiwidG9rZW5faWQiOiIyMTExMiJ9.-whxq3CvvbJ0guMch0138xrSxSY6wW1Eq1v6Q4dYGPE
Content-Type: application/json
{
"SubscriptionDetail": {
"Id": "0_10",
"SubscriptionId": 5633,
"VssId": 10,
"EventId": 2517,
"OpenInvoiceBookingId": null,
"BookingType": null,
"DropdownItems": null,
"EnteringType": "",
"IdPerson": 3144,
"IsValidated": false,
"IsValidationMessage": false,
"IsValidationStatus": false,
"Required": false,
"ShowAsRadioButtons": false,
"Sort": "000010",
"Tooltip": null,
"Value": null,
"VssDesignation": "Pdf-Datei",
"VssStyleDescription": "6",
"VssStyle": "PD",
"VssTypeId": 290,
"VssType": "ShortText",
"ReadOnly": false,
"ValueRangeRegex": null,
"ValueRangeError": null,
"MaxLength": null,
"MaxFileSize": null,
"IdObject": "0_10",
"IdSubscription": 0,
"IdEvent": 2517,
"IdAnmeldeVSS": 10,
"AdWert": null,
"VssBezeichnung": "Pdf-Datei",
"VssTypEx": 290,
"AllowChanges": true,
"VssInternet": "E",
"HRef": "/restApi/SubscriptionDetails/0_10"
},
"FileStreamInfo": {
"FileName": "Test.pdf",
"FileStream": "",
"FileSize": 0
}
}
PUT /restApi/files/
PUT /restApi/files/f3e3a864-14f7-4044-9bd7-ee6e0cd73018 HTTP/1.1
Host: eventoapp-test.erz.be.ch
CLX-Authorization: token_type=urn:ietf:params:oauth:token-type:jwt-bearer, access_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJvYXV0aHB1YmxpYyIsImF1ZCI6Imh0dHBzOi8vZGV2NDIwMC8iLCJuYmYiOjE2MDEzNzIxNTcsImV4cCI6MTYwMTM4Njg1NywidG9rZW5fcHVycG9zZSI6IlVzZXIiLCJzY29wZSI6IlB1YmxpYyIsImNvbnN1bWVyX2lkIjoiZGV2NDIwMCIsImluc3RhbmNlX2lkIjoiQnNUZXN0IiwidXNlcm5hbWUiOiJDTFhfUmVzdCIsImN1bHR1cmVfaW5mbyI6ImRlLUNIIiwicmVkaXJlY3RfdXJpIjoiaHR0cDovL2xvY2FsaG9zdDo0MjAwIiwiaWRfbWFuZGFudCI6Ijk2MCIsInJvbGVzIjoiIiwidG9rZW5faWQiOiIyMTExMiJ9.-whxq3CvvbJ0guMch0138xrSxSY6wW1Eq1v6Q4dYGPE
Content-Type: application/pdf
"<file contents here>"
Rückmeldung Comvation:
Wir haben das Problem analysiert. Das Problem kommt aus dem Plugin "kursausschreibung.js".
Dort ist ein Bug: Die Redirect-URL nach der Authentifizierung auf der REST-Api wird leider per history.replaceState in die Adresszeile geschrieben.
Das führt dazu, dass der Webserver keine neue Anfrage vom Browser bekommt (weil neue Adresse nur im Browser geändert wurde).
Die neue URL wird nur mit folgendem Befehl zum Webserver geschickt: "document.location.href = URL".
Bugfix
/* Customizing Comvation: Only rewrite history with "replaceState" when script run on plugin page. On all other pages (when token authentification go to startpage) use document.location.href */
jQuery('#kursausschreibung-root').length > 0 ? (history.replaceState(null, null, (0,a.getParameterByName)("moduleRedirectUrl"))) : (document.location.href = (0,a.getParameterByName)("moduleRedirectUrl"));
/*history.replaceState(null, null, (0, a.getParameterByName)("moduleRedirectUrl"))*/
Jetzt funktionieren auch externe Links. Bsp.:
http://www.bffbern.ch/de/Weiterbildung/Betriebliche-Bildung-und-Beratung/Weiterbildung-fuer-Berufsbildnerinnen-und-Berufsbildner/Info#/weiterbildung/kurs%20wb%20erziehung%2Fsoziales/53718
Implement datepicker from uikit. So that not in every browser different style.
With the following test in Internet Explorer you will encounter an error.
Error while processing route: list.category.event.subscribe "Promise" ist undefiniert ReferenceError: "Promise" ist undefiniert at e.getDropDownItems (https://localhost/assets/kursausschreibung.js:33:1628) at Anonymous function (https://localhost/assets/kursausschreibung.js:141:178) at Anonymous function (https://localhost/assets/kursausschreibung.js:141:79) at model (https://localhost/assets/kursausschreibung.js:141:1) at deserialize (https://localhost/assets/vendor.js:2555:109) at Anonymous function (https://localhost/assets/vendor.js:3287:6) at e.prototype.runSharedModelHook (https://localhost/assets/vendor.js:3286:1) at n.prototype.getModel (https://localhost/assets/vendor.js:3307:1) at _ (https://localhost/assets/vendor.js:3414:5) at P
Workaround implementieren, falls beim PUT /Persons/{idPerson}
ein 409 mit der Message "Firmazeile 1" oder "Ligne entreprise 1" zurückkommt. Wird nicht abgebrochen und die Anmeldung wird ohne Änderung der Personendaten erfolgen.
409 Conflict
{
"HasErrors": true,
"HasQuestions": false,
"Issues": [
{
"Id": null,
"Message": "Sie sind nicht berechtigt, im Feld \"Firmazeile 1\" einen Wert zu erfassen.",
"MessageId": null,
"MessageType": "Error",
"Property": null
}
]
}
While the URL of a course detail can change all the time, I would propose to add a "permalink" option that can be shared. All this needs is the UID of the course.
So something like https://www.bzemme.ch/kurseweiterbildung/#/uid/36315
Would redirect to https://www.bzemme.ch/kurseweiterbildung/#/weiterbildung/holzbau%20(wb)/36315
but if the category is renamed or changed
https://www.bzemme.ch/kurseweiterbildung/#/weiterbildung/modellbau%20(wb)/36315
the first URL would still work fine.
Die LanguageOfInstruction
wird bei den untenstehenden Anlasstypen die Id der verfügbaren Sprachen geliefert und nicht mehr den Text.
Lösung:
languageOfInstructionFilter
anpassen das beides erkannt wird.
When applying for a course (Chrome on mac)
So users are lost twice. Maybe this depends on the used layout. But I think it would make sense to scroll/jump to where the next thing is after an action.
I'm not sure, but maybe this is a start? https://stackoverflow.com/a/23034716/160968
Put /Persons/ only properties from the form and filled out may be transferred. If the are null they will be overwriten by rest api.
On https://www.biz.erz.be.ch/biz_erz/de/index/ueber_uns/ueber_uns/veranstaltungen1.html vendor.js
seems to remove all the jQuery plugins by overwriting the global jQuery-object.
I will try to solve this with jQuery.noConflict()
. Later it might make sense to completely drop jQuery as a dependency.
MENU MODAL icon="menu" change to "more"
Das offizielle Muster für die Kurzlinks mit ID ist path/to#/uid/123
.
Wird path/to/#/uid/123
auch unterstützt? Ich finde das symmetrischer und dadurch verständlicher. Bei mir (Chrome, Mac) hat es funktioniert.
Beim erstellen der Anmeldung soll der/die TeilnehmerIn bereits auf das "kursausschreibung-root" Element gescrollt werden, somit ist das "loading wheel" immer sichtbar und bei einem Fehler sieht der Benutzer auch gleich den Fehler.
In diesem issue soll die Navigation (area of education) sauberer dargestellt werden.
Das Geburtsdatum darf nicht grösser als heute sein.
"VssType": "Text" soll als textarea interpretiert werden. uikit class "uk-textarea"
"VssTypeId": 293,
"VssType": "Text",
rest call EventTexts/?cultureInfo=en-US return de-CH values.
Solution: Eigenschaft cultureInfo
case sensitiv > CultureInfo
Ics-Export die Eigenschaft LOCATION: soll falls ein Raum zugeteilt ist ein Komma zwischen Strasse und PLZ haben.
LOCATION: event.ResourceDesignation + ', ' + event.BuildingName + ', ' + event.BuildingAddress + ' ' + event.BuildingZip +' '+ event.BuildingLocation
falls kein Raum zugewiesen ist wird die Location des events angezeigtLOCATION: event.ResourceDesignation + ', ' + event.BuildingName + ', ' + event.BuildingAddress + ', ' + event.BuildingZip +' '+ event.BuildingLocation
falls kein Raum zugewiesen ist wird die Location des events angezeigtA distinction must be made between whether no events are found according to seetings.js and whether the Api or application has run into an error.
Es soll möglich sein ein setting zu setzen, dass bei abgelaufen SubscriptionDateTo
Anlässe nicht mehr angezeigt werden. Der Kunde kann eine Ganzzahl setzt somit schaut der Filter soviel Tag zurück und zeigt nur nich die, die gemäss dieser Einstellung noch angezeigt werden sollen. Dieser Filter ist optional.
Setting:
FilterSubscriptionDateToBackDays: 2
Solution
Anstelle von einem erneuten setting werden events herausgefilter sobald, dass DateFrom
in der vergangeheit liegt.
Eine neue Anmeldung kann nicht gemacht werden mit dem neuen Release (Testumgebung).
In der Businesslogik von Evento gibt es im EventTypeId === 1 (Studiengang)kein FreeSeat counter (Er ist immer null). Deshalb soll Da Modul so angepasst werden das beim Status green
folgendes geprüft wird.
(FreeSeats > 0 || EventTypeId === 1)
Das hat zu folge, dass ein Studiengang nie in den Status chartreuse
oder red
fällt.
Die ics.js Bibliothek erkennt die download files nicht als text/calender files on mobil Browsers.
Some Customer send us mails thats sometimes events are displayed 2 times. It's not a Browser Bug i found that issue in IE, Chrome and Firefox.
Reconstruct:
open Browser in privat window and start the following URL ->https://www.bzemme.ch/kurseweiterbildung/#/weiterbildung
Fehler beim laden des Moduls.
FATAL error while initializing the module: TypeError: "event is null"
events store.js:193
filterEvents store.js:193
init store.js:58
tryCatcher rsvp.js:215
invokeCallback rsvp.js:393
publish rsvp.js:379
Ember
invoke backburner.js:205
flush backburner.js:125
flush backburner.js:278
end backburner.js:410
_boundAutorunEnd backburner.js:372
Im Settings.js sollen default Persons model eigenschaften erstellt werden können.
Wenn diese eigenschaften im Persons model null sind sollen die default eigenschaften übermittelt werden.
bsp.
//fields they are not in form or not required, you can set a default value. it will be overwrite null value in persons modell
"personDefaultValue": {
"CountryId": "CH",
}
EventText Felder sollen auch in der EventList angezeigt werden können.
Bei Aufruf einer Kurs-URL springt die Seite automatisch in den Content. Je nach Layout (Fixe Bereiche) bewirkt das dann eine Überlappung (. Die User_innen müssen dann hochscrollen, um herauszufinden, wo sie gelandet sind.
Beispiele mit der v2 (aber bei v3 ist es auch, aber ist bei uns noch nicht live)
Lässt sich dieser Sprung zum Inhalt deaktivieren? Wäre für uns hilfreich, sehe auch keinen Mehrwert darin.
Validierung und helper funktion für SocialSecurityNumber.
Helper:
Validierung:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.