package com.idega.presentation.remote;
import java.net.URL;
import java.util.Arrays;
import org.springframework.beans.factory.annotation.Autowired;
import com.idega.block.web2.business.JQuery;
import com.idega.core.localisation.business.LocaleSwitcher;
import com.idega.idegaweb.IWBundle;
import com.idega.idegaweb.IWResourceBundle;
import com.idega.presentation.Block;
import com.idega.presentation.IWContext;
import com.idega.presentation.Layer;
import com.idega.util.CoreConstants;
import com.idega.util.CoreUtil;
import com.idega.util.PresentationUtil;
import com.idega.util.StringUtil;
import com.idega.util.URIUtil;
import com.idega.util.expression.ELUtil;
public class RemotePageViewer extends Block {
@Autowired
private JQuery jQuery;
private String url, regionsToShow, personalId;
private boolean loadAutoLogin = Boolean.TRUE;
@Override
public void main(IWContext iwc) throws Exception {
ELUtil.getInstance().autowire(this);
Layer container = new Layer();
add(container);
IWBundle bundle = getBundle(iwc);
String js = bundle.getVirtualPathWithFileNameString("javascript/RemotePageViewer.js");
PresentationUtil.addJavaScriptSourcesLinesToHeader(iwc, Arrays.asList(
jQuery.getBundleURIToJQueryLib(),
CoreConstants.DWR_ENGINE_SCRIPT,
CoreConstants.DWR_UTIL_SCRIPT,
"/dwr/interface/WebUtil.js",
js
));
String personalId = getPersonalId();
String server = CoreConstants.EMPTY;
if (loadAutoLogin) {
if (!StringUtil.isEmpty(url)) {
URL link = new URL(url);
server = link.getProtocol() + "://" + link.getHost();
}
if (StringUtil.isEmpty(personalId)) {
if (iwc.isLoggedOn())
personalId = iwc.getCurrentUser().getPersonalID();
if (StringUtil.isEmpty(personalId))
personalId = CoreConstants.EMPTY;
}
}
url = StringUtil.isEmpty(url) ? CoreConstants.PAGES_URI_PREFIX : url;
if (!url.endsWith(CoreConstants.SLASH))
url = url.concat(CoreConstants.SLASH);
URIUtil uri = new URIUtil(url);
uri.setParameter(LocaleSwitcher.languageParameterString, iwc.getCurrentLocale().toString());
url = uri.getUri();
// TODO: this should be done in a unified way
js = "/idegaweb/bundles/com.idega.core.bundle/resources/javascript/RemotePageViewer.js,/idegaweb/bundles/com.idega.block.web2.0.bundle/resources/javascript/jquery/1.5.2/jquery-compressed.js";
IWResourceBundle iwrb = bundle.getResourceBundle(iwc);
String regions = StringUtil.isEmpty(regionsToShow) ? "null" : "\'" + regionsToShow + "\'";
String remoteAction = "registerEvent(window,\'load\',function(){RemotePageViewer.displayRegions(" + regions + ");});";
String action = "RemotePageViewer.loadPage('" + iwrb.getLocalizedString("loading", "Loading...") + "', '" + url + "', '" + server + "', '" + personalId + "', '" +
container.getId() + "', " + loadAutoLogin + ", '" + js +"', \""+ remoteAction +"\");";
if (!CoreUtil.isSingleComponentRenderingProcess(iwc)) {
action = "jQuery(window).load(function() {" + action + "});";
}
PresentationUtil.addJavaScriptActionToBody(iwc, action);
}
public boolean isLoadAutoLogin() {
return loadAutoLogin;
}
public void setLoadAutoLogin(boolean loadAutoLogin) {
this.loadAutoLogin = loadAutoLogin;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getRegionsToShow() {
return regionsToShow;
}
public void setRegionsToShow(String regionsToShow) {
this.regionsToShow = regionsToShow;
}
public String getPersonalId() {
return personalId;
}
public void setPersonalId(String personalId) {
this.personalId = personalId;
}
@Override
public String getBundleIdentifier() {
return CoreConstants.CORE_IW_BUNDLE_IDENTIFIER;
}
}