| 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
 | 
|---|