SharePoint2010のカレンダーをカテゴリ別に色分けする

PlanetWilson SharePoint Blogにあるカレンダーのカラー化スクリプト
http://planetwilson.blogspot.com/2011/07/sharepoint-2010-colour-calendar-post.html
をちょこっと改造して、文字も変更できるようにしました。
背景と文字はセットで変えないと表現の範囲が狭くなりますからね。


ってことで、変更点を・・・
の前に言っておきますが、私はプログラミングは素人なので、
効率が悪かったり、間違った記述かもしれません。その辺は許してください。

---オリジナル---
function ColourCalendar() {
  if(jQuery('a:contains(' + SEPARATOR + ')') != null)
  {             
    jQuery('a:contains(' + SEPARATOR + ')').each(function (i) {
      $box = jQuery(this).parents('div[title]');
      var colour = GetColourCodeFromCategory(GetCategory(this.innerHTML));
      this.innerHTML = GetActualText(this.innerHTML);
      jQuery($box).attr("title", GetActualText(jQuery($box).attr("title")));
      $box.css('background-color', colour);
    });        
  }   
}   
---変更後---
function ColourCalendar() {
  if(jQuery('a:contains(' + SEPARATOR + ')') != null) {
    jQuery('a:contains(' + SEPARATOR + ')').each(function (i) {
      $box = jQuery(this).parents('div[title]');
      var colour = GetColourCodeFromCategory(GetCategory(this.innerHTML);
      this.innerHTML = GetActualText(this.innerHTML);
      jQuery($box).attr("title", GetActualText(jQuery($box).attr("title")));
      $box.css('background-color', colour[0]);
      jQuery(this).css('cssText','color: ' + colour[1] + ' !important');
    });
  }
}
------------
まず、ColourCalendar()ですが、$box.css('background-color'で変数colourを代入しますが、これを配列にしています。
次に、文字の色を指定する行を追加します。
ここでのポイントは「!important」を指定すること。

jQuery(this).css('cssText','color: ' + colour[1] + ' !important');


あとは、カテゴリーの条件を指定します。

---オリジナル---
function GetColourCodeFromCategory(category) {
  var colour = null;     
  switch (category.trim().toLowerCase()) {
    case 'meeting':         
      colour = '#4FDB51';
      break;       
  }     
  return colour;   
}
---変更後---
function GetColourCodeFromCategory(category) {
  var colour = null;
  var textc  = null;
  switch (category.trim().toLowerCase()) {
    case 'meeting':         
      colour = '#4FDB51';
      textc  = '#000000';
      break;       
  }     
  return [colour,textc];   
}
------------
ただ単に、戻り値を配列に変更しただけです。

こんな感じかなぁ~


コメント

このブログの人気の投稿

メールの整理

ガーデンライト買ったけど…