mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
feat(writeapi): abstracted ajax calls out to new api module
This commit is contained in:
@@ -5,7 +5,9 @@ define('admin/manage/categories', [
|
|||||||
'translator',
|
'translator',
|
||||||
'benchpress',
|
'benchpress',
|
||||||
'categorySelector',
|
'categorySelector',
|
||||||
], function (serialize, translator, Benchpress, categorySelector) {
|
'sortablejs',
|
||||||
|
'api',
|
||||||
|
], function (serialize, translator, Benchpress, categorySelector, api) {
|
||||||
var Categories = {};
|
var Categories = {};
|
||||||
var newCategoryId = -1;
|
var newCategoryId = -1;
|
||||||
var sortables;
|
var sortables;
|
||||||
@@ -196,12 +198,8 @@ define('admin/manage/categories', [
|
|||||||
|
|
||||||
Categories.toggle = function (cids, disabled) {
|
Categories.toggle = function (cids, disabled) {
|
||||||
var requests = cids.map(function (cid) {
|
var requests = cids.map(function (cid) {
|
||||||
return $.ajax({
|
return api.put('/categories/' + cid, {
|
||||||
url: config.relative_path + '/api/v1/categories/' + cid,
|
disabled: disabled ? 1 : 0,
|
||||||
method: 'put',
|
|
||||||
data: {
|
|
||||||
disabled: disabled ? 1 : 0,
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -238,11 +236,7 @@ define('admin/manage/categories', [
|
|||||||
newCategoryId = -1;
|
newCategoryId = -1;
|
||||||
|
|
||||||
Object.keys(modified).forEach(function (cid) {
|
Object.keys(modified).forEach(function (cid) {
|
||||||
$.ajax({
|
api.put('/categories/' + cid, modified[cid]);
|
||||||
url: config.relative_path + '/api/v1/categories/' + cid,
|
|
||||||
method: 'put',
|
|
||||||
data: modified[cid],
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,8 @@ define('admin/manage/category', [
|
|||||||
'admin/modules/colorpicker',
|
'admin/modules/colorpicker',
|
||||||
'categorySelector',
|
'categorySelector',
|
||||||
'benchpress',
|
'benchpress',
|
||||||
], function (uploader, iconSelect, colorpicker, categorySelector, Benchpress) {
|
'api',
|
||||||
|
], function (uploader, iconSelect, colorpicker, categorySelector, Benchpress, api) {
|
||||||
var Category = {};
|
var Category = {};
|
||||||
var updateHash = {};
|
var updateHash = {};
|
||||||
|
|
||||||
@@ -54,21 +55,17 @@ define('admin/manage/category', [
|
|||||||
}
|
}
|
||||||
|
|
||||||
var cid = ajaxify.data.category.cid;
|
var cid = ajaxify.data.category.cid;
|
||||||
$.ajax({
|
api.put('/categories/' + cid, updateHash, (res) => {
|
||||||
url: config.relative_path + '/api/v1/categories/' + cid,
|
|
||||||
method: 'put',
|
|
||||||
data: updateHash,
|
|
||||||
}).done(function (res) {
|
|
||||||
app.flags._unsaved = false;
|
app.flags._unsaved = false;
|
||||||
app.alert({
|
app.alert({
|
||||||
title: 'Updated Categories',
|
title: 'Updated Categories',
|
||||||
message: 'Category "' + res.response.name + '" was successfully updated.',
|
message: 'Category "' + res.name + '" was successfully updated.',
|
||||||
type: 'success',
|
type: 'success',
|
||||||
timeout: 2000,
|
timeout: 2000,
|
||||||
});
|
});
|
||||||
updateHash = {};
|
updateHash = {};
|
||||||
}).fail(function (ev) {
|
}, (err) => {
|
||||||
app.alertError(ev.responseJSON.status.message);
|
app.alertError(err.status.message);
|
||||||
});
|
});
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@@ -107,18 +104,15 @@ define('admin/manage/category', [
|
|||||||
});
|
});
|
||||||
}, 1000);
|
}, 1000);
|
||||||
|
|
||||||
$.ajax({
|
api.del('/categories/' + ajaxify.data.category.cid, undefined, () => {
|
||||||
url: config.relative_path + '/api/v1/categories/' + ajaxify.data.category.cid,
|
|
||||||
method: 'delete',
|
|
||||||
}).done(function () {
|
|
||||||
if (intervalId) {
|
if (intervalId) {
|
||||||
clearInterval(intervalId);
|
clearInterval(intervalId);
|
||||||
}
|
}
|
||||||
modal.modal('hide');
|
modal.modal('hide');
|
||||||
app.alertSuccess('[[admin/manage/categories:alert.purge-success]]');
|
app.alertSuccess('[[admin/manage/categories:alert.purge-success]]');
|
||||||
ajaxify.go('admin/manage/categories');
|
ajaxify.go('admin/manage/categories');
|
||||||
}).fail(function (ev) {
|
}, (err) => {
|
||||||
app.alertError(ev.responseJSON.status.message);
|
app.alertError(err.status.message);
|
||||||
});
|
});
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@@ -225,35 +219,27 @@ define('admin/manage/category', [
|
|||||||
|
|
||||||
$('button[data-action="setParent"], button[data-action="changeParent"]').on('click', Category.launchParentSelector);
|
$('button[data-action="setParent"], button[data-action="changeParent"]').on('click', Category.launchParentSelector);
|
||||||
$('button[data-action="removeParent"]').on('click', function () {
|
$('button[data-action="removeParent"]').on('click', function () {
|
||||||
$.ajax({
|
api.put('/categories/' + ajaxify.data.category.cid, {
|
||||||
url: config.relative_path + '/api/v1/categories/' + ajaxify.data.category.cid,
|
parentCid: 0,
|
||||||
method: 'put',
|
}, () => {
|
||||||
data: {
|
|
||||||
parentCid: 0,
|
|
||||||
},
|
|
||||||
}).done(function () {
|
|
||||||
$('button[data-action="removeParent"]').parent().addClass('hide');
|
$('button[data-action="removeParent"]').parent().addClass('hide');
|
||||||
$('button[data-action="changeParent"]').parent().addClass('hide');
|
$('button[data-action="changeParent"]').parent().addClass('hide');
|
||||||
$('button[data-action="setParent"]').removeClass('hide');
|
$('button[data-action="setParent"]').removeClass('hide');
|
||||||
}).fail(function (ev) {
|
}, (err) => {
|
||||||
app.alertError(ev.responseJSON.status.message);
|
app.alertError(err.message);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
$('button[data-action="toggle"]').on('click', function () {
|
$('button[data-action="toggle"]').on('click', function () {
|
||||||
var $this = $(this);
|
var $this = $(this);
|
||||||
var disabled = $this.attr('data-disabled') === '1';
|
var disabled = $this.attr('data-disabled') === '1';
|
||||||
$.ajax({
|
api.put('/categories/' + ajaxify.data.category.cid, {
|
||||||
url: config.relative_path + '/api/v1/categories/' + ajaxify.data.category.cid,
|
disabled: disabled ? 0 : 1,
|
||||||
method: 'put',
|
}, () => {
|
||||||
data: {
|
|
||||||
disabled: disabled ? 0 : 1,
|
|
||||||
},
|
|
||||||
}).done(function () {
|
|
||||||
$this.translateText(!disabled ? '[[admin/manage/categories:enable]]' : '[[admin/manage/categories:disable]]');
|
$this.translateText(!disabled ? '[[admin/manage/categories:enable]]' : '[[admin/manage/categories:disable]]');
|
||||||
$this.toggleClass('btn-primary', !disabled).toggleClass('btn-danger', disabled);
|
$this.toggleClass('btn-primary', !disabled).toggleClass('btn-danger', disabled);
|
||||||
$this.attr('data-disabled', disabled ? 0 : 1);
|
$this.attr('data-disabled', disabled ? 0 : 1);
|
||||||
}).fail(function (ev) {
|
}, (err) => {
|
||||||
app.alertError(ev.responseJSON.status.message);
|
app.alertError(err.message);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@@ -303,13 +289,9 @@ define('admin/manage/category', [
|
|||||||
});
|
});
|
||||||
|
|
||||||
categorySelector.modal(categories, function (parentCid) {
|
categorySelector.modal(categories, function (parentCid) {
|
||||||
$.ajax({
|
api.put('/categories/' + ajaxify.data.category.cid, {
|
||||||
url: config.relative_path + '/api/v1/categories/' + ajaxify.data.category.cid,
|
parentCid: parentCid,
|
||||||
method: 'put',
|
}, () => {
|
||||||
data: {
|
|
||||||
parentCid: parentCid,
|
|
||||||
},
|
|
||||||
}).done(function () {
|
|
||||||
var parent = allCategories.filter(function (category) {
|
var parent = allCategories.filter(function (category) {
|
||||||
return category && parseInt(category.cid, 10) === parseInt(parentCid, 10);
|
return category && parseInt(category.cid, 10) === parseInt(parentCid, 10);
|
||||||
});
|
});
|
||||||
@@ -319,8 +301,8 @@ define('admin/manage/category', [
|
|||||||
$('button[data-action="setParent"]').addClass('hide');
|
$('button[data-action="setParent"]').addClass('hide');
|
||||||
var buttonHtml = '<i class="fa ' + parent.icon + '"></i> ' + parent.name;
|
var buttonHtml = '<i class="fa ' + parent.icon + '"></i> ' + parent.name;
|
||||||
$('button[data-action="changeParent"]').html(buttonHtml).parent().removeClass('hide');
|
$('button[data-action="changeParent"]').html(buttonHtml).parent().removeClass('hide');
|
||||||
}).fail(function (ev) {
|
}, (err) => {
|
||||||
app.alertError(ev.responseJSON.status.message);
|
app.alertError(err.message);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
|
||||||
define('admin/manage/groups', [
|
define('admin/manage/groups', [
|
||||||
'categorySelector',
|
'categorySelector',
|
||||||
], function (categorySelector) {
|
'api',
|
||||||
|
], function (categorySelector, api) {
|
||||||
var Groups = {};
|
var Groups = {};
|
||||||
|
|
||||||
var intervalId = 0;
|
var intervalId = 0;
|
||||||
@@ -37,22 +37,18 @@ define('admin/manage/groups', [
|
|||||||
hidden: $('#create-group-hidden').is(':checked') ? 1 : 0,
|
hidden: $('#create-group-hidden').is(':checked') ? 1 : 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
$.ajax({
|
api.post('/groups', submitObj, (response) => {
|
||||||
url: config.relative_path + '/api/v1/groups',
|
|
||||||
method: 'post',
|
|
||||||
data: submitObj,
|
|
||||||
}).done(function (res) {
|
|
||||||
createModalError.addClass('hide');
|
createModalError.addClass('hide');
|
||||||
createGroupName.val('');
|
createGroupName.val('');
|
||||||
createModal.on('hidden.bs.modal', function () {
|
createModal.on('hidden.bs.modal', function () {
|
||||||
ajaxify.go('admin/manage/groups/' + res.response.name);
|
ajaxify.go('admin/manage/groups/' + response.name);
|
||||||
});
|
});
|
||||||
createModal.modal('hide');
|
createModal.modal('hide');
|
||||||
}).fail(function (ev) {
|
}, (err) => {
|
||||||
if (utils.hasLanguageKey(ev.responseJSON.status.message)) {
|
if (!utils.hasLanguageKey(err.status.message)) {
|
||||||
ev.responseJSON.status.message = '[[admin/manage/groups:alerts.create-failure]]';
|
err.status.message = '[[admin/manage/groups:alerts.create-failure]]';
|
||||||
}
|
}
|
||||||
createModalError.translateHtml(ev.responseJSON.status.message).removeClass('hide');
|
createModalError.translateHtml(err.status.message).removeClass('hide');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
define('admin/manage/users', ['translator', 'benchpress', 'autocomplete'], function (translator, Benchpress, autocomplete) {
|
define('admin/manage/users', ['translator', 'benchpress', 'autocomplete', 'api'], function (translator, Benchpress, autocomplete, api) {
|
||||||
var Users = {};
|
var Users = {};
|
||||||
|
|
||||||
Users.init = function () {
|
Users.init = function () {
|
||||||
@@ -133,10 +133,7 @@ define('admin/manage/users', ['translator', 'benchpress', 'autocomplete'], funct
|
|||||||
bootbox.confirm((uids.length > 1 ? '[[admin/manage/users:alerts.confirm-ban-multi]]' : '[[admin/manage/users:alerts.confirm-ban]]'), function (confirm) {
|
bootbox.confirm((uids.length > 1 ? '[[admin/manage/users:alerts.confirm-ban-multi]]' : '[[admin/manage/users:alerts.confirm-ban]]'), function (confirm) {
|
||||||
if (confirm) {
|
if (confirm) {
|
||||||
var requests = uids.map(function (uid) {
|
var requests = uids.map(function (uid) {
|
||||||
return $.ajax({
|
return api.put('/users/' + uid + '/ban');
|
||||||
url: config.relative_path + '/api/v1/users/' + uid + '/ban',
|
|
||||||
method: 'put',
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$.when(requests)
|
$.when(requests)
|
||||||
@@ -178,13 +175,9 @@ define('admin/manage/users', ['translator', 'benchpress', 'autocomplete'], funct
|
|||||||
var until = formData.length > 0 ? (Date.now() + (formData.length * 1000 * 60 * 60 * (parseInt(formData.unit, 10) ? 24 : 1))) : 0;
|
var until = formData.length > 0 ? (Date.now() + (formData.length * 1000 * 60 * 60 * (parseInt(formData.unit, 10) ? 24 : 1))) : 0;
|
||||||
|
|
||||||
var requests = uids.map(function (uid) {
|
var requests = uids.map(function (uid) {
|
||||||
return $.ajax({
|
return api.put('/users/' + uid + '/ban', {
|
||||||
url: config.relative_path + '/api/v1/users/' + uid + '/ban',
|
until: until,
|
||||||
method: 'put',
|
reason: formData.reason,
|
||||||
data: {
|
|
||||||
until: until,
|
|
||||||
reason: formData.reason,
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -209,10 +202,7 @@ define('admin/manage/users', ['translator', 'benchpress', 'autocomplete'], funct
|
|||||||
}
|
}
|
||||||
|
|
||||||
var requests = uids.map(function (uid) {
|
var requests = uids.map(function (uid) {
|
||||||
return $.ajax({
|
return api.delete('/users/' + uid + '/ban');
|
||||||
url: config.relative_path + '/api/v1/users/' + uid + '/ban',
|
|
||||||
method: 'delete',
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$.when(requests)
|
$.when(requests)
|
||||||
@@ -408,15 +398,13 @@ define('admin/manage/users', ['translator', 'benchpress', 'autocomplete'], funct
|
|||||||
password: password,
|
password: password,
|
||||||
};
|
};
|
||||||
|
|
||||||
$.post(config.relative_path + '/api/v1/users', user).done(function () {
|
api.post('/users', user, () => {
|
||||||
modal.modal('hide');
|
modal.modal('hide');
|
||||||
modal.on('hidden.bs.modal', function () {
|
modal.on('hidden.bs.modal', function () {
|
||||||
ajaxify.refresh();
|
ajaxify.refresh();
|
||||||
});
|
});
|
||||||
app.alertSuccess('[[admin/manage/users:alerts.create-success]]');
|
app.alertSuccess('[[admin/manage/users:alerts.create-success]]');
|
||||||
}).fail(function (ev) {
|
}, err => errorEl.translateHtml('[[admin/manage/users:alerts.error-x, ' + err.status.message + ']]').removeClass('hidden'));
|
||||||
return errorEl.translateHtml('[[admin/manage/users:alerts.error-x, ' + ev.responseJSON.status.message + ']]').removeClass('d-none').addClass('d-block');
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var timeoutId = 0;
|
var timeoutId = 0;
|
||||||
|
|||||||
@@ -1,7 +1,12 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
define('forum/account/edit', [
|
||||||
define('forum/account/edit', ['forum/account/header', 'translator', 'components', 'pictureCropper', 'benchpress'], function (header, translator, components, pictureCropper, Benchpress) {
|
'forum/account/header',
|
||||||
|
'translator',
|
||||||
|
'pictureCropper',
|
||||||
|
'benchpress',
|
||||||
|
'api',
|
||||||
|
], function (header, translator, pictureCropper, Benchpress, api) {
|
||||||
var AccountEdit = {};
|
var AccountEdit = {};
|
||||||
|
|
||||||
AccountEdit.init = function () {
|
AccountEdit.init = function () {
|
||||||
@@ -42,21 +47,15 @@ define('forum/account/edit', ['forum/account/header', 'translator', 'components'
|
|||||||
|
|
||||||
$(window).trigger('action:profile.update', userData);
|
$(window).trigger('action:profile.update', userData);
|
||||||
|
|
||||||
$.ajax({
|
api.put('/users/' + userData.uid, userData, (res) => {
|
||||||
url: config.relative_path + '/api/v1/users/' + userData.uid,
|
app.alertSuccess('[[user:profile-update-success]]');
|
||||||
data: userData,
|
|
||||||
method: 'put',
|
|
||||||
}).done(function (res) {
|
|
||||||
app.alertSuccess('[[user:profile_update_success]]');
|
|
||||||
|
|
||||||
if (res.response.picture) {
|
if (res.picture) {
|
||||||
$('#user-current-picture').attr('src', res.response.picture);
|
$('#user-current-picture').attr('src', res.picture);
|
||||||
}
|
}
|
||||||
|
|
||||||
updateHeader(res.response.picture);
|
updateHeader(res.picture);
|
||||||
}).fail(function (ev) {
|
}, err => app.alertError(err.status.message));
|
||||||
return app.alertError(ev.responseJSON.status.message);
|
|
||||||
});
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
define('forum/account/edit/email', ['forum/account/header', 'api'], function (header, api) {
|
||||||
define('forum/account/edit/email', ['forum/account/header'], function (header) {
|
|
||||||
var AccountEditEmail = {};
|
var AccountEditEmail = {};
|
||||||
|
|
||||||
AccountEditEmail.init = function () {
|
AccountEditEmail.init = function () {
|
||||||
@@ -27,16 +26,10 @@ define('forum/account/edit/email', ['forum/account/header'], function (header) {
|
|||||||
var btn = $(this);
|
var btn = $(this);
|
||||||
btn.addClass('disabled').find('i').removeClass('hide');
|
btn.addClass('disabled').find('i').removeClass('hide');
|
||||||
|
|
||||||
$.ajax({
|
api.put('/users/' + userData.uid, userData, (res) => {
|
||||||
url: config.relative_path + '/api/v1/users/' + userData.uid,
|
|
||||||
data: userData,
|
|
||||||
method: 'put',
|
|
||||||
}).done(function (res) {
|
|
||||||
btn.removeClass('disabled').find('i').addClass('hide');
|
btn.removeClass('disabled').find('i').addClass('hide');
|
||||||
ajaxify.go('user/' + res.response.userslug + '/edit');
|
ajaxify.go('user/' + res.userslug + '/edit');
|
||||||
}).fail(function (ev) {
|
}, err => app.alertError(err.status.message));
|
||||||
app.alertError(ev.responseJSON.status.message);
|
|
||||||
});
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
define('forum/account/edit/password', ['forum/account/header', 'translator', 'zxcvbn', 'api',], function (header, translator, zxcvbn, api) {
|
||||||
define('forum/account/edit/password', ['forum/account/header', 'translator', 'zxcvbn'], function (header, translator, zxcvbn) {
|
|
||||||
var AccountEditPassword = {};
|
var AccountEditPassword = {};
|
||||||
|
|
||||||
AccountEditPassword.init = function () {
|
AccountEditPassword.init = function () {
|
||||||
@@ -67,22 +66,16 @@ define('forum/account/edit/password', ['forum/account/header', 'translator', 'zx
|
|||||||
var btn = $(this);
|
var btn = $(this);
|
||||||
if (passwordvalid && passwordsmatch) {
|
if (passwordvalid && passwordsmatch) {
|
||||||
btn.addClass('disabled').find('i').removeClass('hide');
|
btn.addClass('disabled').find('i').removeClass('hide');
|
||||||
$.ajax({
|
api.put('/users/' + ajaxify.data.theirid + '/password', {
|
||||||
url: config.relative_path + '/api/v1/users/' + ajaxify.data.theirid + '/password',
|
currentPassword: currentPassword.val(),
|
||||||
method: 'put',
|
newPassword: password.val(),
|
||||||
data: {
|
}, () => {
|
||||||
currentPassword: currentPassword.val(),
|
|
||||||
newPassword: password.val(),
|
|
||||||
},
|
|
||||||
}).done(function () {
|
|
||||||
if (parseInt(app.user.uid, 10) === parseInt(ajaxify.data.uid, 10)) {
|
if (parseInt(app.user.uid, 10) === parseInt(ajaxify.data.uid, 10)) {
|
||||||
window.location.href = config.relative_path + '/login';
|
window.location.href = config.relative_path + '/login';
|
||||||
} else {
|
} else {
|
||||||
ajaxify.go('user/' + ajaxify.data.userslug + '/edit');
|
ajaxify.go('user/' + ajaxify.data.userslug + '/edit');
|
||||||
}
|
}
|
||||||
}).fail(function (ev) {
|
}, err => app.alertError(err.status.message)).always(() => {
|
||||||
app.alertError(ev.responseJSON.status.message);
|
|
||||||
}).always(function () {
|
|
||||||
btn.removeClass('disabled').find('i').addClass('hide');
|
btn.removeClass('disabled').find('i').addClass('hide');
|
||||||
currentPassword.val('');
|
currentPassword.val('');
|
||||||
password.val('');
|
password.val('');
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
define('forum/account/edit/username', ['forum/account/header', 'api'], function (header, api) {
|
||||||
define('forum/account/edit/username', ['forum/account/header'], function (header) {
|
|
||||||
var AccountEditUsername = {};
|
var AccountEditUsername = {};
|
||||||
|
|
||||||
AccountEditUsername.init = function () {
|
AccountEditUsername.init = function () {
|
||||||
@@ -25,11 +24,7 @@ define('forum/account/edit/username', ['forum/account/header'], function (header
|
|||||||
var btn = $(this);
|
var btn = $(this);
|
||||||
btn.addClass('disabled').find('i').removeClass('hide');
|
btn.addClass('disabled').find('i').removeClass('hide');
|
||||||
|
|
||||||
$.ajax({
|
api.put('/users/' + userData.uid, userData, (res) => {
|
||||||
url: config.relative_path + '/api/v1/users/' + userData.uid,
|
|
||||||
data: userData,
|
|
||||||
method: 'put',
|
|
||||||
}).done(function (res) {
|
|
||||||
btn.removeClass('disabled').find('i').addClass('hide');
|
btn.removeClass('disabled').find('i').addClass('hide');
|
||||||
var userslug = utils.slugify(userData.username);
|
var userslug = utils.slugify(userData.username);
|
||||||
if (userData.username && userslug && parseInt(userData.uid, 10) === parseInt(app.user.uid, 10)) {
|
if (userData.username && userslug && parseInt(userData.uid, 10) === parseInt(app.user.uid, 10)) {
|
||||||
@@ -41,9 +36,7 @@ define('forum/account/edit/username', ['forum/account/header'], function (header
|
|||||||
}
|
}
|
||||||
|
|
||||||
ajaxify.go('user/' + userslug + '/edit');
|
ajaxify.go('user/' + userslug + '/edit');
|
||||||
}).fail(function (ev) {
|
}, err => app.alertError(err.status.message));
|
||||||
app.alertError(ev.responseJSON.status.message);
|
|
||||||
});
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -8,7 +8,8 @@ define('forum/account/header', [
|
|||||||
'translator',
|
'translator',
|
||||||
'benchpress',
|
'benchpress',
|
||||||
'accounts/delete',
|
'accounts/delete',
|
||||||
], function (coverPhoto, pictureCropper, components, translator, Benchpress, AccountsDelete) {
|
'api',
|
||||||
|
], function (coverPhoto, pictureCropper, components, translator, Benchpress, AccountsDelete, api) {
|
||||||
var AccountHeader = {};
|
var AccountHeader = {};
|
||||||
var isAdminOrSelfOrGlobalMod;
|
var isAdminOrSelfOrGlobalMod;
|
||||||
|
|
||||||
@@ -115,17 +116,11 @@ define('forum/account/header', [
|
|||||||
}
|
}
|
||||||
|
|
||||||
function toggleFollow(type) {
|
function toggleFollow(type) {
|
||||||
$.ajax({
|
api[type === 'follow' ? 'put' : 'delete']('/users/' + ajaxify.data.uid + '/follow', undefined, () => {
|
||||||
url: config.relative_path + '/api/v1/users/' + ajaxify.data.uid + '/follow',
|
|
||||||
method: type === 'follow' ? 'post' : 'delete',
|
|
||||||
}).done(function () {
|
|
||||||
components.get('account/follow').toggleClass('hide', type === 'follow');
|
components.get('account/follow').toggleClass('hide', type === 'follow');
|
||||||
components.get('account/unfollow').toggleClass('hide', type === 'unfollow');
|
components.get('account/unfollow').toggleClass('hide', type === 'unfollow');
|
||||||
app.alertSuccess('[[global:alert.' + type + ', ' + ajaxify.data.username + ']]');
|
app.alertSuccess('[[global:alert.' + type + ', ' + ajaxify.data.username + ']]');
|
||||||
}).fail(function (ev) {
|
}, err => app.alertError(err.status.message));
|
||||||
console.log(ev);
|
|
||||||
app.alertError(ev.responseJSON.status.message);
|
|
||||||
});
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -154,22 +149,16 @@ define('forum/account/header', [
|
|||||||
|
|
||||||
var until = formData.length > 0 ? (Date.now() + (formData.length * 1000 * 60 * 60 * (parseInt(formData.unit, 10) ? 24 : 1))) : 0;
|
var until = formData.length > 0 ? (Date.now() + (formData.length * 1000 * 60 * 60 * (parseInt(formData.unit, 10) ? 24 : 1))) : 0;
|
||||||
|
|
||||||
$.ajax({
|
api.put('/users/' + theirid + '/ban', {
|
||||||
url: config.relative_path + '/api/v1/users/' + theirid + '/ban',
|
until: until,
|
||||||
method: 'put',
|
reason: formData.reason || '',
|
||||||
data: {
|
}, () => {
|
||||||
until: until,
|
|
||||||
reason: formData.reason || '',
|
|
||||||
},
|
|
||||||
}).done(function () {
|
|
||||||
if (typeof onSuccess === 'function') {
|
if (typeof onSuccess === 'function') {
|
||||||
return onSuccess();
|
return onSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
ajaxify.refresh();
|
ajaxify.refresh();
|
||||||
}).fail(function (ev) {
|
}, err => app.alertError(err.status.message));
|
||||||
app.alertError(ev.responseJSON.status.message);
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -178,14 +167,9 @@ define('forum/account/header', [
|
|||||||
}
|
}
|
||||||
|
|
||||||
function unbanAccount() {
|
function unbanAccount() {
|
||||||
$.ajax({
|
api.del('/users/' + ajaxify.data.theirid + '/ban', undefined, () => {
|
||||||
url: config.relative_path + '/api/v1/users/' + ajaxify.data.theirid + '/ban',
|
|
||||||
method: 'delete',
|
|
||||||
}).done(function () {
|
|
||||||
ajaxify.refresh();
|
ajaxify.refresh();
|
||||||
}).fail(function (ev) {
|
}, err => app.alertError(err.status.message));
|
||||||
app.alertError(ev.responseJSON.status.message);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function flagAccount() {
|
function flagAccount() {
|
||||||
|
|||||||
@@ -1,7 +1,4 @@
|
|||||||
'use strict';
|
define('forum/groups/list', ['forum/infinitescroll', 'benchpress', 'api'], function (infinitescroll, Benchpress, api) {
|
||||||
|
|
||||||
|
|
||||||
define('forum/groups/list', ['forum/infinitescroll', 'benchpress'], function (infinitescroll, Benchpress) {
|
|
||||||
var Groups = {};
|
var Groups = {};
|
||||||
|
|
||||||
Groups.init = function () {
|
Groups.init = function () {
|
||||||
@@ -11,17 +8,11 @@ define('forum/groups/list', ['forum/infinitescroll', 'benchpress'], function (in
|
|||||||
$('button[data-action="new"]').on('click', function () {
|
$('button[data-action="new"]').on('click', function () {
|
||||||
bootbox.prompt('[[groups:new-group.group_name]]', function (name) {
|
bootbox.prompt('[[groups:new-group.group_name]]', function (name) {
|
||||||
if (name && name.length) {
|
if (name && name.length) {
|
||||||
$.ajax({
|
api.post('/groups', {
|
||||||
url: config.relative_path + '/api/v1/groups',
|
name: name,
|
||||||
method: 'post',
|
}, (res) => {
|
||||||
data: {
|
ajaxify.go('groups/' + res.slug);
|
||||||
name: name,
|
}, err => app.alertError(err.status.message));
|
||||||
},
|
|
||||||
}).done(function (res) {
|
|
||||||
ajaxify.go('groups/' + res.response.slug);
|
|
||||||
}).fail(function (ev) {
|
|
||||||
app.alertError(ev.responseJSON.status.message);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
45
public/src/modules/api.js
Normal file
45
public/src/modules/api.js
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
const baseUrl = config.relative_path + '/api/v1';
|
||||||
|
|
||||||
|
function call(options, onSuccess, onError) {
|
||||||
|
$.ajax(options)
|
||||||
|
.done((res) => {
|
||||||
|
if (onSuccess) {
|
||||||
|
onSuccess(res.response);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.fail((ev) => {
|
||||||
|
if (onError) {
|
||||||
|
onError(ev.responseJSON);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function get(route, payload, onSuccess, onError) {
|
||||||
|
return call({
|
||||||
|
url: baseUrl + route + '?' + $.param(payload),
|
||||||
|
}, onSuccess, onError);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function post(route, payload, onSuccess, onError) {
|
||||||
|
return call({
|
||||||
|
url: baseUrl + route,
|
||||||
|
method: 'post',
|
||||||
|
data: payload,
|
||||||
|
}, onSuccess, onError);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function put(route, payload, onSuccess, onError) {
|
||||||
|
return call({
|
||||||
|
url: baseUrl + route,
|
||||||
|
method: 'put',
|
||||||
|
data: payload,
|
||||||
|
}, onSuccess, onError);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function del(route, payload, onSuccess, onError) {
|
||||||
|
return call({
|
||||||
|
url: baseUrl + route,
|
||||||
|
method: 'delete',
|
||||||
|
data: payload,
|
||||||
|
}, onSuccess, onError);
|
||||||
|
}
|
||||||
@@ -24,7 +24,7 @@ Categories.update = async (req, res) => {
|
|||||||
|
|
||||||
Categories.delete = async (req, res) => {
|
Categories.delete = async (req, res) => {
|
||||||
const name = await categories.getCategoryField(req.params.cid, 'name');
|
const name = await categories.getCategoryField(req.params.cid, 'name');
|
||||||
await Categories.purge(req.params.cid, req.user.uid);
|
await categories.purge(req.params.cid, req.user.uid);
|
||||||
await events.log({
|
await events.log({
|
||||||
type: 'category-purge',
|
type: 'category-purge',
|
||||||
uid: req.user.uid,
|
uid: req.user.uid,
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ module.exports = function () {
|
|||||||
const middlewares = [middleware.authenticate];
|
const middlewares = [middleware.authenticate];
|
||||||
|
|
||||||
setupApiRoute(router, '/', middleware, [...middlewares, middleware.checkRequired.bind(null, ['name']), middleware.exposePrivilegeSet], 'post', controllers.write.groups.create);
|
setupApiRoute(router, '/', middleware, [...middlewares, middleware.checkRequired.bind(null, ['name']), middleware.exposePrivilegeSet], 'post', controllers.write.groups.create);
|
||||||
|
// setupApiRoute(router, '/:slug', middleware, [...middlewares, middleware.exposePrivilegeSet], 'delete', controllers.write.groups.delete);
|
||||||
|
|
||||||
// app.delete('/:slug', apiMiddleware.requireUser, middleware.exposeGroupName, apiMiddleware.validateGroup, apiMiddleware.requireGroupOwner, function(req, res) {
|
// app.delete('/:slug', apiMiddleware.requireUser, middleware.exposeGroupName, apiMiddleware.validateGroup, apiMiddleware.requireGroupOwner, function(req, res) {
|
||||||
// Groups.destroy(res.locals.groupName, function(err) {
|
// Groups.destroy(res.locals.groupName, function(err) {
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ function authenticatedRoutes() {
|
|||||||
|
|
||||||
setupApiRoute(router, '/:uid/password', middleware, [...middlewares, middleware.checkRequired.bind(null, ['newPassword'])], 'put', controllers.write.users.changePassword);
|
setupApiRoute(router, '/:uid/password', middleware, [...middlewares, middleware.checkRequired.bind(null, ['newPassword'])], 'put', controllers.write.users.changePassword);
|
||||||
|
|
||||||
setupApiRoute(router, '/:uid/follow', middleware, [...middlewares], 'post', controllers.write.users.follow);
|
setupApiRoute(router, '/:uid/follow', middleware, [...middlewares], 'put', controllers.write.users.follow);
|
||||||
setupApiRoute(router, '/:uid/follow', middleware, [...middlewares], 'delete', controllers.write.users.unfollow);
|
setupApiRoute(router, '/:uid/follow', middleware, [...middlewares], 'delete', controllers.write.users.unfollow);
|
||||||
|
|
||||||
setupApiRoute(router, '/:uid/ban', middleware, [...middlewares, middleware.exposePrivileges], 'put', controllers.write.users.ban);
|
setupApiRoute(router, '/:uid/ban', middleware, [...middlewares, middleware.exposePrivileges], 'put', controllers.write.users.ban);
|
||||||
|
|||||||
Reference in New Issue
Block a user