| 1 | XMJMLN ;ISC-SF/GB-List/Read new messages ;12/12/2001  08:53 | 
|---|
| 2 | ;;8.0;MailMan;;Jun 28, 2002 | 
|---|
| 3 | ; Replaces LIST,PRIO^XMA0A (ISC-WASH/CAP) | 
|---|
| 4 | LISTONE(XMDUZ,XMK,XMKN,XMTYPE) ; List new/priority messages in one basket | 
|---|
| 5 | ; XMTYPE   N0=New; N=Priority | 
|---|
| 6 | N XMKZ,XMZ,XMCNT,XMABORT,XMLEN,XMFIRST,XMPAGE,XMDETAIL,XMPMAX,XMKALL,XMIA,XMZOOM,XMMORE,XMCD,XMOPT,XMOX | 
|---|
| 7 | S XMIA=1 ; Interactive | 
|---|
| 8 | I '$D(^XMB(3.7,XMDUZ,XMTYPE,XMK)) D  Q | 
|---|
| 9 | . W !!,$$EZBLD^DIALOG($S(XMTYPE="N":34016,1:34015)) ; You have no new (priority) messages in this basket. | 
|---|
| 10 | K ^TMP("XM",$J,"MSG"),^TMP("XM",$J,".") | 
|---|
| 11 | S (XMKZ,XMZ)="",(XMPAGE,XMCNT,XMKALL,XMZOOM,XMCD,XMABORT)=0,(XMDETAIL,XMMORE)=1 | 
|---|
| 12 | S XMPMAX=IOSL-3 | 
|---|
| 13 | D SETOPT^XMJMLR1(XMDUZ,0,.XMOPT,.XMOX) | 
|---|
| 14 | S XMLEN("XMKZ")=$L($P(^XMB(3.7,XMDUZ,2,XMK,0),U,2)) | 
|---|
| 15 | D INIT^XMJML(XMDUZ,XMK,XMKN,XMDETAIL,.XMLEN,1) | 
|---|
| 16 | F  D  Q:XMABORT | 
|---|
| 17 | . I XMCD S XMCD=0,XMDETAIL='XMDETAIL D INIT^XMJML(XMDUZ,XMK,XMKN,XMDETAIL,.XMLEN,1) | 
|---|
| 18 | . D DISPLAY(XMDUZ,XMKALL,XMTYPE,XMDETAIL,XMK,XMKN,.XMKZ,.XMZ,.XMCNT,.XMFIRST,.XMPAGE,.XMMORE,.XMLEN,XMZOOM,XMPMAX) | 
|---|
| 19 | . D CHOOSE(XMDUZ,XMKALL,XMK,.XMKZ,.XMFIRST,.XMPAGE,XMMORE,.XMLEN,.XMZOOM,.XMOPT,.XMOX,"READMSG",.XMABORT) | 
|---|
| 20 | . S:'$D(^XMB(3.7,XMDUZ,XMTYPE,XMK)) XMABORT=1 | 
|---|
| 21 | K ^TMP("XM",$J,"MSG"),^TMP("XM",$J,".") | 
|---|
| 22 | Q | 
|---|
| 23 | LISTALL(XMDUZ,XMTYPE) ; List new/priority messages in all baskets | 
|---|
| 24 | ; XMTYPE   N0=New; N=Priority | 
|---|
| 25 | N XMK,XMKZ,XMZ,XMCNT,XMABORT,XMLEN,XMFIRST,XMPAGE,XMDETAIL,XMPMAX,XMKALL,XMIA,XMZOOM,XMMORE,XMCD,XMOPT,XMOX | 
|---|
| 26 | S XMIA=1 ; Interactive | 
|---|
| 27 | I '$D(^XMB(3.7,XMDUZ,XMTYPE)) D  Q | 
|---|
| 28 | . W !!,$$EZBLD^DIALOG($S(XMTYPE="N":34018,1:34017)) ; You have no new (priority) messages. | 
|---|
| 29 | K ^TMP("XM",$J,"MSG"),^TMP("XM",$J,".") | 
|---|
| 30 | S (XMKZ,XMZ)="",(XMPAGE,XMCNT,XMZOOM,XMCD,XMABORT)=0,(XMK,XMDETAIL,XMMORE,XMKALL)=1 | 
|---|
| 31 | S XMPMAX=IOSL-3 | 
|---|
| 32 | D SETOPT^XMJMLR1(XMDUZ,0,.XMOPT,.XMOX) | 
|---|
| 33 | D INIT(XMDUZ,XMTYPE,XMDETAIL,0,.XMLEN) | 
|---|
| 34 | F  D  Q:XMABORT | 
|---|
| 35 | . I XMCD S XMCD=0,XMDETAIL='XMDETAIL D INIT(XMDUZ,XMTYPE,XMDETAIL,0,.XMLEN) | 
|---|
| 36 | . D DISPLAY(XMDUZ,XMKALL,XMTYPE,XMDETAIL,.XMK,"",.XMKZ,.XMZ,.XMCNT,.XMFIRST,.XMPAGE,.XMMORE,.XMLEN,XMZOOM,XMPMAX) | 
|---|
| 37 | . D CHOOSE(XMDUZ,XMKALL,0,.XMKZ,.XMFIRST,.XMPAGE,XMMORE,.XMLEN,.XMZOOM,.XMOPT,.XMOX,"READMSG",.XMABORT) | 
|---|
| 38 | . S:'$D(^XMB(3.7,XMDUZ,XMTYPE)) XMABORT=1 | 
|---|
| 39 | K ^TMP("XM",$J,"MSG"),^TMP("XM",$J,".") | 
|---|
| 40 | Q | 
|---|
| 41 | INIT(XMDUZ,XMTYPE,XMDETAIL,XMACTUAL,XMLEN) ; | 
|---|
| 42 | ; XMACTUAL 1/0=do/do not use actual XMKZ | 
|---|
| 43 | N XMK,XMKN,XMKNMAX,XMKZL | 
|---|
| 44 | S XMLEN("XMKZ")=$S(XMACTUAL:0,1:$L($P(^XMB(3.7,XMDUZ,0),U,6))) | 
|---|
| 45 | S XMK=0,XMKNMAX="" | 
|---|
| 46 | F  S XMK=$O(^XMB(3.7,XMDUZ,XMTYPE,XMK)) Q:XMK=""  D | 
|---|
| 47 | . S XMKN=$P(^XMB(3.7,XMDUZ,2,XMK,0),U,1) | 
|---|
| 48 | . S:$L(XMKN)>$L(XMKNMAX) XMKNMAX=XMKN | 
|---|
| 49 | . Q:'XMACTUAL | 
|---|
| 50 | . S XMKZL=$L($O(^XMB(3.7,XMDUZ,2,XMK,1,"C",""),-1)) | 
|---|
| 51 | . S:XMKZL>XMLEN("XMKZ") XMLEN("XMKZ")=XMKZL | 
|---|
| 52 | D INIT^XMJML(XMDUZ,"",XMKNMAX,XMDETAIL,.XMLEN) | 
|---|
| 53 | Q | 
|---|
| 54 | DISPLAY(XMDUZ,XMKALL,XMTYPE,XMDETAIL,XMK,XMKN,XMKZ,XMZ,XMCNT,XMFIRST,XMPAGE,XMMORE,XMLEN,XMZOOM,XMPMAX) ; | 
|---|
| 55 | N XMREC,XMHDLINE | 
|---|
| 56 | S XMFIRST(XMPAGE)=XMKZ | 
|---|
| 57 | S XMHDLINE=$$HEADLINE(XMDUZ,XMKALL,XMK,XMKN,XMTYPE) | 
|---|
| 58 | D HEADER^XMJML(XMDETAIL,.XMLEN,XMHDLINE) | 
|---|
| 59 | I XMZOOM D  Q | 
|---|
| 60 | . F  S XMKZ=$O(^TMP("XM",$J,".",XMKZ)) Q:XMKZ=""  D  Q:$Y>XMPMAX | 
|---|
| 61 | . . S XMREC=^TMP("XM",$J,"MSG",XMKZ) | 
|---|
| 62 | . . D LISTMSG^XMJML($P(XMREC,U,1),$P(XMREC,U,2),XMKZ,$P(XMREC,U,3),XMDETAIL,.XMLEN) | 
|---|
| 63 | F  S XMKZ=$O(^TMP("XM",$J,"MSG",XMKZ)) Q:XMKZ=""  D  Q:$Y>XMPMAX | 
|---|
| 64 | . S XMREC=^TMP("XM",$J,"MSG",XMKZ) | 
|---|
| 65 | . D LISTMSG^XMJML($P(XMREC,U,1),$P(XMREC,U,2),XMKZ,$P(XMREC,U,3),XMDETAIL,.XMLEN) | 
|---|
| 66 | Q:$Y>XMPMAX!'XMMORE | 
|---|
| 67 | I XMKALL D | 
|---|
| 68 | . S XMK=XMK-.01 | 
|---|
| 69 | . F  S XMK=$O(^XMB(3.7,XMDUZ,XMTYPE,XMK)) Q:XMK=""  D  Q:$Y>XMPMAX | 
|---|
| 70 | . . S XMKN=$P(^XMB(3.7,XMDUZ,2,XMK,0),U) | 
|---|
| 71 | . . D LISTBSKT(XMDUZ,XMTYPE,XMDETAIL,XMK,XMKN,.XMZ,.XMCNT,.XMLEN,XMPMAX) | 
|---|
| 72 | . S XMMORE=$S('XMK:0,$O(^XMB(3.7,XMDUZ,XMTYPE,XMK)):1,XMZ="":0,$O(^XMB(3.7,XMDUZ,XMTYPE,XMK,XMZ),XMV("ORDER")):1,1:0) | 
|---|
| 73 | E  D | 
|---|
| 74 | . D LISTBSKT(XMDUZ,XMTYPE,XMDETAIL,XMK,XMKN,.XMZ,.XMCNT,.XMLEN,XMPMAX) | 
|---|
| 75 | . S XMMORE=$S(XMZ="":0,$O(^XMB(3.7,XMDUZ,XMTYPE,XMK,XMZ),XMV("ORDER")):1,1:0) | 
|---|
| 76 | S XMKZ=XMCNT | 
|---|
| 77 | Q | 
|---|
| 78 | HEADLINE(XMDUZ,XMKALL,XMK,XMKN,XMTYPE) ; | 
|---|
| 79 | N XMDIALOG,XMPARM | 
|---|
| 80 | I XMTYPE="N0" D | 
|---|
| 81 | . I XMKALL S XMDIALOG=34022,XMPARM(1)=$P(^XMB(3.7,XMDUZ,0),U,6) Q | 
|---|
| 82 | . S XMDIALOG=34024,XMPARM(1)=$P(^XMB(3.7,XMDUZ,2,XMK,0),U,2),XMPARM(3)=XMKN | 
|---|
| 83 | E  D | 
|---|
| 84 | . I XMKALL S XMDIALOG=34023,XMPARM(2)=$$TPMSGCT^XMXUTIL(XMDUZ) Q | 
|---|
| 85 | . S XMDIALOG=34024,XMPARM(2)=$$BPMSGCT^XMXUTIL(XMDUZ,XMK),XMPARM(3)=XMKN | 
|---|
| 86 | Q $$EZBLD^DIALOG(XMDIALOG,.XMPARM) | 
|---|
| 87 | LISTBSKT(XMDUZ,XMTYPE,XMDETAIL,XMK,XMKN,XMZ,XMCNT,XMLEN,XMPMAX) ; | 
|---|
| 88 | F  S XMZ=$O(^XMB(3.7,XMDUZ,XMTYPE,XMK,XMZ),XMV("ORDER")) Q:XMZ=""  D  Q:$Y>XMPMAX | 
|---|
| 89 | . I '$D(^XMB(3.7,XMDUZ,2,XMK,1,XMZ,0)) D ADDITN^XMUT4A(XMDUZ,XMTYPE,XMK,XMZ) | 
|---|
| 90 | . I '$D(^XMB(3.9,XMZ,0)) D ZAPIT^XMXMSGS2(XMDUZ,XMK,XMZ) Q | 
|---|
| 91 | . S XMCNT=XMCNT+1 | 
|---|
| 92 | . S ^TMP("XM",$J,"MSG",XMCNT)=XMK_U_XMKN_U_XMZ | 
|---|
| 93 | . D LISTMSG^XMJML(XMK,XMKN,XMCNT,XMZ,XMDETAIL,.XMLEN) | 
|---|
| 94 | Q | 
|---|
| 95 | CHOOSE(XMDUZ,XMKALL,XMK,XMKZ,XMFIRST,XMPAGE,XMMORE,XMLEN,XMZOOM,XMOPT,XMOX,XMREAD,XMABORT) ; | 
|---|
| 96 | N XMY,XMHI,XMLO | 
|---|
| 97 | I XMZOOM D | 
|---|
| 98 | . S XMMORE=$S(XMKZ="":0,1:1) | 
|---|
| 99 | E  I $O(XMFIRST(XMPAGE)),XMKZ,$O(^TMP("XM",$J,"MSG",XMKZ)) D | 
|---|
| 100 | . S XMMORE=1 | 
|---|
| 101 | . S XMFIRST(XMPAGE+1)=XMKZ | 
|---|
| 102 | S XMLO=$O(^TMP("XM",$J,"MSG","")) | 
|---|
| 103 | S XMHI=$O(^TMP("XM",$J,"MSG",""),-1) | 
|---|
| 104 | D XMDIR^XMJMLR1(XMDUZ,XMLO,XMHI,XMPAGE,XMMORE,"XM-U-BO-FULL SCREEN LIST","",.XMOPT,.XMOX,.XMY,.XMABORT) Q:XMABORT | 
|---|
| 105 | I '$D(XMY) S XMKZ=XMFIRST(XMPAGE) Q | 
|---|
| 106 | I XMY=""!($E(XMY)="+") D  Q  ; Next page | 
|---|
| 107 | . I XMMORE S XMPAGE=XMPAGE+1 Q | 
|---|
| 108 | . I XMPAGE=0 S XMABORT=1 Q | 
|---|
| 109 | . D AGAIN^XMJMLR(.XMABORT) Q:XMABORT | 
|---|
| 110 | . S XMPAGE=0 | 
|---|
| 111 | . S XMKZ=XMFIRST(XMPAGE) | 
|---|
| 112 | I $E(XMY)="." D  Q  ; (De)Select messages | 
|---|
| 113 | . D DODOT | 
|---|
| 114 | . I XMZOOM,'$D(^TMP("XM",$J,".")) D Z | 
|---|
| 115 | . S XMKZ=XMFIRST(XMPAGE) | 
|---|
| 116 | I XMY>0 D  Q | 
|---|
| 117 | . N XMREC | 
|---|
| 118 | . S XMREC=$G(^TMP("XM",$J,"MSG",XMY)) | 
|---|
| 119 | . I XMREC="" D | 
|---|
| 120 | . . W $C(7) | 
|---|
| 121 | . E  D | 
|---|
| 122 | . . N XMKZ | 
|---|
| 123 | . . S XMKZ=XMY | 
|---|
| 124 | . . D @XMREAD | 
|---|
| 125 | . . I XMZOOM,'$D(^TMP("XM",$J,".")) D Z | 
|---|
| 126 | . S XMKZ=XMFIRST(XMPAGE) | 
|---|
| 127 | I XMY=0 D  Q  ; First page | 
|---|
| 128 | . S XMPAGE=0 | 
|---|
| 129 | . S XMKZ=XMFIRST(XMPAGE) | 
|---|
| 130 | I $E(XMY)="-" D  Q  ; Previous page | 
|---|
| 131 | . S:XMPAGE>0 XMPAGE=XMPAGE-1 | 
|---|
| 132 | . S XMKZ=XMFIRST(XMPAGE) | 
|---|
| 133 | D @XMY | 
|---|
| 134 | S XMKZ=XMFIRST(XMPAGE) | 
|---|
| 135 | Q | 
|---|
| 136 | READMSG ; (XMDUZ,XMKZ,XMREC,XMTYPE) <- needed! | 
|---|
| 137 | N XMK,XMKN,XMZ | 
|---|
| 138 | S XMK=$P(XMREC,U,1),XMKN=$P(XMREC,U,2),XMZ=$P(XMREC,U,3) | 
|---|
| 139 | I XMDUZ'=DUZ,'$$SURRACC^XMXSEC(XMDUZ,"",XMZ,$G(^XMB(3.9,XMZ,0))) D  Q  ; "read" | 
|---|
| 140 | . D SHOW^XMJERR | 
|---|
| 141 | . D WAIT^XMXUTIL | 
|---|
| 142 | D READNEW^XMJBN(XMDUZ,XMK,XMKN,XMZ) | 
|---|
| 143 | Q:$D(^XMB(3.7,XMDUZ,XMTYPE,XMK,XMZ)) | 
|---|
| 144 | K ^TMP("XM",$J,"MSG",XMKZ) | 
|---|
| 145 | K:$D(^TMP("XM",$J,".",XMKZ)) ^TMP("XM",$J,".",XMKZ) | 
|---|
| 146 | Q | 
|---|
| 147 | DODOT ; | 
|---|
| 148 | N I,XMSTRIKE,XM1,XMN,XMKZ | 
|---|
| 149 | I $E(XMY,2)="-" S XMSTRIKE=1,XMY=$E(XMY,3,999) | 
|---|
| 150 | E  S XMSTRIKE=0,XMY=$E(XMY,2,999) | 
|---|
| 151 | I XMY="*" D  Q | 
|---|
| 152 | . I XMSTRIKE K ^TMP("XM",$J,".") Q | 
|---|
| 153 | . S XMKZ="" | 
|---|
| 154 | . F  S XMKZ=$O(^TMP("XM",$J,"MSG",XMKZ)) Q:'XMKZ  S ^TMP("XM",$J,".",XMKZ)="" | 
|---|
| 155 | F I=1:1:$L(XMY,",") D | 
|---|
| 156 | . S XMKZ=$P(XMY,",",I) | 
|---|
| 157 | . I XMKZ["-" D  Q | 
|---|
| 158 | . . S XM1=$P(XMKZ,"-") | 
|---|
| 159 | . . S XMN=$P(XMKZ,"-",2) S:XMN="" XMN=XMHI | 
|---|
| 160 | . . S XMKZ=XM1-.1 | 
|---|
| 161 | . . I 'XMSTRIKE D  Q | 
|---|
| 162 | . . . F  S XMKZ=$O(^TMP("XM",$J,"MSG",XMKZ)) Q:XMKZ>XMN!'XMKZ  D | 
|---|
| 163 | . . . . S:'$D(^TMP("XM",$J,".",XMKZ)) ^TMP("XM",$J,".",XMKZ)="" | 
|---|
| 164 | . . F  S XMKZ=$O(^TMP("XM",$J,".",XMKZ)) Q:XMKZ>XMN!'XMKZ  K ^TMP("XM",$J,".",XMKZ) | 
|---|
| 165 | . I 'XMSTRIKE D  Q | 
|---|
| 166 | . . I $D(^TMP("XM",$J,"MSG",XMKZ)),'$D(^TMP("XM",$J,".",XMKZ)) S ^TMP("XM",$J,".",XMKZ)="" | 
|---|
| 167 | . I $D(^TMP("XM",$J,".",XMKZ)) K ^TMP("XM",$J,".",XMKZ) | 
|---|
| 168 | Q | 
|---|
| 169 | CD ; Change Detail | 
|---|
| 170 | S XMCD=1 | 
|---|
| 171 | Q | 
|---|
| 172 | D ; Delete messages | 
|---|
| 173 | D DELETE^XMJMORX(XMDUZ,XMKALL,XMK) | 
|---|
| 174 | D WAIT^XMXUTIL | 
|---|
| 175 | I XMZOOM,'$D(^TMP("XM",$J,".")) D Z | 
|---|
| 176 | Q | 
|---|
| 177 | F ; Forward messages | 
|---|
| 178 | D FORWARD^XMJMORX(XMDUZ,XMKALL,XMK) | 
|---|
| 179 | D WAIT^XMXUTIL | 
|---|
| 180 | Q | 
|---|
| 181 | FI ; Filter messages | 
|---|
| 182 | D FILTER^XMJMORX(XMDUZ,XMKALL,XMK) | 
|---|
| 183 | D WAIT^XMXUTIL | 
|---|
| 184 | Q | 
|---|
| 185 | H ; Headerless Print messages | 
|---|
| 186 | D PRINT^XMJMORX(XMDUZ,0) | 
|---|
| 187 | D WAIT^XMXUTIL | 
|---|
| 188 | Q | 
|---|
| 189 | L ; Later messages | 
|---|
| 190 | D LATER^XMJMORX(XMDUZ,XMKALL,XMK) | 
|---|
| 191 | D WAIT^XMXUTIL | 
|---|
| 192 | Q | 
|---|
| 193 | NT ; New Toggle messages | 
|---|
| 194 | D NEWTOGL^XMJMORX(XMDUZ,XMKALL,XMK) | 
|---|
| 195 | D WAIT^XMXUTIL | 
|---|
| 196 | Q | 
|---|
| 197 | O ; Opposite toggle | 
|---|
| 198 | N XMKZ | 
|---|
| 199 | S XMKZ=0 | 
|---|
| 200 | F  S XMKZ=$O(^TMP("XM",$J,"MSG",XMKZ)) Q:'XMKZ  D | 
|---|
| 201 | . I $D(^TMP("XM",$J,".",XMKZ)) K ^TMP("XM",$J,".",XMKZ) Q | 
|---|
| 202 | . S ^TMP("XM",$J,".",XMKZ)="" | 
|---|
| 203 | S XMPAGE=0 | 
|---|
| 204 | Q | 
|---|
| 205 | P ; Print messages | 
|---|
| 206 | D PRINT^XMJMORX(XMDUZ,1) | 
|---|
| 207 | D WAIT^XMXUTIL | 
|---|
| 208 | Q | 
|---|
| 209 | S ; Save messages | 
|---|
| 210 | D SAVE^XMJMORX(XMDUZ,XMKALL,XMK) | 
|---|
| 211 | D WAIT^XMXUTIL | 
|---|
| 212 | I XMZOOM,'$D(^TMP("XM",$J,".")) D Z | 
|---|
| 213 | Q | 
|---|
| 214 | T ; Terminate messages | 
|---|
| 215 | D TERM^XMJMORX(XMDUZ,XMKALL,XMK) | 
|---|
| 216 | D WAIT^XMXUTIL | 
|---|
| 217 | I XMZOOM,'$D(^TMP("XM",$J,".")) D Z | 
|---|
| 218 | Q | 
|---|
| 219 | V ; Vaporize messages | 
|---|
| 220 | D VAPOR^XMJMORX(XMDUZ,XMKALL,XMK) | 
|---|
| 221 | D WAIT^XMXUTIL | 
|---|
| 222 | Q | 
|---|
| 223 | X ; Xmit Priority Toggle messages (for Postmaster only) | 
|---|
| 224 | D XMTPRI^XMJMOR(XMDUZ,XMK) | 
|---|
| 225 | D WAIT^XMXUTIL | 
|---|
| 226 | Q | 
|---|
| 227 | Z ; Zoom toggle | 
|---|
| 228 | N I | 
|---|
| 229 | I XMZOOM D | 
|---|
| 230 | . S XMZOOM=0 | 
|---|
| 231 | . S I="" | 
|---|
| 232 | . F  S I=$O(XMFIRST(0,I)) Q:I=""  S XMFIRST(I)=XMFIRST(0,I) | 
|---|
| 233 | . S XMPAGE=XMPAGE(0) | 
|---|
| 234 | E  D | 
|---|
| 235 | . S XMZOOM=1 | 
|---|
| 236 | . S I="" | 
|---|
| 237 | . F  S I=$O(XMFIRST(I)) Q:I=""  S XMFIRST(0,I)=XMFIRST(I) | 
|---|
| 238 | . S XMPAGE(0)=XMPAGE | 
|---|
| 239 | . S XMPAGE=0 | 
|---|
| 240 | Q | 
|---|