Mercurial > agora-palash
diff 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 diff
--- a/templates/snippet/snippet_details.djhtml Fri Aug 31 02:32:30 2012 -0400 +++ b/templates/snippet/snippet_details.djhtml Fri Aug 31 02:53:22 2012 -0400 @@ -5,7 +5,7 @@ {% block extrahead %} {% if request.session.userprefs %} <style type="text/css" media="all"> - .code{ + .highlight { {# FIXME: Thats stupid #} {% ifnotequal request.session.userprefs.font_family "None" %} font-family: {{ request.session.userprefs.font_family }} !important; @@ -22,7 +22,7 @@ {% endblock %} {% block title %} -{% trans "Snippet" %} #{{ snippet.pk }} +Viewing snippet — {{ snippet.get_title }} {% endblock title %} {% block headline %} @@ -42,97 +42,84 @@ {% load snippet_tags %} {% block content %} - -<h2>Snippet view</h2> - -<div class="accordion"> - <div class="info"> - - <div id="diff" style="display:none;"> - diff +<div id="non-sidebar"> + <div id="diff"> </div> - <h3> - {% if snippet.title %} - {{ snippet.title }} - {% else %} - {% trans "Snippet" %} #{{ snippet.id}} - {% endif %} - </h3> - - <div class="whitebox"> - - <div class="snippet-options"> + <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?" %}')" + <a onclick="return confirm('{% trans "Really delete this snippet?" %}')" href="{% url snippet_delete snippet.secret_id %}"> - Delete now! + Delete this snippet </a> — {% endif %} - <a id="toggleWordwrap" href="#">{% trans "Wordwrap" %}</a> + <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}} + 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"> + </div> + <br /> + <div class="snippet"> <table> - <tr> - <th> - {# this has to look like this due to the pre tags #} - <pre class="code">{% 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="code">{% for line in snippet.content_splitted %}<span class="line" id="l{{ forloop.counter }}">{% if line %}{{ line|safe }}{% else %} {% endif %}</span> + <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> - </td> - </tr> + </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> + </div> - </div> {#whitebox#} - - </div> {# info #} + <br /> - <div class="info"> - <h3>{% trans "Write an answer" %} →</h3> - <div class="accordion" style="display: none;"> - <div class="whitebox"> - {% include "snippet/snippet_form.djhtml" %} - </div> - </div> - </div> -</div> -{% endblock %} + <h2 id="revise">{% trans "Revise this snippet" %}</h2> - - -{% block content-related %} -<div class="info"> - - <h3>{% trans "History" %}</h3> - - <div class="whitebox"> - + {% 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 %} @@ -158,21 +145,11 @@ {% endifequal %}/> </span> {% ifequal snippet tree_item %} - <strong> - {% if tree_item.title %} - {{ tree_item.title }} - {% else %} - {% trans "Snippet" %} #{{ tree_item.id }} - {% endif %} - </strong> + <strong>{{ tree_item.get_title }}</strong> {% else %} - <a href="{{ tree_item.get_absolute_url }}"> - {% if tree_item.title %} - {{ tree_item.title }} - {% else %} - {% trans "Snippet" %} #{{ tree_item.id }} - {% endif %} - </a> + <a href="{{ tree_item.get_absolute_url }}"> + {{ tree_item.get_title }} + </a> {% endifequal %} </div> {% for level in structure.closed_levels %} @@ -185,25 +162,17 @@ </div> </div> </form> - - </div> {# whitebox #} - -</div> {# info #} - -<div class="info"> - <h3>{% trans "Options" %}</h3> - <div class="whitebox"> - <p> - <a href="{% url snippet_details_raw snippet.secret_id %}"> - {% trans "View raw" %} - </a> - </p> + {% endif %} + <br /> + <h2>{% trans "Options" %}</h2> + <a href="{% url snippet_details_raw snippet.secret_id %}"> + {% trans "View raw" %} + </a> </div> -{% endblock content-related %} +</div> +{% endblock %} {% block script_footer %} -<script src="/static/jquery.min.js"></script> -<script src="/static/jquery-ui.min.js"></script> <script type="text/javascript"> {%include "snippet/snippet_details.js" %} </script>