8

(注:これがSuperUserでより適切に尋ねられるかどうかは完全にはわかりませんが、css設定を使用してxpi / jarファイルをいじくり回さなければならないという事実は、SOに適しているはずです。)

Mozilla Thunderbirdのカレンダー拡張機能であるLightningは、カレンダーごとに異なる色を使用し、カテゴリの色には細い垂直バーを使用します:(カレンダーの色として水色、カテゴリの色として赤)

ここに画像の説明を入力してください

私が知りたいのは、cssスタイルを変更/「ハッキング」する方法です。これは、プラグインディレクトリのどこかに埋め込まれ、これに関連付けられている必要があります。これにより、上記の例では、イベントが完全に実行されます。赤に着色。

誰もがこれを達成する方法を知っていますか?

4

7 に答える 7

10

category-overlay.png画像は、カテゴリバーに適切な外観を与えるための単なるグラデーションオーバーレイです。

ここに2つのオプションがあります。1つは簡単ですが信頼性は低く、もう1つはもう少し難しいです。

オプションA:簡単

$ profile /chrome/ディレクトリにuserChrome.cssを作成します。次のものが含まれている必要があります。

.calendar-color-box [categories〜= "mycategory"]、
.calendar-event-box-container [categories〜= "mycategory"] {
   背景色:#abc123!important;
}

色を変更したいカテゴリごとにこれを行う必要があります。Lightningオプションでカテゴリの色を変更しても、ここで設定したカテゴリの色は変更されないことに注意してください。

オプションB:より完全

ここでlightning.xpi内のいくつかのファイルを変更する必要があります。このソリューションでは、Lightningでカテゴリの色を設定するだけで、新しく追加されたカテゴリでも機能します。このように、カテゴリのないイベントは透過的であることに注意してください。もっと必要な場合は、自分で行う必要があります。

  1. zipプログラムでlightning.xpiを開きます
  2. ディレクトリchrome/を入力してください
  3. 含まれているcalendar.jarをzipプログラムで開きます
  4. content /calendar/に降りる
  5. calendar-multiday-view.xmlを開きます
    • 「calendar-color-box」を検索して、クラス属性から削除します
    • その上の数行に<content>タグがあり、それにclass="category-color-box"を追加します
  6. calendar-month-view.xmlとcalendar-view-core.xmlを開き、同じことを行います
  7. ファイルをcalendar.jarに保存し直します
  8. calendar.jarをlightning.xpiに保存し直します
  9. 変更したlightning.xpiをインストールします

パッチが必要な場合は、最新のcomm-centralソースに適用されます。

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">

オプションC:Javascriptを変更する

これは、JavaScriptの変更が必要ですが、最も効果的なハックです。オプションBの説明に従ってcalendar.jarを開き、calendar-views.jsをチェックアウトします。2つの関数があります:updateStyleSheetForViews()updateStyleSheetForCategory()。これは自分でいじくり回したい人に任せますが、.calendar-color-box[categories~=...]カテゴリがある場合は、デフォルトのルールを上書きするルールを追加することをお勧めします。このように、カテゴリが設定されていない場合はカレンダーの色が使用され、そうでない場合は目的のカテゴリの色が使用されます。

楽しむ :)

于 2011-03-26T14:37:41.310 に答える
8

この拡張機能は、必要な機能に最適です。

https://addons.mozilla.org/en-us/thunderbird/addon/calendar-tweaks/

これだけを行うには、すべてのオプションのチェックを外し、次のチェックをオンにします。

  • イベントの背景にカテゴリの色を適用する
  • カテゴリの色がない場合は、カレンダーの色を使用します
于 2012-12-27T11:32:18.650 に答える
2

イベントのXUL構造を理解するには、DOMInspectorアドオンをインストールする必要があります。userChrome.cssと一緒に、好きなようにスタイルを設定できるはずです。

于 2011-03-05T10:39:14.027 に答える
1

このページのさまざまなアイデアで物事を行う方法を更新しました...私は「フランスの投稿」の著者であり、色を反転させる別の方法が必要でした...

だからそれはあなたの喜びのためです(そして私のユーザーも!!)

これは、lightning 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の変更:

    • 常に境界線と1pxのマージンを表示します(レンダリングの方が良いと思います...)
    • 未分類のイベントの灰色(#ACACAC ")
    • 要素を選択するときにカレンダーの色(つまり、右の境界線)のみを変更します(プロパティ ".calendar-event-box-container"を追加することにより)

また、画像/skin/calendar/category-overlay.pngが拡張され、境界線のサイズが大きくなりました...

注:これらすべてをオプションとして選択するだけですが、現時点ではあそこを見る時間がありませんでした...しかし、誰かが私に研究の道を教えてくれるなら、私はそれを試してみます!

ではごきげんよう :)

ヴィンセント

于 2011-09-02T17:12:54.423 に答える
1

毎日のカレンダー
の画像毎週のカレンダーの画像

すべてのコード作成者:TOUTSÉLECTIONNER
これは、私がフランスのWebサイトから翻訳したいくつかのステップのプロセスです。私は単に私のために働いたことを書き留めています。これはサンダーバード3.1.9用です。lightning-1-1.0b2-tb-macosx.xpiプラグインの場合。これらの指示は2011年4月8日に書かれました。これらの指示は特にMacユーザー向けですが、おそらくWindowsでも使用できます。


すべて大文字の場合は、自分の情報を交換する必要があることを意味します。例:YOUREMAIL@gmail.com

パート1:

  1. プロファイルフォルダを見つけます。次のようなもの:MachintoshHD / Users / YOURUSERNAME / Library / Thunderbird / Profiles / RANDOMLETTERS.default
  2. ここに「chrome」というフォルダを作成します
  3. userChrome.cssというファイルを作成し、chromeフォルダーに保存します。拡張子が.cssである限り、通常のテキストエディタで.cssファイルを作成できます。私はdreamweaver、JEditと呼ばれる無料のプログラム、およびテキスト編集を使用しましたが、すべてうまくいきました。
  4. CSSファイル内に以下のコードを貼り付けます。(で囲まれたテキスト/* */は、thunderbird(または.cssを読み取るもの)によってコードとして認識されないことに注意してください)それは、それをコード化した人による表記としてのみ存在します。例/*TEXT*/

コード:

@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:ここで複雑な部分があります-ライトニングプラグインを一度に1ステップずつ分解し、元に戻し、変更されたプラグインとしてThunderbirdにロードします。

  1. thunderbird用のlightningプラグイン(lightning-1-1.0b2-tb-macosx.xpi)をダウンロードします。拡張子は.xpiになります。
  2. .xipファイルはzipファイルと同じものです。ファイルを右クリックし、[情報を見る]をクリックして、拡張子を.xpiではなく.zipに変更します。このlightning-1-1.0b2-tb-macosx.zipのようになります。または、名前を変更できます。例:ORIGINALPLUGIN.zip
  3. ファイルをダブルクリックして解凍します。これが機能しない場合は、解凍ソフトウェア(Mac用のstuffitエキスパンダーなど)をダウンロードする必要があります。
  4. フォルダ内で、calendar.jarファイルを見つけます。あなたはここでそれを見つけることができます:ORIGINALPLUGIN FOLDER / chrome / calendar.jar
  5. calendar.jarの名前をcalendar.zipに変更し、このファイルを解凍します。
  6. 次に、さらに3つのファイルを見つける必要があります(新しい領域にコピーします) 。/content/calendar/calendar-month-
    view.xml
    /content/calendar/calendar-multiday-view.xml
    / content / calendar / calendar- view- core.xml
  7. JEdi​​tなどのプログラムを使用して、これらのファイルで次の編集を行います。
    記号「<」はこの行を削除することを意味します
    記号">"はその場所にこの行を追加することを意味します
    CODEBY:TOUTSÉLECTIONNER

-> calendar / content / calendar / calendar-month-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"/>

-> calendar / content / calendar / calendar-multiday-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" />

-> calendar / content / calendar / calendar-view-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:

  1. 変更が加えられたら、各ファイルを保存します。
  2. 解凍したカレンダーフォルダ内の元のファイルを置き換えます
  3. 「スキン」フォルダと「コンテンツ」フォルダを選択します。右クリックして「2項目圧縮」を選択します。個々のファイルではなくフォルダを圧縮すると、これが機能しない場合があります。
  4. このファイルの名前をcalendar.jarに変更します
  5. 元のcalendar.jarファイルを作成したばかりの新しいファイルに置き換えます。(パート2、ステップ4を参照)ORIGINALPLUGIN FOLDER / chrome / calendar.jar
  6. ORIGINALPLUGINFOLDERの内容を選択します。

    Calendar- jschromechrome.manifest
    コンポーネント の デフォルトinstall.rdf モジュールtimezones.sqlite





  7. 選択したアイテムを右クリックして、「8アイテムを圧縮」を選択します

  8. zipファイルの名前をANYNAMEYOUWANT.xpiに変更します。たとえば、modifiedLightningPlug.xpiという名前を付けることができます。
  9. プラグインをロードします:thunderbird>ツール>アドオン>プラグイン>インストールを開きます
  10. ANYNAMEYOUWANT.xpiファイルを見つけてロードし、Thunderbirdを再起動します。

。。。そしてそれはそれであるはずです。それは私のために働いた。他の誰かがこれで運が良かったかどうかを確認します。運がなかった場合は、メモを再確認します。元のコードを作成してくれたTOUTSÉLECTIONNERに感謝します。

于 2011-04-08T05:53:25.107 に答える
0

スピードボールの回答のおかげで、カテゴリオーバーレイを制御するファイルを見つけることができました:以下の下にPNGファイルがあります:

....\extensions\{e2fda1a4-762b-4020-b5ad-a41df1933103}\chrome\calendar.jar\
    skin\calendar\category-overlay.png

このファイルの幅は7pxで、幅を拡大すると、カレンダービューのカテゴリカラーオーバーレイが拡大されます。(GIMPを使用して水平方向にスケーリングしました。)

そのため、カテゴリを使用してイベント全体を完全に色付けすることはできないように見えます。これは、その色がオーバーレイpngの「ハードワイヤード」ピクセル幅を介してのみマッピングされるためです。

于 2011-03-05T16:45:11.883 に答える
0

私はプログラミングの人ではないので、コードを変更する方法を見つけました。

いくつかの個別のカレンダーを作成することで、これを回避できます(たとえば、仕事、個人、誕生日などに電話をかけることができます)。各カレンダーの背景色を選択できます。カレンダーをすべて同時に表示する場合(左側のカレンダーボックスをオンにすることにより)、各カレンダーに入力する内容は、右側のストライプだけでなく、異なる背景色になります。

新しいイベントを作成するときは、カテゴリを選択する代わりに、カテゴリに「なし」を残しますが、カレンダーのドロップダウンメニューでカレンダーを選択し、イベントを特定のカレンダーに割り当てます(それぞれ背景色が異なります)。

その唯一の欠点は、ある時点でカレンダーをエクスポートする場合は、すべての個別のカレンダーをエクスポートする必要があることです。しかし、そうでなければそれは機能します。

于 2013-09-25T17:24:19.997 に答える