/*
* 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.actions.schedule;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import org.apache.jetspeed.portal.portlets.VelocityPortlet;
import org.apache.jetspeed.services.logging.JetspeedLogFactoryService;
import org.apache.jetspeed.services.logging.JetspeedLogger;
import org.apache.turbine.util.RunData;
import org.apache.velocity.context.Context;
import com.aimluck.eip.common.ALEipConstants;
import com.aimluck.eip.common.ALEipUser;
import com.aimluck.eip.modules.actions.common.ALBaseAction;
import com.aimluck.eip.schedule.util.ScheduleUtils;
import com.aimluck.eip.services.orgutils.ALOrgUtilsService;
import com.aimluck.eip.userfacility.beans.UserFacilityLiteBean;
import com.aimluck.eip.userfacility.util.UserFacilityUtils;
import com.aimluck.eip.util.ALCommonUtils;
import com.aimluck.eip.util.ALEipUtils;
/**
* カレンダーのアクションクラスです。
*
* @deprecated
*/
@Deprecated
public class AjaxScheduleAction extends ALBaseAction {
/** <code>logger</code> logger */
private static final JetspeedLogger logger = JetspeedLogFactoryService
.getLogger(AjaxScheduleAction.class.getName());
private boolean isMax = false;
/**
*
* @param portlet
* @param context
* @param rundata
*/
@Override
protected void buildNormalContext(VelocityPortlet portlet, Context context,
RunData rundata) {
// セッション情報をクリアする
clearAjaxScheduleSession(rundata, context);
String tab;
try {
context.put("theme", ALOrgUtilsService.getTheme());
// 表示形式(トップページ)を取得する.
String top_form = portlet.getPortletConfig().getInitParameter("p19-rows");
context.put("top_form", top_form);
// 表示形式(月間)を取得する
String display_month =
portlet.getPortletConfig().getInitParameter("p195-rows");
if (display_month == null || "".equals(display_month)) {
display_month = "detail";
}
context.put("display_month", display_month);
// 表示開始時間を取得する.
String time_start =
portlet.getPortletConfig().getInitParameter("p1a-rows");
context.put("time_start", time_start);
// 表示終了時間を取得する.
String time_end = portlet.getPortletConfig().getInitParameter("p1b-rows");
context.put("time_end", time_end);
// 表示時間間隔を取得する.
String time_interval =
portlet.getPortletConfig().getInitParameter("p1c-rows");
context.put("time_interval", time_interval);
// 表示日数を取得する.
String weekly_days =
portlet.getPortletConfig().getInitParameter("p2a-days");
context.put("weekly_days", weekly_days);
// 初期選択グループを取得する.
String weekly_group =
portlet.getPortletConfig().getInitParameter("p3a-group");
context.put("weekly_group", weekly_group);
// 初期選択ユーザー/設備を取得する
String init_user =
portlet.getPortletConfig().getInitParameter("p3a-user");
context.put("init_user", init_user);
// 初期選択メンバーリストを取得する
List<UserFacilityLiteBean> memberList =
new ArrayList<UserFacilityLiteBean>();
String selected_user =
portlet.getPortletConfig().getInitParameter("p6a-uids");
if (selected_user == null || "".equals(selected_user)) {
UserFacilityLiteBean login_user =
UserFacilityUtils.getUserFacilityLiteBean(rundata);
memberList.add(login_user);
} else {
String selected_users[] = selected_user.split(",");
List<UserFacilityLiteBean> ulist =
ScheduleUtils.getALEipUserFacility(selected_users, rundata);
if (ulist == null || ulist.size() == 0) {
UserFacilityLiteBean login_user =
UserFacilityUtils.getUserFacilityLiteBean(rundata);
memberList.add(login_user);
} else {
memberList.addAll(ulist);
}
}
context.put("member_list", memberList);
// 初期共有メンバー表示フラグを取得する
String showAll = portlet.getPortletConfig().getInitParameter("p7d-schk");
if (!("t".equals(showAll))) {
showAll = "f";
}
context.put("init_s_all", showAll);
// 現在のユーザー名を取得する
ALEipUser loginuser = ALEipUtils.getALEipUser(rundata);
String current = loginuser.getAliasName().toString();
context.put("current_user", current);
context.put("current_user_ln", loginuser.getName());
context.put("current_user_id", loginuser.getUserId());
// 表示時間を取得する.
/*
* ALDateTimeField view_date = AjaxScheduleUtils.getViewDate(rundata,
* context); context.put("view_date", view_date);
*/
// Velocity テンプレートを読み込む
String template = portlet.getPortletConfig().getInitParameter("template");
if (template.equals("ajax-schedule-oneday")) {
tab = "oneday";
} else if (template.equals("ajax-schedule-oneday-group")) {
tab = "oneday-group";
} else if (template.equals("ajax-schedule-monthly")) {
tab = "monthly";
} else if (template.equals("ajax-calendar-weekly")) {
tab = "weekly";
} else if (template.equals("ajax-schedule-weekly-group")) {
tab = "weekly-group";
} else {
tab = "list";
}
// アクセスコントロール
context.put("hasAcl", ScheduleUtils.hasAuthOther(rundata));
if (isMax) {
this.putData(rundata, context);
setTemplate(rundata, "ajax-calendar-list");
} else {
if ("ajax-schedule-weekly".equals(template)) {
setTemplate(rundata, "ajax-calendar-weekly");
} else {
setTemplate(rundata, template);
}
}
ALEipUtils.setTemp(rundata, context, "tab", tab);
// For security
context.put(ALEipConstants.SECURE_ID, URLEncoder
.encode(
(String) rundata.getUser().getTemp(ALEipConstants.SECURE_ID),
ALEipConstants.DEF_CONTENT_ENCODING));
// For sanitizing
context.put("utils", new ALCommonUtils());
} catch (RuntimeException ex) {
// RuntimeException
logger.error("[AjaxScheduleAction] Exception.", ex);
ALEipUtils.redirectDBError(rundata);
} catch (Exception ex) {
logger.error("[AjaxScheduleAction] Exception.", ex);
ALEipUtils.redirectDBError(rundata);
}
}
/**
*
* @param portlet
* @param context
* @param rundata
*/
@Override
protected void buildMaximizedContext(VelocityPortlet portlet,
Context context, RunData rundata) {
isMax = true;
buildNormalContext(portlet, context, rundata);
}
/**
* スケジュールを一覧表示します。
*
* @param rundata
* @param context
*/
public void doSchedule_list(RunData rundata, Context context) {
isMax = true;
}
private void clearAjaxScheduleSession(RunData rundata, Context context) {
ALEipUtils.removeTemp(rundata, context, "entityid");
}
}