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