/* * 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.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.cayenne.om.portlet.VEipTScheduleList; import com.aimluck.eip.common.ALAbstractSelectData; import com.aimluck.eip.schedule.AjaxScheduleWeeklyGroupEmptySelectData; import com.aimluck.eip.schedule.ScheduleListSelectData; import com.aimluck.eip.schedule.ScheduleMonthlySelectData; import com.aimluck.eip.schedule.ScheduleOnedayGroupSelectData; import com.aimluck.eip.schedule.ScheduleOnedaySelectData; import com.aimluck.eip.schedule.ScheduleSearchSelectData; import com.aimluck.eip.schedule.ScheduleWeeklyGroupSelectData; import com.aimluck.eip.schedule.ScheduleWeeklySelectData; import com.aimluck.eip.schedule.util.ScheduleUtils; import com.aimluck.eip.userfacility.beans.UserFacilityLiteBean; import com.aimluck.eip.userfacility.util.UserFacilityUtils; import com.aimluck.eip.util.ALEipUtils; /** * スケジュールの一覧を処理するクラスです。 <br /> * */ public class ScheduleListScreen extends ScheduleScreen { /** logger */ private static final JetspeedLogger logger = JetspeedLogFactoryService .getLogger(ScheduleListScreen.class.getName()); /** * * @param rundata * @param context * @throws Exception */ @Override protected void doOutput(RunData rundata, Context context) throws Exception { VelocityPortlet portlet = ALEipUtils.getPortlet(rundata, context); // String tab = rundata.getParameters().getString("tab"); try { String currentTab = ScheduleUtils.getCurrentTab(rundata, context); String useragent = rundata.getUserAgent(); ALAbstractSelectData<VEipTScheduleList, VEipTScheduleList> listData = null; // ポートレット ID を取得する. String portletId = portlet.getID(); useragent = useragent.trim(); if (useragent.indexOf("Mac") != -1 && useragent.indexOf("iPad") == -1) { context.put("isMac", 1); } // 初期共有メンバー表示フラグを取得する String showAll = portlet.getPortletConfig().getInitParameter("p7d-schk"); if (!("t".equals(showAll))) { showAll = "f"; } context.put("init_s_all", showAll); // 表示形式(月間)を取得する 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 has_acl_other = ScheduleUtils.hasAuthOther(rundata); context.put("hasAcl", has_acl_other); if (has_acl_other.equals("F")) { if (rundata.getParameters().get("filter") == null || rundata.getParameters().get("filter").equals("Facility")) { rundata.getParameters().add("filter", "null"); rundata.getParameters().remove("filtertype"); } } if ("calendar".equals(currentTab)) { // tab = "calendar" listData = new AjaxScheduleWeeklyGroupEmptySelectData(); boolean isMsie = ALEipUtils.isMsieBrowser(rundata); context.put("isMeie", Boolean.valueOf(isMsie)); // 初期選択メンバーリストを取得する 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; if ("F".equals(has_acl_other)) { ulist = ScheduleUtils.getALEipFacility(selected_users, rundata); if (selected_user.contains(String.valueOf(ALEipUtils .getUserId(rundata)))) { UserFacilityLiteBean login_user = UserFacilityUtils.getUserFacilityLiteBean(rundata); ulist.add(login_user); } } else { 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); if ("IPHONE".equals(ALEipUtils.getClient(rundata))) { context.put("top_form", "simple"); } } else if ("oneday".equals(currentTab)) { // tab = "oneday"; listData = new ScheduleOnedaySelectData(); ((ScheduleOnedaySelectData) listData).setPortletId(portletId); // ブラウザ名を受け渡す. boolean isMsie = ALEipUtils.isMsieBrowser(rundata); context.put("isMeie", Boolean.valueOf(isMsie)); } else if ("weekly".equals(currentTab)) { listData = new ScheduleWeeklySelectData(); ((ScheduleWeeklySelectData) listData).setPortletId(portletId); } else if ("monthly".equals(currentTab)) { // tab = "monthly"; listData = new ScheduleMonthlySelectData(); ((ScheduleMonthlySelectData) listData).setPortletId(portletId); } else if ("oneday-group".equals(currentTab)) { // tab = "oneday-group"; listData = new ScheduleOnedayGroupSelectData(); ((ScheduleOnedayGroupSelectData) listData).setPortletId(portletId); // ブラウザ名を受け渡す. boolean isMsie = ALEipUtils.isMsieBrowser(rundata); context.put("isMeie", Boolean.valueOf(isMsie)); } else if ("list".equals(currentTab)) { // tab = "list"; listData = new ScheduleListSelectData(); ((ScheduleListSelectData) listData).setPortletId(portletId); // ブラウザ名を受け渡す. boolean isMsie = ALEipUtils.isMsieBrowser(rundata); context.put("isMeie", Boolean.valueOf(isMsie)); } else if ("search".equals(currentTab)) { // tab = "search"; listData = new ScheduleSearchSelectData(); ((ScheduleSearchSelectData) listData).setPortletId(portletId); // TODO: 表示カスタマイズ listData.setRowsNum(20); // ブラウザ名を受け渡す. boolean isMsie = ALEipUtils.isMsieBrowser(rundata); context.put("isMeie", Boolean.valueOf(isMsie)); } else { // tab = "weekly-group"; listData = new ScheduleWeeklyGroupSelectData(); ((ScheduleWeeklyGroupSelectData) listData).setPortletId(portletId); } context.put("ajax_onloadimage", "true"); context.put("isMaximize", "true"); listData.initField(); listData.doViewList(this, rundata, context); String layout_template = "portlets/html/ajax-schedule-list.vm"; setTemplate(rundata, context, layout_template); } catch (Exception ex) { logger.error("[ScheduleListScreen] Exception.", ex); ALEipUtils.redirectDBError(rundata); } } }