XMJMLR ;ISC-SF/GMB-List/Read messages in basket ;05/21/2002 06:46 ;;8.0;MailMan;;Jun 28, 2002 ; Replaces 1^XMAL0 (ISC-WASH/THM/CAP) LIST(XMDUZ,XMK,XMKN,XMDETAIL,XMABORT) ; List messages in basket ; XMDETAIL 0=Summary; 1=Detailed N XMKZ,XMLEN,XMFIRST,XMPAGE,XMPMAX,XMZOOM,XMINSTR,XMOPT,XMOX,XMORDER I XMDUZ=.5,XMK>999 S XMORDER=XMV("ORDER"),XMV("ORDER")=1 S XMINSTR("GOTO")=1 ; may go to another page D SETOPT^XMJMLR1(XMDUZ,XMK,.XMOPT,.XMOX) K ^TMP("XM",$J,".") S XMKZ="",(XMPAGE,XMZOOM)=0,XMPMAX=IOSL-3 D INIT^XMJML(XMDUZ,XMK,XMKN,XMDETAIL,.XMLEN,1) F D Q:XMABORT!'$D(^XMB(3.7,XMDUZ,2,XMK,1,"C")) . D DISPLAY(XMDUZ,XMDETAIL,XMK,XMKN,.XMKZ,.XMFIRST,.XMPAGE,.XMLEN,XMZOOM,XMPMAX) . D CHOOSE(XMDUZ,.XMK,.XMKZ,.XMFIRST,.XMPAGE,.XMLEN,.XMZOOM,.XMINSTR,.XMOPT,.XMOX,.XMABORT) K ^TMP("XM",$J,".") I $D(XMORDER) S XMV("ORDER")=XMORDER Q DISPLAY(XMDUZ,XMDETAIL,XMK,XMKN,XMKZ,XMFIRST,XMPAGE,XMLEN,XMZOOM,XMPMAX) ; N XMZ S XMFIRST(XMPAGE)=XMKZ D HEADER^XMJML(XMDETAIL,.XMLEN,$$HEADLINE^XMJML(XMDUZ,XMK,XMKN)) I XMZOOM D Q . F S XMKZ=$O(^TMP("XM",$J,".",XMKZ),XMV("ORDER")) Q:XMKZ="" D Q:$Y>XMPMAX . . D LISTMSG^XMJML(XMK,XMKN,XMKZ,$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ,"")),XMDETAIL,.XMLEN) F S XMKZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ),XMV("ORDER")) Q:XMKZ="" D Q:$Y>XMPMAX . S XMZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ,"")) . I '$D(^XMB(3.7,XMDUZ,2,XMK,1,XMZ,0)) D ADDITC^XMUT4A(XMDUZ,XMK,XMZ,XMKZ) . I '$D(^XMB(3.9,XMZ,0)) D ZAPIT^XMXMSGS2(XMDUZ,XMK,XMZ) Q . D LISTMSG^XMJML(XMK,XMKN,XMKZ,XMZ,XMDETAIL,.XMLEN) Q CHOOSE(XMDUZ,XMK,XMKZ,XMFIRST,XMPAGE,XMLEN,XMZOOM,XMINSTR,XMOPT,XMOX,XMABORT) ; N XMY,XMZ,XMMORE,XMHI,XMLO S XMMORE=$S(XMKZ="":0,'$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ),XMV("ORDER")):0,1:1) S XMLO=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C","")) S XMHI=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",""),-1) D XMDIR^XMJMLR1(XMDUZ,XMLO,XMHI,XMPAGE,XMMORE,"XM-U-BO-FULL SCREEN",.XMINSTR,.XMOPT,.XMOX,.XMY,.XMABORT) Q:XMABORT I '$D(XMY) S XMKZ=XMFIRST(XMPAGE) Q I XMY=""!($E(XMY)="+") D Q ; Page forward . I XMMORE D PFWD Q . I XMPAGE=0 S XMABORT=1 Q . D AGAIN(.XMABORT) Q:XMABORT . S XMPAGE=0 . S XMKZ=XMFIRST(XMPAGE) I $E(XMY)="." D Q ; (De)Select messages . D DODOT . I XMZOOM,'$D(^TMP("XM",$J,".")) D Z . S XMKZ=XMFIRST(XMPAGE) I XMY>0 D Q ; . N XMKZLAST . S XMKZLAST=XMKZ . S XMKZ=XMY . S XMZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ,"")) . I XMZ D . . I '$D(^XMB(3.7,XMDUZ,2,XMK,1,XMZ,0)) D ADDITC^XMUT4A(XMDUZ,XMK,XMZ,XMKZ) . . D READMSG(XMDUZ,XMK,XMKN,XMKZ,XMZ,XMZOOM) . . D FINDXMKZ(XMDUZ,XMK,.XMFIRST,.XMPAGE,XMKZLAST,XMKZ) . E D . . S XMZ=XMY . . I $D(^XMB(3.7,XMDUZ,2,XMK,1,XMZ,0)) D Q . . . S XMKZ=$P(^XMB(3.7,XMDUZ,2,XMK,1,XMZ,0),U,2) . . . I 'XMKZ D ADDITM^XMUT4A(XMDUZ,XMK,XMZ,.XMKZ) . . . D READMSG(XMDUZ,XMK,XMKN,XMKZ,XMZ,XMZOOM) . . . D FINDXMKZ(XMDUZ,XMK,.XMFIRST,.XMPAGE,XMKZLAST,XMKZ) . . I '$D(^XMB(3.9,XMZ,0)) D Q . . . W $C(7) . . . Q:XMZ>$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",""),-1) . . . S XMKZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMZ),XMV("ORDER")) . . . I 'XMKZ S XMKZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMZ),-XMV("ORDER")) . . . D FINDXMKZ(XMDUZ,XMK,.XMFIRST,.XMPAGE,XMKZLAST,XMKZ) . . N XMK,XMKN,XMOK . . S XMK=+$O(^XMB(3.7,"M",XMZ,XMDUZ,0)) . . I 'XMK D Q:'XMOK . . . N XMZREC . . . S XMZREC=^XMB(3.9,XMZ,0) . . . I $D(XMERR) K XMERR,^TMP("XMERR",$J) . . . S XMOK=$$ACCESS^XMXSEC(XMDUZ,XMZ,XMZREC) Q:XMOK . . . D FWD^XMJMLR1(XMDUZ,XMZ,XMZREC,1,.XMOK) . . S XMKN=$S(XMK:$P(^XMB(3.7,XMDUZ,2,XMK,0),U,1),1:$$EZBLD^DIALOG(34014)) ; * N/A * . . I XMK,'$D(^XMB(3.7,XMDUZ,2,XMK,1,XMZ,0)) D ADDITM^XMUT4A(XMDUZ,XMK,XMZ) . . D READMSG^XMJBM(XMDUZ,XMK,XMKN,XMZ) . S XMKZ=XMFIRST(XMPAGE) I XMY=0 D Q ; First page . S XMPAGE=0 . S XMKZ=XMFIRST(XMPAGE) I $E(XMY)="-" D Q ; Page back . N XMCNT . S XMCNT=$E(XMY,2,99) . S:XMCNT="" XMCNT=1 . S XMPAGE=XMPAGE-XMCNT . S:XMPAGE<0 XMPAGE=0 . S XMKZ=XMFIRST(XMPAGE) D @XMY S XMKZ=XMFIRST(XMPAGE) Q PFWD ; N XMCNT,XMPDEST S XMCNT=$E(XMY,2,99) S:XMCNT="" XMCNT=1 I XMCNT=1 S XMPAGE=XMPAGE+1 Q S XMPDEST=XMPAGE+XMCNT D FINDPAGE(.XMFIRST,.XMPAGE,XMKZ,XMPDEST) S XMKZ=XMFIRST(XMPAGE) Q FINDPAGE(XMFIRST,XMPAGE,XMKZ,XMPDEST) ; N XMO,I S XMO=$S(XMPDEST>XMPAGE:1,1:-1) F XMPAGE=XMPAGE+XMO:XMO S XMFIRST(XMPAGE)=XMKZ Q:XMPAGE=XMPDEST D Q:XMKZ="" . F I=1:1:XMPMAX S XMKZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ),XMO*XMV("ORDER")) Q:XMKZ="" I '$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMFIRST(XMPAGE)),XMO*XMV("ORDER")) S XMPAGE=XMPAGE-XMO Q Q FINDXMKZ(XMDUZ,XMK,XMFIRST,XMPAGE,XMKZLAST,XMKZF) ; Find the page with XMKZF on it Q:'$D(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZF)) I XMV("ORDER")=-1 D Q . I $S(XMFIRST(XMPAGE):XMFIRST(XMPAGE)>XMKZF,1:1),XMKZF'XMKZF!'XMPAGE . . ;S XMKZ=XMFIRST(XMPAGE)-1 . . ;F XMPAGE=XMPAGE-1:-1 D Q:XMFIRST(XMPAGE)>XMKZF . . ;. F I=1:1:XMPMAX S XMKZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ)) Q:XMKZ="" . . ;. S XMFIRST(XMPAGE)=$S(XMKZ:XMKZ+1,1:XMKZ) I XMFIRST(XMPAGE)XMKZLAST,1:1) Q N XMKZ,I I XMKZF>XMKZLAST D Q ; Go forward . S XMKZ=XMKZLAST . F XMPAGE=XMPAGE+1:1 D Q:XMKZ=XMKZF . . S XMFIRST(XMPAGE)=XMKZ . . F I=1:1:XMPMAX S XMKZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ)) Q:XMKZ=XMKZF E D ; Go back . F XMPAGE=XMPAGE-1:-1 Q:XMFIRST(XMPAGE)XMN!'XMKZ S:'$D(^TMP("XM",$J,".",XMKZ)) ^(XMKZ)="" . . F S XMKZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ)) Q:XMKZ>XMN!'XMKZ K:$D(^TMP("XM",$J,".",XMKZ)) ^(XMKZ) . I 'XMSTRIKE D Q . . I $D(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ)),'$D(^TMP("XM",$J,".",XMKZ)) S ^(XMKZ)="" . K:$D(^TMP("XM",$J,".",XMKZ)) ^(XMKZ) Q C ; Change the name of this basket D NAMEBSKT^XMJBU(XMDUZ,XMK,.XMKN) K XMLEN D INIT^XMJML(XMDUZ,XMK,XMKN,XMDETAIL,.XMLEN,1) Q CD ; Change Detail S XMDETAIL='XMDETAIL D INIT^XMJML(XMDUZ,XMK,XMKN,XMDETAIL,.XMLEN,1) Q D ; Delete messages D DELETE^XMJMOR(XMDUZ,XMK) D WAIT^XMXUTIL I XMZOOM,'$D(^TMP("XM",$J,".")) D Z Q F ; Forward messages D FORWARD^XMJMOR(XMDUZ,XMK) D WAIT^XMXUTIL Q FI ; Filter messages D FILTER^XMJMOR(XMDUZ,XMK) D WAIT^XMXUTIL Q H ; Headerless Print messages D PRINT^XMJMOR(XMDUZ,XMK,0) D WAIT^XMXUTIL Q L ; Later messages D LATER^XMJMOR(XMDUZ,XMK) D WAIT^XMXUTIL I XMZOOM,'$D(^TMP("XM",$J,".")) D Z Q N ; New message list D LISTONE^XMJMLN(XMDUZ,XMK,XMKN,"N0") D WAIT^XMXUTIL Q NT ; New Toggle messages D NEWTOGL^XMJMOR(XMDUZ,XMK) D WAIT^XMXUTIL Q O ; Opposite toggle N XMKZ S XMKZ=0 F S XMKZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ)) Q:'XMKZ D . I $D(^TMP("XM",$J,".",XMKZ)) K ^TMP("XM",$J,".",XMKZ) Q . S ^TMP("XM",$J,".",XMKZ)="" S XMPAGE=0 Q P ; Print messages D PRINT^XMJMOR(XMDUZ,XMK) D WAIT^XMXUTIL Q Q ; Query messages D FINDBSKT^XMJMF(XMDUZ,XMK,XMKN) Q Q1 ; ?string - search for messages in this basket whose subject contains string. N XMF S XMF("BSKT")=XMK S XMF("SUBJ")=XMY(0) D FIND1^XMJMFB(XMDUZ,.XMF,1) Q Q2 ; ??string - search for messages whose subject starts with string. D FIND^XMJMFA(XMDUZ,XMY(0),1) Q R ; Resequence messages D R^XMJBM S XMPAGE=0 K XMLEN,XMFIRST S XMFIRST(0)="" D INIT^XMJML(XMDUZ,XMK,XMKN,XMDETAIL,.XMLEN,1) D WAIT^XMXUTIL Q S ; Save messages D SAVE^XMJMOR(XMDUZ,XMK) D WAIT^XMXUTIL Q T ; Terminate messages D TERM^XMJMOR(XMDUZ,XMK) D WAIT^XMXUTIL I XMZOOM,'$D(^TMP("XM",$J,".")) D Z Q V ; Vaporize messages D VAPOR^XMJMOR(XMDUZ,XMK) D WAIT^XMXUTIL Q X ; Xmit priority toggle messages D XMTPRI^XMJMOR(XMDUZ,XMK) D WAIT^XMXUTIL Q Z ; Zoom toggle N I I XMZOOM D . S XMZOOM=0 . S I="" . F S I=$O(XMFIRST(0,I)) Q:I="" S XMFIRST(I)=XMFIRST(0,I) . S XMPAGE=XMPAGE(0) E D . S XMZOOM=1 . S I="" . F S I=$O(XMFIRST(I)) Q:I="" S XMFIRST(0,I)=XMFIRST(I) . S XMPAGE(0)=XMPAGE . S XMPAGE=0 Q