/
changelog.txt
executable file
·1458 lines (1252 loc) · 61.8 KB
/
changelog.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
===== Neues in UliCMS 2020.2 =====
Neue Features:
* Backend optisch überarbeitet
* CKEditor auf Version 4.13.1 aktualisiert
* Höhe des CKEditor Eingabefelds wird beibehalten
* User-Avatar kann jetzt entfernt werden
* Erlaubte HTML-Tags aller Gruppen des Benutzers werden akzeptiert
* Changelog kann nun eingesehen werden
Neue API-Methoden:
* BackendHelper::getCKEditorSkins(): array
* getDefaultLanguage(): string
* ListData->filterPaginated(?int $offset = null): array
* ListData->filterAll(): array
* ListData->hasMore(int $offset = 0): bool
* User->getGroupCollection(): GroupCollection
* User->isOnline(): bool
* User->isCurrent(): bool
* ArrayHelper::getValueOrDefault(?array $input, $key, $default)
Entfernte API-Methoden:
* BackendHelper::formatDatasetCount(int $count): void
Entfernte Features:
* "kama" CKEditor Skin entfernt
Fehlerkorrekturen:
* Speichern des Inhaltstyps "Liste" korrigiert
* impro17: Pagination von Listen korrigiert
* Versionen vergleichen ist wieder funktional
* Kontaktformulare können wieder gelöscht werden
* Pakete:
Wenn keine Embed-Module installiert sind, wurden die Modul-Buttons
nicht mehr angezeigt. Dieser Fehler wurde korrigiert
Sicherheit:
* XSS im PackageController behoben (gefunden von Ngo Van Thien, Sun* Inc)
* XSS im PageController behoben (gefunden von Ngo Van Thien, Sun* Inc)
===== Neues in UliCMS 2020.1 =====
Neue Features:
* Serverseitige Pagination für Seitenverwaltung
* Thumbnails mit den Initialen des Namens werden generiert.
* Diverse Performance Verbesserungen
* CKEditor aktualisiert auf Version 4.12.1
* Ausgabe von Content als PDF wird nun auch im Cache gespeichert
* Icon zum nach oben scrollen in der Ecke rechts unten hinzugefügt
* Der Wert des Robots-Metatags kann je Seite festgelegt werden
* Shellscripts sind nun mit Robo implementiert
* Es kann nun auch unter "Pakete" das Standard-Design ausgewählt und die Vorschau von Themes angezeigt werden
* Soundcloud Player können eingebunden werden
* Man kann nun ein Avatar in Benutzerprofilen hochladen
* Neuer Robo Task modules:sync
Neue API-Methoden:
* User->getAllGroups(): array
* _unesc($string): string
* unesc($string): void
* UliCMS\HTML\Input::editor(string $name, $value, int $rows = 25, int $cols = 80, array $htmlAttributes = []): string
* TwoFactorAuthentication::enable(): void
* TwoFactorAuthentication::disable(): void
* TwoFactorAuthentication::toggle(): void
Entfernte API-Methoden:
* Settings::output(string $key, ?string $type = 'str'): void
* Settings::outputEscaped(string $key, ?string $type = 'str'): void
* AdminMenu->addChild(array $children): void
* MenuEntry->addChild(array $children): void
* DesignSettingsController->removeCommentFromCss($textContent)
* eTagFromString($str): void
* getModuleName(string $module): string
* initPFBC(): void
* the_url(): string
* set_eTagHeaders(string $identifier, int $timestamp): void
* browsercacheOneDay(int $modified = null): void
* ACL->setPermission(string $name, bool $value, int $group_id): void
* User->getFullName(): string
Verbesserungen:
* Übersetzung "Limit" in "Einträge je Seite" umbenannt
* Cachings von Content-Ausgaben im *.pdf, *.csv, *.json und *.txt Format optimiert
* Bei "Patch hochladen" Icons zu den Buttons hinzugefügt
Entfernte Features:
* Dropdown Filter
Diese Features werden in den nächsten UliCMS Releases erneut integriert werden.
* mPDF wurde aus den Composer Abhängigkeiten entfernt.
Wenn die PDF-Ausgabe genutzt werden soll, muss dafür das mPDF Paket von https://extend.ulicms.de/mPDF.html installiert werden
Fehlerkorrekturen:
* Beim Bearbeiten eines Benutzers wird das Passwort nicht mehr geleert, wenn man kein neues eingegeben hat.
* PackageController->getPackageDownloadUrl() gab immer null zurück.
===== Neues in UliCMS 2019.4 =====
Neue Features:
* Automatische Einbindung von externen Medien
* Download-Quelle von Paketen nun in Infos hinterlegt
* Seitenverwaltung ist nun hierarchisch
* Neues Standardtheme "2020"
* Design-Einstellungen: Vorschaubild vom ausgewählten Theme
* Design-Einstellungen: Vorschau der gewählten Schriftart
* controller_function_permissions unterstützt nun Wildcards
* Sprachen können wieder gelöscht werden
* Design-Einstellungen können nun in SCSS Code als Variablen verwendet werden
* Username beim Login ist nun Case-Insensitive
Neue API-Methoden:
* ContentFactory::getAllByType($type, $order = "id")
* ContentFactory::getAllByParent($parent_id, $order = "id")
* Content->getChildren($order)
* Content->hasChildren()
* Page->getHistory()
* Page->getParent()
* Page->makeFrontPage()
* Page->makeErrorPage403(bool $enabled = true): void
* Page->makeErrorPage404(bool $enabled = true): void
* Page->isFrontPage()
* Page->isErrorPage403(): bool
* Page->isErrorPage404(): bool
* Page->isErrorPage(): bool
* Page->getDeletedAt()
* Audio_Page->getAudio(): ?Audio
* Audio_Page->setAudio(?Audio $audio): void
* Video_Page->getVideo(): ?Video
* Video_Page->setVideo(?Video $video): void
* Video::getAll(string $order = "id"): array
* Audio::getAll(string $order = "id"): array
* Video->getWidth(): ?int
* Video->getHeight(): ?int
* Video->setWidth(?int $val): void
* Video->setHeight(?int $val): void
* TypeMapper::getModel($type)
* File::deleteIfExists($file)
* ActionRegistry::getAction($action)
* ActionRegistry::getActions()
* User->checkPassword($password)
* User->toSessionData()
* User->registerSession($redirect)
* User:fromSessionData()
* Comment::getReadCount()
* Comment::getAllCount()
* Database::createSchema($name)
* Model->isPersistent()
* Model->hasChanges()
* Module->isInstalled()
* Module->getShortCode()
* ModuleHelper::getMainClass(string $module): ?Controller
* StringHelper::isUpperCase(string $val): bool
* StringHelper::isLowerCase(string $val): bool
* ArrayHelper::flatten($input)
* PackageManager->isInstalled($package, $type = PackageTypes::TYPE_MODULE)
* UliCMS\HTML\icon($classes, $htmlAttributes = array())
* UliCMS\HTML\stringContainsHtml($string)
* UliCMS\HTML\link($url, $text, $allowHtml = false, $target = null, $htmlAttributes = array())
* UliCMS\HTML\buttonLink($url, $text, $type = null, $allowHtml = false, $target = null, $htmlAttributes = array())
* UliCMS\HTML\Button::button($text, $type = ButtonType::BUTTON_SUBMIT, $htmlAttributes = [], $allowHtml = false)
* UliCMS\HTML\Button::default($text, $type = ButtonType::BUTTON_SUBMIT, $htmlAttributes = [], $allowHtml = false)
* UliCMS\HTML\Button::primary($text, $type = ButtonType::BUTTON_SUBMIT, $htmlAttributes = [], $allowHtml = false)
* UliCMS\HTML\Button::info($text, $type = ButtonType::BUTTON_SUBMIT, $htmlAttributes = [], $allowHtml = false)
* UliCMS\HTML\Button::warning($text, $type = ButtonType::BUTTON_SUBMIT, $htmlAttributes = [], $allowHtml = false)
* UliCMS\HTML\Button::danger($text, $type = ButtonType::BUTTON_SUBMIT, $htmlAttributes = [], $allowHtml = false)
* UliCMS\HTML\Button::link($text, $type = ButtonType::BUTTON_SUBMIT, $htmlAttributes = [], $allowHtml = false)
* NumberFormatHelper::timestampToHtml5Datetime($timestamp = null)
* is_today($datetime = null)
* is_tomorrow($datetime = null)
* is_yesterday($datetime = null)
* is_past($datetime = null)
* is_future($datetime = null)
* get_carbon($datetime = null)
* _t(string $name, array $placeholders = [])
* t(string $name, array $placeholders = [])
* singularOrPlural(int $count, string $singular, string $plural)
* is_zero($number)
* midnight($datetime = null)
* midday($datetime = null)
* end_of_day($datetime = null)
* is_midnight($datetime = null)
* is_end_of_day($datetime = null)
* is_midday($datetime = null)
* is_zero($val)
* is_decimal($val): bool
* stringContainsShortCodes(string $content, ?string $module = null): bool
Entfernte API-Methoden:
* addUser()
* PackageManager->replacePlaceHolders($url)
Verbesserungen:
* Ein- und Ausblenden der Filter in der Seitenliste ist nun schneller
* Auf iOS Geräten wird nun für alle scrollbaren Bereiche
impulsbasiertes Scrolling verwendet
Fehlerkorrekturen:
* datetime-local Eingabefelder auf iOS Safari sind immer ungültig
* Das Speichern des States der DataTables ist fehlerhaft
* Einige Stellen an denen Texte hardgecodet waren sind nun korrekt lokalisiert
* render() Methode eines Modules wird nun nur noch aufgerufen, wenn ein HTML-String dessen Shortcode enthält
Entfernte Features:
* Unterstützung für veraltete unsichere Passwortverschlüsselung entfernt
* Unbenutztes Feld "Homepage" in den Metadaten eines Artikels entfernt
* Feld "Open Graph - Typ" entfernt
Sicherheit:
* Fix für XSS-Sicherheitslücke CVE-2019-11398
===== Neues in UliCMS 2019.3 =====
Diese Version ist funktional identisch zu 2019.2.8
===== Neues in UliCMS 2019.2.8 =====
Neue API-Methoden:
* Content->isRegular()
* get_environment()
* Banners::getRandom()
* Banner->render()
* is_present($val)
Neue Events:
* enqueue_frontend_footer_scripts
* enqueue_frontend_stylesheets
Verbesserungen:
* Spalte "Version" unter "Pakete" auf Smartphones ausgeblendet.
Fehlerkorrekturen:
* Es wird nun immer der aktuelle Wert von CodeMirror Editoren übertragen
* User-Formular kann nun nicht mehr abgesendet wenn die Passwortwiederholung falsch ist
Entfernte Features:
* Option "Anwender müssen ihr Passwort alle X Tage ändern" entfernt
Entfernte API-Methoden:
* split_headers($headers)
* formatTime($seconds)
* formatSizeUnits($bytes)
* SecurityHelper::securePath($path)
===== Neues in UliCMS 2019.2.7 =====
Neue Features:
* Minifying von Javascript und Stylesheets optimiert
* In einigen Backend-Seiten wird nun der Name von Sprachen statt deren Sprachcode angezeigt
* Verfügbare Pakete: Lizenzen können nun angezeigt werden
* "Sprachen" Einstellungen im Backend optisch überarbeitet
* DataTables: "X Einträge anzeigen" merkt sich nun die letzte Auswahl
* CKEditor: Beim Einfügen eines Bilds wird nun "Breite" und "Höhe" werden mehr automatisch gefüllt
* HTML-Helper um Bootstrap Alerts zu erzeugen
Neue API-Methoden:
* File::getNewestMtime($files)
* UliCMS\HTML\Alert::alert($text, $cssClasses, $allowHtml = false)
* UliCMS\HTML\Alert::danger($text, $cssClasses = "", $allowHtml = false)
* UliCMS\HTML\Alert::warning($text, $cssClasses = "", $allowHtml = false)
* UliCMS\HTML\Alert::success($text, $cssClasses = "", $allowHtml = false)
* UliCMS\HTML\Alert::info($text, $cssClasses = "", $allowHtml = false)
* User->loadByEmail($email)
* minifyJs()
* minifyCSS()
* compileSCSS($stylesheet)
* compileSCSSToFile($stylesheet)
* is_blank($val)
Fehlerkorrekturen:
* Custom Types Feature repariert
* Wenn man ein Modul welches beim Laden der "Pakete" Übersicht deaktiviert war aktiviert, wird nun der Button zum Aufrufen des Moduls sofort und ohne Neuladen der Seite aktiviert
* Bei Links wird nun wieder in der Seitenliste die Ziel-URL angezeigt
Entfernte Features:
* Request Logs
* Einstellungen der Paketquelle
===== Neues in UliCMS 2019.2.6 =====
Verbesserungen:
* Generierung von Systemnamen unterstützt nun mehr Zeichen
* Überprüfung der Passwort-Wiederholung optisch verbessert.
* Performance des Abrufs von "Verfügbare Pakete" massiv verbessert
Neue API-Methoden:
* Request::getDomain()
* optimizeHtml($html)
Geänderte API-Methoden:
* get_prefered_language($priorities, $http_accept_language) gibt nun einen
String zurück
Fehlerkorrekturen:
* Shake Animation bei fehlschlagen von Login wird nun wieder angezeigt
* Page->update() ändert den Typ von
"Benutzerdefinierte Werte (JSON)" nicht mehr von Objekt nach Array
* Wenn das Laden des Newsfeeds auf der Startseite des Backends fehlschlägt, erscheint nun eine Fehlermeldung
Sicherheit:
* Drei XSS-Sicherheitslücken geschlossen (gemeldet von Kağan Eğlence)
===== Neues in UliCMS 2019.2.5 =====
Neue Features:
* "Verfügbare Pakete" neu gestaltet
Verbesserungen:
* Das Löschen-Icon beim eigenen Benutzer wird nicht mehr angezeigt.
Neue API-Methoden:
* UliCMS\HTML\imageTag($file, $htmlAttributes = array())
* UliCMS\HTML\imageTagInline($file, $htmlAttributes = array())
* File::toDataUri($file, $mime = null)
* Group::getCurrentGroupId()
* Group::getDefaultPrimaryGroupId()
* Group::getDefaultPrimaryGroup()
Geänderte API-Methoden:
* Group::getCurrentGroup() ist nun statisch
Fehlerkorrekturen:
* Einige "Zurück" Buttons in der Paketverwaltung funktionieren nicht
===== Neues in UliCMS 2019.2.4 =====
Neue Features:
* Anzeige der Passwortsicherheit
* ContentPermissionChecker->canRead($contentId) Methode implementiert.
zuvor gab diese immer true zurück
Verbesserungen:
* Logout-Bestätigung wird nun als bootbox angezeigt
Fehlerkorrekturen:
* Auto-Completion für Passwortfelder korrigiert
===== Neues in UliCMS 2019.2.3 =====
Neue Features:
* Kontextmenü-Plugin von CKEditor ist auf Geräten mit Touchscreen nun deaktiviert
===== Neues in UliCMS 2019.2.2 =====
Neue Features
* Footer Text bearbeiten
Fehlerkorrekturen:
* In den Experteneinstellungen wird ein leerer Datensatz angezeigt
* Wenn die metadata.json eines Moduls eine "helpers" Sektion enthält,
verursacht das einen fatalen Fehler (FileNotFoundException)
===== Neues in UliCMS 2019.2.1 =====
Neue Features:
* Performance Verbesserungen im Backend durchgeführt
* minify_html ist nun per default eingeschalten.
* Das Feld "Menü als Grafik" wird nun ausgeblendet, wenn man "Nicht im Menü" auswählt
* Checkboxen werden nun als Schalter dargestellt
* Kommentar Icon mit Anzahl der neuen Kommentare hinzugefügt
* Update von jQuery auf Version 3.3.1
* Update von Bootstrap auf Version 3.4.1
* Update von CKEditor auf Version 4.11.3
* MOTD Formular nutzt jetzt AJAX zum Speichern
* Das Feld "Custom Data (JSON)" wird nun validiert
* Die Tastenkombination ctrl+s (PC) bzw. cmd+s (Mac) löst nun das Absenden eines Formulars aus
* Script und Style Helper fügen den nun einen Timestamp an den Pfad an um
ungewünschtes Caching zu verhindern
* SQL Migrations von Installer und Updates vereint
* Neue Optionen in der Konfigurationsdatei unterstützt
* Design Optimierungen an der Userverwaltung durchgeführt
* Zeige eine Warnung im Backend, wenn eine veraltete PHP Version verwendet wird.
* Die E-Mail mit den Zugangsdaten, welche man optional beim Anlegen von Usern versenden kann,
kann nun per Default Template angepasst werden.
Neue API-Methoden:
* Response::sendHttpStatusCodeResultIfAjax($status = HTTPStatusCode::OK, $redirect = null, $redirectStatus = HttpStatusCode::MOVED_TEMPORARILY)
* Response::redirectToAction($action, $controller = null, $status = HttpStatusCode::MOVED_TEMPORARILY)
* File::existsLocally($path)
* Content::emptyTrash()
* Database::setupSchemaAndSelect($schemaName, $otherScripts = array())
* Database::dropSchema($schema)
* HTTPStatusCode::UNPROCESSABLE_ENTITY (Konstante für HTTP Status 422)
veraltete API-Methoden:
* adduser($username, $lastname, $firstname, $email, $password, $sendMessage = true, $acl_group = null, $require_password_change = 0, $admin = 0, $locked = 0, $default_language = null)
Entfernte API-Methoden:
* is_in_include_path($find)
Verbesserungen:
* Die Funktion "Neues Logo hochladen" befindet sich nun in den Design-Einstellungen
Fehlerkorrekturen:
* Auf der "Lizenz" Backend-Seite ist ein Button nicht mit einem Icon versehen
* Der CodeMirror HTML-Editor wird fehlerhaft dargestellt, wenn man die Checkbox
"Aktiviere DSGVO Checkbox für Formulare" in den Datenschutz Einstellungen
anklickt.
* Die Deaktivierung der Auto-Vervollständigung für Formulare funktioniert
in einigen modernen Browsern (z.B. Google Chrome) nicht mehr.
* Wenn ein Bootbox geöffnet wird, verschiebt sich der Inhalt der Seite nach Links.
* Bei den Demodaten war nach einer Neuinstallation die group_id Spalte nicht gefüllt
* Ein Icon unter "Installierte Patches" wird nicht angezeigt
* Nach dem installieren von Patches werden die temporären Dateien nicht gelöscht.
* "Neuigkeiten in UliCMS" wird nicht geladen, wenn allow_url_fopen=Off ist.
Entfernte Features:
* Alte Ansicht von "Pakete" entfernt
* Folgende Optionen wurden aus dem Einstellungen entfernt:
* Gebe "generator" Meta-Tag aus
* cron.php nicht automatisch ausführen
* Erlauben diese Webseite in andere Sites einzubinden
* XSS-Schutz
Es ist geplant, für die Anwender, die diese Einstellungen benötigen, ein optionales Modul zu veröffentlichen, welches die entfernten Optionen wieder zum System hinzufügt.
* Social Media Felder aus den Userprofilen entfernt
* Die User-bezogene Option "Benachrichtige mich per E-Mail,
wenn sich jemand mit meinem Benutzerkonto
anmeldet" wurde entfernt
Bekannte Probleme:
* Wenn die Option db_migrator_auto_migrate aktiviert ist,
erfolgt auf der Kommandozeile kein Logging während der Ausführung der Migrations
Es sieht so aus, als würde nichts passieren, bis die Ausführung der Unit Tests beginnt.
===== Neues in UliCMS 2019.2 =====
Neue Features:
* Alle Features von UliCMS 2019.1.1 bis 2019.1.5
* SCSS Compiler
* CodeMirror auf Version 5.43.0 geupdated
* Das Feld "Benutzerdefinierte Werte (JSON)" verwendet nun den CodeMirror Editor
Neue API-Funktionen:
* setSCSSImportPaths($importPaths = null)
* getSCSSImportPaths()
* unsetSCSSImportPaths()
Bugfixes:
* Der optionale Parameter $type bei der Funktionen Result() wurde nicht korrekt ausgegeben.
* Falsches Icon für "Seiten" in Icon Toolbar korrigiert
===== Neues in UliCMS 2019.1.5 =====
Neue Features:
* Sicherheitsoption "XSS-Schutz" hinzugefügt
* Wenn ein User die admin_permission eines Moduls nicht besitzt, ist der Button mit dem Namen des Moduls deaktiviert und
ein Schloss-Icon wird angezeigt.
* Weitere Seiten mit Icons versehen (core_media)
Bugfixes:
* Unter bestimmten Bedingungen wurde eine falsche Version einer Seite aus dem Cache ausgegeben.
Verbesserungen:
* Wende Bootstrap Styling auf Eingabeelemente von dataTables an
Neue API-Funktionen:
* UliCMS\HTML\Input::File($name, $multiple = false, $accept = null, $htmlAttributes = array())
Entfernte API-Funktionen:
* is_chinese($str)
* isCountryBlocked()
===== Neues in UliCMS 2019.1.4 =====
Neue Features:
* Weitere Buttons mit Icons versehen
* Neue Sicherheitsoption "Erlauben diese Webseite in andere Sites einzubinden"
Verbesserungen:
* Option "Logo ausblenden" auf die "Logo" Seite verschoben
* Automatische Übersetzungsfunktion des Google Chrome Browsers im Backend deaktiviert
Neue API-Funktionen:
* is_desktop()
* User->getPermissionChecker()
* User->hasPermission($permission)
Neue Filter:
* before_content
* after_content
===== Neues in UliCMS 2019.1.3 =====
Neue Features:
* Icon-Bar auf Medienseiten hinzugefügt
* Icons zu allen Buttons hinzugefügt
Bugfixes:
* Die Icons werden nun auch angezeigt, wenn das System nicht alle Emojis unterstützt.
* Aufruf der Informationen über ein Modul schlagen nicht mehr manchmal fehl
* Die Registrierung von Berechtigungen über das custom_acl Event funktionierte nicht
Sonstige Änderungen:
* Die vertikale Scrollbar im Backend wird nun immer angezeigt
===== Neues in UliCMS 2019.1.2 =====
Neue Features:
* "Pakete" Backend-Seite neu gestaltet
Bugfixes:
* Die "Bearbeiten" Buttons im Frontend funktionieren wieder
===== Neues in UliCMS 2019.1.1 =====
Neue Features:
* Option "Verbiete RTL-Sprachen (Arabisch, Hebräisch, Persisch)" zum Spamfilter hinzugefügt
* Unterstützung für mehrere Konfigurationsumgebungen
* Formulare und Banner können nun deaktiviert werden
* Banner können nun zeitlich begrenzt werden
Neue API-Funktionen:
* stringOrNull($val)
* Konstanten-Klasse RequestMethods
Verbesserungen
* Benachrichtigung wenn neue Patches verfügbar sind umformuliert
* In-Page "Bearbeiten" Buttons werden nun mit Bootstrap formatiert
* "Schwarze Liste" umbenannt in "Verbotene Wörter"
* "Papierkorb leeren" als Button formatiert
Sonstige Änderungen:
* CSS-Klasse "ulicms_edit" umbenannt in "ulicms-edit"
===== Neues in UliCMS 2019.1 =====
Neue Features:
* Kommentarfunktion
* Funktion "MX DNS-Eintrag von E-Mail Adressen überprüfen" zum Spamfilter hinzugefügt
* "Löschen" Button zur "Seite bearbeiten" Ansicht hinzugefügt
* Neue Einstellungsseite "Performance Einstellungen" hinzugefügt
* CKEditor auf Version 4.11 aktualisiert
Neue API-Funktionen:
* Template::getHtml5Doctype()
* Template::html5Doctype()
* Template::getBaseMetas()
* Template::baseMetas()
* Template::getjQueryScript()
* Template::jQueryScript()
* Template::getContent()
* Template::content()
* Template::getLanguageSelection()
* Template::languageSelection()
* Template::getPoweredByUliCMS()
* Template::poweredByUliCMS()
* Template::comments()
* Template::getComments()
* AntiSpamHelper::checkMailDomain($email)
* AntiSpamHelper::isRtl($str)
* remove_suffix($text, $suffix)
* Database::getClientVersion()
* ArrayHelper::isSingle($input)
* ArrayHelper::getSingle($input)
* Model::getModel()
* Model::setModel($model)
* BackendHelper::getAction();
* BackendHelper::setAction($action)
* ActionResult($action, $model = null)
Bugfixes:
* Die Berechtigungsprüfung für die Bearbeiten-Rechte für Seiten wertete die sekundären Gruppen nicht aus.
* Der Text "No Results Found" in den Select2 Dropdown-Boxen war nicht lokalisiert
* Funktion Database::dropColumn($table, $column, $prefix = true) war nicht funktional
Entfernte Funktionen:
* encodeURIComponent($str)
* isEmpty($str)
* uimport($class)
===== Neues in UliCMS 2018.4.1 =====
Neue Features:
* Ein Benutzer kann nun mehrere Gruppen zugewiesen bekommen
* Funktion "Anfragen von Bots blockieren" zum Spamfilter hinzugefügt
* HTML der Formular E-Mails können nun per Template angepasst werden
* CKEditor auf Version 4.10.1 aktualisiert
API-Änderungen:
* Exceptions in den Namespace UliCMS\Exceptions verschoben
Bugfixes:
* Warnung beim Verlassen der Bearbeiten-Ansicht ohne Speichern war nicht lokalisiert
Bekannte Probleme:
* Die Berechtigungsprüfung für die Bearbeiten-Rechte für Seiten wertet die sekundären Gruppen nicht aus. Die Vearbeitung der sekundären Gruppen wird in einem zukünftigen Release implementiert werden.
===== Neues in UliCMS 2018.4 =====
Neue Features:
* Tablesorter durch DataTables ersetzen
* Wrapper für Kommandozeilen-Scripts hinzugefügt "manage"
* Neues CLI-Script "settings_list.php"
* CLI-Befehl zum Anzeigen von Informationen über eine SimpleInstall v2 Paketdatei hinzugefügt
$ ./manage sinfo examine /path/to/package-1.0.sin
* Pakete können nun eine bestimmte PHP-Version bei der Installation vorausetzen
* Pakete können nun vorausetzen, dass bestimmte PHP-Erweiterungen installiert sein müssen
* Pakete können nun eine bestimmte MySQL-Version bei der Installation vorausetzen
* Slicknav Paket aktualisiert auf Version 1.0.10
* oneclick_upgrade Paket aktualisiert auf Version 1.7
* Javascripts werden besser komprimiert
* Integriertes HTML-Minifying verbessert
* Mobile_Detect aktualisiert auf Version 2.8.33
* jscolor aktualisiert auf Version 2.0.5
Neue API-Funktionen:
* is_json($str)
* StringHelper::trimLines($input)
Bugfixes:
* Versionsnummern von Themes werden nun wieder angezeigt
* Einige Meldungen Confirm-Dialogen sind nun per Sprachdatei lokalisiert
* Beim Generieren der SEO-URL aus dem Titel wird nun "/" durch Unterstrich ersetzt
* Inhaltstyp "Link zu Sprache" funktioniert wieder
===== Neues in UliCMS 2018.3.6 =====
Neue Features:
* Es kann nun auf User-Ebene eingestellt werden, ob Positionen in Menüs angezeigt werden sollen
* Neue Direktive "disable_functions" für Theme-Metadaten eingeführt
* Seitenverwaltung: Filter können ein- und ausgeblendet werden
* Bei JSTranslation kann nun der Name des Javascript-Objekts festgelegt werden
* ModelBinder
Neue API-Funktionen:
* remove_prefix($text, $prefix)
* is_home()
* var_dump_str()
* is_numeric_array($var)
* var_is_type($var, $type, $required = false)
* Model->loadByRequestId()
Neue Filter:
* font_sizes
Neue Events:
* backend_footer
Verbesserungen:
* Keine Aufklapp-Animationen mehr, wenn man eine Seite zur Bearbeitung öffnet
* Seitenverwaltung: Selten genutze Optionen im Tab "Sonstiges" zusammengefasst, Klonen-Funktion ist vorerst deaktiviert.
* Seitenverwaltung: Weitere Usability Verbesserungen
* JSON-Serialisierungen werden vom System nun mit JSON_PRETTY_PRINT generiert
Bugfixes:
* Überschriften in die erlaubten HTML-Tags aufgenommen
* Potentielle Sicherheitslücke in file_get_contents_wrapper behoben
* Speichern einer Liste schlug fehl (SQL-Fehler), wenn man bei "Eigenschaften der Liste" als Sprache "Alle" ausgewählt hat.
* Erst CKEditor und dann die weiteren scripts einbinden, da es bei CodeMirror auf mobilen Geräten zu Konflikten mit dem CKEditor kam
* Wenn man über PHPMailer eine Mail versendet und im Content-Type ein Charset angibt, wird die Mail nun nicht mehr als Plain Text Mail versandt
* Fehler beim Ausführen der Migrations "Commands out of sync; you can't run this command now"
Entfernte Funktionen:
* Option "HTML-Datei als Inhalt" entfernt
===== Neues in UliCMS 2018.3.5 =====
Neue Features:
* Neue Option "preload_all_settings"
* Diverse Performance-Verbesserungen
* Bei einer AccessDeniedException wird HTTP-Status 403 Forbidden statt 500 Internal Server Error zurück gegeben
* Audit Log
Neue API-Funktionen:
* Javascript-Mechanismus um eine "Alle auswählen" Checkbox zu implementieren
* do_event()
* add_hook() ist nun deprecated
* Der Konstruktur von JSTranslation nimmt nun ein Array als optionalen Parameter an
* Template::renderPartial($template, $theme = null)
* CustomFields::getAll($id = null)
Bugfixes:
* Einige potentielle Caching-Probleme durch Anhängen eines Timestamps behoben
* Wenn ein Inhaltstyp vom Typ "Link" oder "Knotenpunkt" in einen anderen Typ geändert wird,
wird nun das Menü korrekt aktualisiert
* in CustomFields vom Typ Nummer können nun auch Kommazeichen eingegeben werden.
Sonstige Änderungen:
* Logdateien haben nun .log als Dateiendung
===== Neues in UliCMS 2018.3.4 =====
Neue Features:
* Wenn kein Open Graph Bild festgelegt ist, aber ein Artikelbild vorhanden ist, wird dieses als Open Graph Bild eingebunden.
* Option zum "Protokoll" in Datenschutz-Einstellungen verschoben
Neue API-Funktionen:
* myEach(&$arr)
Bugfixes:
* Bei Dateiuploads per Drag and Drop werden nun keine Duplikate mehr erzeugt.
* Deprecation Warning bei Upload einer Datei unter PHP 7.2 behoben
* Das aufklappen von Feldern bei AUswahl eines Inhaltstyps funktioniert nun wieder
===== Neues in UliCMS 2018.3.3 =====
Neue Features:
+ CKEditor 4 auf Version 4.9.2 aktualisiert
+ CKEditor 4 Plugin "Form Field Label" integriert
+ Einstellungen: E-Mail Modi sind nun aussagekräftiger beschriftet
+ Einstellungen: Größenbeschränkung für Logo-Upload entfernt
+ Performance-Optimierung der Datenbank durchgeführt
+ DBMigrator hat nun Support für Multi-Query
+ Mobile_Detect aktualisiert auf Version 2.8.32
Neue API-Funktionen:
* ExceptionResult($message, $status = 500)
* UrlHelper::getUrlWithoutGetParameters($url)
* Database::multiQuery($sql, $replacePrefix = false)
* Response::sendStatusHeader($nr)
Bugfixes:
* Wenn cron.php direkt aufgerufen wird, wird nun eine Sprachdatei geladen
* Das Feld "Verschlüsselung" in den Einstellungen zum E-Mail Versand verliert nicht mehr seine Auswahl
* Spamfilter: Auto-Completion für das Honeypot-Feld deaktiviert.
Typ des Felds in "url" geändert, damit mehr bösärtige Bots in die Falle tappen.
* sql_log: bei Nutzung von Prepared Statements wird die Query nicht mehr doppelt geloggt
* Command Line Scripts funktionieren nun auch wenn die php executable unter einem anderen Pfad als /usr/bin/php liegt
* title() und headline() kodieren HTML-Entites nicht mehr doppelt
===== Neues in UliCMS 2018.3.2 =====
Neue Features:
+ Strict Mode zum DBMigrator hinzugefügt
+ Performance der "Pakete" Seite im Backend verbessert
+ Neue Option "fix_log_permissions"
Neue API-Funktionen:
* UliCMS\HTML\text($str);
* DBMigrator->enableStrictMode()
* DBMigrator->disableStrictMode()
* SQLException
BugFixes:
* Wenn einer Gruppe mehrere Sprachen zugewiesen sind, werden die Seiten nun korrekt gefiltert
Sicherheit:
* XSS in "Übergeordnete Seite" behoben
===== Neues in UliCMS 2018.3.1 =====
Neue Features:
+ CLI-Tools zur Verwaltung der Settings
+ CLI-Tool zur Anwendung von Datenbank-Migrationen
+ Bei Nutzung von Google Fonts wird eine Datenschutz-Warnung angezeigt
+ Das Ersetzen von Shortcodes kann für einzelne Seiten deaktiviert werden
+ Neues Logo
+ "Filter zurücksetzen" Button hinzugefügt
+ Sichere Redirects
+ Datenschutz-Einstellungen hinzugefügt
Neue API-Funktionen
* Response::redirect($url = "http://www.ulicms.de", $status = 302)
* Response::javascriptRedirect($url = "http://www.ulicms.de")
* Response::safeRedirect($url, $status = 302, $safeHosts = null)
* Response::getStatusCodeByNumber($nr)
* Neue Klasse PrivacyCheckbox zur Anzeige einer DSGVO Checkbox
===== Neues in UliCMS 2018.3 =====
Neue Features:
+ Neue Mailversandmethode "PHPMailer", Mailversand per SMTP
+ Vorbereitungen zur Ausführung von UliCMS in der Google Cloud durchgeführt
+ Seiten haben nun auch eine Gruppe (group_id)
+ Minifying von Scripts und Stylesheets kann durch Config-Variable $no_minify deaktiviert werden.
+ Exception Logging implementiert
+ Logging von SQL Queries nutzt nun auch KLogger
+ Log-Ordner wird automatisch per .htaccess geschützt
+ neue CustomField Types "FileFile" und "FileImage" (Auswahl einer Datei)
+ shell/sinstall.php kann nun Pakete von einer URL als Quelle installieren.
+ CodeMirror auf Version 5.35.0 aktualisiert
+ Die Sicherheit des Downloads von Patches und Paketen wurde verbessert (Checksum-Prüfung und SSL)
+ jQuery auf Version 1.12.4 aktualisiert
+ CrawlerDetect auf Version 1.2.62 aktualisiert
+ Mobile_Detect aktualisiert auf Version 2.8.31
+ Build Datum von Paketen wird angezeigt
+ Build Datum von UliCMS wird unter "Info" angezeigt
+ Formular System: Pflichtfelder können festgelegt werden
+ Pflichtfelder im Backend sind nun mit Sternchen als solche markiert
+ "Auto Embed" ist nun per Default deaktiviert
Neue API-Funktionen:
* ModuleHelper::getBaseUrl($suffix)
Neue HTML-Helper:
* UliCMS\HTML\Style\FromExternalFile($href, $media = null, $htmlAttributes = array())
* UliCMS\HTML\Style\FromString($code, $media = null, $htmlAttributes = array())
* UliCMS\HTML\Script::FromExternalFile($src, $async = false, $defer = false, $htmlAttributes = array())
* UliCMS\HTML\Script::FromString($code, $async = false, $defer = false, $htmlAttributes = array())
* UliCMS\HTML\Link\Link($href, $text, $htmlAttributes = array())
* UliCMS\HTML\Link\ActionLink($action, $text, $suffix = null, $htmlAttributes = array())
* UliCMS\HTML\Input\TextBox($name, $value, $type = "text", $htmlAttributes = array())
* UliCMS\HTML\Input\TextArea($name, $value, $rows = 25, $cols = 80, $htmlAttributes = array())
* UliCMS\HTML\Input\Password($name, $value, $htmlAttributes = array())
* UliCMS\HTML\Input\Hidden($name, $value, $htmlAttributes = array())
* UliCMS\HTML\Input\CheckBox($name, $checked = false, $value = "1", $htmlAttributes = array())
* UliCMS\HTML\Input\RadioButton($name, $checked = false, $value = "1", $htmlAttributes = array())
* UliCMS\HTML\Input\SingleSelect($name, $value = null, $options = array(), $size = 1, $htmlAttributes = array())
* UliCMS\HTML\Input\MultiSelect($name, $value = null, $options = array(), $size = 5, $htmlAttributes = array())
* UliCMS\HTML\ListItem (Klasse)
Minifying:
* combinedScriptHtml() (statt combined_script_html())
* combinedStylesheetHtml (statt combined_stylesheet_html())
* Die Funktionen im alten Namensschema bleiben aus
Kompatiblitätsgründen erhalten, sind jedoch als Deprecated (veraltet) gekennzeichnet
Verbesserungen:
+ Formularsystem verwendet nun die E-Mail Adresse aus den Grundeinstellungen als Absender,
falls kein Feld für die E-Mail Adresse gesetzt ist.
+ Performance der Installation von mehrere Paketen und Patches optimiert
+ cms-config.php in CMSConfig.php umbenannt
* JsTranslation Übersetzungsnamen nun in CamelCase (z.B. Translation.AskForDelete, statt Translation.ASK_FOR_DELETE)
Entfernte Features:
- Zugriff von IP-Adressen die auf der Blacklist von spamhaus.org gelistet sind verweigern.
- YaLinqo entfernt
- Design Option "Zoom" entfernt
- Gravatar Feature deaktiviert wegen Datenschutz-Grundverordnung 2018
Bugfixes:
* "Custom Types" Feature war defekt
* Hochgeladene Videos wurden im Root-Ordner des Dateisystems gespeichert
* Sicherheit: Hook-Funktionen in Controllern können nicht mehr direkt per HTTP Request ausgeführt werden.
* ModuleHelper::getFullPageURLByID() gibt fehlerhafte URl aus unter Windows
* Kompatiblitätsproblem mit dem mPDF Modul behoben
* Weiterleitung zum Installer wenn keine Konfigurationsdatei vorhanden funktioniert wieder.
* Mehrere Fehler beim Speichern von Gruppen korrigiert
* Gelöschte Seiten werden nicht mehr angezeigt bei "Letzte Änderungen" und "Top Seiten"
===== Neues in UliCMS 2018.2 =====
Neue Features:
+ Zurück-Buttons im Backend eingefügt
+ Weitere Verbesserungen in der Backend-Navigation
+ Neue Methode gegen Formularspam
+ Steuerelemente mit Bootstrap und Select2 modernisiert
+ core_forms: Spamfilter integriert
+ file_get_contents_wrapper: Checksum-Prüfung implementiert
+ Eigenes Template für Fehlerseiten (Exceptions) möglich
+ Settings::mappingStringToArray($str) unterstützt nun Kommentare
+ Verbindung zur Datenbank per Socket möglich
+ Port zu Datenbank-Server kann nun angegeben werden
+ Zeige Positionen im Menü für Benutzer mit der Berechtigung "pages_show_positions"
+ oneclick_upgrade auf Version 1.6 aktualisiert
+ Mobile_Detect auf Version 2.8.30 aktualisiert
+ update_manager auf Version 1.0.5 aktualisiert
+ YaLinqo hinzugefügt (Yet Another LINQ to Objects for PHP)
Neue Funktionen:
+ is_true($var)
+ is_false($var)
+ StringHelper::linesFromString($str, $trim = true, $removeEmpty = true, $removeComments = true)
+ StringHelper::linesFromFile($file, $trim = true, $removeEmpty = true, $removeComments = true)
+ AntiSpamHelper::isSpamFilterEnabled()
+ Result($data, $status = 200, $type = null)
Verbesserungen:
* Action pkginfo in core_package_manager: Button nun mit Bootstrap Style
* Button "Liste zurücksetzen" unter "Installierte Patches" nun mit Bootstrap Style
* Der Caching-Code wurde aufgeräumt. Doppelter Code entfernt.
* Caching erfolgt nun durch PhpFastCache
* "Anzeigen" unter "Seite bearbeiten" öffnet in neuem Tab, wenn ungespeicherte Änderungen vorhanden sind,
ansonsten im selben Tab
Bugfixes:
* Fehlerhafte Berechtigungsprüfung in core_settings korrigiert
* Favicon-Metatag wird auch ausgegeben wenn "hide_meta_generator" gesetzt ist
* Alternative Überschrift wurde nicht im Frontend angezeigt
* core_content - Werbebanner Liste: Anzahl der Ergebnisse wird wieder angezeigt
* core_content - Werbebanner: Neu erstellte Werbebanner mit der Sprache "Alle" wurden nicht angezeigt
* core_users - Es ist nun wieder möglich einen User ohne Gruppe anzulegen.
* Seiten vom Typ "Liste" zeigen nun keine gelöschten Datensätze mehr an.
* Bei der Installation von SimpleInstall v2 Paketen ohne Abhängigkeiten funktionierte die Prüfung, ob die UliCMS Version unterstützt wird nicht.
Entfernte Features:
* E-Mail Versandmethode "PEAR Mail" entfernt.
In einer zukünftigen Version wird stattdessen PHPMailer integriert
Dies geschieht voraussichtlich im Release 2018.3
===== Neues in UliCMS 2018.1.1 =====
+ Neue Funktionen:
* bool2YesNo($value, $yesString = null, $noString = null)
Bugfixes:
* Icon zum Cache leeren war nicht funktional
* Unnötige Debug Ausgabe entfernt
===== Neues in UliCMS 2018.1 =====
+ Teile des Backends wurden in Core-Module verschoben und in ein MVC-Pattern umstrukturiert
+ Module können nun Inhaltstypen mit eigenen Formularfeldern erstellen
+ Neuer Parameter $htmlAttributes (Array) zu der Funktion ModuleHelper::buildMethodCallForm() hinzugefügt
+ Der Confirm-Dialog "Wirklich löschen?" kann über eine CSS-Klasse an einem Formular ausgelöst werden.
+ Durch das booleanische "shy" Attribut in einer Metadatendatei können Module und Themes im Paketmanager versteckt werden.
+ Es können nun Standardwerte für benutzerdefinierte Werte gesetzt werden
+ User->resetPassword() implementiert
+ Neue Direktive action_permissions in den Metadaten eines Moduls wird nun ausgewertet
+ Parameter $order zu allen Funktionen im User-Manager hinzugefügt
+ Neue Funktionen:
* esc()
* _esc()
* ArrayHelper::take($count, $data)
* ModuleHelper::buildMethodCallUrl()
* ModuleHelper::deleteButton()
* ModuleHelper::buildQueryString()
* ModuleHelper::buildMethodCallUploadForm()
* ModuleHelper::buildRessourcePath()
* ModuleHelper::buildMethodCallButton()
* ModuleHelper::endForm()
* CustomData::setDefault()
* CustomData::getDefaultAsJSON()
* Settings::mappingStringToArray()
* Banners::getByCategory()
* str_contains()
* register_translation()
* add_translation()
* json_readable_encode()
* getLanguageByDomain()
+ CodeMirror kann per CSS-Klasse auf eine Textarea angewenden werden.
+ Beim Upload eines SimpleInstall v2 Pakets wird nun ein Screenshot angezeigt, sofern vorhanden.
+ Modelklassen hinzugefügt
* Audio
* Video
+ Neue Filter hinzugefügt
* session_data
* body_classes
+ Neue Hooks hinzugefügt
* before_functions
* after_functions
* before_backend_header
* after_backend_header
* before_login_form
* after_login_form
* before_reset_password_form
* after_after_password_form
* before_backend_run_methods
* after_backend_run_methods
# wenn möglich wird bei PHP Fehlern der HTTP Status "500 Internal Server Error" gesendet.
# Funktion is_ajax_request() verschoben nach Request::isAjaxRequest()
# Die Logik, welche Felder abhängig vom ausgewählten Inhaltstyp ein- und ausblendet wurde neu implementiert
# Benutzer bei denen "Ist Admin" gesetzt ist, dürfen nun alle Seiten bearbeiten, unabhängig von den gesetzten Berechtigungen
- Funktion ulicms_redirect() entfernt.
Nutzen Sie stattdessen Request::redirect()
Bugfixes:
* Die Gruppe "Administratoren" wird bei der Installation wieder erstellt
* Auf einigen Systemen wurde beim Klick auf das Icon "Cache leeren" die Ladeanimation nicht angezeigt
* Der Menüpunkt "Update" wurde nicht angezeigt, wenn der Benutzer zwar zu update_system berechtigt ist, aber "Ist Admin" nicht gesetzt ist.
* Bei einigen Mailservern funktionierte der Versand von "Passwort zurücksetzen" E-Mails nicht.
* Ein Problem, bei dem die Datenbanktabelle password_reset bei der Installation und bei einem Update nicht erstellt wurde, wurde behoben.
* Model-Klasse "Banner" speichert nun korrekt
* Der Fallback-Link zu HTML5-Medien für nicht unterstützte Browser wird nun korrekt erstellt
* "Anzeigen" Link in der Seitenliste war fehlerhaft, wenn Domain2Language Mapping aktiv ist und UliCMS in einem Unterordner installiert ist.
===== Neues in UliCMS 2017.4 =====
+ Gruppen können nun Sprachen zugeordnet bekommen
+ Neuer Inhaltstyp "Snippet"
+ Zulässige Tags können nun beschränkt werden
+ Es wird nun ein Hinweis angezeigt, wenn man ein "Design für Mobilgeräte" festlegt und Mobile_Detect nicht installiert ist.
+ Benutzer können nach Gruppe gefiltert werden
+ Es kann nun eine Standardsprache je Benutzer ausgewählt werden.
+ main_class Direktive wird nun ausgewertet. Methoden (render, admin, Hooks, Filter) in der main_class werden automatisch aufgerufen.
+ settings können nun über die metadata.json eines Moduls initialisiert werden
+ Model Klasse für 'Language' hinzugefügt
+ Model Klasse für 'Category' hinzugefügt
+ Bei fehlenden Sprachdateien erfolgt ein Fallback auf Englisch
+ Neue Funktionen
* Request::getMethod()
* Request::isGet()
* Request::isPost()
* Request::isHead()
* Request::hasVar()
* Request::isSSL()
* Request::getIp()
* Request::getProtocol()
* Request::isHeaderSent($header)
* ModuleHelper::buildModuleRessourcePath($module, $path)
* ModuleHelper::buildMethodCall($sClass, $sMethod, $suffix = null)
* CustomData::getCustomDataOrSetting($name)
* ModuleHelper::underscoreToCamel($str)
* get_secure_translation()
* secure_translation()
* secure_translate()
* ArrayHelper::insertBefore($input, $index, $element)
* ArrayHelper::insertAfter($input, $index, $element)
* faster_in_array()
* Page->getEmbeddedModules()
* Template::doctype()
* Template::getDoctype()
* Template::ogHTMLPrefix()
* Template::getOgHTMLPrefix()
* ContentFactory::getAllRegular($order = "id")
* idefine($key, $value)
* JSONResult($data, $status = 200)
* RawJSONResult($data, $status = 200)
* HTMLResult($data, $status = 200)
* TextResult($data, $status = 200)
* HTTPStatusCodeResult($code, $description = null)