2012-09-24 17:17:41 +02:00
|
|
|
{% extends "zephyr/base.html" %}
|
|
|
|
|
2012-10-16 06:03:29 +02:00
|
|
|
{# The app itself. #}
|
|
|
|
{# Includes some other templates as tabs. #}
|
2012-11-02 16:59:54 +01:00
|
|
|
|
2012-09-06 21:13:15 +02:00
|
|
|
{% load jstemplate %}
|
|
|
|
|
2012-09-24 17:17:41 +02:00
|
|
|
{% block customhead %}
|
2012-10-17 19:52:57 +02:00
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
2012-10-10 16:32:59 +02:00
|
|
|
<script id="template_message" type="text/x-handlebars-template">
|
|
|
|
{% rawjstemplate "message" %}
|
2012-09-24 17:10:12 +02:00
|
|
|
</script>
|
|
|
|
|
|
|
|
<script id="template_subscription" type="text/x-handlebars-template">
|
|
|
|
{% rawjstemplate "subscription" %}
|
|
|
|
</script>
|
2012-09-24 16:54:30 +02:00
|
|
|
|
2012-10-18 20:23:57 +02:00
|
|
|
<script id="template_userinfo_popover_title" type="text/x-handlebars-template">
|
|
|
|
{% rawjstemplate "userinfo_popover_title" %}
|
|
|
|
</script>
|
|
|
|
<script id="template_userinfo_popover_content" type="text/x-handlebars-template">
|
|
|
|
{% rawjstemplate "userinfo_popover_content" %}
|
|
|
|
</script>
|
2012-11-27 22:30:47 +01:00
|
|
|
<script id="template_timeinfo_popover_content" type="text/x-handlebars-template">
|
|
|
|
{% rawjstemplate "timeinfo_popover_content" %}
|
|
|
|
</script>
|
2012-10-18 20:23:57 +02:00
|
|
|
|
2012-10-31 20:36:03 +01:00
|
|
|
<script id="template_narrowbar" type="text/x-handlebars-template">
|
|
|
|
{% rawjstemplate "narrowbar" %}
|
|
|
|
</script>
|
|
|
|
|
2012-10-17 20:34:38 +02:00
|
|
|
<link href="{{ static_hidden }}styles/zephyr.css?dummy_time={% now "U" %}" rel="stylesheet">
|
|
|
|
<link href="{{ static_hidden }}styles/pygments.css" rel="stylesheet">
|
2012-10-31 19:00:40 +01:00
|
|
|
<script type="text/javascript" src="/static/third/jquery/jquery.form.js"></script>
|
|
|
|
<script type="text/javascript" src="/static/third/jquery/jquery.highlight.js"></script>
|
|
|
|
<script type="text/javascript" src="/static/third/xdate/xdate.js"></script>
|
|
|
|
<script type="text/javascript" src="/static/third/handlebars/handlebars-1.0.rc.1.js"></script>
|
|
|
|
<script type="text/javascript" src="/static/third/spin/spin.min.js"></script>
|
|
|
|
<script type="text/javascript" src="/static/third/jquery-mousewheel/jquery.mousewheel.js"></script>
|
|
|
|
<script type="text/javascript" src="/static/third/jquery-throttle-debounce/jquery.ba-throttle-debounce.min.js"></script>
|
|
|
|
<script type="text/javascript" src="/static/third/jquery.idle/jquery.idle.js"></script>
|
|
|
|
<script type="text/javascript" src="/static/third/jquery-autosize/jquery.autosize.js"></script>
|
2012-11-30 18:33:32 +01:00
|
|
|
<script type="text/javascript" src="{{ static_hidden }}js/util.js"></script>
|
2012-11-19 16:47:43 +01:00
|
|
|
<script type="text/javascript" src="/static/third/spectrum/spectrum.js"></script>
|
|
|
|
<link rel="stylesheet" href="/static/third/spectrum/spectrum.css" />
|
2012-10-17 20:34:38 +02:00
|
|
|
<script type="text/javascript" src="{{ static_hidden }}js/setup.js"></script>
|
2012-10-18 20:46:06 +02:00
|
|
|
<script type="text/javascript" src="{{ static_hidden }}js/rows.js"></script>
|
2012-10-17 20:34:38 +02:00
|
|
|
<script type="text/javascript" src="{{ static_hidden }}js/narrow.js"></script>
|
2012-10-29 21:02:46 +01:00
|
|
|
<script type="text/javascript" src="{{ static_hidden }}js/reload.js"></script>
|
2012-10-17 20:34:38 +02:00
|
|
|
<script type="text/javascript" src="{{ static_hidden }}js/compose.js"></script>
|
2012-10-18 21:42:08 +02:00
|
|
|
<script type="text/javascript" src="{{ static_hidden }}js/subs.js"></script>
|
2012-10-17 20:34:38 +02:00
|
|
|
<script type="text/javascript" src="{{ static_hidden }}js/ui.js"></script>
|
2012-11-18 19:04:00 +01:00
|
|
|
<script type="text/javascript" src="{{ static_hidden }}js/typeahead_helper.js"></script>
|
2012-10-26 16:59:38 +02:00
|
|
|
<script type="text/javascript" src="{{ static_hidden }}js/search.js"></script>
|
2012-11-01 18:01:33 +01:00
|
|
|
<script type="text/javascript" src="{{ static_hidden }}js/composebox_typeahead.js"></script>
|
2012-10-17 20:34:38 +02:00
|
|
|
<script type="text/javascript" src="{{ static_hidden }}js/hotkey.js"></script>
|
2012-11-23 23:53:38 +01:00
|
|
|
<script type="text/javascript" src="{{ static_hidden }}js/notifications.js"></script>
|
2012-10-17 20:34:38 +02:00
|
|
|
<script type="text/javascript" src="{{ static_hidden }}js/zephyr.js"></script>
|
2012-09-19 22:25:13 +02:00
|
|
|
|
|
|
|
{% if debug %}
|
2012-10-17 20:34:38 +02:00
|
|
|
<script type="text/javascript" src="{{ static_hidden }}js/debug.js"></script>
|
2012-09-19 22:25:13 +02:00
|
|
|
{% endif %}
|
|
|
|
|
2012-08-30 19:56:15 +02:00
|
|
|
<script type="text/javascript">
|
2012-10-10 22:59:46 +02:00
|
|
|
{% autoescape off %}
|
2012-10-10 23:53:00 +02:00
|
|
|
|
|
|
|
{# Not escaped, because it's guaranteed by the model to be an integer. #}
|
2012-09-04 18:45:45 +02:00
|
|
|
var initial_pointer = {{ user_profile.pointer }};
|
2012-10-10 23:53:00 +02:00
|
|
|
|
|
|
|
var email = "{{ user_profile.user.email|escapejs }}";
|
2012-11-26 23:57:31 +01:00
|
|
|
var domain = "{{ user_profile.realm.domain|escapejs }}";
|
2012-10-10 23:53:00 +02:00
|
|
|
var have_initial_messages = {{ have_initial_messages|escapejs }};
|
2012-11-23 23:53:38 +01:00
|
|
|
var desktop_notifications_enabled = "{{ user_profile.enable_desktop_notifications|escapejs }}" === "True";
|
2012-10-10 23:53:00 +02:00
|
|
|
|
|
|
|
var stream_list = [
|
|
|
|
{% for stream in streams %}
|
|
|
|
"{{ stream|escapejs }}",
|
|
|
|
{% endfor %}
|
|
|
|
];
|
|
|
|
|
|
|
|
var people_list = [
|
|
|
|
{% for person in people %}
|
2012-10-12 22:51:44 +02:00
|
|
|
{ 'email': "{{ person.email|escapejs }}",
|
|
|
|
'full_name': "{{ person.full_name|escapejs }}" },
|
2012-10-10 23:53:00 +02:00
|
|
|
{% endfor %}
|
|
|
|
];
|
|
|
|
|
2012-09-10 20:31:53 +02:00
|
|
|
{% endautoescape %}
|
2012-10-10 22:59:46 +02:00
|
|
|
</script>
|
2012-09-24 17:17:41 +02:00
|
|
|
{% endblock %}
|
|
|
|
{% block content %}
|
2012-10-04 22:34:00 +02:00
|
|
|
<div class="row">
|
2012-10-05 17:46:07 +02:00
|
|
|
<div class="span3">
|
2012-10-04 22:59:18 +02:00
|
|
|
<div class="row">
|
2012-10-05 17:46:07 +02:00
|
|
|
<div class="span3 sidebar-nav affix">
|
2012-10-23 18:03:50 +02:00
|
|
|
<span>
|
2012-11-05 23:51:27 +01:00
|
|
|
<img class="img-rounded hidden-phone gravatar-profile"
|
2012-10-25 06:09:28 +02:00
|
|
|
src="https://secure.gravatar.com/avatar/{{ email_hash }}?d=identicon&s=60" />
|
2012-11-05 23:51:27 +01:00
|
|
|
<img class="img-rounded visible-phone gravatar-profile"
|
2012-10-25 06:09:28 +02:00
|
|
|
src="https://secure.gravatar.com/avatar/{{ email_hash }}?d=identicon&s=30" />
|
2012-10-23 18:03:50 +02:00
|
|
|
</span>
|
2012-10-12 01:02:44 +02:00
|
|
|
<span class="my_fullname">{{ user_profile.full_name }}</span>
|
2012-10-11 23:11:30 +02:00
|
|
|
<span class="my_email">{{ user_profile.user.email }}</span>
|
2012-10-30 03:19:42 +01:00
|
|
|
<ul class="nav nav-pills nav-stacked" id="sidebar">
|
2012-10-12 01:06:42 +02:00
|
|
|
<li title="Home" class="active">
|
2012-11-04 02:16:15 +01:00
|
|
|
<a href="#home" data-toggle="pill" onclick="narrow.restore_home_state();">
|
2012-10-12 01:06:42 +02:00
|
|
|
<i class="icon-home"></i>
|
|
|
|
<span class="hidden-phone"> Home</span>
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li title="Subscriptions">
|
|
|
|
<a href="#subscriptions" data-toggle="pill">
|
|
|
|
<i class="icon-globe"></i>
|
|
|
|
<span class="hidden-phone"> Subscriptions</span>
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li title="Settings">
|
|
|
|
<a href="#settings" data-toggle="pill">
|
|
|
|
<i class="icon-wrench"></i>
|
|
|
|
<span class="hidden-phone"> Settings</span>
|
|
|
|
</a>
|
|
|
|
</li>
|
2012-10-24 22:53:19 +02:00
|
|
|
<li title="Keyboard shortcuts">
|
|
|
|
<a href="#keyboard-shortcuts" role="button" data-toggle="modal">
|
|
|
|
<i class="icon-info-sign"></i>
|
|
|
|
<span class="hidden-phone"> Keyboard shortcuts</span>
|
|
|
|
</a>
|
|
|
|
</li>
|
2012-10-26 16:39:37 +02:00
|
|
|
<li title="Feedback">
|
2012-11-08 00:38:21 +01:00
|
|
|
<a href="#feedback" onclick="compose.start('private', { 'private_message_recipient': 'feedback@humbughq.com' });">
|
2012-10-26 16:39:37 +02:00
|
|
|
<i class="icon-comment"></i>
|
|
|
|
<span class="hidden-phone"> Feedback</span>
|
|
|
|
</a>
|
|
|
|
</li>
|
2012-10-29 18:01:07 +01:00
|
|
|
<li title="Log out">
|
2012-10-29 23:43:36 +01:00
|
|
|
<a href="/accounts/logout">
|
2012-10-29 18:01:07 +01:00
|
|
|
<i class="icon-off"></i>
|
|
|
|
<span class="hidden-phone"> Log out</span>
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
|
2012-10-11 23:11:30 +02:00
|
|
|
{% if show_debug %}
|
2012-10-12 01:06:42 +02:00
|
|
|
<li title="Debug">
|
|
|
|
<a href="#debug" data-toggle="pill">
|
|
|
|
<i class="icon-barcode"></i>
|
|
|
|
<span class="hidden-phone"> Debug</span>
|
|
|
|
</a>
|
|
|
|
</li>
|
2012-10-11 23:11:30 +02:00
|
|
|
{% endif %}
|
2012-10-18 20:17:55 +02:00
|
|
|
|
2012-12-05 19:32:09 +01:00
|
|
|
{% if show_activity %}
|
|
|
|
<li title="Activity">
|
|
|
|
<a href="/activity" target="_blank">
|
|
|
|
<i class="icon-eye-open"></i>
|
|
|
|
<span class="hidden-phone"> Activity</span>
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
{% endif %}
|
|
|
|
|
2012-11-08 19:09:15 +01:00
|
|
|
<div>
|
|
|
|
<button type="button" class="visible-phone btn btn-small phone_new_message_button"
|
2012-11-13 20:50:36 +01:00
|
|
|
id="left_bar_compose_stream_button_little"
|
2012-11-08 19:09:15 +01:00
|
|
|
onclick="compose.start('stream');"
|
2012-12-05 18:45:26 +01:00
|
|
|
title="Send to stream">
|
2012-11-08 19:09:15 +01:00
|
|
|
<i class="icon-bullhorn"></i>
|
|
|
|
</button>
|
|
|
|
<button type="button" class="visible-phone btn btn-small phone_new_message_button"
|
2012-11-13 20:50:36 +01:00
|
|
|
id="left_bar_compose_private_button_little"
|
|
|
|
onclick="compose.start('private');"
|
2012-12-05 18:45:26 +01:00
|
|
|
title="Private message">
|
2012-11-08 19:09:15 +01:00
|
|
|
<i class="icon-user"></i>
|
|
|
|
</button>
|
|
|
|
</div>
|
2012-10-11 23:11:30 +02:00
|
|
|
</ul>
|
2012-10-12 01:02:44 +02:00
|
|
|
<div class="hidden-phone new_message_button">
|
2012-11-08 19:09:15 +01:00
|
|
|
<button type="button" class="btn btn-large btn-block"
|
2012-11-13 20:50:36 +01:00
|
|
|
id="left_bar_compose_stream_button_big"
|
2012-11-08 19:09:15 +01:00
|
|
|
onclick="compose.start('stream');">
|
2012-12-05 18:45:26 +01:00
|
|
|
<i class="icon-bullhorn"></i> Send to stream
|
2012-11-08 19:09:15 +01:00
|
|
|
</button>
|
|
|
|
</div>
|
|
|
|
<div class="hidden-phone new_message_button">
|
|
|
|
<button type="button" class="btn btn-large btn-block"
|
2012-11-13 20:50:36 +01:00
|
|
|
id="left_bar_compose_private_button_big"
|
|
|
|
onclick="compose.start('private');">
|
2012-12-05 18:45:26 +01:00
|
|
|
<i class="icon-user"></i> Private message
|
2012-11-08 19:09:15 +01:00
|
|
|
</button>
|
2012-10-11 23:11:30 +02:00
|
|
|
</div>
|
2012-10-04 22:59:18 +02:00
|
|
|
|
2012-11-02 21:54:49 +01:00
|
|
|
<div class="alert alert_sidebar alert-error home-error-bar" id="connection-error">
|
2012-11-15 20:15:29 +01:00
|
|
|
<strong>Can't receive messages</strong>
|
2012-11-20 23:15:50 +01:00
|
|
|
— retrying soon. <a class="cursor_pointer" onclick="restart_get_updates({dont_block: true});">Try now</a>.
|
2012-11-02 21:54:49 +01:00
|
|
|
</div>
|
2012-11-20 22:13:06 +01:00
|
|
|
<div class="alert alert_sidebar alert-error home-error-bar" id="zephyr-mirror-error">
|
|
|
|
<strong>Messages you send are not being mirrored to MIT zephyr</strong>
|
|
|
|
— Please check that you are still running the MIT
|
|
|
|
Zephyr mirroring bot. <a class="cursor_pointer" onclick="restart_get_updates({dont_block: true});">Check now</a>
|
|
|
|
</div>
|
|
|
|
<div class="alert alert_sidebar alert-error home-error-bar" id="reloading-application">
|
2012-11-02 21:54:49 +01:00
|
|
|
</div>
|
|
|
|
<div class="alert alert_sidebar" id="home-error"></div>
|
|
|
|
<div class="alert alert_sidebar" id="stream-dne">
|
|
|
|
<p>The stream <span class="streamname" id="stream-dne-name"></span> does not exist.</p>
|
|
|
|
<button type="button" id="create-it" class="btn btn-primary">Create and send</button>
|
|
|
|
<button type="button" class="btn" onClick="$('#stream-dne').stop(true).fadeOut(500);">
|
|
|
|
Cancel message
|
|
|
|
</button>
|
|
|
|
</div>
|
|
|
|
<div class="alert alert_sidebar" id="stream-nosub">
|
|
|
|
<p>You're not subscribed to the stream <span class="streamname" id="stream-nosub-name"></span>.</p>
|
|
|
|
<button type="button" id="sub-it" class="btn btn-primary">Subscribe and send</button>
|
|
|
|
<button type="button" class="btn" onClick="$('#stream-nosub').stop(true).fadeOut(500);">
|
|
|
|
Cancel message
|
|
|
|
</button>
|
|
|
|
</div>
|
2012-10-04 22:34:00 +02:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div><!--/sidebar-->
|
2012-10-05 17:46:07 +02:00
|
|
|
<div class="span9 tab-content" id="application_area">
|
2012-10-11 22:34:57 +02:00
|
|
|
<div class="visible-phone" id="nav_whitespace"></div>
|
2012-09-17 20:59:26 +02:00
|
|
|
<div class="tab-pane active" id="home">
|
|
|
|
{% include "zephyr/home.html" %}
|
2012-09-11 21:33:24 +02:00
|
|
|
</div>
|
2012-10-03 22:21:17 +02:00
|
|
|
<div class="tab-pane" id="subscriptions">
|
2012-09-17 20:59:26 +02:00
|
|
|
{% include "zephyr/subscriptions.html" %}
|
2012-09-10 20:31:53 +02:00
|
|
|
</div>
|
2012-10-03 22:21:17 +02:00
|
|
|
<div class="tab-pane" id="settings">
|
2012-09-21 17:28:18 +02:00
|
|
|
{% include "zephyr/settings.html" %}
|
2012-09-17 20:59:26 +02:00
|
|
|
</div>
|
2012-09-26 00:26:35 +02:00
|
|
|
|
|
|
|
{% if show_debug %}
|
2012-10-03 22:21:17 +02:00
|
|
|
<div class="tab-pane" id="debug">
|
2012-09-26 00:26:35 +02:00
|
|
|
{% include "zephyr/debug.html" %}
|
|
|
|
</div>
|
|
|
|
{% endif %}
|
|
|
|
|
2012-09-17 20:59:26 +02:00
|
|
|
</div><!--/tab-content-->
|
2012-09-14 21:27:12 +02:00
|
|
|
</div><!--/row-->
|
2012-10-24 22:53:19 +02:00
|
|
|
{% include "zephyr/keyboard_shortcuts.html" %}
|
2012-11-02 22:29:13 +01:00
|
|
|
{% include "zephyr/markdown_help.html" %}
|
2012-09-10 20:31:53 +02:00
|
|
|
|
2012-08-28 18:44:51 +02:00
|
|
|
{% endblock %}
|