color pick
This commit is contained in:
parent
98b7351070
commit
0cfc27f3d3
13 changed files with 358 additions and 290 deletions
|
@ -726,7 +726,8 @@ var archivePinLog = function (Env, Server, cb, data) {
|
|||
|
||||
var archiveBlock = function (Env, Server, cb, data) {
|
||||
var args = Array.isArray(data) && data[1];
|
||||
if (!args) { return void cb("INVALID_ARGS"); }
|
||||
if (!args) {
|
||||
return void cb("INVALID_ARGS"); }
|
||||
var key = args.key;
|
||||
var reason = args.reason;
|
||||
if (!isValidKey(key)) { return void cb("EINVAL"); }
|
||||
|
@ -748,7 +749,8 @@ var archiveBlock = function (Env, Server, cb, data) {
|
|||
|
||||
var restoreArchivedBlock = function (Env, Server, cb, data) {
|
||||
var args = Array.isArray(data) && data[1];
|
||||
if (!args) { return void cb("INVALID_ARGS"); }
|
||||
if (!args) {
|
||||
return void cb("INVALID_ARGS"); }
|
||||
var key = args.key;
|
||||
var reason = args.reason;
|
||||
if (!isValidKey(key)) { return void cb("EINVAL"); }
|
||||
|
@ -1012,7 +1014,7 @@ var uploadLogo = (Env, Server, cb, data, unsafeKey) => {
|
|||
var changeColor = (Env, Server, cb, data, unsafeKey) => {
|
||||
const args = Array.isArray(data) && data[1];
|
||||
if (!args || typeof(args) !== 'object') { return void cb("EINVAL"); }
|
||||
let color = args.color;
|
||||
let color = args.color || args.selectedColor;
|
||||
adminDecree(Env, null, function (err) {
|
||||
if (err) { return void cb(err); }
|
||||
Env.flushCache();
|
||||
|
@ -1107,7 +1109,8 @@ Admin.addFirstAdmin = function (Env, data, cb) {
|
|||
if (!Env.installToken) { return void cb('EINVAL'); }
|
||||
var token = data.token;
|
||||
if (!token || !data.edPublic) { return void cb('MISSING_ARGS'); }
|
||||
if (token.length !== 64 || data.edPublic.length !== 44) { return void cb('INVALID_ARGS'); }
|
||||
if (token.length !== 64 || data.edPublic.length !== 44) { console.log('here21')
|
||||
return void cb('INVALID_ARGS'); }
|
||||
if (token !== Env.installToken) { return void cb('FORBIDDEN'); }
|
||||
if (Array.isArray(Env.admins) && Env.admins.length) { return void cb('EEXISTS'); }
|
||||
|
||||
|
|
|
@ -167,6 +167,10 @@ var isInteger = function (n) {
|
|||
};
|
||||
|
||||
var args_isString = function (args) {
|
||||
console.log('args', args)
|
||||
console.log(typeof args)
|
||||
console.log(Array.isArray(args))
|
||||
console.log(isString(args[0]))
|
||||
return !(!Array.isArray(args) || !isString(args[0]));
|
||||
};
|
||||
var args_isInteger = function (args) {
|
||||
|
@ -237,6 +241,7 @@ commands.DISABLE_APPS = function (Env, args) {
|
|||
};
|
||||
|
||||
commands.CHANGE_COLOR = function (Env, args) {
|
||||
console.log('change color')
|
||||
var color = args
|
||||
adminDecree(Env, null, function (err) {
|
||||
if (err) { return void cb(err); }
|
||||
|
@ -310,19 +315,21 @@ commands.SET_SUPPORT_KEYS = function (Env, args) {
|
|||
(Core.isValidPublicKey(curvePublic) || !curvePublic) &&
|
||||
typeof(edPublic) === "string" &&
|
||||
(Core.isValidPublicKey(edPublic) || !edPublic);
|
||||
if (!validated) { throw new Error('INVALID_ARGS'); }
|
||||
if (Env.supportMailboxKey === curvePublic && Env.supportPinKey === edPublic) { return false; }
|
||||
Env.supportMailboxKey = curvePublic;
|
||||
Env.supportPinKey = edPublic;
|
||||
return true;
|
||||
};
|
||||
if (!validated) {
|
||||
throw new Error('INVALID_ARGS'); }
|
||||
if (Env.supportMailboxKey === curvePublic && Env.supportPinKey === edPublic) { return false; }
|
||||
Env.supportMailboxKey = curvePublic;
|
||||
Env.supportPinKey = edPublic;
|
||||
return true;
|
||||
};
|
||||
|
||||
// CryptPad_AsyncStore.rpc.send('ADMIN', [ 'ADMIN_DECREE', ['SET_INSTANCE_PURPOSE', ["development"]]], console.log)
|
||||
commands.SET_INSTANCE_PURPOSE = makeGenericSetter('instancePurpose', args_isString);
|
||||
|
||||
var makeTranslation = function (attr) {
|
||||
return function (Env, args) {
|
||||
if (!Array.isArray(args)) { throw new Error("INVALID_ARGS"); }
|
||||
if (!Array.isArray(args)) {
|
||||
throw new Error("INVALID_ARGS"); }
|
||||
var value = args[0];
|
||||
var state = Env[attr];
|
||||
|
||||
|
@ -373,7 +380,7 @@ var args_isMaintenance = function (args) {
|
|||
// whenever that happens we can relax validation a bit to support more formats
|
||||
var makeBroadcastSetter = function (attr, validation) {
|
||||
return function (Env, args) {
|
||||
if ((validation && !validation(args)) && !args_isString(args)) {
|
||||
if ((validation && !validation(args)) && !args_isString(args)) {
|
||||
throw new Error('INVALID_ARGS');
|
||||
}
|
||||
var str = args[0];
|
||||
|
|
|
@ -370,7 +370,8 @@ commands.ADD_MAILBOX = function (meta, args) {
|
|||
};
|
||||
|
||||
commands.RM_MAILBOX = function (meta, args) {
|
||||
if (!Array.isArray(args)) { throw new Error("INVALID_ARGS"); }
|
||||
if (!Array.isArray(args)) {
|
||||
throw new Error("INVALID_ARGS"); }
|
||||
if (!meta.mailbox || typeof(meta.mailbox) === 'undefined') {
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -127,7 +127,7 @@ var exists = function (path, cb) {
|
|||
|
||||
var checkPath = function (Env, publicKey, pathFunction, _cb) {
|
||||
var cb = Util.once(Util.mkAsync(_cb));
|
||||
if (!isValidKey(publicKey)) { return void cb("INVALID_ARGS"); }
|
||||
if (!isValidKey(publicKey)) { return void cb("INVALID_ARGS"); }
|
||||
var path = pathFunction(Env, publicKey);
|
||||
exists(path, cb);
|
||||
};
|
||||
|
|
|
@ -582,7 +582,8 @@ var reportStatus = function (Env, label, safeKey, err, id, size) {
|
|||
};
|
||||
|
||||
const completeUpload = function (data, cb) {
|
||||
if (!data) { return void cb('INVALID_ARGS'); }
|
||||
if (!data) {
|
||||
return void cb('INVALID_ARGS'); }
|
||||
if (typeof(data.safeKey) !== 'string') { return void cb("INVALID_KEY"); }
|
||||
var owned = data.owned;
|
||||
var safeKey = Util.escapeKeyCharacters(data.safeKey);
|
||||
|
@ -606,7 +607,8 @@ const completeUpload = function (data, cb) {
|
|||
};
|
||||
|
||||
const getPinActivity = function (data, cb) {
|
||||
if (!data) { return void cb("INVALID_ARGS"); }
|
||||
if (!data) {
|
||||
return void cb("INVALID_ARGS"); }
|
||||
if (typeof(data.key) !== 'string') { return void cb("INVALID_KEY"); }
|
||||
var safeKey = Util.escapeKeyCharacters(data.key);
|
||||
var first;
|
||||
|
@ -633,7 +635,8 @@ const getPinActivity = function (data, cb) {
|
|||
};
|
||||
|
||||
const getLastChannelTime = function (data, cb) {
|
||||
if (!data) { return void cb("INVALID_ARGS"); }
|
||||
if (!data) {
|
||||
return void cb("INVALID_ARGS"); }
|
||||
var latest;
|
||||
store.getMessages(data.channel, function (line) {
|
||||
try {
|
||||
|
|
|
@ -205,7 +205,8 @@ var factory = function (Util, Hash, CPNetflux, Sortify, nThen, Crypto, Feedback)
|
|||
};
|
||||
|
||||
commands.RM = function (args, author, roster) {
|
||||
if (!Array.isArray(args)) { throw new Error("INVALID_ARGS"); }
|
||||
if (!Array.isArray(args)) {
|
||||
throw new Error("INVALID_ARGS"); }
|
||||
|
||||
if (typeof(roster.state.members) === 'undefined') {
|
||||
throw new Error("CANNOT_RM_FROM_UNITIALIZED_ROSTER");
|
||||
|
@ -348,7 +349,8 @@ var factory = function (Util, Hash, CPNetflux, Sortify, nThen, Crypto, Feedback)
|
|||
|
||||
// only admin/owner can change group metadata
|
||||
commands.METADATA = function (args, author, roster) {
|
||||
if (!isMap(args)) { throw new Error("INVALID_ARGS"); }
|
||||
if (!isMap(args)) { console.log('here27')
|
||||
throw new Error("INVALID_ARGS"); }
|
||||
|
||||
if (!canUpdateMetadata(author, roster.state.members)) { throw new Error("INSUFFICIENT_PERMISSIONS"); }
|
||||
|
||||
|
@ -386,7 +388,8 @@ var factory = function (Util, Hash, CPNetflux, Sortify, nThen, Crypto, Feedback)
|
|||
// that key is ultimately given to the user you'd like on your team
|
||||
// that user can exploit their possession of the public key to remove
|
||||
// the pending invitation with their actual data.
|
||||
if (!isMap(args)) { throw new Error('INVALID_ARGS'); }
|
||||
if (!isMap(args)) {console.log('here28')
|
||||
throw new Error('INVALID_ARGS'); }
|
||||
if (!roster.internal.initialized) { throw new Error("UNINITIALIED"); }
|
||||
if (typeof(roster.state.members) === 'undefined') {
|
||||
throw new Error("CANNOT+INVITE_TO_UNINITIALIED_ROSTER");
|
||||
|
@ -457,7 +460,8 @@ var factory = function (Util, Hash, CPNetflux, Sortify, nThen, Crypto, Feedback)
|
|||
if (!members[author].pending) { throw new Error("ALREADY_PRESENT"); }
|
||||
|
||||
// args should be a string
|
||||
if (typeof(args) !== 'string') { throw new Error("INVALID_ARGS"); }
|
||||
if (typeof(args) !== 'string') { console.log('here29')
|
||||
throw new Error("INVALID_ARGS"); }
|
||||
// ...and a valid curve key
|
||||
if (!isValidId(args)) { throw new Error("INVALID_CURVE_KEY"); }
|
||||
|
||||
|
|
|
@ -10,8 +10,9 @@ define([
|
|||
'/common/hyperscript.js',
|
||||
'css!/components/bootstrap/dist/css/bootstrap.min.css',
|
||||
'css!/components/components-font-awesome/css/font-awesome.min.css',
|
||||
'less!/admin/app-admin.less',
|
||||
'css!/install/configscreen.css'
|
||||
|
||||
// 'less!/admin/app-admin.less',
|
||||
// 'css!/install/configscreen.css'
|
||||
], function(
|
||||
$,
|
||||
Sidebar,
|
||||
|
@ -19,40 +20,30 @@ define([
|
|||
h,
|
||||
UI,
|
||||
Util,
|
||||
Instance
|
||||
|
||||
) {
|
||||
|
||||
//XXX
|
||||
Messages.admin_onboardingNameTitle = 'Welcome to your CryptPad instance'
|
||||
Messages.admin_onboardingNameHint = 'Please choose a title and description'
|
||||
|
||||
Messages.admin_onboardingAppsTitle = "Choose your applications"
|
||||
Messages.admin_onboardingAppsHint = "Choose which apps are available to users on your instance"
|
||||
|
||||
Messages.admin_onboardingRegistrationTitle = "Options"
|
||||
Messages.admin_onboardingRegistrationHint = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In id tristique justo"
|
||||
|
||||
|
||||
Messages.admin_onboardingRegistration = "Visitors to the instance are not able to create accounts. Invitations can be created by administrators"
|
||||
Messages.admin_onboardingRegistration = "All accounts on the instance have to use 2-factor authentication"
|
||||
|
||||
Messages.admin_onboardingNameTitle = 'Welcome to your CryptPad instance';
|
||||
Messages.admin_onboardingNameHint = 'Please choose a title and description';
|
||||
Messages.admin_onboardingAppsTitle = "Choose your applications";
|
||||
Messages.admin_onboardingAppsHint = "Choose which apps are available to users on your instance";
|
||||
Messages.admin_onboardingRegistrationTitle = "Options";
|
||||
Messages.admin_onboardingRegistrationHint = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In id tristique justo";
|
||||
Messages.admin_onboardingRegistration = "Visitors to the instance are not able to create accounts. Invitations can be created by administrators";
|
||||
Messages.admin_onboardingRegistration = "All accounts on the instance have to use 2-factor authentication";
|
||||
|
||||
var AppConfigScreen = {};
|
||||
const blocks = Sidebar.blocks;
|
||||
|
||||
var displayForm = function(sendAdminDecree, page) {
|
||||
|
||||
var pages = [AppConfigScreen.appConfig, AppConfigScreen.mfaRegistrationScreen, AppConfigScreen.titleConfig]
|
||||
var nextPageFunction = pages[page]
|
||||
console.log('here', typeof nextPageFunction)
|
||||
var nextPageForm = nextPageFunction(sendAdminDecree)
|
||||
var pages = [AppConfigScreen.appConfig, AppConfigScreen.mfaRegistrationScreen, AppConfigScreen.titleConfig];
|
||||
var nextPageFunction = pages[page];
|
||||
var nextPageForm = nextPageFunction(sendAdminDecree);
|
||||
var elem = document.createElement('div');
|
||||
elem.setAttribute('id', 'cp-loading');
|
||||
let frame = h('div.configscreen', nextPageForm)
|
||||
elem.append(frame)
|
||||
|
||||
built = true;
|
||||
let frame = h('div.configscreen', nextPageForm);
|
||||
elem.append(frame);
|
||||
var intr;
|
||||
var append = function () {
|
||||
if (!document.body) { return; }
|
||||
|
@ -62,7 +53,7 @@ define([
|
|||
intr = setInterval(append, 100);
|
||||
append();
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
AppConfigScreen.titleConfig = function (sendAdminDecree, sendAdminRpc) {
|
||||
|
||||
|
@ -76,14 +67,17 @@ define([
|
|||
placeholder: 'Instance title',
|
||||
'aria-labelledby': 'cp-admin-name'
|
||||
});
|
||||
var textarea = blocks.textarea({
|
||||
|
||||
var desc = blocks.textarea({
|
||||
placeholder: 'Placeholder description text',
|
||||
value: '',
|
||||
'aria-labelledby': 'cp-admin-description'
|
||||
});
|
||||
|
||||
return [input, textarea]
|
||||
}
|
||||
$(desc).addClass('cp-onboardscreen-desc');
|
||||
|
||||
return [input, desc];
|
||||
};
|
||||
|
||||
var logoBlock = function() {
|
||||
|
||||
|
@ -96,6 +90,7 @@ define([
|
|||
var currentContainer = blocks.block([], 'cp-admin-customize-logo');
|
||||
let redraw = () => {
|
||||
var current = h('img', {src: '/api/logo?'+(+new Date())});
|
||||
$(current).css({'max-width':'30px'});
|
||||
$(currentContainer).empty().append(current);
|
||||
};
|
||||
redraw();
|
||||
|
@ -125,7 +120,6 @@ define([
|
|||
let reader = new FileReader();
|
||||
reader.onloadend = function () {
|
||||
let dataURL = this.result;
|
||||
console.log(dataURL, 'dataulr')
|
||||
sendAdminRpc('UPLOAD_LOGO', {dataURL}, function (e, response) {
|
||||
$button.removeAttr('disabled');
|
||||
if (e || response.error) {
|
||||
|
@ -140,7 +134,7 @@ define([
|
|||
redraw();
|
||||
spinner.done();
|
||||
UI.log(Messages.saved);
|
||||
})
|
||||
});
|
||||
|
||||
};
|
||||
reader.readAsDataURL(files[0]);
|
||||
|
@ -151,8 +145,8 @@ define([
|
|||
}, function () {
|
||||
spinner.spin();
|
||||
$remove.attr('disabled', 'disabled');
|
||||
|
||||
sendAdminDecree('REMOVE_LOGO', {}, function (e, response) {
|
||||
|
||||
sendAdminRpc('REMOVE_LOGO', {dataURL}, function (e, response) {
|
||||
$remove.removeAttr('disabled');
|
||||
if (err) {
|
||||
UI.warn(Messages.error);
|
||||
|
@ -166,159 +160,51 @@ define([
|
|||
});
|
||||
});
|
||||
|
||||
return formLogo
|
||||
return formLogo;
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
var colorBlock = function () {
|
||||
|
||||
// let input = blocks.input({
|
||||
// type: 'color',
|
||||
// value: (Instance && Instance.color) || '#0087FF'
|
||||
// });
|
||||
// let label = blocks.labelledInput(Messages.admin_colorPick, input);
|
||||
// let current = blocks.block([], 'cp-admin-color-current');
|
||||
// let labelCurrent = blocks.labelledInput(Messages.admin_colorCurrent, current);
|
||||
// let preview = blocks.block([
|
||||
// blocks.block([
|
||||
// blocks.link('CryptPad', '/admin/#customize'),
|
||||
// blocks.button('primary', 'fa-floppy-o', Messages.settings_save),
|
||||
// blocks.button('secondary', 'fa-floppy-o', Messages.settings_save)
|
||||
// ], 'cp-admin-color-preview-dark cp-sidebar-flex-block'),
|
||||
// blocks.block([
|
||||
// blocks.link('CryptPad', '/admin/#customize'),
|
||||
// blocks.button('primary', 'fa-floppy-o', Messages.settings_save),
|
||||
// blocks.button('secondary', 'fa-floppy-o', Messages.settings_save)
|
||||
// ], 'cp-admin-color-preview-light cp-sidebar-flex-block')
|
||||
// ], 'cp-admin-color-preview');
|
||||
// let labelPreview = blocks.labelledInput(Messages.admin_colorPreview, preview);
|
||||
// let $preview = $(preview);
|
||||
|
||||
// let remove = blocks.button('danger', '', Messages.admin_logoRemoveButton);
|
||||
// let $remove = $(remove);
|
||||
var colors;
|
||||
var content = h('div', [
|
||||
h('label', {for:'cp-kanban-edit-color'}, Messages.kanban_color),
|
||||
colors = h('div#cp-kanban-edit-colors'),
|
||||
], {style: 'padding-left:50%'});
|
||||
|
||||
// let setColor = (color, done) => {
|
||||
// sframeCommand('CHANGE_COLOR', {color}, (err, response) => {
|
||||
// if (err) {
|
||||
// UI.warn(Messages.error);
|
||||
// console.error(err, response);
|
||||
// done(false);
|
||||
// return;
|
||||
// }
|
||||
// done(true);
|
||||
// UI.log(Messages.saved);
|
||||
// });
|
||||
// };
|
||||
|
||||
// let btn = blocks.activeButton('primary', '',
|
||||
// Messages.admin_colorChange, (done) => {
|
||||
// let color = $input.val();
|
||||
// setColor(color, done);
|
||||
// });
|
||||
|
||||
// let $input = $(input).on('change', () => {
|
||||
// require(['/lib/less.min.js'], (Less) => {
|
||||
// let color = $input.val();
|
||||
// let lColor = Less.color(color.slice(1));
|
||||
// let lighten = Less.functions.functionRegistry._data.lighten;
|
||||
// let lightColor = lighten(lColor, {value:30}).toRGB();
|
||||
// $preview.find('.btn-primary').css({
|
||||
// 'background-color': color
|
||||
// });
|
||||
// $preview.find('.cp-admin-color-preview-dark .btn-secondary').css({
|
||||
// 'border-color': lightColor,
|
||||
// 'color': lightColor,
|
||||
// });
|
||||
// $preview.find('.cp-admin-color-preview-light .btn-secondary').css({
|
||||
// 'border-color': color,
|
||||
// 'color': color,
|
||||
// });
|
||||
// $preview.find('.cp-admin-color-preview-dark a').attr('style', `color: ${lightColor} !important`);
|
||||
// $preview.find('.cp-admin-color-preview-light a').attr('style', `color: ${color} !important`);
|
||||
|
||||
// });
|
||||
// });
|
||||
|
||||
// UI.confirmButton($remove, {
|
||||
// classes: 'btn-danger',
|
||||
// multiple: true
|
||||
// }, function () {
|
||||
// $remove.attr('disabled', 'disabled');
|
||||
// setColor('', () => {});
|
||||
// });
|
||||
|
||||
// // let form = blocks.form([
|
||||
// var form = [labelCurrent,
|
||||
// label]
|
||||
// // ], blocks.nav([btn, remove, btn.spinner]));
|
||||
// Colors
|
||||
|
||||
var conflicts, conflictContainer, titleInput, tagsDiv, colors, text;
|
||||
var content = h('div', [
|
||||
// conflictContainer = h('div#cp-kanban-edit-conflicts', [
|
||||
// h('div', Messages.kanban_conflicts),
|
||||
// conflicts = h('div.cp-kanban-cursors')
|
||||
// ]),
|
||||
// h('label', {for:'cp-kanban-edit-title'}, Messages.kanban_title),
|
||||
// titleInput = h('input#cp-kanban-edit-title'),
|
||||
// h('label', {for:'cp-kanban-edit-body'}, Messages.kanban_body),
|
||||
// h('div#cp-kanban-edit-body', [
|
||||
// text = h('textarea')
|
||||
// ]),
|
||||
// h('label', {for:'cp-kanban-edit-tags'}, Messages.fm_tagsName),
|
||||
// tagsDiv = h('div#cp-kanban-edit-tags'),
|
||||
h('label', {for:'cp-kanban-edit-color'}, Messages.kanban_color),
|
||||
colors = h('div#cp-kanban-edit-colors'),
|
||||
]);
|
||||
|
||||
var $colors = $(colors);
|
||||
var palette = [''];
|
||||
for (var i=1; i<=8; i++) { palette.push('color'+i); }
|
||||
var selectedColor = '';
|
||||
var resetThemeClass = function () {
|
||||
$colors.find('.cp-kanban-palette').each(function (i, el) {
|
||||
var $c = $(el);
|
||||
$c.removeClass('cp-kanban-palette-card');
|
||||
$c.removeClass('cp-kanban-palette-board');
|
||||
// if (isBoard) {
|
||||
// $c.addClass('cp-kanban-palette-board');
|
||||
// } else {
|
||||
$c.addClass('cp-kanban-palette-card');
|
||||
// }
|
||||
var $colors = $(colors);
|
||||
var palette = [''];
|
||||
for (var i=1; i<=8; i++) { palette.push('color'+i); }
|
||||
var selectedColor = '';
|
||||
palette.forEach(function (color) {
|
||||
var $color = $(h('div.cp-kanban-palette.cp-kanban-palette-card.fa'), );
|
||||
$color.css({'width':'30px', 'height':'30px', 'display': 'inline-block', 'border-radius': '50%', 'text-align': 'center', 'line-height': '30px', 'margin-right':'1%'})
|
||||
$color.addClass('cp-kanban-palette-'+(color || 'nocolor'));
|
||||
$color.click(function () {
|
||||
if (color === selectedColor) { return; }
|
||||
selectedColor = $color.css('background-color');
|
||||
$colors.find('.cp-kanban-palette').removeClass('fa-check');
|
||||
var $col = $colors.find('.cp-kanban-palette-'+(color || 'nocolor'));
|
||||
$col.addClass('fa-check');
|
||||
sendAdminRpc('CHANGE_COLOR', {selectedColor}, function (e, response) {
|
||||
if (e || response.error) {
|
||||
UI.warn(Messages.error);
|
||||
console.error(e, response);
|
||||
// done(false);
|
||||
return;
|
||||
}
|
||||
// flushCache();
|
||||
// done(true);
|
||||
// redraw();
|
||||
// spinner.done();
|
||||
UI.log(Messages.saved);
|
||||
});
|
||||
}).appendTo($colors);
|
||||
});
|
||||
};
|
||||
palette.forEach(function (color) {
|
||||
var $color = $(h('span.cp-kanban-palette.fa'));
|
||||
$color.addClass('cp-kanban-palette-'+(color || 'nocolor'));
|
||||
$color.click(function () {
|
||||
if (offline) { return; }
|
||||
if (color === selectedColor) { return; }
|
||||
selectedColor = color;
|
||||
$colors.find('.cp-kanban-palette').removeClass('fa-check');
|
||||
var $col = $colors.find('.cp-kanban-palette-'+(color || 'nocolor'));
|
||||
$col.addClass('fa-check');
|
||||
|
||||
dataObject.color = color;
|
||||
commit();
|
||||
}).appendTo($colors);
|
||||
});
|
||||
var color = {
|
||||
getValue: function () {
|
||||
return selectedColor;
|
||||
},
|
||||
setValue: function (color) {
|
||||
resetThemeClass();
|
||||
$colors.find('.cp-kanban-palette').removeClass('fa-check');
|
||||
var $col = $colors.find('.cp-kanban-palette-'+(color || 'nocolor'));
|
||||
$col.addClass('fa-check');
|
||||
selectedColor = color;
|
||||
}
|
||||
};
|
||||
|
||||
return color
|
||||
|
||||
}
|
||||
|
||||
return content;
|
||||
|
||||
};
|
||||
|
||||
var button = blocks.activeButton('primary', '', Messages.settings_save, function (done) {
|
||||
|
||||
|
@ -349,52 +235,39 @@ define([
|
|||
|
||||
// })
|
||||
|
||||
|
||||
// sendAdminDecree('CHANGE_COLOR', {colorPick}, function (e, response) {
|
||||
// if (e || response.error) {
|
||||
// UI.warn(Messages.error);
|
||||
// console.error(e, response);
|
||||
// done(false);
|
||||
// return;
|
||||
// }
|
||||
// done(true);
|
||||
// UI.log(Messages.saved);
|
||||
// });
|
||||
|
||||
displayForm(sendAdminDecree, 0)
|
||||
displayForm(sendAdminDecree, 0);
|
||||
});
|
||||
|
||||
var titleInput = h('div.cp-onboardscreen-name', titleDescBlock()[0])
|
||||
var logoInput = h('div.cp-onboardscreen-logo', logoBlock(), {style:'width:20%;height:20%'})
|
||||
var descriptionInput = h('div.cp-onboardscreen-description', titleDescBlock()[1])
|
||||
var colorInput = h('div', colorBlock(), {style:'width:50%;height:20%;position:absolute;right:0;bottom:0;margin-right:17%;margin-bottom:10%'})
|
||||
// var colorInputLabel = h('div', colorBlock()[0], {style:'width:20%;height:20%'})
|
||||
// var colorInputLabel2 = h('div', colorBlock()[1], {style:'width:20%;height:20%'})
|
||||
var titleInput = h('div.cp-onboardscreen-name', titleDescBlock()[0]);
|
||||
var logoInput = h('div.cp-onboardscreen-logo', logoBlock());
|
||||
var desc = h('div', titleDescBlock()[1]);
|
||||
var colorInput = h('div.cp-onboardscreen-color', colorBlock());
|
||||
|
||||
var screenTitleDiv = h('div.cp-onboardscreen-screentitle')
|
||||
$(screenTitleDiv).append(h('div.cp-onboardscreen-maintitle', h('span.cp-onboardscreen-title', Messages.admin_onboardingNameTitle), h('br'), h('span', Messages.admin_onboardingNameHint)))
|
||||
var screenTitle = h('div.cp-onboardscreen-screentitle');
|
||||
$(screenTitle).append(h('div.cp-onboardscreen-maintitle', h('span.cp-onboardscreen-title', Messages.admin_onboardingNameTitle), h('br'), h('span', Messages.admin_onboardingNameHint)));
|
||||
var nav = blocks.nav([button]);
|
||||
$(nav).addClass('cp-onboardscreen-save');
|
||||
|
||||
var form = blocks.form([
|
||||
screenTitleDiv,
|
||||
titleInput, descriptionInput,
|
||||
screenTitle,
|
||||
titleInput,
|
||||
desc,
|
||||
logoInput,
|
||||
colorInput,
|
||||
], nav);
|
||||
|
||||
$(form).addClass('cp-onboardscreen-form')
|
||||
$(form).addClass('cp-onboardscreen-form');
|
||||
|
||||
var wrapper = h('div', form, {style:'width:100%'})
|
||||
return form;
|
||||
|
||||
return wrapper
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
AppConfigScreen.mfaRegistrationScreen = function(sendAdminDecree) {
|
||||
|
||||
var restrict = blocks.activeCheckbox({
|
||||
key: 'registration',
|
||||
getState: function () {
|
||||
return false
|
||||
return false;
|
||||
},
|
||||
query: function (val, setState) {
|
||||
sendAdminDecree('RESTRICT_REGISTRATION', [val], function (e, response) {
|
||||
|
@ -409,14 +282,14 @@ define([
|
|||
// // done(true);
|
||||
// UI.log(Messages.saved);
|
||||
|
||||
})
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
var forceMFA = blocks.activeCheckbox({
|
||||
key: 'forcemfa',
|
||||
getState: function () {
|
||||
return false
|
||||
return false;
|
||||
},
|
||||
query: function (val, setState) {
|
||||
// sendAdminDecree('ENFORCE_MFA', [val], function (e, response) {
|
||||
|
@ -436,37 +309,37 @@ define([
|
|||
});
|
||||
|
||||
const grid = blocks.block([], 'cp-admin-customize-apps-grid');
|
||||
const allApps = [restrict, forceMFA];
|
||||
const options = [restrict, forceMFA];
|
||||
|
||||
allApps.forEach(app => {
|
||||
let appBlock = h('div.cp-bloop', {style: 'width:50%;height:20px;float:left'}, {class: 'inactive-app', id: `${app}-block`}, app)
|
||||
$(grid).append(appBlock);
|
||||
options.forEach(app => {
|
||||
let optionBlock = h('div.cp-appblock', {class: 'inactive-app', id: `${app}-block`}, app);
|
||||
$(grid).append(optionBlock);
|
||||
});
|
||||
|
||||
|
||||
var save = blocks.activeButton('primary', '', Messages.settings_save, function (done) {
|
||||
var save = blocks.activeButton('primary', '', Messages.settings_save, function () {
|
||||
document.location.href = '/drive/';
|
||||
return;
|
||||
})
|
||||
});
|
||||
|
||||
var prev = blocks.activeButton('primary', '', Messages.settings_prev, function (done) {
|
||||
|
||||
displayForm(sendAdminDecree, 2)
|
||||
})
|
||||
var prev = blocks.activeButton('primary', '', Messages.settings_prev, function () {
|
||||
displayForm(sendAdminDecree, 0);
|
||||
});
|
||||
|
||||
var screenTitle = h('div.cp-onboardscreen-screentitle');
|
||||
$(screenTitle).append(h('div.cp-onboardscreen-maintitle', h('span.cp-onboardscreen-title', Messages.admin_onboardingRegistrationTitle), h('br'), h('span', Messages.admin_onboardingRegistrationHint)));
|
||||
var nav = blocks.nav([prev, save]);
|
||||
$(nav).addClass('cp-onboardscreen-save');
|
||||
|
||||
var screenTitleDiv = h('div.cp-onboardscreen-screentitle')
|
||||
$(screenTitleDiv).append(h('div.cp-onboardscreen-maintitle', h('span.cp-onboardscreen-title', Messages.admin_onboardingRegistrationTitle), h('br'), h('span', Messages.admin_onboardingRegistrationHint)))
|
||||
|
||||
var form = blocks.form([
|
||||
screenTitleDiv,
|
||||
grid],
|
||||
[prev, save])
|
||||
screenTitle,
|
||||
grid],
|
||||
);
|
||||
|
||||
$(form).addClass('cp-onboardscreen-form')
|
||||
$(form).addClass('cp-onboardscreen-form');
|
||||
|
||||
return form
|
||||
return form;
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
AppConfigScreen.appConfig = function (sendAdminDecree) {
|
||||
|
@ -474,20 +347,18 @@ define([
|
|||
const blocks = Sidebar.blocks;
|
||||
const grid = blocks.block([], 'cp-admin-customize-apps-grid');
|
||||
const allApps = ['pad', 'code', 'kanban', 'slide', 'sheet', 'form', 'whiteboard', 'diagram'];
|
||||
const availableApps = []
|
||||
const availableApps = [];
|
||||
|
||||
function select(app, appBlock) {
|
||||
if (availableApps.indexOf(app) === -1) {
|
||||
availableApps.push(app);
|
||||
console.log(appBlock)
|
||||
console.log(appBlock.innerHTML)
|
||||
var checkMark = h('div.cp-onboardscreen-checkmark', "V", {style:'color:white'})
|
||||
appBlock.append(checkMark)
|
||||
var checkMark = h('div.cp-onboardscreen-checkmark', "V", {style:'color:white'});
|
||||
appBlock.append(checkMark);
|
||||
$(`#${app}-block`).attr('class', 'active-app')
|
||||
} else {
|
||||
availableApps.splice(availableApps.indexOf(app), 1)
|
||||
$(`#${app}-block`).attr('class', 'inactive-app')
|
||||
appBlock.remove('.cp-onboardscreen-checkmark')
|
||||
availableApps.splice(availableApps.indexOf(app), 1);
|
||||
$(`#${app}-block`).attr('class', 'inactive-app');
|
||||
appBlock.remove('.cp-onboardscreen-checkmark');
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -495,10 +366,9 @@ define([
|
|||
let appBlock = h('div.cp-bloop', {style: 'width:50%;height:20px;'}, {class: 'inactive-app', id: `${app}-block`}, app.charAt(0).toUpperCase() + app.slice(1))
|
||||
$(appBlock).addClass('cp-app-drive-element-grid')
|
||||
$(appBlock).addClass('cp-app-drive-element-row')
|
||||
$(appBlock).addClass('cp-app-drive-new-doc')
|
||||
|
||||
$(grid).append(appBlock);
|
||||
$(appBlock).on('click', () => select(app, $(appBlock)))
|
||||
$(appBlock).on('click', () => select(app, $(appBlock)));
|
||||
});
|
||||
|
||||
var save = blocks.activeButton('primary', '', Messages.settings_save, function (done) {
|
||||
|
@ -519,27 +389,27 @@ define([
|
|||
UI.log(Messages.saved);
|
||||
displayForm(sendAdminDecree, 1)
|
||||
});
|
||||
Messages.settings_prev = 'Back'
|
||||
var prev = blocks.activeButton('primary', '', Messages.settings_prev, function (done) {
|
||||
|
||||
displayForm(sendAdminDecree, 2)
|
||||
})
|
||||
|
||||
var screenTitleDiv = h('div.cp-onboardscreen-screentitle')
|
||||
$(screenTitleDiv).append(h('div.cp-onboardscreen-maintitle', h('span.cp-onboardscreen-title', Messages.admin_onboardingAppsTitle), h('br'), h('span', Messages.admin_onboardingAppsHint)))
|
||||
|
||||
var prev = blocks.activeButton('primary', '', Messages.form_backButton, function () {
|
||||
displayForm(sendAdminDecree, 2);
|
||||
});
|
||||
|
||||
var screenTitle = h('div.cp-onboardscreen-screentitle');
|
||||
$(screenTitle).append(h('div.cp-onboardscreen-maintitle', h('span.cp-onboardscreen-title', Messages.admin_onboardingAppsTitle), h('br'), h('span', Messages.admin_onboardingAppsHint)))
|
||||
var nav = blocks.nav([prev, save]);
|
||||
$(nav).addClass('cp-onboardscreen-save');
|
||||
|
||||
let form = blocks.form([
|
||||
screenTitleDiv,
|
||||
screenTitle,
|
||||
grid
|
||||
], blocks.nav([prev, save]));
|
||||
], nav);
|
||||
|
||||
$(form).addClass('cp-onboardscreen-form')
|
||||
$(form).addClass('cp-onboardscreen-form');
|
||||
|
||||
return form
|
||||
return form;
|
||||
}
|
||||
|
||||
return AppConfigScreen
|
||||
|
||||
return AppConfigScreen;
|
||||
|
||||
});
|
||||
|
||||
|
|
3
www/install/configscreen.less
Normal file
3
www/install/configscreen.less
Normal file
|
@ -0,0 +1,3 @@
|
|||
|
||||
|
||||
|
|
@ -19,7 +19,9 @@ define([
|
|||
'appconfigscreen.js',
|
||||
'/common/inner/sidebar-layout.js',
|
||||
|
||||
'css!/install/configscreen.css',
|
||||
// 'css!/install/configscreen.css',
|
||||
'less!/install/onboarding.less',
|
||||
|
||||
'css!/components/components-font-awesome/css/font-awesome.min.css',
|
||||
], function ($, Login, Cryptpad, /*Test,*/ Cred, UI, Util, Realtime, Constants, Feedback, LocalStore, h, Pages, Rpc, AppConfigScreen, Sidebar) {
|
||||
if (window.top !== window) { return; }
|
||||
|
@ -59,19 +61,15 @@ define([
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
var showTitleScreen = function (sendAdminDecree, sendAdminRpc) {
|
||||
|
||||
var titleScreen = AppConfigScreen.titleConfig
|
||||
var form = titleScreen(sendAdminDecree, sendAdminRpc)
|
||||
var titleScreen = AppConfigScreen.titleConfig;
|
||||
var form = titleScreen(sendAdminDecree, sendAdminRpc);
|
||||
|
||||
var elem = document.createElement('div');
|
||||
elem.setAttribute('id', 'cp-loading');
|
||||
let frame = h('div.configscreen', form)
|
||||
elem.append(frame)
|
||||
|
||||
built = true;
|
||||
let frame = h('div.configscreen', form);
|
||||
elem.append(frame);
|
||||
var intr;
|
||||
var append = function () {
|
||||
if (!document.body) { return; }
|
||||
|
@ -81,13 +79,10 @@ define([
|
|||
intr = setInterval(append, 100);
|
||||
append();
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
var registerClick = function () {
|
||||
showTitleScreen()
|
||||
// // document.location.href = '/drive/';
|
||||
|
||||
|
||||
// var uname = $uname.val().trim();
|
||||
// // trim whitespace surrounding the username since it is otherwise included in key derivation
|
||||
|
|
183
www/install/onboarding.less
Normal file
183
www/install/onboarding.less
Normal file
|
@ -0,0 +1,183 @@
|
|||
@import (reference) "../../customize/src/less2/include/browser.less";
|
||||
@import (reference) "../../customize/src/less2/include/framework.less";
|
||||
@import (reference) "../../customize/src/less2/include/tools.less";
|
||||
@import (reference) "../../customize/src/less2/include/markdown.less";
|
||||
@import (reference) "../../customize/src/less2/include/avatar.less";
|
||||
|
||||
@cp_palette:
|
||||
#FFD4D4,
|
||||
#FFDECA,
|
||||
#FFE69C,
|
||||
#DBFFB7,
|
||||
#AFFDC2,
|
||||
#C9FFFE,
|
||||
#C8D6FF,
|
||||
#E4CAFF;
|
||||
|
||||
|
||||
.cp_palette(@cp_palette; @index) when (@index > 0){
|
||||
// loop through the @colors
|
||||
.cp_palette(@cp_palette; (@index - 1));
|
||||
@color: extract(@cp_palette, @index);
|
||||
// make a numbered class selector for each color
|
||||
.cp-kanban-palette-color@{index}{
|
||||
background-color: @color !important;
|
||||
&.cp-kanban-palette-board {
|
||||
background-color: @color !important;
|
||||
}
|
||||
&.kanban-board-inner {
|
||||
background-color: fade(@color, 50%) !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// .kanban-colors(@kanban-colors; @index) when (@index > 0){
|
||||
// // loop through the @colors
|
||||
// .kanban-colors(@kanban-colors; (@index - 1));
|
||||
// @color: extract(@kanban-colors, @index);
|
||||
// // make a numbered class selector for each color
|
||||
// .cp-kanban-palette-color@{index}{
|
||||
// background-color: @color !important;
|
||||
// &.cp-kanban-palette-board {
|
||||
// background-color: @color !important;
|
||||
// }
|
||||
// &.kanban-board-inner {
|
||||
// background-color: fade(@color, 50%) !important;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
.configscreen {
|
||||
width: 70%;
|
||||
height: 75%;
|
||||
background-color: #424242 !important;
|
||||
}
|
||||
|
||||
.cp-onboardscreen-name {
|
||||
width:70%;
|
||||
float:right;
|
||||
padding:10px
|
||||
}
|
||||
|
||||
.cp-onboardscreen-logo {
|
||||
width:20%;
|
||||
height:30%;
|
||||
float:left;
|
||||
margin-left:10px;
|
||||
}
|
||||
|
||||
.cp-onboardscreen-desc {
|
||||
width:67% !important;
|
||||
float:right !important;
|
||||
padding:20px !important;
|
||||
margin-right:10px !important;
|
||||
}
|
||||
|
||||
.cp-kanban-palette {
|
||||
width:30px;
|
||||
height:30px;
|
||||
display: inline-block;
|
||||
border-radius: 50%;
|
||||
text-align: center;
|
||||
line-height: 30px;
|
||||
background-color: green !important;
|
||||
}
|
||||
|
||||
.cp-onboardscreen-screentitle {
|
||||
margin:auto;
|
||||
padding:10px;
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
.cp-onboardscreen-title {
|
||||
font-family: "IBM Plex Mono";
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.cp-admin-customize-apps-grid {
|
||||
width: 80%;
|
||||
color: white;
|
||||
height: 10px !important;
|
||||
margin:auto;
|
||||
}
|
||||
|
||||
.cp-onboardscreen-save {
|
||||
|
||||
right:0;
|
||||
bottom:0;
|
||||
padding-left:90%;
|
||||
margin-top:5%;
|
||||
|
||||
}
|
||||
|
||||
.cp-app-drive-element-grid {
|
||||
display: inline-block !important;
|
||||
height: 60px !important;
|
||||
}
|
||||
|
||||
.cp-appblock {
|
||||
width:60% !important;
|
||||
float:left !important;
|
||||
padding: 5% !important;
|
||||
background-color: #212121!important;
|
||||
border-color:white;
|
||||
height:20px;
|
||||
}
|
||||
|
||||
.active-app {
|
||||
background-color: #212121!important;
|
||||
}
|
||||
|
||||
.cp-onboardscreen-checkmark {
|
||||
text-align:right !important;
|
||||
color: white !important;
|
||||
}
|
||||
|
||||
.cp-onboardscreen-save {
|
||||
margin-right: -2px !important;
|
||||
margin-top: 5%;
|
||||
right:0 !important;
|
||||
bottom:0 !important;
|
||||
}
|
||||
|
||||
.cp-form-setting-title {
|
||||
float:center;
|
||||
padding:10px;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.cp-onboardscreen-maintitle {
|
||||
float:center;
|
||||
padding:10px;
|
||||
}
|
||||
|
||||
.cp-onboardscreen-form {
|
||||
padding:10px;
|
||||
}
|
||||
|
||||
.cp-kanban-palette {
|
||||
display: inline-block;
|
||||
border-radius: 50%;
|
||||
height: 30px !important;
|
||||
width: 30px !important;
|
||||
text-align: center;
|
||||
line-height: 30px;
|
||||
/* color: @cp_kanban-fg;
|
||||
border: 1px solid fade(@cp_kanban-fg, 40%);
|
||||
&.fa-check { // tick on selected color
|
||||
color: @cryptpad_text_col;
|
||||
} */
|
||||
}
|
||||
|
||||
.cp-onboardscreen-color {
|
||||
width:200%;
|
||||
height:20%;
|
||||
margin-top: 30%;
|
||||
margin-left: -65%;
|
||||
/* position:absolute;
|
||||
right:0;
|
||||
bottom:0; */
|
||||
/* margin-right:17%;
|
||||
margin-bottom:10% */
|
||||
}
|
|
@ -384,6 +384,7 @@ define([
|
|||
if (offline) { return; }
|
||||
if (color === selectedColor) { return; }
|
||||
selectedColor = color;
|
||||
console.log('clodlo', selectedColor)
|
||||
$colors.find('.cp-kanban-palette').removeClass('fa-check');
|
||||
var $col = $colors.find('.cp-kanban-palette-'+(color || 'nocolor'));
|
||||
$col.addClass('fa-check');
|
||||
|
|
|
@ -75,7 +75,6 @@ define([
|
|||
|
||||
// Service worker
|
||||
if ('serviceWorker' in navigator) {
|
||||
console.log('here');
|
||||
var initializing = true;
|
||||
var worker;
|
||||
var postMessage = function (data) {
|
||||
|
|
|
@ -37,7 +37,6 @@ onconnect = function(e) {
|
|||
console.log(e);
|
||||
console.log(i);
|
||||
var port = e.ports[0];
|
||||
console.log('here');
|
||||
//require([
|
||||
// '/common/outer/async-store.js'
|
||||
//], function (Store) {
|
||||
|
|
Loading…
Reference in a new issue