Loading rico1 and rico3 files
[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 = "proto"           ' base library (proto, jquery, moo, dojo, ext, or glow)\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.7.2/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 ' Check specifed languages and see if there is a ricoLocale file to match\r
91 ' -------------------------------------------------------------\r
92 Protected sub setLang(writer as HTMLTextWriter, lang as String)\r
93   dim lang2,fname,i\r
94   \r
95   dim arLang=split(LCase(lang),",")\r
96   for i=0 to ubound(arLang)\r
97     lang2=lcase(left(trim(arLang(i)),2))\r
98     if lang2="en" then exit for\r
99     fname=transDir & "ricoLocale_" & lang2 & ".js"\r
100     if System.IO.File.Exists(Server.MapPath(fname)) then\r
101       writer.Write("<script src='" & fname & "' type='text/javascript'></" & "script>")\r
102       exit for\r
103     end if\r
104   next\r
105 end sub\r
106 \r
107 \r
108 Protected sub LoadLib(writer as HTMLTextWriter, baseLib as String)\r
109   dim baseFile,adapter\r
110   select case baseLib\r
111     case "proto":\r
112       baseFile="prototype"\r
113       adapter="2Proto"\r
114     case "jquery":\r
115       baseFile="jquery"\r
116       adapter="2jQuery"\r
117     case "moo":\r
118       baseFile="mootools"\r
119       adapter="2Moo"\r
120     case "dojo":\r
121       baseFile="dojo"\r
122       adapter="2Dojo"\r
123     case "ext":\r
124       baseFile="ext-core"\r
125       adapter="2Ext"\r
126     case "glow":\r
127       baseFile="glow.core"\r
128       adapter="2Glow"\r
129     case else:\r
130       Response.End\r
131   end select\r
132 \r
133   if LoadBaseLib then writer.Write(vbLf & "<script src='" & baselibsDir & baseFile & ".js' type='text/javascript'></" & "script>")\r
134   requireRicoJS(writer, "")\r
135   requireRicoJS(writer, adapter)\r
136   writer.Write(vbLf & "<script src='" & transDir & "ricoLocale_en.js' type='text/javascript'></" & "script>")\r
137   requireRicoCSS(writer, "rico")\r
138   requireRicoJS(writer, "UI")\r
139 end sub\r
140 \r
141 \r
142 \r
143 ' -------------------------------------------------------------\r
144 ' set theme\r
145 ' "j-ui-lightness" for a Themeroller theme\r
146 ' "r-greenHdg" for a native Rico theme\r
147 ' -------------------------------------------------------------\r
148 Protected sub LoadTheme(writer as HTMLTextWriter, theme as String)\r
149   dim prefix,themeFile\r
150   prefix=left(theme,1)\r
151   themeFile=mid(theme,3)\r
152   select case prefix\r
153     case "j":\r
154       requireRicoJS(writer, "Themeroller")\r
155       writer.Write(vbLf & "<link type='text/css' rel='stylesheet' href='" & cssDir & "jquery-base/ui.base.css' />")\r
156       writer.Write(vbLf & "<link type='text/css' rel='Stylesheet' href='" & jQuery_theme_path & themeFile & "/jquery-ui.css' />")\r
157     case "r":\r
158       requireRicoCSS(writer, themeFile)\r
159   end select\r
160   if grid_striping then writer.Write(vbLf & "<link type='text/css' rel='stylesheet' href='" & cssDir & "striping/" & themeFile & ".css' />")\r
161 end sub\r
162 \r
163 \r
164 Protected sub requireRicoModule(writer as HTMLTextWriter, modulename as String)\r
165   writer.Write(vbLf & "<script type='text/javascript'>Rico.loadModule('" & trim(modulename) & "');</" & "script>")\r
166 end sub\r
167 \r
168 \r
169 Protected sub requireRicoJS(writer as HTMLTextWriter, filename as String)\r
170   writer.Write(vbLf & "<script src='" & jsDir & "rico" & filename & ".js' type='text/javascript'></" & "script>")\r
171 end sub\r
172 \r
173 \r
174 Protected sub requireRicoCSS(writer as HTMLTextWriter, filename as String)\r
175   writer.Write(vbLf & "<link href='" & cssDir & filename & ".css' type='text/css' rel='stylesheet' />")\r
176 end sub\r
177 \r
178 </script>\r