1 | XMJMLR ;ISC-SF/GMB-List/Read messages in basket ;05/21/2002 06:46
|
---|
2 | ;;8.0;MailMan;;Jun 28, 2002
|
---|
3 | ; Replaces 1^XMAL0 (ISC-WASH/THM/CAP)
|
---|
4 | LIST(XMDUZ,XMK,XMKN,XMDETAIL,XMABORT) ; List messages in basket
|
---|
5 | ; XMDETAIL 0=Summary; 1=Detailed
|
---|
6 | N XMKZ,XMLEN,XMFIRST,XMPAGE,XMPMAX,XMZOOM,XMINSTR,XMOPT,XMOX,XMORDER
|
---|
7 | I XMDUZ=.5,XMK>999 S XMORDER=XMV("ORDER"),XMV("ORDER")=1
|
---|
8 | S XMINSTR("GOTO")=1 ; may go to another page
|
---|
9 | D SETOPT^XMJMLR1(XMDUZ,XMK,.XMOPT,.XMOX)
|
---|
10 | K ^TMP("XM",$J,".")
|
---|
11 | S XMKZ="",(XMPAGE,XMZOOM)=0,XMPMAX=IOSL-3
|
---|
12 | D INIT^XMJML(XMDUZ,XMK,XMKN,XMDETAIL,.XMLEN,1)
|
---|
13 | F D Q:XMABORT!'$D(^XMB(3.7,XMDUZ,2,XMK,1,"C"))
|
---|
14 | . D DISPLAY(XMDUZ,XMDETAIL,XMK,XMKN,.XMKZ,.XMFIRST,.XMPAGE,.XMLEN,XMZOOM,XMPMAX)
|
---|
15 | . D CHOOSE(XMDUZ,.XMK,.XMKZ,.XMFIRST,.XMPAGE,.XMLEN,.XMZOOM,.XMINSTR,.XMOPT,.XMOX,.XMABORT)
|
---|
16 | K ^TMP("XM",$J,".")
|
---|
17 | I $D(XMORDER) S XMV("ORDER")=XMORDER
|
---|
18 | Q
|
---|
19 | DISPLAY(XMDUZ,XMDETAIL,XMK,XMKN,XMKZ,XMFIRST,XMPAGE,XMLEN,XMZOOM,XMPMAX) ;
|
---|
20 | N XMZ
|
---|
21 | S XMFIRST(XMPAGE)=XMKZ
|
---|
22 | D HEADER^XMJML(XMDETAIL,.XMLEN,$$HEADLINE^XMJML(XMDUZ,XMK,XMKN))
|
---|
23 | I XMZOOM D Q
|
---|
24 | . F S XMKZ=$O(^TMP("XM",$J,".",XMKZ),XMV("ORDER")) Q:XMKZ="" D Q:$Y>XMPMAX
|
---|
25 | . . D LISTMSG^XMJML(XMK,XMKN,XMKZ,$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ,"")),XMDETAIL,.XMLEN)
|
---|
26 | F S XMKZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ),XMV("ORDER")) Q:XMKZ="" D Q:$Y>XMPMAX
|
---|
27 | . S XMZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ,""))
|
---|
28 | . I '$D(^XMB(3.7,XMDUZ,2,XMK,1,XMZ,0)) D ADDITC^XMUT4A(XMDUZ,XMK,XMZ,XMKZ)
|
---|
29 | . I '$D(^XMB(3.9,XMZ,0)) D ZAPIT^XMXMSGS2(XMDUZ,XMK,XMZ) Q
|
---|
30 | . D LISTMSG^XMJML(XMK,XMKN,XMKZ,XMZ,XMDETAIL,.XMLEN)
|
---|
31 | Q
|
---|
32 | CHOOSE(XMDUZ,XMK,XMKZ,XMFIRST,XMPAGE,XMLEN,XMZOOM,XMINSTR,XMOPT,XMOX,XMABORT) ;
|
---|
33 | N XMY,XMZ,XMMORE,XMHI,XMLO
|
---|
34 | S XMMORE=$S(XMKZ="":0,'$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ),XMV("ORDER")):0,1:1)
|
---|
35 | S XMLO=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",""))
|
---|
36 | S XMHI=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",""),-1)
|
---|
37 | D XMDIR^XMJMLR1(XMDUZ,XMLO,XMHI,XMPAGE,XMMORE,"XM-U-BO-FULL SCREEN",.XMINSTR,.XMOPT,.XMOX,.XMY,.XMABORT) Q:XMABORT
|
---|
38 | I '$D(XMY) S XMKZ=XMFIRST(XMPAGE) Q
|
---|
39 | I XMY=""!($E(XMY)="+") D Q ; Page forward
|
---|
40 | . I XMMORE D PFWD Q
|
---|
41 | . I XMPAGE=0 S XMABORT=1 Q
|
---|
42 | . D AGAIN(.XMABORT) Q:XMABORT
|
---|
43 | . S XMPAGE=0
|
---|
44 | . S XMKZ=XMFIRST(XMPAGE)
|
---|
45 | I $E(XMY)="." D Q ; (De)Select messages
|
---|
46 | . D DODOT
|
---|
47 | . I XMZOOM,'$D(^TMP("XM",$J,".")) D Z
|
---|
48 | . S XMKZ=XMFIRST(XMPAGE)
|
---|
49 | I XMY>0 D Q ;
|
---|
50 | . N XMKZLAST
|
---|
51 | . S XMKZLAST=XMKZ
|
---|
52 | . S XMKZ=XMY
|
---|
53 | . S XMZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ,""))
|
---|
54 | . I XMZ D
|
---|
55 | . . I '$D(^XMB(3.7,XMDUZ,2,XMK,1,XMZ,0)) D ADDITC^XMUT4A(XMDUZ,XMK,XMZ,XMKZ)
|
---|
56 | . . D READMSG(XMDUZ,XMK,XMKN,XMKZ,XMZ,XMZOOM)
|
---|
57 | . . D FINDXMKZ(XMDUZ,XMK,.XMFIRST,.XMPAGE,XMKZLAST,XMKZ)
|
---|
58 | . E D
|
---|
59 | . . S XMZ=XMY
|
---|
60 | . . I $D(^XMB(3.7,XMDUZ,2,XMK,1,XMZ,0)) D Q
|
---|
61 | . . . S XMKZ=$P(^XMB(3.7,XMDUZ,2,XMK,1,XMZ,0),U,2)
|
---|
62 | . . . I 'XMKZ D ADDITM^XMUT4A(XMDUZ,XMK,XMZ,.XMKZ)
|
---|
63 | . . . D READMSG(XMDUZ,XMK,XMKN,XMKZ,XMZ,XMZOOM)
|
---|
64 | . . . D FINDXMKZ(XMDUZ,XMK,.XMFIRST,.XMPAGE,XMKZLAST,XMKZ)
|
---|
65 | . . I '$D(^XMB(3.9,XMZ,0)) D Q
|
---|
66 | . . . W $C(7)
|
---|
67 | . . . Q:XMZ>$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",""),-1)
|
---|
68 | . . . S XMKZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMZ),XMV("ORDER"))
|
---|
69 | . . . I 'XMKZ S XMKZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMZ),-XMV("ORDER"))
|
---|
70 | . . . D FINDXMKZ(XMDUZ,XMK,.XMFIRST,.XMPAGE,XMKZLAST,XMKZ)
|
---|
71 | . . N XMK,XMKN,XMOK
|
---|
72 | . . S XMK=+$O(^XMB(3.7,"M",XMZ,XMDUZ,0))
|
---|
73 | . . I 'XMK D Q:'XMOK
|
---|
74 | . . . N XMZREC
|
---|
75 | . . . S XMZREC=^XMB(3.9,XMZ,0)
|
---|
76 | . . . I $D(XMERR) K XMERR,^TMP("XMERR",$J)
|
---|
77 | . . . S XMOK=$$ACCESS^XMXSEC(XMDUZ,XMZ,XMZREC) Q:XMOK
|
---|
78 | . . . D FWD^XMJMLR1(XMDUZ,XMZ,XMZREC,1,.XMOK)
|
---|
79 | . . S XMKN=$S(XMK:$P(^XMB(3.7,XMDUZ,2,XMK,0),U,1),1:$$EZBLD^DIALOG(34014)) ; * N/A *
|
---|
80 | . . I XMK,'$D(^XMB(3.7,XMDUZ,2,XMK,1,XMZ,0)) D ADDITM^XMUT4A(XMDUZ,XMK,XMZ)
|
---|
81 | . . D READMSG^XMJBM(XMDUZ,XMK,XMKN,XMZ)
|
---|
82 | . S XMKZ=XMFIRST(XMPAGE)
|
---|
83 | I XMY=0 D Q ; First page
|
---|
84 | . S XMPAGE=0
|
---|
85 | . S XMKZ=XMFIRST(XMPAGE)
|
---|
86 | I $E(XMY)="-" D Q ; Page back
|
---|
87 | . N XMCNT
|
---|
88 | . S XMCNT=$E(XMY,2,99)
|
---|
89 | . S:XMCNT="" XMCNT=1
|
---|
90 | . S XMPAGE=XMPAGE-XMCNT
|
---|
91 | . S:XMPAGE<0 XMPAGE=0
|
---|
92 | . S XMKZ=XMFIRST(XMPAGE)
|
---|
93 | D @XMY
|
---|
94 | S XMKZ=XMFIRST(XMPAGE)
|
---|
95 | Q
|
---|
96 | PFWD ;
|
---|
97 | N XMCNT,XMPDEST
|
---|
98 | S XMCNT=$E(XMY,2,99)
|
---|
99 | S:XMCNT="" XMCNT=1
|
---|
100 | I XMCNT=1 S XMPAGE=XMPAGE+1 Q
|
---|
101 | S XMPDEST=XMPAGE+XMCNT
|
---|
102 | D FINDPAGE(.XMFIRST,.XMPAGE,XMKZ,XMPDEST)
|
---|
103 | S XMKZ=XMFIRST(XMPAGE)
|
---|
104 | Q
|
---|
105 | FINDPAGE(XMFIRST,XMPAGE,XMKZ,XMPDEST) ;
|
---|
106 | N XMO,I
|
---|
107 | S XMO=$S(XMPDEST>XMPAGE:1,1:-1)
|
---|
108 | F XMPAGE=XMPAGE+XMO:XMO S XMFIRST(XMPAGE)=XMKZ Q:XMPAGE=XMPDEST D Q:XMKZ=""
|
---|
109 | . F I=1:1:XMPMAX S XMKZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ),XMO*XMV("ORDER")) Q:XMKZ=""
|
---|
110 | I '$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMFIRST(XMPAGE)),XMO*XMV("ORDER")) S XMPAGE=XMPAGE-XMO Q
|
---|
111 | Q
|
---|
112 | FINDXMKZ(XMDUZ,XMK,XMFIRST,XMPAGE,XMKZLAST,XMKZF) ; Find the page with XMKZF on it
|
---|
113 | Q:'$D(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZF))
|
---|
114 | I XMV("ORDER")=-1 D Q
|
---|
115 | . I $S(XMFIRST(XMPAGE):XMFIRST(XMPAGE)>XMKZF,1:1),XMKZF'<XMKZLAST Q
|
---|
116 | . N XMKZ,I
|
---|
117 | . I XMKZF<XMKZLAST D Q ; Go forward
|
---|
118 | . . S XMKZ=XMKZLAST
|
---|
119 | . . F XMPAGE=XMPAGE+1:1 D Q:XMKZ=XMKZF
|
---|
120 | . . . S XMFIRST(XMPAGE)=XMKZ
|
---|
121 | . . . F I=1:1:XMPMAX S XMKZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ),-1) Q:XMKZ=XMKZF
|
---|
122 | . E D ; Go back
|
---|
123 | . . F XMPAGE=XMPAGE-1:-1 Q:XMFIRST(XMPAGE)>XMKZF!'XMPAGE
|
---|
124 | . . ;S XMKZ=XMFIRST(XMPAGE)-1
|
---|
125 | . . ;F XMPAGE=XMPAGE-1:-1 D Q:XMFIRST(XMPAGE)>XMKZF
|
---|
126 | . . ;. F I=1:1:XMPMAX S XMKZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ)) Q:XMKZ=""
|
---|
127 | . . ;. S XMFIRST(XMPAGE)=$S(XMKZ:XMKZ+1,1:XMKZ)
|
---|
128 | I XMFIRST(XMPAGE)<XMKZF,$S(XMKZLAST:XMKZF'>XMKZLAST,1:1) Q
|
---|
129 | N XMKZ,I
|
---|
130 | I XMKZF>XMKZLAST D Q ; Go forward
|
---|
131 | . S XMKZ=XMKZLAST
|
---|
132 | . F XMPAGE=XMPAGE+1:1 D Q:XMKZ=XMKZF
|
---|
133 | . . S XMFIRST(XMPAGE)=XMKZ
|
---|
134 | . . F I=1:1:XMPMAX S XMKZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ)) Q:XMKZ=XMKZF
|
---|
135 | E D ; Go back
|
---|
136 | . F XMPAGE=XMPAGE-1:-1 Q:XMFIRST(XMPAGE)<XMKZF!'XMPAGE
|
---|
137 | . ;S XMKZ=XMFIRST(XMPAGE)-1
|
---|
138 | . ;F XMPAGE=XMPAGE-1:-1 D Q:XMFIRST(XMPAGE)<XMKZF
|
---|
139 | . ;. F I=1:1:XMPMAX S XMKZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ),-1) Q:XMKZ=""
|
---|
140 | . ;. S XMFIRST(XMPAGE)=$S(XMKZ:XMKZ+1,1:XMKZ)
|
---|
141 | Q
|
---|
142 | READMSG(XMDUZ,XMK,XMKN,XMKZ,XMZ,XMZOOM) ;
|
---|
143 | D READMSG^XMJBM(XMDUZ,XMK,XMKN,XMZ)
|
---|
144 | I $D(^TMP("XM",$J,".",XMKZ)),'$D(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ,XMZ)) K ^TMP("XM",$J,".",XMKZ)
|
---|
145 | I XMZOOM,'$D(^TMP("XM",$J,".")) D Z
|
---|
146 | Q
|
---|
147 | AGAIN(XMABORT) ;
|
---|
148 | N DIR,Y
|
---|
149 | W !
|
---|
150 | S DIR("A")=$$EZBLD^DIALOG(34020) ; End reached. Begin again
|
---|
151 | S DIR(0)="Y",DIR("B")=$$EZBLD^DIALOG(39053) ; No
|
---|
152 | D BLD^DIALOG(34021,"","","DIR(""?"")") ; Enter 'Yes' if you wish to continue reading messages; 'No' if you don't.
|
---|
153 | D ^DIR
|
---|
154 | Q:Y=1 ; Yes, begin again
|
---|
155 | S XMABORT=1 ; No, exit.
|
---|
156 | Q
|
---|
157 | DODOT ;
|
---|
158 | N I,XMSTRIKE,XM1,XMN,XMKZ
|
---|
159 | I $E(XMY,2)="-" S XMSTRIKE=1,XMY=$E(XMY,3,999)
|
---|
160 | E S XMSTRIKE=0,XMY=$E(XMY,2,999)
|
---|
161 | I XMY="*" D Q
|
---|
162 | . I XMSTRIKE K ^TMP("XM",$J,".") Q
|
---|
163 | . S XMKZ=""
|
---|
164 | . F S XMKZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ)) Q:'XMKZ S ^TMP("XM",$J,".",XMKZ)=""
|
---|
165 | F I=1:1:$L(XMY,",") D
|
---|
166 | . S XMKZ=$P(XMY,",",I)
|
---|
167 | . I XMKZ["-" D Q
|
---|
168 | . . S XM1=$P(XMKZ,"-")
|
---|
169 | . . S XMN=$P(XMKZ,"-",2) S:XMN="" XMN=XMHI
|
---|
170 | . . S XMKZ=XM1-.1
|
---|
171 | . . I 'XMSTRIKE D Q
|
---|
172 | . . . F S XMKZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ)) Q:XMKZ>XMN!'XMKZ S:'$D(^TMP("XM",$J,".",XMKZ)) ^(XMKZ)=""
|
---|
173 | . . F S XMKZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ)) Q:XMKZ>XMN!'XMKZ K:$D(^TMP("XM",$J,".",XMKZ)) ^(XMKZ)
|
---|
174 | . I 'XMSTRIKE D Q
|
---|
175 | . . I $D(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ)),'$D(^TMP("XM",$J,".",XMKZ)) S ^(XMKZ)=""
|
---|
176 | . K:$D(^TMP("XM",$J,".",XMKZ)) ^(XMKZ)
|
---|
177 | Q
|
---|
178 | C ; Change the name of this basket
|
---|
179 | D NAMEBSKT^XMJBU(XMDUZ,XMK,.XMKN)
|
---|
180 | K XMLEN
|
---|
181 | D INIT^XMJML(XMDUZ,XMK,XMKN,XMDETAIL,.XMLEN,1)
|
---|
182 | Q
|
---|
183 | CD ; Change Detail
|
---|
184 | S XMDETAIL='XMDETAIL
|
---|
185 | D INIT^XMJML(XMDUZ,XMK,XMKN,XMDETAIL,.XMLEN,1)
|
---|
186 | Q
|
---|
187 | D ; Delete messages
|
---|
188 | D DELETE^XMJMOR(XMDUZ,XMK)
|
---|
189 | D WAIT^XMXUTIL
|
---|
190 | I XMZOOM,'$D(^TMP("XM",$J,".")) D Z
|
---|
191 | Q
|
---|
192 | F ; Forward messages
|
---|
193 | D FORWARD^XMJMOR(XMDUZ,XMK)
|
---|
194 | D WAIT^XMXUTIL
|
---|
195 | Q
|
---|
196 | FI ; Filter messages
|
---|
197 | D FILTER^XMJMOR(XMDUZ,XMK)
|
---|
198 | D WAIT^XMXUTIL
|
---|
199 | Q
|
---|
200 | H ; Headerless Print messages
|
---|
201 | D PRINT^XMJMOR(XMDUZ,XMK,0)
|
---|
202 | D WAIT^XMXUTIL
|
---|
203 | Q
|
---|
204 | L ; Later messages
|
---|
205 | D LATER^XMJMOR(XMDUZ,XMK)
|
---|
206 | D WAIT^XMXUTIL
|
---|
207 | I XMZOOM,'$D(^TMP("XM",$J,".")) D Z
|
---|
208 | Q
|
---|
209 | N ; New message list
|
---|
210 | D LISTONE^XMJMLN(XMDUZ,XMK,XMKN,"N0")
|
---|
211 | D WAIT^XMXUTIL
|
---|
212 | Q
|
---|
213 | NT ; New Toggle messages
|
---|
214 | D NEWTOGL^XMJMOR(XMDUZ,XMK)
|
---|
215 | D WAIT^XMXUTIL
|
---|
216 | Q
|
---|
217 | O ; Opposite toggle
|
---|
218 | N XMKZ
|
---|
219 | S XMKZ=0
|
---|
220 | F S XMKZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ)) Q:'XMKZ D
|
---|
221 | . I $D(^TMP("XM",$J,".",XMKZ)) K ^TMP("XM",$J,".",XMKZ) Q
|
---|
222 | . S ^TMP("XM",$J,".",XMKZ)=""
|
---|
223 | S XMPAGE=0
|
---|
224 | Q
|
---|
225 | P ; Print messages
|
---|
226 | D PRINT^XMJMOR(XMDUZ,XMK)
|
---|
227 | D WAIT^XMXUTIL
|
---|
228 | Q
|
---|
229 | Q ; Query messages
|
---|
230 | D FINDBSKT^XMJMF(XMDUZ,XMK,XMKN)
|
---|
231 | Q
|
---|
232 | Q1 ; ?string - search for messages in this basket whose subject contains string.
|
---|
233 | N XMF
|
---|
234 | S XMF("BSKT")=XMK
|
---|
235 | S XMF("SUBJ")=XMY(0)
|
---|
236 | D FIND1^XMJMFB(XMDUZ,.XMF,1)
|
---|
237 | Q
|
---|
238 | Q2 ; ??string - search for messages whose subject starts with string.
|
---|
239 | D FIND^XMJMFA(XMDUZ,XMY(0),1)
|
---|
240 | Q
|
---|
241 | R ; Resequence messages
|
---|
242 | D R^XMJBM
|
---|
243 | S XMPAGE=0
|
---|
244 | K XMLEN,XMFIRST
|
---|
245 | S XMFIRST(0)=""
|
---|
246 | D INIT^XMJML(XMDUZ,XMK,XMKN,XMDETAIL,.XMLEN,1)
|
---|
247 | D WAIT^XMXUTIL
|
---|
248 | Q
|
---|
249 | S ; Save messages
|
---|
250 | D SAVE^XMJMOR(XMDUZ,XMK)
|
---|
251 | D WAIT^XMXUTIL
|
---|
252 | Q
|
---|
253 | T ; Terminate messages
|
---|
254 | D TERM^XMJMOR(XMDUZ,XMK)
|
---|
255 | D WAIT^XMXUTIL
|
---|
256 | I XMZOOM,'$D(^TMP("XM",$J,".")) D Z
|
---|
257 | Q
|
---|
258 | V ; Vaporize messages
|
---|
259 | D VAPOR^XMJMOR(XMDUZ,XMK)
|
---|
260 | D WAIT^XMXUTIL
|
---|
261 | Q
|
---|
262 | X ; Xmit priority toggle messages
|
---|
263 | D XMTPRI^XMJMOR(XMDUZ,XMK)
|
---|
264 | D WAIT^XMXUTIL
|
---|
265 | Q
|
---|
266 | Z ; Zoom toggle
|
---|
267 | N I
|
---|
268 | I XMZOOM D
|
---|
269 | . S XMZOOM=0
|
---|
270 | . S I=""
|
---|
271 | . F S I=$O(XMFIRST(0,I)) Q:I="" S XMFIRST(I)=XMFIRST(0,I)
|
---|
272 | . S XMPAGE=XMPAGE(0)
|
---|
273 | E D
|
---|
274 | . S XMZOOM=1
|
---|
275 | . S I=""
|
---|
276 | . F S I=$O(XMFIRST(I)) Q:I="" S XMFIRST(0,I)=XMFIRST(I)
|
---|
277 | . S XMPAGE(0)=XMPAGE
|
---|
278 | . S XMPAGE=0
|
---|
279 | Q
|
---|