• dhtmlx+lotusscript周视图


    前几天通过dhtmlx和ls做了一个日程管理的视图,周视图图片如下


    本视图分了两部分,一部分是上面的日期显示和日历显示,另一部分是显示一周中每天的日程。

    第一部分主要用js和dhtmlx的calendar控件做日历的,具体代码如下

    <link rel="STYLESHEET" type="text/css" href="/resources/controls/dhtmlx/dhtmlxCalendar/dhtmlxcalendar.css">
    <script src="/resources/controls/dhtmlx/grid/dhtmlxcommon.js"></script>
    <script src="/resources/controls/dhtmlx/dhtmlxCalendar/dhtmlxcalendar.js"></script>

    上面部分是引用dhtmlx的文件,下面是js通过url参数(如果没则显示当前日期)显示具体是哪个日期以及绑定用户点击日历的触发事件代码

    var oldyear,oldmonth,oldday;
    var mDCal,mDCal1;
    var thetime = new Date();//取得当前时间
    var thisYear = thetime.getYear();
    //取得下个月(getMonth是以0开始),所以+2
    var thisMonth = thetime.getMonth()+2;
    if (thisMonth == 13)
    {
    thisYear = thisYear + 1;
    thisMonth = 1;
    }
    //取得当月是几号
    var thisDay = thetime.getDate();
    //设置日历格式(
    //var alltimes = thisMonth+"/"+thisDay+"/"+thisYear;

    window.dhx_globalImgPath="/resources/controls/dhtmlx/dhtmlxCalendar/imgs";
    //创建日历
    window.onload = function(){
    mDCal = new dhtmlxCalendarObject('dhtmlxDblCalendar',false,{
       isYearEditable:true,
       isMonthEditable:true
    });
    //设置时间范围
    mDCal.setYearsRange(1990,2050);
    //设置时间
    mDCal.attachEvent("onClick",dayChange);
    mDCal.options.weekstart = 1;
    mDCal.draw();
    mDCal1 = new dhtmlxCalendarObject('dhtmlxDblCalendar1',false,{
       isYearEditable:true,
       isMonthEditable:true
    });
    mDCal1.setYearsRange(1990,2050);
    //添加事件
    mDCal1.attachEvent("onClick",dayChange);
    mDCal1.options.weekstart = 1;
    mDCal1.draw();
    dayChanges(new Date());
    }

    //加载日期
    function dayChanges(date)
    {
    var thistime2;
    var urls = window.location.href + "&";
    var urlday = getParam(urls,"day");
    var urlyear = getParam(urls,"year");
    var urlmonth = getParam(urls,"month");

    if (urlyear != "" && urlmonth != "" && urlday != "")
    {
       thistime2 = new Date();
       thistime2.setYear(urlyear);
       thistime2.setMonth(urlmonth-1);
       thistime2.setDate(urlday);
       //mDCal1.setDate((urlmonth+1)+"/"+urlday+"/"+urlyear);
    }
    else
    {
       thistime2 = new Date(date);
    }
    var theYear = thistime2.getYear();
    var theMonth = thistime2.getMonth() + 1;
    var theDay = thistime2.getDate();
    mDCal.setDate(theMonth+"/"+theDay+"/"+theYear);
    mDCal1.setDate((theMonth+1) + "/" + theDay + "/"+theYear);
    //取得当天是星期几
    var thisweekDay = thistime2.getDay();
    if (thisweekDay == 0)
    {
       thisweekDay = 7;
    }
    var theclickday = thistime2.getDate();
    //上个月,当月,下个月
    var prevMonth,theMonth,nextMonth;
    //上个月天数,当月天数,下个月天数
    var prevMonthdays,theMonthdays,nextMonthdays;
    if (thistime2.getMonth() < 1)
    {
       prevMonth = 12;
    }
    else
    {
       prevMonth = thistime2.getMonth() ;
    }
    theMonth = prevMonth + 1;

    if (theMonth > 12)
    {
       theMonth = 1;
    }
    nextMonth = theMonth + 1;
    if (nextMonth > 12)
    {
       nextMonth = 1;
    }
    prevMonthdays = thetime.getMonthDays(prevMonth-1);
    theMonthdays = thetime.getMonthDays(theMonth-1);
    nextMonthdays = thetime.getMonthDays(nextMonth-1);
    var isYun = thistime2.getYear() % 4 == 0 && thistime2.getYear() % 100 != 0
    if ( isYun ||thistime2.getYear() % 400 == 0)
    {
       if (theMonth == 2)
       {
        theMonthdays = theMonthdays + 1;
       }
    }

    //一个星期第一天和最后一天的分别日期
    var weekStartMonth,weekEndMonth,weekStartDay,weekEndDay;
    if (theclickday-thisweekDay < 0)
    {
       weekStartMonth = prevMonth;
       weekStartDay = prevMonthdays + theclickday-thisweekDay+1;
    }
    else
    {
       weekStartMonth = theMonth;
       weekStartDay = theclickday-thisweekDay+1;
    }

    if (theclickday + (7-thisweekDay) > theMonthdays)
    {
       weekEndMonth = nextMonth;
       weekEndDay = theclickday + (7-thisweekDay)-theMonthdays;
    }
    else
    {
       weekEndMonth = theMonth;
       weekEndDay = theclickday + 7 - thisweekDay;
    }
    oldyear = thistime2.getYear();
    oldmonth = weekStartMonth;
    oldday = weekStartDay;
    var theday = document.getElementById("thedate");
    theday.innerHTML = weekStartMonth + "月" + weekStartDay + "日 -<br>";
    theday.innerHTML = theday.innerHTML + weekEndMonth + "月" + weekEndDay + "日";
    }

    //传入url参数
    function dayChange(date)
    {
    var thistime2;
    thistime2 = new Date(date);

    if (oldyear == thistime2.getYear())
    {
       var tempmonth = Math.abs(oldmonth - (thistime2.getMonth()+1));
       if (tempmonth <=1)
       {
        if (thistime2.getDate() >= oldday && thistime2.getDate() <= oldday+6 && tempmonth == 0)
        {
         return;
        }
        if (oldday-thistime2.getDate()>=25 && tempmonth != 0)
        {
         return;
        }
       }
    }
    //取得当前月和日
    var weekStartDay = thistime2.getDate();
    var weekStartMonth = thistime2.getMonth()+1;

    var totalurl = window.location.href;
    totalurl = totalurl.substring(0,totalurl.indexOf("?")+9);
    if (document.all)
    {
       url = "&year="+ thistime2.getYear();
    }
    else
    {
       if (thistime2.getYear() < 1000)
       {
        url = "&year="+ (thistime2.getYear()+1900);
       }
       else
       {
        url = "&year="+ thistime2.getYear();
       }
    }
    url = url + "&month=" + weekStartMonth;
    url = url + "&day=" + weekStartDay + "&SearchUser=" + document.all.SearchUser.value;
    //xmlhttp = GetXmlHttpObject();
    //xmlhttp.onreadystatechange = stateChangs;

    totalurl = totalurl+url;
    window.location=totalurl;
    }
    function getParam(urls,urlname)
    {
    var i,startpos,endpos;
    var tempVal,tempPname;
    tempPname = "&" + urlname;
    i = urls.indexOf(tempPname);

    if (i != -1)
    {
       startpos = tempPname.length + i + 1;
       endpos = urls.indexOf("&",startpos);
       tempVal = urls.substring(startpos,endpos);
       return tempVal;
      
    }
    return "";
    }

    前面的js主要把第一部分完成了。

    至于第二部分,之前有考虑继续用dhtmlx的控件,但是原来OA的日程管理已经用文档型数据库保存了,只有用lotusscript取得用户建立的日程。主要通过一个代理实现,把日程编译成html码加入到当前页面。页面上通过一个“富文本”域,并设置属性为“计算”接收html码

    代码如下:

    Sub Initialize
    On Error Goto errhandle

    Dim session As NotesSession
    Set session = New NotesSession
    Dim doc As NotesDocument
    Set doc = session.DocumentContext
    Dim db As NotesDatabase
    Set db = session.CurrentDatabase

    Set F = New f_default

    '从QUERYSTRING中得到传过的url参数
    Dim a_querystring As Variant
    a_querystring = F.Quertstringtoarrary(doc.Query_String_Decoded(0),"&")

    Dim this_year As String
    Dim this_month As String
    Dim this_day As String

    this_year = F.QueryString("year",a_querystring)
    this_month = F.QueryString("month",a_querystring)
    this_day = F.QueryString("day",a_querystring)

    '如果没有参数则设置当前日期
    If this_year = "" Then
       this_year = Cstr(Year(Now))
    End If

    If this_month = "" Then
       this_month = Cstr(Month(Now))
    End If

    If this_day = "" Then
       this_day = Cstr(Day(Now))
    End If
    If this_month = 0 Then
       this_year = this_year -1
       this_month = 12
    End If
    If this_month = 13 Then
       this_year = this_year + 1
       this_month = 1
    End If

    '添加html文本以显示周视图
    Call AppendTableHead(db,doc,"","TableMain",Cint(this_year),Cint(this_month),Cint(this_day))


    errhandle:
    Call F.printerrmsg(doc,"initialize")
    Exit Sub
    End Sub

    '****************************************************************
    '添加html文本到rtfname域里面
    '****************************************************************
    Public Sub AppendTableHead(db As NotesDatabase,doc As NotesDocument,tablehead As Variant,rtfname As String,this_year As Integer,this_month As Integer,this_days As Integer)
    On Error Goto errhandle
    '设置每月名称
    Dim month_names(12) As String
    month_names(1)="1月"
    month_names(2)="2月"
    month_names(3)="3月"
    month_names(4)="4月"
    month_names(5)="5月"
    month_names(6)="6月"
    month_names(7)="7月"
    month_names(8)="8月"
    month_names(9)="9月"
    month_names(10)="10月"
    month_names(11)="11月"
    month_names(12)="12月"                                           'define month

    '设置每月的天数
    Dim days_in_month(12) As Integer                                  'define days
    days_in_month(1)=31
    days_in_month(2)=28
    days_in_month(3)=31
    days_in_month(4)=30
    days_in_month(5)=31
    days_in_month(6)=30
    days_in_month(7)=31
    days_in_month(8)=31
    days_in_month(9)=30
    days_in_month(10)=31
    days_in_month(11)=30
    days_in_month(12)=31

    If (((this_year Mod 4 = 0) And (this_year Mod 100<> 0)) Or (this_year Mod 400 = 0)) Then
       days_in_month(2) = 29                                ' it's a leap year so change # days in Feb in array
    Else
       days_in_month(2) = 28                                ' // not leap year - future use if multi year calendar built
    End If

    '设置星期名称
    Dim weeks_names(7) As String
    weeks_names(1) = "星期一"
    weeks_names(2) = "星期二"
    weeks_names(3) = "星期三"
    weeks_names(4) = "星期四"
    weeks_names(5) = "星期五"
    weeks_names(6) = "星期六"
    weeks_names(7) = "星期日"

    Dim dates As String               '用户选定的日期
    dates = ""
    Dim view As NotesView
    '取得日程管理记录
    If doc.SearchUser(0)<>"All" Then
       Set view=db.getview("v_personCaldate_Person")
    Else
       Set view=db.getview("v_personCaldate")
    End If


    '取得当天号数 是星期几
    Dim thedate As Variant
    thedate = Datenumber(this_year,this_month,this_days)
    theweekday = Cint(Weekday(thedate)) -1
    If theweekday = 0 Then
       theweekday = 7
    End If


    '设置当个星期起始天到结束天
    Dim theweekinfo() As String
    Redim theweekinfo(6,3)
    '星期一日期
    If this_days - theweekday < 0 Then
       If this_month-1 < 1 Then
        theweekinfo(0,0) = 12
        theweekinfo(0,3) = this_year-1
       Else
        theweekinfo(0,0) = this_month -1
       End If
       theweekinfo(0,1) = days_in_month(theweekinfo(0,0)) + this_days - theweekday + 1
       theweekinfo(0,2) = 1
       theweekinfo(0,3) = this_year
    Else
       theweekinfo(0,0) = this_month
       theweekinfo(0,1) = this_days - theweekday + 1
       theweekinfo(0,2) = 1
       theweekinfo(0,3) = this_year
    End If

    '星期二日期
    theweekinfo(1,1) = theweekinfo(0,1) + 1
    theweekinfo(1,2) = 2
    theweekinfo(1,3) = this_year
    If theweekinfo(1,1) > days_in_month(theweekinfo(0,0)) Then
       theweekinfo(1,1) = 1
       theweekinfo(1,0) = theweekinfo(0,0) + 1
       If theweekinfo(1,0) > 12 Then
        theweekinfo(1,0) = 1
        theweekinfo(1,3) = this_year+1
       End If
    Else
       theweekinfo(1,0) = theweekinfo(0,0)
    End If
    '星期三日期
    theweekinfo(2,1) = theweekinfo(1,1) + 1
    theweekinfo(2,2) = 3
    theweekinfo(2,3) = this_year
    If theweekinfo(2,1) > days_in_month(theweekinfo(1,0)) Then
       theweekinfo(2,1) = 1
       theweekinfo(2,0) = theweekinfo(1,0) + 1
       If theweekinfo(2,0) > 12 Then
        theweekinfo(2,0) = 1
        theweekinfo(2,3) = this_year+1
       End If
    Else
       theweekinfo(2,0) = theweekinfo(1,0)
    End If
    '星期四
    theweekinfo(3,1) = theweekinfo(2,1) + 1
    theweekinfo(3,2) = 4
    theweekinfo(3,3) = this_year
    If theweekinfo(3,1) > days_in_month(theweekinfo(2,0)) Then
       theweekinfo(3,1) = 1
       theweekinfo(3,0) = theweekinfo(2,0) + 1
       If theweekinfo(3,0) > 12 Then
        theweekinfo(3,0) = 1
        theweekinfo(3,3) = this_year+1
       End If
    Else
       theweekinfo(3,0) = theweekinfo(2,0)
    End If
    '星期五
    theweekinfo(4,1) = theweekinfo(3,1) + 1
    theweekinfo(4,2) = 5
    theweekinfo(4,3) = this_year
    If theweekinfo(4,1) > days_in_month(theweekinfo(3,0)) Then
       theweekinfo(4,1) = 1
       theweekinfo(4,0) = theweekinfo(3,0) + 1
       If theweekinfo(4,0) > 12 Then
        theweekinfo(4,0) = 1
        theweekinfo(4,3) = this_year+1
       End If
    Else
       theweekinfo(4,0) = theweekinfo(3,0)
    End If
    '星期六
    theweekinfo(5,1) = theweekinfo(4,1) + 1
    theweekinfo(5,2) = 6
    theweekinfo(5,3) = this_year
    If theweekinfo(5,1) > days_in_month(theweekinfo(4,0)) Then
       theweekinfo(5,1) = 1
       theweekinfo(5,0) = theweekinfo(4,0) + 1
       If theweekinfo(5,0) > 12 Then
        theweekinfo(5,0) = 1
        theweekinfo(5,3) = this_year+1
       End If
    Else
       theweekinfo(5,0) = theweekinfo(4,0)
    End If
    '星期日
    theweekinfo(6,1) = theweekinfo(5,1) + 1
    theweekinfo(6,2) = 7
    theweekinfo(6,3) = this_year
    If theweekinfo(6,1) > days_in_month(theweekinfo(5,0)) Then
       theweekinfo(6,1) = 1
       theweekinfo(6,0) = theweekinfo(5,0) + 1
       If theweekinfo(6,0) > 12 Then
        theweekinfo(6,0) = 1
        theweekinfo(6,3) = this_year+1
       End If
    Else
       theweekinfo(6,0) = theweekinfo(5,0)
    End If


    '添加内容并设置样式
    Dim th As String
    th = "<TABLE width=""100%"" style=""border:1px solid #000;border-collapse:collapse""><tr>"

    For i=0 To 5
       th = th & "<td width=""50%"" height=""200px"" style=""padding-top:0px;padding-left:0px;VERTICAL-ALIGN: top"">"
       th = th & "<table width=""100%"" style=""border-bottom:1px solid #000;border-right:1px solid #000;"">"
       th = th & "<tr><td height=30px width=""100%"" style=""font-size:18px;background-color:#f0f0f0;border-bottom:1px solid #000;"">"
      
       th = th & month_names(theweekinfo(i,0)) & theweekinfo(i,1) & "日 " & weeks_names(theweekinfo(i,2))
      
       th = th & "</td></tr>"
       th = th & "<tr><td height=200px width=""100%"" style=""VERTICAL-ALIGN: top"" "
      
       dates = Cstr(theweekinfo(i,3))
       If (theweekinfo(i,0) < 10) Then
        dates = dates + "-0" + theweekinfo(i,0)
       Else
        dates = dates + "-" + theweekinfo(i,0)
       End If
       If (theweekinfo(i,1) < 10) Then
        dates = dates + "-0" + theweekinfo(i,1)
       Else
        dates = dates + "-" + theweekinfo(i,1)
       End If
      
       th = th & "onMouseOver=""this.bgColor='#fafafa'"" onMouseOut=""this.bgColor='#ffffff'"" title='双击新增' ondblclick='AddNewInfo(""" & dates & """);'>"
      
       '取得当天的所有日程
       If Len(doc.SearchUser(0))=32 Then
        th = AddDocumentGroup(db,doc,dates,view,th)
       Else
        th = AddDocument(db,doc,dates,view,th)
       End If
      
       th = th & "</td></tr>"
       th = th & "</table>"
       th = th & "</td>"
       If i Mod 2 = 1 Then
        th = th & "</tr><tr>"
       End If
      
       If i=5 Then
        th = th & "<td width=""50%"" height=""150px"" style=""padding-top:0px;padding-left:0px;VERTICAL-ALIGN: top"">"
        th = th & "<table width=""100%"" style=""border-bottom:1px solid #000;border-right:1px solid #000;"">"
        th = th & "<tr><td height=30px width=""100%"" style=""font-size:18px;background-color:#f0f0f0;border-bottom:1px solid #000;"">"
       
        th = th & month_names(theweekinfo(6,0)) & theweekinfo(6,1) & "日 " & weeks_names(theweekinfo(6,2))
       
        th = th & "</td></tr>"
        th = th & "<tr><td height=150px width=""100%"" style=""VERTICAL-ALIGN: top"" "
       
        dates = Cstr(theweekinfo(i+1,3))
        If (theweekinfo(6,0) < 10) Then
         dates = dates + "-0" + theweekinfo(6,0)
        Else
         dates = dates + "-" + theweekinfo(6,0)
        End If
        If (theweekinfo(6,1) < 10) Then
         dates = dates + "-0" + theweekinfo(6,1)
        Else
         dates = dates + "-" + theweekinfo(6,1)
        End If
       
        th = th & "onMouseOver=""this.bgColor='#fafafa'"" onMouseOut=""this.bgColor='#ffffff'"" title='双击新增' ondblclick='AddNewInfo(""" & dates & """);'>"
        '取得当天的所有日程
        If Len(doc.SearchUser(0))=32 Then
         th = AddDocumentGroup(db,doc,dates,view,th)
        Else
         th = AddDocument(db,doc,dates,view,th)
        End If
       
        th = th & "</td></tr>"
        th = th & "</table>"
        th = th & "</td></tr>"
       End If
    Next


    th = th & "</table>"
    '清除域原来内容和添加内容
    Call F.clearrtf(doc,rtfname)
    Call F.appendhtmltortf(doc,rtfname,th)

    errhandle:
    F.ErrRaise("AppendTableHead")
    Exit Sub
    End Sub

    '****************************************************************
    '添加日程管理内容到指定日期
    '****************************************************************
    Function AddDocument(db As NotesDatabase,doc As notesdocument,dates As String,view As NotesView,thbefore As String) As String
    On Error Goto errhandle
    Dim dc As notesdocumentcollection
    Dim tempdoc As NotesDocument
    Dim key(0) As String
    Dim k As Integer
    Dim th As String
    th = ""
    Dim vc As NotesViewEntryCollection
    Dim entry As NotesViewEntry

    '根据日期和用户设置关键字
    If doc.SearchUser(0)<>"All" Then
       key(0) = dates + doc.SearchUser(0)
    Else
       key(0) = dates
    End If

    'Set dc=view.getalldocumentsbykey(key,True)
    Set vc = view.GetAllEntriesByKey(key)
    ''''''''''''''''''''''''''''''''''''''''''''
    If Not (vc Is Nothing) And vc.count<>0 Then
       For k=1 To vc.count
        'Set tempdoc = dc.GetNthDocument(k)
        Set entry = vc.GetNthEntry(k)
        Set tempdoc = entry.Document
       
        If tempdoc.Subject(0)<>"" Then
        
         Dim temptime As String
         temptime = ""
         If Format(tempdoc.starttimeday(0),"YYYY-MM-DD") =Format(dates,"YYYY-MM-DD") And Format(tempdoc.endtimeday(0),"YYYY-MM-DD") = Format(dates,"YYYY-MM-DD") Then
          temptime = temptime & tempdoc.starttimehour(0) & ":" & tempdoc.startminute(0) & "-" & tempdoc.endtimehour(0) & ":" & tempdoc.endminute(0)
         Elseif Format(dates,"YYYY-MM-DD") = Format(tempdoc.starttimeday(0),"YYYY-MM-DD") And Format(dates,"YYYY-MM-DD") <> Format(tempdoc.endtimeday(0),"YYYY-MM-DD") Then
          temptime = temptime & tempdoc.starttimehour(0) & ":" & tempdoc.startminute(0) & "至" & Format(tempdoc.endtimeday(0),"MM-DD")
         Elseif Format(dates,"YYYY-MM-DD") <> Format(tempdoc.starttimeday(0),"YYYY-MM-DD") And Format(dates,"YYYY-MM-DD") = Format(tempdoc.endtimeday(0),"YYYY-MM-DD") Then
          temptime = temptime & Format(tempdoc.starttimeday(0),"MM-DD") & "至" & tempdoc.endtimehour(0) & ":" & tempdoc.endminute(0)
         Elseif Format(dates,"YYYY-MM-DD") <> Format(tempdoc.starttimeday(0),"YYYY-MM-DD") And Format(dates,"YYYY-MM-DD") <> Format(tempdoc.endtimeday(0),"YYYY-MM-DD") Then
          temptime = temptime & "全天"
         End If
        
        
         th = th & "<font size=10 color='#000000'>"
         th = th & OpenHtml(db,tempdoc,"[" & temptime & "]" & tempdoc.Subject(0),k,doc)
        
         If tempdoc.Content(0)<>"" Then
          'If tempdoc.Creater(0)=doc.curuser(0) Then
           'th =th+ {<a href="javascript:openCenterWindow('}+doc.Sys_CURDB2(0) + "/fwrite/" + "?EditDocument"+{','600','600')">}+{"<img src=/oadata/e_personcal.nsf/vwicn082.gif>"</a>}
          th =th+ {"<img src=/oadata/e_personcal.nsf/vwicn082.gif>"}
         
          'Else
           'th =th+ {<a href="javascript:openCenterWindow('}+doc.Sys_CURDB2(0) + "/fwrite/" + "?OpenDocument"+{','600','600')">}+{"<img src=/oadata/e_personcal.nsf/vwicn082.gif>"</a>}
         
          'End If
         Else
         
         
          If tempdoc.Creater(0)=doc.curuser(0) Then
           th =th+ {<a href="javascript:openCenterWindow('}+doc.Sys_CURDB2(0) + "/fwrite/" + tempdoc.UniversalID + "?EditDocument"+{','600','600')">}+{</a>}
          Else  
           th =th+ {<a href="javascript:openCenterWindow('}+doc.Sys_CURDB2(0) + "/fwrite/" + tempdoc.UniversalID + "?OpenDocument"+{','600','600')">}+{</a>}
           'th=th+"0000"
          End If
         End If
        
    %REM
         If Format(tempdoc.starttimeday(0),"YYYY-MM-DD") =Format(dates,"YYYY-MM-DD") And Format(tempdoc.endtimeday(0),"YYYY-MM-DD") = Format(dates,"YYYY-MM-DD") Then
          th = th & tempdoc.starttimehour(0) & ":" & tempdoc.startminute(0) & "-" & tempdoc.endtimehour(0) & ":" & tempdoc.endminute(0) & "<BR>"
         Elseif Format(dates,"YYYY-MM-DD") = Format(tempdoc.starttimeday(0),"YYYY-MM-DD") And Format(dates,"YYYY-MM-DD") <> Format(tempdoc.endtimeday(0),"YYYY-MM-DD") Then
          th = th & tempdoc.starttimehour(0) & ":" & tempdoc.startminute(0) & "至" & Format(tempdoc.endtimeday(0),"MM-DD") & "<BR>"
         Elseif Format(dates,"YYYY-MM-DD") <> Format(tempdoc.starttimeday(0),"YYYY-MM-DD") And Format(dates,"YYYY-MM-DD") = Format(tempdoc.endtimeday(0),"YYYY-MM-DD") Then
          th = th & Format(tempdoc.starttimeday(0),"MM-DD") & "至" & tempdoc.endtimehour(0) & ":" & tempdoc.endminute(0)   & "<BR>"
         Elseif Format(dates,"YYYY-MM-DD") <> Format(tempdoc.starttimeday(0),"YYYY-MM-DD") And Format(dates,"YYYY-MM-DD") <> Format(tempdoc.endtimeday(0),"YYYY-MM-DD") Then
          th = th & "全天" & "<BR>"
         End If
    %ENDREM
        End If
       
       Next
       th =th & "</TD>"
    Else
       th=th & "</TD>"
    End If
    ''''''''''''''''''''''''''''''''''''''''''''

    th = thbefore & th
    AddDocument = th
    Exit Function
    errhandle:
    F.ErrRaise("AddDocument")
    Exit Function
    End Function

    '****************************************************************
    '为日程管理内容提供链接
    '****************************************************************
    Function OpenHtml(db As NotesDatabase,doc As NotesDocument,showtext As String, i As Integer,curdoc As NotesDocument) As String
    Dim tempstr As String
    '判断是否是当前用户的日程 如果是则链接到可编辑否则只是打开
    If doc.Creater(0)=curdoc.curuser(0) Then
       tempstr = "<a target=_blank class=""a1"" href='/" & F.getCurDBPath(db) & "Fwrite/" & doc.UniversalID & "?EditDocument' title="
       tempstr = tempstr & Showtext &">"&"&nbsp;"
    Else
       tempstr = "<a target=_blank class=""a1"" href='/" & F.getCurDBPath(db) & "Fwrite/" & doc.UniversalID & "?OpenDocument' title="
       tempstr = tempstr & Showtext &">"&"&nbsp;"
    End If

    'tempstr = "<a target=_blank class=""a1"" href='/" & F.getCurDBPath(db) & "Fwrite/" & doc.UniversalID & "?EditDocument' title="
    'tempstr = tempstr & Showtext &">"&"(" +Cstr(i) &")&nbsp;"

    'If doc.Creater(0)<>F.GetCurUser() Then
    ' tempstr = tempstr & "" & showtext & "[" & doc.CreaterShortName(0) & "]</a><br>"
    'Else
    ' tempstr = tempstr & "" & showtext & "</a><br>"
    'End If
    tempstr = tempstr & showtext &"</a><br>"

    OpenHtml = tempstr
    End Function

    Function AddDocumentGroup(db As NotesDatabase,doc As notesdocument,dates As String,view As NotesView,thbefore As String) As String
    On Error Goto errhandle
    Dim dc As notesdocumentcollection
    Dim tempdoc As NotesDocument
    Dim groupdoc As NotesDocument
    Dim key(0) As String
    Dim a As Integer
    Dim k As Integer
    Dim th As String
    th = ""

    If doc.SearchUser(0)<>"" Then
       Set groupdoc = db.GetDocumentByUNID(doc.SearchUser(0))
       If Not groupdoc Is Nothing Then
        For a=0 To Ubound(groupdoc.Members)
         If groupdoc.Members(a) <> "" Then
          key(0) = dates + groupdoc.Members(a)
          Set dc=view.getalldocumentsbykey(key,True)
                         ''''''''''''''''''''''''''''''''''''''''''''
          If Not (dc Is Nothing) And dc.count<>0 Then
           For k=1 To dc.count
            Set tempdoc = dc.GetNthDocument(k)
            If tempdoc.Subject(0)<>"" Then
             th = th & "<font size=3 color='#000000'>"
             th = th & OpenHtml(db,tempdoc,tempdoc.Subject(0),k,doc)
            
             If Format(tempdoc.starttimeday(0),"YYYY-MM-DD") =Format(dates,"YYYY-MM-DD") And Format(tempdoc.endtimeday(0),"YYYY-MM-DD") = Format(dates,"YYYY-MM-DD") Then
              th = th & tempdoc.starttimehour(0) & ":" & tempdoc.startminute(0) & "-" & tempdoc.endtimehour(0) & ":" & tempdoc.endminute(0) & "<BR>"
             Elseif Format(dates,"YYYY-MM-DD") = Format(tempdoc.starttimeday(0),"YYYY-MM-DD") And Format(dates,"YYYY-MM-DD") <> Format(tempdoc.endtimeday(0),"YYYY-MM-DD") Then
              th = th & tempdoc.starttimehour(0) & ":" & tempdoc.startminute(0) & "至" & Format(tempdoc.endtimeday(0),"MM-DD") & "<BR>"
             Elseif Format(dates,"YYYY-MM-DD") <> Format(tempdoc.starttimeday(0),"YYYY-MM-DD") And Format(dates,"YYYY-MM-DD") = Format(tempdoc.endtimeday(0),"YYYY-MM-DD") Then
              th = th & Format(tempdoc.starttimeday(0),"MM-DD") & "至" & tempdoc.endtimehour(0) & ":" & tempdoc.endminute(0)   & "<BR>"
             Elseif Format(dates,"YYYY-MM-DD") <> Format(tempdoc.starttimeday(0),"YYYY-MM-DD") And Format(dates,"YYYY-MM-DD") <> Format(tempdoc.endtimeday(0),"YYYY-MM-DD") Then
              th = th & "全天" & "<BR>"
             End If
            
            End If
           
           Next
          End If
                         ''''''''''''''''''''''''''''''''''''''''''''
         End If
        Next
       End If
    End If


    th=th & "</TD>"

    th = thbefore & th
    AddDocumentGroup = th

    Exit Function
    errhandle:
    F.ErrRaise("AddDocumentGroup")
    Exit Function
    End Function

    这个代理主要有好几个方法分别取得url参数,添加html代码,添加用户已建立的日程,添加链接这四个功能

  • 相关阅读:
    nginx和phpfpm保持长连接
    单件模式+打开窗体+窗体构造函数参数
    Java REST框架一览(转)
    什么原因成就了一位优秀的程序员?(转)
    使用 sqlRest 将数据库转换为 REST 风格的 Web 服务(转)
    浏览器插件之ActiveX开发系列(转载)
    Java JSON技术框架选型与实例(转)
    SQL参数绑定
    ab压力测试工具使用
    Jintegra使用注意事项
  • 原文地址:https://www.cnblogs.com/hannover/p/1906422.html
Copyright © 2020-2023  润新知