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];   
}
------------
ただ単に、戻り値を配列に変更しただけです。

こんな感じかなぁ~


1 件のコメント:

  1. 最近SharePoint2010のバージョンアップを手掛けているのですが、2016では改造が必要ですけど、リンク切れで対応版が入手できません。
    標準のカレンダーを重ねる機能の色が2010の時は微妙だったけど、2016ははっきりした色になったので標準機能に戻したほうがよいです。たぶん・・・

    返信削除

Viva ラーニングのSharePointコンテンツで既定の言語がまじめに動き出した?

相変わらず挙動が安定しないVivaラーニングさん。 既定の言語設定がまじめに仕事を始めたのかもしれません。 ちょっと確認したいことがあってラーニングを開くとコンテンツが一つだけになってしまいました。すべてのコンテンツが表示された状態から何も操作していないのに表示コンテンツ数が変わ...