diff options
-rw-r--r-- | js/util.js | 155 |
1 files changed, 97 insertions, 58 deletions
diff --git a/js/util.js b/js/util.js index 2d108118a..d84d21582 100644 --- a/js/util.js +++ b/js/util.js @@ -178,12 +178,13 @@ var SN = { // StatusNet }, FormNoticeXHR: function(form) { + var NDG, NLat, NLon, NLNS, NLID; form_id = form.attr('id'); form.append('<input type="hidden" name="ajax" value="1"/>'); form.ajaxForm({ dataType: 'xml', timeout: '60000', - beforeSend: function(xhr) { + beforeSend: function(formData) { if ($('#'+form_id+' #'+SN.C.S.NoticeDataText)[0].value.length === 0) { form.addClass(SN.C.S.Warning); return false; @@ -191,6 +192,13 @@ var SN = { // StatusNet form.addClass(SN.C.S.Processing); $('#'+form_id+' #'+SN.C.S.NoticeActionSubmit).addClass(SN.C.S.Disabled); $('#'+form_id+' #'+SN.C.S.NoticeActionSubmit).attr(SN.C.S.Disabled, SN.C.S.Disabled); + + NDG = $('#'+SN.C.S.NoticeDataGeo).attr('checked'); + NLat = $('#'+SN.C.S.NoticeLat).val(); + NLon = $('#'+SN.C.S.NoticeLon).val(); + NLNS = $('#'+SN.C.S.NoticeLocationNs).val(); + NLID = $('#'+SN.C.S.NoticeLocationId).val(); + return true; }, error: function (xhr, textStatus, errorThrown) { @@ -273,6 +281,12 @@ var SN = { // StatusNet form.removeClass(SN.C.S.Processing); $('#'+form_id+' #'+SN.C.S.NoticeActionSubmit).removeAttr(SN.C.S.Disabled); $('#'+form_id+' #'+SN.C.S.NoticeActionSubmit).removeClass(SN.C.S.Disabled); + + $('#'+SN.C.S.NoticeDataGeo).attr('checked', NDG); + $('#'+SN.C.S.NoticeLat).val(NLat); + $('#'+SN.C.S.NoticeLon).val(NLon); + $('#'+SN.C.S.NoticeLocationNs).val(NLNS); + $('#'+SN.C.S.NoticeLocationId).val(NLID); } }); }, @@ -442,6 +456,11 @@ var SN = { // StatusNet }, NoticeLocationAttach: function() { + var NLat = $('#'+SN.C.S.NoticeLat).val(); + var NLon = $('#'+SN.C.S.NoticeLon).val(); + var NLNS = $('#'+SN.C.S.NoticeLocationNs).val(); + var NLID = $('#'+SN.C.S.NoticeLocationId).val(); + function removeNoticeDataGeo() { $('label[for='+SN.C.S.NoticeDataGeo+']').removeClass('checked'); $('#'+SN.C.S.NoticeDataGeoSelected).hide(); @@ -451,6 +470,37 @@ var SN = { // StatusNet $('#'+SN.C.S.NoticeLocationId).val(''); } + function getJSONgeocodeURL(geocodeURL, data) { + $.getJSON(geocodeURL, data, function(location) { + NLN = $('#'+SN.C.S.NoticeLocationName); + NLN.replaceWith('<a id="notice_data-location_name"/>'); + NLN = $('#'+SN.C.S.NoticeLocationName); + + if (typeof(location.location_ns) != 'undefined') { + $('#'+SN.C.S.NoticeLocationNs).val(location.location_ns); + } + + if (typeof(location.location_id) != 'undefined') { + $('#'+SN.C.S.NoticeLocationId).val(location.location_id); + } + + if (typeof(location.name) == 'undefined') { + NLN_text = position.coords.latitude + ';' + position.coords.longitude; + } + else { + NLN_text = location.name; + } + + NLN.attr('href', location.url); + NLN.text(NLN_text); + NLN.click(function() { + window.open(location.url); + + return false; + }); + }); + } + var NDG = $('#'+SN.C.S.NoticeDataGeo); if (NDG.length > 0) { var NLE = $('#notice_data-location_wrap'); @@ -459,48 +509,48 @@ var SN = { // StatusNet $('label[for='+SN.C.S.NoticeDataGeo+']').attr('title', jQuery.trim($('label[for='+SN.C.S.NoticeDataGeo+']').text())); - if (navigator.geolocation) { - NDG.change(function() { - $.cookie(SN.C.S.NoticeLocationCookieName, $('#'+SN.C.S.NoticeDataGeo).attr('checked')); + NDG.change(function() { + $.cookie(SN.C.S.NoticeLocationCookieName, $('#'+SN.C.S.NoticeDataGeo).attr('checked')); - var NLN = $('#'+SN.C.S.NoticeLocationName); - if (NLN.length > 0) { - NLN.remove(); - } + var NLN = $('#'+SN.C.S.NoticeLocationName); + if (NLN.length > 0) { + NLN.remove(); + } + + if ($('#'+SN.C.S.NoticeDataGeo).attr('checked') === true) { + $('label[for='+SN.C.S.NoticeDataGeo+']').addClass('checked'); var S = '<div id="'+SN.C.S.NoticeDataGeoSelected+'" class="'+SN.C.S.Success+'"/>'; var NDGS = $('#'+SN.C.S.NoticeDataGeoSelected); + if (NDGS.length > 0) { NDGS.replaceWith(S); } else { $('#'+SN.C.S.FormNotice).append(S); } + NDGS = $('#'+SN.C.S.NoticeDataGeoSelected); - NDGS.prepend('<span id="'+SN.C.S.NoticeLocationName+'">Geo</span>'); + NDGS.prepend('<span id="'+SN.C.S.NoticeLocationName+'">Geo</span> <button class="minimize">_</button> <button class="close">×</button>'); var NLN = $('#'+SN.C.S.NoticeLocationName); + NLN.addClass('processing'); - if ($('#'+SN.C.S.NoticeDataGeo).attr('checked') === true) { - NLN.addClass('processing'); - $('label[for='+SN.C.S.NoticeDataGeo+']').addClass('checked'); + $('#'+SN.C.S.NoticeDataGeoSelected+' button.close').click(function(){ + $('#'+SN.C.S.NoticeDataGeoSelected).remove(); + $('#'+SN.C.S.NoticeDataGeo).attr('checked', false); + $('label[for='+SN.C.S.NoticeDataGeo+']').removeClass('checked'); - NDGS.append('<button class="minimize">_</button> <button class="close">×</button>'); - - $('#'+SN.C.S.NoticeDataGeoSelected+' button.close').click(function(){ - $('#'+SN.C.S.NoticeDataGeoSelected).remove(); - $('#'+SN.C.S.NoticeDataGeo).attr('checked', false); - $('label[for='+SN.C.S.NoticeDataGeo+']').removeClass('checked'); - - return false; - }); + return false; + }); - $('#'+SN.C.S.NoticeDataGeoSelected+' button.minimize').click(function(){ - $('#'+SN.C.S.NoticeDataGeoSelected).hide(); + $('#'+SN.C.S.NoticeDataGeoSelected+' button.minimize').click(function(){ + $('#'+SN.C.S.NoticeDataGeoSelected).hide(); - return false; - }); + return false; + }); + if (navigator.geolocation) { navigator.geolocation.getCurrentPosition( function(position) { $('#'+SN.C.S.NoticeLat).val(position.coords.latitude); @@ -512,34 +562,7 @@ var SN = { // StatusNet 'token': $('#token').val() }; - $.getJSON(geocodeURL, data, function(location) { - NLN = $('#'+SN.C.S.NoticeLocationName); - NLN.replaceWith('<a id="notice_data-location_name"/>'); - NLN = $('#'+SN.C.S.NoticeLocationName); - - if (typeof(location.location_ns) != 'undefined') { - $('#'+SN.C.S.NoticeLocationNs).val(location.location_ns); - } - - if (typeof(location.location_id) != 'undefined') { - $('#'+SN.C.S.NoticeLocationId).val(location.location_id); - } - - if (typeof(location.name) == 'undefined') { - NLN_text = position.coords.latitude + ';' + position.coords.longitude; - } - else { - NLN_text = location.name; - } - - NLN.attr('href', location.url); - NLN.text(NLN_text); - NLN.click(function() { - window.open(location.url); - - return false; - }); - }); + getJSONgeocodeURL(geocodeURL, data); }, function(error) { @@ -550,13 +573,29 @@ var SN = { // StatusNet ); } else { - removeNoticeDataGeo(); + if (NLat.length > 0 && NLon.length > 0) { + var data = { + 'lat': NLat, + 'lon': NLon, + 'token': $('#token').val() + }; + + getJSONgeocodeURL(geocodeURL, data); + } + else { + removeNoticeDataGeo(); + $('#'+SN.C.S.NoticeDataGeo).remove(); + $('label[for='+SN.C.S.NoticeDataGeo+']').remove(); + } } - }).change(); + } + else { + removeNoticeDataGeo(); + } + }).change(); - var cookieVal = $.cookie(SN.C.S.NoticeLocationCookieName); - NDG.attr('checked', (cookieVal === null || cookieVal == 'true')); - } + var cookieVal = $.cookie(SN.C.S.NoticeLocationCookieName); + NDG.attr('checked', (cookieVal === null || cookieVal == 'true')); } }, |