InitializeCSP // Set time out to 15 minutes = 900 seconds Set %session.AppTimeout=900 Set GroepID="OL" Set ComputerName=$ZUTIL(110) Set NameSpace=$ZUTIL(67,6,$J) Set Taal=$ZCVT($G(%request.Data("taal",1)), "U") Set:(Taal="")!("N;F;D;E"'[Taal) Taal="N" ; VH's Default Set MenuArray="" Do ##class(cspBasis.ProductMenu).PrepareMenus("MenuArray",GroepID) Do ##class(cspBasis.ProductMenu).StripEmptyMenus("MenuArray") Do ##class(cspBasis.ProductMenu).VertaalMenus("MenuArray","MenuVTL",Taal,GroepID) ; "MenuVTL" loopt gelijk met "MenuArray". Deze laatste bevat de interne waarden Quit PrepareMenus ; Parameters: Ref,GroepID #define TRIM(%v) $ZSTRIP(%v,"<>W") New rsMain,MetaMain,SortMain,MainVal New rsSub, MetaSub, SortSub, SubVal, LBSub New i,j, ii,jj, I ;Do DEBUG^%Serenji("labelDebug+1^"_$zn,"192.168.1.97") ;labelDebug Kill @Ref Set @Ref="" Set (SortMain,SortSub)="" Set MetaMain=##class(Prod.Kenmerk.MetaDefinitie).%OpenId(GroepID_"||ProductType") Set MetaSub=##class(Prod.Kenmerk.MetaDefinitie).%OpenId(GroepID_"||SubType") Set:(MetaMain) SortMain=$$pmnObjectListToLB(MetaMain.WaardenSortering) Set:(MetaSub) SortSub=$$pmnObjectListToLB(MetaSub.WaardenSortering) Do:(MetaMain) MetaMain.%Close() Do:(MetaSub) MetaSub.%Close() Set rsMain=##class(%ResultSet).%New("Prod.Kenmerk.DataDefinitie:LijstBeperkteKenmerkWaarden") Do rsMain.Execute(GroepID,"ProductType","ProductType","%") For Quit:'rsMain.Next() Do . Set MainVal=$$$TRIM($LG(rsMain.GetData(1),1)) . Quit:('$L(MainVal)) . Set i=$$pmnGetLBIndex(SortMain,MainVal) ; sorteer-positie . ;Set i=$$pmnGetSortIndex($LF(SortMain,MainVal),$Na(@Ref)) ; sorteer-positie . Set @Ref@(i)=MainVal . Set rsSub=##class(%ResultSet).%New("Prod.Kenmerk.DataDefinitie:LijstBeperkteKenmerkWaarden") . Do rsSub.Execute(GroepID,"SubType","ProductType","%"_MainVal_"%") . For Quit:'rsSub.Next() Do .. Set SubVal=$$$TRIM($LG(rsSub.GetData(1),1)) .. Quit:('$L(SubVal)) .. Set jj=$$pmnGetLBIndex(SortSub,SubVal) .. ;Set jj=$$pmnGetSortIndex($LF(SortSub,SubVal),$Na(@Ref@(i))) ; sorteer-positie .. Set @Ref@(i,jj)=SubVal . Do rsSub.%Close() Do rsMain.%Close() Quit pmnObjectListToLB(objList) New Key,Val,LB Set LB="" Set Key="" For Set Val=objList.GetNext(.Key) Quit:(Key="") Set LB=LB_$LB($$$TRIM(Val)) Quit LB pmnGetLBIndex(SortLB,Val) ; Geeft positie van Val in SortLB terug. Als Val niet voorkomt, wordt deze achteraan toegevoegd. Set I=$LF(SortLB,Val) If I=0 Do . Set SortLB=SortLB_$LB(Val) . Set I=$LL(SortLB) Quit I pmnGetSortIndex(I,SortRef) ; Vorige methode om de SortIndex te bepalen. If (I=0)&&(+$O(@SortRef@(""))'>0) Set I=$O(@SortRef@(""))-1 ; Negatief opbouwen Quit I StripEmptyMenus ; Parameters: Ref ; Maakt de volgnummers (nodes, subnodes) van @Ref aaneensluitend (1-2-3-4-5 ipv. 1-2-6-8-9). Quit:($G(Ref)="") Quit:('$D(@Ref)) New i,j,ii,tmpRef Set i="" For Set i=$O(@Ref@(i)) Quit:(i="") Do . Set ii=$O(tmpRef(""),-1)+1 . Set tmpRef(ii)=@Ref@(i) . Set j="" . For Set j=$O(@Ref@(i,j)) Quit:(j="") Do .. Merge tmpRef(ii,$O(tmpRef(ii,""),-1)+1)=@Ref@(i,j) Kill @Ref Merge @Ref=tmpRef Quit VertaalMenus ; Parameters: InRef,OutRef,Taal,GroepID #define TextType "K" Quit:($G(InRef)="") Set:($G(OutRef)="") OutRef=InRef ; als OutRef="" (leeg), dan vertaal en vervang @InRef. OPGELET: als OutRef niet gegeven ($D <--> $G), dan Default If '$D(@InRef) Do Quit . Kill @OutRef . Set @OutRef="" ; Objecten van MetaDefinitie zijn noodzakelijk voor de vertalingen New MetaMain,MetaSub,i,j,ii,tmpRef Set MetaMain=##class(Prod.Kenmerk.MetaDefinitie).%OpenId(GroepID_"||ProductType") Set MetaSub=##class(Prod.Kenmerk.MetaDefinitie).%OpenId(GroepID_"||SubType") If ('MetaMain)!('MetaSub) Do Quit . ; Als Metadefinitie niet bestaat kan geen vertaling uitgevoerd worden. . ; @InRef kopiëren naar @OutRef . If $Na(OutRef)'=$Na(InRef) Do .. Kill @OutRef .. Merge @OutRef=@InRef . Do:(MetaMain) MetaMain.%Close() . Do:(MetaSub) MetaSub.%Close() ; Else: vertaling maken in tmpRef Set i="" For Set i=$O(@InRef@(i)) Quit:(i="") Do . Set tmpRef(i)=MetaMain.VertaalItem(@InRef@(i),Taal,$$$TextType) . Set j="" . For Set j=$O(@InRef@(i,j)) Quit:(j="") Do .. Set tmpRef(i,j)=MetaSub.VertaalItem(@InRef@(i,j),Taal,$$$TextType) Do MetaMain.%Close() Do MetaSub.%Close() ; Copy tmpRef into @OutRef Kill @OutRef Merge @OutRef=tmpRef Quit CreateJSArrays() ; Parameters: RefCode,RefVTL,Taal #define CrLf $C(13,10) #define sErr i_","_j #define CommaWhenNext $S($O(@RefCode@(i,j))="":"", 1:",") ; Genereert JavaScript arrays voor ieder ProductType. ; Code is zoals in volgend voorbeeld: ; var SubURL1="ProductType=Bestekindeling&SubType="; ; arMNU_GR1 = new Array ( ; "Houten bestekinzetten", BaseURL+SubURL1+"Houten bestekinzetten", 0, ; "Kunststof bestekinzetten", BaseURL+SubURL1+"Kunststof bestekinzetten", 0, ; "Indelingssysteem ORGA-LINE", BaseURL+SubURL1+"Indelingssysteem ORGA-LINE", 0 ; ); Quit:($G(RefCode)="") Quit:($G(RefVTL)="") New sAll,sNew,i,j //Set sAll="var BaseURL=""ProductList.csp?taal="_Taal_"&"";"_$$$CrLf Set sAll="" Set i="" For Set i=$O(@RefCode@(i)) Quit:(i="") Do . If @RefCode@(i)="Nieuwigheden" Do Quit .. Set sAll=sAll_$$csjNieuwigheden(i) . Set sNew=""_$$$CrLf . Set sNew=sNew_"var SubURL"_i_"=""ProductType="_@RefCode@(i)_"&SubType="";"_$$$CrLf . Set sNew=sNew_"arMNU_GR"_i_" = new Array ("_$$$CrLf . Set j="" . For Set j=$O(@RefCode@(i,j)) Quit:(j="") Do .. Set sNew=sNew_""""_$G(@RefVTL@(i,j),$$$sErr)_""", BaseURL+SubURL"_i_"+"""_@RefCode@(i,j)_""", 0"_$$$CommaWhenNext_$$$CrLf . Set sNew=sNew_")"_$$$CrLf . Set sAll=sAll_sNew Quit sAll csjNieuwigheden(Num) New UrlNew Set UrlNew=##class(Res.VertalingLink).GetLinkVertaling("PK",@RefCode@(Num,1),"LI",Taal,,"WWW") Set sNew=""_$$$CrLf Set sNew=sNew_"arMNU_GR"_(Num)_" = new Array ("_$$$CrLf Set sNew=sNew_""""_$G(@RefVTL@(Num,1),$$$sErr)_""", """_UrlNew_""", 0"_$$$CrLf ;Set sNew=sNew_""""_$G(@RefVTL@(Num,1),$$$sErr)_""", ""http://testorga/nl_brochure.htm"", 0"_$$$CrLf Set sNew=sNew_")"_$$$CrLf Quit sNew WebTextValue() ; Parameters: Intern,Taal,TextType #define WEBTYPE "OLW" Quit:($G(Intern)="") "" New Val Set Val=##class(Res.Vertaling).GetVertaling($$$WEBTYPE,Intern,TextType,Taal) Quit $S(Val="":Intern_" ("_TextType_"-"_Taal_")", 1:Val)