3 ' ----------------------------------------------------------------------
\r
5 ' Page : LoadRicoClient.asp
\r
6 ' Description : Class to load Rico client-side Javascript and CSS
\r
7 ' Author : Matt Brown (dowdybrown@yahoo.com)
\r
8 ' Copyright (C) 2006-2011 Matt Brown
\r
10 ' Rico is licensed under the Apache License, Version 2.0 (the "License"); you may not use this
\r
11 ' file except in compliance with the License. You may obtain a copy of the License at
\r
12 ' http://www.apache.org/licenses/LICENSE-2.0
\r
14 ' ----------------------------------------------------------------------
\r
16 class LoadRicoClient
\r
20 Public jsDir ' directory containing Rico's javascript files
\r
21 Public cssDir ' directory containing Rico's css files
\r
22 Public imgDir ' directory containing Rico's image files
\r
23 Public imgHeading ' background image for grid headings and window titles, used in grayedout theme
\r
24 Public BaseLib ' base library - prototype, jquery, etc
\r
25 Public ricoLogging ' enable console logging?
\r
26 Public HTML5 ' enable console logging?
\r
27 Public grid_striping ' apply row striping to LiveGrids?
\r
28 Public LoadBaseLib ' load base Javascript library (prototype, jQuery, etc)?
\r
29 Public jQuery_theme_path ' url to jqueryui themes
\r
30 Public SupportedLangs ' comma-separated list of 2-character codes, representing the files that can be found in jsDir directory. Defaults to ones delivered with Rico.
\r
34 Private Sub Class_Initialize
\r
35 BaseLib="proto_min.js" ' default base library
\r
39 grid_striping = true
\r
41 SupportedLangs = "de,es,fr,it,ja,ko,pt,ru,uk,zh"
\r
42 jQuery_theme_path = "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/"
\r
46 ' jquery themes start with j-, rico themes start with r-
\r
48 Public Property Let ricoTheme(ThemeName)
\r
49 SetTheme "r-" & ThemeName
\r
51 Public Property Let jTheme(ThemeName)
\r
52 SetTheme "j-" & ThemeName
\r
56 Private Sub SetTheme(ByVal PrefixedTheme)
\r
57 theme = PrefixedTheme
\r
58 If PrefixedTheme = "r-grayedout" Then imgHeading = "grayedout.gif"
\r
62 Public Sub SetRicoClientPaths(ByVal jsPath, cssPath, imgPath)
\r
69 Public Sub SetRicoClientParentPath(ByVal clientDir)
\r
70 if mid(clientDir,len(clientDir),1) <> "/" then clientDir=clientDir & "/"
\r
71 SetRicoClientPaths clientDir & "js/", clientDir & "css/", clientDir & "images/"
\r
75 ' Used by demo to switch libraries & themes
\r
76 ' Do no call in production
\r
77 Public Sub CheckQueryString()
\r
78 BaseLib=LCase(Request.QueryString("lib"))
\r
79 SetTheme trim(Request.QueryString("theme"))
\r
80 ricoLogging=CBool(trim(Request.QueryString("log")) <> "")
\r
84 ' This is the main method, which creates the Javscript and CSS links
\r
85 Public Sub CreateLinks()
\r
86 Dim ImgUrl,lang,lang2,i
\r
87 Dim prefix,themeFile
\r
88 Response.Write vbLf & "<script type='text/javascript'>"
\r
89 Response.Write vbLf & "Rico_CONFIG = {"
\r
90 if ricoLogging then Response.Write vbLf & "enableLogging: true,"
\r
91 if HTML5 then Response.Write vbLf & "enableHTML5: true,"
\r
92 Response.Write vbLf & "};"
\r
93 Response.Write vbLf & "</script>"
\r
95 if InStr(baseLib,"/") > 0 then
\r
96 Response.Write vbLf & "<script src='http://ajax.googleapis.com/ajax/libs/" & baseLib & "' type='text/javascript'></script>"
\r
98 Response.Write vbLf & "<script src='" & jsDir & baseLib & "' type='text/javascript'></script>"
\r
101 requireRicoJS "2" & left(baseLib,3)
\r
102 requireRicoJS "_min"
\r
104 lang=lcase(Request.ServerVariables("HTTP_ACCEPT_LANGUAGE"))
\r
105 arLang=split(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 If InStr(SupportedLangs, lang2) > 0 Then
\r
110 requireRicoJS "Locale_" & lang2
\r
114 requireRicoCSS "rico"
\r
117 prefix=left(theme,1)
\r
118 themeFile=mid(theme,3)
\r
121 requireRicoJS "Themeroller"
\r
122 Response.Write vbLf & "<link type='text/css' rel='Stylesheet' href='" & jQuery_theme_path & themeFile & "/jquery-ui.css' />"
\r
124 requireRicoCSS themeFile
\r
126 if grid_striping then Response.Write vbLf & "<link type='text/css' rel='stylesheet' href='" & cssDir & "striping_" & themeFile & ".css' />"
\r
129 Response.Write vbLf & "<style type='text/css'>"
\r
130 'For Each ctrl As Control In Page.Controls
\r
131 ' If TypeOf (ctrl) Is GridBase Then writer.Write(CType(ctrl, GridBase).GridRules())
\r
132 ' If TypeOf (ctrl) Is LiveGrid Then writer.Write(CType(ctrl, LiveGrid).ColumnRules())
\r
134 If Not IsEmpty(ImgHeading) Then
\r
135 If InStr(ImgHeading,".") > 0 Or InStr(ImgHeading,"/") > 0 Then
\r
136 ImgUrl = ImgHeading
\r
138 ImgUrl = imgDir & ImgHeading
\r
140 Response.Write vbLf & ".Rico_accTitle, .ricoTitle, table.ricoLiveGrid thead th, table.ricoLiveGrid thead td, tr.ricoLG_hdg td, tr.ricoLG_hdg th {"
\r
141 Response.Write vbLf & " background-position: left center;"
\r
142 Response.Write vbLf & " background-repeat: repeat-x;"
\r
143 Response.Write vbLf & " background-image: url('" & ImgUrl & "');"
\r
144 Response.Write vbLf & "}"
\r
146 Response.Write vbLf & ".ricoLG_Resize {"
\r
147 Response.Write vbLf & " background-repeat: repeat;"
\r
148 Response.Write vbLf & " background-image: url('" & imgDir & "resize.gif');"
\r
149 Response.Write vbLf & "}"
\r
150 Response.Write vbLf & ".rico-icon {"
\r
151 Response.Write vbLf & " background-repeat: no-repeat;"
\r
152 Response.Write vbLf & " background-image: url('" & imgDir & "ricoIcons.gif');"
\r
153 Response.Write vbLf & "}"
\r
154 Response.Write vbLf & "</style>"
\r
158 Public sub requireRicoJS(filename)
\r
159 Response.Write vbLf & "<script src='" & jsDir & "rico" & filename & ".js' type='text/javascript'></script>"
\r
163 Public sub requireRicoCSS(filename)
\r
164 Response.Write vbLf & "<link href='" & cssDir & filename & ".css' type='text/css' rel='stylesheet' />"
\r