<%-- __________________________________________________________________________________________ Used by calendar_db_calendarid_activemonthsdata_YYYYMM.rzt to create xml for month view and calendar_db_calendarid_activeweeksdata_YYYYMM.rzt to create xml file for week view //---------------------------------------------------------------------- //NOTE: primary repeat events are mapped to all periods even if skipped. // single occurance events only mapped to applicable periods. // calendar_app_view_common.js::processActiveData() removes skipped // dates for primary and single occurance event records. //---------------------------------------------------------------------- __________________________________________________________________________________________ --%><% String TEMPLATE_VERSION = "07-28-2012"; String calendar_options = rz.fetch("webspace_config","calendar_options","nopublish"); //boolean isRepeatContentOverride = rz.checkoptions(calendar_options,"repeat_content_override"); boolean isRepeatContentOverride = true; if (isRepeatContentOverride) TEMPLATE_VERSION = "09-02-2014"; %><%@include file="/plugins/calendar/calendar3.xml_common_month_include.jsp"%><% try { rz.baseurl(); //keeps embedded urls relative to site (not this folder) //----- calendarid from dependent record rz.fetch("calendar_mapping","calendarid"); String this_calendarid = rz.content; //xmlBuilder.addLog("this_calendarid",rz.content); //xmlBuilder.addLog("calendar_mapping:dependent_recordid",rz.recordid); //DCO 09-02-2014: ***** cannot be beta if using this ..._alt_... include ***** /***************************************************************************** boolean isBeta = (rz.gettemplate("calendar_app_javascript_fullview") == null); attr = new ArrayList(); if (isBeta) attr.add("format=3.1"); else *****************************************************************************/ attr.add("format=3.2"); //XML-------------------------------- xmlBuilder.addTopXML("events",attr,TEMPLATE_VERSION); //----------------------------------- //----- Build filter for this calendar id (if at least one mapping entry exists) // 12-19-2011 DCO TODO:??? what happens if filter is blank? String filter = ""; String fieldname = "year_month"; //----- set by template which includes this file //String view = "month";//request.getParameter("view"); //xmlBuilder.addLog("view",view); if (view != null && view.equals("week")) fieldname = "year_week"; //----- Read year_month or year_week rz.fetch("calendar_mapping",fieldname); //xmlBuilder.addLog("calendar_mapping",rz.content); //----- Mapping filter filter = "calendarid=" + this_calendarid + " and " + fieldname + "=" + rz.content; //xmlBuilder.addLog("calendar_mapping filter",filter + " (finds events)"); String value = ""; String edits = ""; String pattern = ""; RegEx.Results results = null; %><% //xmlBuilder.addLog("number of events (rz.listlength)",rz.listlength); while ( rz.listnext() ) { if (rz.listindex < 0) break; //no active records (e.g. no information available) //rz.fetch("calendar_mapping", "counter"); //for debugging String eventid = rz.fetch("calendar_mapping", "eventid"); String mapid = rz.recordid; String event_where = "_recordid=" + eventid; String event_calendarid = rz.fetch("calendar_events", "calendarid", "", event_where); //xmlBuilder.addLog("---------------------------------------------------------------------------------"); //xmlBuilder.addLog("mapid=" + mapid + " eventid=" + eventid + " event_calendarid=" + event_calendarid); //xmlBuilder.addLog("event_where",event_where + (rz.nodata ? " event deleted" : "")); if (rz.nodata) continue; /*********************************************/ /*BOOKMARK -----REPEATID:recordid processing*/ /*******************************************/ String repeatid = ""; String repeat_where = event_where; String summary = rz.fetch("calendar_events","summary","",event_where); //----- If REPEATID:... found in summary field, event is content override if (isRepeatContentOverride && summary.indexOf("REPEATID:") == 0 && summary.length() > 9) { repeatid = summary.substring(9); //primary event recordid repeat_where = "_recordid=" + repeatid; //xmlBuilder.addLog("repeat_where", repeat_where); // get summary field from the primary event summary = rz.fetch("calendar_events","summary","",repeat_where); if (summary.length() == 0) continue; //primary event not found // check for reference to this event from the EDITS: string //xmlBuilder.addLog("primary event summary",summary); results = RegEx.match(summary, "EDITS:(.*?)(?=;)"); if (!results.isFound) continue; //EDITS: string not found // backward compatibility for code before 09-02-2014 results.group[1] = results.group[1].replaceAll("-(,|$)","$1"); edits = results.group[1]; //xmlBuilder.addLog("EDITS",edits); rz.fetch("calendar_events","begin_date","format=MM-dd-yyyy",event_where); if (edits.indexOf(rz.content) == -1) continue; //this override record not used } String rollup = rz.fetch("calendar_events", "rollup","",event_where); rollup = ""; //***** disable rollup ***** %><% attr.clear(); attr.add("id=" + rz.recordid); attr.add("calendarid=" + event_calendarid); //XML-------------------- // open event tag xmlBuilder.addXML("event",attr,null); //------------------------ rz.fetch("calendar_events","event_name","",event_where); xmlBuilder.addXML("name",rz.content,true); if(rz.isvalidfield("calendar_events","location")){%> <% xmlBuilder.addXML("event_location",rz.content,true); } if(rz.isvalidfield("calendar_events","image")){%> <% String iSrc, iAlt; iSrc = rz.src.replaceFirst("\\../",""); iSrc = iSrc.replaceAll(" ","%20"); iAlt = rz.alt; xmlBuilder.addXML("event_image", iSrc ,true); xmlBuilder.addXML("event_image_alt", iAlt, true); } String begin_date = rz.fetch("calendar_events","begin_date","",event_where); xmlBuilder.addXML("date_begin",begin_date); String end_date = rz.fetch("calendar_events","end_date","",event_where); String duration = rz.fetch("calendar_events","duration","",event_where); String eventClass = rz.fetch("calendar_events","event_class","",event_where); String repeat = rz.fetch("calendar_events","repeat","",repeat_where); xmlBuilder.addXML("event_class",eventClass); if (duration.length() == 0 && repeat.length() == 0) end_date = begin_date; xmlBuilder.addXML("date_end",end_date); value = rz.fetch("calendar_events","start_time_hours","",event_where) + ":" + rz.fetch("calendar_events","start_time_minutes","",event_where); if (value.equals(":")) value = ""; xmlBuilder.addXML("time_begin",value); //----- save duration properties String duration_units = rz.fetch("calendar_events","duration_units","",event_where); value = duration + duration_units; xmlBuilder.addXML("duration",value); if (rz.content.equals("min")) duration_units = "Minute"; else if (rz.content.equals("hrs")) duration_units = "Hour"; else if (rz.content.equals("days")) duration_units = "Day"; if (StringUtils.toInt(duration) > 1) duration_units += "s"; value = duration.length() > 0 ? duration + " " + duration_units : ""; xmlBuilder.addXML("duration_formatted",value); xmlBuilder.addXML("notable",rz.fetch("calendar_events","notable","",event_where)); //----- save repeat properties if (repeatid.length() > 0) { xmlBuilder.addXML("repeatid",repeatid); xmlBuilder.addXML("repeat","override"); //to show repeat icon } else { //----- Unpack repeat options String[] repeatOptions = StringUtils.split(repeat.replaceAll("##","# #"),"#"); if (repeatOptions.length == 0) xmlBuilder.addXML("repeat",repeat); else { //xmlBuilder.addLog("repeat",repeat); xmlBuilder.addXML("repeat",repeatOptions[0]); //backward compatibility xmlBuilder.addXML("repeatUnits",repeatOptions[0]); if (repeatOptions.length > 1) xmlBuilder.addXML("repeatCount",repeatOptions[1]); if (repeatOptions.length > 2) xmlBuilder.addXML("repeatOther",repeatOptions[2]); if (repeatOptions.length > 3) xmlBuilder.addXML("repeatDesc",repeatOptions[3]); } } /*DCO 09-02-2014: ***** cannot be beta if using this ..._alt_... include ***** //----- Summary DB field only used for DATES (no field on edit form) String summary = rz.fetch("calendar_events","summary","",event_where); if (isBeta) xmlBuilder.addXML("summary",summary); else { */ /*****************************************/ /*BOOKMARK -----summary field processing*/ /***************************************/ xmlBuilder.addXML("summary",""); //empty string in case iPhone references //DCO 09-02-2014\\ // As of 09-02-2014, the summary field can contain multiple keyword strings // formatted as follows: keyword:values...; // // For backwark compatibility when other keywords follow DATES, a comma is // added after last date and a dash is added to the end of summary field. // // e.g. DATES:10-04-2014-,11-01-2014,; EDITS:10-04-2014=112;- // // Everything after the last date is ignored by prior code since it // appear as another skipped date. // // DATES: was and is still in summary field for any repeating event. // For content override events summary=REPEATID:... ignored by prior code. // (DATES: is not included because event record is only for single date) if (!isRepeatContentOverride) { //DCO 09-02-2014// if (summary.indexOf("DATES:") == 0 && summary.length() > 6) xmlBuilder.addXML("dates",summary.substring(6),false); //false for DATES:... //DCO 09-02-2014\\ } else { // backward compatibility for code before 09-02-2014 // convert ,; to ; at end of DATES: and ;- to ; at end of field summary = summary.replaceFirst(",;",";").replaceFirst(";-",";"); //----- Create xml for each keyword string found in summary DB field //DCO 09-02-2014\\ pattern = "/((\\w*):(.*?))(?=(;|$))/"; results = RegEx.match(summary,pattern+"g"); if (results.isFound) { String keyword_strings[] = results.group; for (int i=0;i<% xmlBuilder.addXML("detail",rz.content,true); xmlBuilder.addXML("contact_name",rz.fetch("calendar_events","contact_name","",event_where)); xmlBuilder.addXML("contact_email",rz.fetch("calendar_events","contact_email","",event_where)); xmlBuilder.addXML("contact_phone",rz.fetch("calendar_events","contact_phone","",event_where)); xmlBuilder.addXML("signup_form",rz.fetch("calendar_events","signup_form","",event_where)); if (rz.content.equals("yes")) xmlBuilder.addXML("signup_form_url","calendar_view_common/calendar_main_signup.html#"+eventid); else xmlBuilder.addXML("signup_form_url",""); xmlBuilder.addXML("event_coordinator_name",rz.fetch("calendar_events","event_coordinator_name","",event_where)); xmlBuilder.addXML("event_coordinator_email",rz.fetch("calendar_events","event_coordinator_email","",event_where)); xmlBuilder.addXML("event_coordinator_phone",rz.fetch("calendar_events","event_coordinator_phone","",event_where)); xmlBuilder.addXML("supervisor_email",rz.fetch("calendar_events","supervisor_email","",event_where)); xmlBuilder.addXML("date_time_stamp",rz.fetch("calendar_events","date_time_stamp","",event_where)); xmlBuilder.addXML("rollup",rz.fetch("calendar_events","rollup","",event_where)); //XML------------------- // close event tag xmlBuilder.closeXML("event"); //---------------------- %><% } %><% xmlBuilder.closeLog(); //XML-------------------- // close events tag xmlBuilder.closeXML("events"); //----------------------- out.print(xmlBuilder.getXml()); } catch (Exception e) { e.printStackTrace(); } %>