2016-11-11 3 views
0

Я пытаюсь найти решение для "Авторство цвета" в etherpad. Люди, которые никогда не использовали etherpad, пожалуйста, игнорируйте этот вопрос, поскольку они не поймут.Изменить цвет вместо цвета фона текста в etherpad

Как правило, «Цвет авторства» - это цвет, предоставляемый в качестве фонового цвета текста, и его можно указать как параметр при инициализации пэда. Это помогает распознать, кто написал что в пэде.

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

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

Спасибо,

ответ

0

Прежде всего, спасибо всем за не блокирует или делая этот вопрос на сообщение как не кусок кода.

Я собирался поставить щедрость на этот вопрос, когда я решил попробовать себя еще раз и хорошо, я решил проблему после многого. Хотя, это помогло мне лучше понять эфир.

Я хочу перечислить две важные ссылки, связанные с EtherPad:

  1. https://github.com/ether/etherpad-lite/wiki
  2. О ЦСИ - 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 для изменений.

Люди, заинтересованные в понимании того, как это работает, могут продолжать чтение.

Затем эта переменная 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); 
    } 

Потому что это делает текст увядает, когда пользователь не в сети, по крайней мере, для меня это сделал.

Вот и все. Я надеюсь, что это поможет тем, кто хочет иметь такую ​​же функциональность, как и я.

Смежные вопросы