diff --git a/public/src/forum/accountedit.js b/public/src/forum/accountedit.js
index f4c86f3ba4..b681522457 100644
--- a/public/src/forum/accountedit.js
+++ b/public/src/forum/accountedit.js
@@ -41,6 +41,17 @@ define(['forum/accountheader', 'uploader'], function(header, uploader) {
return false;
});
+
+ function getSignatureCharsLeft() {
+ return '(' + $('#inputSignature').val().length + '/' + config.maximumSignatureLength + ')';
+ }
+
+ $('#signatureCharCountLeft').html(getSignatureCharsLeft());
+
+ $('#inputSignature').on('keyup change', function(ev) {
+ $('#signatureCharCountLeft').html(getSignatureCharsLeft());
+ });
+
$('#changePictureBtn').on('click', function() {
selectedImageType = '';
AccountEdit.updateImages();
diff --git a/public/templates/accountedit.tpl b/public/templates/accountedit.tpl
index fa0e64d055..9dd8d97ef4 100644
--- a/public/templates/accountedit.tpl
+++ b/public/templates/accountedit.tpl
@@ -84,9 +84,9 @@
-
+
-
+
diff --git a/public/templates/admin/settings.tpl b/public/templates/admin/settings.tpl
index 4a72c95fcc..ea3655bd24 100644
--- a/public/templates/admin/settings.tpl
+++ b/public/templates/admin/settings.tpl
@@ -83,6 +83,8 @@
Minimum Password Length
+ Maximum Signature Length
+
diff --git a/src/install.js b/src/install.js
index ba59ac4826..dd65779b92 100644
--- a/src/install.js
+++ b/src/install.js
@@ -220,6 +220,9 @@ var async = require('async'),
}, {
field: 'imgurClientID',
value: ''
+ }, {
+ field: 'maximumSignatureLength',
+ value: 255
}, {
field: 'maximumProfileImageSize',
value: 256
diff --git a/src/plugins.js b/src/plugins.js
index ca7114da82..2681b30dea 100644
--- a/src/plugins.js
+++ b/src/plugins.js
@@ -274,10 +274,17 @@ var fs = require('fs'),
return;
}
+
+ if(active) {
+ Plugins.fireHook('action:plugin.deactivate', id);
+ }
+
// Reload meta data
Plugins.reload(function() {
- // (De)activation Hooks
- Plugins.fireHook('action:plugin.' + (active ? 'de' : '') + 'activate', id);
+
+ if(!active) {
+ Plugins.fireHook('action:plugin.activate', id);
+ }
if (callback) {
callback({
diff --git a/src/routes/api.js b/src/routes/api.js
index cb28e0bffb..8eee0fe789 100644
--- a/src/routes/api.js
+++ b/src/routes/api.js
@@ -34,6 +34,7 @@ var path = require('path'),
config.minimumUsernameLength = meta.config.minimumUsernameLength;
config.maximumUsernameLength = meta.config.maximumUsernameLength;
config.minimumPasswordLength = meta.config.minimumPasswordLength;
+ config.maximumSignatureLength = meta.config.maximumSignatureLength;
config.useOutgoingLinksPage = meta.config.useOutgoingLinksPage;
config.emailSetup = !!meta.config['email:from'];
@@ -149,11 +150,11 @@ var path = require('path'),
} else {
next();
}
- }, req.params.id, uid);
+ }, req.params.id, uid);
} else {
res.send(403);
}
-
+
});
} else {
res.send(403);
diff --git a/src/user.js b/src/user.js
index fd6a6eea31..6a79652b08 100644
--- a/src/user.js
+++ b/src/user.js
@@ -190,9 +190,9 @@ var bcrypt = require('bcrypt'),
};
function isSignatureValid(next) {
- if (data.signature !== undefined && data.signature.length > 150) {
+ if (data.signature !== undefined && data.signature.length > meta.config.maximumSignatureLength) {
next({
- error: 'Signature can\'t be longer than 150 characters!'
+ error: 'Signature can\'t be longer than ' + meta.config.maximumSignatureLength + ' characters!'
}, false);
} else {
next(null, true);
diff --git a/src/websockets.js b/src/websockets.js
index 2000b34617..55c606b909 100644
--- a/src/websockets.js
+++ b/src/websockets.js
@@ -593,7 +593,9 @@ websockets.init = function(io) {
socket.on('api:categories.get', function(callback) {
categories.getAllCategories(0, function(err, categories) {
- callback(categories);
+ if(callback) {
+ callback(categories);
+ }
});
});
@@ -1095,7 +1097,7 @@ websockets.init = function(io) {
groups.leaveByGroupName('cid:' + cid + ':privileges:' + privilege, gid, cb);
}
});
-
+
socket.on('api:admin.categories.groupsearch', function(cid, callback) {
groups.list({expand:false}, function(err, data){
async.map(data, function(groupObj, next) {
@@ -1111,7 +1113,7 @@ websockets.init = function(io) {
}, function(err, data) {
if (!callback) socket.emit('api:admin.categories.groupsearch', data);
else callback(null, data);
- });
+ });
});
});