我正在尝试为" 作者颜色"找到解决方案。在etherpad。从未使用过etherpad的人,请忽略这个问题,因为他们不会理解。
通常"作者颜色"是作为文本的背景颜色提供的颜色,它可以在初始化填充时作为参数给出。它有助于识别谁在垫中写了什么。
我希望所有文字都有白色背景,并根据用户更改文字颜色而不是背景颜色。因此,如果我在初始化垫时提供红色,我希望在垫中使用红色写入而不是红色背景和白色书写垫(像往常一样)。
请不要暂停此问题,因为我没有提供与此问题相关的任何特定代码。在评论中提问,我会清除任何不可理解的内容。
谢谢,
答案 0 :(得分:1)
首先,感谢大家在Post上没有阻止或提出这个问题,因为没有提供任何代码。
当我决定再次尝试自己时,我正准备将这个问题放在这个问题上,而且经过很多努力我已经解决了这个问题。虽然,它帮助我更好地理解了etherpad。
我想列出两个与etherpad相关的重要链接:
如果您正在尝试了解etherpad或想要自己做一些修改,它们可能非常重要。
所以这就是你如何做到的:
在src/static/js/ace2_inner.js
中,转到setAuthorStyle
功能并替换:
// author color
authorStyle.backgroundColor = bgcolor;
parentAuthorStyle.backgroundColor = bgcolor;
// text contrast
if(colorutils.luminosity(colorutils.css2triple(bgcolor)) < 0.5)
{
authorStyle.color = '#ffffff';
parentAuthorStyle.color = '#ffffff';
}else{
authorStyle.color = null;
parentAuthorStyle.color = null;
}
// anchor text contrast
if(colorutils.luminosity(colorutils.css2triple(bgcolor)) < 0.55)
{
anchorStyle.color = colorutils.triple2css(colorutils.complementary(colorutils.css2triple(bgcolor)));
}else{
anchorStyle.color = null;
}
使用:
authorStyle.backgroundColor = '#ffffff';
parentAuthorStyle.backgroundColor = '#ffffff';
authorStyle.color = bgcolor;
parentAuthorStyle.color = bgcolor;
并评论出来:
if ((typeof info.fade) == "number")
{
bgcolor = fadeColor(bgcolor, info.fade);
}
Ofcource不要忘记按bin/run.sh
重新启动进程以进行更改。
有兴趣了解它如何运作的人可以继续阅读。
因此,etherpad接收在src/static/js/pad.js
中初始化了etherpad的参数,所以如果你已经定义了'userColor',那么当你初始化了pad时,它将进入globalUserColor
所提到的文件。
然后此变量globalUserColor
在同一文件中填充pad.myUserInfo.colorId
。
现在在collab_client.js
中,此colorId
存储在功能cssColor
中的tellAceAuthorInfo
中,并且通过提供参数editor.setAuthorInfo
来调用bgcolor: cssColor
。
现在setAuthorInfo
中存在此函数src/static/js/ace2_inner.js
,它调用我们进行更改的其他本机函数(同一文件)setAuthorStyle
。
我所做的是使用提供的变量bgcolor
而不是更改背景颜色,而userColor
实际上包含authorStyle.backgroundColor = bgcolor;
parentAuthorStyle.backgroundColor = bgcolor;
:
backgroundColor
我将bgcolor
更改为白色(#ffffff),将文字颜色更改为authorStyle.backgroundColor = '#ffffff';
parentAuthorStyle.backgroundColor = '#ffffff';
authorStyle.color = bgcolor;
parentAuthorStyle.color = bgcolor;
:
// text contrast
if(colorutils.luminosity(colorutils.css2triple(bgcolor)) < 0.5)
{
authorStyle.color = '#ffffff';
parentAuthorStyle.color = '#ffffff';
}else{
authorStyle.color = null;
parentAuthorStyle.color = null;
}
// anchor text contrast
if(colorutils.luminosity(colorutils.css2triple(bgcolor)) < 0.55)
{
anchorStyle.color = colorutils.triple2css(colorutils.complementary(colorutils.css2triple(bgcolor)));
}else{
anchorStyle.color = null;
}
我也删除了:
userColor
因为,这些线条根据背景选择的颜色设置文本颜色的对比度。但是我已经将背景设置为白色并将文本颜色设置为给定 if ((typeof info.fade) == "number")
{
bgcolor = fadeColor(bgcolor, info.fade);
}
,因此我不再需要对比度功能。
最终我也评论道:
CustomUser.beforeRemote('login', function(ctx, unused, next) {
UserService.externalLogin(ctx.args.credentials.username ,ctx.args.credentials.password).then(function(response){
//Go to user.login
if(response.authorized){
next();
}
});
});
因为当用户不在线时文本会消失,至少对我来说它确实如此。
就是这样。 我希望它能帮助想要和我一样想要相同功能的人。