Browse Source

Fix dev server

* Fix dev server.
pull/837/head
Sebastian Stehle 4 years ago
committed by GitHub
parent
commit
949e4e289c
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 18
      backend/i18n/frontend_en.json
  2. 18
      backend/i18n/frontend_it.json
  3. 18
      backend/i18n/frontend_nl.json
  4. 18
      backend/i18n/frontend_zh.json
  5. 12
      backend/i18n/source/backend__ignore.json
  6. 8
      backend/i18n/source/backend_en.json
  7. 44
      backend/i18n/source/frontend__ignore.json
  8. 18
      backend/i18n/source/frontend_en.json
  9. 2
      backend/i18n/translator/Squidex.Translator/Processes/Frontend.cs
  10. 8
      backend/src/Squidex.Shared/Texts.nl.resx
  11. 8
      backend/src/Squidex.Shared/Texts.resx
  12. 14
      backend/src/Squidex/Areas/Frontend/Startup.cs
  13. 6
      backend/src/Squidex/Areas/IdentityServer/Views/Setup/Setup.cshtml
  14. 5
      backend/src/Squidex/Areas/IdentityServer/Views/_Layout.cshtml
  15. 14
      frontend/src/app/features/rules/shared/triggers/asset-changed-trigger.component.html
  16. 12
      frontend/src/app/features/rules/shared/triggers/comment-trigger.component.html
  17. 30
      frontend/src/app/features/rules/shared/triggers/content-changed-trigger.component.html
  18. 12
      frontend/src/app/features/rules/shared/triggers/schema-changed-trigger.component.html
  19. 8
      frontend/src/app/features/rules/shared/triggers/usage-trigger.component.html
  20. 8
      frontend/src/app/features/schemas/pages/schema/fields/types/assets-validation.component.html
  21. 2
      frontend/src/app/theme/_static.scss

18
backend/i18n/frontend_en.json

@ -235,6 +235,8 @@
"common.clusterPageTitle": "Cluster", "common.clusterPageTitle": "Cluster",
"common.comments": "Comments", "common.comments": "Comments",
"common.components": "Components", "common.components": "Components",
"common.condition": "Condition",
"common.conditions": "Conditions",
"common.confirm": "Confirm", "common.confirm": "Confirm",
"common.consumers": "Consumers", "common.consumers": "Consumers",
"common.content": "Content", "common.content": "Content",
@ -661,7 +663,22 @@
"roles.updateFailed": "Failed to update role. Please reload.", "roles.updateFailed": "Failed to update role. Please reload.",
"rules.actionData": "Action Data", "rules.actionData": "Action Data",
"rules.actionHint": "The selection of the action type cannot be changed later.", "rules.actionHint": "The selection of the action type cannot be changed later.",
"rules.addSchema": "Add Schema",
"rules.cancelFailed": "Failed to cancel rule. Please reload.", "rules.cancelFailed": "Failed to cancel rule. Please reload.",
"rules.conditionHint": "Optional condition as javascript expression",
"rules.conditionHint2": "Conditions are javascript expressions that define when to trigger, for example",
"rules.conditions.commentKeyword": "Only for text keywords",
"rules.conditions.commentUser": "Specific users",
"rules.conditions.contentValue": "Content has value",
"rules.conditions.event": "Specific events",
"rules.conditions.images": "Images only",
"rules.conditions.largeAssets": "Large assets",
"rules.conditions.schema": "Specific schema only",
"rules.conditions.updatedBy": "Updated by user",
"rules.conditions.usageDays": "Days",
"rules.conditions.usageDaysHint": "The number of days to check or empty to check the current month.",
"rules.conditions.usageLimit": "Limit",
"rules.conditions.usageLimitHint": "The monthly api calls to trigger.",
"rules.create": "New Rule", "rules.create": "New Rule",
"rules.createFailed": "Failed to create rule. Please reload.", "rules.createFailed": "Failed to create rule. Please reload.",
"rules.createTooltip": "New Rule", "rules.createTooltip": "New Rule",
@ -723,6 +740,7 @@
"rules.simulation.eventTriggerChecked": "Event is tested to see if it matchs to the trigger and the basic conditions.", "rules.simulation.eventTriggerChecked": "Event is tested to see if it matchs to the trigger and the basic conditions.",
"rules.simulator": "Simulator", "rules.simulator": "Simulator",
"rules.stop": "Rule will stop soon.", "rules.stop": "Rule will stop soon.",
"rules.triggerAll": "Trigger on all content events",
"rules.triggerConfirmText": "Do you really want to trigger the rule?", "rules.triggerConfirmText": "Do you really want to trigger the rule?",
"rules.triggerConfirmTitle": "Trigger rule", "rules.triggerConfirmTitle": "Trigger rule",
"rules.triggerFailed": "Failed to trigger rule. Please reload.", "rules.triggerFailed": "Failed to trigger rule. Please reload.",

18
backend/i18n/frontend_it.json

@ -235,6 +235,8 @@
"common.clusterPageTitle": "Cluster", "common.clusterPageTitle": "Cluster",
"common.comments": "Commenti", "common.comments": "Commenti",
"common.components": "Components", "common.components": "Components",
"common.condition": "Condition",
"common.conditions": "Conditions",
"common.confirm": "Conferma", "common.confirm": "Conferma",
"common.consumers": "Servizi", "common.consumers": "Servizi",
"common.content": "Contenuto", "common.content": "Contenuto",
@ -661,7 +663,22 @@
"roles.updateFailed": "Non è stato possibile aggiornare il ruolo. Per favore ricarica.", "roles.updateFailed": "Non è stato possibile aggiornare il ruolo. Per favore ricarica.",
"rules.actionData": "Action Data", "rules.actionData": "Action Data",
"rules.actionHint": "The selection of the action type cannot be changed later.", "rules.actionHint": "The selection of the action type cannot be changed later.",
"rules.addSchema": "Add Schema",
"rules.cancelFailed": "Non è stato possibile eliminare la regola. Per favore ricarica.", "rules.cancelFailed": "Non è stato possibile eliminare la regola. Per favore ricarica.",
"rules.conditionHint": "Optional condition as javascript expression",
"rules.conditionHint2": "Conditions are javascript expressions that define when to trigger, for example",
"rules.conditions.commentKeyword": "Only for text keywords",
"rules.conditions.commentUser": "Specific users",
"rules.conditions.contentValue": "Content has value",
"rules.conditions.event": "Specific events",
"rules.conditions.images": "Images only",
"rules.conditions.largeAssets": "Large assets",
"rules.conditions.schema": "Specific schema only",
"rules.conditions.updatedBy": "Updated by user",
"rules.conditions.usageDays": "Days",
"rules.conditions.usageDaysHint": "The number of days to check or empty to check the current month.",
"rules.conditions.usageLimit": "Limit",
"rules.conditions.usageLimitHint": "The monthly api calls to trigger.",
"rules.create": "Crea un nuova Regola", "rules.create": "Crea un nuova Regola",
"rules.createFailed": "Non è stato possibile creare una nuova regola. Per favore ricarica.", "rules.createFailed": "Non è stato possibile creare una nuova regola. Per favore ricarica.",
"rules.createTooltip": "Nuova regola", "rules.createTooltip": "Nuova regola",
@ -723,6 +740,7 @@
"rules.simulation.eventTriggerChecked": "Event is tested to see if it matchs to the trigger and the basic conditions.", "rules.simulation.eventTriggerChecked": "Event is tested to see if it matchs to the trigger and the basic conditions.",
"rules.simulator": "Simulator", "rules.simulator": "Simulator",
"rules.stop": "La regola si fermerà al più presto.", "rules.stop": "La regola si fermerà al più presto.",
"rules.triggerAll": "Trigger on all content events",
"rules.triggerConfirmText": "Sei sicuro che voler attivare la regola?", "rules.triggerConfirmText": "Sei sicuro che voler attivare la regola?",
"rules.triggerConfirmTitle": "Attiva la regola", "rules.triggerConfirmTitle": "Attiva la regola",
"rules.triggerFailed": "Non è stato possibile attivare la regola. Per favore ricarica.", "rules.triggerFailed": "Non è stato possibile attivare la regola. Per favore ricarica.",

18
backend/i18n/frontend_nl.json

@ -235,6 +235,8 @@
"common.clusterPageTitle": "Cluster", "common.clusterPageTitle": "Cluster",
"common.comments": "Reacties", "common.comments": "Reacties",
"common.components": "Componenten", "common.components": "Componenten",
"common.condition": "Condition",
"common.conditions": "Conditions",
"common.confirm": "Bevestigen", "common.confirm": "Bevestigen",
"common.consumers": "Consumenten", "common.consumers": "Consumenten",
"common.content": "Inhoud", "common.content": "Inhoud",
@ -661,7 +663,22 @@
"roles.updateFailed": "Update rol mislukt. Laad opnieuw.", "roles.updateFailed": "Update rol mislukt. Laad opnieuw.",
"rules.actionData": "Actiegegevens", "rules.actionData": "Actiegegevens",
"rules.actionHint": "De selectie van het actietype kan later niet worden gewijzigd.", "rules.actionHint": "De selectie van het actietype kan later niet worden gewijzigd.",
"rules.addSchema": "Add Schema",
"rules.cancelFailed": "Annuleren van regel is mislukt. Laad opnieuw.", "rules.cancelFailed": "Annuleren van regel is mislukt. Laad opnieuw.",
"rules.conditionHint": "Optional condition as javascript expression",
"rules.conditionHint2": "Conditions are javascript expressions that define when to trigger, for example",
"rules.conditions.commentKeyword": "Only for text keywords",
"rules.conditions.commentUser": "Specific users",
"rules.conditions.contentValue": "Content has value",
"rules.conditions.event": "Specific events",
"rules.conditions.images": "Images only",
"rules.conditions.largeAssets": "Large assets",
"rules.conditions.schema": "Specific schema only",
"rules.conditions.updatedBy": "Updated by user",
"rules.conditions.usageDays": "Days",
"rules.conditions.usageDaysHint": "The number of days to check or empty to check the current month.",
"rules.conditions.usageLimit": "Limit",
"rules.conditions.usageLimitHint": "The monthly api calls to trigger.",
"rules.create": "Maak een nieuwe regel", "rules.create": "Maak een nieuwe regel",
"rules.createFailed": "Maken van regel is mislukt. Laad opnieuw.", "rules.createFailed": "Maken van regel is mislukt. Laad opnieuw.",
"rules.createTooltip": "Nieuwe regel", "rules.createTooltip": "Nieuwe regel",
@ -723,6 +740,7 @@
"rules.simulation.eventTriggerChecked": "Het evenement is getest om te zien of het overeenkomt met de trigger en de basisvoorwaarden.", "rules.simulation.eventTriggerChecked": "Het evenement is getest om te zien of het overeenkomt met de trigger en de basisvoorwaarden.",
"rules.simulator": "Simulator", "rules.simulator": "Simulator",
"rules.stop": "Regel stopt binnenkort.", "rules.stop": "Regel stopt binnenkort.",
"rules.triggerAll": "Trigger on all content events",
"rules.triggerConfirmText": "Wil je echt de regel activeren?", "rules.triggerConfirmText": "Wil je echt de regel activeren?",
"rules.triggerConfirmTitle": "Trigger regel", "rules.triggerConfirmTitle": "Trigger regel",
"rules.triggerFailed": "Kan regel niet activeren. Laad opnieuw.", "rules.triggerFailed": "Kan regel niet activeren. Laad opnieuw.",

18
backend/i18n/frontend_zh.json

@ -235,6 +235,8 @@
"common.clusterPageTitle": "集群", "common.clusterPageTitle": "集群",
"common.comments": "评论", "common.comments": "评论",
"common.components": "组件", "common.components": "组件",
"common.condition": "Condition",
"common.conditions": "Conditions",
"common.confirm": "确认", "common.confirm": "确认",
"common.consumers": "消费者", "common.consumers": "消费者",
"common.content": "内容", "common.content": "内容",
@ -661,7 +663,22 @@
"roles.updateFailed": "更新角色失败。请重新加载。", "roles.updateFailed": "更新角色失败。请重新加载。",
"rules.actionData": "动作数据", "rules.actionData": "动作数据",
"rules.actionHint": "动作类型的选择以后不能更改。", "rules.actionHint": "动作类型的选择以后不能更改。",
"rules.addSchema": "Add Schema",
"rules.cancelFailed": "取消规则失败,请重新加载。", "rules.cancelFailed": "取消规则失败,请重新加载。",
"rules.conditionHint": "Optional condition as javascript expression",
"rules.conditionHint2": "Conditions are javascript expressions that define when to trigger, for example",
"rules.conditions.commentKeyword": "Only for text keywords",
"rules.conditions.commentUser": "Specific users",
"rules.conditions.contentValue": "Content has value",
"rules.conditions.event": "Specific events",
"rules.conditions.images": "Images only",
"rules.conditions.largeAssets": "Large assets",
"rules.conditions.schema": "Specific schema only",
"rules.conditions.updatedBy": "Updated by user",
"rules.conditions.usageDays": "Days",
"rules.conditions.usageDaysHint": "The number of days to check or empty to check the current month.",
"rules.conditions.usageLimit": "Limit",
"rules.conditions.usageLimitHint": "The monthly api calls to trigger.",
"rules.create": "新规则", "rules.create": "新规则",
"rules.createFailed": "创建规则失败。请重新加载。", "rules.createFailed": "创建规则失败。请重新加载。",
"rules.createTooltip": "新规则", "rules.createTooltip": "新规则",
@ -723,6 +740,7 @@
"rules.simulation.eventTriggerChecked": "Event is tested to see if it matchs to the trigger and the basic conditions.", "rules.simulation.eventTriggerChecked": "Event is tested to see if it matchs to the trigger and the basic conditions.",
"rules.simulator": "模拟器", "rules.simulator": "模拟器",
"rules.stop": "规则很快就会停止。", "rules.stop": "规则很快就会停止。",
"rules.triggerAll": "Trigger on all content events",
"rules.triggerConfirmText": "你真的要触发规则吗?", "rules.triggerConfirmText": "你真的要触发规则吗?",
"rules.triggerConfirmTitle": "触发规则", "rules.triggerConfirmTitle": "触发规则",
"rules.triggerFailed": "触发规则失败。请重新加载。", "rules.triggerFailed": "触发规则失败。请重新加载。",

12
backend/i18n/source/backend__ignore.json

@ -30,20 +30,16 @@
"*" "*"
], ],
"/Squidex.Domain.Apps.Core.Operations/ConvertContent/StringFormatter.cs": [ "/Squidex.Domain.Apps.Core.Operations/ConvertContent/StringFormatter.cs": [
"{array.Count} {pluralName}", "*"
"{lat}, {lon}",
"<Json />",
"0 {pluralName}",
"1 {singularName}"
], ],
"/Squidex.Domain.Apps.Core.Operations/DefaultValues/DefaultValueFactory.cs": [ "/Squidex.Domain.Apps.Core.Operations/DefaultValues/DefaultValueFactory.cs": [
", CultureInfo.InvariantCulture)}T00:00:00Z" "*"
], ],
"/Squidex.Domain.Apps.Core.Operations/GenerateJsonSchema/ContentSchemaBuilder.cs": [ "/Squidex.Domain.Apps.Core.Operations/GenerateJsonSchema/ContentSchemaBuilder.cs": [
"*" "*"
], ],
"/Squidex.Domain.Apps.Core.Operations/GenerateJsonSchema/JsonSchemaExtensions.cs": [ "/Squidex.Domain.Apps.Core.Operations/GenerateJsonSchema/JsonSchemaExtensions.cs": [
"{field.Name} ({field.RawProperties.Hints})" "*"
], ],
"/Squidex.Domain.Apps.Core.Operations/HandleRules/Result.cs": [ "/Squidex.Domain.Apps.Core.Operations/HandleRules/Result.cs": [
"*" "*"
@ -61,7 +57,7 @@
"*" "*"
], ],
"/Squidex.Domain.Apps.Core.Operations/Scripting/ScriptOptions.cs": [ "/Squidex.Domain.Apps.Core.Operations/Scripting/ScriptOptions.cs": [
"CanReject={CanReject}, CanDisallow={CanDisallow}, AsContext={AsContext}" "*"
], ],
"/Squidex.Domain.Apps.Core.Operations/Templates/TemplateParseException.cs": [ "/Squidex.Domain.Apps.Core.Operations/Templates/TemplateParseException.cs": [
"*" "*"

8
backend/i18n/source/backend_en.json

@ -286,18 +286,18 @@
"setup.createUser.loginLink": "Go to Login Page.", "setup.createUser.loginLink": "Go to Login Page.",
"setup.createUser.separator": "OR", "setup.createUser.separator": "OR",
"setup.headline": "Installation", "setup.headline": "Installation",
"setup.hint": "You are seeing this screen because no user exists yet. After a user is created, you are not able to use this screen again.", "setup.hint": "You see this screen because no user exists yet. After a user is created, you are not able to use this setup page again.",
"setup.madeBy": "Proudly made by", "setup.madeBy": "Proudly made by",
"setup.madeByCopyright": "Sebastian Stehle and Contributors, 2016-2021", "setup.madeByCopyright": "Sebastian Stehle and Contributors, 2016-2021",
"setup.ruleAppCreation.warningAdmins": "With your setup, only admins can create new apps. If you want to change this set <code>UI__ONLYADMINSCANCREATEAPPS=false</code> as environment variable.", "setup.ruleAppCreation.warningAdmins": "With your setup, only admins can create new apps. If you want to change this set <code>UI__ONLYADMINSCANCREATEAPPS=false</code> as environment variable.",
"setup.ruleAppCreation.warningAll": "With your setup, every user can create new apps. If you want to change this set <code>UI__ONLYADMINSCANCREATEAPPS=true</code> as environment variable.", "setup.ruleAppCreation.warningAll": "With your setup, every user can create new apps. If you want to change this set <code>UI__ONLYADMINSCANCREATEAPPS=true</code> as environment variable.",
"setup.ruleFolder.warning": "You are using the <strong>folder asset store</strong> where all assets are stored in the file system. Please remember to include the asset folder into your backup strategy and map it to a volume, if you are using Docker.", "setup.ruleFolder.warning": "You are using the <strong>folder asset store</strong> where all assets are stored in the file system. Please remember to include the asset folder into your backup strategy and map it to a volume, if you are using docker.",
"setup.ruleFtp.warning": "You are using the <strong>FTP asset store</strong>. It is not recommended to use this storage type because of bad performance.", "setup.ruleFtp.warning": "You are using the <strong>FTP asset store</strong>. It is not recommended to use this storage type because of bad performance.",
"setup.ruleHttps.failure": " You are not accessing the site over https. If this warning is not correct then Squidex cannot detect https mode, because your instance is behind a reverse proxy such as nginx. Ensure that http headers are forwarded properly, via the <code>X-Forwarded-*</code> headers.", "setup.ruleHttps.failure": " You are not accessing the site over https. If this warning is not correct then Squidex cannot detect https mode, because your instance is behind a reverse proxy such as nginx. Ensure that http headers are forwarded properly, via the <code>X-Forwarded-*</code> headers.",
"setup.ruleHttps.success": "Congratulations, you are accessing your Squidex installation over a secure connection (https).", "setup.ruleHttps.success": "Congratulations, you are accessing your Squidex installation over a secure connection (https).",
"setup.rules.headline": "System Checklist", "setup.rules.headline": "System Checklist",
"setup.ruleUrl.failure": "You should access Squidex only over one canonical URL and configure this URL with the <code>URLS__BASEURL</code> environment variable. The current base URL <code>{actual}</code> does not match to the base url <code>{configured}</code>.", "setup.ruleUrl.failure": "You should access Squidex only over one canonical URL and configure this URL with the <code>URLS__BASEURL</code> environment variable. The current base URL <code>{actual}</code> does not match to the base url <code>{configured}</code>. This variable must point to the public URL under which your Squidex instance is available.",
"setup.ruleUrl.success": "Congratulations, the <code>URLS__BASEURL</code> environment variable is configured properly.", "setup.ruleUrl.success": "Congratulations, the <code>URLS__BASEURL</code> environment variable is configured properly. This variable must point to the public URL under which your Squidex instance is available.",
"setup.title": "Installation", "setup.title": "Installation",
"setup.webpack.headline": "webpack error", "setup.webpack.headline": "webpack error",
"setup.webpack.text": "You have to run webpack dev server to run the frontend in Development mode. More information in the documenation: ", "setup.webpack.text": "You have to run webpack dev server to run the frontend in Development mode. More information in the documenation: ",

44
backend/i18n/source/frontend__ignore.json

@ -5,6 +5,10 @@
"/app.module.ts": [ "/app.module.ts": [
"Application element not found" "Application element not found"
], ],
"/features/apps/pages/app.component.html": [
"&middot;",
"|"
],
"/features/apps/pages/apps-page.component.html": [ "/features/apps/pages/apps-page.component.html": [
"&middot;", "&middot;",
"|" "|"
@ -22,25 +26,21 @@
"{{field.displayName}} {{displaySuffix}}", "{{field.displayName}} {{displaySuffix}}",
"*" "*"
], ],
"/features/content/shared/references/reference-item.component.html": [
"INVALID",
"VALID"
],
"/features/content/shared/references/references-editor.component.html": [ "/features/content/shared/references/references-editor.component.html": [
"&middot;" "&middot;"
], ],
"/features/rules/pages/rules/actions/generic-action.component.html": [ "/features/rules/pages/rule/rule-page.component.html": [
"*" "...",
], "#"
"/features/rules/pages/rules/triggers/asset-changed-trigger.component.html": [
"*"
],
"/features/rules/pages/rules/triggers/comment-trigger.component.html": [
"*"
],
"/features/rules/pages/rules/triggers/content-changed-trigger.component.html": [
"*"
], ],
"/features/rules/pages/rules/triggers/schema-changed-trigger.component.html": [ "/features/rules/pages/rules/actions/generic-action.component.html": [
"*" "*"
], ],
"/features/rules/pages/rules/triggers/usage-trigger.component.html": [ "/features/rules/shared/actions/generic-action.component.html": [
"*" "*"
], ],
"/features/schemas/pages/schema/fields/types/array-validation.component.html": [ "/features/schemas/pages/schema/fields/types/array-validation.component.html": [
@ -50,12 +50,18 @@
"-", "-",
"3", "3",
"4", "4",
"px" "Audio",
"px",
"Unknown",
"Video"
], ],
"/features/schemas/pages/schema/fields/types/boolean-ui.component.html": [ "/features/schemas/pages/schema/fields/types/boolean-ui.component.html": [
"Checkbox", "Checkbox",
"Toggle" "Toggle"
], ],
"/features/schemas/pages/schema/fields/types/components-validation.component.html": [
"-"
],
"/features/schemas/pages/schema/fields/types/date-time-ui.component.html": [ "/features/schemas/pages/schema/fields/types/date-time-ui.component.html": [
"DateTime" "DateTime"
], ],
@ -118,10 +124,14 @@
"/features/settings/pages/contributors/import-contributors-dialog.component.html": [ "/features/settings/pages/contributors/import-contributors-dialog.component.html": [
"user1@squidex.io;user2@squidex.io" "user1@squidex.io;user2@squidex.io"
], ],
"/features/settings/pages/languages/language-add-form.component.html": [
"{{language.iso2Code}} ({{language.englishName}}"
],
"/framework/angular/forms/validators.ts": [ "/framework/angular/forms/validators.ts": [
"matchValidator(): other control is not found in parent group" "matchValidator(): other control is not found in parent group"
], ],
"/framework/angular/modals/dialog-renderer.component.html": [ "/framework/angular/modals/dialog-renderer.component.html": [
"({{tooltip.shortcut}}",
"&times;" "&times;"
], ],
"/framework/angular/pager.component.html": [ "/framework/angular/pager.component.html": [
@ -146,6 +156,9 @@
"/shared/components/app-form.component.html": [ "/shared/components/app-form.component.html": [
"appName" "appName"
], ],
"/shared/components/assets/assets-selector.component.html": [
"[query]=\"assetsState.query | async\""
],
"/shared/components/forms/geolocation-editor.component.ts": [ "/shared/components/forms/geolocation-editor.component.ts": [
"&copy; <a href=\"http://osm.org/copyright\">OpenStreetMap</a> contributors" "&copy; <a href=\"http://osm.org/copyright\">OpenStreetMap</a> contributors"
], ],
@ -173,6 +186,9 @@
"/shared/components/search/search-form.component.ts": [ "/shared/components/search/search-form.component.ts": [
"form-inline search-form" "form-inline search-form"
], ],
"/shared/components/watching-users.component.html": [
"+{{currentUsers.length - 5}}"
],
"/shared/services/auth.service.ts": [ "/shared/services/auth.service.ts": [
"*" "*"
], ],

18
backend/i18n/source/frontend_en.json

@ -235,6 +235,8 @@
"common.clusterPageTitle": "Cluster", "common.clusterPageTitle": "Cluster",
"common.comments": "Comments", "common.comments": "Comments",
"common.components": "Components", "common.components": "Components",
"common.condition": "Condition",
"common.conditions": "Conditions",
"common.confirm": "Confirm", "common.confirm": "Confirm",
"common.consumers": "Consumers", "common.consumers": "Consumers",
"common.content": "Content", "common.content": "Content",
@ -661,7 +663,22 @@
"roles.updateFailed": "Failed to update role. Please reload.", "roles.updateFailed": "Failed to update role. Please reload.",
"rules.actionData": "Action Data", "rules.actionData": "Action Data",
"rules.actionHint": "The selection of the action type cannot be changed later.", "rules.actionHint": "The selection of the action type cannot be changed later.",
"rules.addSchema": "Add Schema",
"rules.cancelFailed": "Failed to cancel rule. Please reload.", "rules.cancelFailed": "Failed to cancel rule. Please reload.",
"rules.conditionHint": "Optional condition as javascript expression",
"rules.conditionHint2": "Conditions are javascript expressions that define when to trigger, for example",
"rules.conditions.commentKeyword": "Only for text keywords",
"rules.conditions.commentUser": "Specific users",
"rules.conditions.contentValue": "Content has value",
"rules.conditions.event": "Specific events",
"rules.conditions.images": "Images only",
"rules.conditions.largeAssets": "Large assets",
"rules.conditions.schema": "Specific schema only",
"rules.conditions.updatedBy": "Updated by user",
"rules.conditions.usageDays": "Days",
"rules.conditions.usageDaysHint": "The number of days to check or empty to check the current month.",
"rules.conditions.usageLimit": "Limit",
"rules.conditions.usageLimitHint": "The monthly api calls to trigger.",
"rules.create": "New Rule", "rules.create": "New Rule",
"rules.createFailed": "Failed to create rule. Please reload.", "rules.createFailed": "Failed to create rule. Please reload.",
"rules.createTooltip": "New Rule", "rules.createTooltip": "New Rule",
@ -723,6 +740,7 @@
"rules.simulation.eventTriggerChecked": "Event is tested to see if it matchs to the trigger and the basic conditions.", "rules.simulation.eventTriggerChecked": "Event is tested to see if it matchs to the trigger and the basic conditions.",
"rules.simulator": "Simulator", "rules.simulator": "Simulator",
"rules.stop": "Rule will stop soon.", "rules.stop": "Rule will stop soon.",
"rules.triggerAll": "Trigger on all content events",
"rules.triggerConfirmText": "Do you really want to trigger the rule?", "rules.triggerConfirmText": "Do you really want to trigger the rule?",
"rules.triggerConfirmTitle": "Trigger rule", "rules.triggerConfirmTitle": "Trigger rule",
"rules.triggerFailed": "Failed to trigger rule. Please reload.", "rules.triggerFailed": "Failed to trigger rule. Please reload.",

2
backend/i18n/translator/Squidex.Translator/Processes/Frontend.cs

@ -11,7 +11,7 @@ namespace Squidex.Translator.Processes
{ {
public static DirectoryInfo GetFolder(DirectoryInfo folder) public static DirectoryInfo GetFolder(DirectoryInfo folder)
{ {
return new DirectoryInfo(Path.Combine(folder.FullName, "frontend", "app")); return new DirectoryInfo(Path.Combine(folder.FullName, "frontend", "src", "app"));
} }
public static IEnumerable<(FileInfo, string)> GetTypescriptFiles(DirectoryInfo folder) public static IEnumerable<(FileInfo, string)> GetTypescriptFiles(DirectoryInfo folder)

8
backend/src/Squidex.Shared/Texts.nl.resx

@ -944,7 +944,7 @@
<value>Installation</value> <value>Installation</value>
</data> </data>
<data name="setup.hint" xml:space="preserve"> <data name="setup.hint" xml:space="preserve">
<value>You are seeing this screen because no user exists yet. After a user is created, you are not able to use this screen again.</value> <value>You see this screen because no user exists yet. After a user is created, you are not able to use this setup page again.</value>
</data> </data>
<data name="setup.madeBy" xml:space="preserve"> <data name="setup.madeBy" xml:space="preserve">
<value>Proudly made by</value> <value>Proudly made by</value>
@ -959,7 +959,7 @@
<value>With your setup, every user can create new apps. If you want to change this set &lt;code&gt;UI__ONLYADMINSCANCREATEAPPS=true&lt;/code&gt; as environment variable.</value> <value>With your setup, every user can create new apps. If you want to change this set &lt;code&gt;UI__ONLYADMINSCANCREATEAPPS=true&lt;/code&gt; as environment variable.</value>
</data> </data>
<data name="setup.ruleFolder.warning" xml:space="preserve"> <data name="setup.ruleFolder.warning" xml:space="preserve">
<value>You are using the &lt;strong&gt;folder asset store&lt;/strong&gt; where all assets are stored in the file system. Please remember to include the asset folder into your backup strategy and map it to a volume, if you are using Docker.</value> <value>You are using the &lt;strong&gt;folder asset store&lt;/strong&gt; where all assets are stored in the file system. Please remember to include the asset folder into your backup strategy and map it to a volume, if you are using docker.</value>
</data> </data>
<data name="setup.ruleFtp.warning" xml:space="preserve"> <data name="setup.ruleFtp.warning" xml:space="preserve">
<value>You are using the &lt;strong&gt;FTP asset store&lt;/strong&gt;. It is not recommended to use this storage type because of bad performance.</value> <value>You are using the &lt;strong&gt;FTP asset store&lt;/strong&gt;. It is not recommended to use this storage type because of bad performance.</value>
@ -974,10 +974,10 @@
<value>System Checklist</value> <value>System Checklist</value>
</data> </data>
<data name="setup.ruleUrl.failure" xml:space="preserve"> <data name="setup.ruleUrl.failure" xml:space="preserve">
<value>You should access Squidex only over one canonical URL and configure this URL with the &lt;code&gt;URLS__BASEURL&lt;/code&gt; environment variable. The current base URL &lt;code&gt;{actual}&lt;/code&gt; does not match to the base url &lt;code&gt;{configured}&lt;/code&gt;.</value> <value>You should access Squidex only over one canonical URL and configure this URL with the &lt;code&gt;URLS__BASEURL&lt;/code&gt; environment variable. The current base URL &lt;code&gt;{actual}&lt;/code&gt; does not match to the base url &lt;code&gt;{configured}&lt;/code&gt;. This variable must point to the public URL under which your Squidex instance is available.</value>
</data> </data>
<data name="setup.ruleUrl.success" xml:space="preserve"> <data name="setup.ruleUrl.success" xml:space="preserve">
<value>Congratulations, the &lt;code&gt;URLS__BASEURL&lt;/code&gt; environment variable is configured properly.</value> <value>Congratulations, the &lt;code&gt;URLS__BASEURL&lt;/code&gt; environment variable is configured properly. This variable must point to the public URL under which your Squidex instance is available.</value>
</data> </data>
<data name="setup.title" xml:space="preserve"> <data name="setup.title" xml:space="preserve">
<value>Installation</value> <value>Installation</value>

8
backend/src/Squidex.Shared/Texts.resx

@ -944,7 +944,7 @@
<value>Installation</value> <value>Installation</value>
</data> </data>
<data name="setup.hint" xml:space="preserve"> <data name="setup.hint" xml:space="preserve">
<value>You are seeing this screen because no user exists yet. After a user is created, you are not able to use this screen again.</value> <value>You see this screen because no user exists yet. After a user is created, you are not able to use this setup page again.</value>
</data> </data>
<data name="setup.madeBy" xml:space="preserve"> <data name="setup.madeBy" xml:space="preserve">
<value>Proudly made by</value> <value>Proudly made by</value>
@ -959,7 +959,7 @@
<value>With your setup, every user can create new apps. If you want to change this set &lt;code&gt;UI__ONLYADMINSCANCREATEAPPS=true&lt;/code&gt; as environment variable.</value> <value>With your setup, every user can create new apps. If you want to change this set &lt;code&gt;UI__ONLYADMINSCANCREATEAPPS=true&lt;/code&gt; as environment variable.</value>
</data> </data>
<data name="setup.ruleFolder.warning" xml:space="preserve"> <data name="setup.ruleFolder.warning" xml:space="preserve">
<value>You are using the &lt;strong&gt;folder asset store&lt;/strong&gt; where all assets are stored in the file system. Please remember to include the asset folder into your backup strategy and map it to a volume, if you are using Docker.</value> <value>You are using the &lt;strong&gt;folder asset store&lt;/strong&gt; where all assets are stored in the file system. Please remember to include the asset folder into your backup strategy and map it to a volume, if you are using docker.</value>
</data> </data>
<data name="setup.ruleFtp.warning" xml:space="preserve"> <data name="setup.ruleFtp.warning" xml:space="preserve">
<value>You are using the &lt;strong&gt;FTP asset store&lt;/strong&gt;. It is not recommended to use this storage type because of bad performance.</value> <value>You are using the &lt;strong&gt;FTP asset store&lt;/strong&gt;. It is not recommended to use this storage type because of bad performance.</value>
@ -974,10 +974,10 @@
<value>System Checklist</value> <value>System Checklist</value>
</data> </data>
<data name="setup.ruleUrl.failure" xml:space="preserve"> <data name="setup.ruleUrl.failure" xml:space="preserve">
<value>You should access Squidex only over one canonical URL and configure this URL with the &lt;code&gt;URLS__BASEURL&lt;/code&gt; environment variable. The current base URL &lt;code&gt;{actual}&lt;/code&gt; does not match to the base url &lt;code&gt;{configured}&lt;/code&gt;.</value> <value>You should access Squidex only over one canonical URL and configure this URL with the &lt;code&gt;URLS__BASEURL&lt;/code&gt; environment variable. The current base URL &lt;code&gt;{actual}&lt;/code&gt; does not match to the base url &lt;code&gt;{configured}&lt;/code&gt;. This variable must point to the public URL under which your Squidex instance is available.</value>
</data> </data>
<data name="setup.ruleUrl.success" xml:space="preserve"> <data name="setup.ruleUrl.success" xml:space="preserve">
<value>Congratulations, the &lt;code&gt;URLS__BASEURL&lt;/code&gt; environment variable is configured properly.</value> <value>Congratulations, the &lt;code&gt;URLS__BASEURL&lt;/code&gt; environment variable is configured properly. This variable must point to the public URL under which your Squidex instance is available.</value>
</data> </data>
<data name="setup.title" xml:space="preserve"> <data name="setup.title" xml:space="preserve">
<value>Installation</value> <value>Installation</value>

14
backend/src/Squidex/Areas/Frontend/Startup.cs

@ -100,12 +100,22 @@ namespace Squidex.Areas.Frontend
private static bool IsSpaFile(this HttpContext context) private static bool IsSpaFile(this HttpContext context)
{ {
return context.IsIndex() || !Path.HasExtension(context.Request.Path); return (context.IsIndex() || !Path.HasExtension(context.Request.Path)) && !context.IsDevServer();
}
private static bool IsDevServer(this HttpContext context)
{
return context.Request.Path.StartsWithSegments("/ws", StringComparison.OrdinalIgnoreCase);
} }
private static bool IsHtmlPath(this HttpContext context) private static bool IsHtmlPath(this HttpContext context)
{ {
return context.IsSpaFile() || context.Request.Path.Value?.Contains(".html", StringComparison.OrdinalIgnoreCase) == true; return context.IsSpaFile() || context.IsHtml();
}
private static bool IsHtml(this HttpContext context)
{
return context.Request.Path.Value?.Contains(".html", StringComparison.OrdinalIgnoreCase) == true;
} }
} }
} }

6
backend/src/Squidex/Areas/IdentityServer/Views/Setup/Setup.cshtml

@ -69,7 +69,9 @@
<img style="height: 250px" class="mt-2 mb-2" src="@Url.RootContentUrl("~/squid.svg?title=Welcome&text=Welcome%20to%20the%20Installation%20Process&face=happy")" /> <img style="height: 250px" class="mt-2 mb-2" src="@Url.RootContentUrl("~/squid.svg?title=Welcome&text=Welcome%20to%20the%20Installation%20Process&face=happy")" />
<small class="form-text text-muted mt-2 mb-2">@T.Get("setup.hint")</small> <div class="mt-2 mb-2">
<small class="form-text text-muted">@T.Get("setup.hint")</small>
</div>
<div class="profile-section"> <div class="profile-section">
<h2>@T.Get("setup.rules.headline")</h2> <h2>@T.Get("setup.rules.headline")</h2>
@ -173,7 +175,7 @@
<input type="password" class="form-control" name="passwordConfirm" id="passwordConfirm" /> <input type="password" class="form-control" name="passwordConfirm" id="passwordConfirm" />
</div> </div>
<div class="form-group"> <div class="form-group mb-0">
<button type="submit" class="btn btn-success">@T.Get("setup.createUser.button")</button> <button type="submit" class="btn btn-success">@T.Get("setup.createUser.button")</button>
</div> </div>
</form> </form>

5
backend/src/Squidex/Areas/IdentityServer/Views/_Layout.cshtml

@ -14,6 +14,11 @@
{ {
@await RenderSectionAsync("header") @await RenderSectionAsync("header")
} }
<environment include="Development">
<script type="text/javascript" src="@Url.RootContentUrl("~/runtime.js")"></script>
<script type="text/javascript" src="@Url.RootContentUrl("~/polyfills.js")"></script>
</environment>
</head> </head>
<body class="profile"> <body class="profile">
<div class="profile-container"> <div class="profile-container">

14
frontend/src/app/features/rules/shared/triggers/asset-changed-trigger.component.html

@ -1,30 +1,30 @@
<div [formGroup]="triggerForm.form" class="form-horizontal"> <div [formGroup]="triggerForm.form" class="form-horizontal">
<div class="form-group"> <div class="form-group">
<label for="condition">Condition</label> <label for="condition">{{ 'common.condition' | sqxTranslate }}</label>
<sqx-control-errors for="condition"></sqx-control-errors> <sqx-control-errors for="condition"></sqx-control-errors>
<textarea class="form-control code" id="condition" formControlName="condition" placeholder="Optional condition as javascript expression"></textarea> <textarea class="form-control code" id="condition" formControlName="condition" placeholder="i18n:rules.conditionHint"></textarea>
</div> </div>
<div class="help"> <div class="help">
<h4>Conditions</h4> <h4>{{ 'common.conditions' | sqxTranslate }}</h4>
<p>Conditions are javascript expressions that define when to trigger, for example:</p> <p>{{ 'rules.conditionHint2' | sqxTranslate }}:</p>
<ul class="help-examples"> <ul class="help-examples">
<li class="help-example"> <li class="help-example">
Specific events:<br/> {{ 'rules.conditions.event' | sqxTranslate }}:<br>
<sqx-code>event.type == 'Created' || event.type == 'Updated'</sqx-code> <sqx-code>event.type == 'Created' || event.type == 'Updated'</sqx-code>
</li> </li>
<li class="help-example"> <li class="help-example">
Large assets:<br/> {{ 'rules.conditions.largeAssets' | sqxTranslate }}:<br>
<sqx-code>event.fileSize > 100000000</sqx-code> <sqx-code>event.fileSize > 100000000</sqx-code>
</li> </li>
<li class="help-example"> <li class="help-example">
Images only:<br/> {{ 'rules.conditions.images' | sqxTranslate }}:<br>
<sqx-code>event.isImage</sqx-code> <sqx-code>event.isImage</sqx-code>
</li> </li>

12
frontend/src/app/features/rules/shared/triggers/comment-trigger.component.html

@ -1,25 +1,25 @@
<div [formGroup]="triggerForm.form" class="form-horizontal"> <div [formGroup]="triggerForm.form" class="form-horizontal">
<div class="form-group"> <div class="form-group">
<label for="condition">Condition</label> <label for="condition">{{ 'common.condition' | sqxTranslate }}</label>
<sqx-control-errors for="condition"></sqx-control-errors> <sqx-control-errors for="condition"></sqx-control-errors>
<textarea class="form-control code" id="condition" formControlName="condition" placeholder="Optional condition as javascript expression"></textarea> <textarea class="form-control code" id="condition" formControlName="condition" placeholder="i18n:rules.conditionHint"></textarea>
</div> </div>
<div class="help"> <div class="help">
<h4>Conditions</h4> <h4>{{ 'common.conditions' | sqxTranslate }}</h4>
<p>Conditions are javascript expressions that define when to trigger, for example:</p> <p>{{ 'rules.conditionHint2' | sqxTranslate }}:</p>
<ul class="help-examples"> <ul class="help-examples">
<li class="help-example"> <li class="help-example">
Specific users:<br/> {{ 'rules.conditions.commentUser' | sqxTranslate }}:<br>
<sqx-code>event.mentionedUser.email === 'mail2stehle@gmail.com'</sqx-code> <sqx-code>event.mentionedUser.email === 'mail2stehle@gmail.com'</sqx-code>
</li> </li>
<li class="help-example"> <li class="help-example">
Only for text keywords:<br/> {{ 'rules.conditions.commentKeyword' | sqxTranslate }}:<br>
<sqx-code>event.text.indexOf('urgent') >= 0</sqx-code> <sqx-code>event.text.indexOf('urgent') >= 0</sqx-code>
</li> </li>

30
frontend/src/app/features/rules/shared/triggers/content-changed-trigger.component.html

@ -1,17 +1,17 @@
<ng-container *ngIf="!triggerForm.form.controls.handleAll.value"> <ng-container *ngIf="!triggerForm.form.controls.handleAll.value">
<table class="table table-middle table-sm table-fixed table-borderless"> <table class="table table-middle table-sm table-fixed table-borderless">
<colgroup> <colgroup>
<col style="width: 40%;" /> <col style="width: 40%;">
<col style="width: 60%;" /> <col style="width: 60%;">
<col style="width: 40px;" /> <col style="width: 40px;">
</colgroup> </colgroup>
<tr> <tr>
<td> <td>
<label>Schema</label> <label>{{ 'common.schema' | sqxTranslate }}</label>
</td> </td>
<td> <td>
<label>Condition</label> <label>{{ 'common.condition' | sqxTranslate }}</label>
</td> </td>
<th></th> <th></th>
</tr> </tr>
@ -21,11 +21,7 @@
<span class="truncate">{{triggerSchema.schema.displayName}}</span> <span class="truncate">{{triggerSchema.schema.displayName}}</span>
</td> </td>
<td class="text-center"> <td class="text-center">
<input type="text" class="form-control code" placeholder="Optional condition as javascript expression" <input type="text" class="form-control code" placeholder="i18n:rules.conditionHint" [disabled]="triggerForm.form.disabled" [ngModelOptions]="{ updateOn: 'blur' }" [ngModel]="triggerSchema.condition" (ngModelChange)="updateCondition(triggerSchema.schema, $event)">
[disabled]="triggerForm.form.disabled"
[ngModelOptions]="{ updateOn: 'blur' }"
[ngModel]="triggerSchema.condition"
(ngModelChange)="updateCondition(triggerSchema.schema, $event)" />
</td> </td>
<td class="text-center"> <td class="text-center">
<button type="button" class="btn btn-text-secondary" (click)="removeSchema(triggerSchema)" [disabled]="triggerForm.form.disabled"> <button type="button" class="btn btn-text-secondary" (click)="removeSchema(triggerSchema)" [disabled]="triggerForm.form.disabled">
@ -44,30 +40,30 @@
</div> </div>
<div class="col-auto"> <div class="col-auto">
<button type="submit" class="btn btn-success" [disabled]="triggerForm.form.disabled">Add Schema</button> <button type="submit" class="btn btn-success" [disabled]="triggerForm.form.disabled">{{ 'rules.addSchema' | sqxTranslate }}</button>
</div> </div>
</form> </form>
</div> </div>
<div class="help"> <div class="help">
<h4>Conditions</h4> <h4>{{ 'common.conditions' | sqxTranslate }}</h4>
<p>Conditions are javascript expressions that define when to trigger, for example:</p> <p>{{ 'rules.conditionHint2' | sqxTranslate }}:</p>
<ul class="help-examples"> <ul class="help-examples">
<li class="help-example"> <li class="help-example">
Specific events:<br/> {{ 'rules.conditions.event' | sqxTranslate }}:<br>
<sqx-code>event.type == 'Created' || event.type == 'Published'</sqx-code> <sqx-code>event.type == 'Created' || event.type == 'Published'</sqx-code>
</li> </li>
<li class="help-example"> <li class="help-example">
Content has value:<br/> {{ 'rules.conditions.contentValue' | sqxTranslate }}:<br>
<sqx-code>event.data.important.iv === true</sqx-code> <sqx-code>event.data.important.iv === true</sqx-code>
</li> </li>
<li class="help-example"> <li class="help-example">
Updated by user:<br/> {{ 'rules.conditions.updatedBy' | sqxTranslate }}:<br>
<sqx-code>user.email === 'user@squidex.io'</sqx-code> <sqx-code>user.email === 'user@squidex.io'</sqx-code>
</li> </li>
@ -79,7 +75,7 @@
<div class="form-check"> <div class="form-check">
<input class="form-check-input" type="checkbox" id="handleAll" formControlName="handleAll"> <input class="form-check-input" type="checkbox" id="handleAll" formControlName="handleAll">
<label class="form-check-label" for="handleAll"> <label class="form-check-label" for="handleAll">
Trigger on all content events {{ 'rules.triggerAll' | sqxTranslate }}
</label> </label>
</div> </div>
</div> </div>

12
frontend/src/app/features/rules/shared/triggers/schema-changed-trigger.component.html

@ -1,25 +1,25 @@
<div [formGroup]="triggerForm.form" class="form-horizontal"> <div [formGroup]="triggerForm.form" class="form-horizontal">
<div class="form-group"> <div class="form-group">
<label for="condition">Condition</label> <label for="condition">{{ 'common.condition' | sqxTranslate }}</label>
<sqx-control-errors for="condition"></sqx-control-errors> <sqx-control-errors for="condition"></sqx-control-errors>
<textarea class="form-control code" id="condition" formControlName="condition" placeholder="Optional condition as javascript expression"></textarea> <textarea class="form-control code" id="condition" formControlName="condition" placeholder="i18n:rules.conditionHint"></textarea>
</div> </div>
<div class="help"> <div class="help">
<h4>Conditions</h4> <h4>{{ 'common.conditions' | sqxTranslate }}</h4>
<p>Conditions are javascript expressions that define when to trigger, for example:</p> <p>{{ 'rules.conditionHint2' | sqxTranslate }}:</p>
<ul class="help-examples"> <ul class="help-examples">
<li class="help-example"> <li class="help-example">
Specific events:<br/> {{ 'rules.conditions.event' | sqxTranslate }}:<br>
<sqx-code>event.type == 'Created' || event.type == 'Updated'</sqx-code> <sqx-code>event.type == 'Created' || event.type == 'Updated'</sqx-code>
</li> </li>
<li class="help-example"> <li class="help-example">
Specific schema only:<br/> {{ 'rules.conditions.schema' | sqxTranslate }}:<br>
<sqx-code>schemaId.name === 'my-schema'</sqx-code> <sqx-code>schemaId.name === 'my-schema'</sqx-code>
</li> </li>

8
frontend/src/app/features/rules/shared/triggers/usage-trigger.component.html

@ -1,25 +1,25 @@
<div [formGroup]="triggerForm.form" class="form-horizontal"> <div [formGroup]="triggerForm.form" class="form-horizontal">
<div class="form-group"> <div class="form-group">
<label for="limit">Limit</label> <label for="limit">{{ 'rules.conditions.usageLimit' | sqxTranslate }}</label>
<sqx-control-errors for="limit"></sqx-control-errors> <sqx-control-errors for="limit"></sqx-control-errors>
<input type="number" step="1" class="form-control" id="limit" formControlName="limit"> <input type="number" step="1" class="form-control" id="limit" formControlName="limit">
<sqx-form-hint> <sqx-form-hint>
The monthly api calls to trigger. {{ 'rules.conditions.usageLimitHint' | sqxTranslate }}
</sqx-form-hint> </sqx-form-hint>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="condition">Days</label> <label for="condition">{{ 'rules.conditions.usageDays' | sqxTranslate }}</label>
<sqx-control-errors for="numDays" fieldName="Days"></sqx-control-errors> <sqx-control-errors for="numDays" fieldName="Days"></sqx-control-errors>
<input type="number" step="1" class="form-control" id="condition" formControlName="numDays"> <input type="number" step="1" class="form-control" id="condition" formControlName="numDays">
<sqx-form-hint> <sqx-form-hint>
The number of days to check or empty to check the current month. {{ 'rules.conditions.usageDaysHint' | sqxTranslate }}
</sqx-form-hint> </sqx-form-hint>
</div> </div>
</div> </div>

8
frontend/src/app/features/schemas/pages/schema/fields/types/assets-validation.component.html

@ -34,13 +34,13 @@
<input type="number" class="form-control" formControlName="maxSize" placeholder="{{ 'schemas.fieldTypes.assets.sizeMax' | sqxTranslate }}"> <input type="number" class="form-control" formControlName="maxSize" placeholder="{{ 'schemas.fieldTypes.assets.sizeMax' | sqxTranslate }}">
</div> </div>
<div class="col col-label"> <div class="col col-label">
<label class="col-form-label">bytes</label> <label class="col-form-label">{{ 'common.bytes' | sqxTranslate }}</label>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<hr /> <hr>
<div class="form-group row"> <div class="form-group row">
<label class="col-3 col-form-label">{{ 'schemas.fieldTypes.assets.expectedType' | sqxTranslate }}</label> <label class="col-3 col-form-label">{{ 'schemas.fieldTypes.assets.expectedType' | sqxTranslate }}</label>
@ -50,7 +50,7 @@
<div class="col"> <div class="col">
<select class="form-select" formControlName="expectedType"> <select class="form-select" formControlName="expectedType">
<option></option> <option></option>
<option ngValue="Image">Image</option> <option ngValue="Image">{{ 'apps.image' | sqxTranslate }}</option>
<option ngValue="Audio">Audio</option> <option ngValue="Audio">Audio</option>
<option ngValue="Video">Video</option> <option ngValue="Video">Video</option>
<option ngValue="Unknown">Unknown</option> <option ngValue="Unknown">Unknown</option>
@ -125,7 +125,7 @@
</div> </div>
</div> </div>
<hr /> <hr>
<div class="form-group row"> <div class="form-group row">
<div class="col-9 offset-3"> <div class="col-9 offset-3">

2
frontend/src/app/theme/_static.scss

@ -99,7 +99,7 @@ noscript {
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
text-align: center; text-align: center;
width: 7rem; width: 10rem;
} }
&-text { &-text {

Loading…
Cancel
Save