Как я могу "взломать" расширение Thunderbird Lightning для полноцветных категорий - PullRequest
7 голосов
/ 05 марта 2011

(Примечание: хотя я не совсем уверен, лучше ли спрашивать об этом в SuperUser, я думаю, тот факт, что вам, вероятно, придется возиться в файле xpi / jar с настройками css, должен сделать этоподходит для SO.)

Расширение календаря Mozilla Thunderbird, Lightning, будет использовать разные цвета для разных календарей, и просто использовать узкую вертикальную полосу для цвета категории: (Голубой как цвет календаря и красный какцвет категории)

enter image description here

Я хотел бы узнать, как я могу изменить / "взломать" стили CSS, которые - безусловно, - должны быть связаны с этим, похороненгде-то в каталоге плагинов, чтобы в приведенном выше примере событие было полностью окрашено в красный цвет.

Кто-нибудь знает, как этого добиться?

Ответы [ 7 ]

9 голосов
/ 26 марта 2011

Изображение category-overlay.png - это просто наложение градиента для придания панели категорий правильного вида.

Два варианта здесь. Один проще, но не так надежен, другой немного сложнее:

Вариант A: Легко

Создайте userChrome.css в вашем каталоге $ profile / chrome /. Он должен содержать следующее:

.calendar-color-box[categories~="mycategory"],
.calendar-event-box-container[categories~="mycategory"] { 
   background-color: #abc123 !important;
}

Вам нужно будет сделать это для каждой категории, для которой вы хотите изменить цвет. Обратите внимание, что изменение цвета категории в параметрах «Молния» не изменит цвет категории, заданный здесь.

Вариант B: более полный

Вам нужно изменить некоторые файлы внутри lightning.xpi здесь. Это решение просто требует, чтобы вы установили цвета категорий в Lightning, а также будет работать для вновь добавленных категорий. Обратите внимание, что таким образом события без категории прозрачны, если вы хотите больше, вам придется делать это самостоятельно.

  1. Открыть lightning.xpi с помощью zip-программы
  2. Введите каталог chrome /
  3. Откройте содержащий calendar.jar с помощью zip-программы
  4. Сходи в контент / календарь /
  5. Открыть calendar-multiday-view.xml
    • найдите "calendar-color-box" и удалите его из атрибута класса
    • несколькими строками выше есть тег , добавьте к нему class = "category-color-box"
  6. Откройте calendar-month-view.xml и calendar-view-core.xml и сделайте то же самое
  7. Сохраните файлы обратно в calendar.jar
  8. Сохранить calendar.jar обратно в lightning.xpi
  9. Установить модифицированный lightning.xpi

Если вы предпочитаете патч, это относится к последнему источнику комм-центра:

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. Откройте calendar.jar, как описано в Варианте B, и просмотрите calendar-views.js, есть две функции: updateStyleSheetForViews() и updateStyleSheetForCategory(). Я оставлю это людям, которые хотят сами повозиться с этим, но идея состоит в том, чтобы добавить правило для .calendar-color-box[categories~=...], которое переопределяет правило по умолчанию в случае наличия категорий. Таким образом, если категория не установлена, используется цвет календаря, в противном случае - желаемый цвет категории.

Веселитесь:)

8 голосов
/ 27 декабря 2012

Это расширение выглядит идеально для желаемой функциональности.

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

Чтобы иметь это, снимите все опции и отметьте:

  • применить цвет категории к фоновым событиям
  • использовать цвет календаря, если нет цвета категории
2 голосов
/ 05 марта 2011

Вам необходимо установить дополнение DOM Inspector , чтобы понять структуру XUL события.Вместе с userChrome.css вы должны иметь возможность стилизовать его так, как вам хочется.

1 голос
/ 02 сентября 2011

Просто обновил способ, которым я сделал вещи с различными идеями на этой странице ... Я был автором "французского поста", и мне просто нужен был другой способ перевернуть цвета ...

Так что это для вашего удовольствия (и моих пользователей тоже !!)

Это унифицированный дистрибутив модификаций, сделанных на Lightning XPI (точнее, в пакет calendar.jar внутри него)

Вы можете найти всю информацию в оригинальном сообщении: http://www.geckozone.org/forum/viewtopic.php?f=22&t=89384&start=15#p646027

Для не говорящих по-французски, вот перевод: Привет всем,

Вот более правильная версия изменений. Большой плюс по сравнению с моим предыдущим предложением заключается в том, что нам больше не нужно определять цвета категорий / календарей в файле userChrome.css, который также вообще не используется!

Общий:

  • Применить изменения к файлам XML, чтобы разрешить использование "ID-календаря" и "категорий" в различных элементах DOM.

  • Обновите файл «calendar-views.js», чтобы применять параметризованные цветовые категории и календари, но путем их инвертирования.

  • Наконец, некоторые изменения CSS в "calendar-views.css" для:

    • Всегда показывать границу и поле в 1px (лучше рендеринг ...)
    • Серый цвет (# ACACAC ") для некатегоризованных событий
    • Измените только цвет календаря (т.е. правую границу) при выборе элемента (добавив свойство ".calendar-event-box-container")

Кроме того, изображение /skin/calendar/category-overlay.png было расширено, чтобы увеличить размер границы ...

Примечание: Осталось только поставить все эти вещи в качестве опции, но у меня не было времени посмотреть туда в данный момент ... Но если кто-то из вас может дать мне некоторые направления исследований, я дам это попробуй!

Всего наилучшего:)

Винсент

1 голос
/ 08 апреля 2011

Изображение ежедневного календаря
Изображение еженедельного календаря

ALL CODE BY: TOUT SÉLECTIONNER
Это несколько этапов процесса, которыйЯ перевел с французского сайта.Я просто отмечаю, что сработало для меня.Это для Thunderbird 3.1.9.для плагина lightning-1-1.0b2-tb-macosx.xpi.Эти инструкции были написаны 8 апреля 2011 года. Эти инструкции предназначены специально для пользователей Mac, хотя, вероятно, их можно использовать и для окон.


Все, что во ВСЕХ КЕПКАХ, означает, что вам нужно обменяться собственной информацией.Пример: 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: Теперь начинается сложная часть - разбираем плагин освещения, по одному шагу за раз, собираем его обратно и загружаем как измененныйПлагин для Thunderbird.

  1. Загрузите плагин молнии для Thunderbird (lightning-1-1.0b2-tb-macosx.xpi). Он будет иметь расширение .xpi.
  2. An.xip-файл - это то же самое, что и zip-файл. Щелкните правой кнопкой мыши файл, выберите «получить информацию» и измените расширение на .zip вместо .xpi. Он должен выглядеть следующим образом: lightning-1-1.0b2-tb-macosx.zip. Или вы можете переименовать его. Пример: ORIGINALPLUGIN.zip
  3. Разархивируйте файл, дважды щелкнув по нему. Если это не сработает, вам может понадобиться загрузить программное обеспечение для разархивирования (например, для расширения материала дляmac).
  4. Внутри папки найдитефайл calendar.jar.Вы можете найти его здесь: ORIGINALPLUGIN FOLDER / chrome / calendar.jar
  5. Переименуйте calendar.jar в calendar.zip, распакуйте этот файл.
  6. Теперь вам нужно найти еще три файла (скопируйте ихв новую область.)
    / content / calendar / calendar-month-view.xml
    / content / calendar / calendar-multiday-view.xml
    / content / calendar / calendar-view-core.xml
  7. Внесите следующие изменения в эти файлы, используя такую ​​программу, как JEdit.
    Символ «<» означает удалить эту строку <br>Символ «>» означает добавить эту строку на свое место
    CODE BY: TOUT SÉLECTIONNER

-> календарь / содержание/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. Выберите папки «skin» и «content».Щелкните правой кнопкой мыши и выберите «Сжать 2 элемента».Если вы заархивируете папку, а не отдельные файлы, это может не сработать.
  4. Переименуйте этот файл calendar.jar
  5. Замените оригинальный файл calendar.jar на новый, который вы только что создали.(см. Часть 2, шаг 4) ORIGINALPLUGIN FOLDER / chrome / calendar.jar
  6. Выберите содержимое папки ORIGINALPLUGIN.

    Calendar-js
    chrome
    chrome.manifest
    компоненты
    значения по умолчанию
    install.rdf
    модули
    timezones.sqlite

  7. Щелкните правой кнопкой мыши выбранные элементы и выберите «Сжать 8 элементов»

  8. Переименуйте файл zip в ANYNAMEYOUWANT.xpi Например, вы можете назвать его модифицированнымLightningPlug.xpi
  9. ЛоОбъявление плагина: Откройте Thunderbird> Инструменты> Дополнения> Плагины> Установить
  10. Найдите файл ANYNAMEYOUWANT.xpi, загрузите его и перезапустите Thunderbird.

. , , и так и должно быть. Это сработало для меня. Я проверю, чтобы узнать, повезло ли кому-то еще с этим, если нет, то я дважды проверю свои заметки. Спасибо TOUT SÉLECTIONNER за написание кода oringial.

0 голосов
/ 25 сентября 2013

Я не программист, поэтому я нашел способ изменить коды.

Вы можете обойти это, создав несколько отдельных календарей (например, которые вы можете назвать рабочими, личными, днями рождения и т. Д.). Вы можете выбрать цвет фона каждого календаря. Если вы сделаете все календари видимыми одновременно (установив флажки в календарях с левой стороны), то, что вы вводите в каждый календарь, будет иметь другой цвет фона, а не только полосу справа.

Когда вы создаете новое событие, вместо выбора категории оставьте «нет» для категории, но выберите календарь в раскрывающемся меню календаря и назначьте событие для определенного календаря (каждый из них имеет разные цвета фона).

Единственным недостатком является то, что вам нужно экспортировать все отдельные календари, если вы хотите экспортировать свои календари в какой-то момент. Но в остальном это работает.

0 голосов
/ 05 марта 2011

Благодаря ответу из спидбола Мне удалось найти файл, который управляет наложением категории: Файл PNG находится под:

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

Ширина этого файла составляет 7 пикселей, а увеличение его ширины увеличит цветовой оверлей категории в представлении календаря. (Я просто использовал GIMP, чтобы масштабировать его по горизонтали.)

Таким образом, может показаться, что невозможно использовать категорию для полного окрашивания всего события, так как ее цвет отображается только через "зашитую" ширину пикселя наложения. PNG.

...