/*
* Aipo is a groupware program developed by TOWN, Inc.
* Copyright (C) 2004-2015 TOWN, Inc.
* http://www.aipo.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.aimluck.eip.modules.screens;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import net.sf.json.JSONObject;
import org.apache.jetspeed.portal.Portlet;
import org.apache.turbine.util.RunData;
import org.apache.velocity.context.Context;
import com.aimluck.commons.field.ALStringField;
import com.aimluck.eip.common.ALApplication;
import com.aimluck.eip.common.ALEipUser;
import com.aimluck.eip.gadgets.util.GadgetsUtils;
import com.aimluck.eip.orm.Database;
import com.aimluck.eip.services.social.ALApplicationService;
import com.aimluck.eip.services.social.ALContainerConfigService;
import com.aimluck.eip.services.social.ALSocialApplicationHandler.Property;
import com.aimluck.eip.services.social.gadgets.ALGadgetContext;
import com.aimluck.eip.services.social.model.ALApplicationGetRequest;
import com.aimluck.eip.util.ALEipUtils;
import com.aimluck.eip.util.ALLocalizationUtils;
/**
*
*/
public class GadgetsPopupScreen extends ALVelocityScreen {
/**
* @param rundata
* @param context
* @throws Exception
*/
@Override
protected void doOutput(RunData rundata, Context context) throws Exception {
context.put("l10n", ALLocalizationUtils.createLocalization(rundata));
String appId = rundata.getParameters().getString("aid");
ALApplication app =
ALApplicationService.get(new ALApplicationGetRequest().withAppId(appId));
if (app == null) {
context.put("isActive", false);
context.put("title", "");
String template = "portlets/html/gadgets-popup.vm";
setTemplate(rundata, context, template);
return;
}
ALStringField title = app.getTitle();
String url = app.getUrl().getValue();
boolean isActive = app.getStatus() == 1;
ALEipUser user = ALEipUtils.getALEipUser(rundata);
String orgId = Database.getDomainName();
String viewer =
new StringBuilder(orgId)
.append(":")
.append(user.getName().getValue())
.toString();
Long moduleId = rundata.getParameters().getLong("mid");
Map<String, Object> maps = new HashMap<String, Object>();
if (moduleId != null) {
Portlet portlet =
ALEipUtils.getPortlet(rundata, String.valueOf(moduleId));
if (portlet != null) {
@SuppressWarnings("unchecked")
Iterator<String> names =
portlet.getPortletConfig().getInitParameterNames();
while (names.hasNext()) {
String next = names.next();
if (next != null && next.startsWith("pref-")) {
String value = portlet.getPortletConfig().getInitParameter(next);
String key = next.substring(5);
Map<String, String> maps2 = new HashMap<String, String>();
maps2.put("value", value);
maps.put(key, maps2);
}
}
} else {
moduleId = 0l;
}
} else {
moduleId = 0l;
}
ALGadgetContext gadgetContext =
new ALGadgetContext(rundata, viewer, appId, url, moduleId);
context.put("gadgetContext", gadgetContext);
context.put("isActive", isActive);
String id =
moduleId == 0 ? String.valueOf(System.nanoTime()) : String
.valueOf(moduleId);
context.put("portletId", id);
JSONObject jsonObject = new JSONObject();
jsonObject.put("portletId", id);
jsonObject.put("appId", appId);
jsonObject.put("specUrl", gadgetContext.getAppUrl());
jsonObject.put("secureToken", gadgetContext.getSecureToken());
jsonObject.put("serverBase", gadgetContext.getServerBase());
jsonObject.put("width", "100%");
jsonObject.put("rpcRelay", "files/container/rpc_relay.html");
jsonObject.put("userPrefs", JSONObject.fromObject(maps));
String externalId = rundata.getParameters().getString("eid");
if (externalId != null && externalId.length() > 0) {
JSONObject externalJson = new JSONObject();
externalJson.put("externalId", externalId);
jsonObject.put("viewParams", externalJson);
}
context.put("assignData", jsonObject.toString());
context.put("title", title);
context.put("nocache", "true".equals(ALContainerConfigService
.get(Property.CACHE_GADGET_XML)) ? "0" : "1");
String template = "portlets/html/gadgets-popup.vm";
setTemplate(rundata, context, template);
}
/**
* @return
*/
@Override
protected String getPortletName() {
return GadgetsUtils.GADGETS_PORTLET_NAME;
}
}