Metadata Suggestbox field
This is an implementation of the typical AJAX suggest box component:
Attribute | Description | Required |
---|---|---|
label |
The text is shown as a label in the user interface. |
true |
name |
Unique field identifier. Two metadata can't have the same name. The name must be unique. The name must start with "okp:". Using a metadata group name as a basis for a metadata field name is a good practice. For example use "okg:consulting" has been used for the field name "okp:consulting.suggestbox", changing "okg" to "okp". That helps to find the metadata group based on the metadata field name. Please, use only letters, numbers, and underscore: "0-9a-zA-Z_". |
true |
width |
The width of the HTML element. In the case of KCenter, UI must use width values based on %, for example:
|
false |
height |
The height of the HTML element. | false |
description |
General description. | false |
filterQuery |
A SQL query to filter the data. Use {0} to place the user input. | * |
valueQuery |
A SQL query to obtain the value of an identifier. Use {0} to place the identifier. | * |
className |
A class is used to get the selected options. | * |
filterMinLen |
The minimum chars in input to begin to filter results. | true |
dialogTitle |
The title of the HTML dialog. |
true |
readonly |
The set field cannot be modified in the user interface. By default, the value is "false". | false |
dbColumnSize |
Set the size of the database field where the value is stored. By default, fields are stored in a database column with 128 characters in size. Because your data length might be more significant than 128 characters, the administrator should update the default column size. Take a look at the Metadata XML definition documentation section for a deep explanation of metadata storage in the OpenKM database, |
|
defaultAccess |
Default security access policy. By default is set to "grant" so all users will see the property. |
|
Child elements:
|
||
* There're three options to get suggested box values (using one of them is mandatory ):
No other combination of them is allowed. |
Based on filterQuery and valueQuery
Now filterQuery and valueQuery could be regular SQL queries.
You should only use {0} as the parameter the user enters to filter the values from the table.
Create COUNTRY table:
create table COUNTRY (
CT_ID varchar(2),
CT_NAME varchar(32),
primary key(CT_ID)
);
insert into COUNTRY (CT_ID, CT_NAME) values ('es', 'Spain');
insert into COUNTRY (CT_ID, CT_NAME) values ('pt', 'Portugal');
insert into COUNTRY (CT_ID, CT_NAME) values ('it', 'Italy');
Metadata definition:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE property-groups PUBLIC "-//OpenKM//DTD Property Groups 3.10//EN"
"http://www.openkm.com/dtd/property-groups-3.10.dtd">
<property-groups>
<property-group label="Consulting" name="okg:consulting">
<suggestbox label="country" name="okp:consulting.suggestbox"
width="200px" dialogTitle="Choose country" filterMinLen="3"
filterQuery="select ct_id, ct_name from COUNTRY where ct_name like '%{0}%' order by ct_name"
valueQuery="select ct_id, ct_name from COUNTRY where ct_id='{0}'" />
</property-group>
</property-groups>
Based on className
To help to get a list from external applications or other purposes, your class can be built to retrieve the option values from those systems.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE property-groups PUBLIC "-//OpenKM//DTD Property Groups 3.10//EN"
"http://www.openkm.com/dtd/property-groups-3.10.dtd">
<property-groups>
<property-group label="Consulting" name="okg:consulting">
<suggestbox label="country" name="okp:consulting.suggestbox"
width="200px" dialogTitle="Choose country" filterMinLen="3"
className="com.openkm.plugin.form.values.SuggestBoxUserList" />
</property-group>
</property-groups>
For more information, read Creating your own Suggestbox plugin