Monday, October 20, 2014

第24回Alfresco勉強会が開催されました

こんにちは。てらしたです。最近社内でも緑と青の陣営に分かれて戦う例のゲームが流行ってきています。が、ハマり過ぎると家庭が壊れる未来が容易に想像できるのであえてのんびりやるようにしています。同時期に始めた同僚ははるかに先に進んでいますが、まだ家庭が壊れている人はいないようです。今のところは。

さて、先週10/15(水)に第24回Alfresco勉強会が開催されました。
ここ何回かの勉強会と同じように、今回も参加者の方がAlfrescoに興味はあるけどまだ使っていないという状況だったので、前半は弊社のカワベが画面をお見せしながら機能や基本的な使い方について説明しました。こういう使い方はできるか、とか、どのように使われているか具体的な事例を教えてほしい、といった質疑応答も活発に行われて、気付けば1時間近く経過していました。思ったよりサクサク動くしUIもよくできているという感想もいただけたので、こちらの記事スライドなどを参考にしてぜひ一度使ってみていただければと思います。

そして後半は私がAlfrescoのコンテンツのライフサイクルについて発表しました。

コンテンツのライフサイクル

発表資料はこちら

Alfresco ShareのUIからコンテンツを作成 → 削除 → ごみ箱から削除 という操作を行った時に、裏側のファイルシステムやDB、インデックスはどうなっているのか、という内容です。普段はあまり意識することはないのですが、Alfrescoを導入して運用していく上で管理者の方は知っておいた方がいい内容だと思います。バックアップからのリストアや、削除されたコンテンツのファイル実体をファイルシステムから削除して容量を空ける、といったことをやる時に必要になる知識です。一連の流れをファイルシステム、DB、インデックスの中身を見ながら通していただくと、Alfrescoでコンテンツがどのように管理されているのかについての理解が深まると思います。

次回の勉強会は12月17日(水)に開催予定です。たくさんの方のご参加をお待ちしております。参加申し込みはこちらからお願いします。

Wednesday, October 15, 2014

iplus1: Enrich your existing flashcards deck with new example sentences written by bilinguals


You already know all your language-learning flashcards by heart, and want new study material?
How about adding to your deck a dozen new sentences, written by bilingual people, and that match your current level?

Tatoeba is a community-maintained database of example sentences. For example:
  • 散歩しましょう。 (Japanese)
  • Let's take a walk. (English)
  • Давай прогуляемся. (Russian)
  • Bir yürüyüş yapalım. (Turkish)

iplus1 allows you to enrich your flashcards deck with sentences from Tatoeba.
Chosen sentences are those that you will like to learn: they contain words that you already know, plus one new word.

iplus1 has been developed by an American student under my mentoring, as part as a Google Summer of Code project of Tatoeba. iplus1 is open source and works fine on test servers with Anki decks, expect to see it go live soon!

Wednesday, October 8, 2014

Aegif joins the Open Invention Network

Today, Aegif has joined the Open Invention Network, following 1000 other companies like Google, IBM, RedHat, Twitter.

Besides the big names, many of the Open Invention Network members operate in the same realm as Aegif:
- Alfresco
- Liferay
- Magnolia
- Moodle
- OpenBravo
- OpenStack
- Salesforce.com
- SugarCRM
- The Document Foundation

All of these organizations have pledged to not use their patent portfolio to extort money from Linux users. The pledge actually covers Linux and a few hundred Open Source packages (details).

Aegif believes that using patents against Open Source software is harmful to innovation.
Rather than patent litigation, we believe that openness is the best way to perform business in the software field.

Friday, September 5, 2014

Alfresco Community 5.0の検索BOXとIMEの相性が悪い

こんにちは。おおたにです。

Alfresco Community 5.0.aの検索BOX(画面右上の検索ツール)ですが、4.2系から若干仕様が変わり、日本語IMEとの相性が悪いようです。具体的には、日本語変換を確定させる時にEnterキーを押すと、そのまま検索が実行されてしまいます。検索文字列を追加入力できず、とても不便です。なお、この現象はChromeでは起きず、IE、Firefoxでのみ発生します(Safariでも起きるかもしれないです)。

原因は、検索BOXのキー入力イベントの拾い方にあるようです。Alfrescoのコードを見てみると、4.2系ではEnterキーのkeydownを拾って検索を行っているのですが、5.0.aではkeyupを拾うようになっています。IMEでの日本語変換確定時のイベント発火はブラウザによって異なりますが(詳しくはこちら)、この結果として一部のブラウザで日本語変換確定時に検索も実行されてしまうようです。

これを直すには、従来のようにEnterキーのkeydownで検索を行うようにすればよいので、当該箇所(SearchBox.jsの255目くらい)を以下のように修正します。また、このSearchBox.jsを圧縮したSearchBox-min.jsも新しく作り直します。オンラインのJavaScript圧縮サービスなどを利用してください。修正部分はクライアントサイドJavaScript(静的ファイル)なので、Alfrescoの再起動は必要ありません(ブラウザのキャッシュクリアくらいは必要かも…)。

<tomcat_dir>/webapps/share/js/alfresco/header/SearchBox.js
...
DomAttr.set(this._searchTextNode, "id", "HEADER_SEARCHBOX_FORM_FIELD");
DomAttr.set(this._searchTextNode, "placeholder", this.message("search.instruction"));
// on(this._searchTextNode, "keyup", lang.hitch(this, function(evt) {
on(this._searchTextNode, "keydown", lang.hitch(this, function(evt) {
   this.onSearchBoxKeyUp(evt);
}));
...

これでChrome以外のブラウザでも日本語変換確定時に検索が行われないようになりましたでしょうか。keyupをkeydownに変更することによる副作用はまだ詳しく調査していませんが、ひとまずはこの修正で様子を見てみようと思います。

Monday, September 1, 2014

第23回Alfresco勉強会が開催されました

こんにちは。てらしたです。ちょっと報告が遅くなってしまいましたが、先日8/24(水)に第23回Alfresco勉強会が開催されました。
今回は参加者の方がまだあまりAlfrescoを触っていないとのことだったので、用意していたWorkdeskの検索テンプレートの作り方の発表は再度保留にして、より入門的な内容の発表のみにしました。Workdeskについては次回、ある程度Alfrescoを使っていてカスタマイズ等にも興味がある参加者が多い場合にご紹介したいと思います。とはいえ今回のように初心者の方が多い可能性もあるため、入門っぽい内容のものも用意しておこうかなと考えています。

Alfresco Community 5.0をインストールする

発表資料はこちら

Community Editionの最新版である5.0.aのインストーラを配布し、実際に手元の環境にインストールして起動してみよう、という内容で弊社の大谷の発表でした。Windowsの場合にハマるポイントと解決方法の紹介があったり、最後に余談として5.0の新機能の紹介もあったり、Alfresco初心者の方への内容としては非常によかったのではないかと思います。

次回の勉強会は10月15日(水)に開催予定です。たくさんの方のご参加をお待ちしております。参加申し込みはこちらからお願いします。

Wednesday, August 27, 2014

The CmisSync context menu: Check out documents, modify metadata

Context: CmisSync synchronizes documents between Alfresco and your PC:


NEW: We implemented a CmisSync context menu for Windows Explorer:


From this context menu, you can check out a document.
This will lock the document for you, so that you can edit it:



The same dialog also allows you to view metadata of the document:



You can modify the metadata, even when offline. It will be synchronized as soon as you are back online.

The document's history is also visible:



The CmisSync context menu is part of CmisSync Business, which also includes Single-Sign-On and professional support.

Friday, August 1, 2014

Liferay WEBコンテンツのストラクチャーとテンプレートの紹介

こんにちは、かわべです。本格的な夏ですが、近年は夏になると夕立を通り越したゲリラ豪雨があったりしますよね。天気が怪しいときはアメッシュを定期的にチェックして帰るタイミングを逃さないようにしているのですが、ときどき失敗してしばらく帰れなくなります。今回は雨が止むのを待つ間にブログを書くことにしました。

以前にWEBコンテンツについて紹介した際にはスルーしてしまったWEBコンテンツのストラクチャーとテンプレートについて簡単に紹介したいと思います。

WEBコンテンツのストラクチャーとテンプレートとは?

WEBコンテンツを作成する際にはストラクチャーを選択します。インストールした直後のLiferayには、タイトルとHTMLコンテンツを要素として備えたデフォルトのストラクチャーのみ存在しています。HTMLエディタで編集できるので自由度は高いですが、決まった構造のコンテンツを繰り返し作成するには手間がかかることもありますし、作成者によって違う見た目になってしまうかもしれません。同じ種類のWEBコンテンツを何度も作成する場合は、入力する要素の構造(ストラクチャー)と各要素の表示方法(テンプレート)を事前に定義しておけば、どのユーザでも簡単に同じ見栄えのコンテンツが作成できるようになります。

今回はデモ目的で作成した「社長あいさつ」というWEBコンテンツのストラクチャーとテンプレートを例として見ていきます。
とてもシンプルな例なのですが、使用するとこのようなWEBコンテンツが作成できるようになります。

では、まずはストラクチャーから追加していきます。以下の手順はすべて管理者権限のあるユーザで実行しています。

ストラクチャーの追加

「システム管理→コンテンツ→WEBコンテンツ」と移動してWEBコンテンツの管理画面へと移動し、そこから「管理→ストラクチャー」を選択すると、ストラクチャーの管理画面が表示されます。ここからストラクチャーの新規追加や、既存のストラクチャーの編集ができます。



左側にWEBコンテンツに定義できる様々な項目が用意されています。ドラッグ&ドロップで項目を追加後、設定タブで表示値などを変更してストラクチャーを作成していきます。
先ほどの「社長あいさつ」のストラクチャーは以下のような定義にしました。



「内容」はHTML、「感想をお聞かせください」はページヘのリンクとなっています(これはサイト内のページへのリンクになります)。

テンプレートの追加

次に、作成したストラクチャーに対応するテンプレートを作成します。ストラクチャーの管理画面から「テンプレートの管理→追加」をクリックすると、テンプレートの作成/編集画面に遷移します。



 テンプレートの記述方法としてFreeMarker、拡張可能スタイルシート言語、Velocityが選択できるようになっています。今回はFreeMarkerで作成してみましょう。といっても、Liferay 6.2でのテンプレートエディタは高機能なので、ストラクチャーの要素を表示させるのは非常に簡単です。
ストラクチャーで定義した要素は左ペインに用意されているので、必要な場所でクリックするだけで表示可能な状態でテンプレートに追加されます。



テンプレートエディタ上部のコメントにもあるように、変数やメソッドの自動補完機能も備わっています。


ストラクチャーで定義した要素以外でWEBコンテンツが持っている値(例:タイトル)を表示させたい場合は以下のように記述します。

${.vars['reserved-article-title'].data}

FreeMarkerで記述する場合、変数名にダッシュ等が含まれる場合のFreeMarkerの記述方法Velocityの変数一覧が参考になるかと思います。

さて、今回の「社長あいさつ」はhtmlのタグなども含めて、最終的に以下の内容でテンプレートを記述しました。



デフォルト値の設定

ストラクチャーを利用したWEBコンテンツの各要素にはデフォルト値を設定することができます。この機能も試してみましょう。ストラクチャーの管理画面から、今度は「デフォルト値の編集」を選択します。



表示される画面から、先ほど作成した感想リンク付きのテンプレートをデフォルトのテンプレートとして設定します。そして、「感想をお聞かせください」のリンクからは感想メールフォームのページへ遷移したいので、リンクのデフォルト値を「感想フォーム」として保存します。これは同じサイトに予め作成してあるページです。




これで準備は完了です。あとはこのストラクチャーを利用して好きなだけWEBコンテンツを作成しましょう。

ストラクチャーを利用したWEBコンテンツの作成

WEBコンテンツを作成するときに「社長あいさつ」ストラクチャーを選ぶと、デフォルト値の設定が反映された状態でコンテンツ作成画面が表示されます。






内容を適当に入力して保存し、どのように表示されるか見てみると…




こんな感じに表示されました。タイトル、内容、リンクが存在します。タイトルは<h3>要素として強調されています。また、リンク部分はテンプレートで指定したクラスに合わせてcssを適用しているので、ボタン風に表示されています。
感想リンクをクリックすると、感想フォームのページに飛ぶことができます。




ストラクチャーとテンプレートのいいところ

今回のはかなり単純な例ですが、ストラクチャー・テンプレートを適切に定義するとコンテンツ作成の手間が大幅に省けることがおわかりいただけるかと思います。もちろんストラクチャーやテンプレートを準備するユーザとコンテンツの作成者を別のユーザにすることも可能なので、コンテンツ作成者には難しい知識は必要ありません。

また、ストラクチャーは作成時に親を指定することで既存のものを拡張して作成することができます。例えば今回の「社長あいさつ」を拡張し、アイキャッチ用の写真を追加するのも簡単です。





WEBコンテンツの管理画面ではストラクチャーごとの閲覧ができますし、アセットパブリッシャーで特定のストラクチャーを持つWEBコンテンツのみを表示させるように設定することもできるので、コンテンツ管理も捗ります。





おわりに

WEBコンテンツでストラクチャーとテンプレートを利用するメリットが伝わったでしょうか。同種類のコンテンツを複数作成することが予めわかっている場合はぜひ利用してみてください!