Add more configurable options and add a new way to use custom config
This commit is contained in:
parent
a790dd0398
commit
c90ba890ca
@ -1,74 +1,10 @@
|
|||||||
define(function() {
|
/*
|
||||||
var config = {};
|
* You can override the configurable values from this file.
|
||||||
|
* The recommended method is to make a copy of this file (/customize.dist/application_config.js)
|
||||||
/* Select the buttons displayed on the main page to create new collaborative sessions
|
in a 'customize' directory (/customize/application_config.js).
|
||||||
* Existing types : pad, code, poll, slide
|
* If you want to check all the configurable values, you can open the internal configuration file
|
||||||
*/
|
but you should not change it directly (/common/application_config_internal.js)
|
||||||
config.availablePadTypes = ['drive', 'pad', 'code', 'slide', 'poll', 'whiteboard', 'file', 'todo', 'contacts'];
|
*/
|
||||||
config.registeredOnlyTypes = ['file', 'contacts'];
|
define(['/common/application_config_internal.js'], function (AppConfig) {
|
||||||
|
return AppConfig;
|
||||||
/* Cryptpad apps use a common API to display notifications to users
|
|
||||||
* by default, notifications are hidden after 5 seconds
|
|
||||||
* You can change their duration here (measured in milliseconds)
|
|
||||||
*/
|
|
||||||
config.notificationTimeout = 5000;
|
|
||||||
config.disableUserlistNotifications = false;
|
|
||||||
config.hideLoadingScreenTips = false;
|
|
||||||
|
|
||||||
config.enablePinning = true;
|
|
||||||
|
|
||||||
config.whiteboardPalette = [
|
|
||||||
'#000000', // black
|
|
||||||
'#FFFFFF', // white
|
|
||||||
'#848484', // grey
|
|
||||||
'#8B4513', // saddlebrown
|
|
||||||
'#FF0000', // red
|
|
||||||
'#FF8080', // peach?
|
|
||||||
'#FF8000', // orange
|
|
||||||
'#FFFF00', // yellow
|
|
||||||
'#80FF80', // light green
|
|
||||||
'#00FF00', // green
|
|
||||||
'#00FFFF', // cyan
|
|
||||||
'#008B8B', // dark cyan
|
|
||||||
'#0000FF', // blue
|
|
||||||
'#FF00FF', // fuschia
|
|
||||||
'#FF00C0', // hot pink
|
|
||||||
'#800080', // purple
|
|
||||||
];
|
|
||||||
|
|
||||||
config.enableTemplates = true;
|
|
||||||
|
|
||||||
config.enableHistory = true;
|
|
||||||
|
|
||||||
/* user passwords are hashed with scrypt, and salted with their username.
|
|
||||||
this value will be appended to the username, causing the resulting hash
|
|
||||||
to differ from other CryptPad instances if customized. This makes it
|
|
||||||
such that anyone who wants to bruteforce common credentials must do so
|
|
||||||
again on each CryptPad instance that they wish to attack.
|
|
||||||
|
|
||||||
WARNING: this should only be set when your CryptPad instance is first
|
|
||||||
created. Changing it at a later time will break logins for all existing
|
|
||||||
users.
|
|
||||||
*/
|
|
||||||
config.loginSalt = '';
|
|
||||||
config.minimumPasswordLength = 8;
|
|
||||||
|
|
||||||
config.badStateTimeout = 30000;
|
|
||||||
|
|
||||||
config.applicationsIcon = {
|
|
||||||
file: 'fa-file-text-o',
|
|
||||||
pad: 'fa-file-word-o',
|
|
||||||
code: 'fa-file-code-o',
|
|
||||||
slide: 'fa-file-powerpoint-o',
|
|
||||||
poll: 'fa-calendar',
|
|
||||||
whiteboard: 'fa-paint-brush',
|
|
||||||
todo: 'fa-tasks',
|
|
||||||
contacts: 'fa-users',
|
|
||||||
};
|
|
||||||
|
|
||||||
config.displayCreationScreen = false;
|
|
||||||
|
|
||||||
config.disableAnonymousStore = false;
|
|
||||||
|
|
||||||
return config;
|
|
||||||
});
|
});
|
||||||
|
|||||||
79
www/common/application_config_internal.js
Normal file
79
www/common/application_config_internal.js
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
/*
|
||||||
|
* This is an internal configuration file.
|
||||||
|
* If you want to change some configurable values, use the '/customize/application_config.js'
|
||||||
|
* file (make a copy from /customize.dist/application_config.js)
|
||||||
|
*/
|
||||||
|
define(function() {
|
||||||
|
var config = {};
|
||||||
|
|
||||||
|
/* Select the buttons displayed on the main page to create new collaborative sessions
|
||||||
|
* Existing types : pad, code, poll, slide
|
||||||
|
*/
|
||||||
|
config.availablePadTypes = ['drive', 'pad', 'code', 'slide', 'poll', 'whiteboard', 'file', 'todo', 'contacts'];
|
||||||
|
config.registeredOnlyTypes = ['file', 'contacts'];
|
||||||
|
|
||||||
|
/* Cryptpad apps use a common API to display notifications to users
|
||||||
|
* by default, notifications are hidden after 5 seconds
|
||||||
|
* You can change their duration here (measured in milliseconds)
|
||||||
|
*/
|
||||||
|
config.notificationTimeout = 5000;
|
||||||
|
config.disableUserlistNotifications = false;
|
||||||
|
config.hideLoadingScreenTips = false;
|
||||||
|
|
||||||
|
config.enablePinning = true;
|
||||||
|
|
||||||
|
config.whiteboardPalette = [
|
||||||
|
'#000000', // black
|
||||||
|
'#FFFFFF', // white
|
||||||
|
'#848484', // grey
|
||||||
|
'#8B4513', // saddlebrown
|
||||||
|
'#FF0000', // red
|
||||||
|
'#FF8080', // peach?
|
||||||
|
'#FF8000', // orange
|
||||||
|
'#FFFF00', // yellow
|
||||||
|
'#80FF80', // light green
|
||||||
|
'#00FF00', // green
|
||||||
|
'#00FFFF', // cyan
|
||||||
|
'#008B8B', // dark cyan
|
||||||
|
'#0000FF', // blue
|
||||||
|
'#FF00FF', // fuschia
|
||||||
|
'#FF00C0', // hot pink
|
||||||
|
'#800080', // purple
|
||||||
|
];
|
||||||
|
|
||||||
|
config.enableTemplates = true;
|
||||||
|
|
||||||
|
config.enableHistory = true;
|
||||||
|
|
||||||
|
/* user passwords are hashed with scrypt, and salted with their username.
|
||||||
|
this value will be appended to the username, causing the resulting hash
|
||||||
|
to differ from other CryptPad instances if customized. This makes it
|
||||||
|
such that anyone who wants to bruteforce common credentials must do so
|
||||||
|
again on each CryptPad instance that they wish to attack.
|
||||||
|
|
||||||
|
WARNING: this should only be set when your CryptPad instance is first
|
||||||
|
created. Changing it at a later time will break logins for all existing
|
||||||
|
users.
|
||||||
|
*/
|
||||||
|
config.loginSalt = '';
|
||||||
|
config.minimumPasswordLength = 8;
|
||||||
|
|
||||||
|
config.badStateTimeout = 30000;
|
||||||
|
|
||||||
|
config.applicationsIcon = {
|
||||||
|
file: 'fa-file-text-o',
|
||||||
|
pad: 'fa-file-word-o',
|
||||||
|
code: 'fa-file-code-o',
|
||||||
|
slide: 'fa-file-powerpoint-o',
|
||||||
|
poll: 'fa-calendar',
|
||||||
|
whiteboard: 'fa-paint-brush',
|
||||||
|
todo: 'fa-tasks',
|
||||||
|
contacts: 'fa-users',
|
||||||
|
};
|
||||||
|
|
||||||
|
config.displayCreationScreen = false;
|
||||||
|
|
||||||
|
config.disableAnonymousStore = false;
|
||||||
|
|
||||||
|
return config;
|
||||||
|
});
|
||||||
@ -953,7 +953,32 @@ define([
|
|||||||
};
|
};
|
||||||
if (!window.Symbol) { return void displayDefault(); } // IE doesn't have Symbol
|
if (!window.Symbol) { return void displayDefault(); } // IE doesn't have Symbol
|
||||||
if (!href) { return void displayDefault(); }
|
if (!href) { return void displayDefault(); }
|
||||||
|
|
||||||
|
var centerImage = function ($img, $image, img) {
|
||||||
|
var w = img.width;
|
||||||
|
var h = img.height;
|
||||||
|
if (w>h) {
|
||||||
|
$image.css('max-height', '100%');
|
||||||
|
$img.css('flex-direction', 'column');
|
||||||
|
if (cb) { cb($img); }
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$image.css('max-width', '100%');
|
||||||
|
$img.css('flex-direction', 'row');
|
||||||
|
if (cb) { cb($img); }
|
||||||
|
};
|
||||||
|
|
||||||
var parsed = Hash.parsePadUrl(href);
|
var parsed = Hash.parsePadUrl(href);
|
||||||
|
if (parsed.type !== "file" || parsed.hashData.type !== "file") {
|
||||||
|
var $img = $('<media-tag>').appendTo($container);
|
||||||
|
var img = new Image();
|
||||||
|
$(img).attr('src', href);
|
||||||
|
img.onload = function () {
|
||||||
|
centerImage($img, $(img), img);
|
||||||
|
$(img).appendTo($img);
|
||||||
|
};
|
||||||
|
return;
|
||||||
|
}
|
||||||
var secret = Hash.getSecrets('file', parsed.hash);
|
var secret = Hash.getSecrets('file', parsed.hash);
|
||||||
if (secret.keys && secret.channel) {
|
if (secret.keys && secret.channel) {
|
||||||
var cryptKey = secret.keys && secret.keys.fileKeyStr;
|
var cryptKey = secret.keys && secret.keys.fileKeyStr;
|
||||||
@ -971,17 +996,7 @@ define([
|
|||||||
$img.attr('data-crypto-key', 'cryptpad:' + cryptKey);
|
$img.attr('data-crypto-key', 'cryptpad:' + cryptKey);
|
||||||
UIElements.displayMediatagImage(Common, $img, function (err, $image, img) {
|
UIElements.displayMediatagImage(Common, $img, function (err, $image, img) {
|
||||||
if (err) { return void console.error(err); }
|
if (err) { return void console.error(err); }
|
||||||
var w = img.width;
|
centerImage($img, $image, img);
|
||||||
var h = img.height;
|
|
||||||
if (w>h) {
|
|
||||||
$image.css('max-height', '100%');
|
|
||||||
$img.css('flex-direction', 'column');
|
|
||||||
if (cb) { cb($img); }
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
$image.css('max-width', '100%');
|
|
||||||
$img.css('flex-direction', 'row');
|
|
||||||
if (cb) { cb($img); }
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@ -727,6 +727,10 @@ define([
|
|||||||
};
|
};
|
||||||
|
|
||||||
Nthen(function (waitFor) {
|
Nthen(function (waitFor) {
|
||||||
|
if (AppConfig.beforeLogin) {
|
||||||
|
AppConfig.beforeLogin(LocalStore.isLoggedIn(), waitFor());
|
||||||
|
}
|
||||||
|
}).nThen(function (waitFor) {
|
||||||
var cfg = {
|
var cfg = {
|
||||||
query: onMessage, // TODO temporary, will be replaced by a webworker channel
|
query: onMessage, // TODO temporary, will be replaced by a webworker channel
|
||||||
userHash: LocalStore.getUserHash(),
|
userHash: LocalStore.getUserHash(),
|
||||||
@ -763,6 +767,7 @@ define([
|
|||||||
}
|
}
|
||||||
|
|
||||||
initFeedback(data.feedback);
|
initFeedback(data.feedback);
|
||||||
|
initialized = true;
|
||||||
}));
|
}));
|
||||||
}).nThen(function (waitFor) {
|
}).nThen(function (waitFor) {
|
||||||
// Load the new pad when the hash has changed
|
// Load the new pad when the hash has changed
|
||||||
@ -829,6 +834,10 @@ define([
|
|||||||
delete sessionStorage.migrateAnonDrive;
|
delete sessionStorage.migrateAnonDrive;
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
}).nThen(function (waitFor) {
|
||||||
|
if (AppConfig.afterLogin) {
|
||||||
|
AppConfig.afterLogin(common, waitFor());
|
||||||
|
}
|
||||||
}).nThen(function () {
|
}).nThen(function () {
|
||||||
updateLocalVersion();
|
updateLocalVersion();
|
||||||
f(void 0, env);
|
f(void 0, env);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user