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