/* Copyright (c) 2010, Diaspora Inc. This file is * licensed under the Affero General Public License version 3. See * the COPYRIGHT file. */ function decrementRequestsCounter() { var $new_requests = $(".new_requests"), request_html = $new_requests.html(), old_request_count = request_html.match(/\d+/); if( old_request_count == 1 ) { $new_requests.html( request_html.replace(/ \(\d+\)/,'') ); } else { $new_requests.html( request_html.replace(/\d+/,old_request_count-1) ); } } $(function() { $('#move_friends_link').live( 'click', function(){ $.post( '/aspects/move_friends', { 'moves' : $('#aspect_list').data() }, function() { $('#aspect_title').html("Groups edited successfully!"); } ); // should the following logic be moved into the $.post() callback? $("#aspect_list").removeData(); $(".person") .css('background-color','none') .attr('from_aspect_id', function() { return $(this).parent().attr('id') }); }); // Multiple classes here won't work $("ul .person").draggable({ revert: true }); $("ul .requested_person").draggable({ revert: true }); $(".aspect ul").droppable({ hoverClass: 'active', drop: function(event, ui) { if ($(ui.draggable[0]).hasClass('requested_person')){ $.ajax({ type: "DELETE", url: "/requests/" + ui.draggable[0].getAttribute('request_id') , data: {"accept" : true , "aspect_id" : $(this)[0].id }, success: function(data){ decrementRequestsCounter(); } }); } else { var $aspect_list = $('#aspect_list'), move = {}; // This is poor implementation move[ 'friend_id' ] = ui.draggable[0].id; // ui.draggable.attr('id') move[ 'to' ] = $(this)[0].id;// $(this).attr('id'); move[ 'from' ] = ui.draggable[0].getAttribute('from_aspect_id'); // ui.draggable.attr('from_aspect_id') // if created custom attr's - should be using `data-foo` if (move['to'] == move['from']){ $aspect_list.data( ui.draggable[0].id, []); ui.draggable.css('background-color','#eee'); } else { $aspect_list.data( ui.draggable[0].id, move); ui.draggable.css('background-color','orange'); } } $(this).closest("ul").append(ui.draggable); } }); $(".remove ul").droppable({ hoverClass: 'active', drop: function(event, ui) { if ($(ui.draggable[0]).hasClass('requested_person')){ $.ajax({ type: "DELETE", url: "/requests/" + ui.draggable.attr('request_id'), success: function () { decrementRequestsCounter(); } }); } else { $.ajax({ type: "DELETE", url: "/people/" + ui.draggable.attr('id'), success: function () { alert("Removed Friend, proably want an undo countdown.") } }); } $(ui.draggable[0]).fadeOut('slow'); // ui.draggable.fadeOut('slow') } }); $(".aspect h1").live( 'focus', function() { var $this = $(this), id = $this.closest("li").children("ul").attr("id"), link = "/aspects/"+ id; $this.keypress(function(e) { if (e.which == 13) { e.preventDefault(); $this.blur(); //save changes $.ajax({ type: "PUT", url: link, data: {"aspect" : {"name" : $this.text() }} }); } //update all other aspect links $this.keyup(function(e) { $("#aspect_nav a[href='"+link+"']").text($this.text()); }); }); }); });