SlideShare una empresa de Scribd logo
1 de 23
第39回 Alfresco勉強会
Share UIカスタマイズの第一歩
2017年6月21日
Moritaka Soma
自己紹介
相馬 盛孝
オープンソースコンサルティングチーム所属
Alfrescoのカスタマイズやサポートをしています
最近はVR技術に興味があります
本日の発表内容
本日の発表内容:
これからAlfresco ShareのUIカスタマイズを
行おうと考えている方のとっかかりと
なりそうな初歩的内容をご紹介
• Surf Extension Modulesの紹介
• Share Headerのカスタマイズ
• 簡単なUI挙動の変更
環境
環境:
Alfresco SDK 3.0 (All-In-One Project)
• Alfresco Platform 5.2.e
• Alfresco Share 5.2.d
*共にAlfresco SDK 3.0のデフォルトで
選択されているバージョンです
Alfresco SDKの使い方については割愛します…
環境
現状のAlfresco SDK 3.0 AIOの注意点:
Share Servicesが適用されているのに、
「Alfresco is running without Share Services.
See your System Administrator for more details.」
というメッセージが出てしまう。
https://github.com/Alfresco/alfresco-sdk/issues/445
src/test/resources/share/share-config-custom.xml の
<endpoint-url>${alfresco.repo.url}/alfresco/api</endpoint-url> を
<endpoint-url>${alfresco.repo.url}/api</endpoint-url> と修正することで
対処可能です。
Surf Extension Modules
Surf Extension Modulesとは?:
Surf Extension Modules are the main tool
to use when adding, updating, or hiding content
in the Share User Interface (UI). *
* http://docs.alfresco.com/5.2/concepts/dev-extensions-share-surf-extension-modules.html
意訳:
Share UIで、要素の追加・更新・削除(隠蔽)
カスタマイズを行う上でのメインツール
Surf Extension Modules
Surf Extension Modules:
RuntimeにModuleデプロイの有効/無効を切り替える
ことが可能です。
http://<host>:<port>/share/page/modules/deploy
デバッグやテストの際、便利です。
Surf Extension Modules
Alfresco SDKでは
<artifactId>-share-jar/src/main/resources/alfresco/
web-extension/site-data/extensions
フォルダにモジュール定義のxmlを配置します。
例: custom-header-extension-modules.xml
<extension>
<modules>
<module>
<id>Custom Share Header Menu</id>
<version>1.0</version>
<auto-deploy>true</auto-deploy>
<customizations>
<customization>
<targetPackageRoot>org.alfresco.share.header</targetPackageRoot>
<sourcePackageRoot>jp.aegif.share.header</sourcePackageRoot>
</customization>
</customizations>
</module>
</modules>
</extension>
Surf Extension Modules
モジュール定義の説明:
:
<customizations>
<customization>
<targetPackageRoot>org.alfresco.share.header</targetPackageRoot>
<sourcePackageRoot>jp.aegif.share.header</sourcePackageRoot>
</customization>
</customizations>
:
この例では、Alfresco Shareの
WEB-INF/classes/alfresco/site-webscripts/org/alfresco/share/header/
以下に配置される、WebScriptのjavascriptに対して、
Alfresco SDK上で
<artifactId>-share-jar/src/main/resources/alfresco/web-extension/
site-webscripts/jp/aegif/share/header/
以下の、同名のjavascriptファイルを追加して実行することで、
カスタマイズを行う定義となります。
他にも様々な定義を行うことができますが、今回は割愛します…
Share Headerのカスタマイズ
Share Header:
比較的カスタマイズの要望が多い部分です。
• 不要なメニュー項目を隠したい
• ワークフローは使わないのでタスク項目を隠したい
• SSOを使うので明示的にログアウトさせたくない
• よく使う項目を追加したい
• ごみ箱へ1クリックで移動したい
• 検索フィールドのメッセージが中途半端なので修正したい
etc…
Share Headerのカスタマイズ
カスタマイズ方法:
Share HeaderはAikauのWidgetとして実装されているため、
Share HeaderのWebScriptが作成するオリジナルのWidget
モデルを、Surf Extension Modulesを利用して変更することで
カスタマイズを行います。
Share Header
WebScript
Original
Widget
モデル
Surf Extension
Module
作成 変更
Customized
Widget
モデル
Share Headerのカスタマイズ
対象Widgetの調査:
ShareでClient Debug Modeを有効*にし、Debug Menuの
「Toggle Developer View」で、対象項目を調べるのが簡単です。
アイコンをクリックすることで、WidgetのIDと取得のための
Snippetを確認できます。
*SDKから起動した場合Client Debug Modeは有効化されています。
Share Headerのカスタマイズ
Surf Extension Module作成:
Share Headerのモデルを返すWebScriptのJavascriptは
WEB-INF/classes/alfresco/site-webscripts/org/alfresco/share/header/share-header.get.js
なので、以下のSurf Extension Moduleを作成。
<artifactId>-share-jar/src/main/resources/alfresco/web-extension/site-data/extensions
custom-header-extension-modules.xml :
<extension>
<modules>
<module>
<id>Custom Share Header Menu</id>
<version>1.0</version>
<auto-deploy>true</auto-deploy>
<customizations>
<customization>
<targetPackageRoot>org.alfresco.share.header</targetPackageRoot>
<sourcePackageRoot>jp.aegif.share.header</sourcePackageRoot>
</customization>
</customizations>
</module>
</modules>
</extension>
Share Headerのカスタマイズ
項目の消去:
Share Headerのモデルを修正するJavascriptは
<artifactId>-share-jar/src/main/resources/alfresco/web-extension/site-webscripts
/jp/aegif/share/header/share-header.get.js
として、以下の内容で作成します。
// Hide Task Menu Item
widgetUtils.deleteObjectFromArray(model.jsonModel, "id", "HEADER_TASKS");
widgetUtils.deleteObjectFromArray()という便利ユーティリティが使えるので、
IDが判れば簡単に消去することが可能です。
Share Headerのカスタマイズ
項目の追加:
ShareのHeaderを返すWebScriptは
<artifactId>-share/WEB-INF/classes/alfresco/site-webscripts/org/alfresco/
share/header/share-header.get.js
このファイルでimportされている、
<artifactId>-share/WEB-INF/classes/alfresco/site-webscripts/org/alfresco/
share/imports/share-header.lib.js の中で
function generateAppItems() {
var appItems = [
{
id: "HEADER_HOME",
name: "alfresco/menus/AlfMenuBarItem",
config: {
id: "HEADER_HOME",
label: "header.menu.home.label",
targetUrl: getUserHomeTargetUrl()
}
},
:
:
このような感じで、メニューの内容をJSONとして定義しているので参考にします。
Share Headerのカスタマイズ
項目の追加:
オリジナルのJSON定義を参考にして、Share Headerのモデルを修正するJavascriptに
以下の内容を追加します。
// Add Trash-can to Header Menu Items
var headerMenu = widgetUtils.findObject(model.jsonModel, "id", "HEADER_APP_MENU_BAR");
if (headerMenu != null) {
headerMenu.config.widgets.push({
id: "HEADER_CUSTOM_TRASH_CAN_LINK",
name: "alfresco/menus/AlfMenuBarItem",
config: {
label: "ごみ箱",
targetUrl: "user/" + encodeURIComponent(user.name) + "/user-trashcan"
}
});
}
Share Headerのカスタマイズ
検索フィールドのカスタマイズ:
検索フィールドのWidgetを調べると
alfresco/header/SearchBox というWidgetであることが分かる
Alfresco ShareのソースコードからこのWidgetを調べると、
aikau-1.0.101.3.jar に含まれる
META-INF/js/aikau/1.0.101.3/alfresco/header/SearchBox.js
がWidgetの実体であることがわかる。
Share Headerのカスタマイズ
alfresco/header/SearchBox :
実体のjavascriptファイルを確認すると、
/**
* The placeholder text to set in the main input field.
*
* @instance
* @type {string}
* @default
*/
placeholder: "search.instruction",
/**
* @instance
* @type {boolean}
* @default
*/
liveSearch: true,
文言やLiveSearchの有効/無効設定がプロパティになっていて、
config経由で設定できることが分かる
Share Headerのカスタマイズ
検索フィールド文言の変更:
Share Headerのモデルを修正するJavascriptに
以下の内容を追加する。
// Change Search Placeholder Message
widgetUtils.findObject(model.jsonModel, "id", "HEADER_SEARCH").config.placeholder = "検索";
*本来は表示したい文言をメッセージとして定義し、そのkeyを指定します。
Share Headerのカスタマイズ
検索フィールドLiveSearchの停止:
Share Headerのモデルを修正するJavascriptに
以下の内容を追加する。
// Disable Live Search
widgetUtils.findObject(model.jsonModel, "id", "HEADER_SEARCH").config.liveSearch = false;
デモ
ご質問など
ありがとうございました。

Más contenido relacionado

La actualidad más candente

全社情報共有サイトへの Alfresco Community 5 導入事例紹介 - 第27回Alfresco勉強会
全社情報共有サイトへのAlfresco Community 5 導入事例紹介 - 第27回Alfresco勉強会全社情報共有サイトへのAlfresco Community 5 導入事例紹介 - 第27回Alfresco勉強会
全社情報共有サイトへの Alfresco Community 5 導入事例紹介 - 第27回Alfresco勉強会
Ryota Watabe
 
Alfresco ce 4.2の新機能
Alfresco ce 4.2の新機能Alfresco ce 4.2の新機能
Alfresco ce 4.2の新機能
Jun Terashita
 
20130801 alfresco study17customizemap
20130801 alfresco study17customizemap20130801 alfresco study17customizemap
20130801 alfresco study17customizemap
Takeshi Totani
 

La actualidad más candente (20)

Alfresco Bulk Import toolのご紹介
Alfresco Bulk Import toolのご紹介Alfresco Bulk Import toolのご紹介
Alfresco Bulk Import toolのご紹介
 
Alfresco Javascript Consoleのご紹介
Alfresco Javascript Consoleのご紹介Alfresco Javascript Consoleのご紹介
Alfresco Javascript Consoleのご紹介
 
2013.6.18 NemakiWare & CmisSync ワークショップ
2013.6.18 NemakiWare & CmisSync ワークショップ2013.6.18 NemakiWare & CmisSync ワークショップ
2013.6.18 NemakiWare & CmisSync ワークショップ
 
Alfresco勉強会#31 alfresco 5.0にウイルススキャン機能を実装してみる
Alfresco勉強会#31 alfresco 5.0にウイルススキャン機能を実装してみるAlfresco勉強会#31 alfresco 5.0にウイルススキャン機能を実装してみる
Alfresco勉強会#31 alfresco 5.0にウイルススキャン機能を実装してみる
 
Alfresco勉強会#21 Alfresco Workdesk Configuratorによるpluginの設定変更方法
Alfresco勉強会#21 Alfresco Workdesk Configuratorによるpluginの設定変更方法Alfresco勉強会#21 Alfresco Workdesk Configuratorによるpluginの設定変更方法
Alfresco勉強会#21 Alfresco Workdesk Configuratorによるpluginの設定変更方法
 
Alfresco勉強会#35 AlfrescoのアクティビティフィードをSlackに送るカスタマイズ
Alfresco勉強会#35 AlfrescoのアクティビティフィードをSlackに送るカスタマイズAlfresco勉強会#35 AlfrescoのアクティビティフィードをSlackに送るカスタマイズ
Alfresco勉強会#35 AlfrescoのアクティビティフィードをSlackに送るカスタマイズ
 
全社情報共有サイトへの Alfresco Community 5 導入事例紹介 - 第27回Alfresco勉強会
全社情報共有サイトへのAlfresco Community 5 導入事例紹介 - 第27回Alfresco勉強会全社情報共有サイトへのAlfresco Community 5 導入事例紹介 - 第27回Alfresco勉強会
全社情報共有サイトへの Alfresco Community 5 導入事例紹介 - 第27回Alfresco勉強会
 
Alfresco勉強会#26 alfresco community 5.0でssoを設定する
Alfresco勉強会#26 alfresco community 5.0でssoを設定するAlfresco勉強会#26 alfresco community 5.0でssoを設定する
Alfresco勉強会#26 alfresco community 5.0でssoを設定する
 
Alfresco紹介
Alfresco紹介Alfresco紹介
Alfresco紹介
 
Alfresco ce 4.2の新機能
Alfresco ce 4.2の新機能Alfresco ce 4.2の新機能
Alfresco ce 4.2の新機能
 
Alfresco Google Docs連携
Alfresco Google Docs連携Alfresco Google Docs連携
Alfresco Google Docs連携
 
20140129 alfresco addons
20140129 alfresco addons20140129 alfresco addons
20140129 alfresco addons
 
Alfresco勉強会#15 alfresco 4をインストールしてみよう!
Alfresco勉強会#15 alfresco 4をインストールしてみよう!Alfresco勉強会#15 alfresco 4をインストールしてみよう!
Alfresco勉強会#15 alfresco 4をインストールしてみよう!
 
【第1.5回勉強会】後編 alfrescoの基本操作
【第1.5回勉強会】後編 alfrescoの基本操作【第1.5回勉強会】後編 alfrescoの基本操作
【第1.5回勉強会】後編 alfrescoの基本操作
 
20130801 alfresco study17customizemap
20130801 alfresco study17customizemap20130801 alfresco study17customizemap
20130801 alfresco study17customizemap
 
【20140521 第1回勉強会】後編 alfrescoの基本操作
【20140521 第1回勉強会】後編 alfrescoの基本操作【20140521 第1回勉強会】後編 alfrescoの基本操作
【20140521 第1回勉強会】後編 alfrescoの基本操作
 
Alfresco day technical update
Alfresco day technical updateAlfresco day technical update
Alfresco day technical update
 
Alfresco勉強会#30 alfrescoとshareのJavaScriptをデバッグしよう
Alfresco勉強会#30 alfrescoとshareのJavaScriptをデバッグしようAlfresco勉強会#30 alfrescoとshareのJavaScriptをデバッグしよう
Alfresco勉強会#30 alfrescoとshareのJavaScriptをデバッグしよう
 
【Alfresco勉強会】インストール手順書(windows azure)
【Alfresco勉強会】インストール手順書(windows azure)【Alfresco勉強会】インストール手順書(windows azure)
【Alfresco勉強会】インストール手順書(windows azure)
 
【20140521 第1回勉強会】前編 alfrescoのインストール
【20140521 第1回勉強会】前編 alfrescoのインストール【20140521 第1回勉強会】前編 alfrescoのインストール
【20140521 第1回勉強会】前編 alfrescoのインストール
 

Destacado

Alfresco勉強会#28 alfresco 5.0の検索機能をみてみよう
Alfresco勉強会#28 alfresco 5.0の検索機能をみてみようAlfresco勉強会#28 alfresco 5.0の検索機能をみてみよう
Alfresco勉強会#28 alfresco 5.0の検索機能をみてみよう
Tasuku Otani
 
[Alfresco]ドキュメントライブラリのUIカスタマイズ
[Alfresco]ドキュメントライブラリのUIカスタマイズ[Alfresco]ドキュメントライブラリのUIカスタマイズ
[Alfresco]ドキュメントライブラリのUIカスタマイズ
Jun Terashita
 

Destacado (8)

Alfresco study37 alfresco_ng2_components
Alfresco study37 alfresco_ng2_componentsAlfresco study37 alfresco_ng2_components
Alfresco study37 alfresco_ng2_components
 
Alfresco勉強会#40 QRコードによる文書の振り分け
Alfresco勉強会#40 QRコードによる文書の振り分けAlfresco勉強会#40 QRコードによる文書の振り分け
Alfresco勉強会#40 QRコードによる文書の振り分け
 
Alfresco study presentation 38th customize How-To WebDAV
Alfresco study presentation 38th customize How-To WebDAVAlfresco study presentation 38th customize How-To WebDAV
Alfresco study presentation 38th customize How-To WebDAV
 
Alfresco study41 alfresco_sdk3_introduction
Alfresco study41 alfresco_sdk3_introductionAlfresco study41 alfresco_sdk3_introduction
Alfresco study41 alfresco_sdk3_introduction
 
Alfresco勉強会#28 メタデータテンプレート
Alfresco勉強会#28 メタデータテンプレートAlfresco勉強会#28 メタデータテンプレート
Alfresco勉強会#28 メタデータテンプレート
 
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみようAlfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
 
Alfresco勉強会#28 alfresco 5.0の検索機能をみてみよう
Alfresco勉強会#28 alfresco 5.0の検索機能をみてみようAlfresco勉強会#28 alfresco 5.0の検索機能をみてみよう
Alfresco勉強会#28 alfresco 5.0の検索機能をみてみよう
 
[Alfresco]ドキュメントライブラリのUIカスタマイズ
[Alfresco]ドキュメントライブラリのUIカスタマイズ[Alfresco]ドキュメントライブラリのUIカスタマイズ
[Alfresco]ドキュメントライブラリのUIカスタマイズ
 

Similar a Share UIカスタマイズの第一歩

fluxflex meetup in Tokyo
fluxflex meetup in Tokyofluxflex meetup in Tokyo
fluxflex meetup in Tokyo
Kyosuke Inoue
 
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
Hiroki Kondo
 
Fluxflex meetup 2011 in Tokyo
Fluxflex meetup 2011 in TokyoFluxflex meetup 2011 in Tokyo
Fluxflex meetup 2011 in Tokyo
Kyosuke Inoue
 

Similar a Share UIカスタマイズの第一歩 (20)

Secret of Firefox
Secret of FirefoxSecret of Firefox
Secret of Firefox
 
Firefox OS App Manager
Firefox OS App ManagerFirefox OS App Manager
Firefox OS App Manager
 
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて
 
さくらのIoT Platformを使ってみよう ~OSC大阪編~
さくらのIoT Platformを使ってみよう ~OSC大阪編~さくらのIoT Platformを使ってみよう ~OSC大阪編~
さくらのIoT Platformを使ってみよう ~OSC大阪編~
 
20100416 devlove(flex) final
20100416 devlove(flex) final20100416 devlove(flex) final
20100416 devlove(flex) final
 
Mozapps installがなくなったことへの不平不満
Mozapps installがなくなったことへの不平不満Mozapps installがなくなったことへの不平不満
Mozapps installがなくなったことへの不平不満
 
17-D-1 Azure開発の極意 ~2011年版~
17-D-1 Azure開発の極意 ~2011年版~17-D-1 Azure開発の極意 ~2011年版~
17-D-1 Azure開発の極意 ~2011年版~
 
[関東Firefox OS 勉強会10th 講演資料] リクルートにおけるFirefox osアプリへの取り組み
[関東Firefox OS 勉強会10th 講演資料] リクルートにおけるFirefox osアプリへの取り組み[関東Firefox OS 勉強会10th 講演資料] リクルートにおけるFirefox osアプリへの取り組み
[関東Firefox OS 勉強会10th 講演資料] リクルートにおけるFirefox osアプリへの取り組み
 
fluxflex meetup in Tokyo
fluxflex meetup in Tokyofluxflex meetup in Tokyo
fluxflex meetup in Tokyo
 
インフラチームとCCoEの関係.pptx
インフラチームとCCoEの関係.pptxインフラチームとCCoEの関係.pptx
インフラチームとCCoEの関係.pptx
 
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
 
リクルートにおけるFirefox OSアプリへの取り組み ~0.8人月でできるアプリ!?~
リクルートにおけるFirefox OSアプリへの取り組み ~0.8人月でできるアプリ!?~リクルートにおけるFirefox OSアプリへの取り組み ~0.8人月でできるアプリ!?~
リクルートにおけるFirefox OSアプリへの取り組み ~0.8人月でできるアプリ!?~
 
XPagesDay 2013 Closing Session
XPagesDay 2013 Closing SessionXPagesDay 2013 Closing Session
XPagesDay 2013 Closing Session
 
Fluxflex meetup 2011 in Tokyo
Fluxflex meetup 2011 in TokyoFluxflex meetup 2011 in Tokyo
Fluxflex meetup 2011 in Tokyo
 
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
 
DreamTXセッションから読み解くAI活用の現状と展望
DreamTXセッションから読み解くAI活用の現状と展望DreamTXセッションから読み解くAI活用の現状と展望
DreamTXセッションから読み解くAI活用の現状と展望
 
OSC2013@FUKUOKA
OSC2013@FUKUOKAOSC2013@FUKUOKA
OSC2013@FUKUOKA
 
Thing.jsについて
Thing.jsについてThing.jsについて
Thing.jsについて
 
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
 
Windows Azure PHP Tips
Windows Azure PHP Tips Windows Azure PHP Tips
Windows Azure PHP Tips
 

Share UIカスタマイズの第一歩