| 1 | XMJBM ;ISC-SF/GMB-Manage Mail in Mailbox ;05/23/2002  11:35 | 
|---|
| 2 | ;;8.0;MailMan;;Jun 28, 2002 | 
|---|
| 3 | ; Replaces ^XMA0,^XMA01 (ISC-WASH/CAP/THM) | 
|---|
| 4 | ; Entry points used by MailMan options (not covered by DBIA): | 
|---|
| 5 | ; MANAGE   XMREAD | 
|---|
| 6 | MANAGE ; Manage existing mail in your Mailbox | 
|---|
| 7 | N XMABORT,XMK,XMKN,XMRDR | 
|---|
| 8 | S XMABORT=0 | 
|---|
| 9 | D INIT^XMJBM1(.XMDUZ,.XMRDR,.XMABORT) Q:XMABORT | 
|---|
| 10 | F  D ASKBSKT^XMJBM1(XMDUZ,XMRDR,.XMK,.XMKN,.XMABORT) Q:XMABORT  D  Q:XMABORT | 
|---|
| 11 | . D:XMRDR="C" CLASSIC(XMDUZ,XMK,XMKN,.XMABORT) ; Classic Reader | 
|---|
| 12 | . D:XMRDR="D" LIST^XMJMLR(XMDUZ,XMK,.XMKN,1,.XMABORT) ; Full Screen Detail | 
|---|
| 13 | . D:XMRDR="S" LIST^XMJMLR(XMDUZ,XMK,.XMKN,0,.XMABORT) ; Full Screen Summary | 
|---|
| 14 | . I XMABORT,XMDUZ=.6 S XMABORT=0 | 
|---|
| 15 | . I '$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",0)) D NOMSGS^XMJBM1(XMDUZ,XMK,XMKN) | 
|---|
| 16 | Q | 
|---|
| 17 | CLASSIC(XMDUZ,XMK,XMKN,XMABORT) ; Read Message | 
|---|
| 18 | N XMFIRST,XMLAST,XMZ,XMNEXT,XMKZ,XMORDER,XMPARM | 
|---|
| 19 | I XMDUZ=.5,XMK>999 S XMORDER=XMV("ORDER"),XMV("ORDER")=1 | 
|---|
| 20 | S XMKZ="" | 
|---|
| 21 | F  D  Q:XMABORT | 
|---|
| 22 | . F  S XMKZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ),XMV("ORDER")) Q:'XMKZ  Q:XMDUZ=DUZ  Q:'$$SURRCONF^XMXSEC(XMDUZ,$O(^(XMKZ,""))) | 
|---|
| 23 | . I XMKZ="" D  Q:XMABORT | 
|---|
| 24 | . . F  S XMKZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ),XMV("ORDER")) Q:'XMKZ  Q:XMDUZ=DUZ  Q:'$$SURRCONF^XMXSEC(XMDUZ,$O(^(XMKZ,""))) | 
|---|
| 25 | . . I XMKZ D AGAIN^XMJMLR(.XMABORT) Q | 
|---|
| 26 | . . S XMABORT=1 | 
|---|
| 27 | . . Q:'$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",0)) | 
|---|
| 28 | . . N XMTEXT | 
|---|
| 29 | . . W ! | 
|---|
| 30 | . . D BLD^DIALOG(34030.9,"","","XMTEXT","F") | 
|---|
| 31 | . . ;All of the messages in this basket are confidential. | 
|---|
| 32 | . . ;Surrogates may not read confidential messages. | 
|---|
| 33 | . . ;Use one of the full screen readers to see a list of the messages. | 
|---|
| 34 | . . D MSG^DIALOG("WM","","","","XMTEXT") | 
|---|
| 35 | . S XMFIRST=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C","")) | 
|---|
| 36 | . S XMLAST=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",""),-1) | 
|---|
| 37 | . ; have the user pick from first to last, or any xmz | 
|---|
| 38 | . N XMY,XMOPT,XMOX,XMPREVU | 
|---|
| 39 | . D SETCMD(XMDUZ,XMK,.XMOPT,.XMOX) | 
|---|
| 40 | . S:XMV("PREVU") XMPREVU=$$PREVU(XMDUZ,XMK,XMKN,XMKZ) | 
|---|
| 41 | . S XMNEXT=0 | 
|---|
| 42 | . F  D  Q:XMNEXT!XMABORT | 
|---|
| 43 | . . W ! W:XMV("PREVU") !,XMPREVU | 
|---|
| 44 | . . S XMPARM(1)=XMKN,XMPARM(2)=XMKZ | 
|---|
| 45 | . . W !,$$EZBLD^DIALOG(34030,.XMPARM) ; XMKN," Basket Message: ",XMKZ,"// " | 
|---|
| 46 | . . R XMY:DTIME I '$T S XMABORT=1 Q | 
|---|
| 47 | . . I XMY[U S XMABORT=1 Q | 
|---|
| 48 | . . I XMY="" S XMY=XMKZ D NUMBER Q | 
|---|
| 49 | . . I XMY?.N D NUMBER Q | 
|---|
| 50 | . . I $E(XMY)="?" D QUESTION Q | 
|---|
| 51 | . . S XMY=$$COMMAND^XMJDIR(.XMOPT,.XMOX,XMY) | 
|---|
| 52 | . . I XMY=-1 D HELPSCR Q | 
|---|
| 53 | . . I $D(XMOPT(XMY,"?")) D SHOWERR^XMJDIR(.XMOPT,.XMY) Q | 
|---|
| 54 | . . D @XMY | 
|---|
| 55 | . . S:'$D(^XMB(3.7,XMDUZ,2,XMK,1,"C",+XMKZ)) XMNEXT=1 | 
|---|
| 56 | I $D(XMORDER) S XMV("ORDER")=XMORDER | 
|---|
| 57 | Q | 
|---|
| 58 | PREVU(XMDUZ,XMK,XMKN,XMKZ) ; | 
|---|
| 59 | Q:XMKZ="" "" | 
|---|
| 60 | N XMZ,XMZREC,XMSUBJ,XMFROM,XMLEN,XMSL,XMFL,XMPARM | 
|---|
| 61 | S XMZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ,"")) | 
|---|
| 62 | I '$D(^XMB(3.7,XMDUZ,2,XMK,1,XMZ,0)) D ADDITC^XMUT4A(XMDUZ,XMK,XMZ,XMKZ) | 
|---|
| 63 | S XMZREC=$G(^XMB(3.9,XMZ,0)) | 
|---|
| 64 | S XMSUBJ=$$SUBJ^XMXUTIL2(XMZREC) | 
|---|
| 65 | S XMFROM=$$NAME^XMXUTIL($P(XMZREC,U,2)) | 
|---|
| 66 | S XMSL=$L(XMSUBJ) | 
|---|
| 67 | S XMFL=$L(XMFROM) | 
|---|
| 68 | S XMLEN=64 | 
|---|
| 69 | I XMSL+XMFL>XMLEN D | 
|---|
| 70 | . I XMSL<36 S XMFROM=$E(XMFROM,1,XMLEN-XMSL) Q | 
|---|
| 71 | . I XMFL<26 S XMSUBJ=$E(XMSUBJ,1,XMLEN-XMFL) Q | 
|---|
| 72 | . S XMSL=XMSL-(XMSL+XMFL-XMLEN\2) | 
|---|
| 73 | . S XMSUBJ=$E(XMSUBJ,1,XMSL) | 
|---|
| 74 | . S XMFROM=$E(XMFROM,1,XMLEN-XMSL) | 
|---|
| 75 | S XMPARM(1)=XMSUBJ,XMPARM(2)=XMFROM | 
|---|
| 76 | Q $$EZBLD^DIALOG(34031,.XMPARM) ; "Subj: "_XMSUBJ_"   From: "_XMFROM | 
|---|
| 77 | SETCMD(XMDUZ,XMK,XMOPT,XMOX) ; | 
|---|
| 78 | D OPTGRP^XMXSEC1(XMDUZ,XMK,.XMOPT,.XMOX,1) | 
|---|
| 79 | I XMDUZ=.5,XMK>999 Q | 
|---|
| 80 | D SET^XMXSEC1("I",37241,.XMOPT,.XMOX) ; Ignore this message | 
|---|
| 81 | Q | 
|---|
| 82 | NUMBER ; | 
|---|
| 83 | I $L(XMY)>25 W $C(7),"?" Q | 
|---|
| 84 | I XMY<XMFIRST D  Q | 
|---|
| 85 | . S XMKZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C","")) | 
|---|
| 86 | . S:XMV("PREVU") XMPREVU=$$PREVU(XMDUZ,XMK,XMKN,XMKZ) | 
|---|
| 87 | . W $C(7),"?" | 
|---|
| 88 | I $D(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMY)) D  Q | 
|---|
| 89 | . S XMKZ=XMY | 
|---|
| 90 | . S XMZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ,"")) | 
|---|
| 91 | . I '$D(^XMB(3.7,XMDUZ,2,XMK,1,XMZ,0)) D ADDITC^XMUT4A(XMDUZ,XMK,XMZ,XMKZ) | 
|---|
| 92 | . D READMSG(XMDUZ,XMK,XMKN,XMZ) | 
|---|
| 93 | . S XMNEXT=1 | 
|---|
| 94 | I XMFIRST'>XMY,XMY'>XMLAST D  Q | 
|---|
| 95 | . S XMKZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMY),XMV("ORDER")) | 
|---|
| 96 | . S:XMV("PREVU") XMPREVU=$$PREVU(XMDUZ,XMK,XMKN,XMKZ) | 
|---|
| 97 | . W $C(7),"?" | 
|---|
| 98 | I $D(^XMB(3.9,XMY,0)) D NUMBERZ Q | 
|---|
| 99 | I XMY>XMLAST D  Q | 
|---|
| 100 | . S XMKZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",""),-1) | 
|---|
| 101 | . S:XMV("PREVU") XMPREVU=$$PREVU(XMDUZ,XMK,XMKN,XMKZ) | 
|---|
| 102 | . W $C(7),"?" | 
|---|
| 103 | W $C(7),"?" | 
|---|
| 104 | Q | 
|---|
| 105 | NUMBERZ ; | 
|---|
| 106 | I $D(^XMB(3.7,"M",XMY,XMDUZ)) D  Q | 
|---|
| 107 | . S XMZ=XMY | 
|---|
| 108 | . I '$D(^XMB(3.7,XMDUZ,2,XMK,1,XMZ)) D | 
|---|
| 109 | . . ; It's in another basket | 
|---|
| 110 | . . S XMK=$O(^XMB(3.7,"M",XMZ,XMDUZ,"")) | 
|---|
| 111 | . . S XMKN=$P(^XMB(3.7,XMDUZ,2,XMK,0),U,1) | 
|---|
| 112 | . S XMKZ=$P($G(^XMB(3.7,XMDUZ,2,XMK,1,XMZ,0)),U,2) | 
|---|
| 113 | . I 'XMKZ D ADDITM^XMUT4A(XMDUZ,XMK,XMZ,.XMKZ) | 
|---|
| 114 | . D READMSG(XMDUZ,XMK,XMKN,XMZ) | 
|---|
| 115 | . S XMNEXT=1 | 
|---|
| 116 | I $D(^XMB(3.9,XMY,0)) D  Q | 
|---|
| 117 | . N XMOK,XMZREC | 
|---|
| 118 | . S XMZ=XMY,XMZREC=^XMB(3.9,XMZ,0) | 
|---|
| 119 | . I $D(XMERR) K XMERR,^TMP("XMERR",$J) | 
|---|
| 120 | . I '$$ACCESS^XMXSEC(XMDUZ,XMZ,XMZREC) D  Q:'XMOK | 
|---|
| 121 | . . W "?" | 
|---|
| 122 | . . D FWD^XMJMLR1(XMDUZ,XMZ,XMZREC,0,.XMOK) | 
|---|
| 123 | . D PUTMSG^XMXMSGS2(XMDUZ,XMK,XMKN,XMZ) ; User is a recipient, so save to user's basket | 
|---|
| 124 | . D READMSG(XMDUZ,XMK,XMKN,XMZ) | 
|---|
| 125 | . S XMNEXT=1 | 
|---|
| 126 | Q | 
|---|
| 127 | QUESTION ; | 
|---|
| 128 | I XMY="?" D LIST^XMJML(XMDUZ,XMK,XMKN,XMKZ,0) Q | 
|---|
| 129 | I XMY="??" D LIST^XMJML(XMDUZ,XMK,XMKN,XMKZ,1) Q | 
|---|
| 130 | I XMY="???" D HELPSCR Q | 
|---|
| 131 | I XMY?4."?"!("?HELP"[$$UP^XLFSTR(XMY)) D  Q | 
|---|
| 132 | . N XQH | 
|---|
| 133 | . S XQH="XM-U-BO-CLASSIC" | 
|---|
| 134 | . D EN^XQH | 
|---|
| 135 | I XMY?1"??".E D  Q | 
|---|
| 136 | . ; Search for messages whose subject starts with string | 
|---|
| 137 | . I $E(XMY,3,99)?.N,$D(^XMB(3.9,$E(XMY,3,999),0)) D  Q | 
|---|
| 138 | . . S XMY=$E(XMY,3,99) | 
|---|
| 139 | . . D NUMBERZ | 
|---|
| 140 | . D FIND^XMJMFA(XMDUZ,$E(XMY,3,99)) | 
|---|
| 141 | I XMY?1"?".E D  Q | 
|---|
| 142 | . ; Search for messages whose subject contains string | 
|---|
| 143 | . N XMF | 
|---|
| 144 | . S XMF("BSKT")=XMK | 
|---|
| 145 | . S XMF("SUBJ")=$E(XMY,2,99) | 
|---|
| 146 | . D FIND1^XMJMFB(XMDUZ,.XMF) | 
|---|
| 147 | Q | 
|---|
| 148 | HELPSCR ; | 
|---|
| 149 | N XMTEXT,XMLINES,XMPARM | 
|---|
| 150 | W ! | 
|---|
| 151 | S XMPARM(1)=XMKZ,XMPARM(2)=XMFIRST,XMPARM(3)=XMLAST | 
|---|
| 152 | D BLD^DIALOG(34032,.XMPARM,"","XMTEXT","F") | 
|---|
| 153 | ; Press ENTER to read message _XMKZ_.  Enter message number (_XMFIRST_-_XMLAST_) to read | 
|---|
| 154 | ; a message in this basket.  Enter internal message number to read any | 
|---|
| 155 | ; message still on the system, which you ever sent or received.  Enter: | 
|---|
| 156 | ; ? or ??        Display a summary or detailed list of messages in this basket | 
|---|
| 157 | ; ???? or ?HELP  Display detailed help | 
|---|
| 158 | ; ?string        Search for messages in this basket whose subject | 
|---|
| 159 | ;                contains the specified string | 
|---|
| 160 | ; ??string       Search for messages you once sent or received | 
|---|
| 161 | ;                whose subject begins with the specified string | 
|---|
| 162 | S XMLINES=IOSL-DIHELP-3 | 
|---|
| 163 | D MSG^DIALOG("WH","",$G(IOM),"","XMTEXT") | 
|---|
| 164 | D HELPCMD^XMJDIR(.XMOPT,.XMOX,XMLINES) | 
|---|
| 165 | Q | 
|---|
| 166 | READMSG(XMDUZ,XMK,XMKN,XMZ) ; | 
|---|
| 167 | I '$D(^XMB(3.9,XMZ,0)) D ZAPIT(XMDUZ,XMK,XMZ) Q | 
|---|
| 168 | I XMDUZ'=DUZ,'$$SURRACC^XMXSEC(XMDUZ,"",XMZ,$G(^XMB(3.9,XMZ,0))) D  Q  ; "read" | 
|---|
| 169 | . D SHOW^XMJERR | 
|---|
| 170 | . I $G(XMRDR)'="C" D WAIT^XMXUTIL | 
|---|
| 171 | N XMSECURE,XMPAKMAN,XMSECBAD ; Important 'new' - part of scramble and packman handling | 
|---|
| 172 | D DISPMSG^XMJMP(XMDUZ,XMK,XMKN,XMZ,.XMSECBAD) Q:$G(XMSECBAD) | 
|---|
| 173 | D READMSG^XMJMOI(0,XMDUZ,XMK,XMKN,XMZ) | 
|---|
| 174 | Q | 
|---|
| 175 | ZAPIT(XMDUZ,XMK,XMZ) ; | 
|---|
| 176 | W !,$C(7),$$EZBLD^DIALOG(34034) ; This references a message which doesn't exist - deleting it. | 
|---|
| 177 | D ZAPIT^XMXMSGS2(XMDUZ,XMK,XMZ) | 
|---|
| 178 | Q | 
|---|
| 179 | C ; Change the name of the basket | 
|---|
| 180 | D NAMEBSKT^XMJBU(XMDUZ,XMK,.XMKN) | 
|---|
| 181 | Q | 
|---|
| 182 | D ; Delete | 
|---|
| 183 | D DELETE^XMJMOR(XMDUZ,XMK) | 
|---|
| 184 | Q | 
|---|
| 185 | F ; Forward | 
|---|
| 186 | D FORWARD^XMJMOR(XMDUZ,XMK) | 
|---|
| 187 | Q | 
|---|
| 188 | FI ; Filter | 
|---|
| 189 | D FILTER^XMJMOR(XMDUZ,XMK) | 
|---|
| 190 | Q | 
|---|
| 191 | H ; Headerless Print | 
|---|
| 192 | D PRINT^XMJMOR(XMDUZ,XMK,0) | 
|---|
| 193 | Q | 
|---|
| 194 | I ; Ignore this message | 
|---|
| 195 | S XMNEXT=1 | 
|---|
| 196 | Q | 
|---|
| 197 | L ; Later | 
|---|
| 198 | LA ; Later | 
|---|
| 199 | D LATER^XMJMOR(XMDUZ,XMK) | 
|---|
| 200 | Q | 
|---|
| 201 | LM ; List Messages (can't read) | 
|---|
| 202 | D LIST^XMJML(XMDUZ,XMK,XMKN,"",1) | 
|---|
| 203 | Q | 
|---|
| 204 | LN ; List New Messages | 
|---|
| 205 | D LISTONE^XMJMLN(XMDUZ,XMK,XMKN,"N0") | 
|---|
| 206 | Q | 
|---|
| 207 | LP ; List Priority Messages | 
|---|
| 208 | D LISTONE^XMJMLN(XMDUZ,XMK,XMKN,"N") | 
|---|
| 209 | Q | 
|---|
| 210 | N ; List New Messages (can't read) | 
|---|
| 211 | D LISTNEW^XMJML(XMDUZ,XMK,XMKN) | 
|---|
| 212 | Q | 
|---|
| 213 | NT ; New Toggle messages | 
|---|
| 214 | D NEWTOGL^XMJMOR(XMDUZ,XMK) | 
|---|
| 215 | Q | 
|---|
| 216 | P ; Print | 
|---|
| 217 | D PRINT^XMJMOR(XMDUZ,XMK) | 
|---|
| 218 | Q | 
|---|
| 219 | Q ; Query by subject, sender, and/or date | 
|---|
| 220 | D FINDBSKT^XMJMF(XMDUZ,XMK,XMKN) | 
|---|
| 221 | Q | 
|---|
| 222 | R ; Resequence | 
|---|
| 223 | N XMMSG | 
|---|
| 224 | W !,$$EZBLD^DIALOG(34035) ; Resequencing ... | 
|---|
| 225 | D RSEQBSKT^XMXBSKT(XMDUZ,XMK,.XMMSG) | 
|---|
| 226 | W !,XMMSG | 
|---|
| 227 | S XMKZ="" | 
|---|
| 228 | Q | 
|---|
| 229 | S ; Save | 
|---|
| 230 | D SAVE^XMJMOR(XMDUZ,XMK) | 
|---|
| 231 | Q | 
|---|
| 232 | T ; Terminate | 
|---|
| 233 | D TERM^XMJMOR(XMDUZ,XMK) | 
|---|
| 234 | Q | 
|---|
| 235 | V ; Vaporize | 
|---|
| 236 | D VAPOR^XMJMOR(XMDUZ,XMK) | 
|---|
| 237 | Q | 
|---|
| 238 | X ; Xmit Priority toggle (for Postmaster only) | 
|---|
| 239 | D XMTPRI^XMJMOR(XMDUZ,XMK) | 
|---|
| 240 | Q | 
|---|