Thank you. Let me look. Perhaps some version of this could go in t2.
Massimo
On Dec 4, 7:45 am, mmstud <[EMAIL PROTECTED]> wrote:
> I created a new swfobject html helper class to manage embedded flash
> media. I want to share it both for a review and to motivate contribute
> great tips and content to this framework. I also have some questions
> like: how to create static links right way? Im using my own Script
> (and Style) helpers here, take it for a review too, if you like:
>
> SWFOBJECT_JS_URL = '/own/static/swfobject.js'
> SWFOBJECT_PLAYER_URL = '/own/static/mediaplayer.swf'
> SWFOBJECT_DEFAULT_NO_CONTENT = SPAN(A("Get Flash -player",
> _href="http://www.macromedia.com/go/getflashplayer",
> _target="_blank"), " to see the Flash content.")
> SWFOBJECT_DEFAULT_WIDTH = 785
> SWFOBJECT_DEFAULT_HEIGHT = 380
> SWFOBJECT_REQUIRED_FLASH_VERSION = 8
> SWFOBJECT_DEFAULT_ID = 'flash-player'
> SWFOBJECT_DEFAULT_PLAYER_CLASS = 'flash-players'
> SWFOBJECT_CONTAINER_CLASS = 'flash-content'
>
> class SWFObject(object):
> """
> Flash media player
>
> Note: 1) copy swfobject.js, mediaplayer.swf, crossdomain.xml
> and playlist.xml to /static/ directory
> 2) see parameter and variable setters
> from:http://blog.deconcept.com/swfobject/
>
> Example usage:
>
> so = SWFObject(player_id = "my-player")
> so.addParams(allowfullscreen = "true", allowscriptaccess =
> "always", seamlesstabbing = "true")
> so.addVariables(file = '/own/static/playlist.xml', width = 785,
> height = 380, displaywidth = 560, backcolor = '0xFFFFFF', frontcolor =
> '0x6666FF', bufferlength = 5, overstretch = 'fit', autoscroll =
> 'true', thumbsinplaylist = 'false', autostart = 'false')
> print so
> """
>
> def __init__(self, sqlobject_url = None, no_flash_content = None,
> player_id = None, player_url = None, width = None, height = None,
> required_flash_version = None):
> self.sqlobject_url = sqlobject_url or
> SWFOBJECT_JS_URL
> self.player_id = player_id or
> SWFOBJECT_DEFAULT_ID
> self.player_url = player_url or
> SWFOBJECT_PLAYER_URL
> self.no_flash_content = no_flash_content or
> SWFOBJECT_DEFAULT_NO_CONTENT
> self.width = width or SWFOBJECT_DEFAULT_WIDTH
> self.height = height or
> SWFOBJECT_DEFAULT_HEIGHT
> self.required_flash_version = required_flash_version or
> SWFOBJECT_REQUIRED_FLASH_VERSION
> self.params = list()
> self.variables = list()
>
> def addParams(self, **kwargs):
> for key, value in kwargs.items():
> self.params.append((key, value))
>
> def addVariables(self, **kwargs):
> for key, value in kwargs.items():
> self.variables.append((key, value))
>
> def _getParams(self):
> content = ''
> for key, value in self.params:
> content += "so.addParam('%s', '%s');%s" % (key, value,
> NEWLINE)
> return content
>
> def _getVariables(self):
> content = ''
> for key, value in self.variables:
> content += "so.addVariable('%s', '%s');%s" % (key, value,
> NEWLINE)
> return content
>
> def xml(self):
> contents = list()
> contents.append(Script(_src = self.sqlobject_url))
> if self.no_flash_content:
> contents.append(DIV(self.no_flash_content, _id =
> self.player_id, _class = SWFOBJECT_DEFAULT_PLAYER_CLASS))
>
> script_content = """
> var so = new SWFObject('%s', 'mpl', '%s', '%s', '8');
> %s%sso.write('%s');
> """ % (self.player_url,
> self.width,
> self.height,
> self._getParams(),
> self._getVariables(),
> self.player_id)
>
> contents.append(Script(script_content))
> return DIV(_class = SWFOBJECT_CONTAINER_CLASS, *contents).xml
> ()
>
> def __str__(self):
> return self.xml()
>
> class Script(SCRIPT):
> """ ... """
> def xml(self):
> """
> Handle both external and internal script elements
> >>> print Script('function _alert() { alert("hi!"); }',
> _language='javascript').xml()
> <script language="javascript" type="text/javascript">
> /* <![CDATA[ */
> function _alert() { alert("hi!"); }
> /* ]]> */
> </script>
> >>> print Script(_language='javascript', _src="/script.js").xml
> ()
> <script language="javascript" src="/script.js" type="text/
> javascript"></script>
> """
> # if there is content, we presume, that this is an internal
> script element
> if self.contents:
> #http://javascript.about.com/library/blxhtml.htm
> content = '%s/* <![CDATA[ */%s%s%s/* ]]> */%s' % (NEWLINE,
> NEWLINE, self._getContent(), NEWLINE, NEWLINE)
> return '<%s%s>%s</%s>' % (self.tag_name,
> self._getAttributes(), content, self.tag_name)
> # call parent xml method
> return SCRIPT.xml(self)
>
> class Style(STYLE):
> """ ... """
> def xml(self):
> """
> Handle both external and internal style elements
> >>> print Style(_href="/style.css", _media="screen").xml()
> <link href="/style.css" media="screen" type="text/css" />
> >>> print Style('body {background: #333 url("/bg.gif") no-
> repeat}').xml()
> <style type="text/css">
> <!--
> body {background: #333 url("/bg.gif") no-repeat}
> -->
> </style>
>
> """
> # if there is content, we presume, that this is an internal
> style element
> if self.contents:
> #http://javascript.about.com/library/blxhtml.htm
> content = '%s<!--%s%s%s-->%s' % (NEWLINE, NEWLINE,
> self._getContent(), NEWLINE, NEWLINE)
> return '<%s%s>%s</%s>' % (self.tag_name,
> self._getAttributes(), content, self.tag_name)
> # call parent xml method
> return LINK(**self.attributes).xml()
>
> SWFObject example creates html like:
>
> <div class="flash-content"><script src="/own/static/swfobject.js"
> type="text/javascript"></script><div class="flash-players" id="my-
> player"><span><a href="http://www.macromedia.com/go/getflashplayer"
> target="_blank">Get Flash -player</a> to see the Flash content.</
> span></div><script type="text/javascript">
> /* <![CDATA[ */
>
> var so = new SWFObject('/own/static/mediaplayer.swf', 'mpl', '785',
> '380', '8');
> so.addParam('allowscriptaccess', 'always');
> so.addParam('allowfullscreen', 'true');
> so.addParam('seamlesstabbing', 'true');
> so.addVariable('overstretch', 'fit');
> so.addVariable('bufferlength', '5');
> so.addVariable('frontcolor', '0x6666FF');
> so.addVariable('height', '380');
> so.addVariable('width', '785');
> so.addVariable('displaywidth', '560');
> so.addVariable('thumbsinplaylist', 'false');
> so.addVariable('file', '/own/static/playlist.xml');
> so.addVariable('backcolor', '0xFFFFFF');
> so.addVariable('autoscroll', 'true');
> so.addVariable('autostart', 'false');
> so.write('my-player');
>
> /* ]]> */
> </script></div>
>
> Please note 1) Style class creates both external and internal style 2)
> embedded javascript start and end notes, that are fully explained and
> argued here:http://javascript.about.com/library/blxhtml.htm
>
> -Marko
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"web2py Web Framework" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---