replace %module|DEN_PRODFIELDS|wildcard|% with customfield values. (using raw_prompt, can switch it out form attr_prompt)
<mvt:assign name="l.settings:attributeID" value="'l-' $ tolower(l.settings:attribute:code)" />
<mvt:assign name="l.settings:attribute:raw_prompt" value="glosub( l.settings:attribute:raw_prompt, '%25', '%' )" />
<mvt:assign name="l.settings:attribute:raw_prompt" value="glosub( l.settings:attribute:raw_prompt, '%7C', '|' )" />
<mvt:if expr="'DEN_PRODFIELDS' cin l.settings:attribute:raw_prompt">
<!-- Before: &mvt:attribute:raw_prompt; -->
<mvt:comment>
| Check for all %module|DEN_PRODFIELDS|*widlcard*|%
| Replace with customfield value (needed to use customfields, as some codes have dashes)
| Splits raw_prompt with |
| Checks if DEN_PRODFIELDS is in the part
| If it is, it will find the wildcard and replace it with the wildcard's customfield value
</mvt:comment>
<mvt:do file="g.module_library_utilities" name="l.settings:result" value="SplitStringAndTrim(l.settings:attribute:raw_prompt, '|', l.settings:split_results)" />
<mvt:assign name="l.settings:wildcard" value="''" />
<mvt:foreach iterator="part" array="split_results">
<mvt:if expr="indexof( '%', l.settings:part, 1 ) OR l.settings:part EQ 'DEN_PRODFIELDS'">
<mvt:foreachcontinue />
</mvt:if>
<mvt:assign name="l.settings:wildcard" value="l.settings:part" />
<mvt:item name="customfields" param="Read_Product_Code( l.settings:product:code, l.settings:wildcard, l.settings:wildcardvalue )" />
<mvt:assign name="l.settings:replace" value="'%module|DEN_PRODFIELDS|' $ l.settings:wildcard $ '|%'" />
<mvt:assign name="l.settings:attribute:raw_prompt" value="glosub( l.settings:attribute:raw_prompt, l.settings:replace, l.settings:wildcardvalue )" />
</mvt:foreach>
</mvt:if>
<mvt:if expr="'OUI_Products' cin l.settings:attribute:raw_prompt">
<mvt:comment>
| Check for all %VAR(OUI_Products2.d.*wildcard*)%
| Replace with customfield value (needed to use customfields, as some codes have dashes)
| Splits raw_prompt with %
| Checks for '%VAR(OUI_Products2.d.', then removes: '%VAR(OUI_Products2.d.', ')
| Calls customfield (e.g. image2, image3, and image4)
| Replaces with customfield value.
</mvt:comment>
<mvt:do file="g.module_library_utilities" name="l.settings:result" value="SplitStringAndTrim(l.settings:attribute:raw_prompt, '%', l.settings:oui_split_results)" />
<mvt:assign name="l.settings:wildcard" value="''" />
<mvt:foreach iterator="part" array="oui_split_results">
<mvt:if expr="'VAR(OUI_Products2.d.' cin l.settings:part">
<mvt:assign name="l.settings:wildcard" value="l.settings:part" />
<mvt:assign name="l.settings:wildcard" value="glosub( l.settings:wildcard, 'VAR(OUI_Products2.d.', '' )" />
<mvt:assign name="l.settings:wildcard" value="glosub( l.settings:wildcard, ')', '' )" />
<mvt:item name="customfields" param="Read_Product_Code( l.settings:product:code, l.settings:wildcard, l.settings:wildcardvalue )" />
<mvt:assign name="l.settings:replace" value="'%VAR(OUI_Products2.d.' $ l.settings:wildcard $ ')%'" />
<mvt:assign name="l.settings:attribute:raw_prompt" value="glosub( l.settings:attribute:raw_prompt, l.settings:replace, l.settings:wildcardvalue )" />
</mvt:if>
</mvt:foreach>
</mvt:if>
<!-- After: &mvt:attribute:raw_prompt; -->