Updated Rico2 and Rico3 with fixes for IE9. Updated Rico2 version to 2.3. Updated...
[infodrom/rico3] / examples / dotnet / LoadRicoClient.ascx
1 <%@ Control Language="vb" debug="true"%>\r
2 \r
3 <script runat="server">\r
4 \r
5 Public jsDir as String ="../../ricoClient/js/"       ' directory containing Rico's javascript files\r
6 Public cssDir as String ="../../ricoClient/css/"     ' directory containing Rico's css files\r
7 Public imgDir as String ="../../ricoClient/images/"  ' directory containing Rico's image files\r
8 Public transDir as String =jsDir & "translations/"\r
9 Public baselibsDir as String =jsDir & "baselibs/"\r
10 \r
11 Public jslib as String = "prototype-1.6"   ' base library\r
12 Public modules as String                   ' comma separated list of Rico modules to load\r
13 Public ricoLogging as Boolean = false      ' enable javascript console logging?\r
14 Public language as String                  ' if left unset, language will be set automatically based on request's HTTP_ACCEPT_LANGUAGE\r
15 Public checkQueryString as Boolean = true  ' load settings from QueryString?  true for demo, false for production\r
16 Public LoadBaseLib as Boolean = true       ' load base Javascript library (prototype, jQuery, etc) from Rico directory?\r
17 Public grid_striping as Boolean = true     ' apply row striping to LiveGrids?\r
18 Public jQuery_theme_path as String = "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/"\r
19 \r
20 Protected theme as String = "j-ui-lightness"  ' jquery themes start with j-, rico themes start with r-\r
21 \r
22 \r
23 Protected Overrides Sub Render(writer as HTMLTextWriter)\r
24   if checkQueryString then ricoLogging=CBool(trim(Request.QueryString("log")) <> "")\r
25   SetConfig(writer)\r
26 \r
27   dim qs as String\r
28   if checkQueryString then\r
29     qs=trim(Request.QueryString("lib"))\r
30     if qs<>"" then jslib=qs\r
31   end if\r
32   LoadLib(writer, LCase(jslib))\r
33 \r
34   if IsNothing(language) then language=Request.ServerVariables("HTTP_ACCEPT_LANGUAGE")\r
35   setLang(writer, language)\r
36 \r
37   if checkQueryString then\r
38     qs=trim(Request.QueryString("theme"))\r
39     if qs<>"" then theme=qs\r
40   end if\r
41   if theme<>"" then\r
42     LoadTheme(writer, theme)\r
43   end if\r
44   if modules<>"" then\r
45     dim ricoModule as String\r
46     dim arModules=split(modules,",")\r
47     for each ricoModule in arModules\r
48       requireRicoModule(writer, ricoModule)\r
49     next\r
50   end if\r
51 end sub\r
52 \r
53 \r
54 ' -------------------------------------------------------------\r
55 ' do client-side initialization\r
56 ' -------------------------------------------------------------\r
57 Protected sub SetConfig(writer as HTMLTextWriter)\r
58   writer.Write(vbLf & "<script type='text/javascript'>")\r
59   writer.Write(vbLf & "Rico_CONFIG = {")\r
60   if ricoLogging then writer.Write(vbLf & "enableLogging: true,")\r
61   writer.Write(vbLf & "jsDir: '" & jsDir & "',")\r
62   writer.Write(vbLf & "cssDir: '" & cssDir & "',")\r
63   writer.Write(vbLf & "imgDir: '" & imgDir & "'")\r
64   writer.Write(vbLf & "};")\r
65   writer.Write(vbLf & "</" & "script>")\r
66 end sub\r
67 \r
68 \r
69 ' -------------------------------------------------------------\r
70 ' set theme to one of the jQuery Themeroller themes\r
71 ' -------------------------------------------------------------\r
72 Public WriteOnly Property jTheme() As String\r
73   Set(ByVal ThemeName As String)\r
74     theme="j_" & ThemeName\r
75   End Set\r
76 End Property\r
77 \r
78 \r
79 ' -------------------------------------------------------------\r
80 ' set theme to one of the Rico themes\r
81 ' -------------------------------------------------------------\r
82 Public WriteOnly Property ricoTheme() As String\r
83   Set(ByVal ThemeName As String)\r
84     theme="r_" & ThemeName\r
85   End Set\r
86 End Property\r
87 \r
88 \r
89 ' -------------------------------------------------------------\r
90 ' disable themes\r
91 ' -------------------------------------------------------------\r
92 Public WriteOnly Property noTheme() As String\r
93   Set(ByVal ThemeName As String)\r
94     theme=""\r
95   End Set\r
96 End Property\r
97 \r
98 \r
99 ' -------------------------------------------------------------\r
100 ' Check specifed languages and see if there is a ricoLocale file to match\r
101 ' -------------------------------------------------------------\r
102 Protected sub setLang(writer as HTMLTextWriter, lang as String)\r
103   dim lang2,fname,i\r
104   \r
105   dim arLang=split(LCase(lang),",")\r
106   for i=0 to ubound(arLang)\r
107     lang2=lcase(left(trim(arLang(i)),2))\r
108     if lang2="en" then exit for\r
109     fname=transDir & "ricoLocale_" & lang2 & ".js"\r
110     if System.IO.File.Exists(Server.MapPath(fname)) then\r
111       writer.Write("<script src='" & fname & "' type='text/javascript'></" & "script>")\r
112       exit for\r
113     end if\r
114   next\r
115 end sub\r
116 \r
117 \r
118 Protected sub LoadLib(writer as HTMLTextWriter, baseLib as String)\r
119   if LoadBaseLib then\r
120     if InStr(baseLib,"/") > 0 then\r
121       writer.Write(vbLf & "<script src='http://ajax.googleapis.com/ajax/libs/" & baseLib & "' type='text/javascript'></" & "script>")\r
122     else\r
123       writer.Write(vbLf & "<script src='" & baselibsDir & baseLib & ".js' type='text/javascript'></" & "script>")\r
124     end if\r
125   end if\r
126   requireRicoJS(writer, "")\r
127   requireRicoJS(writer, "2" & left(baseLib,3))\r
128   writer.Write(vbLf & "<script src='" & transDir & "ricoLocale_en.js' type='text/javascript'></" & "script>")\r
129   requireRicoCSS(writer, "rico")\r
130   requireRicoJS(writer, "UI")\r
131 end sub\r
132 \r
133 \r
134 \r
135 ' -------------------------------------------------------------\r
136 ' set theme\r
137 ' "j-ui-lightness" for a Themeroller theme\r
138 ' "r-greenHdg" for a native Rico theme\r
139 ' -------------------------------------------------------------\r
140 Protected sub LoadTheme(writer as HTMLTextWriter, theme as String)\r
141   dim prefix,themeFile\r
142   prefix=left(theme,1)\r
143   themeFile=mid(theme,3)\r
144   select case prefix\r
145     case "j":\r
146       requireRicoJS(writer, "Themeroller")\r
147       'writer.Write(vbLf & "<link type='text/css' rel='stylesheet' href='" & cssDir & "jquery-base/ui.base.css' />")\r
148       writer.Write(vbLf & "<link type='text/css' rel='Stylesheet' href='" & jQuery_theme_path & themeFile & "/jquery-ui.css' />")\r
149     case "r":\r
150       requireRicoCSS(writer, themeFile)\r
151   end select\r
152   if grid_striping then writer.Write(vbLf & "<link type='text/css' rel='stylesheet' href='" & cssDir & "striping_" & themeFile & ".css' />")\r
153 end sub\r
154 \r
155 \r
156 Protected sub requireRicoModule(writer as HTMLTextWriter, modulename as String)\r
157   writer.Write(vbLf & "<script type='text/javascript'>Rico.loadModule('" & trim(modulename) & "');</" & "script>")\r
158 end sub\r
159 \r
160 \r
161 Protected sub requireRicoJS(writer as HTMLTextWriter, filename as String)\r
162   writer.Write(vbLf & "<script src='" & jsDir & "rico" & filename & ".js' type='text/javascript'></" & "script>")\r
163 end sub\r
164 \r
165 \r
166 Protected sub requireRicoCSS(writer as HTMLTextWriter, filename as String)\r
167   writer.Write(vbLf & "<link href='" & cssDir & filename & ".css' type='text/css' rel='stylesheet' />")\r
168 end sub\r
169 \r
170 </script>\r