diff --git a/CHANGELOG.md b/CHANGELOG.md index c7a17f761..1caf42f6a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,33 @@ # Changelog +## v1.16.0 - 2019-02-23 + + +### Features + +* **CLI**: New commands for schema synchronization. +* **UI**: Imroved validation messages. +* **UI**: Integrate CLI documentation to client UI. +* **UI**: Side by side view for content differences. +* **UI**: Drag and drop assets to markdown editor. +* **UI**: Drag and drop assets to rich text editor. +* **UI**: Copy assets from clipboard to asset views. +* **UI**: Copy assets from clipboard to markdown editor. +* **UI**: Copy assets from clipboard to rich text editor. +* **UI**: Performance improvements and refactoring of components. +* **Schemas**: New endpoint to synchronize schemas. +* **Server**: Log all requests for cloud version and provide endpoint to download logs. +* **Server**: Improved logging for http requests. +* **Rules**: Generate event and trigger when the app consumed almost all resources. + +### Bugfixes + +(Mostly due to UI refactoring :( ) + +* **UI**: Fixed custom editors. +* **UI**: Fixed disable state of restore button. +* **UI**: Fixes for addition button states. + ## v1.15.0 - 2019-01-05 ### Features diff --git a/README.md b/README.md index 66aebe9c8..83b4d2eea 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ Please join our community forum: https://support.squidex.io ## Status -Current Version 1.14.0. Roadmap: https://trello.com/b/KakM4F3S/squidex-roadmap +Current Version 1.16.0. Roadmap: https://trello.com/b/KakM4F3S/squidex-roadmap ## Prerequisites diff --git a/src/Squidex/Config/Domain/EventPublishersServices.cs b/src/Squidex/Config/Domain/EventPublishersServices.cs index dad6cd6ec..623ab9ca5 100644 --- a/src/Squidex/Config/Domain/EventPublishersServices.cs +++ b/src/Squidex/Config/Domain/EventPublishersServices.cs @@ -30,7 +30,7 @@ namespace Squidex.Config.Domain throw new ConfigurationException($"Configure EventPublisher type with 'eventPublishers:{child.Key}:type'."); } - var eventsFilter = config.GetValue("eventsFilter"); + var eventsFilter = child.GetValue("eventsFilter"); var enabled = child.GetValue("enabled"); diff --git a/src/Squidex/app/features/schemas/pages/schemas/schemas-page.component.html b/src/Squidex/app/features/schemas/pages/schemas/schemas-page.component.html index d3ee7d5b5..07341296a 100644 --- a/src/Squidex/app/features/schemas/pages/schemas/schemas-page.component.html +++ b/src/Squidex/app/features/schemas/pages/schemas/schemas-page.component.html @@ -9,7 +9,7 @@ - diff --git a/src/Squidex/app/framework/angular/forms/tag-editor.component.ts b/src/Squidex/app/framework/angular/forms/tag-editor.component.ts index 9f70a8fc3..db787842b 100644 --- a/src/Squidex/app/framework/angular/forms/tag-editor.component.ts +++ b/src/Squidex/app/framework/angular/forms/tag-editor.component.ts @@ -152,7 +152,7 @@ export class TagEditorComponent extends StatefulControlComponent i this.resetSize(); }), map(query => query), - map(query => query ? query.trim() : query), + map(query => query ? query.trim().toLowerCase() : query), tap(query => { if (!query) { this.resetAutocompletion(); @@ -161,7 +161,7 @@ export class TagEditorComponent extends StatefulControlComponent i distinctUntilChanged(), map(query => { if (Types.isArray(this.suggestions) && query && query.length > 0) { - return this.suggestions.filter(s => s.indexOf(query) >= 0 && this.snapshot.items.indexOf(s) < 0); + return this.suggestions.filter(s => s.toLowerCase().indexOf(query) >= 0 && this.snapshot.items.indexOf(s) < 0); } else { return []; } diff --git a/src/Squidex/app/framework/utils/interpolator.spec.ts b/src/Squidex/app/framework/utils/interpolator.spec.ts index 58de0557c..6da899ee1 100644 --- a/src/Squidex/app/framework/utils/interpolator.spec.ts +++ b/src/Squidex/app/framework/utils/interpolator.spec.ts @@ -21,6 +21,12 @@ describe('interpolate', () => { expect(result).toEqual('hello world'); }); + it('should interpolate with multiple object values', () => { + const result = interpolate('hello ${string1}${string2}', { string1: 'world', string2: '!' }); + + expect(result).toEqual('hello world!'); + }); + it('should interpolate with array value', () => { const result = interpolate('hello ${1}', ['my', 'world']); diff --git a/src/Squidex/app/framework/utils/interpolator.ts b/src/Squidex/app/framework/utils/interpolator.ts index 6f3f88e00..5ad5de24e 100644 --- a/src/Squidex/app/framework/utils/interpolator.ts +++ b/src/Squidex/app/framework/utils/interpolator.ts @@ -8,7 +8,7 @@ import { DateTime } from './date-time'; import { Types } from './types'; -const regex = /\${[^}]+}/; +const regex = /\${[^}]+}/g; export function interpolate(pattern: string, value?: any, shortcut?: string, fallback = 'undefined'): string { const result = pattern.replace(regex, (match: string) => {