Browse Source

Merge pull request #9411 from nocodb/nc-chore/docs-link-corrections

Nc chore/docs link corrections
pull/9413/head
Pranav C 3 months ago committed by GitHub
parent
commit
756464e5f3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 28
      .github/workflows/validate-docs-links.yml
  2. 4
      packages/noco-docs/docs/020.getting-started/050.self-hosted/020.environment-variables.md
  3. 6
      packages/noco-docs/docs/030.workspaces/010.workspace-overview.md
  4. 2
      packages/noco-docs/docs/040.bases/010.base-overview.md
  5. 15
      packages/noco-docs/docs/060.table-operations/010.overview.md
  6. 8
      packages/noco-docs/docs/080.records/010.records-overview.md
  7. 10
      packages/noco-docs/docs/090.views/010.views-overview.md
  8. 4
      packages/noco-docs/docs/090.views/040.view-types/010.grid.md
  9. 2
      packages/noco-docs/docs/090.views/040.view-types/020.gallery.md
  10. 2
      packages/noco-docs/docs/090.views/040.view-types/030.form.md
  11. 4
      packages/noco-docs/docs/090.views/040.view-types/040.kanban.md
  12. 2
      packages/noco-docs/docs/090.views/040.view-types/050.calendar.md
  13. 4
      packages/noco-docs/docs/100.data-sources/010.data-source-overview.md
  14. 8
      packages/noco-docs/docs/120.collaboration/010.collaboration-overview.md
  15. 10
      packages/noco-docs/docs/130.automation/020.webhook/010.webhook-overview.md
  16. 20
      packages/noco-docs/docs/140.account-settings/030.authentication/010.overview.md
  17. 2
      packages/noco-docs/docs/160.developer-resources/010.rest-APIs/010.accessing-apis.md
  18. 10
      packages/noco-docs/docs/160.developer-resources/020.webhook/010.webhook-overview.md
  19. 1217
      packages/noco-docs/package-lock.json
  20. 6
      packages/noco-docs/package.json

28
.github/workflows/validate-docs-links.yml

@ -0,0 +1,28 @@
name: "Validate: Docs"
on:
# Triggered manually
workflow_dispatch:
pull_request:
types: [opened, reopened, synchronize, ready_for_review, labeled]
branches: [develop]
paths:
- "packages/noco-docs/**"
jobs:
validate-docs:
runs-on: [self-hosted, aws]
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/setup-node@v3
with:
node-version: 18.19.1
- name: Build docs
run: |
cd packages/noco-docs
npm install
npm run generate
npm run remark:once

4
packages/noco-docs/docs/020.getting-started/050.self-hosted/020.environment-variables.md

@ -76,7 +76,7 @@ For production use cases, it is crucial to set all environment variables marked
## Product Configuration
| Variable | Mandatory | Description | If Not Set |
| -------- | --------- |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------|
| -------- | --------- |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------|
| `DB_QUERY_LIMIT_DEFAULT` | No | Default pagination limit for data tables. | Defaults to `25`. Maximum is `100` |
| `DB_QUERY_LIMIT_GROUP_BY_GROUP` | No | Number of groups per page. | Defaults to `10`. |
| `DB_QUERY_LIMIT_GROUP_BY_RECORD` | No | Number of records per group. | Defaults to `10`. |
@ -92,7 +92,7 @@ For production use cases, it is crucial to set all environment variables marked
| `NC_MINIMAL_DBS` | No | Creates a new SQLite file for each base. All SQLite database files are stored in the `nc_minimal_dbs` folder. Enabling this also disables base creation on external databases. | |
| `NC_MIGRATIONS_DISABLED` | No | Disables NocoDB migrations. | |
| `NC_DISABLE_AUDIT` | No | Disables the audit log feature. | Defaults to `false`. |
| `NC_AUTOMATION_LOG_LEVEL` | No | Configures logging levels for automation features. Possible values: `OFF`, `ERROR`, `ALL`. More details can be found under [Webhooks](/automation/webhook/create-webhook#call-log). | Defaults to `OFF`. |
| `NC_AUTOMATION_LOG_LEVEL` | No | Configures logging levels for automation features. Possible values: `OFF`, `ERROR`, `ALL`. More details can be found under [Webhooks](/automation/webhook/create-webhook). | Defaults to `OFF`. |
## Logging & Monitoring
| Variable | Mandatory | Description | If Not Set |

6
packages/noco-docs/docs/030.workspaces/010.workspace-overview.md

@ -15,7 +15,7 @@ Some key points to note about workspaces are:
In summary, NocoDB workspaces streamline data management and member control, providing the flexibility and oversight necessary for various projects and teams.
To begin, you can [create a workspace](/workspaces/create-workspace) tailored to your project. Collaborate seamlessly by [inviting team members](/workspaces/workspace-collaboration) to the workspace. If roles need adjustment, simply [modify a team member's role](/workspaces/workspace-collaboration#modifying-workspace-member-roles). When necessary, you can also [remove team members](/workspaces/workspace-collaboration#removing-workspace-members) from the workspace. For organizational purposes, renaming the workspace is straightforward with the [rename workspace](/workspaces/actions-on-workspace#rename-workspace) feature. Finally, if a workspace is no longer needed, you can easily [delete it](/workspaces/actions-on-workspace#delete-workspace).
To begin, you can [create a workspace](/workspaces/create-workspace) tailored to your project. Collaborate seamlessly by [inviting team members](/workspaces/workspace-collaboration) to the workspace. If roles need adjustment, simply [modify a team member's role](/workspaces/workspace-collaboration#modify-workspace-member-roles). When necessary, you can also [remove team members](/workspaces/workspace-collaboration#remove-workspace-members) from the workspace. For organizational purposes, renaming the workspace is straightforward with the [rename workspace](/workspaces/actions-on-workspace#rename-workspace) feature. Finally, if a workspace is no longer needed, you can easily [delete it](/workspaces/actions-on-workspace#delete-workspace).
:::info
The Open Source NocoDB includes a default workspace, and it does not allow the creation of additional workspaces.
@ -31,8 +31,8 @@ You can easily switch between different workspaces by simply clicking on the res
## Related articles
- [Create workspace](/workspaces/create-workspace)
- [Invite team members to workspace](/workspaces/workspace-collaboration)
- [Change team member role](/workspaces/workspace-collaboration#modifying-workspace-member-roles)
- [Remove team member from workspace](/workspaces/workspace-collaboration#removing-workspace-members)
- [Change team member role](/workspaces/workspace-collaboration#modify-workspace-member-roles)
- [Remove team member from workspace](/workspaces/workspace-collaboration#remove-workspace-members)
- [Rename workspace](/workspaces/actions-on-workspace#rename-workspace)
- [Delete workspace](/workspaces/actions-on-workspace#delete-workspace)

2
packages/noco-docs/docs/040.bases/010.base-overview.md

@ -30,7 +30,7 @@ on its name. Tables originating from external sources are clearly highlighted in
respective permission levels. It's worth noting that members who are part of the workspace automatically inherit
access permissions at the base level. However, the base owner retains the ability to adjust these permissions,
either increasing or decreasing them. Further details on collaboration management can be found in the dedicated
[Base Collaborations](base-collaboration) section.
[Base Collaborations](/bases/base-collaboration) section.
3. **Data Sources**: NocoDB offers the functionality to connect with external data sources and seamlessly
integrate them as native tables. This section provides a listing of connected data sources, setting the stage

15
packages/noco-docs/docs/060.table-operations/010.overview.md

@ -8,11 +8,10 @@ keywords: ['NocoDB table operations', 'table operations overview', 'hide field',
The toolbar provides a set of tools to interact with the data in the table. The toolbar is located at the top of the view area.
- [Hide fields & reorder](field-operations)
- [Filter](filter)
- [Sort](sort)
- [GroupBy](group-by)
- [Row height](row-height)
- [Quick Search](search)
- [Download](download)
- [Hide fields & reorder](/table-operations/field-operations)
- [Filter](/table-operations/filter)
- [Sort](/table-operations/sort)
- [GroupBy](/table-operations/group-by)
- [Row height](/table-operations/row-height)
- [Quick Search](/table-operations/search)
- [Download](/table-operations/download)

8
packages/noco-docs/docs/080.records/010.records-overview.md

@ -9,7 +9,7 @@ Records in NocoDB are fundamental components within a database, serving as indiv
In essence, a record can be envisaged as a horizontal collection of data within a NocoDB table, each record representing a distinct piece of information. These records play a pivotal role in organizing, categorizing, and presenting data in a comprehensible and efficient manner, offering users a structured and organized platform for data management.
You can perform a variety of actions to efficiently manage your data. To get started, you can [create a new record](/records/create-record) to input essential information. If you need to make updates to an existing record, you can [modify it](/records/actions-on-record#update-record) or even perform a [bulk update](/records/actions-on-record#bulk-update-records) for multiple records simultaneously. For records that are no longer needed, you have the option to [delete](/records/actions-on-record#delete-record) or [duplicate](/records/actions-on-record#duplicate-record) them with ease. When you're working with records, you can also benefit from our expanded form for a more detailed view, complete with a [record change log](/records/expand-record#record-audit) to track all modifications and a feature to [write comments](/records/expand-record#record-comment) for more context and collaboration. Additionally, you can [share records](/records/expand-record#copy-record-url) quickly by generating a shareable URL.
You can perform a variety of actions to efficiently manage your data. To get started, you can [create a new record](/records/create-record) to input essential information. If you need to make updates to an existing record, you can [modify it](/records/actions-on-record#update-record) or even perform a [bulk update](/records/actions-on-record#bulk-update-records--) for multiple records simultaneously. For records that are no longer needed, you have the option to [delete](/records/actions-on-record#delete-record-single) or [duplicate](/records/expand-record#duplicate-record) them with ease. When you're working with records, you can also benefit from our expanded form for a more detailed view, complete with a [record change log](/records/expand-record#record-audit) to track all modifications and a feature to [write comments](/records/expand-record#record-comment) for more context and collaboration. Additionally, you can [share records](/records/expand-record#copy-record-url) quickly by generating a shareable URL.
In this section, we'll explore the various aspects of records in NocoDB, equipping you with the knowledge to effectively manage your own data.
@ -17,9 +17,9 @@ In this section, we'll explore the various aspects of records in NocoDB, equippi
- [Create Record](/records/create-record)
- [Modify an existing Record](/records/actions-on-record#update-record)
- [Bulk Update Records](/records/actions-on-record#bulk-update-records)
- [Delete Record](/records/actions-on-record#delete-record)
- [Duplicate Record](/records/actions-on-record#duplicate-record)
- [Bulk Update Records](/records/actions-on-record#bulk-update-records--)
- [Delete Record](/records/actions-on-record#delete-record-single)
- [Duplicate Record](/records/expand-record#duplicate-record)
- [Working with records using an expanded form](/records/expand-record)
- [Record change log](/records/expand-record#record-audit)
- [Writing comments for a record](/records/expand-record#record-comment)

10
packages/noco-docs/docs/090.views/010.views-overview.md

@ -17,11 +17,11 @@ View represents data from a table. Any updates to records in a view will be refl
## View Types Supported
1. [Grid View](view-types/grid)
2. [Form View](view-types/form)
3. [Gallery View](view-types/gallery)
4. [Kanban View](view-types/kanban)
5. [Calendar View](view-types/calendar)
1. [Grid View](/views/view-types/grid)
2. [Form View](/views/view-types/form)
3. [Gallery View](/views/view-types/gallery)
4. [Kanban View](/views/view-types/kanban)
5. [Calendar View](/views/view-types/calendar)
## View Permission Types

4
packages/noco-docs/docs/090.views/040.view-types/010.grid.md

@ -12,7 +12,7 @@ Grid View, as a default type of view, allows you to display your data in a sprea
Grid view is the default view type for all tables. This view type is ideal for viewing and editing data in a spreadsheet-like interface. You can also perform various operations on the grid view, such as sorting, filtering, grouping, and searching. You can also export the data in the grid view to CSV or Excel format. This section will cover all the operations that can be performed on the grid view.
## Grid View Actions
1. [Create a New Grid View](/views/create-view/#create-new-view)
1. [Create a New Grid View](/views/create-view#create-new-view)
2. [Rename an Existing Grid View](/views/actions-on-view#rename-view)
3. [Duplicate a Grid View](/views/actions-on-view#duplicate-view)
4. [Remove a Grid View](/views/actions-on-view#delete-view)
@ -33,7 +33,7 @@ Grid view is the default view type for all tables. This view type is ideal for v
## Grid View Record Operations
1. [Add a New Record to the Grid](/records/create-record)
2. [Edit an Existing Record on the Grid](/records/actions-on-record#row-edit)
2. [Edit an Existing Record on the Grid](/records/actions-on-record#update-record)
3. [Delete a Single Record from the Grid](/records/actions-on-record#delete-record-single)
4. [Delete Multiple Records in Bulk from the Grid](/records/actions-on-record#delete-record-bulk)

2
packages/noco-docs/docs/090.views/040.view-types/020.gallery.md

@ -10,7 +10,7 @@ Gallery View allows you to display images as thumbnails with other fields just l
![1010-2 Gallery](/img/v2/views/gallery.png)
## Gallery View Actions
1. [Create a New Gallery View](/views/create-view/#create-new-view)
1. [Create a New Gallery View](/views/create-view#create-new-view)
2. [Rename an Existing Gallery View](/views/actions-on-view#rename-view)
3. [Duplicate a Gallery View](/views/actions-on-view#duplicate-view)
4. [Remove a Gallery View](/views/actions-on-view#delete-view)

2
packages/noco-docs/docs/090.views/040.view-types/030.form.md

@ -19,7 +19,7 @@ Form view builder layout can be divided into 4 sections:
![Form Builder](/img/v2/views/form-view/layout.png)
## Form View Actions
1. [Create a New Form View](/views/create-view/#create-new-view)
1. [Create a New Form View](/views/create-view#create-new-view)
2. [Rename an Existing Form View](/views/actions-on-view#rename-view)
3. [Duplicate a Form View](/views/actions-on-view#duplicate-view)
4. [Remove a Form View](/views/actions-on-view#delete-view)

4
packages/noco-docs/docs/090.views/040.view-types/040.kanban.md

@ -10,7 +10,7 @@ Kanban View allows you to visualise your data using cards as part of various sta
![1010-2 Kanban](/img/v2/views/kanban.png)
## Kanban View Actions
1. [Create a New Kanban View](/views/create-view/#create-new-view)
1. [Create a New Kanban View](/views/create-view#create-new-view)
2. [Rename an Existing Kanban View](/views/actions-on-view#rename-view)
3. [Duplicate a Kanban View](/views/actions-on-view#duplicate-view)
4. [Remove a Kanban View](/views/actions-on-view#delete-view)
@ -24,7 +24,7 @@ Kanban View allows you to visualise your data using cards as part of various sta
4. [Sort Records on the Kanban by One or More Criteria](/table-operations/sort)
5. [Perform Quick Searches for Specific Data Within Fields](/table-operations/search)
6. [Export Data to CSV or Excel Format](/table-operations/download#download-data)
7. [Change Cover Image](/table-operations/field-operations#change-cover-field-kanbankanban-view)
7. [Change Cover Image](/table-operations/field-operations#change-cover-field-gallerykanban-view)
## Kanban View Stacked-by field Operations
### Change Stacked by Field

2
packages/noco-docs/docs/090.views/040.view-types/050.calendar.md

@ -10,7 +10,7 @@ Calendar View allows you to visualise your data in a calendar format. You can ea
![1010-2 Calendar](/img/v2/views/calendar/markers.png)
## Calendar View Actions
1. [Create a New Calendar View](/views/create-view/#create-new-view)
1. [Create a New Calendar View](/views/create-view#create-new-view)
2. [Rename an Existing Calendar View](/views/actions-on-view#rename-view)
3. [Duplicate a Calendar View](/views/actions-on-view#duplicate-view)
4. [Remove a Calendar View](/views/actions-on-view#delete-view)

4
packages/noco-docs/docs/100.data-sources/010.data-source-overview.md

@ -25,8 +25,8 @@ NocoDB allows you to connect to external data sources and get a unified spreadsh
Learn more about **working with Data sources** in the following sections:
- [Connect to a Data source](/data-sources/connect-to-data-source)
- [Sync changes externally made to data source](/data-sources/sync-with-data-source)
- [Edit external database configuration parameters](/data-sources/actions-on-data-sources#edit-external-database-configuration-parameters)
- [Remove Data source](/data-sources/actions-on-data-sources#remove-external-data-source)
- [Edit external database configuration parameters](/data-sources/actions-on-data-sources#edit-data-source-parameters)
- [Remove Data source](/data-sources/actions-on-data-sources#remove-data-source)
- [Hide Data source](/data-sources/actions-on-data-sources#data-source-visibility)
- [Relations within a data source](/data-sources/actions-on-data-sources#relations)
- [Audit logs](/data-sources/actions-on-data-sources#audit-logs)

8
packages/noco-docs/docs/120.collaboration/010.collaboration-overview.md

@ -9,7 +9,7 @@ At NocoDB, our passion lies in promoting teamwork, and it's a significant factor
In this segment, we'll discuss various collaboration features that NocoDB offers.
[Workspace collaboration](workspace-collaboration)
[Base collaboration](base-collaboration)
[Share base](share-base)
[Share view](share-view)
[Workspace collaboration](/collaboration/workspace-collaboration)
[Base collaboration](/collaboration/base-collaboration)
[Share base](/collaboration/share-base)
[Share view](/collaboration/share-view)

10
packages/noco-docs/docs/130.automation/020.webhook/010.webhook-overview.md

@ -9,9 +9,9 @@ You can employ webhooks to notify external systems whenever there are additions,
Note that, Webhooks currently are specific to associated table.
- [Create Webhook](create-webhook)
- [Disable Webhook](actions-on-webhook#enable/disable-webhook)
- [Modify Webhook](actions-on-webhook#edit-webhook)
- [Duplicate Webhook](actions-on-webhook#duplicate-webhook)
- [Delete Webhook](actions-on-webhook#delete-webhook)
- [Create Webhook](/automation/webhook/create-webhook)
- [Disable Webhook](/automation/webhook/actions-on-webhook#enabledisable-webhook)
- [Modify Webhook](/automation/webhook/actions-on-webhook#edit-webhook)
- [Duplicate Webhook](/automation/webhook/actions-on-webhook#duplicate-webhook)
- [Delete Webhook](/automation/webhook/actions-on-webhook#delete-webhook)

20
packages/noco-docs/docs/140.account-settings/030.authentication/010.overview.md

@ -23,7 +23,7 @@ SSO functionality is achieved by establishing a connection with an identity prov
Google OAuth, short for Open Authorization, is a widely used and standardized protocol that facilitates secure authentication and authorization processes, particularly in the context of web and mobile applications. Developed by Google, OAuth enables users to grant third-party applications limited access to their resources without exposing their credentials. This authorization framework is based on token-based authentication, where users can log in using their Google credentials, and developers can obtain an access token to interact with Google APIs on the user's behalf.
Please follow the details in the article to integrate with [Google OAuth](google-oauth)
Please follow the details in the article to integrate with [Google OAuth](020.google-oauth.md)
### Security Assertion Markup Language (SAML)
The Security Assertion Markup Language (SAML) stands as a critical protocol in the realm of secure authentication and authorization processes. Developed to enable Single Sign-On (SSO) functionality, SAML facilitates the exchange of authentication and authorization data between an identity provider (IdP) and a service provider (SP). This XML-based protocol ensures the secure transfer of user identity information, allowing individuals to access multiple applications and services with a single set of credentials. SAML operates on a trust model, wherein the identity provider asserts the user's identity to the service provider, which, in turn, grants or denies access based on the provided assertions.
@ -31,11 +31,11 @@ The Security Assertion Markup Language (SAML) stands as a critical protocol in t
[//]: # (This robust framework is widely employed in various industries and platforms, contributing to the seamless and secure integration of disparate systems and applications in the digital landscape. SAML adoption is particularly evident in cloud-based services, enterprise applications, and other environments where a unified and secure authentication process is paramount.)
Please follow the details in the article below to integrate with various popular SAML providers.
1. [Okta](SAML-SSO/okta)
2. [Auth0](SAML-SSO/auth0)
3. [Ping Identity](SAML-SSO/ping-identity)
4. [Active Directory](SAML-SSO/azure-ad)
5. [Keycloak](SAML-SSO/keycloak)
1. [Okta](/account-settings/authentication/SAML-SSO/okta)
2. [Auth0](/account-settings/authentication/SAML-SSO/auth0)
3. [Ping Identity](/account-settings/authentication/SAML-SSO/ping-identity)
4. [Active Directory](/account-settings/authentication/SAML-SSO/azure-ad)
5. [Keycloak](/account-settings/authentication/SAML-SSO/keycloak)
### OpenID Connect (OIDC)
The OpenID Connect (OIDC) protocol is a modern authentication layer built on top of the OAuth 2.0 framework, designed to address user authentication and authorization challenges in web and mobile applications. OIDC provides a standardized and secure way for applications to verify the identity of end-users. Leveraging JSON Web Tokens (JWTs), OIDC enables the exchange of user identity information between the identity provider (IdP) and the Service provider, typically a web application.
@ -43,9 +43,9 @@ The OpenID Connect (OIDC) protocol is a modern authentication layer built on top
[//]: # (One of the key advantages of OIDC is its ability to enable Single Sign-On (SSO) capabilities, allowing users to authenticate once and access multiple applications seamlessly. OIDC also provides a standardized set of claims, such as user profile information, making it easier for developers to integrate identity management into their applications. Widely adopted in various industries, OIDC plays a crucial role in enhancing the security and user experience of authentication processes across diverse digital platforms.)
Please follow the details in the article below to integrate with various popular OIDC providers.
1. [Okta](OIDC-SSO/okta)
2. [Auth0](OIDC-SSO/auth0)
3. [Ping Identity](OIDC-SSO/ping-identity)
4. [Active Directory](OIDC-SSO/azure-ad)
1. [Okta](/account-settings/authentication/OIDC-SSO/okta)
2. [Auth0](/account-settings/authentication/OIDC-SSO/auth0)
3. [Ping Identity](/account-settings/authentication/OIDC-SSO/ping-identity)
4. [Active Directory](/account-settings/authentication/OIDC-SSO/azure-ad)

2
packages/noco-docs/docs/160.developer-resources/010.rest-APIs/010.accessing-apis.md

@ -11,5 +11,5 @@ NocoDB APIs can be authorized by using API Tokens. API tokens allow us to integr
## Swagger UI
You can interact with the API's resources via the Swagger UI. For more details, see [Swagger APIs Doc](/bases/actions-on-base/#rest-apis)
You can interact with the API's resources via the Swagger UI. For more details, see [Swagger APIs Doc](/bases/actions-on-base#rest-apis)

10
packages/noco-docs/docs/160.developer-resources/020.webhook/010.webhook-overview.md

@ -9,9 +9,9 @@ You can employ webhooks to notify external systems whenever there are additions,
Note that, Webhooks currently are specific to associated table.
- [Create Webhook](create-webhook)
- [Disable Webhook](actions-on-webhook#enable/disable-webhook)
- [Modify Webhook](actions-on-webhook#edit-webhook)
- [Duplicate Webhook](actions-on-webhook#duplicate-webhook)
- [Delete Webhook](actions-on-webhook#delete-webhook)
- [Create Webhook](020.create-webhook.md)
- [Disable Webhook](040.actions-on-webhook.md#enabledisable-webhook)
- [Modify Webhook](040.actions-on-webhook.md#edit-webhook)
- [Duplicate Webhook](040.actions-on-webhook.md#duplicate-webhook)
- [Delete Webhook](040.actions-on-webhook.md#delete-webhook)

1217
packages/noco-docs/package-lock.json generated

File diff suppressed because it is too large Load Diff

6
packages/noco-docs/package.json

@ -25,7 +25,9 @@
"serve": "docusaurus serve --dir dist",
"write-translations": "docusaurus write-translations",
"write-heading-ids": "docusaurus write-heading-ids",
"typecheck": "tsc"
"typecheck": "tsc",
"remark": "remark",
"remark:once": "npm run remark -- --quiet --frail --use remark-validate-links docs/"
},
"dependencies": {
"@docusaurus/core": "3.1.1",
@ -48,6 +50,8 @@
"devDependencies": {
"@docusaurus/module-type-aliases": "3.1.1",
"@tsconfig/docusaurus": "^1.0.7",
"remark-cli": "^12.0.1",
"remark-validate-links": "^13.0.1",
"typescript": "^4.9.5"
},
"browserslist": {

Loading…
Cancel
Save