[613] | 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
|
---|