mirror of
https://github.com/wekan/wekan.git
synced 2025-04-22 04:57:07 -04:00
Merge pull request #3633 from chrisi51/autolink-settings
Added autolinking settings in admin backend - tbc
This commit is contained in:
commit
0ccdbdcbe9
6 changed files with 42 additions and 11 deletions
|
@ -211,6 +211,10 @@ template(name='layoutSettings')
|
|||
.title {{_ 'custom-top-left-corner-logo-height'}}
|
||||
.form-group
|
||||
input.wekan-form-control#custom-top-left-corner-logo-height(type="text", placeholder="" value="{{currentSetting.customTopLeftCornerLogoHeight}}")
|
||||
li.layout-form
|
||||
.title {{_ 'automatic-linked-url-schemes'}}
|
||||
.form-group
|
||||
textarea#automatic-linked-url-schemes.wekan-form-control= currentSetting.automaticLinkedUrlSchemes
|
||||
li
|
||||
button.js-save-layout.primary {{_ 'save'}}
|
||||
|
||||
|
|
|
@ -176,6 +176,9 @@ BlazeComponent.extendComponent({
|
|||
const textBelowCustomLoginLogo = $('#text-below-custom-login-logo')
|
||||
.val()
|
||||
.trim();
|
||||
const automaticLinkedUrlSchemes = $('#automatic-linked-url-schemes')
|
||||
.val()
|
||||
.trim();
|
||||
const customTopLeftCornerLogoImageUrl = $(
|
||||
'#custom-top-left-corner-logo-image-url',
|
||||
)
|
||||
|
@ -209,6 +212,7 @@ BlazeComponent.extendComponent({
|
|||
customTopLeftCornerLogoHeight,
|
||||
displayAuthenticationMethod,
|
||||
defaultAuthenticationMethod,
|
||||
automaticLinkedUrlSchemes,
|
||||
},
|
||||
});
|
||||
} catch (e) {
|
||||
|
|
|
@ -532,6 +532,7 @@
|
|||
"custom-login-logo-image-url": "Custom Login Logo Image URL",
|
||||
"custom-login-logo-link-url": "Custom Login Logo Link URL",
|
||||
"text-below-custom-login-logo": "Text below Custom Login Logo",
|
||||
"automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
|
||||
"username": "Username",
|
||||
"import-usernames": "Import Usernames",
|
||||
"view-it": "View it",
|
||||
|
|
|
@ -62,6 +62,10 @@ Settings.attachSchema(
|
|||
type: String,
|
||||
optional: true,
|
||||
},
|
||||
automaticLinkedUrlSchemes: {
|
||||
type: String,
|
||||
optional: true,
|
||||
},
|
||||
customTopLeftCornerLogoImageUrl: {
|
||||
type: String,
|
||||
optional: true,
|
||||
|
|
|
@ -6,23 +6,40 @@ var Markdown = require('markdown-it')({
|
|||
breaks: true,
|
||||
});
|
||||
|
||||
|
||||
// Static URL Scheme Listing
|
||||
var urlschemes = [
|
||||
"aodroplink",
|
||||
"thunderlink",
|
||||
"cbthunderlink",
|
||||
"onenote",
|
||||
"file",
|
||||
"abasurl",
|
||||
"conisio",
|
||||
"mailspring"
|
||||
];
|
||||
|
||||
// Better would be a field in the admin backend to set this dynamically
|
||||
// instead of putting all known or wanted url schemes here hard into code
|
||||
// but i was not able to access those settings
|
||||
// var urlschemes = currentSetting.automaticLinkedUrlSchemes.split('\n');
|
||||
|
||||
// put all url schemes into the linkify configuration to automatically make it clickable
|
||||
for(var i=0; i<urlschemes.length;i++){
|
||||
//console.log("adding autolink for "+urlschemes[i]);
|
||||
Markdown.linkify.add(urlschemes[i]+":",'http:');
|
||||
}
|
||||
|
||||
// Additional safeAttrValue function to allow for other specific protocols
|
||||
// See https://github.com/leizongmin/js-xss/issues/52#issuecomment-241354114
|
||||
function mySafeAttrValue(tag, name, value, cssFilter) {
|
||||
// only when the tag is 'a' and attribute is 'href'
|
||||
// then use your custom function
|
||||
if (tag === 'a' && name === 'href') {
|
||||
// only filter the value if starts with 'cbthunderlink:' or 'aodroplink'
|
||||
if (/^thunderlink:/ig.test(value) ||
|
||||
/^cbthunderlink:/ig.test(value) ||
|
||||
/^aodroplink:/ig.test(value) ||
|
||||
/^onenote:/ig.test(value) ||
|
||||
/^file:/ig.test(value) ||
|
||||
/^abasurl:/ig.test(value) ||
|
||||
/^conisio:/ig.test(value) ||
|
||||
/^mailspring:/ig.test(value)) {
|
||||
return value;
|
||||
}
|
||||
// only filter the value if starts with an registered url scheme
|
||||
urlscheme = value.split(/:\/\//);
|
||||
//console.log("validating "+urlscheme[0]);
|
||||
if(urlschemes.includes(urlscheme[0])) return value;
|
||||
else {
|
||||
// use the default safeAttrValue function to process all non cbthunderlinks
|
||||
return sanitizeXss.safeAttrValue(tag, name, value, cssFilter);
|
||||
|
|
|
@ -15,6 +15,7 @@ Meteor.publish('setting', () => {
|
|||
customLoginLogoImageUrl: 1,
|
||||
customLoginLogoLinkUrl: 1,
|
||||
textBelowCustomLoginLogo: 1,
|
||||
automaticLinkedUrlSchemes: 1,
|
||||
customTopLeftCornerLogoImageUrl: 1,
|
||||
customTopLeftCornerLogoLinkUrl: 1,
|
||||
customTopLeftCornerLogoHeight: 1,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue