From: Lukasz Anwajler Date: Wed, 27 Oct 2010 09:17:06 +0000 (-0500) Subject: Ticket #326: better UX in adding shelves. X-Git-Url: https://git.mdrn.pl/wolnelektury.git/commitdiff_plain/19b6808a73f77fffdbb80d049dd1f8d81eec9d78?hp=552f54f1b01bd2bcc0bc83e5d24466086a863efa Ticket #326: better UX in adding shelves. --- diff --git a/apps/catalogue/views.py b/apps/catalogue/views.py index de2c17b28..5be5122bd 100644 --- a/apps/catalogue/views.py +++ b/apps/catalogue/views.py @@ -500,7 +500,7 @@ def book_sets(request, slug): book.tags = new_shelves + list(book.tags.filter(~Q(category='set') | ~Q(user=request.user))) if request.is_ajax(): - return HttpResponse(_('

Shelves were sucessfully saved.

')) + return JSONResponse('{"msg":"'+_("

Shelves were sucessfully saved.

")+'", "after":"close"}') else: return HttpResponseRedirect('/') else: @@ -634,7 +634,7 @@ def new_set(request): new_set = new_set_form.save(request.user) if request.is_ajax(): - return HttpResponse(_('

Shelf %s was successfully created

') % new_set) + return JSONResponse('{"id":"%d", "name":"%s", "msg":"

Shelf %s was successfully created

"}' % (new_set.id, new_set.name, new_set)) else: return HttpResponseRedirect('/') diff --git a/wolnelektury/static/js/catalogue.js b/wolnelektury/static/js/catalogue.js index 9fd03d34b..1c23be82f 100644 --- a/wolnelektury/static/js/catalogue.js +++ b/wolnelektury/static/js/catalogue.js @@ -267,6 +267,7 @@ function serverTime() { return false; }); + var serverResponse; $('#user-shelves-window').jqm({ ajax: '@href', target: $('#user-shelves-window div.target')[0], @@ -280,8 +281,12 @@ function serverTime() { }, onLoad: function(hash) { $('form', hash.w).ajaxForm({ - target: $('#user-shelves-window div.target'), - success: function() { setTimeout(function() { $('#user-shelves-window').jqmHide() }, 1000) } + target: serverResponse, + success: function(serverResponse) { + var newShelf = $.parseJSON(serverResponse); + $('#user-shelves-window div.target').html(newShelf.msg); + setTimeout(function() { $('#user-shelves-window').jqmHide() }, 1000); + } }); $('input', hash.w).labelify({labelledClass: 'blur'}); @@ -378,19 +383,31 @@ function serverTime() { target.html('

'+LOCALE_TEXTS[LANGUAGE_CODE]['DELETE_SHELF']+'

'); hash.w.css({position: 'absolute', left: offset.left, top: offset.top}).show() }, onLoad: function(hash) { - try { - $('#createShelfTrigger').click(function(){ - $('#createNewShelf').show(); - }); - } catch (e){} - + try { + $('#createShelfTrigger').click(function(){ + // who cares it's not needed, but I was looking for it + // that's why I want it to stay.. :) + // var slug = $(hash.t).attr('href').split("/")[3]; + $('#createNewShelf').show(); + }); + } catch (e){} + $("#putOnShelf input[type=checkbox]").attr("checked",false); + var serverResponse; $('form', hash.w).ajaxForm({ - target: target, - success: function() { - setTimeout(function() { - $('#set-window').jqmHide(); - }, 1000)} - }); + target: serverResponse, + success: function(serverResponse) { + var newShelf = $.parseJSON(serverResponse); + // for live shelf adding + if(newShelf.name){ + var noIds = $("#putOnShelf ol ul").children('li').length; + $("#putOnShelf ol ul").prepend('
  • '); + $("#createNewShelf ol input[name=name]").val(""); + } + if(newShelf.after == "close"){ + setTimeout(function() {$('#set-window').jqmHide();}, 1000); + } + } + }); } }); diff --git a/wolnelektury/templates/catalogue/book_sets.html b/wolnelektury/templates/catalogue/book_sets.html index 2b713b465..1eee61d21 100644 --- a/wolnelektury/templates/catalogue/book_sets.html +++ b/wolnelektury/templates/catalogue/book_sets.html @@ -9,7 +9,7 @@ {% if not user.tag_set.count %}

    {% trans "You do not have any shelves. You can create one below, if you want to."%}

    {% else %} -
    +
    1. {{ form.set_ids }}