(注意:虽然我不完全确定在SuperUser上是否会更好地询问这个问题,但我猜你可能不得不在xpi / jar文件中使用css设置,这应该是它适合SO。)
Mozilla Thunderbird的日历扩展名Lightning将为不同的日历使用不同的颜色,并使用一个窄的垂直条作为类别颜色:(浅蓝色作为日历颜色,红色作为类别颜色)
我想知道的是我如何改变/“黑客”css样式 - 当然 - 必须与此相关联,埋在插件目录中的某个地方,以便在上面的示例中,事件将完全涂成红色。
任何人都知道如何实现这一目标?
答案 0 :(得分:9)
category-overlay.png图像只是一个渐变叠加层,可以使类别栏看起来正确。
这里有两个选择。一个更容易但不可靠,另一个更难:
在$ profile / chrome /目录中创建userChrome.css。它应包含以下内容:
.calendar-color-box[categories~="mycategory"], .calendar-event-box-container[categories~="mycategory"] { background-color: #abc123 !important; }
您需要为要更改颜色的每个类别执行此操作。请注意,在Lightning选项中更改类别的颜色不会更改您在此处设置的类别颜色。
你需要在这里修改lightning.xpi中的一些文件。此解决方案仅需要您在Lightning中设置类别颜色,并且还适用于新添加的类别。请注意,这种方式没有类别的事件是透明的,如果你想要更多,你必须自己做。
如果您更愿意看到补丁,这适用于最新的通讯中心来源:
diff --git a/calendar/base/content/calendar-month-view.xml b/calendar/base/content/calendar-month-view.xml
--- a/calendar/base/content/calendar-month-view.xml
+++ b/calendar/base/content/calendar-month-view.xml
@@ -52,21 +52,20 @@
<bindings id="calendar-month-view-bindings"
xmlns="http://www.mozilla.org/xbl"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:xbl="http://www.mozilla.org/xbl">
<binding id="calendar-month-day-box-item" extends="chrome://calendar/content/calendar-view-core.xml#calendar-editable-item">
- <content mousethrough="never" tooltip="itemTooltip">
+ <content mousethrough="never" tooltip="itemTooltip" class="category-color-box">
<xul:vbox flex="1">
<xul:hbox>
<xul:box anonid="event-container"
- class="calendar-color-box"
xbl:inherits="calendar-uri,calendar-id"
flex="1">
<xul:box class="calendar-event-selection" orient="horizontal" flex="1">
<xul:stack anonid="eventbox"
class="calendar-event-box-container"
xbl:inherits="readonly,flashing,alarm,allday,priority,progress,status,calendar,categories"
flex="1">
<xul:hbox class="calendar-event-details">
diff --git a/calendar/base/content/calendar-multiday-view.xml b/calendar/base/content/calendar-multiday-view.xml
--- a/calendar/base/content/calendar-multiday-view.xml
+++ b/calendar/base/content/calendar-multiday-view.xml
@@ -2119,20 +2119,19 @@
]]></handler>
</handlers>
</binding>
<!--
- An individual event box, to be inserted into a column.
-->
<binding id="calendar-event-box" extends="chrome://calendar/content/calendar-view-core.xml#calendar-editable-item">
- <content mousethrough="never" tooltip="itemTooltip">
+ <content mousethrough="never" tooltip="itemTooltip" class="category-color-box">
<xul:box xbl:inherits="orient,width,height" flex="1">
<xul:box anonid="event-container"
- class="calendar-color-box"
xbl:inherits="orient,readonly,flashing,alarm,allday,priority,progress,status,calendar,categories,calendar-uri,calendar-id"
flex="1">
<xul:box class="calendar-event-selection" orient="horizontal" flex="1">
<xul:stack anonid="eventbox"
align="stretch"
class="calendar-event-box-container"
flex="1"
xbl:inherits="context,parentorient=orient,readonly,flashing,alarm,allday,priority,progress,status,calendar,categories">
diff --git a/calendar/base/content/calendar-view-core.xml b/calendar/base/content/calendar-view-core.xml
--- a/calendar/base/content/calendar-view-core.xml
+++ b/calendar/base/content/calendar-view-core.xml
@@ -46,21 +46,21 @@
xmlns="http://www.mozilla.org/xbl"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:xbl="http://www.mozilla.org/xbl">
<binding id="calendar-editable-item">
<content mousethrough="never"
tooltip="itemTooltip"
- tabindex="-1">
+ tabindex="-1"
+ class="category-color-box">
<xul:vbox flex="1">
<xul:hbox>
<xul:box anonid="event-container"
- class="calendar-color-box"
xbl:inherits="calendar-uri,calendar-id"
flex="1">
<xul:box class="calendar-event-selection" orient="horizontal" flex="1">
<xul:stack anonid="eventbox"
class="calendar-event-box-container"
flex="1"
xbl:inherits="readonly,flashing,alarm,allday,priority,progress,status,calendar,categories">
<xul:hbox class="calendar-event-details">
这将是最好的工作黑客,虽然它需要javascript更改。按选项B中所述打开calendar.jar并查看calendar-views.js,有两个功能:updateStyleSheetForViews()
和updateStyleSheetForCategory()
。我会把这个留给想要自己修补它的人,但想法是为.calendar-color-box[categories~=...]
添加一个规则,以便在有类别的情况下覆盖默认规则。这样,如果没有设置类别,则使用日历颜色,否则使用所需的类别颜色。
玩得开心:)
答案 1 :(得分:8)
此扩展程序看起来非常适合您想要的功能。
https://addons.mozilla.org/en-us/thunderbird/addon/calendar-tweaks/
要获得此选项,请取消选中所有选项,然后选中以下选项:
答案 2 :(得分:2)
您应该安装DOM Inspector addon以了解事件的XUL结构。与userChrome.css一起,你应该能够按照你想要的方式设计它。
答案 3 :(得分:1)
Image of daily calendar
Image of weekly calendar
所有代码:TOUTESÉLECTIONNER
这是我从法国网站翻译过的几个步骤。我只是简单地记下了对我有用的东西。这是针对thunderbird 3.1.9。对于lightning-1-1.0b2-tb-macosx.xpi插件。这些指示是在2011年4月8日写的。这些指示专门针对Mac用户,尽管您也可以将它们用于Windows。
ALL CAPS中的任何内容,意味着您需要更换自己的信息。示例:YOUREMAIL@gmail.com
第1部分:
/* */
包围的任何文本都不会被thunderbird(或任何读取.css的内容)识别为代码。它只是作为编码它的人的符号。示例/*TEXT*/
< / LI>
醇>
守则:
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); /* set default namespace to XUL */
.calendar-event-box-container[categories] { margin: 1px !important;} /* add margin to the category-box */
.calendar-color-box:not([categories]) { color: black !important; background-color: #A6A6A6 !important;} /* events without category will appear grey */
calendar-category-box:not([categories]) { display: block !important; } /* category-box always displayed even if event doesn't have a category */
/* 2- using the calendar uri (much better) */
.category-color-box[calendar-uri="http://my.caldav.server/path/to/file"]{ background-color: #FF0000 !important; display:block !important; float:right;}
/* display the category-box with the specified color (forced color of the calendar) */
/* for each category, assign a forced color
each category must be spelled lowercase in the css, spaces replaced with '_'
I didn't make any test with accents... but they may work (lowercase, spaces -> _) eg: "Appel Téléphonique" -> "appel_téléphonique"
*/
.calendar-color-box[categories="CATEGORY_NAME1"] { color: black !important; background-color: #CCCCFF !important;}
.calendar-color-box[categories="CATEGORY_NAME2"] { color: black !important; background-color: #FF99FF !important;}
.calendar-color-box[categories="CATEGORY_NAME3"] { color: black !important; background-color: #FF0000 !important;}
.calendar-color-box[categories="CATEGORY_NAME4"] { color: black !important; background-color: #CC33CC !important;}
.calendar-color-box[categories="CATEGORY_NAME5"] { color: black !important; background-color: #0000FF !important;}
第2部分:现在出现了复杂的部分 - 将闪电插件分开,一步一步,将其重新组合在一起并将其作为修改后的插件加载到Thunderbird中。
- &GT;日历/内容/日历/日历个月view.xml用
Line 64
< xbl:inherits="calendar-uri,calendar-id"
> xbl:inherits="calendar-uri,calendar-id,categories"
Line 95
< <xul:calendar-category-box anonid="category-box" xbl:inherits="categories" pack="end"/>
> <xul:calendar-category-box anonid="category-box" xbl:inherits="categories,calendar-uri" pack="end"/>
- &GT;日历/内容/日历/日历的多日-view.xml用
Line 2135
< <xul:calendar-category-box anonid="category-box" xbl:inherits="categories" pack="end" />
> <xul:calendar-category-box anonid="category-box" xbl:inherits="categories,calendar-uri" pack="end" />
- &GT;日历/内容/日历/日历 - 视图 - core.xml
Line 59
< xbl:inherits="calendar-uri,calendar-id"
> xbl:inherits="calendar-uri,calendar-id,categories"
Line 84
< xbl:inherits="categories"
> xbl:inherits="categories,calendar-uri"
Line 394
< xbl:inherits="categories">
> xbl:inherits="categories,calendar-uri">
第3部分:
选择ORIGINALPLUGIN文件夹的内容。
Calendar-js
chrome
chrome.manifest
组件
默认值
install.rdf
模块
timezones.sqlite
右键单击所选项目,然后选择“压缩8项”
。 。 。这应该是它。它对我有用。我会回来查看是否有其他人对此有好运,如果没有,我会仔细查看我的笔记。感谢TOUTESÉLECTIONNER撰写的oringial代码。
答案 4 :(得分:1)
刚刚更新了我在这个页面上用不同想法做事的方式...... 我是“法国邮报”的作者,我只需要另一种方法来反转颜色......
所以这是为了你的乐趣(以及我的用户!!)
这是对闪电xpi(更确切地说是其中的calendar.jar包)进行修改的统一差异
您可以在原帖上找到所有信息: http://www.geckozone.org/forum/viewtopic.php?f=22&t=89384&start=15#p646027
对于非法语人士,这里有一些翻译: 各位大家好,
这是更正确的更正版本。 与我以前的提议相比,最大的优点是我们不再需要在文件userChrome.css中定义类别/日历的颜色,而这些颜色根本没有使用过!
总体:
将更改应用于XML文件,以允许在DOM的各个元素上使用“calendar-id”和“categories”。
更新文件“calendar-views.js”以应用参数化颜色类别和日历,但通过反转它们。
最后,“calendar-views.css”中的一些css更改为:
此外,图片/skin/calendar/category-overlay.png已扩展为增加边框的大小......
注意:只留下所有这些东西作为选项,但我现在没有时间去看那里......但如果你们中的一个人可以给我一些研究途径,我会给它一试!
一切顺利:)
文森特
答案 5 :(得分:0)
感谢speedballs answer我能够找到控制类别覆盖的文件:下面有一个PNG文件:
....\extensions\{e2fda1a4-762b-4020-b5ad-a41df1933103}\chrome\calendar.jar\
skin\calendar\category-overlay.png
此文件的宽度为7px,放大宽度将放大日历视图中的“类别颜色叠加”。 (我只是用GIMP水平缩放它。)
所以看起来不可能使用该类别来为整个事件着色,因为它的颜色仅通过“硬连线”的像素宽度进行映射。 overlay png。
答案 6 :(得分:0)
我不是一个编程人员所以我找到了修改代码的方法。
你可以通过创建几个单独的日历来解决这个问题(例如,你可以打电话给工作,个人,生日等)。您可以选择每个日历的背景颜色。如果您同时显示所有日历(通过选中左侧的日历框),则您在每个日历中输入的内容将具有不同的背景颜色,而不仅仅是右侧的条带。
当您创建新活动而不是选择类别时,请为“类别”保留“无”,但在日历下拉菜单中选择一个日历,并将您的活动分配给特定日历(每个都有不同的背景颜色)。
唯一的缺点是,如果您想在某个时刻导出日历,则需要导出所有单个日历。但否则它会起作用。