root/galaxy-central/eggs/WebHelpers-0.2-py2.6.egg/webhelpers/rails/javascript.py @ 3

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

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

行番号 
1"""
2Javascript Helpers
3
4Provides functionality for working with JavaScript in your views.
5
6Ajax, controls and visual effects
7---------------------------------
8
9* For information on using Ajax, see `Prototype Helpers <module-railshelpers.helpers.prototype.html>`_.
10* For information on using controls and visual effects, see `Scriptaculous Helpers <module-railshelpers.helpers.scriptaculous.html>`_.
11"""
12# Last synced with Rails copy at Revision 4235 on Aug 19th, 2006.
13
14import re
15from tags import *
16
17def link_to_function(name, function, **html_options):
18    """
19    Returns a link that'll trigger a JavaScript ``function`` using the
20    onclick handler and return false after the fact.
21   
22    Example::
23   
24        link_to_function("Greeting", "alert('Hello world!')")
25    """
26    options = dict(href="#", onclick="%s; return false;" % function)
27    options.update(html_options)
28    return content_tag("a", name, **options)
29
30def button_to_function(name, function, **html_options):
31    """
32    Returns a link that'll trigger a JavaScript ``function`` using the
33    onclick handler and return false after the fact.
34   
35    Example::
36   
37        button_to_function("Greeting", "alert('Hello world!')")
38    """
39    options = dict(type_="button", value=name, onclick="%s; " % function)
40    options.update(html_options)
41    return content_tag("input", "", **options)
42
43def escape_javascript(javascript):
44    """
45    Escape carriage returns and single and double quotes for JavaScript segments.
46    """
47    javascript = re.sub(r'\r\n|\n|\r', r'\\n', (javascript or ''))
48    javascript = re.sub(r'(["\'])', r'\\\1', javascript)
49    return javascript
50
51def javascript_tag(content):
52    """
53    Returns a JavaScript tag with the ``content`` inside.
54   
55    Example::
56   
57        >>> javascript_tag("alert('All is good')"
58        '<script type="text/javascript">alert('All is good')</script>'
59    """
60    return content_tag("script", javascript_cdata_section(content), type="text/javascript")
61
62def javascript_cdata_section(content):
63    return "\n//%s\n" % cdata_section("\n%s\n//" % content)
64
65def options_for_javascript(options):
66    optionlist = []
67    for key, value in options.iteritems():
68        if isinstance(value, bool):
69            value = str(value).lower()
70        optionlist.append('%s:%s' % (key, value))
71    optionlist.sort()
72    return '{' + ', '.join(optionlist) + '}'
73
74def array_or_string_for_javascript(option):
75    jsoption = None
76    if isinstance(option, list):
77        jsoption = "['%s']" % '\',\''.join(option)
78    elif isinstance(option, bool):
79        jsoption = str(option).lower()
80    else:
81        jsoption = "'%s'" % option
82    return jsoption
83
84__all__ = ['link_to_function', 'button_to_function', 'escape_javascript', 'javascript_tag']
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。