mgnl:content
d1378c35-f495-4578-8e3d-36fcce983d6f
2022-10-26T12:36:16.184+04:00
superuser
2022-10-26T16:07:57.683+04:00
superuser
true
import info.magnolia.cms.util.QueryUtil;
import javax.jcr.query.Query;
import java.lang.StringBuilder;
import java.util.ArrayList;
import java.util.StringTokenizer;
import java.util.HashMap;
import info.magnolia.jcr.util.NodeUtil;
// parameters
path = '/stories-demo';
previous_order = '[ ]'; // take the output from step 1 and copy into the brackets
// create statement
storySQL = 'select * from [mgnl:composition] WHERE ISDESCENDANTNODE("' + path + '")';
//execute query
storiesList = QueryUtil.search('stories', storySQL, Query.JCR_SQL2, 'mgnl:composition');
tokens = new ArrayList<>();
tokenizer = new StringTokenizer(previous_order, '[{":,} ]');
while (tokenizer.hasMoreElements()) {
tokens.add(tokenizer.nextToken());
}
orderMap = new HashMap();
iterator = tokens.iterator();
lastBlock = null;
while (iterator.hasNext()) {
token = iterator.next();
switch (token) {
case 'story_id':
token = iterator.next();
storySQL = 'select * from [mgnl:composition] WHERE [jcr:uuid] = "' + token + '"';
story = (QueryUtil.search('stories', storySQL, Query.JCR_SQL2, 'mgnl:composition')).nextNode();
blocks = story.getNode('blocks');
println "Ordering --> " + blocks;
break;
case 'blocks':
lastBlock = null
break;
default:
if (lastBlock != null) {
node = blocks.getNode(token);
NodeUtil.orderAfter(node, lastBlock);
node.getSession().save();
lastBlock = token;
}
else {
node = blocks.getNode(token);
NodeUtil.orderFirst(node);
node.getSession().save();
lastBlock = token;
}
break;
}
}
println "Done!"