General Actions:
Log-in
Register
Wiki:
Main wiki
▼
:
Document Index
»
Space:
AppWithinMinutes
▼
:
Document Index
»
Page:
DynamicMessageTool
Search
default
Page Actions:
Export
▼
:
Export as PDF
Export as RTF
Export as HTML
More actions
▼
:
Print preview
View Source
Main wiki
»
App Within Minutes
»
LiveTableGenerator
»
DynamicMessageTool
Wiki source code of
DynamicMessageTool
Last modified by
Administrator
on 2012/03/21 17:41
Content
·
Comments
(0)
·
Annotations
(0)
·
Attachments
(0)
·
History
·
Information
Show line numbers
{{groovy}} import com.xpn.xwiki.doc.XWikiDocument; import com.xpn.xwiki.web.Utils; import com.xpn.xwiki.web.XWikiMessageTool; import java.util.HashMap; import java.util.List; import java.util.Map; import org.xwiki.script.service.ScriptService; import org.xwiki.component.descriptor.DefaultComponentDescriptor; /** * Extends the default message tool with the ability to add/overwrite translation keys dynamically. */ public class XWikiDynamicMessageTool extends XWikiMessageTool { private XWikiMessageTool msg; private Map<String, String> overwrites = new HashMap<String, String>(); public XWikiDynamicMessageTool(XWikiMessageTool msg) { super(msg.bundle, msg.context); this.msg = msg; } public List<XWikiDocument> getDocumentBundles() { return this.msg.getDocumentBundles(); } protected String getTranslation(String key) { if (key == null) { return null; } String value = this.overwrites.get(key); return value != null ? value : this.msg.getTranslation(key); } public String put(String key, String value) { return this.overwrites.put(key, value); } } public class XWikiDynamicMessageToolFactory implements ScriptService { public XWikiDynamicMessageTool createDynamicMessageTool(XWikiMessageTool msg, Map<?, ?> overwrites) { XWikiDynamicMessageTool dynamicMessageTool = new XWikiDynamicMessageTool(msg); for(Map.Entry<?,?> entry : overwrites.entrySet()) { dynamicMessageTool.put(entry.getKey(), entry.getValue()); } return dynamicMessageTool; } } if (!Utils.getComponentManager().hasComponent(ScriptService.class, 'dynamicMessageToolFactory')) { Utils.getComponentManager().registerComponent(new DefaultComponentDescriptor(implementation: XWikiDynamicMessageToolFactory.class, role: ScriptService.class, roleHint: 'dynamicMessageToolFactory')); } {{/groovy}}