package com.celements.javascript;
import org.xwiki.component.annotation.Component;
import org.xwiki.component.annotation.Requirement;
import org.xwiki.context.Execution;
import org.xwiki.script.service.ScriptService;
import com.celements.web.plugin.cmd.ExternalJavaScriptFilesCommand;
import com.xpn.xwiki.XWikiContext;
import com.xpn.xwiki.XWikiException;
@Component("javascript")
public class JSScriptService implements ScriptService {
public static final String JAVA_SCRIPT_FILES_COMMAND_KEY = "com.celements.web.ExternalJavaScriptFilesCommand";
@Requirement
private Execution execution;
private XWikiContext getContext() {
return (XWikiContext) execution.getContext().getProperty("xwikicontext");
}
/*
* TODO: Please get rid of throwing an exception to the view (client), use try/catch and
* write the exception in a log-file
*/
public String getAllExternalJavaScriptFiles() throws XWikiException {
return getExtJavaScriptFileCmd().getAllExternalJavaScriptFiles();
}
public String addExtJSfileOnce(String jsFile) {
return getExtJavaScriptFileCmd().addExtJSfileOnce(jsFile);
}
public String addExtJSfileOnce(String jsFile, String action) {
return getExtJavaScriptFileCmd().addExtJSfileOnce(jsFile, action);
}
/**
* addExtJSfileOnce
*
* @param jsFile
* @param action
* use empty string for default action
* @param params
* @return
*/
public String addExtJSfileOnce(String jsFile, String action, String params) {
return getExtJavaScriptFileCmd().addExtJSfileOnce(jsFile, action, params);
}
public String addLazyExtJSfile(String jsFile) {
return getExtJavaScriptFileCmd().addLazyExtJSfile(jsFile);
}
public String addLazyExtJSfile(String jsFile, String action) {
return getExtJavaScriptFileCmd().addLazyExtJSfile(jsFile, action);
}
/**
* addLazyExtJSfile
*
* @param jsFile
* @param action
* use empty string for default action
* @param params
* @return
*/
public String addLazyExtJSfile(String jsFile, String action, String params) {
return getExtJavaScriptFileCmd().addLazyExtJSfile(jsFile, action, params);
}
private ExternalJavaScriptFilesCommand getExtJavaScriptFileCmd() {
if (getContext().get(JAVA_SCRIPT_FILES_COMMAND_KEY) == null) {
getContext().put(JAVA_SCRIPT_FILES_COMMAND_KEY, new ExternalJavaScriptFilesCommand(
getContext()));
}
return (ExternalJavaScriptFilesCommand) getContext().get(JAVA_SCRIPT_FILES_COMMAND_KEY);
}
}