/* * 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 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.common.ALEipConstants; 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.ScheduleWeeklyGroupSelectData; import com.aimluck.eip.schedule.ScheduleWeeklySelectData; import com.aimluck.eip.schedule.util.ScheduleUtils; import com.aimluck.eip.util.ALEipUtils; /** * スケジュールの一覧を処理するクラスです。 <br /> * */ public class ScheduleScreenPrint extends ALVelocityScreen { /** logger */ private static final JetspeedLogger logger = JetspeedLogFactoryService .getLogger(ScheduleScreen.class.getName()); /** コンテントタイプ */ private static final String CONTENT_TYPE = "text/html;charset=" + ALEipConstants.DEF_CONTENT_ENCODING; /** * * @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 { // 自ポートレットからのリクエストであれば、パラメータを展開しセッションに保存する。 if (ALEipUtils.isMatch(rundata, context)) { // 現在選択されているタブ // oneday : 1日表示 // weekly : 週間表示 // monthly: 月間表示 if (rundata.getParameters().containsKey("tab")) { ALEipUtils.setTemp(rundata, context, "tab", rundata .getParameters() .getString("tab")); } } ALAbstractSelectData<VEipTScheduleList, VEipTScheduleList> listData = null; // ポートレット ID を取得する. String portletId = portlet.getID(); String currentTab; String tmpCurrentTab = ALEipUtils.getTemp(rundata, context, "tab"); if (tmpCurrentTab == null || !(tmpCurrentTab.equals("oneday") || tmpCurrentTab.equals("weekly") || tmpCurrentTab.equals("monthly") || tmpCurrentTab.equals("list") || tmpCurrentTab.equals("oneday-group") || tmpCurrentTab .equals("weekly-group"))) { currentTab = "oneday"; } else { currentTab = tmpCurrentTab; } int tab_count = 0; // Velocity テンプレートを読み込む String template = ""; String _template = portlet.getPortletConfig().getInitParameter("pba-template"); boolean done = false; // アクセスコントロール String has_acl_self = ScheduleUtils.hasAuthSelf(rundata); String has_acl_other = ScheduleUtils.hasAuthOther(rundata); String tab_flg_oneday = ALEipUtils .getPortlet(rundata, context) .getPortletConfig() .getInitParameter("p6a-tab"); if ("0".equals(tab_flg_oneday) && ("T".equals(has_acl_self))) { tab_count++; template = "schedule-oneday"; if (template.equals(_template)) { done = true; } } String tab_flg_weekly = ALEipUtils .getPortlet(rundata, context) .getPortletConfig() .getInitParameter("p7a-tab"); if ("0".equals(tab_flg_weekly) && ("T".equals(has_acl_self))) { tab_count++; if (("".equals(template)) || (!done)) { template = "schedule-weekly"; if (template.equals(_template)) { done = true; } } } String tab_flg_monthly = ALEipUtils .getPortlet(rundata, context) .getPortletConfig() .getInitParameter("p8a-tab"); if ("0".equals(tab_flg_monthly) && ("T".equals(has_acl_self))) { tab_count++; if (("".equals(template)) || (!done)) { template = "schedule-monthly"; if (template.equals(_template)) { done = true; } } } String tab_flg_oneday_group = ALEipUtils .getPortlet(rundata, context) .getPortletConfig() .getInitParameter("p9a-tab"); if ("0".equals(tab_flg_oneday_group) && ("T".equals(has_acl_other))) { tab_count++; if (("".equals(template)) || (!done)) { template = "schedule-oneday-group"; if (template.equals(_template)) { done = true; } } } String tab_flg_weekly_group = ALEipUtils .getPortlet(rundata, context) .getPortletConfig() .getInitParameter("paa-tab"); if ("0".equals(tab_flg_weekly_group) && ("T".equals(has_acl_other))) { tab_count++; if (("".equals(template)) || (!done)) { template = "schedule-weekly-group"; if (template.equals(_template)) { done = true; } } } String tab_flg_list = ALEipUtils .getPortlet(rundata, context) .getPortletConfig() .getInitParameter("pba-tab"); if ("0".equals(tab_flg_list) && ("T".equals(has_acl_other))) { tab_count++; if (("".equals(template)) || (!done)) { template = "schedule-list"; if (template.equals(_template)) { done = true; } } } if ("oneday".equals(currentTab)) { // tab = "oneday"; if ("T".equals(has_acl_self)) { if (!"0".equals(tab_flg_oneday)) { tab_flg_oneday = "0"; tab_count++; } } listData = new ScheduleOnedaySelectData(); ((ScheduleOnedaySelectData) listData).setPortletId(portletId); // ブラウザ名を受け渡す. boolean isMsie = ALEipUtils.isMsieBrowser(rundata); context.put("isMeie", Boolean.valueOf(isMsie)); } else if ("weekly".equals(currentTab)) { // tab = "weekly"; if ("T".equals(has_acl_self)) { if (!"0".equals(tab_flg_weekly)) { tab_flg_weekly = "0"; tab_count++; } } listData = new ScheduleWeeklySelectData(); ((ScheduleWeeklySelectData) listData).setPortletId(portletId); } else if ("monthly".equals(currentTab)) { // tab = "monthly"; if ("T".equals(has_acl_self)) { if (!"0".equals(tab_flg_monthly)) { tab_flg_monthly = "0"; tab_count++; } } listData = new ScheduleMonthlySelectData(); ((ScheduleMonthlySelectData) listData).setPortletId(portletId); } else if ("list".equals(currentTab)) { // tab = "list"; if ("T".equals(has_acl_self)) { if (!"0".equals(tab_flg_list)) { tab_flg_list = "0"; tab_count++; } } listData = new ScheduleListSelectData(); ((ScheduleListSelectData) listData).setPortletId(portletId); } else if ("oneday-group".equals(currentTab)) { // tab = "oneday-group"; if ("T".equals(has_acl_other)) { if (!"0".equals(tab_flg_oneday_group)) { tab_flg_oneday_group = "0"; tab_count++; } } listData = new ScheduleOnedayGroupSelectData(); ((ScheduleOnedayGroupSelectData) listData).setPortletId(portletId); // ブラウザ名を受け渡す. boolean isMsie = ALEipUtils.isMsieBrowser(rundata); context.put("isMeie", Boolean.valueOf(isMsie)); } else if ("weekly-group".equals(currentTab)) { // tab = "weekly-group"; if ("T".equals(has_acl_other)) { if (!"0".equals(tab_flg_weekly_group)) { tab_flg_weekly_group = "0"; tab_count++; } } listData = new ScheduleWeeklyGroupSelectData(); ((ScheduleWeeklyGroupSelectData) listData).setPortletId(portletId); } else { logger.info("unknown schedule type selected > listData is null"); return; } if ("T".equals(has_acl_self)) { context.put("tab-oneday", tab_flg_oneday); context.put("tab-weekly", tab_flg_weekly); context.put("tab-monthly", tab_flg_monthly); } if ("T".equals(has_acl_other)) { context.put("tab-oneday-group", tab_flg_oneday_group); context.put("tab-weekly-group", tab_flg_weekly_group); } context.put("widthALL", Integer.toString(tab_count * 120 + 40) + "px"); context.put("ajax_onloadimage", "true"); listData.initField(); listData.doViewList(this, rundata, context); String layout_template = "portlets/html/ajax-schedule-print.vm"; setTemplate(rundata, context, layout_template); } catch (Exception ex) { logger.error("[ToDoScreen] Exception.", ex); ALEipUtils.redirectDBError(rundata); } } @Override protected String getContentType(RunData rundata) { return CONTENT_TYPE; } /** * @return */ @Override protected String getPortletName() { return ScheduleUtils.SCHEDULE_PORTLET_NAME; } }