XMJMLR1 ;ISC-SF/GMB-List/Read messages in basket (cont.) ;05/20/2002 15:15
;;8.0;MailMan;;Jun 28, 2002
; Replaces 1^XMAL0 (ISC-WASH/THM/CAP)
XMDIR(XMDUZ,XMLO,XMHI,XMPAGE,XMMORE,XMHELP,XMINSTR,XMOPT,XMOX,XMY,XMABORT) ;
N XMX K XMY
D ZOOMOPT(.XMOPT)
F D Q:$D(XMY)!XMABORT
. W !,$$EZBLD^DIALOG(34050) ; Enter message number or command:
. R XMX:DTIME I '$T S XMABORT=1 Q
. I XMX[U S XMABORT=1 Q
. I "="[XMX S XMY=XMX Q
. I XMX?.E1C.E D HELPSCR Q
. I $E(XMX)="?" D QUESTION Q
. I '$$OK K XMY D HELPSCR Q
. Q:'$D(XMOPT(XMY,"?"))
. D SHOWERR
I $G(XMY)="=" K XMY
Q
OK() ;
N XMLO
S XMLO=0
I XMX?1N.N Q $$NUMBERZ
I $E(XMX)="." Q $$DOT
S XMY=XMX
I XMX?1(1"+",1"-").N Q $L(XMX)<26
S XMY=$$COMMAND^XMJDIR(.XMOPT,.XMOX,XMX)
Q XMY'=-1
NUMBERZ() ;
Q:$L(XMX)>25 0
S (XMX,XMY)=+XMX
I XMX'<XMLO,XMX'>XMHI Q 1
I $D(^XMB(3.9,XMX,0)) Q 1
Q 0
DOT() ;
N XMXR,I,XMOK,XMSTRIKE
S XMOK=1
S XMX=$TR(XMX," ")
I $E(XMX,2)="-" S XMSTRIKE=1,XMX=$E(XMX,3,999)
E S XMSTRIKE=0,XMX=$E(XMX,2,999)
I XMX="*" S XMY="."_$S(XMSTRIKE:"-",1:"")_XMX Q 1
F I=1:1:$L(XMX,",") D Q:'XMOK
. S XMXR=$P(XMX,",",I)
. I XMXR?1.25N1"-"1.25N D Q
. . I $P(XMXR,"-",1)<XMLO S XMOK=0 Q
. . I $P(XMXR,"-",2)>XMHI S XMOK=0 Q
. . I $P(XMXR,"-",1)>$P(XMXR,"-",2) S XMOK=0
. I XMXR?1.25N D Q
. . I XMXR<XMLO S XMOK=0 Q
. . I XMXR>XMHI S XMOK=0
. I XMXR?1.25N1"-" D Q
. . I $P(XMXR,"-",1)<XMLO S XMOK=0 Q
. . I $P(XMXR,"-",1)>XMHI S XMOK=0
. S XMOK=0
I XMOK S XMY="."_$S(XMSTRIKE:"-",1:"")_XMX Q 1
Q 0
SHOWERR ;
D SHOWERR^XMJDIR(.XMOPT,XMY)
D WAIT^XMXUTIL
S XMY="="
Q
QUESTION ;
I XMX="?" D HELPSCR Q
I XMX?2."?"!("?HELP"[$$UP^XLFSTR(XMX)) S XQH=XMHELP D EN^XQH S XMY="=" Q
I $L(XMX)>64 D HELPSCR Q
I XMX?2"?"1N.N,$D(^XMB(3.9,$E(XMX,3,99),0)) S XMY=$E(XMX,3,99) Q
I '$D(XMOPT("Q")) D HELPSCR Q
S XMY="Q"
I $D(XMOPT("Q","?")) D SHOWERR Q
N I F I=1,2 Q:$E(XMX,I+1)'="?"
S XMY=XMY_I,XMY(0)=$E(XMX,I+1,99)
Q
HELPSCR ;
N XMTEXT,XMPARM,XMLINES
W !
S XMPARM(1)=XMLO,XMPARM(2)=XMHI
D BLD^DIALOG($S($G(XMINSTR("GOTO")):34051,1:34051.1),.XMPARM,"","XMTEXT","F") ; Enter a message number (_XMLO_-_XMHI_) to read a message.
I $D(XMOPT("Q")),'$D(XMOPT("Q","?")) D BLD^DIALOG(34052,"","","XMTEXT","FS")
; ?string Search for messages in this basket whose subject
; contains the specified string
; ??string Search for messages you once sent or received
; whose subject begins with the specified string
D BLD^DIALOG(34053,"","","XMTEXT","FS")
; .(-)n or n-m,a,c-d (de)select message n or a list of messages
; .(-)* (de)select all messages
S XMLINES=IOSL-DIHELP-5
D MSG^DIALOG("WH","",$G(IOM),"","XMTEXT")
D HELPCMD^XMJDIR(.XMOPT,.XMOX,.XMLINES)
I XMMORE D
. I XMPAGE D BLD^DIALOG($S($G(XMINSTR("GOTO")):34055,1:34056),"","","XMTEXT","FS") Q
. D BLD^DIALOG($S($G(XMINSTR("GOTO")):34057,1:34058),"","","XMTEXT","FS")
E D
. I XMPAGE D BLD^DIALOG($S($G(XMINSTR("GOTO")):34060,1:34061),"","","XMTEXT","FS") Q
. D BLD^DIALOG(34059,"","","XMTEXT","FS")
; Press ENTER or + to go to the next page. Enter +n to page forward n pages.
; Enter - to go to the previous page. Enter -n to page back n pages.
; Enter 0 to go to the first page; = to refresh this page; ^ to exit.
D MSG^DIALOG("WH","",$G(IOM),"","XMTEXT")
W !
Q
SETOPT(XMDUZ,XMK,XMOPT,XMOX) ;
D OPTGRP^XMXSEC1(XMDUZ,XMK,.XMOPT,.XMOX,1)
D SET^XMXSEC1("CD",37221,.XMOPT,.XMOX) ; Change Detail
D SET^XMXSEC1("O",37222,.XMOPT,.XMOX) ; Opposite selection toggle
D SET^XMXSEC1("Z",37223,.XMOPT,.XMOX) ; Zoom selection toggle
Q
ZOOMOPT(XMOPT) ;
N I
I $D(^TMP("XM",$J,".")) D Q
. I $D(XMOPT("Z","?")) K XMOPT("O","?"),XMOPT("Z","?")
. I $D(XMOPT("Q")) F I="Q","N","R" S XMOPT(I,"?")=37232 ; You can't do this with messages selected.
F I="O","Z" S XMOPT(I,"?")=37231 ; You can't do this unless messages are selected.
I $D(XMOPT("Q")) K XMOPT("Q","?"),XMOPT("N","?"),XMOPT("R","?")
Q
FWD(XMDUZ,XMZ,XMZREC,XMWAIT,XMOK) ; User is trying to access a message.
N X ; User (XMDUZ) is not authorized to see it. If user (DUZ)
S XMOK=0 ; is, then we'll give him a chance to forward it.
I '$D(^TMP("XMERR",$J,"E",37103)) D Q
. D SHOW^XMJERR ; User (XMDUZ and/or DUZ) is not authorized to see it.
. D:XMWAIT WAIT^XMXUTIL
; User is trying to access a message as a surrogate for someone else.
; User (DUZ) is authorized to see the message, but the someone else
; (XMDUZ) isn't. We must check to see if we can allow the user to
; forward the message to XMDUZ.
D NOGOID^XMJMP2(XMZ,XMZREC,1) ; Show 'subject' & 'from'
D SHOW^XMJERR
S X=$$FORWARD^XMXSEC(DUZ,XMZ,XMZREC)
I XMDUZ=.6 D
. I $$CLOSED^XMXSEC(XMZREC) D ERRSET^XMXUTIL(39020) Q
. I $$CONFID^XMXSEC(XMZREC) D ERRSET^XMXUTIL(39021)
I $D(XMERR) D Q
. D SHOW^XMJERR
. D:XMWAIT WAIT^XMXUTIL
N DIR,X,Y
W !
S DIR(0)="Y"
;Do you want to forward this message to |1|
D BLD^DIALOG(37104,XMV("NAME"),"","DIR(""A"")","F")
S DIR("B")=$$EZBLD^DIALOG(39053) ; No
D ^DIR Q:'Y!$D(DIRUT)
K DIR,X,Y
N XMERROR,XMINSTR,XMMSG
I XMDUZ=.6 D ASKSHARE^XMXADDR1(.XMINSTR) Q:$D(XMERROR)
S XMINSTR("FWD BY")=XMV("DUZ NAME")
D FWDMSG^XMXMSGS(DUZ,"",XMZ,XMDUZ,.XMINSTR,.XMMSG)
I $D(XMERR) D Q
. D SHOW^XMJERR
. D:XMWAIT WAIT^XMXUTIL
I $D(XMMSG) D
. W !,XMMSG
. D:XMWAIT WAIT^XMXUTIL
S XMOK=1
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HXMJMLR1 5458 printed Nov 22, 2024@17:22:11 Page 2
XMJMLR1 ;ISC-SF/GMB-List/Read messages in basket (cont.) ;05/20/2002 15:15
+1 ;;8.0;MailMan;;Jun 28, 2002
+2 ; Replaces 1^XMAL0 (ISC-WASH/THM/CAP)
XMDIR(XMDUZ,XMLO,XMHI,XMPAGE,XMMORE,XMHELP,XMINSTR,XMOPT,XMOX,XMY,XMABORT) ;
+1 NEW XMX
KILL XMY
+2 DO ZOOMOPT(.XMOPT)
+3 FOR
Begin DoDot:1
+4 ; Enter message number or command:
WRITE !,$$EZBLD^DIALOG(34050)
+5 READ XMX:DTIME
IF '$TEST
SET XMABORT=1
QUIT
+6 IF XMX[U
SET XMABORT=1
QUIT
+7 IF "="[XMX
SET XMY=XMX
QUIT
+8 IF XMX?.E1C.E
DO HELPSCR
QUIT
+9 IF $EXTRACT(XMX)="?"
DO QUESTION
QUIT
+10 IF '$$OK
KILL XMY
DO HELPSCR
QUIT
+11 if '$DATA(XMOPT(XMY,"?"))
QUIT
+12 DO SHOWERR
End DoDot:1
if $DATA(XMY)!XMABORT
QUIT
+13 IF $GET(XMY)="="
KILL XMY
+14 QUIT
OK() ;
+1 NEW XMLO
+2 SET XMLO=0
+3 IF XMX?1N.N
QUIT $$NUMBERZ
+4 IF $EXTRACT(XMX)="."
QUIT $$DOT
+5 SET XMY=XMX
+6 IF XMX?1(1"+",1"-").N
QUIT $LENGTH(XMX)<26
+7 SET XMY=$$COMMAND^XMJDIR(.XMOPT,.XMOX,XMX)
+8 QUIT XMY'=-1
NUMBERZ() ;
+1 if $LENGTH(XMX)>25
QUIT 0
+2 SET (XMX,XMY)=+XMX
+3 IF XMX'<XMLO
IF XMX'>XMHI
QUIT 1
+4 IF $DATA(^XMB(3.9,XMX,0))
QUIT 1
+5 QUIT 0
DOT() ;
+1 NEW XMXR,I,XMOK,XMSTRIKE
+2 SET XMOK=1
+3 SET XMX=$TRANSLATE(XMX," ")
+4 IF $EXTRACT(XMX,2)="-"
SET XMSTRIKE=1
SET XMX=$EXTRACT(XMX,3,999)
+5 IF '$TEST
SET XMSTRIKE=0
SET XMX=$EXTRACT(XMX,2,999)
+6 IF XMX="*"
SET XMY="."_$SELECT(XMSTRIKE:"-",1:"")_XMX
QUIT 1
+7 FOR I=1:1:$LENGTH(XMX,",")
Begin DoDot:1
+8 SET XMXR=$PIECE(XMX,",",I)
+9 IF XMXR?1.25N1"-"1.25N
Begin DoDot:2
+10 IF $PIECE(XMXR,"-",1)<XMLO
SET XMOK=0
QUIT
+11 IF $PIECE(XMXR,"-",2)>XMHI
SET XMOK=0
QUIT
+12 IF $PIECE(XMXR,"-",1)>$PIECE(XMXR,"-",2)
SET XMOK=0
End DoDot:2
QUIT
+13 IF XMXR?1.25N
Begin DoDot:2
+14 IF XMXR<XMLO
SET XMOK=0
QUIT
+15 IF XMXR>XMHI
SET XMOK=0
End DoDot:2
QUIT
+16 IF XMXR?1.25N1"-"
Begin DoDot:2
+17 IF $PIECE(XMXR,"-",1)<XMLO
SET XMOK=0
QUIT
+18 IF $PIECE(XMXR,"-",1)>XMHI
SET XMOK=0
End DoDot:2
QUIT
+19 SET XMOK=0
End DoDot:1
if 'XMOK
QUIT
+20 IF XMOK
SET XMY="."_$SELECT(XMSTRIKE:"-",1:"")_XMX
QUIT 1
+21 QUIT 0
SHOWERR ;
+1 DO SHOWERR^XMJDIR(.XMOPT,XMY)
+2 DO WAIT^XMXUTIL
+3 SET XMY="="
+4 QUIT
QUESTION ;
+1 IF XMX="?"
DO HELPSCR
QUIT
+2 IF XMX?2."?"!("?HELP"[$$UP^XLFSTR(XMX))
SET XQH=XMHELP
DO EN^XQH
SET XMY="="
QUIT
+3 IF $LENGTH(XMX)>64
DO HELPSCR
QUIT
+4 IF XMX?2"?"1N.N
IF $DATA(^XMB(3.9,$EXTRACT(XMX,3,99),0))
SET XMY=$EXTRACT(XMX,3,99)
QUIT
+5 IF '$DATA(XMOPT("Q"))
DO HELPSCR
QUIT
+6 SET XMY="Q"
+7 IF $DATA(XMOPT("Q","?"))
DO SHOWERR
QUIT
+8 NEW I
FOR I=1,2
if $EXTRACT(XMX,I+1)'="?"
QUIT
+9 SET XMY=XMY_I
SET XMY(0)=$EXTRACT(XMX,I+1,99)
+10 QUIT
HELPSCR ;
+1 NEW XMTEXT,XMPARM,XMLINES
+2 WRITE !
+3 SET XMPARM(1)=XMLO
SET XMPARM(2)=XMHI
+4 ; Enter a message number (_XMLO_-_XMHI_) to read a message.
DO BLD^DIALOG($SELECT($GET(XMINSTR("GOTO")):34051,1:34051.1),.XMPARM,"","XMTEXT","F")
+5 IF $DATA(XMOPT("Q"))
IF '$DATA(XMOPT("Q","?"))
DO BLD^DIALOG(34052,"","","XMTEXT","FS")
+6 ; ?string Search for messages in this basket whose subject
+7 ; contains the specified string
+8 ; ??string Search for messages you once sent or received
+9 ; whose subject begins with the specified string
+10 DO BLD^DIALOG(34053,"","","XMTEXT","FS")
+11 ; .(-)n or n-m,a,c-d (de)select message n or a list of messages
+12 ; .(-)* (de)select all messages
+13 SET XMLINES=IOSL-DIHELP-5
+14 DO MSG^DIALOG("WH","",$GET(IOM),"","XMTEXT")
+15 DO HELPCMD^XMJDIR(.XMOPT,.XMOX,.XMLINES)
+16 IF XMMORE
Begin DoDot:1
+17 IF XMPAGE
DO BLD^DIALOG($SELECT($GET(XMINSTR("GOTO")):34055,1:34056),"","","XMTEXT","FS")
QUIT
+18 DO BLD^DIALOG($SELECT($GET(XMINSTR("GOTO")):34057,1:34058),"","","XMTEXT","FS")
End DoDot:1
+19 IF '$TEST
Begin DoDot:1
+20 IF XMPAGE
DO BLD^DIALOG($SELECT($GET(XMINSTR("GOTO")):34060,1:34061),"","","XMTEXT","FS")
QUIT
+21 DO BLD^DIALOG(34059,"","","XMTEXT","FS")
End DoDot:1
+22 ; Press ENTER or + to go to the next page. Enter +n to page forward n pages.
+23 ; Enter - to go to the previous page. Enter -n to page back n pages.
+24 ; Enter 0 to go to the first page; = to refresh this page; ^ to exit.
+25 DO MSG^DIALOG("WH","",$GET(IOM),"","XMTEXT")
+26 WRITE !
+27 QUIT
SETOPT(XMDUZ,XMK,XMOPT,XMOX) ;
+1 DO OPTGRP^XMXSEC1(XMDUZ,XMK,.XMOPT,.XMOX,1)
+2 ; Change Detail
DO SET^XMXSEC1("CD",37221,.XMOPT,.XMOX)
+3 ; Opposite selection toggle
DO SET^XMXSEC1("O",37222,.XMOPT,.XMOX)
+4 ; Zoom selection toggle
DO SET^XMXSEC1("Z",37223,.XMOPT,.XMOX)
+5 QUIT
ZOOMOPT(XMOPT) ;
+1 NEW I
+2 IF $DATA(^TMP("XM",$JOB,"."))
Begin DoDot:1
+3 IF $DATA(XMOPT("Z","?"))
KILL XMOPT("O","?"),XMOPT("Z","?")
+4 ; You can't do this with messages selected.
IF $DATA(XMOPT("Q"))
FOR I="Q","N","R"
SET XMOPT(I,"?")=37232
End DoDot:1
QUIT
+5 ; You can't do this unless messages are selected.
FOR I="O","Z"
SET XMOPT(I,"?")=37231
+6 IF $DATA(XMOPT("Q"))
KILL XMOPT("Q","?"),XMOPT("N","?"),XMOPT("R","?")
+7 QUIT
FWD(XMDUZ,XMZ,XMZREC,XMWAIT,XMOK) ; User is trying to access a message.
+1 ; User (XMDUZ) is not authorized to see it. If user (DUZ)
NEW X
+2 ; is, then we'll give him a chance to forward it.
SET XMOK=0
+3 IF '$DATA(^TMP("XMERR",$JOB,"E",37103))
Begin DoDot:1
+4 ; User (XMDUZ and/or DUZ) is not authorized to see it.
DO SHOW^XMJERR
+5 if XMWAIT
DO WAIT^XMXUTIL
End DoDot:1
QUIT
+6 ; User is trying to access a message as a surrogate for someone else.
+7 ; User (DUZ) is authorized to see the message, but the someone else
+8 ; (XMDUZ) isn't. We must check to see if we can allow the user to
+9 ; forward the message to XMDUZ.
+10 ; Show 'subject' & 'from'
DO NOGOID^XMJMP2(XMZ,XMZREC,1)
+11 DO SHOW^XMJERR
+12 SET X=$$FORWARD^XMXSEC(DUZ,XMZ,XMZREC)
+13 IF XMDUZ=.6
Begin DoDot:1
+14 IF $$CLOSED^XMXSEC(XMZREC)
DO ERRSET^XMXUTIL(39020)
QUIT
+15 IF $$CONFID^XMXSEC(XMZREC)
DO ERRSET^XMXUTIL(39021)
End DoDot:1
+16 IF $DATA(XMERR)
Begin DoDot:1
+17 DO SHOW^XMJERR
+18 if XMWAIT
DO WAIT^XMXUTIL
End DoDot:1
QUIT
+19 NEW DIR,X,Y
+20 WRITE !
+21 SET DIR(0)="Y"
+22 ;Do you want to forward this message to |1|
+23 DO BLD^DIALOG(37104,XMV("NAME"),"","DIR(""A"")","F")
+24 ; No
SET DIR("B")=$$EZBLD^DIALOG(39053)
+25 DO ^DIR
if 'Y!$DATA(DIRUT)
QUIT
+26 KILL DIR,X,Y
+27 NEW XMERROR,XMINSTR,XMMSG
+28 IF XMDUZ=.6
DO ASKSHARE^XMXADDR1(.XMINSTR)
if $DATA(XMERROR)
QUIT
+29 SET XMINSTR("FWD BY")=XMV("DUZ NAME")
+30 DO FWDMSG^XMXMSGS(DUZ,"",XMZ,XMDUZ,.XMINSTR,.XMMSG)
+31 IF $DATA(XMERR)
Begin DoDot:1
+32 DO SHOW^XMJERR
+33 if XMWAIT
DO WAIT^XMXUTIL
End DoDot:1
QUIT
+34 IF $DATA(XMMSG)
Begin DoDot:1
+35 WRITE !,XMMSG
+36 if XMWAIT
DO WAIT^XMXUTIL
End DoDot:1
+37 SET XMOK=1
+38 QUIT