首先,感谢大家没有在 Post 上阻止或提出这个问题,因为没有提供任何代码。
当我决定再尝试一次时,我正要对这个问题提出赏金,并且在经历了很多之后我已经解决了这个问题。不过,它帮助我更好地理解了 etherpad。
我想列出两个与 etherpad 相关的重要链接:
- https://github.com/ether/etherpad-lite/wiki
- 关于 src - https://github.com/ether/etherpad-lite/wiki/Introduction-to-the-source
如果您想了解 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 接收初始化 etherpad 的参数,src/static/js/pad.js
因此如果您在初始化 pad 时定义了:'userColor',它将进入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
为白色(#ffffff)并将文本颜色更改为bgcolor
:
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);
}
因为当用户不在线时它会使文本消失,至少对我来说是这样。
就是这样了。我希望它能帮助那些想要和我一样功能的人。