Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Docs extension system #10400

Merged
merged 25 commits into from
Jan 25, 2024
Merged

Docs extension system #10400

merged 25 commits into from
Jan 25, 2024

Conversation

kulmann
Copy link
Contributor

@kulmann kulmann commented Jan 24, 2024

Description

Introducing a first iteration on developer documentation for our extension system. Collaborative effort with @pascalwengerter

Related Issue

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Technical debt
  • Tests
  • Documentation
  • Maintenance (e.g. dependency updates or tooling)

Copy link
Contributor

@JammingBen JammingBen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome stuff! 🥳 Just a few annotations from my side.

Also, one aspect which we missed so far is extending content via portals. See e.g. https://github.com/cernbox/web-extensions/pull/25/files#diff-af11596391b8427b4db2f25ddc99628189bbadd1227494c6e1ef24543cb4bd76 where additional content is being added to existing sidebar panels. The available portal-targets currently are:

  • app.files.sidebar.sharing.shared-with.top
  • app.files.sidebar.sharing.shared-with.top
  • app.files.sidebar.file.details.table

```

By defining an application via `defineWebApplication` you can provide the following:
- `appInfo` - the application metadata, which is used to make the application available via the app switcher and the app registry
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we link to the ApplicationInformation interface here? Or is this supposed to be a quick overview only?

Suggested change
- `appInfo` - the application metadata, which is used to make the application available via the app switcher and the app registry
- `appInfo` - the application metadata, which is used to make the application available via the app switcher and the app registry.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For now only supposed to be a quick overview. We want to come up with more details for applications, when we write about different examples for different apps (e.g. viewers/editors vs. "extension host apps" vs. custom business logic apps, etc).

Comment on lines +82 to +84
- `navItems` - the statically defined navigation items for the left sidebar. Only gets rendered when more than 1 navigation item exists at runtime.
Additional dynamic navigation items can be registered via the extension registry.
- `routes` - the routes to the different views of your application. May be referenced within the `navItems`. Authentication requirements can be defined per item.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same question here?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same answer as above :-) Only meant to be a quick overview for now.

Comment on lines +46 to +57
#### ListSearch

The listSearch object consists of:

- `component` - Vue component that can render the values from the SearchResult below
- `search(term: string)` - Function that exectues the search, based on a given term. The term is formatted in [KQL](https://owncloud.dev/services/search/#query-language). Please note that the returned values needs to be formatted to fit either `SearchResource` or `GenericSearchResultItem` type

#### PreviewSearch

The previewSearch object extends the listSearch with one additional attribute:

- `available` - Indicates whether a preview underneath the search bar is available for this search provider
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel like we should explain the difference between list- and preview search here. Preview = dropdown that automatically pops up when entering a search term, list = result page when hitting enter/search icon.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel we should get rid of that ... 😂

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Buuuut.... we're using it for CERN

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CERN has a search provider which only goes to the search result page and doesn't have a search preview.

@kulmann kulmann enabled auto-merge (squash) January 25, 2024 13:05
Copy link

@kulmann kulmann merged commit 0b8cbcf into master Jan 25, 2024
3 checks passed
@delete-merged-branch delete-merged-branch bot deleted the docs-extension-system branch January 25, 2024 14:32
ownclouders pushed a commit that referenced this pull request Jan 25, 2024
* change: Remove skeleton app
* docs: Add extension system docs

---------

Co-authored-by: Pascal Wengerter <[email protected]>
@kulmann kulmann mentioned this pull request Jan 29, 2024
3 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants