mirror of https://github.com/xwiki-labs/cryptpad
Upload logo: fix issue and add button to restore default logo
This commit is contained in:
parent
056073983c
commit
21025c317f
|
@ -917,6 +917,11 @@ var deleteInvitation = (Env, Server, cb, data) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
const MAX_LOGO_SIZE = 200*1024; // 200KB
|
const MAX_LOGO_SIZE = 200*1024; // 200KB
|
||||||
|
var removeLogo = (Env, Server, cb) => {
|
||||||
|
Fse.unlink('./customize/CryptPad_logo_hero.svg', (err) => {
|
||||||
|
cb(err);
|
||||||
|
});
|
||||||
|
};
|
||||||
var uploadLogo = (Env, Server, cb, data, unsafeKey) => {
|
var uploadLogo = (Env, Server, cb, data, unsafeKey) => {
|
||||||
const args = Array.isArray(data) && data[1];
|
const args = Array.isArray(data) && data[1];
|
||||||
if (!args || typeof(args) !== 'object') { return void cb("EINVAL"); }
|
if (!args || typeof(args) !== 'object') { return void cb("EINVAL"); }
|
||||||
|
@ -1031,6 +1036,7 @@ var commands = {
|
||||||
UPDATE_KNOWN_USER: updateKnownUser,
|
UPDATE_KNOWN_USER: updateKnownUser,
|
||||||
|
|
||||||
UPLOAD_LOGO: uploadLogo,
|
UPLOAD_LOGO: uploadLogo,
|
||||||
|
REMOVE_LOGO: removeLogo,
|
||||||
};
|
};
|
||||||
|
|
||||||
// addFirstAdmin is an anon_rpc command
|
// addFirstAdmin is an anon_rpc command
|
||||||
|
|
|
@ -684,13 +684,16 @@ app.get('/api/profiling', function (req, res) {
|
||||||
});
|
});
|
||||||
|
|
||||||
app.get('/api/logo', function (req, res) {
|
app.get('/api/logo', function (req, res) {
|
||||||
let path = Path.resolve('./customize/CryptPad_logo.svg');
|
let path = Path.resolve('./customize/CryptPad_logo_hero.svg');
|
||||||
let base = Path.resolve('./customize.dist/CryptPad_logo.svg');
|
let base = Path.resolve('./customize.dist/CryptPad_logo_hero.svg');
|
||||||
Fs.exists(path, function (exists) {
|
Fs.exists(path, function (exists) {
|
||||||
|
res.setHeader('Content-Disposition', 'inline');
|
||||||
|
if (exists) {
|
||||||
let mime = Env.logoMimeType || 'image/svg+xml';
|
let mime = Env.logoMimeType || 'image/svg+xml';
|
||||||
res.setHeader('Content-Type', mime + '; charset=utf-8');
|
res.setHeader('Content-Type', mime);
|
||||||
if (exists) { return Fs.createReadStream(path).pipe(res); }
|
return res.sendFile(path);
|
||||||
Fs.createReadStream(base).pipe(res);
|
}
|
||||||
|
res.sendFile(base);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -3898,22 +3898,39 @@ Example
|
||||||
return $div;
|
return $div;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// XXX
|
||||||
Messages.admin_logoTitle = "Upload Logo";
|
Messages.admin_logoTitle = "Upload Logo";
|
||||||
Messages.admin_logoHint = "Max 200KB, svg, png or jpg";
|
Messages.admin_logoHint = "Max 200KB, svg, png or jpg";
|
||||||
Messages.admin_logoButton = "Upload";
|
Messages.admin_logoButton = "Upload new";
|
||||||
|
Messages.admin_logoRemoveButton = "Restore default";
|
||||||
create['logo'] = function () {
|
create['logo'] = function () {
|
||||||
var key = 'logo';
|
var key = 'logo';
|
||||||
var $div = makeBlock(key, true); // Msg.admin_emailHint, Msg.admin_emailTitle
|
var $div = makeBlock(key, false); // Msg.admin_emailHint, Msg.admin_emailTitle
|
||||||
|
|
||||||
let $button = $div.find('button');
|
|
||||||
|
|
||||||
var input = h('input', {
|
var input = h('input', {
|
||||||
type: 'file',
|
type: 'file',
|
||||||
accept: 'image/*',
|
accept: 'image/*',
|
||||||
'aria-labelledby': 'cp-admin-logo'
|
'aria-labelledby': 'cp-admin-logo'
|
||||||
});
|
});
|
||||||
$(h('div', input)).insertBefore($button);
|
|
||||||
|
|
||||||
|
var currentContainer = h('div');
|
||||||
|
let redraw = () => {
|
||||||
|
var current = h('img', {src: '/api/logo?'+(+new Date())});
|
||||||
|
$(currentContainer).empty().append(current);
|
||||||
|
};
|
||||||
|
redraw();
|
||||||
|
|
||||||
|
var upload = h('button.btn.btn-primary', Messages.admin_logoButton);
|
||||||
|
var remove = h('button.btn.btn-danger', Messages.admin_logoRemoveButton);
|
||||||
|
|
||||||
|
$div.append([
|
||||||
|
currentContainer,
|
||||||
|
h('div', input),
|
||||||
|
h('nav', [upload, remove])
|
||||||
|
]);
|
||||||
|
|
||||||
|
let $button = $(upload);
|
||||||
|
let $remove = $(remove);
|
||||||
var spinner = UI.makeSpinner($div);
|
var spinner = UI.makeSpinner($div);
|
||||||
|
|
||||||
Util.onClickEnter($button, function () {
|
Util.onClickEnter($button, function () {
|
||||||
|
@ -3931,17 +3948,37 @@ Example
|
||||||
$button.removeAttr('disabled');
|
$button.removeAttr('disabled');
|
||||||
if (err) {
|
if (err) {
|
||||||
UI.warn(Messages.error);
|
UI.warn(Messages.error);
|
||||||
$input.val('');
|
$(input).val('');
|
||||||
console.error(err, response);
|
console.error(err, response);
|
||||||
spinner.hide();
|
spinner.hide();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
redraw();
|
||||||
spinner.done();
|
spinner.done();
|
||||||
UI.log(Messages.saved);
|
UI.log(Messages.saved);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
reader.readAsDataURL(files[0]);
|
reader.readAsDataURL(files[0]);
|
||||||
});
|
});
|
||||||
|
UI.confirmButton($remove, {
|
||||||
|
classes: 'btn-danger',
|
||||||
|
multiple: true
|
||||||
|
}, function () {
|
||||||
|
spinner.spin();
|
||||||
|
$remove.attr('disabled', 'disabled');
|
||||||
|
sframeCommand('REMOVE_LOGO', {}, (err, response) => {
|
||||||
|
$remove.removeAttr('disabled');
|
||||||
|
if (err) {
|
||||||
|
UI.warn(Messages.error);
|
||||||
|
console.error(err, response);
|
||||||
|
spinner.hide();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
redraw();
|
||||||
|
spinner.done();
|
||||||
|
UI.log(Messages.saved);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
return $div;
|
return $div;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue