root/galaxy-central/eggs/Cheetah-2.2.2-py2.6-macosx-10.6-universal-ucs2.egg/Cheetah/Templates/_SkeletonPage.py @ 3

リビジョン 3, 8.6 KB (コミッタ: kohda, 14 年 前)

Install Unix tools  http://hannonlab.cshl.edu/galaxy_unix_tools/galaxy.html

行番号 
1# $Id: _SkeletonPage.py,v 1.13 2002/10/01 17:52:02 tavis_rudd Exp $
2"""A baseclass for the SkeletonPage template
3
4Meta-Data
5==========
6Author: Tavis Rudd <tavis@damnsimple.com>,
7Version: $Revision: 1.13 $
8Start Date: 2001/04/05
9Last Revision Date: $Date: 2002/10/01 17:52:02 $
10"""
11__author__ = "Tavis Rudd <tavis@damnsimple.com>"
12__revision__ = "$Revision: 1.13 $"[11:-2]
13
14##################################################
15## DEPENDENCIES ##
16
17import time, types, os, sys
18
19# intra-package imports ...
20from Cheetah.Template import Template
21
22
23##################################################
24## GLOBALS AND CONSTANTS ##
25
26True = (1==1)
27False = (0==1)
28
29##################################################
30## CLASSES ##
31       
32class _SkeletonPage(Template):
33    """A baseclass for the SkeletonPage template"""
34
35    docType = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ' + \
36              '"http://www.w3.org/TR/html4/loose.dtd">'
37   
38    # docType = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ' + \
39    #'"http://www.w3.org/TR/xhtml1l/DTD/transitional.dtd">'
40       
41    title = ''
42    siteDomainName = 'www.example.com'
43    siteCredits = 'Designed & Implemented by Tavis Rudd'
44    siteCopyrightName = "Tavis Rudd"
45    htmlTag = '<html>'
46   
47    def __init__(self, *args, **KWs):
48        Template.__init__(self, *args, **KWs)
49        self._metaTags = {'HTTP-EQUIV':{'keywords':'Cheetah',
50                                        'Content-Type':'text/html; charset=iso-8859-1',
51                                        },
52                    'NAME':{'generator':'Cheetah: The Python-Powered Template Engine'}
53                    }
54        # metaTags = {'HTTP_EQUIV':{'test':1234}, 'NAME':{'test':1234,'test2':1234} }
55        self._stylesheets = {}
56        # stylesheets = {'.cssClassName':'stylesheetCode'}
57        self._stylesheetsOrder = []
58        # stylesheetsOrder = ['.cssClassName',]
59        self._stylesheetLibs = {}
60        # stylesheetLibs = {'libName':'libSrcPath'}
61        self._javascriptLibs = {}
62        self._javascriptTags = {}
63        # self._javascriptLibs = {'libName':'libSrcPath'}
64        self._bodyTagAttribs = {}
65
66    def metaTags(self):
67        """Return a formatted vesion of the self._metaTags dictionary, using the
68        formatMetaTags function from Cheetah.Macros.HTML"""
69       
70        return self.formatMetaTags(self._metaTags)
71   
72    def stylesheetTags(self):
73        """Return a formatted version of the self._stylesheetLibs and
74        self._stylesheets dictionaries.  The keys in self._stylesheets must
75        be listed in the order that they should appear in the list
76        self._stylesheetsOrder, to ensure that the style rules are defined in
77        the correct order."""
78       
79        stylesheetTagsTxt = ''
80        for title, src in self._stylesheetLibs.items():
81            stylesheetTagsTxt += '<link rel="stylesheet" type="text/css" href="' + str(src) + '" />\n'
82
83        if not self._stylesheetsOrder:
84            return stylesheetTagsTxt
85       
86        stylesheetTagsTxt += '<style type="text/css"><!--\n'
87        for identifier in self._stylesheetsOrder:
88            if not self._stylesheets.has_key(identifier):
89                warning = '# the identifier ' + identifier + \
90                          'was in stylesheetsOrder, but not in stylesheets'
91                print warning
92                stylesheetTagsTxt += warning
93                continue
94                   
95            attribsDict = self._stylesheets[identifier]
96            cssCode = ''
97            attribCode = ''
98            for k, v in attribsDict.items():
99                attribCode += str(k) + ': ' + str(v) + '; '
100            attribCode = attribCode[:-2] # get rid of the last semicolon
101               
102            cssCode = '\n' + identifier + ' {' +  attribCode + '}'
103            stylesheetTagsTxt += cssCode
104           
105        stylesheetTagsTxt += '\n//--></style>\n'
106
107        return stylesheetTagsTxt
108
109    def javascriptTags(self):
110        """Return a formatted version of the javascriptTags and
111        javascriptLibs dictionaries.  Each value in javascriptTags
112        should be a either a code string to include, or a list containing the
113        JavaScript version number and the code string. The keys can be anything.
114        The same applies for javascriptLibs, but the string should be the
115        SRC filename rather than a code string."""
116       
117        javascriptTagsTxt = []
118        for key, details in self._javascriptTags.items():
119            if type(details) not in (types.ListType, types.TupleType):
120                details = ['',details]
121               
122            javascriptTagsTxt += ['<script language="JavaScript', str(details[0]),
123                                  '" type="text/javascript"><!--\n',
124                                  str(details[0]), '\n//--></script>\n']
125
126
127        for key, details in self._javascriptLibs.items():
128            if type(details) not in (types.ListType, types.TupleType):
129                details = ['',details]
130
131            javascriptTagsTxt += ['<script language="JavaScript', str(details[0]),
132                                  '" type="text/javascript" src="',
133                                  str(details[1]), '" />\n']
134        return ''.join(javascriptTagsTxt)
135   
136    def bodyTag(self):
137        """Create a body tag from the entries in the dict bodyTagAttribs."""
138        return self.formHTMLTag('body', self._bodyTagAttribs)
139
140
141    def imgTag(self, src, alt='', width=None, height=None, border=0):
142       
143        """Dynamically generate an image tag.  Cheetah will try to convert the
144        src argument to a WebKit serverSidePath relative to the servlet's
145        location. If width and height aren't specified they are calculated using
146        PIL or ImageMagick if available."""
147       
148        src = self.normalizePath(src)
149       
150
151        if not width or not height:
152            try:                    # see if the dimensions can be calc'd with PIL
153                import Image
154                im = Image.open(src)
155                calcWidth, calcHeight = im.size
156                del im
157                if not width: width = calcWidth
158                if not height: height = calcHeight
159
160            except:
161                try:                # try imageMagick instead
162                    calcWidth, calcHeight = os.popen(
163                        'identify -format "%w,%h" ' + src).read().split(',')
164                    if not width: width = calcWidth
165                    if not height: height = calcHeight
166       
167                except:
168                    pass
169               
170        if width and height:
171            return ''.join(['<img src="', src, '" width="', str(width), '" height="', str(height),
172                           '" alt="', alt, '" border="', str(border), '" />'])
173        elif width:
174            return ''.join(['<img src="', src, '" width="', str(width),
175                           '" alt="', alt, '" border="', str(border), '" />'])
176        elif height:
177            return ''.join(['<img src="', src, '" height="', str(height),
178                           '" alt="', alt, '" border="', str(border), '" />'])
179        else:
180            return ''.join(['<img src="', src, '" alt="', alt, '" border="', str(border),'" />'])
181
182
183    def currentYr(self):
184        """Return a string representing the current yr."""
185        return time.strftime("%Y",time.localtime(time.time()))
186   
187    def currentDate(self, formatString="%b %d, %Y"):
188        """Return a string representing the current localtime."""
189        return time.strftime(formatString,time.localtime(time.time()))
190   
191    def spacer(self, width=1,height=1):
192        return '<img src="spacer.gif" width="%s" height="%s" alt="" />'% (str(width), str(height))
193   
194    def formHTMLTag(self, tagName, attributes={}):
195        """returns a string containing an HTML <tag> """
196        tagTxt = ['<', tagName.lower()]
197        for name, val in attributes.items():
198            tagTxt += [' ', name.lower(), '="', str(val),'"']
199        tagTxt.append('>')
200        return ''.join(tagTxt)
201   
202    def formatMetaTags(self, metaTags):
203        """format a dict of metaTag definitions into an HTML version"""
204        metaTagsTxt = []
205        if metaTags.has_key('HTTP-EQUIV'):
206            for http_equiv, contents in metaTags['HTTP-EQUIV'].items():
207                metaTagsTxt += ['<meta http-equiv="', str(http_equiv), '" content="',
208                                str(contents), '" />\n']
209               
210        if metaTags.has_key('NAME'):
211            for name, contents in metaTags['NAME'].items():
212                metaTagsTxt += ['<meta name="', str(name), '" content="', str(contents),
213                                '" />\n']
214        return ''.join(metaTagsTxt)
215   
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。