local function setup(prefs) return function (metadata) local trimmedPath=strutil.upToLastOccurrenceOf(metadata.Pathname,'/') -- Trims lowest folder level. local parentFolder=strutil.fromLastOccurrenceOf(metadata.Pathname,'/') -- Gets parent folder's string. local grandParentFolder=strutil.fromLastOccurrenceOf(trimmedPath,'/') -- Gets grandparent folder's string. local changedMetadata={} if prefs.action=='COPY' then changedMetadata[prefs.destfield1]=parentFolder changedMetadata[prefs.destfield2]=grandParentFolder elseif prefs.action=='PREPEND' then changedMetadata[prefs.destfield1]=parentFolder..(metadata[prefs.destfield1] or '') changedMetadata[prefs.destfield2]=grandParentFolder..(metadata[prefs.destfield2] or '') elseif prefs.action=='APPEND' then changedMetadata[prefs.destfield1]=(metadata[prefs.destfield1] or '')..parentFolder changedMetadata[prefs.destfield2]=(metadata[prefs.destfield2] or '')..grandParentFolder end return changedMetadata end end function buildUI() local builder=smbuilder() local c=builder:createView('{"text":"COPY MULTILEVEL FOLDER NAME","bounds" : "0,0,parent.width,120"}') assert(c,"unable to create view object") -- Parent folder's UI assert(builder:create('combo',{["id"] = "action", ["options"] = {"COPY","APPEND","PREPEND"}, ["bounds"]="25,42,150,67",["text"]="COPY"})) assert(builder:create('label','{ "bounds":"155,42,280,67","text":"parent folder to", "align" : "left"}')) assert(builder:create('combo','{"id" : "destfield1", "options" : "stringFields", "bounds":"285,42,415,67","text":"SubCategory"}')) -- Grandparent folder's UI assert(builder:create('combo',{["id"] = "action", ["options"] = {"COPY","APPEND","PREPEND"}, ["bounds"]="25,72,150,97",["text"]="COPY"})) assert(builder:create('label','{ "bounds":"155,72,330,97","text":"grand parent folder to", "align" : "left"}')) assert(builder:create('combo','{"id" : "destfield2", "options" : "stringFields", "bounds":"335,72,465,97","text":"Show"}')) builder:register(c,setup) -- Now inject this return c end --[[ ========================================================== ]]-- return buildUI