Contentbrowser
Show a widget to select items in an offcanvas miller-column browser.
Configuration
Option | Type | Default | Description |
---|---|---|---|
vocabularyUrl | string | null | This is a URL to a JSON-formatted file used to populate the list |
attributes | array | ['UID', 'Title', 'portal_type', 'path'] | This list is passed to the server during an AJAX request to specify the attributes which should be included on each item. |
rootPath | string | "/" | Browsing/searching root path. You will not get beneath this path |
rootUrl | string | Browsing/searching root url. | |
basePath | string | set to rootPath. | Start browse/search in this path. |
contextPath | string | Path of the object, which is currently edited. If this path is given, this object will not be selectable. | |
favorites | array | [] | Array of objects. These are favorites, which can be used to quickly jump to different locations. Objects have the attributes "title" and "path". |
maximumSelectionSize | integer | -1 | The maximum number of items that can be selected in a multi-select control. If this number is less than 1 selection is not limited. |
mode | string | "browse" | Toggle between "browse" and "search" |
width | integer | Override the width of the selected items field | |
bSize | integer | 10 | Batch size of the items listed in levels |
maxDepth | integer | Maximum level depth for "browse" mode | |
separator | string | ',' | Select2 option. String which separates multiple items. |
upload | boolean | Allow file and image uploads from within the related items widget. | |
recentlyUsed | boolean | false | Show the recently used items dropdown. |
recentlyUsedKey | integer | Storage key for saving the recently used items. This is generated with fieldname and username in the patternoptions. | |
recentlyUsedMaxItems | integer | 20 | Maximum items to keep in recently used list. 0: no restriction. |
customComponentKeys | dict | {} | Register custom components. Currently only "SelectedItem" implemented |
Default
<input
type="text"
class="pat-contentbrowser"
data-pat-contentbrowser='{"selectableTypes": ["Document"], "vocabularyUrl": "contentbrowser-test.json"}'
/>
Existing values, some bad
<input
type="text"
class="pat-contentbrowser"
value="asdf1234gsad,sdfbsfdh345,asdlfkjasdlfkjasdf,kokpoius98"
data-pat-contentbrowser="width:30em; vocabularyUrl:contentbrowser-test.json"
/>
Selectable Types
<input
type="text"
class="pat-contentbrowser"
data-pat-contentbrowser='{"selectableTypes": ["Document"], "vocabularyUrl": "contentbrowser-test-selectable.json"}'
/>
Select a single item
<input
type="text"
class="pat-contentbrowser"
data-pat-contentbrowser='{"selectableTypes": ["Document"], "vocabularyUrl": "contentbrowser-test.json", "maximumSelectionSize": 1}'
/>
Mode "browse", Upload
<input
type="text"
class="pat-contentbrowser"
data-pat-contentbrowser='{"selectableTypes": ["Image", "File"], "vocabularyUrl": "contentbrowser-test.json", "upload": true}'
/>
Register custom component
Currently only for SelectedItem
component available.
<input
type="text"
class="pat-contentbrowser"
data-pat-contentbrowser='{
"customComponentKeys": {
"SelectedItem": "pat-contentbrowser.myfield.MySelectedItemComponent",
},
}'
/>
Copy the existing component src/SelectedItem.svelte
to your addon, customize it and register it in your JS bundle as follows:
...
import plone_registry from "@plone/registry";
...
async function register_selecteditem_component() {
// we register our component to a custom keyname,
// which later can be used for pattern_options
const SelectedImages = (await import("./MySelectedItemComponent.svelte")).default;
plone_registry.registerComponent({
name: "pat-contentbrowser.myfield.MySelectedItemComponent",
component: SelectedImages,
});
}
register_selecteditem_component();
...
Note: this needs the svelte-loader
plugin in your webpack.config.js ... see mockups webpack config for info.