#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) */