More Related Content
PPTX
Tema 13 guerra fría descolonización- mundo actual PPT
PPTX
PDF
La revolucion china. 1º de bachillerato PDF
Organismos regionales de africa 2 PPTX
PDF
Historia y Rol de las Naciones Unidas ONU PPT
What's hot (6)
PPTX
Organización de Estados Americanos PPT
El imperialismo y la primera guerra mundial PDF
Libro del Mar de Bolivia, escrito por Carlos Mesa PPT
DOCX
1 de abril aniversario de la lopna PPT
Viewers also liked (20)
PDF
PDF
サイボウズ Office 新機能 「カスタムアプリ」を使いこなそう PDF
PPTX
ApacheSparkを中心としたOSSビッグデータ活用と導入時の検討ポイント PDF
PDF
PDF
コマンドなしでぼくはAndroid開発できない話 PDF
Dicionário de Bolso - Oswald de Andrade PDF
Reportaje: Las subidas de tipos incentivan el ahorro PPTX
Challenges for Asia’s Trade and Environment PDF
S&OP IBF-3 Core-Questions-Biel-07-07-12 PDF
SeNSE -first presentation- PPS
PDF
Geografía literaria: Lírica griega antigua PDF
【公開版Vol1】論理的に考えよう!ロジックツリー&ブランチ PPTX
Enfermedad hepática en el embarazo PDF
Swift の3大プロトコルを眺めてみる #love_swift PDF
PDF
Incubation de demandeurs d'emploi au sein d'un espace de Coworking à Lille PDF
How do medicaid waivers expand the possibilities of whole person care 032117 Similar to 自分達のサイボウズ Office を開発しよう (20)
PPTX
PDF
KEY
KEY
PDF
Apps for office オンプレミスとクラウド PDF
KEY
12.09.08 明星和楽2012 KLabハンズオンセッション PDF
CSS Nite in SAPPORO x a-blog cms PPTX
PPTX
20121112 jaws-ug sapporo8 PDF
PDF
Jawsdays2021 Amazon Connect愛について語り尽くす PDF
WordPressのオススメスライドとか記事とか集めました。(2012.10.13 WordBench神戸) PDF
PDF
7/7 WordBench kobe dreamweaver seminar PDF
introduce of alfasado web integration division PPT
PPTX
PPTX
kintone のレコード絞り込み置き換え事例の紹介 PPTX
[簡易提案書]働き方改革にMSインフラストラクチャー Recently uploaded (7)
PDF
翔泳社 「C++ ゼロからはじめるプログラミング」対応 C++学習教材(三谷純) PDF
ココロ分解帳|感情をやさしく分解し自分と他者を理解するためのモバイルノートアプリ PDF
PDF
AIシステムのセキュリティ:脅威となりつつあるAIの現状と課題 [English] Security of AI Systems: The Current... PPTX
生成AIとモデルベース開発:実はとても相性が良いことを説明します。まあそうだろうなと思われる方はご覧ください。 PDF
Working as an OSS Developer at Ruby Association Activity Report 2025 PDF
20250826_Devinで切り拓く沖縄ITの未来_AI駆動開発勉強会 沖縄支部 第2回 自分達のサイボウズ Office を開発しよう
- 3. サイボウズ Office on cybozu.com の6月版で、
JavaScript ファイルの読み込みが可能となりま
した。
つまり、cybozu.com のユーザー自身が、
JavaScript を使って、サイボウズ Office をカ
スタマイズできるようになったということです。
はじめに
- 6. これまでも、Firefox の GreaseMonkey という拡張機能を使えば、
任意のWebページに対しカスタマイズを行なえました。
エンドユーザーが自分のブラウザ上で設定する必要があります。
つまり、システム管理者がエンドユーザーに対してスクリプト
ファイルを配布する必要があります。
サイボウズ Office on cybozu.com の JavaScript 読み込み機能で
は、システム管理者が設定画面上で設定すれば、全エンドユーザー
にカスタマイズを適用できます。
全エンドユーザーへのカスタマイズ
- 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 ライブラリについて
- 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¬imecard=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 へのリンクを置換
- 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¬imecard
=1&id=156&ct=1&v=1347517804&Width=20&Height=20
&ext=.png
画像サイズを指定している「20」を「32」に置換すれば、
32x32のプロフィール画像に置き換わります。
プロフィール画像を拡大
- 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 の動画をインライン表示
- 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 のヘッダの「メニュー」とヘッダ直下の
アプリケーションメニューの内容が同じなので、「メ
ニュー」の方を非表示にしたい。
ヘッダの「メニュー」を非表示