Net commonsアドオンモジュールセミナー第4回小ネタ集

58
NetCommons アドオンモジュール セミナー第4回目 0 ※NetCommonsは[大学共同利用機関]情報・システム研究機構の登録商標です。 モジュール小ネタ集 <ダウンロード付き>
  • Upload

    -
  • Category

    Education

  • view

    47.940
  • download

    0

description

NetCommonsモジュール小ネタ集 ・日誌モジュールへのfacebook「いいね!」ボタンの付け方 ・メールのスレッド対応クイックハック ・パブリックスペースの閲覧制限モジュール

Transcript of Net commonsアドオンモジュールセミナー第4回小ネタ集

Page 1: Net commonsアドオンモジュールセミナー第4回小ネタ集

NetCommons アドオンモジュール セミナー第4回目

0

※NetCommonsは[大学共同利用機関]情報・システム研究機構の登録商標です。

モジュール小ネタ集 <ダウンロード付き>

Page 2: Net commonsアドオンモジュールセミナー第4回小ネタ集

自己紹介

今回は自己紹介に凝ってみました。

(*^。^*)

1

Page 3: Net commonsアドオンモジュールセミナー第4回小ネタ集

自己紹介。その①

本名:永原 篤

ながはら あつし

ハンドル:永原 ひつじ

twitter@nagasheep

facebook:atsushi.nagahara

趣味:山登り

2

Page 4: Net commonsアドオンモジュールセミナー第4回小ネタ集

自己紹介。その②

株式会社オープンソース・ワークショップ 代表取締役

• データベースが必要なWebサイト構築が得意。NetCommonsをベースに、モジュールをアドオンしたりして開発。

http://opensource-workshop.jp

3

Page 5: Net commonsアドオンモジュールセミナー第4回小ネタ集

自己紹介。その③

内閣府認証NPO法人コモンズネット 理事

• NetCommonsの情報交換には、コモンズネットに入るしかないでしょう。

• ビジネスでNetCommonsを使われている皆さん、もちろん(^-^)コモンズネットの会員様ですよね?

http://www.commonsnet.org

4

Page 6: Net commonsアドオンモジュールセミナー第4回小ネタ集

自己紹介。その④

PHP技術者認定機構 副理事長 COO

• PHPの試験団体を運営しています。

• 協賛会社を募集しています。費用は無料。仕事でPHPをお使いなら、協賛して頂ければ、会社Webへリンクも貼りますよ。

• 学割もスタートしました。

http://www.phpexam.jp

5

Page 7: Net commonsアドオンモジュールセミナー第4回小ネタ集

自己紹介。その⑤

OSSコンソーシアム 理事兼CMSビジネス部会リーダ

• OSSを扱う企業が集まった業界団体です。

• 組み込みやビジネスアプリなど、いくつかの部会があります。

• 業界団体として情報発信することで、会社のブランド力を高めませんか。

• イベント:CMSインサイド。毎月開催中

http://osscons.jp

6

Page 8: Net commonsアドオンモジュールセミナー第4回小ネタ集

おまけ

みなさん、NetCommonsの公式キャラクター、陽菜ちゃんのツイッターはフォローしていますか?

7

Page 9: Net commonsアドオンモジュールセミナー第4回小ネタ集

陽菜ちゃんtwitter

8

twitter

@MidorikawaHina

• イベントなどの情報もつぶやいています。

• NetCommons情報のGetには欠かせません!

Page 10: Net commonsアドオンモジュールセミナー第4回小ネタ集

おまけ②

今年のNetCommonsユーザカンファレンスは一味違う!

http://www.netcommons.org/userconf/

ビジネスを意識したイベントになっています。事例紹介も多くある。無料です。

懇親会もたった1,000円!!

8/7(火)です。いますぐ申し込みを!

9

Page 11: Net commonsアドオンモジュールセミナー第4回小ネタ集

宣伝はやりきったので

いよいよ本題に入りたいと思います。

10

Page 12: Net commonsアドオンモジュールセミナー第4回小ネタ集

NetCommons アドオンモジュール セミナー第4回目

11

※NetCommonsは[大学共同利用機関]情報・システム研究機構の登録商標です。

日誌の facebook「いいね!」対応

Page 13: Net commonsアドオンモジュールセミナー第4回小ネタ集

facebook「いいね!」

最近、世間を騒がせているfacebook

みなさん、facebookって何?とかの説明は要らないですよね?

NetCommonsの日誌も、facebookへの投稿ボタンがあります。

しかし!facebookといえば「いいね!」

12

Page 14: Net commonsアドオンモジュールセミナー第4回小ネタ集

facebook「いいね!」

「いいね!」の効果があるとかないとかケースバイケースだとか、世間では分析記事もたくさんありますが。

単純ミーハー技術的興味で

「つけてみたいから付けてみました!」

ということで、方法の公開です。

13

Page 15: Net commonsアドオンモジュールセミナー第4回小ネタ集

「いいね!」ポイント

① … サンプル

② … 注意点

③ … appId

④ … OGP

⑤ … 日誌モジュールPHP側

⑥ … サイトのヘッダ部分

⑦ … 「いいね!」ボタンのジェネレート

⑧ … 日誌モジュール画面側

14

Page 16: Net commonsアドオンモジュールセミナー第4回小ネタ集

ポイント① … サンプル

弊社Webサイトで試しています。

15

この部分

Page 17: Net commonsアドオンモジュールセミナー第4回小ネタ集

ポイント② … 注意点

カスタマイズ例はNetCommons2.3.3.0です。たぶん、最新でも動くと思いますが、試してください。

(永原が忙しすぎて最新で試せなかった。申し訳ない。。。)

既存ファイルをカスタマイズします。アップデートなどは自己責任ですよ。

16

Page 18: Net commonsアドオンモジュールセミナー第4回小ネタ集

ポイント③ … appId

「いいね!」ボタンを付けるには、facebookにサイトの情報を登録し、appId(App ID/API Key)というものを取得する必要があります。

URLは以下。ここの詳しい情報はググってください。

https://developers.facebook.com/apps/

17

Page 19: Net commonsアドオンモジュールセミナー第4回小ネタ集

ポイント④ … OGP

OGPって何?

Open Graph Protocol

Webサイトの情報を表す方法の一つ。facebookはこの方法を採用している。

詳しくはググればいっぱい出てきます。

18

Page 20: Net commonsアドオンモジュールセミナー第4回小ネタ集

ポイント④ … OGPの動き

19

日誌詳細画面

OGP情報 HTMLの<head>タグ内

いいね!ボタン 日誌の詳細画面テンプレート

facebook

いいね!

ページ確認

詳細画面の PHPロジック 必要な情報を

画面に渡す

カスタマイズが必要なのは3ヵ所

appId

appId

Page 21: Net commonsアドオンモジュールセミナー第4回小ネタ集

ポイント⑤ … 日誌PHP

Journal_View_Main_Detailクラス

• webapp/modules/journal/view/main/detail

• カスタマイズ内容はソース見ながら。

• ポイントは以下2つの変数をテンプレートに渡しているだけ。

facebook_og_url

facebook_og_image

20

Page 22: Net commonsアドオンモジュールセミナー第4回小ネタ集

ポイント⑥ … ヘッダ部分

header.html ファイル

• webapp/templates/main

• カスタマイズ内容はソース見ながら。

• ポイントは以下

<html> タグの追加属性

<meta>で以下の情報を出力

og:locale、og:title、og:type、og:url、og:image、og:site_name、fb:app_id

21

Page 23: Net commonsアドオンモジュールセミナー第4回小ネタ集

ポイント⑦ …「いいね!」ボタン

「いいね!」ボタンへのリンクはfacebook内の以下のURLで生成できます。

http://developers.facebook.com/docs/reference/plugins/like/

いくつかの方式の出力がありますが、今回はiframe方式を使用しています。

22

Page 24: Net commonsアドオンモジュールセミナー第4回小ネタ集

ポイント⑧ … 日誌詳細画面

journal_view_main_item.html ファイル • webapp/modules/journal/templates/default

• 良い子はdefaultをコピーして、別テンプレートでやりましょう。

• カスタマイズ内容はソース見ながら。

• ポイントは以下

⑦で生成した「いいね!」ボタンを埋め込む

23

Page 25: Net commonsアドオンモジュールセミナー第4回小ネタ集

「いいね!」対応ここまで

24

さあ、時間は大丈夫かな?

Page 26: Net commonsアドオンモジュールセミナー第4回小ネタ集

NetCommons アドオンモジュール セミナー第4回目

25

※NetCommonsは[大学共同利用機関]情報・システム研究機構の登録商標です。

掲示板メールのスレッド対応

Page 27: Net commonsアドオンモジュールセミナー第4回小ネタ集

掲示板メールのスレッド対応

お題2つ目。

掲示板メールのスレッド対応

これは、以前2.3.3.0で実験した時の結果を報告します。

参照実装コードもあり。

26

Page 28: Net commonsアドオンモジュールセミナー第4回小ネタ集

結果イメージ(画面側)

27

画面側はカスタマイズしていません。

Page 29: Net commonsアドオンモジュールセミナー第4回小ネタ集

結果イメージ(メール側)

28

画面側と同じスレッド表示が出来てますね。

Page 30: Net commonsアドオンモジュールセミナー第4回小ネタ集

掲示板メールのスレッド対応

プロトコルの話があります。

さあ、これを眠らずに聞ける人は何人いるか!!w

セミナーでは「さらっと」やりますね(^^)

29

Page 31: Net commonsアドオンモジュールセミナー第4回小ネタ集

メールスレッド:目的

NetCommons には掲示板、日誌にメールでの通知機能がある。

これは非常に便利である。

しかし、このメールはスレッド対応していないため、記事の経緯を追い難い。

そこで、掲示板のメール送信機能をスレッド対応させてみた。

30

Page 32: Net commonsアドオンモジュールセミナー第4回小ネタ集

メールスレッド:実験結果

意図していた通りのスレッド対応が行えた。

ただし、複数のファイルにカスタマイズが必要であった。

31

Page 33: Net commonsアドオンモジュールセミナー第4回小ネタ集

メールスレッド:検討ポイント①

--- 記事周知のメールにスレッドが必要か

Webを見ればスレッドになっている、というのは確かなんですが、メールソフト内でもスレッド表示できるるのは、やっぱり便利かなと思います。

32

Page 34: Net commonsアドオンモジュールセミナー第4回小ネタ集

メールスレッド:検討ポイント②

--- メールを識別する Message-ID のフォーマット

RFC2822 を参考にします。

ユニークにする、という部分がポイント。

BASE_URLの値(NetCommons のURL)を使用します。

localhost の場合は、テストなどいろいろしていたら、スレッドがおかしくなる可能性もありますが、 localhostは特殊な環境ということでOK かなと。

33

Page 35: Net commonsアドオンモジュールセミナー第4回小ネタ集

メールスレッド:実験環境

// NetCommons バージョン

参考実装は 2.3.2.0 に対して行った。

34

Page 36: Net commonsアドオンモジュールセミナー第4回小ネタ集

メールスレッド:スレッドについて

Message-ID、In-Reply-To、References

RFC2822

http://www.ietf.org/rfc/rfc2822.txt

RFC2822 - 日本語翻訳されているページ

http://srgia.com/docs/rfc2822j.html

35

Page 37: Net commonsアドオンモジュールセミナー第4回小ネタ集

メールヘッダ拡大

36

Page 38: Net commonsアドオンモジュールセミナー第4回小ネタ集

NetCommons のメール送信処理

PHPMailer を使用している。

Version: 2.0.0 rc3

PHPMailer のメインとなる class.phpmailer.php はカスタマイズされていない。

37

Page 39: Net commonsアドオンモジュールセミナー第4回小ネタ集

Message-ID, In-Reply-To, References

--- 基本

RFC2822 を参考に実装する。

38

Page 40: Net commonsアドオンモジュールセミナー第4回小ネタ集

Message-ID

"Message-ID:" フィールドはユニークなメッセージ識別子を提供する。

これは、掲示板の場合、以下のように設定できる。

<bbs_[post_id]@[BASE_URL]>

[post_id] は掲示板のキー

[BASE_URL] はNetCommons のURL

例:<[email protected]/nc>

39

Page 41: Net commonsアドオンモジュールセミナー第4回小ネタ集

In-Reply-To

"In-Reply-To:" フィールドは、返信しようとしているメッセージの "Message-ID:" フィールドの内容を含む。

例:

<[email protected]/nc>

40

Page 42: Net commonsアドオンモジュールセミナー第4回小ネタ集

References

"References:" フィールドの内容は、親メッセージの "References:" フィールドの後に親メッセージの "Message-ID:" フィールドの内容を続けたもの。

例:

<[email protected]/nc> <[email protected]/nc> <[email protected]/nc>

41

Page 43: Net commonsアドオンモジュールセミナー第4回小ネタ集

NetCommons 2.3.2.2 での参考実装①

以下、参考実装の圧縮ファイルに含まれています。

// 掲示板の共通コンポーネントにメールスレッド用ヘッダデータ(Message-ID、In-Reply-To、References)を生成して返す関数を追加

webapp/modules/bbs/components/View.class.php

function getMailThreadHeader() を追加

// 掲示板メール送信から、NetCommons メールコンポーネントのsend() を呼ぶ際にメールスレッド用ヘッダデータを渡す

webapp/modules/bbs/action/main/mail/Mail.class.php

42

Page 44: Net commonsアドオンモジュールセミナー第4回小ネタ集

NetCommons 2.3.2.2 での参考実装②

続き

// NetCommons メールコンポーネントから、PHPMailer のsend() を呼ぶ際にメールスレッド用ヘッダデータを渡す

webapp/components/mail/Main.class.php

// PHPMailer のsend(), CreateHeader() をカスタマイズして、メールヘッダにMessage-ID、In-Reply-To、References を設定する。

maple/includes/mail/phpmailer/class.phpmailer.php

43

Page 45: Net commonsアドオンモジュールセミナー第4回小ネタ集

掲示板メールのスレッド対応:完了

ちゃんと寝ずに聞いてた人は

ダウンロードしてね。

44

Page 46: Net commonsアドオンモジュールセミナー第4回小ネタ集

NetCommons アドオンモジュール セミナー第4回目

45

※NetCommonsは[大学共同利用機関]情報・システム研究機構の登録商標です。

パブリックスペースの 閲覧制限モジュール

Page 47: Net commonsアドオンモジュールセミナー第4回小ネタ集

まずは画面で

46

http://lime.opensource-workshop.jp/jumptest/

デモします!

非常に簡単なデモです。

Page 48: Net commonsアドオンモジュールセミナー第4回小ネタ集

肝は?

47

httpステータス

301 Moved Permanently

を返しているだけです。

Page 49: Net commonsアドオンモジュールセミナー第4回小ネタ集

肝のファイルとコード

48

pagejump¥view¥main¥init¥Init.class.php

header( "HTTP/1.1 301 Moved Permanently" );

header( "Location: " . $this->env['url'] );

ブロックが表示された時に動く部分です。

Page 50: Net commonsアドオンモジュールセミナー第4回小ネタ集

注意点①

49

現在のコードでは 301 固定です。

ブロックごとに選べるようにしたいんですが、今は時間が取れず(>_<)

用途に合わせて302(found)や307(Temporary Redirect)に変更してください。

Page 51: Net commonsアドオンモジュールセミナー第4回小ネタ集

注意点②

50

この方法はNetCommons的なルールに則っているわけではありません。

たまたま、NetCommonsが出力をバッファしてから処理しているので、NCがhttpレスポンスを返す前に、モジュールで勝手に処理してるだけです。

将来のバージョンアップでどうなるかはわからないですよ。ということ。

Page 52: Net commonsアドオンモジュールセミナー第4回小ネタ集

注意点③

51

モバイル対応していません。

モバイルではページが見えるので要注意。

モバイル管理で隠しページにしてください。

Page 53: Net commonsアドオンモジュールセミナー第4回小ネタ集

注意点④

52

ページ内の他のブロックを指定されたら見えます。

http://lime.opensource-workshop.jp/?action=announcement_view_main_init&block_id=70

NetCommonsは基本的に、ブロック単位でのアクセスが可能です。

Page 54: Net commonsアドオンモジュールセミナー第4回小ネタ集

注意点⑤

53

ここまでの注意点を理解頂き、その上で使えるとことにお使いください。

あえて見せたくはないが、ブロック指定までして来たら仕方なし。という用途を想定。

Page 55: Net commonsアドオンモジュールセミナー第4回小ネタ集

NetCommons アドオンモジュール セミナー第4回目

54

※NetCommonsは[大学共同利用機関]情報・システム研究機構の登録商標です。

ダウンロードURL

Page 56: Net commonsアドオンモジュールセミナー第4回小ネタ集

天の声

ちゃんと寝ずに聞いてた人か、 陽菜twitterをフォローしてくれた人は

ダウンロードしてね。

55

Page 57: Net commonsアドオンモジュールセミナー第4回小ネタ集

本日のセミナー資料

56

ソース関係

http://netcommons.opensource-workshop.jp

pptスライド

http://opensource-workshop.jp/press/

Page 58: Net commonsアドオンモジュールセミナー第4回小ネタ集

ありがとうございました

57

お問い合わせ&お仕事依頼は

株式会社オープンソース・ワークショップ

http://opensource-workshop.jp