Mercurial > agora-palash
view templates/snippet/snippet_details.djhtml @ 102:f872c643b056
Updates to snippet functionality (see details)
Sorry about the large commit, but it was difficult to break it up as a lot
of new functionality was introduced. Most of it is specific to the snippet
feature but there are some other changes as well.
Commit highlights:
* Added the ability to switch the syntax highlighting colour scheme when
viewing a snippet. This is currently done on a per-snippet basis only,
but eventually it will be possible to set a default in your profile to
have all the snippets you view use that colour scheme. There are currently
8 different colour schemes, all of which were taken from the default
pygments stylesheets (some were modified).
* Added a "num_views" field to the Snippet model, with the field being
incremented any time the snippet view is called (raw or regular view).
* Created a simple "explore" view that lists the recently-posted snippets.
Will implement pagination and sorting by other attributes ("popularity",
for example, based on number of views) as well.
* Added a post-save hook to the User model to ensure that a Profile is created
for every user as soon as the User itself is created. This alleviates the
need for a get_profile method that checks if the user has a profile or not
and creates one if necessary. (The code is currently still there, will be
cleaned up soon).
* Added back the wordwrap toggling feature. Currently, if you want to enable
word-wrapping, the line numbers have to be hidden in order to ensure that
the lines and their numbers don't go out of sync. This will be fixed soon.
* History/diff view is back
* And some other minor cosmetic changes.
Note: since some existing models have been changed, you'll likely need to
delete the existing sqlite database before running syncdb. The alternative
is to determine the necessary column changes/additions and run the SQL
query yourself.
author | dellsystem <ilostwaldo@gmail.com> |
---|---|
date | Fri, 31 Aug 2012 02:53:22 -0400 |
parents | d48e8676b18f |
children | 7d753658dc0e |
line wrap: on
line source
{% extends "snippet/base.djhtml" %} {% load mptt_tags %} {% load i18n %} {% block extrahead %} {% if request.session.userprefs %} <style type="text/css" media="all"> .highlight { {# FIXME: Thats stupid #} {% ifnotequal request.session.userprefs.font_family "None" %} font-family: {{ request.session.userprefs.font_family }} !important; {% endifnotequal %} {% ifnotequal request.session.userprefs.font_size "None" %} font-size: {{ request.session.userprefs.font_size }}px !important; {% endifnotequal %} {% ifnotequal request.session.userprefs.line_height "None" %} line-height: {{ request.session.userprefs.line_height }}px !important; {% endifnotequal %} } </style> {% endif %} {% endblock %} {% block title %} Viewing snippet — {{ snippet.get_title }} {% endblock title %} {% block headline %} <h1> {% trans "Snippet" %} #{{ snippet.pk }} {% if snippet.parent_id %} {% blocktrans with snippet.parent.get_absolute_url as parent_url and snippet.parent.id as parent_id %} (Copy of <a href="{{ parent_url }}">snippet #{{ parent_id }}</a>) {% endblocktrans %} {% endif %} <span class="date"> {{ snippet.published|date:_("DATETIME_FORMAT") }} ({% trans "UTC" %}) </span> </h1> {% endblock headline %} {% load snippet_tags %} {% block content %} <div id="non-sidebar"> <div id="diff"> </div> <h1>{{ snippet.get_title }}</h1> <div class="snippet-options"> <abbr title="{% trans "Time to live" %}" >TTL: </abbr> {{ snippet.expires|timeuntil }} — {% if snippet.pk|in_list:request.session.snippet_list %} <a onclick="return confirm('{% trans "Really delete this snippet?" %}')" href="{% url snippet_delete snippet.secret_id %}"> Delete this snippet </a> — {% endif %} <a id="toggle-wordwrap" href="#">{% trans "Toggle wordwrap" %}</a> — Syntax highlighting style: <select id="change-highlighting" data-default="{{ default_style }}"> {% for pygments_style in pygments_styles %} <option name="{{ pygments_style }}"> {{ pygments_style }} {% if pygments_style == default_style %} (default) {% endif %} </option> {% endfor %} </select> <div> Author: {% if snippet.author %} <a href="{% url agora.apps.profile.views.showprofile snippet.author %}"> {{ snippet.author }} </a> {% else %} anonymous {% endif %} — Language: {{language}} </div> </div> <br /> <div class="snippet"> <table> <tr> <th id="line-numbers"> {# this has to look like this due to the pre tags #} <pre class="numbers">{% for l in lines %}<a href="#l{{ forloop.counter }}" id="l{{ forloop.counter }}">{{ forloop.counter }}</a> {% endfor %}</pre> </th> <td> {# this has to look like this due to the pre tags #} <pre class="highlight {{ default_style }}">{% for line in snippet.content_splitted %}<span class="line" id="l{{ forloop.counter }}">{% if line %}{{ line|safe }}{% else %} {% endif %}</span> {% endfor %}</pre> </td> </tr> </table> </div> <br /> <h2 id="revise">{% trans "Revise this snippet" %}</h2> {% include "snippet/snippet_form.djhtml" %} </div><div id="sidebar"> <h2>{% trans "History" %}</h2> {% if no_descendants %} <p>{% trans "This snippet has no children!" %}</p> <p> <a href="#revise"> {% trans "Make one" %} » </a> </p> {% else %} <form method="get" id="diffform" action="{% url snippet_diff %}"> <div class="tree"> {% for tree_item,structure in tree|tree_info %} {% if structure.new_level %} <ul> <li> {% else %} </li> <li> {% endif %} <div> <span class="diff"> <input type="radio" name="a" value="{{ tree_item.id }}" {% ifequal tree_item.id snippet.parent_id %} checked="checked" {% endifequal %}/> <input type="radio" name="b" value="{{ tree_item.id }}" {% ifequal snippet tree_item %} checked="checked" {% endifequal %}/> </span> {% ifequal snippet tree_item %} <strong>{{ tree_item.get_title }}</strong> {% else %} <a href="{{ tree_item.get_absolute_url }}"> {{ tree_item.get_title }} </a> {% endifequal %} </div> {% for level in structure.closed_levels %} </li> </ul> {% endfor %} {% endfor %} <div class="submit"> <input type="submit" value="{% trans "Compare" %}"/> </div> </div> </form> {% endif %} <br /> <h2>{% trans "Options" %}</h2> <a href="{% url snippet_details_raw snippet.secret_id %}"> {% trans "View raw" %} </a> </div> </div> {% endblock %} {% block script_footer %} <script type="text/javascript"> {%include "snippet/snippet_details.js" %} </script> {% endblock script_footer %}