diff --git a/templates/zephyr/index.html b/templates/zephyr/index.html
index 57920f8a47..9f85b214db 100644
--- a/templates/zephyr/index.html
+++ b/templates/zephyr/index.html
@@ -52,33 +52,36 @@
{% endif %}
{% endblock %}
{% block content %}
diff --git a/tools/jslint/check-all.js b/tools/jslint/check-all.js
index df6ddfc1c4..3d8f374cef 100644
--- a/tools/jslint/check-all.js
+++ b/tools/jslint/check-all.js
@@ -6,9 +6,7 @@ var globals =
' $ jQuery Spinner Handlebars XDate'
// index.html
- + ' initial_pointer email stream_list people_list have_initial_messages'
- + ' fullname desktop_notifications_enabled enter_sends domain poll_timeout'
- + ' debug_mode needs_tutorial'
+ + ' page_params'
// common.js
+ ' status_classes'
diff --git a/zephyr/static/js/activity.js b/zephyr/static/js/activity.js
index 99708c6bbf..cd969d8d96 100644
--- a/zephyr/static/js/activity.js
+++ b/zephyr/static/js/activity.js
@@ -90,7 +90,7 @@ function focus_ping() {
age = now - presence.website.timestamp;
}
- if (email !== this_email) {
+ if (page_params.email !== this_email) {
var status = 'idle';
if (presence.website !== undefined
&& presence.website.status === ACTIVE && age >= 0) {
diff --git a/zephyr/static/js/blueslip.js b/zephyr/static/js/blueslip.js
index 7a15b0f457..4b5244aea2 100644
--- a/zephyr/static/js/blueslip.js
+++ b/zephyr/static/js/blueslip.js
@@ -86,7 +86,7 @@ BlueslipError.prototype = Error.prototype;
return func.blueslip_wrapper;
}
var new_func = function blueslip_wrapper() {
- if (debug_mode) {
+ if (page_params.debug_mode) {
return func.apply(this, arguments);
} else {
try {
@@ -230,13 +230,13 @@ exports.info = function blueslip_info (msg) {
exports.warn = function blueslip_warn (msg) {
console.warn(msg);
- if (debug_mode) {
+ if (page_params.debug_mode) {
console.trace();
}
};
exports.error = function blueslip_error (msg) {
- if (debug_mode) {
+ if (page_params.debug_mode) {
throw new BlueslipError(msg);
} else {
console.error(msg);
@@ -245,7 +245,7 @@ exports.error = function blueslip_error (msg) {
};
exports.fatal = function blueslip_fatal (msg) {
- if (! debug_mode) {
+ if (! page_params.debug_mode) {
report_error(msg, Error().stack, {show_ui_msg: true});
}
diff --git a/zephyr/static/js/composebox_typeahead.js b/zephyr/static/js/composebox_typeahead.js
index 4961983c42..2df886bf3a 100644
--- a/zephyr/static/js/composebox_typeahead.js
+++ b/zephyr/static/js/composebox_typeahead.js
@@ -95,8 +95,8 @@ function handle_keydown(e) {
// want to change focus right away in the private_message_recipient box since it
// takes the typeaheads a little time to open after the user finishes typing, which
// can lead to the focus moving without the autocomplete having a chance to happen.
- if ((domain === "humbughq.com" && nextFocus === "compose-send-button") ||
- (domain !== "humbughq.com" && nextFocus)) {
+ if ((page_params.domain === "humbughq.com" && nextFocus === "compose-send-button") ||
+ (page_params.domain !== "humbughq.com" && nextFocus)) {
ui.focus_on(nextFocus);
nextFocus = false;
}
@@ -106,7 +106,7 @@ function handle_keydown(e) {
// (Unless shift is being held down, which we *do* want to insert a linebreak)
if (e.target.id === "new_message_content"
&& code === 13 && !e.shiftKey
- && enter_sends) {
+ && page_params.enter_sends) {
e.preventDefault();
if ($("#compose-send-button").attr('disabled') !== "disabled") {
$("#compose-send-button").attr('disabled', 'disabled');
@@ -158,8 +158,8 @@ exports.initialize = function () {
$("#enter_sends").click(function () {
var send_button = $("#compose-send-button");
- enter_sends = $("#enter_sends").is(":checked");
- if (enter_sends) {
+ page_params.enter_sends = $("#enter_sends").is(":checked");
+ if (page_params.enter_sends) {
send_button.fadeOut();
} else {
send_button.fadeIn();
@@ -168,11 +168,11 @@ exports.initialize = function () {
dataType: 'json',
url: '/json/change_enter_sends',
type: 'POST',
- data: {'enter_sends': enter_sends}
+ data: {'enter_sends': page_params.enter_sends}
});
});
- $("#enter_sends").prop('checked', enter_sends);
- if (enter_sends) $("#compose-send-button").hide();
+ $("#enter_sends").prop('checked', page_params.enter_sends);
+ if (page_params.enter_sends) $("#compose-send-button").hide();
// limit number of items so the list doesn't fall off the screen
$( "#stream" ).typeahead({
diff --git a/zephyr/static/js/hashchange.js b/zephyr/static/js/hashchange.js
index 1ff5f6744d..a1a536d429 100644
--- a/zephyr/static/js/hashchange.js
+++ b/zephyr/static/js/hashchange.js
@@ -57,7 +57,7 @@ function parse_narrow(hash) {
if (current_msg_list.selected_id() !== -1) {
new_selection = current_msg_list.selected_id();
} else {
- new_selection = initial_pointer;
+ new_selection = page_params.initial_pointer;
}
narrow.activate(operators, {
then_select_id: new_selection,
diff --git a/zephyr/static/js/message_list.js b/zephyr/static/js/message_list.js
index 0b3926a1e5..4de25d52db 100644
--- a/zephyr/static/js/message_list.js
+++ b/zephyr/static/js/message_list.js
@@ -278,7 +278,7 @@ MessageList.prototype = {
message.dom_id = table_name + message.id;
- if (message.sender_email === email) {
+ if (message.sender_email === page_params.email) {
message.stamp = ui.get_gravatar_stamp();
}
diff --git a/zephyr/static/js/notifications.js b/zephyr/static/js/notifications.js
index d1a664ce78..fd2311f5d7 100644
--- a/zephyr/static/js/notifications.js
+++ b/zephyr/static/js/notifications.js
@@ -16,11 +16,11 @@ function browser_desktop_notifications_on () {
}
exports.initialize = function () {
- names = fullname.toLowerCase().split(" ");
- names.push(email.split("@")[0].toLowerCase());
+ names = page_params.fullname.toLowerCase().split(" ");
+ names.push(page_params.email.split("@")[0].toLowerCase());
names.push("all");
names.push("everyone");
- names.push("" + fullname.toLowerCase() + "");
+ names.push("" + page_params.fullname.toLowerCase() + "");
$(window).focus(function () {
window_has_focus = true;
@@ -43,7 +43,7 @@ exports.initialize = function () {
}
$(document).click(function () {
- if (!desktop_notifications_enabled || asked_permission_already) {
+ if (!page_params.desktop_notifications_enabled || asked_permission_already) {
return;
}
if (window.webkitNotifications.checkPermission() !== 0) { // 0 is PERMISSION_ALLOWED
@@ -59,7 +59,7 @@ exports.update_title_count = function () {
var new_message_count = unread_in_current_view();
document.title = (new_message_count ? ("(" + new_message_count + ") ") : "")
- + domain + " - Humbug";
+ + page_params.domain + " - Humbug";
// IE doesn't support PNG favicons, *shrug*
if (! $.browser.msie) {
@@ -163,7 +163,7 @@ exports.speaking_at_me = function (message) {
var found_match = false, indexof, after_name, after_atname;
var punctuation = /[\.,-\/#!$%\^&\*;:{}=\-_`~()\+\?\[\]\s<>]/;
- if (domain === "mit.edu") {
+ if (page_params.domain === "mit.edu") {
return false;
}
@@ -199,10 +199,10 @@ exports.received_messages = function (messages) {
}
$.each(messages, function (index, message) {
- if (message.sender_email !== email && narrow.message_in_home(message)) {
+ if (message.sender_email !== page_params.email && narrow.message_in_home(message)) {
title_needs_update = true;
- if (desktop_notifications_enabled &&
+ if (page_params.desktop_notifications_enabled &&
browser_desktop_notifications_on() &&
(message.type === "private" ||
exports.speaking_at_me(message))) {
diff --git a/zephyr/static/js/search.js b/zephyr/static/js/search.js
index 15eecd8f38..4426fa3b96 100644
--- a/zephyr/static/js/search.js
+++ b/zephyr/static/js/search.js
@@ -57,10 +57,10 @@ exports.update_typeahead = function () {
var streams = $.map(subs.subscribed_streams(), function(elt,idx) {
return {action: 'stream', query: elt};
});
- var people = $.map(people_list, function(elt,idx) {
+ var people = $.map(page_params.people_list, function(elt,idx) {
return {action: 'private_message', query: elt};
});
- var senders = $.map(people_list, function(elt,idx) {
+ var senders = $.map(page_params.people_list, function(elt,idx) {
return {action: 'sender', query: elt};
});
var options = streams.concat(people).concat(senders);
diff --git a/zephyr/static/js/setup.js b/zephyr/static/js/setup.js
index 1762ed6b30..1299f2a09e 100644
--- a/zephyr/static/js/setup.js
+++ b/zephyr/static/js/setup.js
@@ -5,7 +5,7 @@ var csrf_token;
$(function () {
// Display loading indicator. This disappears after the first
// get_updates completes.
- if (have_initial_messages) {
+ if (page_params.have_initial_messages) {
util.make_loading_indicator($('#page_loading_indicator'), 'Loading...');
} else {
util.show_first_run_message();
diff --git a/zephyr/static/js/subs.js b/zephyr/static/js/subs.js
index 6b58c86d99..27275cc2b0 100644
--- a/zephyr/static/js/subs.js
+++ b/zephyr/static/js/subs.js
@@ -80,11 +80,11 @@ exports.maybe_toggle_all_messages = function () {
};
function should_render_subscribers() {
- return domain !== 'mit.edu';
+ return page_params.domain !== 'mit.edu';
}
function should_list_all_streams() {
- return domain !== 'mit.edu';
+ return page_params.domain !== 'mit.edu';
}
function update_table_stream_color(table, stream_name, color) {
@@ -299,7 +299,7 @@ function mark_subscribed(stream_name, attrs) {
var settings = settings_for_sub(sub);
if (sub.render_subscribers && settings.hasClass('in')) {
var members = settings.find(".subscriber_list_container ul");
- add_to_member_list(members, fullname, email);
+ add_to_member_list(members, page_params.fullname, page_params.email);
}
// Display the swatch and subscription settings
@@ -525,12 +525,12 @@ function ajaxSubscribe(stream) {
var res = $.parseJSON(xhr.responseText);
if (!$.isEmptyObject(res.already_subscribed)) {
// Display the canonical stream capitalization.
- true_stream_name = res.already_subscribed[email][0];
+ true_stream_name = res.already_subscribed[page_params.email][0];
ui.report_success("Already subscribed to " + true_stream_name,
$("#subscriptions-status"));
} else {
// Display the canonical stream capitalization.
- true_stream_name = res.subscribed[email][0];
+ true_stream_name = res.subscribed[page_params.email][0];
}
mark_subscribed(true_stream_name);
},
@@ -592,7 +592,7 @@ function ajaxSubscribeForCreation(stream, principals, invite_only) {
exports.tutorial_subscribe_or_add_me_to = function (stream_name) {
var stream_status = compose.check_stream_existence(stream_name);
if (stream_status === 'does-not-exist') {
- ajaxSubscribeForCreation(stream_name, [email], false);
+ ajaxSubscribeForCreation(stream_name, [page_params.email], false);
} else {
ajaxSubscribe(stream_name);
}
@@ -615,9 +615,9 @@ function people_cmp(person1, person2) {
function show_new_stream_modal() {
var people_minus_you_and_maybe_humbuggers = [];
- $.each(people_list, function (idx, person) {
- if (person.email !== email &&
- (domain === "humbughq.com" ||
+ $.each(page_params.people_list, function (idx, person) {
+ if (person.email !== page_params.email &&
+ (page_params.domain === "humbughq.com" ||
person.email.split('@')[1] !== "humbughq.com"
)
) {
@@ -635,8 +635,8 @@ function show_new_stream_modal() {
$(function () {
var i;
// Populate stream_info with data handed over to client-side template.
- for (i = 0; i < stream_list.length; i++) {
- create_sub(stream_list[i].name, stream_list[i]);
+ for (i = 0; i < page_params.stream_list.length; i++) {
+ create_sub(page_params.stream_list[i].name, page_params.stream_list[i]);
}
$("#add_new_subscription").on("submit", function (e) {
@@ -665,7 +665,7 @@ $(function () {
principals.push($(this).val());
});
// You are always subscribed to streams you create.
- principals.push(email);
+ principals.push(page_params.email);
ajaxSubscribeForCreation(stream,
principals,
$('#stream_creation_form input[name=privacy]:checked').val() === "invite-only"
@@ -723,7 +723,7 @@ $(function () {
if (data.subscribed.hasOwnProperty(principal)) {
error_elem.addClass("hide");
warning_elem.addClass("hide");
- if (principal === email) {
+ if (principal === page_params.email) {
// mark_subscribed adds the user to the member list
mark_subscribed(stream);
} else {
diff --git a/zephyr/static/js/tutorial.js b/zephyr/static/js/tutorial.js
index 4e62ec221f..be21d4a6b8 100644
--- a/zephyr/static/js/tutorial.js
+++ b/zephyr/static/js/tutorial.js
@@ -120,12 +120,12 @@ function wait_for_message(time_to_wait_sec, condition) {
var script = [];
function make_script() {
- my_tutorial_stream = 'tutorial-' + email.split('@')[0];
+ my_tutorial_stream = 'tutorial-' + page_params.email.split('@')[0];
my_tutorial_stream = my_tutorial_stream.substring(0, 30);
// Try to guess at one of your main streams.
// This is problematic because it might end up being 'commits' or something.
- var main_stream_name = domain.split('.')[0];
+ var main_stream_name = page_params.domain.split('.')[0];
var my_streams = subs.subscribed_streams();
if (my_streams.length <= 2) {
@@ -145,7 +145,7 @@ function make_script() {
script = [
go(sleep, 1000), // The first message seems to sometimes get eaten in Chrome otherwise.
- go2(stream_message, "tutorial", "Hello, " + fullname + "!"),
+ go2(stream_message, "tutorial", "Hello, " + page_params.fullname + "!"),
go(sleep, 2000),
go2(stream_message, "tutorial", "Welcome to Humbug!"),
go(sleep, 2000),
@@ -291,7 +291,7 @@ exports.is_running = function () {
exports.initialize = function () {
make_script();
// Global variable populated by the server code
- if (needs_tutorial) {
+ if (page_params.needs_tutorial) {
exports.start();
}
};
diff --git a/zephyr/static/js/typeahead_helper.js b/zephyr/static/js/typeahead_helper.js
index 819dbddc11..a9e9c043ee 100644
--- a/zephyr/static/js/typeahead_helper.js
+++ b/zephyr/static/js/typeahead_helper.js
@@ -74,7 +74,7 @@ exports.update_all_recipients = function (recipients) {
exports.update_your_recipients = function (recipients) {
$.each(recipients, function (idx, recipient_data) {
- if (recipient_data.email !== email) {
+ if (recipient_data.email !== page_params.email) {
add_to_known_recipients(recipient_data, true);
}
});
diff --git a/zephyr/static/js/ui.js b/zephyr/static/js/ui.js
index 8575f187ff..8e8f6bb6cc 100644
--- a/zephyr/static/js/ui.js
+++ b/zephyr/static/js/ui.js
@@ -262,7 +262,7 @@ $(function () {
$("img.gravatar-profile").bind('load', resizehandler);
// We don't have a stream list at MIT.
- if (domain === "mit.edu") {
+ if (page_params.domain === "mit.edu") {
$("#stream_filters").remove();
$("#stream_filters_sep").remove();
}
@@ -727,7 +727,7 @@ $(function () {
update_gravatars();
if (result.enable_desktop_notifications !== undefined) {
- desktop_notifications_enabled = result.enable_desktop_notifications;
+ page_params.desktop_notifications_enabled = result.enable_desktop_notifications;
}
settings_status.removeClass(status_classes)
@@ -789,7 +789,7 @@ $(function () {
resizehandler();
hack_for_floating_recipient_bar();
- typeahead_helper.update_all_recipients(people_list);
+ typeahead_helper.update_all_recipients(page_params.people_list);
composebox_typeahead.initialize();
search.initialize();
notifications.initialize();
@@ -984,7 +984,7 @@ exports.add_narrow_filter = function(name, type, uri) {
* This will not be as much of an issue once we do prioritization of streams
* in the list.
*/
- if (domain === "mit.edu" && type === "stream") {
+ if (page_params.domain === "mit.edu" && type === "stream") {
return false;
}
@@ -1057,8 +1057,8 @@ exports.set_presence_list = function (users, presence_info) {
$('#user_presences').append(entry);
}
- if (domain !== "mit.edu") {
- add_entry(fullname, email, 'active');
+ if (page_params.domain !== "mit.edu") {
+ add_entry(page_params.fullname, page_params.email, 'active');
}
$.each(users, function (idx, email) {
diff --git a/zephyr/static/js/zephyr.js b/zephyr/static/js/zephyr.js
index 9e9ea725fe..865b2b355a 100644
--- a/zephyr/static/js/zephyr.js
+++ b/zephyr/static/js/zephyr.js
@@ -34,12 +34,12 @@ var server_furthest_read = -1;
var pointer_update_in_flight = false;
function add_person(person) {
- people_list.push(person);
+ page_params.people_list.push(person);
people_dict[person.email] = person;
}
$(function () {
- $.each(people_list, function (idx, person) {
+ $.each(page_params.people_list, function (idx, person) {
people_dict[person.email] = person;
});
// The special account feedback@humbughq.com is used for in-app
@@ -113,7 +113,7 @@ function get_private_message_recipient(message, attr) {
var recipient, i;
var other_recipients = $.grep(message.display_recipient,
function (element, index) {
- return element.email !== email;
+ return element.email !== page_params.email;
});
if (other_recipients.length === 0) {
// private message with oneself
@@ -214,7 +214,7 @@ function message_unread(message) {
var sent_by_human = ['website', 'iphone', 'android']
.indexOf(message.client.toLowerCase()) !== -1;
- if (message.sender_email === email && sent_by_human) {
+ if (message.sender_email === page_params.email && sent_by_human) {
return false;
}
@@ -389,8 +389,8 @@ function send_pointer_update() {
}
$(function () {
- furthest_read = initial_pointer;
- server_furthest_read = initial_pointer;
+ furthest_read = page_params.initial_pointer;
+ server_furthest_read = page_params.initial_pointer;
// We only send pointer updates when the user has been idle for a
// short while to avoid hammering the server
@@ -449,7 +449,7 @@ function add_message_metadata(message, dummy) {
involved_people = message.display_recipient;
- if (message.sender_email === email) {
+ if (message.sender_email === page_params.email) {
typeahead_helper.update_your_recipients(involved_people);
} else {
typeahead_helper.update_all_recipients(involved_people);
@@ -596,7 +596,7 @@ function get_updates(options) {
url: '/json/get_updates',
data: get_updates_params,
dataType: 'json',
- timeout: poll_timeout,
+ timeout: page_params.poll_timeout,
success: function (data) {
if (! data) {
// The server occasionally returns no data during a
@@ -769,7 +769,8 @@ $(function () {
// We fall back to the closest selected id, as the user may have removed
// a stream from the home before already
if (home_msg_list.selected_id() === -1) {
- home_msg_list.select_id(initial_pointer, {then_scroll: true, use_closest: true});
+ home_msg_list.select_id(page_params.initial_pointer,
+ {then_scroll: true, use_closest: true});
}
// catch the user up
@@ -801,9 +802,9 @@ $(function () {
}});
}
- if (have_initial_messages) {
+ if (page_params.have_initial_messages) {
load_old_messages({
- anchor: initial_pointer,
+ anchor: page_params.initial_pointer,
num_before: 200,
num_after: 200,
msg_list: home_msg_list,
@@ -839,7 +840,7 @@ function load_more_messages(msg_list) {
ui.show_loading_more_messages_indicator();
load_more_enabled = false;
if (msg_list.first() === undefined) {
- oldest_message_id = initial_pointer;
+ oldest_message_id = page_params.initial_pointer;
} else {
oldest_message_id = msg_list.first().id;
}
@@ -941,7 +942,7 @@ function fast_forward_pointer(btn) {
$.ajax({
type: 'POST',
url: '/json/get_profile',
- data: {email: email},
+ data: {email: page_params.email},
dataType: 'json',
success: function (data) {
mark_all_as_read(function () {