#include %VHMacro
/*
LandCodeViaCookie()
#define LandCode "LandCode"
New LandCode,Taal,Expires,blnCookieIsEqual
Set LandCode=$$$UCase($G(%request.Data("LandCode",1)))
Set Taal=$$$UCase($G(tmpRqData("taal",1)))
Quit:(Taal="F")&&(LandCode'?1(1"BE",1"NL")) "BE"
; Else
;d WL^vhDBG("LC="_LandCode)
If LandCode?1(1"BE",1"NL") Do
. // Calculate expiration date
. Set Expires = +$H+365
. Set Expires = $ZD(Expires,11)_", "_$ZD(Expires, 2)_" 00:00:00 GMT"
. Set blnCookieIsEqual=(LandCode=$G(%request.Cookies($$$LandCode,1)))
. ;d WL^vhDBG($S(blnCookieIsEqual:"Cookie already set to "_LandCode, 1:"Set cookie"))
. Do:('blnCookieIsEqual) %response.SetCookie($$$LandCode, LandCode, Expires)
Else If LandCode="WIS" Do
. Do:($D(%request.Cookies($$$LandCode))) %response.SetCookie($$$LandCode, LandCode, "-1")
. Kill tmpRqData("LandCode",1)
. ;d WL^vhDBG("Delete cookie")
Else If $D(%request.Cookies($$$LandCode)) Do
. Set LandCode=$G(%request.Cookies($$$LandCode,1))
. Set:(LandCode="") LandCode=$G(%request.Cookies($$$LandCode))
. ;d WL^vhDBG("Get cookie: new="_LandCode )
. Set LandCode=$$$UCase(LandCode)
Else Do
. ;d WL^vhDBG("No preset: LandKeuze")
Quit LandCode
*/
InitializeCSP
#define LandKeuzeDFL 1
#define LabelType "L"
#define LastKM "Diepte"
#define GroepKM "OL"
#define WebTextVal(%v) ##class(cspBasis.ProductList).WebTextValue(%v,Taal,"L")
#define GetImgUrl(%v) ##class(Res.VertalingLink).GetLinkVertaling("OLW",%v,"LB",Taal,,"WWW")
s:('$D(%ClientIP)) %ClientIP="192.168.1.97"
Set GroepID=$$$GroepKM
Set UseWildCards=1
Set ComputerName=$ZUTIL(110)
Set NameSpace=$ZUTIL(67,6,$J)
Set Taal=$$$UCase($G(tmpRqData("taal",1)))
Set:(Taal="")||("N;F;D;E"'[Taal) Taal="N" ; VH's Default
Set LandCode=$$$UCase($G(tmpRqData("LandCode",1)))
If LandCode="" Do
. Set LandCode=$G(LandCodeViaCookie)
. ;d WL^vhDBG("LandCode Via Cookie, LC="_LandCode)
Set blnLandKeuze=((LandCode="")||("BE;NL"'[LandCode))
Set:(blnLandKeuze)&&($$$LandKeuzeDFL) LandCode="BE"
d:(blnLandKeuze) WL^vhDBG("Landkeuze, LC="_LandCode)
;w "Session ID="_%session.SessionId_" - "_$S(%session.NewSession:"first", 1:"subsequent")_" request - EventClass="_%session.EventClass
Set blnImgLarge=(''$G(%request.Data("IMGHIRES",1)))
Do iniPreloadMetaObjs
;Do ##class(Prod.Kenmerk.Utils).PRLijstViaCriteria(GroepID,"ArPR",.tmpRqData)
Do ##class(Prod.Kenmerk.Utils).PRLijstViaCriteriaExtra(GroepID,"ArPR",.tmpRqData,$$$LastKM,.arLastKMVal)
Do iniVertaalMetaLabels
/*
Set BPLastKM=""
If $D(tmpRqData($$$LastKM)) Do
. New lbLastKMValIntern,lbOtherKMValIntern,i,VTL,HRef
. Set LastMetaObj=MetaArray($$$LastKM)
. Set lbLastKMValIntern=$G(arLastKMVal("SORTED","KMVAL"))
. Set lbLastKMVal=""
. For i=1:1:$LL(lbLastKMValIntern) Set:($LG(lbLastKMValIntern,i)'="") lbLastKMVal=lbLastKMVal_$LB(LastMetaObj.VertaalItem($LI(lbLastKMValIntern,i),Taal,"K"))
. Set BPLastKM=$$$LCase(MetaArray($$$LastKM,"VTL"))_" "_$$LCVTSimple^vhLib(lbLastKMVal," - ")
. Do iniSetOtherKMVal
. ;d WL^vhDBG("Values"_$$$ArrayTT("arLastKMVal"))
. Set lbOtherKMValIntern=$G(arLastKMVal("SORTED","OTHER"))
. Set lbOtherKMVal=""
. ; Build Texts
. Set FrameURL=%request.URL_"?"_##class(cspBasis.ProductList).CQueryString(.tmpRqData)
. For i=1:1:$LL(lbOtherKMValIntern) Do:($LG(lbOtherKMValIntern,i)'="")
.. Set VTL=##class(Res.Vertaling).GetVertalingPlus("OLW","AndereKMDiepte","L",Taal)_" "_LastMetaObj.VertaalItem($LI(lbOtherKMValIntern,i),Taal,"K")
.. Set HRef=""_""_VTL_""_""
.. ;Set VTL=LastMetaObj.VertaalItem($LI(lbOtherKMValIntern,i),Taal,"K")
.. ;Set HRef=""_VTL_""
.. Set lbOtherKMVal=lbOtherKMVal_$LB(HRef)
. ;Set LastKMOtherVal=""
. Set LastKMOtherVal=$$LCVTSimple^vhLib(lbOtherKMVal," - ") ; ," - ")
*/
Set BPLastKM=""
If $D(tmpRqData($$$LastKM))&&($LL($G(arLastKMVal("SORTED","KMVAL")))=1) Do
. New LastKMValIntern,lbAllKMValIntern,lbAllKMVal,QSLastKMVal,LastMetaObj,i,VTL,FrameURL,HRef,classSpan ; BPLastKM mag niet ge-newd worden
. Set LastKMValIntern=$LG(arLastKMVal("SORTED","KMVAL"),1) ; Slechts 1 beperking op LastKM
. Quit:(LastKMValIntern="")
. Set LastMetaObj=MetaArray($$$LastKM)
. Set BPLastKM=MetaArray($$$LastKM,"VTL")
. Set lbAllKMValIntern=$G(arLastKMVal("SORTED","ALL"))
. Set lbAllKMVal=""
. ; Build Texts
. Set QSLastKMVal=$$$LastKM_"="_$ZCVT(LastKMValIntern,"o","URL")
. Set FrameURL=%request.URL_"?"_##class(cspBasis.ProductList).CQueryString(.tmpRqData)
. For i=1:1:$LL(lbAllKMValIntern) Do:($LG(lbAllKMValIntern,i)'="")
.. Set VTL=LastMetaObj.VertaalItem($LI(lbAllKMValIntern,i),Taal,"K")
.. Set classSpan=$S($F(LastKMValIntern,$LI(lbAllKMValIntern,i))>0:"clsLastKMBtnAct",1:"clsLastKMBtn")
.. Set HRef=""_""_VTL_""_""
.. Set lbAllKMVal=lbAllKMVal_$LB(HRef)
. Set LastKMAllVal=$$LCVTSimple^vhLib(lbAllKMVal," - ")
. Set LastKMOtherVal=LastKMAllVal
// ProductTitle
If $L($G(tmpRqData("SubType",1)))&&('$D(tmpRqData("SubType",2))) Do
. Set PageTitle=##class(Res.Vertaling).GetVertalingPlus("PK",tmpRqData("SubType",1),"K",Taal)
Else Do
. Set PageTitle=##class(cspBasis.ProductList).WebTextValue("ProdInfoTitel",Taal,"L")
// Landkeuze veranderen
#If ($ZCVT($$$Server,"U")["WWW")
Set blnShowLcWIS=0
#Else
Set blnShowLcWIS=1
#EndIf
Set QScodeLeeg=$$iniClearLandCodeFromQS
Set QScodeWIS=QScodeLeeg_"&LandCode=WIS"
Set QScodeBE=QScodeLeeg_"&LandCode=BE"
Set QScodeNL=QScodeLeeg_"&LandCode=NL"
Set TagVlagBE="
"
Set TagVlagNL="
"
Quit
iniPreloadMetaObjs
New rs
Set rs=##class(%ResultSet).%New("Prod.Kenmerk.MetaDefinitie:LijstPerGroep")
Do rs.Execute(GroepID)
For Quit:('rs.Next()) Set MetaArray(rs.Data("Kenmerk"))=##class(Prod.Kenmerk.MetaDefinitie).%OpenId(GroepID_"||"_rs.Data("Kenmerk"))
Do rs.%Close()
Quit ; De objecten moeten in het geheugen blijven; ze worden pas aan het einde van de CSP-Body gesloten.
;
; Close MetaObjects
;New k,tmpOref
;Set k=""
;For Set k=$O(MetaArray(k)) Quit:(k="") Set tmpOref=MetaArray(k) Do tmpOref.%Close() Kill MetaArray(k)
;Quit
iniVertaalMetaLabels
New k,tmpOref
Set k=""
For Set k=$O(MetaArray(k)) Quit:(k="") Do
. Set tmpOref=MetaArray(k)
. Set MetaArray(k,"VTL")=tmpOref.VertaalItem("§",Taal,$$$LabelType) ; Vertaling van de MetaDefinie zelf
Quit
iniSetOtherKMVal
New i,Pos
Set arLastKMVal("SORTED","OTHER")=$G(arLastKMVal("SORTED","ALL"))
Quit:($G(arLastKMVal("SORTED","KMVAL"))="")
For i=1:1:$LL(arLastKMVal("SORTED","KMVAL")) Do
. Set Pos=$LF(arLastKMVal("SORTED","ALL"),$LG(arLastKMVal("SORTED","KMVAL"),i))
. $$$DoLBDeleteAtIf((Pos>0),arLastKMVal("SORTED","OTHER"),Pos)
Quit
iniClearLandCodeFromQS()
Quit $$iniClearParamFromQS($G(%request.CgiEnvs("QUERY_STRING")),"LandCode")
iniClearParamFromQS(QS,Param)
Quit:(Param="") ""
New tmpQS,SubQS
Set tmpQS=QS
For Set SubQS=$$$TextBetween("&"_tmpQS_"&","&"_Param_"=","&") Quit:(SubQS="") Do
. Set tmpQS=$$$Replace("&"_tmpQS,"&"_Param_"="_SubQS,"")
Set:($E(tmpQS,1)="&") $E(tmpQS,1)=""
Quit tmpQS
/*
WebTextValue() ; Parameters: Intern,Taal,TextType
#define WEBTYPE "OLW"
Quit:($G(Intern)="") ""
New Val
Set Val=##class(Res.Vertaling).GetVertalingPlus($$$WEBTYPE,Intern,TextType,Taal)
Quit $S(Val="":Intern_" ("_TextType_"-"_Taal_")", 1:Val)
*/
/*
DataDefValue() ; Parameters: Taal,GroepID,UnID,Kenmerk,TextType,ListItems,ListSep
New LBVal
Set LBVal=##class(cspBasis.ProductList).DataDefValueList(.Taal,.GroepID,.UnID,.Kenmerk,.TextType,.ListItems,.ListSep)
Quit UnID_" - "_Kenmerk_" - "_$$LCVT^vhLib(LBVal)
*/
DataDefValueList() ; Parameters: Taal,GroepID,UnID,Kenmerk,TextType,ListItems,ListSep
Quit:($G(GroepID)="")!($G(UnID)="")!($G(Kenmerk)="") ""
New objDD,i,LBVal,LBX
Set objDD=##class(Prod.Kenmerk.DataDefinitie).%OpenId(UnID_"||"_GroepID_"||"_Kenmerk)
Quit:('objDD) ""
Set LBX=$$ddvBuildItemsLB(objDD,.ListItems)
; Quit zonder vertaling
Quit:($G(TextType)="") $S($G(ListSep)="":LBX, 1:$LB($$LCVTSimple^vhLib(LBX,";")))
; Met LBX: items vertalen
Set LBVal=""
If $L($G(ListSep)) Do ; ListSeparator is defined ==> create textlist of concat values
. Do ddvAddToLB(.LBVal,objDD.VertaalConcatList(LBX,ListSep,Taal,TextType))
Else Do
. For i=1:1:$LL(LBX) Do ; put separate values in $LB()
.. Do ddvAddToLB(.LBVal,objDD.VertaalItem($LI(LBX,i),Taal,TextType))
Do objDD.%Close()
Quit LBVal
ddvBuildItemsLB(objDD,ListItems)
; Mogelijke waarden voor ListItems: bvb.: "*" , "1" , "1;2" , "1;2;5;7"
New LBX,i,CntW
Set LBX=""
If ListItems="*" Do
. For i=1:1:objDD.Waarden.Count() Do ddvAddToLB(.LBX,objDD.Waarden.GetAt(i))
Else Do
. Set CntW=objDD.Waarden.Count()
. For i=1:1:$L(ListItems,";") Do:(+$P(ListItems,";",i)'>CntW) ddvAddToLB(.LBX,objDD.Waarden.GetAt(+$P(ListItems,";",i)))
Quit LBX
ddvAddToLB(LB,X)
Set:($L(X)) LB=LB_$LB(X)
Quit
DataDefValueListURL() ; Parameters: Taal,GroepID,UnID,Kenmerk,TextType,ListItems,ListSep,ToepasCode
#define ToepasCode $G(ToepasCode,"WWW")
#define VertaalLinkItem(%v) ##class(Res.VertalingLink).GetLinkVertaling(KenmType,%v,TextType,Taal,,$$$ToepasCode)
Quit:($G(GroepID)="")!($G(UnID)="")!($G(Kenmerk)="") ""
New objDD,i,LBVal,LBX,KenmType
Set objDD=##class(Prod.Kenmerk.DataDefinitie).%OpenId(UnID_"||"_GroepID_"||"_Kenmerk)
Quit:('objDD) ""
Set KenmType=objDD.Kenmerk.GetVertalingsGroep()
Set LBX=$$ddvBuildItemsLB(objDD,.ListItems)
; Met LBX: items vertalen
Set LBVal=""
If $L($G(ListSep)) Do
. Set LBVal=$LB("NOT IMPLEMENTED By WimV")
. ;Do ddvAddToLB(.LBVal,objDD.VertaalConcatListXxxURL (LBX,ListSep,Taal,TextType))
Else Do
. For i=1:1:$LL(LBX) Do ; put separate values in $LB()
.. Do ddvAddToLB(.LBVal,$$$VertaalLinkItem($LI(LBX,i)))
Do objDD.%Close()
Quit LBVal
ddvAddToLBxxx(LB,X)
// See ddvAddToLB()
;Set:($L(X)) LB=LB_$LB(X)
;Quit
ddvBuildItemsLBxxx(objDD,ListItems)
// See ddvBuildItemsLB()
;...
;Quit LBX
;Prod.Kenmerk.DataDefinitie .GetFullURL()
DataDefValueURL() ; Parameters: Taal,GroepID,UnID,Kenmerk,TextType
#define ToepasCode "WWW"
Quit "Code has been moved from Routine to Method."
;MetaDefinitie.VertaalItem()
VertaalItem() ; Parameters: X,Taal,TextType,ClearEmptyChar
Quit "Code has been moved from Routine to Method."
;MetaDefinitie.VertaalConcatList()
VertaalConcatList() ; Parameters: LBX,ListSep,Taal,TextType
Quit "Code has been moved from Routine to Method."
/*
;MetaDefinitie.VertaalItem()
VertaalItem() ; Parameters: X,Taal,TextType,ClearEmptyChar
; X is de waarde die moet vertaald worden.
; Eerst wordt gezocht naar een sleutel voor een VertaalTransformatie.
; Als deze niet bestaat, of de transformatie geeft waarde "" (leeg) terug voor Sleutel, dan wordt gezocht naar de directe vertaling.
; Als de Sleutel niet leeg is, wordt de transformatie op X toegepast --> de nieuwe waarde van X is de interne waarde die vertaald wordt.
#define CharEmpty "~"
New VTL
Set ClearEmptyChar=$G(ClearEmptyChar,0)
Set VTL=$$vtiVertaalWithEmpty
Quit $S(ClearEmptyChar&&(VTL=$$$CharEmpty):"", 1:VTL)
vtiVertaalWithEmpty()
Quit:($G(X)="") ""
New KenmType,emTransfVTL,Sleutel,ValVTL
Set KenmType=..GetVertalingsGroep()
Set emTransfVTL=..GetVTLTransformByType(TextType)
Set Sleutel=""
If ($IsObject(emTransfVTL))&&($L(emTransfVTL.SleutelSelectExecType)) Do
. ; Vertaal via Transform
. Do EXEC^vhRES(emTransfVTL.SleutelSelectExecType,emTransfVTL.SleutelSelectExec,"Sleutel","(X)") ; X wordt doorgegeven en Sleutel wordt teruggekregen
. If $L(Sleutel) Do
. . Do:($L(emTransfVTL.WaardeExec)) EXEC^vhRES(emTransfVTL.WaardeExecType,emTransfVTL.WaardeExec,"X","(X)") ; de getransformeerde waarde wordt terug in X geplaatst
. . Set ValVTL=##class(Res.Vertaling).GetVertalingPlus(KenmType,Sleutel,TextType,Taal,X) ; GetVertalingPlus geeft nooit "" terug
;d:($IsObject(emTransfVTL)&&($L(Sleutel))) WL^vhDBG(..%Id()_" "_emTransfVTL.SleutelSelectExecType_" "_emTransfVTL.SleutelSelectExec)
Quit:($L(Sleutel)) ValVTL
; Else
Set ValVTL=##class(Res.Vertaling).GetVertalingPlus(KenmType,X,TextType,Taal) ; Vertaal via standaard Res.Vertaling
Quit:($L(ValVTL)) ValVTL
;Quit $S('$L(ValVTL):$$vtiErrorVTL, 1:ValVTL)
;Quit $$vtiErrorVTL
vtiErrorVTL()
Quit $ZCVT($S($L($G(Sleutel)):Sleutel, 1:X)_" ("_TextType_"-"_Taal_")","O","HTML")
;MetaDefinitie.VertaalConcatList()
VertaalConcatList() ; Parameters: LBX,ListSep,Taal,TextType
; ListItems worden vertaald en geconcateneerd; indien vertaling via een Vertaalsleutel, dan wordt de geconcateneerde text vervangen.
Quit:($G(LBX)="") ""
Quit:($LL(LBX)=0) ""
Quit:($LI(LBX,1)="") ""
New KenmType,emTransfVTL,Sleutel,i,ConcatVTL,ValVTL,Concat,X
Set KenmType=..GetVertalingsGroep()
Set emTransfVTL=..GetVTLTransformByType(TextType)
Set X=$LI(LBX,1)
Quit:('$IsObject(emTransfVTL)) X_" ("_TextType_"-"_Taal_") geen emTransform in Concat."
Do EXEC^vhRES(emTransfVTL.SleutelSelectExecType,emTransfVTL.SleutelSelectExec,"Sleutel","(X)") ; 1 X wordt doorgegeven en Sleutel wordt teruggekregen
; hierboven wordt verondersteld dat de TransformatieSleutel niet afhankelijk is van de waarde van X.
If $G(Sleutel)="" Do
. ; Directe vertalen en concateneren
. Set ConcatVTL=""
. For i=1:1:$LL(LBX) Do
.. Set ValVTL=##class(Res.Vertaling).GetVertalingPlus(KenmType,$LI(LBX,i),TextType,Taal)
.. Set:('$L(ValVTL)) ValVTL=$LI(LBX,i)_" ("_TextType_"-"_Taal_")"
.. Set ConcatVTL=$$vclAddValue(ConcatVTL,ValVTL,ListSep)
Else Do
. ; Vertaling via sleutel; eerst afzonderlijke items transformeren, dan concateneren, dan in sleutel vervangen
. Set Concat=""
. For i=1:1:$LL(LBX) Do
.. Set X=$LI(LBX,i)
.. Do:($L(emTransfVTL.WaardeExec)) EXEC^vhRES(emTransfVTL.WaardeExecType,emTransfVTL.WaardeExec,"X","(X)") ; de getransformeerde waarde wordt terug in X geplaatst
.. Set Concat=$$vclAddValue(Concat,X,ListSep)
. Set ConcatVTL=##class(Res.Vertaling).GetVertalingPlus(KenmType,Sleutel,TextType,Taal,Concat)
Quit $S('$L(ConcatVTL):$$vclErrorVTL, 1:ConcatVTL)
vclAddValue(Text,AddVal,ListSep)
Quit:('$L(AddVal)) Text
Quit $S('$L(Text):"", 1:Text_ListSep)_AddVal
vclErrorVTL()
Quit $ZCVT("LB van "_$LL(LBX)_" items"_" ("_TextType_"-"_Taal_$S($L($G(Sleutel)):"-"_Sleutel, 1:"")_")","O","HTML")
*/
/*
#define ToepasCode "WWW"
#define VertaalLinkItem(%v) ##class(Res.VertalingLink).GetLinkVertaling(KenmType,%v,TextType,Taal,,$$$ToepasCode)
Quit:($G(GroepID)="")!($G(UnID)="")!($G(Kenmerk)="") ""
New objDD,ValVTL,X,KenmType
Set objDD=##class(Prod.Kenmerk.DataDefinitie).%OpenId(UnID_"||"_GroepID_"||"_Kenmerk)
Quit:('objDD) ""
Set KenmType=objDD.Kenmerk.GetVertalingsGroep()
Set X=objDD.Waarden.GetNext("")
Set ValVTL=$$$VertaalLinkItem(X) ; ##class(Res.VertalingLink).GetLinkVertaling(KenmType,X,TextType,Taal,,$$$ToepasCode)
Do objDD.%Close()
Quit ValVTL
*/
/* * /
;##class(Res.VertalingLink).GetLinkVertaling(Groep,Intern,TextType,Taal,VervangWaarde,Toepassing)
GetLinkVertaling() ; Parameters: Groep,Intern,TextType,Taal,VervangWaarde,Toepassing
Quit:('$L($G(Intern))) ""
Quit:('$L($G(Groep))) "" ; Intern_" (Groep=?)"
New objVTL,Val
Set:($E(Intern,2)="%") Groep="%" ; "%"-sleutels worden opgezocht in de "%"-vertalingsgroep
Set objVTL=##class(Res.VertalingLink).%OpenId(Groep_"||"_Intern_"||"_TextType_"||"_Taal)
Quit:('objVTL) "" ; Intern_" ("_Groep_"-.-"_TextType_"-"_Taal_")"
Set Val=objVTL.URLGet($G(Toepassing))
Do objVTL.%Close()
Quit Val
;Res.VertalingLink.DirectoryGet(Toepassing)
DirectoryGet() ; Parameters: Toepassing
New BestID,tmpDir
Set BestID=##class(Prod.Kenmerk.BT.RootDir).BestMatchID(..DirectoryCode,$G(Toepassing),$G(ComputerName,$ZUTIL(110)),$G(NameSpace,$ZUTIL(67,6,$J)))
&sql(SELECT Directory INTO :tmpDir FROM Prod_Kenmerk_BT.RootDir WHERE ID=:BestID)
Quit $G(tmpDir)
;Res.VertalingLink.NaamGet()
NaamGet()
Quit ..Vertaling_$S('$L(..Vertaling):"", $ZCVT(..Vertaling,"U")[("."_..Extensie):"", 1: "."_..Extensie)
URLGet() ; Parameters: Toepassing
New Dir
Set Dir=..DirectoryGet($G(Toepassing,"88"))
Quit Dir_$S($L(Dir):"/", 1:"")_..NaamGet()
/* */
/*
FitImage() ; Parameters: sURL
Quit:($G(sURL)="") ""
Quit "javascript:"_$S($$fimIsImage(sURL):"ShowFitImage", 1:"ShowDocument")_"("""_sURL_""");"
fimIsImage(sURL)
Quit ($ZCVT(sURL,"U")'?.E1(1".PDF",1".HTM",1".XML").E) && ($ZCVT(sURL,"U")?.E1(1".GIF",1".JPG",1".JPE",1".BMP").E)
*/