Aipo: スケジュールの閲覧ユーザー数を増やす(制限解除) | 成長の果実

成長の果実

不完全でも良いから前に進む。

そもそもAipoが何かというと、企業レベルでも使用可能な、高機能でフリーなグループウェアソフト。


グループウェア「アイポ」
http://www.aipo.com/


色々使ってみたけど、フリーではAipoが一番使いやすくて高機能な気がする。

導入も簡単で、スマートフォンにも対応しているし。



本題だが、AipoにもGoogleカレンダーのようなスケジュール共有機能が備わっている。

ありがたいのだが、Googleカレンダーとは異なり共有できるユーザ数が10人までと制限されていてこれでは少ない。


もっと多くのユーザのカレンダーを共有したい場合、二つの解決策がある。


1つめは、

・スケジュールアプリをもう一つ追加する方法(いわゆるグループ分けのような感じ。標準機能。おそらくいくつでも追加可能)

下記画像のような感じで追加できる。

成長の果実-aipo_user01



そしてもう1つめは、

・ソースコードをカスタマイズしてユーザ制限を解除する方法


今回は後者の方法を取る。


それでは変更方法を説明していく。
(/usr/local/aipo/ にインストールしている前提とする。)


1.ロジック部分の下記二つのファイルを変更する。

/usr/local/aipo/tomcat/webapps/aipo/javascript/aipo/calendar/weekly.js
/usr/local/aipo/tomcat/webapps/aipo/javascript/aipo/calendar/weekly.xd.js



上記ファイルをそれぞれ下記のように変更する。(赤字が変更後の値)

aipo.calendar.maximum_to = 10;



aipo.calendar.maximum_to = 30;



2.インターフェース部分の下記二つのファイルを変更する。

/usr/local/aipo/tomcat/webapps/aipo/javascript/aipo/widget/MemberFacilitySelectList.js
/usr/local/aipo/tomcat/webapps/aipo/javascript/aipo/widget/MemberFacilitySelectList.xd.js



上記ファイルをそれぞれ下記のように変更する。(赤字が変更後の値)

※閲覧できるユーザーは10人までとなっております。



※閲覧できるユーザーは30人までとなっております。



3.CSSを編集する。(ユーザ数を増やした為、増加ユーザ数分の色情報を追加する)

下記ファイルが該当のCSSファイル

/usr/local/tomcat/webapps/aipo/themes/orange/css/common.css




かなり長くなるが、上記ファイルの下記部分を変更する。

div.color0 {
border-color:#039;
}
div.color0 div.scheduleDivFirstLine {
background-color:#039;
border-color:#039;
}
div.color0 div.scheduleDivLastLine div.handleDiv {
background-color:#039;
}
span.color0 {
background-color:#039;
color:#FFF;
padding:1px 3px;
}
div.termColor0 {
background-color:#039!important;
color:#FFF;
}
div.color1 {
border-color:#C33;
}
div.color1 div.scheduleDivFirstLine {
background-color:#C33;
border-color:#C33;
}
div.color1 div.scheduleDivLastLine div.handleDiv {
background-color:#C33;
}
span.color1 {
background-color:#C33;
color:#FFF;
padding:1px 3px;
}
div.termColor1 {
background-color:#C33!important;
color:#FFF;
}
div.color2 {
border-color:#363;
}
div.color2 div.scheduleDivFirstLine {
background-color:#363;
border-color:#363;
}
div.color2 div.scheduleDivLastLine div.handleDiv {
background-color:#363;
}
span.color2 {
background-color:#363;
color:#FFF;
padding:1px 3px;
}
div.termColor2 {
background-color:#363!important;
color:#FFF;
}
div.color3 {
border-color:#C39;
}
div.color3 div.scheduleDivFirstLine {
background-color:#C39;
border-color:#C39;
}
div.color3 div.scheduleDivLastLine div.handleDiv {
background-color:#C39;
}
span.color3 {
background-color:#C39;
color:#FFF;
padding:1px 3px;
}
div.termColor3 {
background-color:#C39!important;
color:#FFF;
}
div.color4 {
border-color:#666;
}
div.color4 div.scheduleDivFirstLine {
background-color:#666;
border-color:#666;
}
div.color4 div.scheduleDivLastLine div.handleDiv {
background-color:#666;
}
span.color4 {
background-color:#666;
color:#FFF;
padding:1px 3px;
}
div.termColor4 {
background-color:#666!important;
color:#FFF;
}
div.color5 {
border-color:#F63;
}
div.color5 div.scheduleDivFirstLine {
background-color:#F63;
border-color:#F63;
}
div.color5 div.scheduleDivLastLine div.handleDiv {
background-color:#F63;
}
span.color5 {
background-color:#F63;
color:#FFF;
padding:1px 3px;
}
div.termColor5 {
background-color:#F63!important;
color:#FFF;
}
div.color6 {
border-color:#39F;
}
div.color6 div.scheduleDivFirstLine {
background-color:#39F;
border-color:#39F;
}
div.color6 div.scheduleDivLastLine div.handleDiv {
background-color:#39F;
}
span.color6 {
background-color:#39F;
color:#FFF;
padding:1px 3px;
}
div.termColor6 {
background-color:#39F!important;
color:#FFF;
}
div.color7 {
border-color:#6C6;
}
div.color7 div.scheduleDivFirstLine {
background-color:#6C6;
border-color:#6C6;
}
div.color7 div.scheduleDivLastLine div.handleDiv {
background-color:#6C6;
}
span.color7 {
background-color:#6C6;
color:#FFF;
padding:1px 3px;
}
div.termColor7 {
background-color:#6C6!important;
color:#FFF;
}
div.color8 {
border-color:#F6C;
}
div.color8 div.scheduleDivFirstLine {
background-color:#F6C;
border-color:#F6C;
}
div.color8 div.scheduleDivLastLine div.handleDiv {
background-color:#F6C;
}
span.color8 {
background-color:#F6C;
color:#FFF;
padding:1px 3px;
}
div.termColor8 {
background-color:#F6C!important;
color:#FFF;
}
div.color9 {
border-color:#AAA;
}
div.color9 div.scheduleDivFirstLine {
background-color:#AAA;
border-color:#AAA;
}
div.color9 div.scheduleDivLastLine div.handleDiv {
background-color:#AAA;
}
span.color9 {
background-color:#AAA;
color:#FFF;
padding:1px 3px;
}
div.termColor9 {
background-color:#AAA!important;
color:#FFF;
}





div.color0 {
border-color:#039;
}
div.color0 div.scheduleDivFirstLine {
background-color:#039;
border-color:#039;
}
div.color0 div.scheduleDivLastLine div.handleDiv {
background-color:#039;
}
span.color0 {
background-color:#039;
color:#FFF;
padding:0px 3px;
}
div.termColor0 {
background-color:#039!important;
color:#FFF;
}
div.color1 {
border-color:#C33;
}
div.color1 div.scheduleDivFirstLine {
background-color:#C33;
border-color:#C33;
}
div.color1 div.scheduleDivLastLine div.handleDiv {
background-color:#C33;
}
span.color1 {
background-color:#C33;
color:#FFF;
padding:0px 3px;
}
div.termColor1 {
background-color:#C33!important;
color:#FFF;
}
div.color2 {
border-color:#363;
}
div.color2 div.scheduleDivFirstLine {
background-color:#363;
border-color:#363;
}
div.color2 div.scheduleDivLastLine div.handleDiv {
background-color:#363;
}
span.color2 {
background-color:#363;
color:#FFF;
padding:0px 3px;
}
div.termColor2 {
background-color:#363!important;
color:#FFF;
}
div.color3 {
border-color:#C39;
}
div.color3 div.scheduleDivFirstLine {
background-color:#C39;
border-color:#C39;
}
div.color3 div.scheduleDivLastLine div.handleDiv {
background-color:#C39;
}
span.color3 {
background-color:#C39;
color:#FFF;
padding:0px 3px;
}
div.termColor3 {
background-color:#C39!important;
color:#FFF;
}
div.color4 {
border-color:#666;
}
div.color4 div.scheduleDivFirstLine {
background-color:#666;
border-color:#666;
}
div.color4 div.scheduleDivLastLine div.handleDiv {
background-color:#666;
}
span.color4 {
background-color:#666;
color:#FFF;
padding:0px 3px;
}
div.termColor4 {
background-color:#666!important;
color:#FFF;
}
div.color5 {
border-color:#F63;
}
div.color5 div.scheduleDivFirstLine {
background-color:#F63;
border-color:#F63;
}
div.color5 div.scheduleDivLastLine div.handleDiv {
background-color:#F63;
}
span.color5 {
background-color:#F63;
color:#FFF;
padding:0px 3px;
}
div.termColor5 {
background-color:#F63!important;
color:#FFF;
}
div.color6 {
border-color:#39F;
}
div.color6 div.scheduleDivFirstLine {
background-color:#39F;
border-color:#39F;
}
div.color6 div.scheduleDivLastLine div.handleDiv {
background-color:#39F;
}
span.color6 {
background-color:#39F;
color:#FFF;
padding:0px 3px;
}
div.termColor6 {
background-color:#39F!important;
color:#FFF;
}
div.color7 {
border-color:#6C6;
}
div.color7 div.scheduleDivFirstLine {
background-color:#6C6;
border-color:#6C6;
}
div.color7 div.scheduleDivLastLine div.handleDiv {
background-color:#6C6;
}
span.color7 {
background-color:#6C6;
color:#FFF;
padding:0px 3px;
}
div.termColor7 {
background-color:#6C6!important;
color:#FFF;
}
div.color8 {
border-color:#F6C;
}
div.color8 div.scheduleDivFirstLine {
background-color:#F6C;
border-color:#F6C;
}
div.color8 div.scheduleDivLastLine div.handleDiv {
background-color:#F6C;
}
span.color8 {
background-color:#F6C;
color:#FFF;
padding:0px 3px;
}
div.termColor8 {
background-color:#F6C!important;
color:#FFF;
}
div.color9 {
border-color:#AAA;
}
div.color9 div.scheduleDivFirstLine {
background-color:#AAA;
border-color:#AAA;
}
div.color9 div.scheduleDivLastLine div.handleDiv {
background-color:#AAA;
}
span.color9 {
background-color:#AAA;
color:#FFF;
padding:0px 3px;
}
div.termColor9 {
background-color:#AAA!important;
color:#FFF;
}
div.color10 {
border-color:#000080;
}
div.color10 div.scheduleDivFirstLine {
background-color:#000080;
border-color:#000080;
}
div.color10 div.scheduleDivLastLine div.handleDiv {
background-color:#000080;
}
span.color10 {
background-color:#000080;
color:#FFF;
padding:0px 3px;
}
div.termColor10 {
background-color:#000080!important;
color:#FFF;
}

div.color11 {
border-color:#800080;
}
div.color11 div.scheduleDivFirstLine {
background-color:#800080;
border-color:#800080;
}
div.color11 div.scheduleDivLastLine div.handleDiv {
background-color:#800080;
}
span.color11 {
background-color:#800080;
color:#FFF;
padding:0px 3px;
}
div.termColor11 {
background-color:#800080!important;
color:#FFF;
}

div.color12 {
border-color:#808000;
}
div.color12 div.scheduleDivFirstLine {
background-color:#808000;
border-color:#808000;
}
div.color12 div.scheduleDivLastLine div.handleDiv {
background-color:#808000;
}
span.color12 {
background-color:#808000;
color:#FFF;
padding:0px 3px;
}
div.termColor12 {
background-color:#808000!important;
color:#FFF;
}

div.color13 {
border-color:#800000;
}
div.color13 div.scheduleDivFirstLine {
background-color:#800000;
border-color:#800000;
}
div.color13 div.scheduleDivLastLine div.handleDiv {
background-color:#800000;
}
span.color13 {
background-color:#800000;
color:#FFF;
padding:0px 3px;
}
div.termColor13 {
background-color:#800000!important;
color:#FFF;
}

div.color14 {
border-color:#9999FF;
}
div.color14 div.scheduleDivFirstLine {
background-color:#9999FF;
border-color:#9999FF;
}
div.color14 div.scheduleDivLastLine div.handleDiv {
background-color:#9999FF;
}
span.color14 {
background-color:#9999FF;
color:#FFF;
padding:0px 3px;
}
div.termColor14 {
background-color:#9999FF!important;
color:#FFF;
}

div.color15 {
border-color:#CC6600;
}
div.color15 div.scheduleDivFirstLine {
background-color:#CC6600;
border-color:#CC6600;
}
div.color15 div.scheduleDivLastLine div.handleDiv {
background-color:#CC6600;
}
span.color15 {
background-color:#CC6600;
color:#FFF;
padding:0px 3px;
}
div.termColor15 {
background-color:#CC6600!important;
color:#FFF;
}

div.color16 {
border-color:#669900;
}
div.color16 div.scheduleDivFirstLine {
background-color:#669900;
border-color:#669900;
}
div.color16 div.scheduleDivLastLine div.handleDiv {
background-color:#669900;
}
span.color16 {
background-color:#669900;
color:#FFF;
padding:0px 3px;
}
div.termColor16 {
background-color:#669900!important;
color:#FFF;
}

div.color17 {
border-color:#CC9900;
}
div.color17 div.scheduleDivFirstLine {
background-color:#CC9900;
border-color:#CC9900;
}
div.color17 div.scheduleDivLastLine div.handleDiv {
background-color:#CC9900;
}
span.color17 {
background-color:#CC9900;
color:#FFF;
padding:0px 3px;
}
div.termColor17 {
background-color:#CC9900!important;
color:#FFF;
}

div.color18 {
border-color:#6666FF;
}
div.color18 div.scheduleDivFirstLine {
background-color:#6666FF;
border-color:#6666FF;
}
div.color18 div.scheduleDivLastLine div.handleDiv {
background-color:#6666FF;
}
span.color18 {
background-color:#6666FF;
color:#FFF;
padding:0px 3px;
}
div.termColor18 {
background-color:#6666FF!important;
color:#FFF;
}

div.color19 {
border-color:#CC6699;
}
div.color19 div.scheduleDivFirstLine {
background-color:#CC6699;
border-color:#CC6699;
}
div.color19 div.scheduleDivLastLine div.handleDiv {
background-color:#CC6699;
}
span.color19 {
background-color:#CC6699;
color:#FFF;
padding:0px 3px;
}
div.termColor19 {
background-color:#CC6699!important;
color:#FFF;
}

div.color20 {
border-color:#339966;
}
div.color20 div.scheduleDivFirstLine {
background-color:#339966;
border-color:#339966;
}
div.color20 div.scheduleDivLastLine div.handleDiv {
background-color:#339966;
}
span.color20 {
background-color:#339966;
color:#FFF;
padding:0px 3px;
}
div.termColor20 {
background-color:#339966!important;
color:#FFF;
}

div.color21 {
border-color:#CC9966;
}
div.color21 div.scheduleDivFirstLine {
background-color:#CC9966;
border-color:#CC9966;
}
div.color21 div.scheduleDivLastLine div.handleDiv {
background-color:#CC9966;
}
span.color21 {
background-color:#CC9966;
color:#FFF;
padding:0px 3px;
}
div.termColor21 {
background-color:#CC9966!important;
color:#FFF;
}

div.color22 {
border-color:#3399CC;
}
div.color22 div.scheduleDivFirstLine {
background-color:#3399CC;
border-color:#3399CC;
}
div.color22 div.scheduleDivLastLine div.handleDiv {
background-color:#3399CC;
}
span.color22 {
background-color:#3399CC;
color:#FFF;
padding:0px 3px;
}
div.termColor22 {
background-color:#3399CC!important;
color:#FFF;
}

div.color23 {
border-color:#0066CC;
}
div.color23 div.scheduleDivFirstLine {
background-color:#0066CC;
border-color:#0066CC;
}
div.color23 div.scheduleDivLastLine div.handleDiv {
background-color:#0066CC;
}
span.color23 {
background-color:#0066CC;
color:#FFF;
padding:0px 3px;
}
div.termColor23 {
background-color:#0066CC!important;
color:#FFF;
}

div.color24 {
border-color:#663366;
}
div.color24 div.scheduleDivFirstLine {
background-color:#663366;
border-color:#663366;
}
div.color24 div.scheduleDivLastLine div.handleDiv {
background-color:#663366;
}
span.color24 {
background-color:#663366;
color:#FFF;
padding:0px 3px;
}
div.termColor24 {
background-color:#663366!important;
color:#FFF;
}

div.color25 {
border-color:#9966FF;
}
div.color25 div.scheduleDivFirstLine {
background-color:#9966FF;
border-color:#9966FF;
}
div.color25 div.scheduleDivLastLine div.handleDiv {
background-color:#9966FF;
}
span.color25 {
background-color:#9966FF;
color:#FFF;
padding:0px 3px;
}
div.termColor25 {
background-color:#9966FF!important;
color:#FFF;
}

div.color26 {
border-color:#CC6666;
}
div.color26 div.scheduleDivFirstLine {
background-color:#CC6666;
border-color:#CC6666;
}
div.color26 div.scheduleDivLastLine div.handleDiv {
background-color:#CC6666;
}
span.color26 {
background-color:#CC6666;
color:#FFF;
padding:0px 3px;
}
div.termColor26 {
background-color:#CC6666!important;
color:#FFF;
}

div.color27 {
border-color:#330000;
}
div.color27 div.scheduleDivFirstLine {
background-color:#330000;
border-color:#330000;
}
div.color27 div.scheduleDivLastLine div.handleDiv {
background-color:#330000;
}
span.color27 {
background-color:#330000;
color:#FFF;
padding:0px 3px;
}
div.termColor27 {
background-color:#330000!important;
color:#FFF;
}

div.color28 {
border-color:#CC0033;
}
div.color28 div.scheduleDivFirstLine {
background-color:#CC0033;
border-color:#CC0033;
}
div.color28 div.scheduleDivLastLine div.handleDiv {
background-color:#CC0033;
}
span.color28 {
background-color:#CC0033;
color:#FFF;
padding:0px 3px;
}
div.termColor28 {
background-color:#CC0033!important;
color:#FFF;
}

div.color29 {
border-color:#FF00CC;
}
div.color29 div.scheduleDivFirstLine {
background-color:#FF00CC;
border-color:#FF00CC;
}
div.color29 div.scheduleDivLastLine div.handleDiv {
background-color:#FF00CC;
}
span.color29 {
background-color:#FF00CC;
color:#FFF;
padding:0px 3px;
}
div.termColor29 {
background-color:#FF00CC!important;
color:#FFF;
}




ポイントは「padding:1px 3px;」を「padding:0px 3px;」に変更しているところ。

これによりユーザリストが増えても窮屈になるのを防いでいる。


※尚、色情報は下記サイトで公開されていたCSSを利用させて貰った。

Issue 590 - aipo
http://code.google.com/p/aipo/issues/detail?id=590


以上で変更作業は終了。



Aipoを再起動して確認する。


ユーザが11人以上追加できるようになっている。

成長の果実-aipo_user02


インターフェースもバッチリ。

成長の果実-aipo_user03


OK!!


その気になればユーザー制限数は100人にでも1000人にでも変更できる。

その場合はCSSのカラー設定が大変なので、大人しくカレンダーアプリを複数追加していったほうが賢明かも。