Mercurial > personas_backend
changeset 78:c71e0be8ba0d
Personas can now be moused-over or clicked in the browse/list view and the persona will be dynamically previewed/selected on the client's computer.
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Wed, 12 Mar 2008 21:48:11 -0500 |
parents | ea612c730606 |
children | 587000fcb3b1 |
files | PersonasBackend/personas/json_feeds.py PersonasBackend/personas/models.py PersonasBackend/personas/templates/personas/list.html |
diffstat | 3 files changed, 38 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/PersonasBackend/personas/json_feeds.py Tue Mar 11 22:38:54 2008 -0500 +++ b/PersonasBackend/personas/json_feeds.py Wed Mar 12 21:48:11 2008 -0500 @@ -3,9 +3,6 @@ from PersonasBackend.personas import models -JSON_CATEGORY_ID_TEMPLATE = "personas-category-%d" -JSON_PERSONA_ID_TEMPLATE = "persona-%d" - def _makeJsonResponse( obj ): json = simplejson.dumps( obj, indent=4 ) response = HttpResponse( json ) @@ -27,7 +24,7 @@ for category in models.Category.objects.all(): categoryDicts.append( {"label" : category.name, - "id" : JSON_CATEGORY_ID_TEMPLATE % category.id, + "id" : category.json_id, "type" : "list", "parent" : "personas-category-menu"} ) @@ -40,12 +37,12 @@ for persona in models.Persona.objects.filter( status="published" ): personaDicts.append( {"label" : persona.name, - "id" : JSON_PERSONA_ID_TEMPLATE % persona.id, + "id" : persona.json_id, "dark" : ( persona.color_scheme == "dark" ), "baseURL" : "", "headerURL" : persona.get_header_url(), "footerURL" : persona.get_footer_url(), - "menu" : JSON_CATEGORY_ID_TEMPLATE % persona.category.id, + "menu" : persona.category.json_id, "preview" : "yes"} )
--- a/PersonasBackend/personas/models.py Tue Mar 11 22:38:54 2008 -0500 +++ b/PersonasBackend/personas/models.py Wed Mar 12 21:48:11 2008 -0500 @@ -198,6 +198,11 @@ def __str__(self): return self.name + def _get_json_id( self ): + return "personas-category-%d" % self.id + + json_id = property( _get_json_id ) + class Persona(models.Model): """ Encapsulates the most recent revision of a Persona. @@ -488,6 +493,11 @@ return ( user.has_perm( "personas.can_publish" ) or self.owner == user ) + def _get_json_id( self ): + return "persona-%d" % self.id + + json_id = property( _get_json_id ) + class Revision(models.Model): """ Represents an old revision of a Persona.
--- a/PersonasBackend/personas/templates/personas/list.html Tue Mar 11 22:38:54 2008 -0500 +++ b/PersonasBackend/personas/templates/personas/list.html Wed Mar 12 21:48:11 2008 -0500 @@ -2,11 +2,33 @@ {% block content %} {% if personas %} -<p>Here's a list of all available Personas. Enjoy!</p> +<p>Here's a list of all available Personas.</p> +<p>If you have the Personas extension installed, just mouseover the +preview image for a Persona to preview it—when your mouse moves +away from the image, your original Persona will replace the preview.</p> +<p>If you like the Persona, you can click on the preview image to set it +as your current Persona.</p> +<p>Enjoy!</p> +<script> +function dispatchPersonaEvent(aType, aNode) { + var event = document.createEvent("Events"); + event.initEvent(aType, true, false); + aNode.dispatchEvent(event); +} +</script> {% for persona in personas %} <div class="addon-listitem clearfix-right corner-box"> - <img src="{{ persona.get_header_url }}" class="preview-image" - width="300" height="20" alt="" /> + <div onclick="dispatchPersonaEvent('SelectPersona', + event.originalTarget)" + onmouseover="dispatchPersonaEvent('PreviewPersona', + event.originalTarget)" + onmouseout="dispatchPersonaEvent('ResetPersona', + event.originalTarget)"> + <img persona="{{ persona.json_id }}" + category="{{ persona.category.json_id }}" + src="{{ persona.get_header_url }}" class="preview-image" + width="300" height="20" alt="" /> + </div> <div class="addon-titleby"> <h2 class="addonname">{{ persona.name }}</h2> <span class="developer"> by {{ persona.owner.first_name }}