SlideShare una empresa de Scribd logo
1 de 35
自分達のサイボウズ Office を開発しよう
~JavaScript によるカスタマイズ
サイボウズ株式会社
畑 慎也
 はじめに
 カスタマイズが必要な理由
 カスタマイズ機能の概要
 JavaScript によるカスタマイズ
 カスタマイズ例の紹介
 さいごに
Agenda
 サイボウズ Office on cybozu.com の6月版で、
JavaScript ファイルの読み込みが可能となりま
した。
 つまり、cybozu.com のユーザー自身が、
JavaScript を使って、サイボウズ Office をカ
スタマイズできるようになったということです。
はじめに
カスタマイズが必要な理由
 本来、情報システムとは
 会社の業務のあり方と密接に関わります。
 情報システムの良さが競争力につながります。
 サイボウズ Office のカスタマイズ
 情報システムの一翼を担うサイボウズ Office
 自社の業務に最適となるようにカスタマイズ
できればGood
情報システムとサイボウズ Office
 これまでも、Firefox の GreaseMonkey という拡張機能を使えば、
任意のWebページに対しカスタマイズを行なえました。
 エンドユーザーが自分のブラウザ上で設定する必要があります。
 つまり、システム管理者がエンドユーザーに対してスクリプト
ファイルを配布する必要があります。
 サイボウズ Office on cybozu.com の JavaScript 読み込み機能で
は、システム管理者が設定画面上で設定すれば、全エンドユーザー
にカスタマイズを適用できます。
全エンドユーザーへのカスタマイズ
 システム管理者にとって
 システム管理者のみが設定可能
 カスタマイズ(プログラミング)は楽しい!
 良いカスタマイズを行うと、エンドユーザー
に喜ばれる!
 注意事項
 「あれもして、これもして」と言われるかも
しれません。
システム管理者にとって
カスタマイズ機能の概要
 システム設定(詳細)> カスタマイズ > JavaScript ファイルの設定
設定場所
設定画面
 システム設定画面
 個人設定画面
 運用管理画面
 カスタマイズの不具合により、設定できなく
なっては大変なので
 これら以外の画面はカスタマイズ可能
カスタマイズできない画面
 以下から適用する対象を選べます。
 すべてのユーザー
 システム管理者
 適用しない
 「システム管理者に適用」
 エンドユーザーに適用する前に動作を確認するような場合
 「適用しない」
 読み込ませたJavaScriptファイルを削除はしないが、適用を一時
的に停止したいような場合
カスタマイズを適用する対象
JavaScript によるカスタマイズ
 前提として
 HTML を理解している。
 ブラウザの JavaScript を理解している。
 JavaScript でコードを書いたことがある。
 できれば
 DOM操作を理解している。
 jQuery ライブラリを使ったことがある。
話の前提
 DOMについて
 ページ内の情報を表すDOM(Document Object
Model)と呼ばれるものに JavaScript からアクセスで
きます。
 このDOMを操作することによってページの内容を書き
換えることができます。
 例:
var user = document.getElementById('user');
user.innerHTML = '<b>HATA</b>';
DOM操作によるカスタマイズ
 jQueryライブラリについて
 DOM操作を容易にする JavaScript ライブラリ
 10月版のサイボウズ Office on cybozu.com から、カ
スタマイズ可能な画面では、あらかじめ読み込まれて
います。
 これから紹介するカスタマイズ例では jQuery を使い
ます。
 例:
$('#user').html('<b>HATA</b>');
jQuery ライブラリについて
カスタマイズ例の紹介
 問題:
 ワークフローを承認・決裁する際、却下するつもりが
誤って承認・決裁してしまう場合がある。
 解決方法:
 承認・決裁のボタンをクリックした後、念押しとして
確認ダイアログを表示し、キャンセルできるようにす
る。
ワークフローの承認の前に確認ダイアログを表示
$(document).ready(function () {
switch(CustomizeJS.page) { // 現在表示中のページ名
case 'WorkFlowHandle':
$('input[name="Approve"]').click(function () {
var caption = $(this).val();
if (caption.indexOf('決裁') >= 0) {
return confirm('決裁します。よろしいですか?');
} else {
return confirm('承認します。よろしいですか?');
}
});
break;
}
});
ワークフローの承認の前に確認ダイアログを表示
 jQuery を使う場合 $(document).ready(function () {...}) に記述
した内容が、ページを読み込んだ後に実行されます。
 CustomizeJS.page という変数に現在表示中のページ名が格納され
ています。
 ブラウザで「ページのソースを表示」して確認できます。
カスタマイズに際して
<script>
CustomizeJS = {
page: 'WorkFlowHandle',
ver: '1347960687'
};
</script>
<script src="ag.cgi/script.js?page=OfficeJSDownload&notimecard=1&ct=1&_v=1347960687">...
 問題:
 サイボウズ Office 内へのリンクを本文やフォローに貼り付ける
ことはよくあると思います。
 パッケージ版のサイボウズ Office から cybozu.com に移行した
場合、移行前に掲示板やメッセージの本文やフォローに書かれた
Office 内へのリンクがリンク切れとなる。
 例:http://example.jp/scripts/cb8/ag.exe?...
 解決方法:
 http://example.jp/scripts/cb8/ag.exe で始まるURLを
https://example.cybozu.com/o/ag.cgi?... に置換する。
cybozu.com 移行前の Office へのリンクを置換
$(document).ready(function () {
$('a[href^="http://example.jp/scripts/cb8/ag.exe"]')
.each(function () {
this.href = this.href.replace(
'http://example.jp/scripts/cb8/ag.exe',
'https://example.cybozu.com/o/ag.cgi');
});
});
cybozu.com 移行前の Office へのリンクを置換
• $('a[href^="URL"']) で URL で始まる全てのリンクを取得します。
• .each(function () {...}) で、取得した全てのリンクに対する処
理を記述できます。
• this.href = this.href.replace() でURLを置換しています。
 問題:
 cybozu.com ではユーザー情報にプロフィール画像を
登録できる。
 しかし、掲示板やメッセージで表示されるプロフィー
ル画像は小さくて見えずらい。
 解決方法:
 表示されているプロフィール画像(20x20)を32x32に
拡大する。
プロフィール画像を拡大
switch(CustomizeJS.page) { // 現在表示中のページ名
:
case 'BulletinView':
case 'MyFolderMessageView':
$('img.profileImage[src*="20x20"]').each(function () {
var src = $(this).attr('src')
.replace('20x20', '32x32')
.replace('Width=20', 'Width=32')
.replace('Height=20', 'Height=32');
$(this).attr('src',src)
.css('width', '32px').css('height', '32px');
});
break;
}
プロフィール画像を拡大
 プロフィール画像のリンクには class="profileImage" 属性がつい
ているため、$('img.profileImage[src*="20x20"]') で取得できま
す。
 掲示板・メッセージの画面で表示されているプロフィール画像の
URL
 ag.cgi/20x20.png?page=UserImageDownload&notimecard
=1&id=156&ct=1&v=1347517804&Width=20&Height=20
&ext=.png
 画像サイズを指定している「20」を「32」に置換すれば、
32x32のプロフィール画像に置き換わります。
プロフィール画像を拡大
 要望:
 掲示板やメッセージの本文やフォローに YouTube の
動画へのリンクがあるとき、インライン表示して、画
面遷移せずに動画を再生させたい。
YouTube の動画をインライン表示
switch(CustomizeJS.page) { // 現在表示中のページ名
:
case 'BulletinView':
case 'MyFolderMessageView':
$('tt').find('a[href^="http://www.youtube.com/watch?v="],a[href^="
https://www.youtube.com/watch?v="]')
.each(function () {
var html = '<div><iframe width="420" height="315" src="'
+ htmlEscape(this.href)
.replace('http://', 'https://')
.replace('watch?v=', 'embed/')
+ '" frameborder="0" alllowfullscreen></iframe></div>';
$(this).after(html);
});
break;
}
YouTube の動画をインライン表示
 $('tt') で本文やフォローの要素を取得します。
 .find('a[href^="http://www.youtube.com/watch?v="],
a[href^="https://www.youtube.com/watch?v="]') で
YouTube へのリンクを絞り込みます。
 $(this).after(html) でリンク直下に YouTube の動画
を IFRAME で埋め込みます。
YouTube の動画をインライン表示
 要望:
 社内にある別のシステムの個人ページへのリンクを、
cybozu.com のヘッダの個人メニューに追加したい。
ヘッダの個人メニューにリンクを追加
var html =
'<li class="yuimenuitem"><a class="yuimenuitemlabel"'
+ ' href="http://example.jp/user">個人情報</a></li>';
$('.vr_headerPersonalSettings').parent().after(html);
ヘッダの個人メニューにリンクを追加
 $('.vr_headerPersonalSettings') で「個人設定」リンクを取
得します。
 .parent() で「個人設定」の親となる LI 要素を取得します。
 この要素の直後に LI 要素で囲ったリンクを追加します。
 要望:
 cybozu.com のヘッダの「メニュー」とヘッダ直下の
アプリケーションメニューの内容が同じなので、「メ
ニュー」の方を非表示にしたい。
ヘッダの「メニュー」を非表示
$('#header-menu-application').hide();
ヘッダの「メニュー」を非表示
 $('#header-menu-application') で「メニュー」要素を
取得します。
 .hide() を呼んで非表示にします。
ソースコードのシンタックスハイライト
カスタマイズ設定ダイアログ
 ブログ:コード置場
http://hatashinya.blogspot.com/
にてカスタマイズ例を公開しています。
 本日紹介したコードは 10月版に対応しています。
6月版に対応させる場合、別途 jQuery を読み込
む必要があります。
さいごに

Más contenido relacionado

Destacado

コマンドなしでぼくはAndroid開発できない話
コマンドなしでぼくはAndroid開発できない話コマンドなしでぼくはAndroid開発できない話
コマンドなしでぼくはAndroid開発できない話Shinobu Okano
 
Reportaje: Las subidas de tipos incentivan el ahorro
Reportaje: Las subidas de tipos incentivan el ahorroReportaje: Las subidas de tipos incentivan el ahorro
Reportaje: Las subidas de tipos incentivan el ahorroLuis García Langa
 
Challenges for Asia’s Trade and Environment
Challenges for Asia’s Trade and EnvironmentChallenges for Asia’s Trade and Environment
Challenges for Asia’s Trade and EnvironmentOlivier Serrat
 
S&OP IBF-3 Core-Questions-Biel-07-07-12
S&OP IBF-3 Core-Questions-Biel-07-07-12S&OP IBF-3 Core-Questions-Biel-07-07-12
S&OP IBF-3 Core-Questions-Biel-07-07-12Jim Biel
 
SeNSE -first presentation-
SeNSE -first presentation-SeNSE -first presentation-
SeNSE -first presentation-SeNSE atNecst
 
The Flying Camel 1950
The Flying Camel 1950The Flying Camel 1950
The Flying Camel 1950amonyhig .
 
Geografía literaria: Lírica griega antigua
Geografía literaria: Lírica griega antiguaGeografía literaria: Lírica griega antigua
Geografía literaria: Lírica griega antiguaRosa Mariño
 
【公開版Vol1】論理的に考えよう!ロジックツリー&ブランチ
【公開版Vol1】論理的に考えよう!ロジックツリー&ブランチ【公開版Vol1】論理的に考えよう!ロジックツリー&ブランチ
【公開版Vol1】論理的に考えよう!ロジックツリー&ブランチNoriyuki Mizuno
 
Enfermedad hepática en el embarazo
Enfermedad hepática en el embarazoEnfermedad hepática en el embarazo
Enfermedad hepática en el embarazoRodolfo G. Andérica
 
Swift の3大プロトコルを眺めてみる #love_swift
Swift の3大プロトコルを眺めてみる #love_swiftSwift の3大プロトコルを眺めてみる #love_swift
Swift の3大プロトコルを眺めてみる #love_swiftTomohiro Kumagai
 
Exploring Las Vegas
Exploring Las VegasExploring Las Vegas
Exploring Las Vegasron mader
 
Incubation de demandeurs d'emploi au sein d'un espace de Coworking à Lille
Incubation de demandeurs d'emploi au sein d'un espace de Coworking à LilleIncubation de demandeurs d'emploi au sein d'un espace de Coworking à Lille
Incubation de demandeurs d'emploi au sein d'un espace de Coworking à LilleEmmanuel Duvette
 
How do medicaid waivers expand the possibilities of whole person care 032117
How do medicaid waivers expand the possibilities of whole person care 032117How do medicaid waivers expand the possibilities of whole person care 032117
How do medicaid waivers expand the possibilities of whole person care 032117Jennifer D.
 
Your Step By Step Guide to Testing Voice Search By Purna Virji
Your Step By Step Guide to Testing Voice Search By Purna VirjiYour Step By Step Guide to Testing Voice Search By Purna Virji
Your Step By Step Guide to Testing Voice Search By Purna VirjiSearch Marketing Expo - SMX
 
El nuevo reglamento de protección de datos en la economía digital
El nuevo reglamento de protección de datos en la economía digitalEl nuevo reglamento de protección de datos en la economía digital
El nuevo reglamento de protección de datos en la economía digitalAdigital
 
日経ITpro EXPO2015 ソラコム特別講演: IoTのキャズムを超える by CEO玉川
日経ITpro EXPO2015 ソラコム特別講演: IoTのキャズムを超える by CEO玉川 日経ITpro EXPO2015 ソラコム特別講演: IoTのキャズムを超える by CEO玉川
日経ITpro EXPO2015 ソラコム特別講演: IoTのキャズムを超える by CEO玉川 SORACOM,INC
 
Public Speaking Fear: Getting Rid of It in a Jiffy
Public Speaking Fear: Getting Rid of It in a JiffyPublic Speaking Fear: Getting Rid of It in a Jiffy
Public Speaking Fear: Getting Rid of It in a JiffySlideGenius, Inc.
 

Destacado (18)

コマンドなしでぼくはAndroid開発できない話
コマンドなしでぼくはAndroid開発できない話コマンドなしでぼくはAndroid開発できない話
コマンドなしでぼくはAndroid開発できない話
 
Dicionário de Bolso - Oswald de Andrade
Dicionário de Bolso - Oswald de AndradeDicionário de Bolso - Oswald de Andrade
Dicionário de Bolso - Oswald de Andrade
 
Reportaje: Las subidas de tipos incentivan el ahorro
Reportaje: Las subidas de tipos incentivan el ahorroReportaje: Las subidas de tipos incentivan el ahorro
Reportaje: Las subidas de tipos incentivan el ahorro
 
Challenges for Asia’s Trade and Environment
Challenges for Asia’s Trade and EnvironmentChallenges for Asia’s Trade and Environment
Challenges for Asia’s Trade and Environment
 
S&OP IBF-3 Core-Questions-Biel-07-07-12
S&OP IBF-3 Core-Questions-Biel-07-07-12S&OP IBF-3 Core-Questions-Biel-07-07-12
S&OP IBF-3 Core-Questions-Biel-07-07-12
 
SeNSE -first presentation-
SeNSE -first presentation-SeNSE -first presentation-
SeNSE -first presentation-
 
The Flying Camel 1950
The Flying Camel 1950The Flying Camel 1950
The Flying Camel 1950
 
Geografía literaria: Lírica griega antigua
Geografía literaria: Lírica griega antiguaGeografía literaria: Lírica griega antigua
Geografía literaria: Lírica griega antigua
 
【公開版Vol1】論理的に考えよう!ロジックツリー&ブランチ
【公開版Vol1】論理的に考えよう!ロジックツリー&ブランチ【公開版Vol1】論理的に考えよう!ロジックツリー&ブランチ
【公開版Vol1】論理的に考えよう!ロジックツリー&ブランチ
 
Enfermedad hepática en el embarazo
Enfermedad hepática en el embarazoEnfermedad hepática en el embarazo
Enfermedad hepática en el embarazo
 
Swift の3大プロトコルを眺めてみる #love_swift
Swift の3大プロトコルを眺めてみる #love_swiftSwift の3大プロトコルを眺めてみる #love_swift
Swift の3大プロトコルを眺めてみる #love_swift
 
Exploring Las Vegas
Exploring Las VegasExploring Las Vegas
Exploring Las Vegas
 
Incubation de demandeurs d'emploi au sein d'un espace de Coworking à Lille
Incubation de demandeurs d'emploi au sein d'un espace de Coworking à LilleIncubation de demandeurs d'emploi au sein d'un espace de Coworking à Lille
Incubation de demandeurs d'emploi au sein d'un espace de Coworking à Lille
 
How do medicaid waivers expand the possibilities of whole person care 032117
How do medicaid waivers expand the possibilities of whole person care 032117How do medicaid waivers expand the possibilities of whole person care 032117
How do medicaid waivers expand the possibilities of whole person care 032117
 
Your Step By Step Guide to Testing Voice Search By Purna Virji
Your Step By Step Guide to Testing Voice Search By Purna VirjiYour Step By Step Guide to Testing Voice Search By Purna Virji
Your Step By Step Guide to Testing Voice Search By Purna Virji
 
El nuevo reglamento de protección de datos en la economía digital
El nuevo reglamento de protección de datos en la economía digitalEl nuevo reglamento de protección de datos en la economía digital
El nuevo reglamento de protección de datos en la economía digital
 
日経ITpro EXPO2015 ソラコム特別講演: IoTのキャズムを超える by CEO玉川
日経ITpro EXPO2015 ソラコム特別講演: IoTのキャズムを超える by CEO玉川 日経ITpro EXPO2015 ソラコム特別講演: IoTのキャズムを超える by CEO玉川
日経ITpro EXPO2015 ソラコム特別講演: IoTのキャズムを超える by CEO玉川
 
Public Speaking Fear: Getting Rid of It in a Jiffy
Public Speaking Fear: Getting Rid of It in a JiffyPublic Speaking Fear: Getting Rid of It in a Jiffy
Public Speaking Fear: Getting Rid of It in a Jiffy
 

Similar a 自分達のサイボウズ Office を開発しよう

シラサギハンズオン 2016 05-26
シラサギハンズオン 2016 05-26シラサギハンズオン 2016 05-26
シラサギハンズオン 2016 05-26Yu Ito
 
Htmlコーディングの効率化 後編
Htmlコーディングの効率化 後編Htmlコーディングの効率化 後編
Htmlコーディングの効率化 後編Yasuhito Yabe
 
Prejob wordpress v2_1121
Prejob wordpress v2_1121Prejob wordpress v2_1121
Prejob wordpress v2_1121Shohei Aoyama
 
Prejob wordpress v2_1121
Prejob wordpress v2_1121Prejob wordpress v2_1121
Prejob wordpress v2_1121Shohei Aoyama
 
Apps for office オンプレミスとクラウド
Apps for office オンプレミスとクラウドApps for office オンプレミスとクラウド
Apps for office オンプレミスとクラウドHirotada Watanabe
 
コードをさわらずにビジネスサイトを作ろう!
コードをさわらずにビジネスサイトを作ろう!コードをさわらずにビジネスサイトを作ろう!
コードをさわらずにビジネスサイトを作ろう!FLOW web planning & design
 
12.09.08 明星和楽2012 KLabハンズオンセッション
12.09.08 明星和楽2012 KLabハンズオンセッション12.09.08 明星和楽2012 KLabハンズオンセッション
12.09.08 明星和楽2012 KLabハンズオンセッションKei Nakazawa
 
CSS Nite in SAPPORO x a-blog cms
CSS Nite in SAPPORO x a-blog cmsCSS Nite in SAPPORO x a-blog cms
CSS Nite in SAPPORO x a-blog cmsSeiko Kuchida
 
Ecsとlambdaのバッチ処理
Ecsとlambdaのバッチ処理Ecsとlambdaのバッチ処理
Ecsとlambdaのバッチ処理政雄 金森
 
20121112 jaws-ug sapporo8
20121112 jaws-ug sapporo820121112 jaws-ug sapporo8
20121112 jaws-ug sapporo8Hirokazu Ouchi
 
Wordpress buddypress3
Wordpress buddypress3Wordpress buddypress3
Wordpress buddypress3Shoichi Otomo
 
Jawsdays2021 Amazon Connect愛について語り尽くす
Jawsdays2021 Amazon Connect愛について語り尽くすJawsdays2021 Amazon Connect愛について語り尽くす
Jawsdays2021 Amazon Connect愛について語り尽くすShinya Yamada
 
WordPressのオススメスライドとか記事とか集めました。(2012.10.13 WordBench神戸)
WordPressのオススメスライドとか記事とか集めました。(2012.10.13 WordBench神戸)WordPressのオススメスライドとか記事とか集めました。(2012.10.13 WordBench神戸)
WordPressのオススメスライドとか記事とか集めました。(2012.10.13 WordBench神戸)Takashi Uemura
 
WordBench Saitama vol.6
WordBench Saitama vol.6WordBench Saitama vol.6
WordBench Saitama vol.6masaaki komori
 
7/7 WordBench kobe dreamweaver seminar
7/7 WordBench kobe dreamweaver seminar7/7 WordBench kobe dreamweaver seminar
7/7 WordBench kobe dreamweaver seminarAtushi Sugiyama
 
introduce of alfasado web integration division
introduce of alfasado web integration divisionintroduce of alfasado web integration division
introduce of alfasado web integration divisionatamaitakunai
 
BPM As A Service (Baa S)
BPM As A Service (Baa S)BPM As A Service (Baa S)
BPM As A Service (Baa S)Tomoaki Sawada
 
AWSを会社で使ってみた
AWSを会社で使ってみたAWSを会社で使ってみた
AWSを会社で使ってみたSatoshi Ishikawa
 
kintone のレコード絞り込み置き換え事例の紹介
kintone のレコード絞り込み置き換え事例の紹介kintone のレコード絞り込み置き換え事例の紹介
kintone のレコード絞り込み置き換え事例の紹介Ryo Mitoma
 
[簡易提案書]働き方改革にMSインフラストラクチャー
[簡易提案書]働き方改革にMSインフラストラクチャー[簡易提案書]働き方改革にMSインフラストラクチャー
[簡易提案書]働き方改革にMSインフラストラクチャーToshihiko Sawaki
 

Similar a 自分達のサイボウズ Office を開発しよう (20)

シラサギハンズオン 2016 05-26
シラサギハンズオン 2016 05-26シラサギハンズオン 2016 05-26
シラサギハンズオン 2016 05-26
 
Htmlコーディングの効率化 後編
Htmlコーディングの効率化 後編Htmlコーディングの効率化 後編
Htmlコーディングの効率化 後編
 
Prejob wordpress v2_1121
Prejob wordpress v2_1121Prejob wordpress v2_1121
Prejob wordpress v2_1121
 
Prejob wordpress v2_1121
Prejob wordpress v2_1121Prejob wordpress v2_1121
Prejob wordpress v2_1121
 
Apps for office オンプレミスとクラウド
Apps for office オンプレミスとクラウドApps for office オンプレミスとクラウド
Apps for office オンプレミスとクラウド
 
コードをさわらずにビジネスサイトを作ろう!
コードをさわらずにビジネスサイトを作ろう!コードをさわらずにビジネスサイトを作ろう!
コードをさわらずにビジネスサイトを作ろう!
 
12.09.08 明星和楽2012 KLabハンズオンセッション
12.09.08 明星和楽2012 KLabハンズオンセッション12.09.08 明星和楽2012 KLabハンズオンセッション
12.09.08 明星和楽2012 KLabハンズオンセッション
 
CSS Nite in SAPPORO x a-blog cms
CSS Nite in SAPPORO x a-blog cmsCSS Nite in SAPPORO x a-blog cms
CSS Nite in SAPPORO x a-blog cms
 
Ecsとlambdaのバッチ処理
Ecsとlambdaのバッチ処理Ecsとlambdaのバッチ処理
Ecsとlambdaのバッチ処理
 
20121112 jaws-ug sapporo8
20121112 jaws-ug sapporo820121112 jaws-ug sapporo8
20121112 jaws-ug sapporo8
 
Wordpress buddypress3
Wordpress buddypress3Wordpress buddypress3
Wordpress buddypress3
 
Jawsdays2021 Amazon Connect愛について語り尽くす
Jawsdays2021 Amazon Connect愛について語り尽くすJawsdays2021 Amazon Connect愛について語り尽くす
Jawsdays2021 Amazon Connect愛について語り尽くす
 
WordPressのオススメスライドとか記事とか集めました。(2012.10.13 WordBench神戸)
WordPressのオススメスライドとか記事とか集めました。(2012.10.13 WordBench神戸)WordPressのオススメスライドとか記事とか集めました。(2012.10.13 WordBench神戸)
WordPressのオススメスライドとか記事とか集めました。(2012.10.13 WordBench神戸)
 
WordBench Saitama vol.6
WordBench Saitama vol.6WordBench Saitama vol.6
WordBench Saitama vol.6
 
7/7 WordBench kobe dreamweaver seminar
7/7 WordBench kobe dreamweaver seminar7/7 WordBench kobe dreamweaver seminar
7/7 WordBench kobe dreamweaver seminar
 
introduce of alfasado web integration division
introduce of alfasado web integration divisionintroduce of alfasado web integration division
introduce of alfasado web integration division
 
BPM As A Service (Baa S)
BPM As A Service (Baa S)BPM As A Service (Baa S)
BPM As A Service (Baa S)
 
AWSを会社で使ってみた
AWSを会社で使ってみたAWSを会社で使ってみた
AWSを会社で使ってみた
 
kintone のレコード絞り込み置き換え事例の紹介
kintone のレコード絞り込み置き換え事例の紹介kintone のレコード絞り込み置き換え事例の紹介
kintone のレコード絞り込み置き換え事例の紹介
 
[簡易提案書]働き方改革にMSインフラストラクチャー
[簡易提案書]働き方改革にMSインフラストラクチャー[簡易提案書]働き方改革にMSインフラストラクチャー
[簡易提案書]働き方改革にMSインフラストラクチャー
 

Último

論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 

Último (12)

論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

自分達のサイボウズ Office を開発しよう

  • 1. 自分達のサイボウズ Office を開発しよう ~JavaScript によるカスタマイズ サイボウズ株式会社 畑 慎也
  • 2.  はじめに  カスタマイズが必要な理由  カスタマイズ機能の概要  JavaScript によるカスタマイズ  カスタマイズ例の紹介  さいごに Agenda
  • 3.  サイボウズ Office on cybozu.com の6月版で、 JavaScript ファイルの読み込みが可能となりま した。  つまり、cybozu.com のユーザー自身が、 JavaScript を使って、サイボウズ Office をカ スタマイズできるようになったということです。 はじめに
  • 5.  本来、情報システムとは  会社の業務のあり方と密接に関わります。  情報システムの良さが競争力につながります。  サイボウズ Office のカスタマイズ  情報システムの一翼を担うサイボウズ Office  自社の業務に最適となるようにカスタマイズ できればGood 情報システムとサイボウズ Office
  • 6.  これまでも、Firefox の GreaseMonkey という拡張機能を使えば、 任意のWebページに対しカスタマイズを行なえました。  エンドユーザーが自分のブラウザ上で設定する必要があります。  つまり、システム管理者がエンドユーザーに対してスクリプト ファイルを配布する必要があります。  サイボウズ Office on cybozu.com の JavaScript 読み込み機能で は、システム管理者が設定画面上で設定すれば、全エンドユーザー にカスタマイズを適用できます。 全エンドユーザーへのカスタマイズ
  • 7.  システム管理者にとって  システム管理者のみが設定可能  カスタマイズ(プログラミング)は楽しい!  良いカスタマイズを行うと、エンドユーザー に喜ばれる!  注意事項  「あれもして、これもして」と言われるかも しれません。 システム管理者にとって
  • 9.  システム設定(詳細)> カスタマイズ > JavaScript ファイルの設定 設定場所
  • 11.  システム設定画面  個人設定画面  運用管理画面  カスタマイズの不具合により、設定できなく なっては大変なので  これら以外の画面はカスタマイズ可能 カスタマイズできない画面
  • 12.  以下から適用する対象を選べます。  すべてのユーザー  システム管理者  適用しない  「システム管理者に適用」  エンドユーザーに適用する前に動作を確認するような場合  「適用しない」  読み込ませたJavaScriptファイルを削除はしないが、適用を一時 的に停止したいような場合 カスタマイズを適用する対象
  • 14.  前提として  HTML を理解している。  ブラウザの JavaScript を理解している。  JavaScript でコードを書いたことがある。  できれば  DOM操作を理解している。  jQuery ライブラリを使ったことがある。 話の前提
  • 15.  DOMについて  ページ内の情報を表すDOM(Document Object Model)と呼ばれるものに JavaScript からアクセスで きます。  このDOMを操作することによってページの内容を書き 換えることができます。  例: var user = document.getElementById('user'); user.innerHTML = '<b>HATA</b>'; DOM操作によるカスタマイズ
  • 16.  jQueryライブラリについて  DOM操作を容易にする JavaScript ライブラリ  10月版のサイボウズ Office on cybozu.com から、カ スタマイズ可能な画面では、あらかじめ読み込まれて います。  これから紹介するカスタマイズ例では jQuery を使い ます。  例: $('#user').html('<b>HATA</b>'); jQuery ライブラリについて
  • 18.  問題:  ワークフローを承認・決裁する際、却下するつもりが 誤って承認・決裁してしまう場合がある。  解決方法:  承認・決裁のボタンをクリックした後、念押しとして 確認ダイアログを表示し、キャンセルできるようにす る。 ワークフローの承認の前に確認ダイアログを表示
  • 19. $(document).ready(function () { switch(CustomizeJS.page) { // 現在表示中のページ名 case 'WorkFlowHandle': $('input[name="Approve"]').click(function () { var caption = $(this).val(); if (caption.indexOf('決裁') >= 0) { return confirm('決裁します。よろしいですか?'); } else { return confirm('承認します。よろしいですか?'); } }); break; } }); ワークフローの承認の前に確認ダイアログを表示
  • 20.  jQuery を使う場合 $(document).ready(function () {...}) に記述 した内容が、ページを読み込んだ後に実行されます。  CustomizeJS.page という変数に現在表示中のページ名が格納され ています。  ブラウザで「ページのソースを表示」して確認できます。 カスタマイズに際して <script> CustomizeJS = { page: 'WorkFlowHandle', ver: '1347960687' }; </script> <script src="ag.cgi/script.js?page=OfficeJSDownload&notimecard=1&ct=1&_v=1347960687">...
  • 21.  問題:  サイボウズ Office 内へのリンクを本文やフォローに貼り付ける ことはよくあると思います。  パッケージ版のサイボウズ Office から cybozu.com に移行した 場合、移行前に掲示板やメッセージの本文やフォローに書かれた Office 内へのリンクがリンク切れとなる。  例:http://example.jp/scripts/cb8/ag.exe?...  解決方法:  http://example.jp/scripts/cb8/ag.exe で始まるURLを https://example.cybozu.com/o/ag.cgi?... に置換する。 cybozu.com 移行前の Office へのリンクを置換
  • 22. $(document).ready(function () { $('a[href^="http://example.jp/scripts/cb8/ag.exe"]') .each(function () { this.href = this.href.replace( 'http://example.jp/scripts/cb8/ag.exe', 'https://example.cybozu.com/o/ag.cgi'); }); }); cybozu.com 移行前の Office へのリンクを置換 • $('a[href^="URL"']) で URL で始まる全てのリンクを取得します。 • .each(function () {...}) で、取得した全てのリンクに対する処 理を記述できます。 • this.href = this.href.replace() でURLを置換しています。
  • 23.  問題:  cybozu.com ではユーザー情報にプロフィール画像を 登録できる。  しかし、掲示板やメッセージで表示されるプロフィー ル画像は小さくて見えずらい。  解決方法:  表示されているプロフィール画像(20x20)を32x32に 拡大する。 プロフィール画像を拡大
  • 24. switch(CustomizeJS.page) { // 現在表示中のページ名 : case 'BulletinView': case 'MyFolderMessageView': $('img.profileImage[src*="20x20"]').each(function () { var src = $(this).attr('src') .replace('20x20', '32x32') .replace('Width=20', 'Width=32') .replace('Height=20', 'Height=32'); $(this).attr('src',src) .css('width', '32px').css('height', '32px'); }); break; } プロフィール画像を拡大
  • 25.  プロフィール画像のリンクには class="profileImage" 属性がつい ているため、$('img.profileImage[src*="20x20"]') で取得できま す。  掲示板・メッセージの画面で表示されているプロフィール画像の URL  ag.cgi/20x20.png?page=UserImageDownload&notimecard =1&id=156&ct=1&v=1347517804&Width=20&Height=20 &ext=.png  画像サイズを指定している「20」を「32」に置換すれば、 32x32のプロフィール画像に置き換わります。 プロフィール画像を拡大
  • 26.  要望:  掲示板やメッセージの本文やフォローに YouTube の 動画へのリンクがあるとき、インライン表示して、画 面遷移せずに動画を再生させたい。 YouTube の動画をインライン表示
  • 27. switch(CustomizeJS.page) { // 現在表示中のページ名 : case 'BulletinView': case 'MyFolderMessageView': $('tt').find('a[href^="http://www.youtube.com/watch?v="],a[href^=" https://www.youtube.com/watch?v="]') .each(function () { var html = '<div><iframe width="420" height="315" src="' + htmlEscape(this.href) .replace('http://', 'https://') .replace('watch?v=', 'embed/') + '" frameborder="0" alllowfullscreen></iframe></div>'; $(this).after(html); }); break; } YouTube の動画をインライン表示
  • 28.  $('tt') で本文やフォローの要素を取得します。  .find('a[href^="http://www.youtube.com/watch?v="], a[href^="https://www.youtube.com/watch?v="]') で YouTube へのリンクを絞り込みます。  $(this).after(html) でリンク直下に YouTube の動画 を IFRAME で埋め込みます。 YouTube の動画をインライン表示
  • 29.  要望:  社内にある別のシステムの個人ページへのリンクを、 cybozu.com のヘッダの個人メニューに追加したい。 ヘッダの個人メニューにリンクを追加
  • 30. var html = '<li class="yuimenuitem"><a class="yuimenuitemlabel"' + ' href="http://example.jp/user">個人情報</a></li>'; $('.vr_headerPersonalSettings').parent().after(html); ヘッダの個人メニューにリンクを追加  $('.vr_headerPersonalSettings') で「個人設定」リンクを取 得します。  .parent() で「個人設定」の親となる LI 要素を取得します。  この要素の直後に LI 要素で囲ったリンクを追加します。
  • 31.  要望:  cybozu.com のヘッダの「メニュー」とヘッダ直下の アプリケーションメニューの内容が同じなので、「メ ニュー」の方を非表示にしたい。 ヘッダの「メニュー」を非表示
  • 35.  ブログ:コード置場 http://hatashinya.blogspot.com/ にてカスタマイズ例を公開しています。  本日紹介したコードは 10月版に対応しています。 6月版に対応させる場合、別途 jQuery を読み込 む必要があります。 さいごに