Don't let people try to send zephyrs to empty class names.

Also strip leading and trailing whitespace, so 'Bar' and 'Bar' aren't
separate classes.

(imported from commit a39c220d1a4c4d179f4adbf5e1391436eda32f4f)
This commit is contained in:
Jessica McKellar
2012-09-13 17:48:20 -04:00
parent ebfc684a6e
commit a12f582d92
2 changed files with 25 additions and 8 deletions

View File

@@ -55,6 +55,10 @@ function show_compose(tabname) {
} }
} }
function compose_class_name() {
return $.trim($("#class").val());
}
$(function () { $(function () {
var status_classes = 'alert-error alert-success alert-info'; var status_classes = 'alert-error alert-success alert-info';
var send_status = $('#send-status'); var send_status = $('#send-status');
@@ -73,9 +77,22 @@ $(function () {
if ($("#class-message:visible")[0] === undefined) {// we're not dealing with classes if ($("#class-message:visible")[0] === undefined) {// we're not dealing with classes
return true; return true;
} }
var zephyr_class = compose_class_name();
if (zephyr_class === "") {
// You can't try to send to an empty class.
send_status.removeClass(status_classes)
.addClass('alert-error')
.text('Please specify a class')
.stop(true).fadeTo(0,1);
buttons.removeAttr('disabled');
$('#class-message input:not(:hidden):first').focus().select();
return false;
}
var okay = true; var okay = true;
$.ajax({ $.ajax({
url: "subscriptions/exists/" + $("#class").val(), url: "subscriptions/exists/" + zephyr_class,
async: false, async: false,
success: function (data) { success: function (data) {
if (data === "False") { if (data === "False") {
@@ -83,10 +100,10 @@ $(function () {
okay = false; okay = false;
send_status.removeClass(status_classes); send_status.removeClass(status_classes);
send_status.toggle(); send_status.toggle();
$('#class-dne-name').text($("#class").val()); $('#class-dne-name').text(zephyr_class);
$('#class-dne').show(); $('#class-dne').show();
$('#create-it').focus().click(function () { $('#create-it').focus().click(function () {
sub($("#class").val()); sub(compose_class_name());
$("#class-message form").ajaxSubmit(); $("#class-message form").ajaxSubmit();
$('#class-dne').stop(true).fadeOut(500); $('#class-dne').stop(true).fadeOut(500);
}); });
@@ -95,15 +112,15 @@ $(function () {
} }
} }
}); });
if (okay && class_list.indexOf($("#class").val()) === -1) { if (okay && class_list.indexOf(zephyr_class) === -1) {
// You're not subbed to the class // You're not subbed to the class
okay = false; okay = false;
send_status.removeClass(status_classes); send_status.removeClass(status_classes);
send_status.toggle(); send_status.toggle();
$('#class-nosub-name').text($("#class").val()); $('#class-nosub-name').text(zephyr_class);
$('#class-nosub').show(); $('#class-nosub').show();
$('#sub-it').focus().click(function () { $('#sub-it').focus().click(function () {
sub($("#class").val()); sub(compose_class_name());
$("#class-message form").ajaxSubmit(); $("#class-message form").ajaxSubmit();
$('#class-nosub').stop(true).fadeOut(500); $('#class-nosub').stop(true).fadeOut(500);
}); });

View File

@@ -181,12 +181,12 @@ def zephyr_backend(request, sender):
zephyr_type_name = request.POST["type"] zephyr_type_name = request.POST["type"]
if zephyr_type_name == 'class': if zephyr_type_name == 'class':
if "class" not in request.POST: if "class" not in request.POST or not request.POST["class"]:
return json_error("Missing class") return json_error("Missing class")
if "instance" not in request.POST: if "instance" not in request.POST:
return json_error("Missing instance") return json_error("Missing instance")
class_name = request.POST['class'] class_name = request.POST['class'].strip()
if ZephyrClass.objects.filter(name=class_name, realm=user_profile.realm): if ZephyrClass.objects.filter(name=class_name, realm=user_profile.realm):
my_class = ZephyrClass.objects.get(name=class_name, realm=user_profile.realm) my_class = ZephyrClass.objects.get(name=class_name, realm=user_profile.realm)
else: else: