📄 activitycalendar.jsp
字号:
<%@ include file="/includes/header.jsp" %>
<%@ page import="com.sourcetap.sfa.ui.UIScreenSection" %>
<%@ page import="com.sourcetap.sfa.ui.UIUserDropDown" %>
<%@ page import="com.sourcetap.sfa.util.Preference" %>
<%@ page import="java.util.*" %>
<%@ page import="java.text.*" %>
<%@ page import="java.math.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="org.ofbiz.entity.*" %>
<%@ page import="org.ofbiz.entity.condition.*" %>
<%@ page import="org.ofbiz.entity.model.*" %>
<%@ page import="com.sourcetap.sfa.util.EntityHelper" %>
<%!
boolean DEBUG = false;
String module = "activityCalendar";
// GenericDelegator delegator2 = new GenericDelegator("default");
String ENTITY = "Activity";
// ModelEntity entity = delegator2.getModelEntity(ENTITY);
Date currentDate = new Date();
int currentMonth = Calendar.getInstance().get(Calendar.MONTH) + 1;
int currentYear = Calendar.getInstance().get(Calendar.YEAR);
int currentDay = Calendar.getInstance().get(Calendar.DAY_OF_MONTH);
int popupWidth = 1024;
int popupHeight = 525;
// put in a blank element because we want the months to start at '1' not '0'
String monthLabel[] = {"", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
String dayLabel[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday","Saturday"};
int daysInMonth[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
public String makeMonth(int month, int year, GenericDelegator delegator, UserInfo userInfo, String showUserPartyId) {
Calendar calendar = getCalendar(month, year, 1);
int firstDay = calendar.get(Calendar.DAY_OF_WEEK);
int rows;
if (((daysInMonth[month] == 31) && (firstDay >= 6)) || ((daysInMonth[month] == 30) && (firstDay == 7))) {
rows = 6;
} else if ((daysInMonth[month] == 28) && (firstDay == 1)) {
rows = 4;
} else {
rows = 5;
}
StringBuffer returnString = new StringBuffer();
try {
List monthList = findActivitiesByMonth(month, year, delegator, showUserPartyId);
GenericValue monthActivitiesGV[] = (GenericValue[])monthList.toArray(new GenericValue[0]);
// returnString.append("Activity Count: " + String.valueOf(monthActivitiesGV.length));
returnString.append("<TABLE WIDTH=\"100%\" CLASS=\"calendarTable\">\n");
returnString.append(" <TR>\n");
returnString.append(" <TD ALIGN=\"left\" COLSPAN=\"3\"><BIG><B>" + monthHeader(year, month, showUserPartyId) + "</B></BIG></TD>\n");
returnString.append(" <TD ALIGN=\"right\" COLSPAN=\"4\">\n");
returnString.append(" <FORM METHOD=\"post\" ACTION=\"/sfa/control/activityCalendar\" NAME=\"UserSelectForm\">\n");
returnString.append(" View calendar for:\n");
returnString.append(" <INPUT TYPE=\"hidden\" NAME=\"action\" VALUE=\"month\">\n");
returnString.append(" <INPUT TYPE=\"hidden\" NAME=\"year\" VALUE=\"" + String.valueOf(year) + "\">\n");
returnString.append(" <INPUT TYPE=\"hidden\" NAME=\"month\" VALUE=\"" + String.valueOf(month) + "\">\n");
returnString.append(" <SELECT NAME=\"showUserPartyId\" CLASS=\"stateSelectBox\" onChange=\"document.UserSelectForm.submit();\">\n");
// Get the current user's name.
HashMap currentUserContactKeyMap = new HashMap();
currentUserContactKeyMap.put("contactId", userInfo.getPartyId());
GenericValue currentUserContactGV = delegator.findByPrimaryKey("Contact", currentUserContactKeyMap);
String currentUserFirstName = currentUserContactGV.getString("firstName")==null ? "" :
currentUserContactGV.getString("firstName");
String currentUserLastName = currentUserContactGV.getString("lastName")==null ? "" :
currentUserContactGV.getString("lastName");
returnString.append(" <OPTION VALUE=\"" + userInfo.getPartyId() + "\"");
if (userInfo.getPartyId().equals(showUserPartyId)) {
returnString.append(" SELECTED");
}
returnString.append(">" + currentUserFirstName + " " + currentUserLastName + "\n");
// Get a list of all other users in the current user's company.
UIUserDropDown uiUserDropDown = new UIUserDropDown();
List userContactL = uiUserDropDown.getDropDownValues(
delegator,
null,
null,
null,
null,
userInfo);
// Filter the list to only those people who are sharing their calendars.
Iterator userContactI = userContactL.iterator();
while (userContactI.hasNext()) {
GenericValue userContactGV = (GenericValue)userContactI.next();
String userContactId = userContactGV.getString("contactId")==null ? "" : userContactGV.getString("contactId");
// Find out whether this user is sharing their calendar.
Preference preference = new Preference(delegator);
String shareCalendar = preference.getPreference(userContactId, "SHARE_CALENDAR", "yes");
if (DEBUG) Debug.logVerbose("[activityCalendar.jsp] SHARE_CALENDAR for partyId " + userContactId + " is \"" + shareCalendar + "\"", module);
if (shareCalendar.equals("yes") && !userContactId.equals(userInfo.getPartyId())) {
// This user is sharing their calendar, and is not the current logged-in user.
// Go ahead and add it to the list.
String userContactFirstName = userContactGV.getString("firstName")==null ? "" :
userContactGV.getString("firstName");
String userContactLastName = userContactGV.getString("lastName")==null ? "" :
userContactGV.getString("lastName");
returnString.append(" <OPTION VALUE=\"" + userContactId + "\"");
if (userContactId.equals(showUserPartyId)) {
returnString.append(" SELECTED");
}
returnString.append(">" + userContactFirstName + " " + userContactLastName + "\n");
}
}
returnString.append(" </SELECT>\n");
returnString.append(" </FORM>\n");
returnString.append(" </TD>\n");
returnString.append(" </TR>\n");
returnString.append(" <TR HEIGHT=\"30\">\n");
for(int i = 0; i < 7; i++) {
returnString.append("<TD");
if (i==3) {
returnString.append(" WIDTH=\"*\"");
} else {
returnString.append(" WIDTH=\"14%\"");
}
returnString.append(" ALIGN=\"center\">" + dayLabel[i] + "</TD>\n");
}
returnString.append("</TR>\n");
int dayCounter = 1;
int loopCounter = 1;
String dayDetail = "";
for (int j = 1; j <= rows; j++) {
returnString.append("<TR CLASS=\"calendarDay\" HEIGHT=\"90\">\n");
for (int i = 1; i < 8; i++) {
Calendar dayCalendar = new GregorianCalendar(year, month-1, dayCounter);
java.sql.Date dayDate = new java.sql.Date(dayCalendar.getTime().getTime());
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
String dayDateString = "";
try {
dayDateString = dateFormat.format(dayDate);
} catch (Exception e) {
Debug.logError("[activityCalendar.jsp] Error formatting day date: " + e.getLocalizedMessage(), module);
}
returnString.append("<TD ");
// Default to plain colors.
String styleClass = "calendarWeekday";
if (i==1 || i==7) {
// This is a weekend day. Use the colors for a weekend day.
styleClass = "calendarWeekend";
}
returnString.append(" VALIGN=\"top\" ");
// Check for valid day of the month
if ((loopCounter >= firstDay) && (dayCounter <= daysInMonth[month])) {
// Check for today
if ((dayCounter == currentDay) && (month == currentMonth) && (year == currentYear)) {
// This is today's date. Change the background color of the box.
styleClass = "calendarToday";
}
returnString.append("CLASS=\"" + styleClass + "\">\n");
returnString.append(" <TABLE WIDTH=\"100%\">\n");
returnString.append(" <TR CLASS=\"calendarDate\">\n");
returnString.append(" <TD CLASS=\"calendarDayNumber\" WIDTH=\"50%\">\n");
// returnString.append(" <B><A HREF=\"/sfa/control/activityCalendar?action=day&day=" + dayCounter +
// "&month=" + month + "&year=" + year + " \">" + dayCounter + "</A></B>\n");
returnString.append(" <B>" + dayCounter + "</B>\n");
returnString.append(" </TD>\n");
returnString.append(" <TD WIDTH=\"50%\" ALIGN=\"right\">\n");
String newAnchorName = "NewActivity" + String.valueOf(year) + String.valueOf(month) +
String.valueOf(dayCounter);
returnString.append(" <INPUT CLASS=\"calendarButton\" TYPE=\"image\" " +
"TITLE=\"Create a new activity for " + dayDateString + "\" SRC=\"/sfaimages/New24.gif\" " +
"onclick='window.open(\"/sfa/control/activityPopup?action=" +
UIScreenSection.ACTION_SHOW_INSERT + "&openDate=" + dayDateString +
"&activityOwnerId=" + showUserPartyId + "\", \"activityPopupNew\", " +
"\"menubar=no,scrollbars=no,toolbar=no,directories=no,top=100," +
"left=100,height=" + String.valueOf(popupHeight) + ",width=" + String.valueOf(popupWidth) + "\", \"\");'></INPUT>\n");
returnString.append(" </TD>\n");
returnString.append(" </TR>\n");
returnString.append(" </TABLE>\n");
//Activities
if (monthList != null && monthList.size() > 0) {
for(int activityNbr=0; activityNbr < monthActivitiesGV.length; activityNbr++){
GenericValue monthActivityGV = monthActivitiesGV[activityNbr];
Calendar activityCalendar = new GregorianCalendar();
java.sql.Date activityOpenDate = monthActivityGV.getDate("openDate");
if(dayDate.compareTo(activityOpenDate)==0){
String activityId = monthActivityGV.getString("activityId")==null ? "" :
monthActivityGV.getString("activityId");
String activityName = monthActivityGV.getString("activityName")==null ? "" :
monthActivityGV.getString("activityName");
if (DEBUG) Debug.logVerbose("[activityCalendar.jsp] Reading openStartTime", module);
String openStartTimeString = "";
if (DEBUG) Debug.logVerbose("[activityCalendar.jsp] Checking for null openStartTime", module);
if (monthActivityGV.getTimestamp("openStartTime")!=null) {
if (DEBUG) Debug.logVerbose("[activityCalendar.jsp] Getting openStartTime value into local var", module);
java.sql.Timestamp openStartTime = monthActivityGV.getTimestamp("openStartTime");
if (DEBUG) Debug.logVerbose("[activityCalendar.jsp] Creating SimpleDateFormat", module);
SimpleDateFormat timeFormat = new SimpleDateFormat("h:mm a");
try {
openStartTimeString = timeFormat.format(openStartTime) + " - ";
} catch (Exception e) {
Debug.logError("[activityCalendar.jsp] Error formatting date: " + e.getLocalizedMessage(), module);
}
}
// returnString.append("<NOBR>" + openStartTimeString + "<A HREF=\"/sfa/control/activity/activities?activityId=" +
// activityId + "&action=search\"> " +
// activityName + "</NOBR></A><BR>");
// returnString.append("<NOBR>" + openStartTimeString + "<A HREF=\"/sfa/control/activityPopup?" +
// "action=" + UIScreenSection.ACTION_SHOW + "&activityId=" + activityId + "\" TARGET=\"activityPopup\"" +
// "onclick='window.open(\"/sfa/control/activityPopup?action=" +
// UIScreenSection.ACTION_SHOW + "&activityId=" + activityId +
// "\", \"activityPopup\", " +
// "\"menubar=no,scrollbars=no,toolbar=no,directories=no,top=100," +
// "left=100,height=400,width=1024\", \"\");'>" +
// activityName + "</A></NOBR>\n");
// returnString.append("<NOBR>" + openStartTimeString +
// "<A onclick='window.open(\"/sfa/control/activityPopup?action=" +
// UIScreenSection.ACTION_SHOW + "&activityId=" + activityId +
// "\", \"activityPopup\", " +
// "\"menubar=no,scrollbars=no,toolbar=no,directories=no,top=100," +
// "left=100,height=400,width=1024\", \"\");'>" +
// activityName + "</A></NOBR>\n");
returnString.append("<NOBR>" + openStartTimeString +
"<A HREF='javascript:var dummy=window.open(\"/sfa/control/activityPopup?action=" +
UIScreenSection.ACTION_SHOW + "&activityId=" + activityId +
"\", \"activityPopup\", " +
"\"menubar=no,scrollbars=no,toolbar=no,directories=no,top=100," +
"left=100,height=" + String.valueOf(popupHeight) + ",width=" + String.valueOf(popupWidth) + "\", \"\")'>" +
activityName + "</A></NOBR>\n");
}
}
}
returnString.append("</TD>");
dayCounter++;
calendar.set(Calendar.DAY_OF_MONTH, dayCounter);
} else {
// not a valid day, make a blank cell
returnString.append("<TD CLASS=\"calendarInvalidDay\"> </TD>");
}
loopCounter++;
}
// returnString.append("<td align=\"center\"><div class=\"tabletext\"><a href=\"/sfa/control/activityCalendar?action=week&day=" + (dayCounter-1) + "&month=" + month + "&year=" + year + "\" >w<br>e<br>e<br>k</a></div></td>");
returnString.append("</tr>");
}
returnString.append("</table>");
} catch (Exception e) {
e.printStackTrace();
}
return returnString.toString();
}
Calendar getCalendar(int month, int year, int day){
if(day <= 0){
day = 1;
}
Calendar calendar = Calendar.getInstance();
calendar.clear();
switch(month){
case 1:
calendar.set(Calendar.MONTH, Calendar.JANUARY);
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.DAY_OF_MONTH, day);
break;
case 2:
calendar.set(Calendar.MONTH, Calendar.FEBRUARY);
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.DAY_OF_MONTH, day);
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -