X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=js%2Futil.js;h=55f2920cd5f4a9e25a13bb9c92ce2304b3e25266;hb=c30dcbebbcb383fbd2d4ba92ef5294fbb3e44244;hp=98fb6c985026114808d615d5f244be2ed14fdbee;hpb=31c1177970124cee31823cab3a11542c23b4126d;p=quix0rs-gnu-social.git
diff --git a/js/util.js b/js/util.js
index 98fb6c9850..55f2920cd5 100644
--- a/js/util.js
+++ b/js/util.js
@@ -518,8 +518,8 @@ var SN = { // StatusNet
url: form.attr('action'),
data: form.serialize() + '&ajax=1',
beforeSend: function(xhr) {
- form.addClass(SN.C.S.Processing)
- .find('.submit')
+ form.find('.submit')
+ .addClass(SN.C.S.Processing)
.addClass(SN.C.S.Disabled)
.attr(SN.C.S.Disabled, SN.C.S.Disabled);
},
@@ -609,8 +609,7 @@ var SN = { // StatusNet
$('#content .notice_reply').live('click', function(e) {
e.preventDefault();
var notice = $(this).closest('li.notice');
- var nickname = ($('.author .nickname', notice).length > 0) ? $($('.author .nickname', notice)[0]) : $('.author .nickname.uid');
- SN.U.NoticeInlineReplyTrigger(notice, '@' + nickname.text());
+ SN.U.NoticeInlineReplyTrigger(notice);
return false;
});
},
@@ -644,8 +643,8 @@ var SN = { // StatusNet
// and we'll add on the end of it. Will add if needed.
list = $('ul.threaded-replies', notice);
if (list.length == 0) {
- list = $('
');
- notice.append(list);
+ SN.U.NoticeInlineReplyPlaceholder(notice);
+ list = $('ul.threaded-replies', notice);
}
}
@@ -655,6 +654,10 @@ var SN = { // StatusNet
var nextStep = function() {
// Override...?
replyForm.find('input[name=inreplyto]').val(id);
+ replyForm.find('#notice_to').attr('disabled', 'disabled').hide();
+ replyForm.find('#notice_private').attr('disabled', 'disabled').hide();
+ replyForm.find('label[for=notice_to]').hide();
+ replyForm.find('label[for=notice_private]').hide();
// Set focus...
var text = replyForm.find('textarea');
@@ -714,6 +717,11 @@ var SN = { // StatusNet
NoticeInlineReplyPlaceholder: function(notice) {
var list = notice.find('ul.threaded-replies');
+ if (list.length == 0) {
+ list = $('
');
+ notice.append(list);
+ list = notice.find('ul.threaded-replies');
+ }
var placeholder = $('
' +
'' +
'
');
@@ -1385,6 +1393,14 @@ var SN = { // StatusNet
$('#input_form_nav_'+tag).addClass('current');
}
+ // Don't remove 'current' if we also have the "nonav" class.
+ // An example would be the message input form. removing
+ // 'current' will cause the form to vanish from the page.
+ var nonav = $('.input_form.current.nonav');
+ if (nonav.length > 0) {
+ return;
+ }
+
$('.input_form.current').removeClass('current');
$('#input_form_'+tag)
.addClass('current')
@@ -1543,39 +1559,94 @@ var SN = { // StatusNet
});
},
- PeopletagAutocomplete: function() {
- $('.form_tag_user #tags').tagInput({
- tags: SN.C.PtagACData,
- tagSeparator: " ",
- animate: false,
- formatLine: function (i, e, search, matches) {
- var tag = "" + e.tag.substring(0, search.length) + "" + e.tag.substring(search.length);
-
- var line = $("").addClass('mode-' + e.mode);
- line.append($("
" + tag
- + " " + e.mode + "
"));
- if (e.freq)
- line.append("
" + e.freq + "
");
- return line;
+ /**
+ * Called when a people tag edit box is shown in the interface
+ *
+ * - loads the jQuery UI autocomplete plugin
+ * - sets event handlers for tag completion
+ *
+ */
+ PeopletagAutocomplete: function(txtBox) {
+ var split = function(val) {
+ return val.split( /\s+/ );
+ }
+ var extractLast = function(term) {
+ return split(term).pop();
+ }
+
+ // don't navigate away from the field on tab when selecting an item
+ txtBox.live( "keydown", function( event ) {
+ if ( event.keyCode === $.ui.keyCode.TAB &&
+ $(this).data( "autocomplete" ).menu.active ) {
+ event.preventDefault();
}
- });
+ }).autocomplete({
+ minLength: 0,
+ source: function(request, response) {
+ // delegate back to autocomplete, but extract the last term
+ response($.ui.autocomplete.filter(
+ SN.C.PtagACData, extractLast(request.term)));
+ },
+ focus: function() {
+ return false;
+ },
+ select: function(event, ui) {
+ var terms = split(this.value);
+ terms.pop();
+ terms.push(ui.item.value);
+ terms.push("");
+ this.value = terms.join(" ");
+ return false;
+ }
+ }).data('autocomplete')._renderItem = function(ul, item) {
+ // FIXME: with jQuery UI you cannot have it highlight the match
+ var _l = '' + item.tag
+ + ' ' + item.mode + ''
+ + '' + item.freq + ''
+
+ return $("")
+ .addClass('mode-' + item.mode)
+ .addClass('ptag-ac-line')
+ .data("item.autocomplete", item)
+ .append(_l)
+ .appendTo(ul);
+ }
},
+ /**
+ * Run setup for the ajax people tags editor
+ *
+ * - show edit button
+ * - set event handle for click on edit button
+ * - loads people tag autocompletion data if not already present
+ * or if it is stale.
+ *
+ */
PeopleTags: function() {
$('.user_profile_tags .editable').append($(''));
$('.peopletags_edit_button').live('click', function() {
var form = $(this).parents('dd').eq(0).find('form');
// We can buy time from the above animation
- if (typeof SN.C.PtagACData === 'undefined') {
- $.getJSON(_peopletagAC + '?token=' + $('#token').val(), function(data) {
+
+ $.ajax({
+ url: _peopletagAC,
+ dataType: 'json',
+ data: {token: $('#token').val()},
+ ifModified: true,
+ success: function(data) {
+ // item.label is used to match
+ for (i=0; i < data.length; i++) {
+ data[i].label = data[i].tag;
+ }
+
SN.C.PtagACData = data;
- _loadTagInput(SN.Init.PeopletagAutocomplete);
- });
- } else { _loadTagInput(SN.Init.PeopletagAutocomplete); }
+ SN.Init.PeopletagAutocomplete(form.find('#tags'));
+ }
+ });
$(this).parents('ul').eq(0).fadeOut(200, function() {form.fadeIn(200).find('input#tags')});
- })
+ });
$('.user_profile_tags form .submit').live('click', function() {
SN.U.FormPeopletagsXHR($(this).parents('form')); return false;
@@ -1590,6 +1661,18 @@ var SN = { // StatusNet
SN.U.FormXHR($(this));
return false;
});
+ $('form.ajax input[type=submit]').live('click', function() {
+ // Some forms rely on knowing which submit button was clicked.
+ // Save a hidden input field which'll be picked up during AJAX
+ // submit...
+ var button = $(this);
+ var form = button.closest('form');
+ form.find('.hidden-submit-button').remove();
+ $('')
+ .attr('name', button.attr('name'))
+ .val(button.val())
+ .appendTo(form);
+ });
},
/**
@@ -1616,7 +1699,26 @@ var SN = { // StatusNet
}
}
});
- }
+ },
+
+ CheckBoxes: function() {
+ $("span[class='checkbox-wrapper']").addClass("unchecked");
+ $(".checkbox-wrapper").click(function(){
+ if($(this).children("input").attr("checked")){
+ // uncheck
+ $(this).children("input").attr({checked: ""});
+ $(this).removeClass("checked");
+ $(this).addClass("unchecked");
+ $(this).children("label").text("Private?");
+ }else{
+ // check
+ $(this).children("input").attr({checked: "checked"});
+ $(this).removeClass("unchecked");
+ $(this).addClass("checked");
+ $(this).children("label").text("Private");
+ }
+ });
+ }
}
};
@@ -1630,6 +1732,7 @@ var SN = { // StatusNet
$(document).ready(function(){
SN.Init.AjaxForms();
SN.Init.UploadForms();
+ SN.Init.CheckBoxes();
if ($('.'+SN.C.S.FormNotice).length > 0) {
SN.Init.NoticeForm();
}
@@ -1649,3 +1752,4 @@ $(document).ready(function(){
SN.Init.PeopleTags();
}
});
+