mirror of https://github.com/zulip/zulip.git
Move all zephyr HTML generation to the client
(imported from commit 3afec768a5cd220c14ce615e03c29ee22754fdf2)
This commit is contained in:
parent
ddacce81b7
commit
d57d19e562
|
@ -8,29 +8,15 @@
|
||||||
|
|
||||||
<script type="text/javascript" src="/static/jquery/jquery.form.js"></script>
|
<script type="text/javascript" src="/static/jquery/jquery.form.js"></script>
|
||||||
<script type="text/javascript" src="/static/js/zephyr.js"></script>
|
<script type="text/javascript" src="/static/js/zephyr.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var initial_zephyr_json = {{ zephyr_json }};
|
||||||
|
</script>
|
||||||
|
|
||||||
<div class="row-fluid">
|
<div class="row-fluid">
|
||||||
<div id="main_div" class="span12">
|
<div id="main_div" class="span12">
|
||||||
<table id="table">
|
<table id="table">
|
||||||
{% for zephyr in zephyrs %}
|
<tr><td class="pointer"><p id="selected">▶</p></td><td>dummy row, FIXME</td></tr>
|
||||||
<tr id={{ zephyr.id }}>
|
{# Zephyrs go here #}
|
||||||
<td class="pointer">{% if user_profile.pointer == zephyr.id %}<p id="selected">▶{% else %}<p>{% endif %}</p></td>
|
|
||||||
<td class="zephyr">
|
|
||||||
<p>
|
|
||||||
|
|
||||||
{% if zephyr.recipient.type == 'class' %}
|
|
||||||
<span onclick="narrow('{{ zephyr.display_recipient }}', '{{ zephyr.id }}')" class="label zephyr_label_clickable zephyr_class">{{ zephyr.display_recipient }}</span>
|
|
||||||
<span onclick="narrow_instance('{{ zephyr.display_recipient }}', '{{ zephyr.instance }}', '{{ zephyr.id }}')" class="label zephyr_label_clickable zephyr_instance">{{ zephyr.instance }}</span>
|
|
||||||
{% else %}
|
|
||||||
<span onclick="narrow_personals('{{ zephyr.id }}')" class="label zephyr_label_clickable zephyr_personal_recipient">{{ zephyr.display_recipient }}</span>
|
|
||||||
←
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<span onclick="prepare_personal('{{ zephyr.sender.user.username }}')" class="label zephyr_label_clickable zephyr_sender">{{ zephyr.sender.user.username }}</span><br />
|
|
||||||
{{ zephyr.content|linebreaksbr }}
|
|
||||||
</p></td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -76,6 +76,14 @@ class Zephyr(models.Model):
|
||||||
display_recipient = get_display_recipient(self.recipient)
|
display_recipient = get_display_recipient(self.recipient)
|
||||||
return "<Zephyr: %s / %s / %r>" % (display_recipient, self.instance, self.sender)
|
return "<Zephyr: %s / %s / %r>" % (display_recipient, self.instance, self.sender)
|
||||||
|
|
||||||
|
def to_dict(self):
|
||||||
|
return {'id' : self.id,
|
||||||
|
'sender' : self.sender.user.username,
|
||||||
|
'type' : self.recipient.type,
|
||||||
|
'display_recipient': get_display_recipient(self.recipient),
|
||||||
|
'instance' : self.instance,
|
||||||
|
'content' : self.content }
|
||||||
|
|
||||||
def send_zephyr(**kwargs):
|
def send_zephyr(**kwargs):
|
||||||
zephyr = kwargs["instance"]
|
zephyr = kwargs["instance"]
|
||||||
if zephyr.recipient.type == "personal":
|
if zephyr.recipient.type == "personal":
|
||||||
|
|
|
@ -257,6 +257,10 @@ function add_message(index, zephyr) {
|
||||||
$("#table tr:last").after(new_str);
|
$("#table tr:last").after(new_str);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$(function() {
|
||||||
|
$(initial_zephyr_json).each(add_message);
|
||||||
|
});
|
||||||
|
|
||||||
function get_updates_longpoll(data) {
|
function get_updates_longpoll(data) {
|
||||||
if (data && data.zephyrs) {
|
if (data && data.zephyrs) {
|
||||||
$.each(data.zephyrs, add_message);
|
$.each(data.zephyrs, add_message);
|
||||||
|
|
|
@ -8,7 +8,8 @@ from django.shortcuts import render
|
||||||
from django.utils.timezone import utc
|
from django.utils.timezone import utc
|
||||||
|
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from zephyr.models import Zephyr, UserProfile, ZephyrClass, Recipient, get_display_recipient, filter_by_subscriptions
|
from zephyr.models import Zephyr, UserProfile, ZephyrClass, Subscription, \
|
||||||
|
Recipient, filter_by_subscriptions
|
||||||
from zephyr.forms import RegistrationForm
|
from zephyr.forms import RegistrationForm
|
||||||
|
|
||||||
import tornado.web
|
import tornado.web
|
||||||
|
@ -44,15 +45,16 @@ def home(request):
|
||||||
return HttpResponseRedirect('accounts/home/')
|
return HttpResponseRedirect('accounts/home/')
|
||||||
|
|
||||||
zephyrs = filter_by_subscriptions(Zephyr.objects.all(), request.user)
|
zephyrs = filter_by_subscriptions(Zephyr.objects.all(), request.user)
|
||||||
for zephyr in zephyrs:
|
|
||||||
zephyr.display_recipient = get_display_recipient(zephyr.recipient)
|
|
||||||
|
|
||||||
user = request.user
|
user = request.user
|
||||||
user_profile = UserProfile.objects.get(user=user)
|
user_profile = UserProfile.objects.get(user=user)
|
||||||
if user_profile.pointer == -1 and zephyrs:
|
if user_profile.pointer == -1 and zephyrs:
|
||||||
user_profile.pointer = min([zephyr.id for zephyr in zephyrs])
|
user_profile.pointer = min([zephyr.id for zephyr in zephyrs])
|
||||||
user_profile.save()
|
user_profile.save()
|
||||||
return render_to_response('zephyr/index.html', {'zephyrs': zephyrs, 'user_profile': user_profile},
|
zephyr_json = simplejson.dumps([zephyr.to_dict() for zephyr in zephyrs])
|
||||||
|
return render_to_response('zephyr/index.html',
|
||||||
|
{'zephyr_json' : zephyr_json,
|
||||||
|
'user_profile': user_profile },
|
||||||
context_instance=RequestContext(request))
|
context_instance=RequestContext(request))
|
||||||
|
|
||||||
def update(request):
|
def update(request):
|
||||||
|
@ -83,17 +85,8 @@ def get_updates_longpoll(request, handler):
|
||||||
def on_receive(zephyrs):
|
def on_receive(zephyrs):
|
||||||
if handler.request.connection.stream.closed():
|
if handler.request.connection.stream.closed():
|
||||||
return
|
return
|
||||||
new_zephyr_list = []
|
|
||||||
for zephyr in zephyrs:
|
|
||||||
new_zephyr_list.append({"id": zephyr.id,
|
|
||||||
"sender": zephyr.sender.user.username,
|
|
||||||
"display_recipient": get_display_recipient(zephyr.recipient),
|
|
||||||
"type": zephyr.recipient.type,
|
|
||||||
"instance": zephyr.instance,
|
|
||||||
"content": zephyr.content
|
|
||||||
})
|
|
||||||
try:
|
try:
|
||||||
handler.finish({'zephyrs': new_zephyr_list})
|
handler.finish({'zephyrs': [zephyr.to_dict() for zephyr in zephyrs]})
|
||||||
except socket.error, e:
|
except socket.error, e:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue