separator = $("<span> · </span>").addClass("separator");
getTranslation("WebInterface.Button.Comment", function(text) {
commentElement = $("<div><span>" + text + "</span></div>").addClass("show-reply-form").click(function() {
separator = $("<span> · </span>").addClass("separator");
getTranslation("WebInterface.Button.Comment", function(text) {
commentElement = $("<div><span>" + text + "</span></div>").addClass("show-reply-form").click(function() {
replyElement.removeClass("hidden");
replyElement.removeClass("light");
(function(replyElement) {
replyElement.removeClass("hidden");
replyElement.removeClass("light");
(function(replyElement) {
* The date and time of the last update (formatted for display)
*/
function updateSoneStatus(soneId, name, status, modified, locked, lastUpdated, lastUpdatedText) {
* The date and time of the last update (formatted for display)
*/
function updateSoneStatus(soneId, name, status, modified, locked, lastUpdated, lastUpdatedText) {
toggleClass("unknown", status == "unknown").
toggleClass("idle", status == "idle").
toggleClass("inserting", status == "inserting").
toggleClass("downloading", status == "downloading").
toggleClass("modified", modified);
toggleClass("unknown", status == "unknown").
toggleClass("idle", status == "idle").
toggleClass("inserting", status == "inserting").
toggleClass("downloading", status == "downloading").
toggleClass("modified", modified);
- $("#sone .sone." + filterSoneId(soneId) + " .lock").toggleClass("hidden", locked);
- $("#sone .sone." + filterSoneId(soneId) + " .unlock").toggleClass("hidden", !locked);
+ sone.find(".sone." + filterSoneId(soneId) + " .lock").toggleClass("hidden", locked);
+ sone.find(".sone." + filterSoneId(soneId) + " .unlock").toggleClass("hidden", !locked);
} else if (data.error == "invalid-post-id") {
/* pretend the post is already gone. */
getPost(postId).slideUp();
} else if (data.error == "invalid-post-id") {
/* pretend the post is already gone. */
getPost(postId).slideUp();
*/
function enhanceDeleteReplyButton(button, replyId, text) {
enhanceDeleteButton(button, text, function() {
*/
function enhanceDeleteReplyButton(button, replyId, text) {
enhanceDeleteButton(button, text, function() {
- ajaxGet("deleteReply.ajax", { "reply": replyId, "formPassword": $("#sone #formPassword").text() }, function(data, textStatus) {
+ ajaxGet("deleteReply.ajax", { "reply": replyId, "formPassword": sone.find("#formPassword").text() }, function(data, textStatus) {
} else if (data.error == "invalid-reply-id") {
/* pretend the reply is already gone. */
getReply(replyId).slideUp();
} else if (data.error == "invalid-reply-id") {
/* pretend the reply is already gone. */
getReply(replyId).slideUp();
- $("#sone .post#post-" + postId + " > .inner-part > .status-line .like").addClass("hidden");
- $("#sone .post#post-" + postId + " > .inner-part > .status-line .unlike").removeClass("hidden");
+ sone.find(".post#post-" + postId + " > .inner-part > .status-line .like").addClass("hidden");
+ sone.find(".post#post-" + postId + " > .inner-part > .status-line .unlike").removeClass("hidden");
updatePostLikes(postId);
}, function(xmlHttpRequest, textStatus, error) {
/* ignore error. */
updatePostLikes(postId);
}, function(xmlHttpRequest, textStatus, error) {
/* ignore error. */
- $("#sone .post#post-" + postId + " > .inner-part > .status-line .unlike").addClass("hidden");
- $("#sone .post#post-" + postId + " > .inner-part > .status-line .like").removeClass("hidden");
+ sone.find(".post#post-" + postId + " > .inner-part > .status-line .unlike").addClass("hidden");
+ sone.find(".post#post-" + postId + " > .inner-part > .status-line .like").removeClass("hidden");
updatePostLikes(postId);
}, function(xmlHttpRequest, textStatus, error) {
/* ignore error. */
updatePostLikes(postId);
}, function(xmlHttpRequest, textStatus, error) {
/* ignore error. */
function updatePostLikes(postId) {
ajaxGet("getLikes.ajax", { "type": "post", "post": postId }, function(data, textStatus) {
if ((data != null) && data.success) {
function updatePostLikes(postId) {
ajaxGet("getLikes.ajax", { "type": "post", "post": postId }, function(data, textStatus) {
if ((data != null) && data.success) {
- $("#sone .post#post-" + postId + " > .inner-part > .status-line .likes").toggleClass("hidden", data.likes == 0);
- $("#sone .post#post-" + postId + " > .inner-part > .status-line .likes span.like-count").text(data.likes);
- $("#sone .post#post-" + postId + " > .inner-part > .status-line .likes > span").attr("title", generateSoneList(data.sones));
+ sone.find(".post#post-" + postId + " > .inner-part > .status-line .likes").toggleClass("hidden", data.likes == 0);
+ sone.find(".post#post-" + postId + " > .inner-part > .status-line .likes span.like-count").text(data.likes);
+ sone.find(".post#post-" + postId + " > .inner-part > .status-line .likes > span").attr("title", generateSoneList(data.sones));
}
}, function(xmlHttpRequest, textStatus, error) {
/* ignore error. */
}
}, function(xmlHttpRequest, textStatus, error) {
/* ignore error. */
- $("#sone .reply#reply-" + replyId + " .status-line .like").addClass("hidden");
- $("#sone .reply#reply-" + replyId + " .status-line .unlike").removeClass("hidden");
+ sone.find(".reply#reply-" + replyId + " .status-line .like").addClass("hidden");
+ sone.find(".reply#reply-" + replyId + " .status-line .unlike").removeClass("hidden");
updateReplyLikes(replyId);
}, function(xmlHttpRequest, textStatus, error) {
/* ignore error. */
updateReplyLikes(replyId);
}, function(xmlHttpRequest, textStatus, error) {
/* ignore error. */
- $("#sone .reply#reply-" + replyId + " .status-line .unlike").addClass("hidden");
- $("#sone .reply#reply-" + replyId + " .status-line .like").removeClass("hidden");
+ sone.find(".reply#reply-" + replyId + " .status-line .unlike").addClass("hidden");
+ sone.find(".reply#reply-" + replyId + " .status-line .like").removeClass("hidden");
updateReplyLikes(replyId);
}, function(xmlHttpRequest, textStatus, error) {
/* ignore error. */
updateReplyLikes(replyId);
}, function(xmlHttpRequest, textStatus, error) {
/* ignore error. */
* The trust value for the Sone
*/
function updateTrustControls(soneId, trustValue) {
* The trust value for the Sone
*/
function updateTrustControls(soneId, trustValue) {
if (getPostAuthor(this) == soneId) {
getPostElement(this).find(".post-trust").toggleClass("hidden", trustValue != null);
getPostElement(this).find(".post-distrust").toggleClass("hidden", trustValue != null);
getPostElement(this).find(".post-untrust").toggleClass("hidden", trustValue == null);
}
});
if (getPostAuthor(this) == soneId) {
getPostElement(this).find(".post-trust").toggleClass("hidden", trustValue != null);
getPostElement(this).find(".post-distrust").toggleClass("hidden", trustValue != null);
getPostElement(this).find(".post-untrust").toggleClass("hidden", trustValue == null);
}
});
if (getReplyAuthor(this) == soneId) {
getReplyElement(this).find(".reply-trust").toggleClass("hidden", trustValue != null);
getReplyElement(this).find(".reply-distrust").toggleClass("hidden", trustValue != null);
if (getReplyAuthor(this) == soneId) {
getReplyElement(this).find(".reply-trust").toggleClass("hidden", trustValue != null);
getReplyElement(this).find(".reply-distrust").toggleClass("hidden", trustValue != null);
function updateReplyLikes(replyId) {
ajaxGet("getLikes.ajax", { "type": "reply", "reply": replyId }, function(data, textStatus) {
if ((data != null) && data.success) {
function updateReplyLikes(replyId) {
ajaxGet("getLikes.ajax", { "type": "reply", "reply": replyId }, function(data, textStatus) {
if ((data != null) && data.success) {
- $("#sone .reply#reply-" + replyId + " .status-line .likes").toggleClass("hidden", data.likes == 0);
- $("#sone .reply#reply-" + replyId + " .status-line .likes span.like-count").text(data.likes);
- $("#sone .reply#reply-" + replyId + " .status-line .likes > span").attr("title", generateSoneList(data.sones));
+ sone.find(".reply#reply-" + replyId + " .status-line .likes").toggleClass("hidden", data.likes == 0);
+ sone.find(".reply#reply-" + replyId + " .status-line .likes span.like-count").text(data.likes);
+ sone.find(".reply#reply-" + replyId + " .status-line .likes > span").attr("title", generateSoneList(data.sones));
}
}, function(xmlHttpRequest, textStatus, error) {
/* ignore error. */
}
}, function(xmlHttpRequest, textStatus, error) {
/* ignore error. */
- $("#sone .post#post-" + postId + " .create-reply").addClass("hidden");
- $("#sone .post#post-" + postId + " .create-reply .sender").hide();
- $("#sone .post#post-" + postId + " .create-reply .select-sender").show();
- $("#sone .post#post-" + postId + " .create-reply :input[name=sender]").val(getCurrentSoneId());
+ sone.find(".post#post-" + postId + " .create-reply").addClass("hidden");
+ sone.find(".post#post-" + postId + " .create-reply .sender").hide();
+ sone.find(".post#post-" + postId + " .create-reply .select-sender").show();
+ sone.find(".post#post-" + postId + " .create-reply :input[name=sender]").val(getCurrentSoneId());
ajaxGet("followSone.ajax", { "sone": soneId, "formPassword": getFormPassword() }, function() {
$(followElement).addClass("hidden");
$(followElement).parent().find(".unfollow").removeClass("hidden");
ajaxGet("followSone.ajax", { "sone": soneId, "formPassword": getFormPassword() }, function() {
$(followElement).addClass("hidden");
$(followElement).parent().find(".unfollow").removeClass("hidden");
if (getMenuSone(this) == soneId) {
$(".follow", this).toggleClass("hidden", true);
$(".unfollow", this).toggleClass("hidden", false);
if (getMenuSone(this) == soneId) {
$(".follow", this).toggleClass("hidden", true);
$(".unfollow", this).toggleClass("hidden", false);
ajaxGet("unfollowSone.ajax", { "sone": soneId, "formPassword": getFormPassword() }, function() {
$(unfollowElement).addClass("hidden");
$(unfollowElement).parent().find(".follow").removeClass("hidden");
ajaxGet("unfollowSone.ajax", { "sone": soneId, "formPassword": getFormPassword() }, function() {
$(unfollowElement).addClass("hidden");
$(unfollowElement).parent().find(".follow").removeClass("hidden");
if (getMenuSone(this) == soneId) {
$(".follow", this).toggleClass("hidden", false);
$(".unfollow", this).toggleClass("hidden", true);
if (getMenuSone(this) == soneId) {
$(".follow", this).toggleClass("hidden", false);
$(".unfollow", this).toggleClass("hidden", true);
ajaxGet("followSone.ajax", { "sone": soneId, "formPassword": getFormPassword() }, function() {
$(followElement).addClass("hidden");
$(followElement).parent().find(".unfollow").removeClass("hidden");
ajaxGet("followSone.ajax", { "sone": soneId, "formPassword": getFormPassword() }, function() {
$(followElement).addClass("hidden");
$(followElement).parent().find(".unfollow").removeClass("hidden");
if (getMenuSone(this) == soneId) {
$(".follow", this).toggleClass("hidden", true);
$(".unfollow", this).toggleClass("hidden", false);
if (getMenuSone(this) == soneId) {
$(".follow", this).toggleClass("hidden", true);
$(".unfollow", this).toggleClass("hidden", false);
ajaxGet("unfollowSone.ajax", { "sone": soneId, "formPassword": getFormPassword() }, function() {
$(unfollowElement).addClass("hidden");
$(unfollowElement).parent().find(".follow").removeClass("hidden");
ajaxGet("unfollowSone.ajax", { "sone": soneId, "formPassword": getFormPassword() }, function() {
$(unfollowElement).addClass("hidden");
$(unfollowElement).parent().find(".follow").removeClass("hidden");
if (getMenuSone(this) == soneId) {
$(".follow", this).toggleClass("hidden", false);
$(".unfollow", this).toggleClass("hidden", true);
if (getMenuSone(this) == soneId) {
$(".follow", this).toggleClass("hidden", false);
$(".unfollow", this).toggleClass("hidden", true);
* determine whether the notifications changed and need to be reloaded.
*/
function getNotificationHash() {
* determine whether the notifications changed and need to be reloaded.
*/
function getNotificationHash() {
ajaxGet("getNotifications.ajax", {}, function(data, textStatus) {
if (data && data.success) {
/* search for removed notifications. */
ajaxGet("getNotifications.ajax", {}, function(data, textStatus) {
if (data && data.success) {
/* search for removed notifications. */
notificationId = $(this).attr("id");
foundNotification = false;
$.each(data.notifications, function(index, value) {
notificationId = $(this).attr("id");
foundNotification = false;
$.each(data.notifications, function(index, value) {
$(this).slideUp("normal", function() {
$(this).remove();
/* remove activity when no notifications are visible. */
$(this).slideUp("normal", function() {
$(this).remove();
/* remove activity when no notifications are visible. */
checkForRemovedReplies(oldNotification, notification);
oldNotification.replaceWith(notification.show());
} else {
checkForRemovedReplies(oldNotification, notification);
oldNotification.replaceWith(notification.show());
} else {
if (value.id.substring(0, 5) != "local") {
notification.slideDown();
setActivity();
if (value.id.substring(0, 5) != "local") {
notification.slideDown();
setActivity();
soneIds.push($(this).text());
});
return soneIds.join(",");
soneIds.push($(this).text());
});
return soneIds.join(",");
* exists on the page, <code>false</code> otherwise
*/
function hasReply(replyId) {
* exists on the page, <code>false</code> otherwise
*/
function hasReply(replyId) {
}
function loadNewPost(postId, soneId, recipientId, time) {
}
function loadNewPost(postId, soneId, recipientId, time) {
return;
}
ajaxGet("getPost.ajax", { "post" : postId }, function(data, textStatus) {
return;
}
ajaxGet("getPost.ajax", { "post" : postId }, function(data, textStatus) {
var firstNewerReply = null;
$(this).find(".replies .reply").each(function() {
if (getReplyTime(this) > data.reply.time) {
var firstNewerReply = null;
$(this).find(".replies .reply").each(function() {
if (getReplyTime(this) > data.reply.time) {
function createNotification(id, lastUpdatedTime, text, dismissable) {
notification = $("<div></div>").addClass("notification").attr("id", id).attr("lastUpdatedTime", lastUpdatedTime);
if (dismissable) {
function createNotification(id, lastUpdatedTime, text, dismissable) {
notification = $("<div></div>").addClass("notification").attr("id", id).attr("lastUpdatedTime", lastUpdatedTime);
if (dismissable) {
- $("#sone .notification#" + notificationId + " .text").removeClass("hidden");
- $("#sone .notification#" + notificationId + " .short-text").addClass("hidden");
+ sone.find(".notification#" + notificationId + " .text").removeClass("hidden");
+ sone.find(".notification#" + notificationId + " .short-text").addClass("hidden");
function deleteProfileField(fieldId) {
ajaxGet("deleteProfileField.ajax", {"formPassword": getFormPassword(), "field": fieldId}, function(data, textStatus) {
if (data && data.success) {
function deleteProfileField(fieldId) {
ajaxGet("deleteProfileField.ajax", {"formPassword": getFormPassword(), "field": fieldId}, function(data, textStatus) {
if (data && data.success) {
*/
function showOfflineMarker(visible) {
/* jQuery documentation says toggle() works the other way around?! */
*/
function showOfflineMarker(visible) {
/* jQuery documentation says toggle() works the other way around?! */
var oldElement = $(this);
newElement = $("<input type='text'/>");
newElement.attr("class", oldElement.attr("class")).attr("name", oldElement.attr("name"));
var oldElement = $(this);
newElement = $("<input type='text'/>");
newElement.attr("class", oldElement.attr("class")).attr("name", oldElement.attr("name"));
/* this initializes the status update input field. */
getTranslation("WebInterface.DefaultText.StatusUpdate", function(defaultText) {
registerInputTextareaSwap("#sone #update-status .status-input", defaultText, "text", false, false);
/* this initializes the status update input field. */
getTranslation("WebInterface.DefaultText.StatusUpdate", function(defaultText) {
registerInputTextareaSwap("#sone #update-status .status-input", defaultText, "text", false, false);
- $("#sone #update-status .select-sender").css("display", "inline");
- $("#sone #update-status .sender").hide();
- $("#sone #update-status .select-sender button").click(function() {
- $("#sone #update-status .sender").show();
- $("#sone #update-status .select-sender").hide();
+ sone.find("#update-status .select-sender").css("display", "inline");
+ sone.find("#update-status .sender").hide();
+ sone.find("#update-status .select-sender button").click(function() {
+ sone.find("#update-status .sender").show();
+ sone.find("#update-status .select-sender").hide();
button = $("button:submit", this);
button.attr("disabled", "disabled");
if ($(this).find(":input.default:enabled").length > 0) {
button = $("button:submit", this);
button.attr("disabled", "disabled");
if ($(this).find(":input.default:enabled").length > 0) {
/* ajaxify input field on “view Sone” page. */
getTranslation("WebInterface.DefaultText.Message", function(defaultText) {
registerInputTextareaSwap("#sone #post-message input[name=text]", defaultText, "text", false, false);
/* ajaxify input field on “view Sone” page. */
getTranslation("WebInterface.DefaultText.Message", function(defaultText) {
registerInputTextareaSwap("#sone #post-message input[name=text]", defaultText, "text", false, false);
- $("#sone #post-message .select-sender").css("display", "inline");
- $("#sone #post-message .sender").hide();
- $("#sone #post-message .select-sender button").click(function() {
- $("#sone #post-message .sender").show();
- $("#sone #post-message .select-sender").hide();
+ sone.find("#post-message .select-sender").css("display", "inline");
+ sone.find("#post-message .sender").hide();
+ sone.find("#post-message .select-sender button").click(function() {
+ sone.find("#post-message .sender").show();
+ sone.find("#post-message .select-sender").hide();
sender = $(this).find(":input[name=sender]").val();
text = $(this).find(":input[name=text]:enabled").val();
ajaxGet("createPost.ajax", { "formPassword": getFormPassword(), "recipient": getShownSoneId(), "sender": sender, "text": text });
sender = $(this).find(":input[name=sender]").val();
text = $(this).find(":input[name=text]:enabled").val();
ajaxGet("createPost.ajax", { "formPassword": getFormPassword(), "recipient": getShownSoneId(), "sender": sender, "text": text });
getTranslation("WebInterface.Confirmation.DeleteReplyButton", function(text) {
getTranslation("WebInterface.DefaultText.Reply", function(text) {
getTranslation("WebInterface.Button.Comment", function(text) {
getTranslation("WebInterface.Confirmation.DeleteReplyButton", function(text) {
getTranslation("WebInterface.DefaultText.Reply", function(text) {
getTranslation("WebInterface.Button.Comment", function(text) {
postIds.push(getPostId(this));
});
updatePostTimes(postIds.join(","));
postIds.push(getPostId(this));
});
updatePostTimes(postIds.join(","));
/* hides all replies but the latest two. */
if (!isViewPostPage()) {
getTranslation("WebInterface.ClickToShow.Replies", function(text) {
/* hides all replies but the latest two. */
if (!isViewPostPage()) {
getTranslation("WebInterface.ClickToShow.Replies", function(text) {