diff --git a/isso/js/isso.js b/isso/js/isso.js
index fdad29e..d197cbf 100644
--- a/isso/js/isso.js
+++ b/isso/js/isso.js
@@ -61,46 +61,29 @@ var format = function(date, lang, fmt) {
* isso specific helpers to create, modify, delete and receive comments
*/
-function isso(method, path, data, success, error) {
- $.ajax({
- url: path,
- method: method,
- type: 'json',
- headers: {
- 'Content-Type': 'application/json'
- },
- data: JSON.stringify(data),
- error: function(rv) {
- error(rv) || alert("Mööp.");
- },
- success: function(rv) {
- success(rv);
- }
- });
-};
-
-
function verify(data) {
return data['text'] == null ? false : true
};
-function create(data, success) {
+function create(data, func) {
if (!verify(data)) {
return;
}
- isso('POST', '/1.0/' + encodeURIComponent(window.location.pathname) + '/new', data, success);
+ $.ajax('POST', '/1.0/' + encodeURIComponent(window.location.pathname) + '/new',
+ JSON.stringify(data), {'Content-Type': 'application/json'}).then(func);
};
-function modify(id, data, success) {
+function modify(id, data, func) {
if (!verify(data)) {
return;
}
- isso('PUT', '/1.0/' + encodeURIComponent(window.location.pathname) + '/' + id, data, success);
+ $.ajax('PUT', '/1.0/' + encodeURIComponent(window.location.pathname) + '/' + id,
+ JSON.stringify(data), {'Content-Type': 'application/json'}).then(func)
};
@@ -155,7 +138,9 @@ function insert(post) {
:param post: JSON from API call
*/
+ var path = encodeURIComponent(window.location.pathname);
var author = post['author'] || 'Anonymous';
+
if (post['website']) {
author = '' + author + '';
}
@@ -181,23 +166,16 @@ function insert(post) {
' ' +
'');
- if (read('session-' + encodeURIComponent(window.location.pathname) + '-' + post['id'])) {
+ if (read('session-' + path + '-' + post['id'])) {
$('#isso_' + post['id'] + '> footer > a:first-child')
.after('Löschen')
.after('Bearbeiten');
// DELETE
$('#isso_' + post['id'] + ' > footer .delete').on('click', function(event) {
- $.ajax({
- url: '/1.0/' + encodeURIComponent(window.location.pathname) + '/' + post['id'],
- method: 'DELETE',
- error: function(resp) {
- alert('Mööp!');
- },
- success: function(res) {
- // XXX comment might not actually deleted
- $('#isso_' + post['id']).remove();
- }
+ $.ajax('DELETE', '/1.0/' + path + '/' + post['id']).then(function(status, rv) {
+ // XXX comment might not actually deleted
+ $('#isso_' + post['id']).remove();
});
event.stop();
});
@@ -207,36 +185,33 @@ function insert(post) {
if ($('#issoform_' + post['id']).length == 0) {
- $.ajax({
- url: '/1.0/' + encodeURIComponent(window.location.pathname) + '/' + post['id'],
- type: 'json',
- data: {'plain': '1'},
- success: function(rv) {
- form(post['id'],
- function(html) {
- $('#isso_' + post['id']).after(html);
+ $.ajax('GET', '/1.0/' + path + '/' + post['id'], {'plain': '1'})
+ .then(function(status, rv) {
+ rv = JSON.parse(rv);
+ form(post['id'],
+ function(html) {
+ $('#isso_' + post['id']).after(html);
- var node = $("#issoform_" + post['id']);
- $('textarea[id="comment"]', node).val(rv['text']);
- $('input[id="author"]', node).val(rv['author']);
- $('input[id="email"]', node).val(rv['email']);
- $('input[id="website"]', node).val(rv['website']);
- $('input[name="submit"]', node).val('Bestätigen.')
- },
- function(event) {
- var node = $("#issoform_" + post['id']);
- modify(post['id'], {
- text: $('textarea[id="comment"]', node).val() || null,
- author: $('input[id="author"]', node).val() || null,
- email: $('input[id="email"]', node).val() || null,
- website: $('input[id="website"]', node).val() || null,
- parent: post['parent']
- }, function(rv) {
- update(rv);
- $('#issoform_' + post['id']).remove();
- });
+ var node = $("#issoform_" + post['id']);
+ $('textarea[id="comment"]', node).val(rv['text']);
+ $('input[id="author"]', node).val(rv['author']);
+ $('input[id="email"]', node).val(rv['email']);
+ $('input[id="website"]', node).val(rv['website']);
+ $('input[name="submit"]', node).val('Bestätigen.')
+ },
+ function(event) {
+ var node = $("#issoform_" + post['id']);
+ modify(post['id'], {
+ text: $('textarea[id="comment"]', node).val() || null,
+ author: $('input[id="author"]', node).val() || null,
+ email: $('input[id="email"]', node).val() || null,
+ website: $('input[id="website"]', node).val() || null,
+ parent: post['parent']
+ }, function(status, rv) {
+ update(JSON.parse(rv));
+ $('#issoform_' + post['id']).remove();
});
- }
+ });
});
} else {
$('#issoform_' + post['id']).remove();
@@ -260,9 +235,12 @@ function insert(post) {
email: $('input[id="email"]').val() || null,
website: $('input[id="website"]').val() || null,
parent: post['id']
- }, function(rv) {
- insert(rv);
+ }, function(status, rv) {
$('#issoform_' + post['id']).remove();
+
+ if (status == 201) {
+ insert(JSON.parse(rv));
+ } // XXX else ...
});
});
} else {
@@ -293,31 +271,30 @@ function initialize(thread) {
email: $('input[id="email"]').val() || null,
website: $('input[id="website"]').val() || null,
parent: null
- }, function(rv) {
- insert(rv);
+ }, function(status, rv) {
+ if (status == 201) {
+ insert(JSON.parse(rv));
+ }
});
});
};
function fetch(thread) {
- var rv = $.ajax({
- url: '/1.0/' + encodeURIComponent(window.location.pathname) + '/',
- method: 'GET',
- type: 'json',
- headers: {
- 'Content-Type': 'application/json',
- },
- error: function(resp) {
- return;
- },
- success: function(resp) {
- for (var item in resp) {
- insert(resp[item]);
- }
- }
+ $.ajax('GET', '/1.0/' + encodeURIComponent(window.location.pathname) + '/',
+ {}, {'Content-Type': 'application/json'}).then(function(status, rv) {
+
+ if (status != 200) {
+ return
+ };
+
+ rv = JSON.parse(rv);
+ for (var item in rv) {
+ insert(rv[item]);
+ };
});
-};
+}
+
$.domReady(function() {