Ir al contenido
Otras versiones

Cargando…

Change folder style by metadata value

Esta página aún no está disponible en tu idioma.

The example demostrates how to change folder style icons based on metadata values.

<property-group label="Invoice status" name="okg:invoicedata">
<select label="Status" name="okp:invoicedata.status" type="simple">
<option label="Open" value="open" />
<option label="Pending to review" value="review" />
<option label="Closed" value="closed" />
</select>
</property-group>

Create three new folder styles. Each folder style will use only a single icon for all the status.

Folder style name Icon Internal Id
green 2
orange 3
red 4

Create an Automation task:

  • Set name “Change icon based on metadata”.
  • Choose “Set Property Group” event ( set metadata fields event ).
  • Choose “post” on at field.
  • Check Active.

  • Add an Action based on scripting and set the code below.

Scripting code

import com.openkm.api.OKMPropertyGroup;
import com.openkm.bean.PropertyGroup;
import com.openkm.api.OKMRepository;
import com.openkm.bean.form.FormElement;
import com.openkm.bean.form.Select;
import com.openkm.bean.form.Option;
import com.openkm.api.OKMFolder;
//String uuid = "e0ad61e4-2c2d-429e-aa00-27afa674551d";
String path = OKMRepository.getInstance().getNodePath(null, uuid);
String grpName = "okg:invoicedata";
boolean hasGroup = false;
for (PropertyGroup pg : OKMPropertyGroup.getInstance().getGroups(null, path)) {
if (pg.getName().equals(grpName)) {
hasGroup = true;
}
}
if (hasGroup) {
    for (FormElement formElement : OKMPropertyGroup.getInstance().getProperties(null, path, grpName)) {
        if (formElement instanceof Select) {
            Select select = (Select) formElement;
            for (Option option : select.getOptions()) {
                if (option.isSelected()) {
                    String fldPath = path.substring(0,path.lastIndexOf("/"));
                    String fldUuid = OKMRepository.getInstance().getNodeUuid(null, fldPath);
                    if (option.getValue().equals("open")) {
                        OKMFolder.getInstance().setStyle(null, fldUuid, 2);
                    } else if (option.getValue().equals("review")) {
                        OKMFolder.getInstance().setStyle(null, fldUuid, 3);
                    } if (option.getValue().equals("closed")) {
                        OKMFolder.getInstance().setStyle(null, fldUuid, 4);
                    }
                }
            }
        }
    }
}

  • Update the metadata group of a document.

  • Change the metadata field value from closed to open.

  • Click on  Refresh icon at toolbar.
  • The folder style icon applyed has been changed.