Upload
-
View
47.935
Download
0
Embed Size (px)
DESCRIPTION
NetCommonsモジュール小ネタ集 ・日誌モジュールへのfacebook「いいね!」ボタンの付け方 ・メールのスレッド対応クイックハック ・パブリックスペースの閲覧制限モジュール
Citation preview
NetCommons アドオンモジュール セミナー第4回目
0
※NetCommonsは[大学共同利用機関]情報・システム研究機構の登録商標です。
モジュール小ネタ集 <ダウンロード付き>
自己紹介
今回は自己紹介に凝ってみました。
(*^。^*)
1
自己紹介。その①
本名:永原 篤
ながはら あつし
ハンドル:永原 ひつじ
twitter@nagasheep
facebook:atsushi.nagahara
趣味:山登り
2
自己紹介。その②
株式会社オープンソース・ワークショップ 代表取締役
• データベースが必要なWebサイト構築が得意。NetCommonsをベースに、モジュールをアドオンしたりして開発。
http://opensource-workshop.jp
3
自己紹介。その③
内閣府認証NPO法人コモンズネット 理事
• NetCommonsの情報交換には、コモンズネットに入るしかないでしょう。
• ビジネスでNetCommonsを使われている皆さん、もちろん(^-^)コモンズネットの会員様ですよね?
http://www.commonsnet.org
4
自己紹介。その④
PHP技術者認定機構 副理事長 COO
• PHPの試験団体を運営しています。
• 協賛会社を募集しています。費用は無料。仕事でPHPをお使いなら、協賛して頂ければ、会社Webへリンクも貼りますよ。
• 学割もスタートしました。
http://www.phpexam.jp
5
自己紹介。その⑤
OSSコンソーシアム 理事兼CMSビジネス部会リーダ
• OSSを扱う企業が集まった業界団体です。
• 組み込みやビジネスアプリなど、いくつかの部会があります。
• 業界団体として情報発信することで、会社のブランド力を高めませんか。
• イベント:CMSインサイド。毎月開催中
http://osscons.jp
6
おまけ
みなさん、NetCommonsの公式キャラクター、陽菜ちゃんのツイッターはフォローしていますか?
7
陽菜ちゃんtwitter
8
@MidorikawaHina
• イベントなどの情報もつぶやいています。
• NetCommons情報のGetには欠かせません!
おまけ②
今年のNetCommonsユーザカンファレンスは一味違う!
http://www.netcommons.org/userconf/
ビジネスを意識したイベントになっています。事例紹介も多くある。無料です。
懇親会もたった1,000円!!
8/7(火)です。いますぐ申し込みを!
9
宣伝はやりきったので
いよいよ本題に入りたいと思います。
10
NetCommons アドオンモジュール セミナー第4回目
11
※NetCommonsは[大学共同利用機関]情報・システム研究機構の登録商標です。
日誌の facebook「いいね!」対応
facebook「いいね!」
最近、世間を騒がせているfacebook
みなさん、facebookって何?とかの説明は要らないですよね?
NetCommonsの日誌も、facebookへの投稿ボタンがあります。
しかし!facebookといえば「いいね!」
12
facebook「いいね!」
「いいね!」の効果があるとかないとかケースバイケースだとか、世間では分析記事もたくさんありますが。
単純ミーハー技術的興味で
「つけてみたいから付けてみました!」
ということで、方法の公開です。
13
「いいね!」ポイント
① … サンプル
② … 注意点
③ … appId
④ … OGP
⑤ … 日誌モジュールPHP側
⑥ … サイトのヘッダ部分
⑦ … 「いいね!」ボタンのジェネレート
⑧ … 日誌モジュール画面側
14
ポイント① … サンプル
弊社Webサイトで試しています。
15
この部分
ポイント② … 注意点
カスタマイズ例はNetCommons2.3.3.0です。たぶん、最新でも動くと思いますが、試してください。
(永原が忙しすぎて最新で試せなかった。申し訳ない。。。)
既存ファイルをカスタマイズします。アップデートなどは自己責任ですよ。
16
ポイント③ … appId
「いいね!」ボタンを付けるには、facebookにサイトの情報を登録し、appId(App ID/API Key)というものを取得する必要があります。
URLは以下。ここの詳しい情報はググってください。
https://developers.facebook.com/apps/
17
ポイント④ … OGP
OGPって何?
Open Graph Protocol
Webサイトの情報を表す方法の一つ。facebookはこの方法を採用している。
詳しくはググればいっぱい出てきます。
18
ポイント④ … OGPの動き
19
日誌詳細画面
OGP情報 HTMLの<head>タグ内
いいね!ボタン 日誌の詳細画面テンプレート
いいね!
ページ確認
詳細画面の PHPロジック 必要な情報を
画面に渡す
カスタマイズが必要なのは3ヵ所
appId
appId
ポイント⑤ … 日誌PHP
Journal_View_Main_Detailクラス
• webapp/modules/journal/view/main/detail
• カスタマイズ内容はソース見ながら。
• ポイントは以下2つの変数をテンプレートに渡しているだけ。
facebook_og_url
facebook_og_image
20
ポイント⑥ … ヘッダ部分
header.html ファイル
• webapp/templates/main
• カスタマイズ内容はソース見ながら。
• ポイントは以下
<html> タグの追加属性
<meta>で以下の情報を出力
og:locale、og:title、og:type、og:url、og:image、og:site_name、fb:app_id
21
ポイント⑦ …「いいね!」ボタン
「いいね!」ボタンへのリンクはfacebook内の以下のURLで生成できます。
http://developers.facebook.com/docs/reference/plugins/like/
いくつかの方式の出力がありますが、今回はiframe方式を使用しています。
22
ポイント⑧ … 日誌詳細画面
journal_view_main_item.html ファイル • webapp/modules/journal/templates/default
• 良い子はdefaultをコピーして、別テンプレートでやりましょう。
• カスタマイズ内容はソース見ながら。
• ポイントは以下
⑦で生成した「いいね!」ボタンを埋め込む
23
「いいね!」対応ここまで
24
さあ、時間は大丈夫かな?
NetCommons アドオンモジュール セミナー第4回目
25
※NetCommonsは[大学共同利用機関]情報・システム研究機構の登録商標です。
掲示板メールのスレッド対応
掲示板メールのスレッド対応
お題2つ目。
掲示板メールのスレッド対応
これは、以前2.3.3.0で実験した時の結果を報告します。
参照実装コードもあり。
26
結果イメージ(画面側)
27
画面側はカスタマイズしていません。
結果イメージ(メール側)
28
画面側と同じスレッド表示が出来てますね。
掲示板メールのスレッド対応
プロトコルの話があります。
さあ、これを眠らずに聞ける人は何人いるか!!w
セミナーでは「さらっと」やりますね(^^)
29
メールスレッド:目的
NetCommons には掲示板、日誌にメールでの通知機能がある。
これは非常に便利である。
しかし、このメールはスレッド対応していないため、記事の経緯を追い難い。
そこで、掲示板のメール送信機能をスレッド対応させてみた。
30
メールスレッド:実験結果
意図していた通りのスレッド対応が行えた。
ただし、複数のファイルにカスタマイズが必要であった。
31
メールスレッド:検討ポイント①
--- 記事周知のメールにスレッドが必要か
Webを見ればスレッドになっている、というのは確かなんですが、メールソフト内でもスレッド表示できるるのは、やっぱり便利かなと思います。
32
メールスレッド:検討ポイント②
--- メールを識別する Message-ID のフォーマット
RFC2822 を参考にします。
ユニークにする、という部分がポイント。
BASE_URLの値(NetCommons のURL)を使用します。
localhost の場合は、テストなどいろいろしていたら、スレッドがおかしくなる可能性もありますが、 localhostは特殊な環境ということでOK かなと。
33
メールスレッド:実験環境
// NetCommons バージョン
参考実装は 2.3.2.0 に対して行った。
34
メールスレッド:スレッドについて
Message-ID、In-Reply-To、References
RFC2822
http://www.ietf.org/rfc/rfc2822.txt
RFC2822 - 日本語翻訳されているページ
http://srgia.com/docs/rfc2822j.html
35
メールヘッダ拡大
36
NetCommons のメール送信処理
PHPMailer を使用している。
Version: 2.0.0 rc3
PHPMailer のメインとなる class.phpmailer.php はカスタマイズされていない。
37
Message-ID, In-Reply-To, References
--- 基本
RFC2822 を参考に実装する。
38
Message-ID
"Message-ID:" フィールドはユニークなメッセージ識別子を提供する。
これは、掲示板の場合、以下のように設定できる。
<bbs_[post_id]@[BASE_URL]>
[post_id] は掲示板のキー
[BASE_URL] はNetCommons のURL
例:<[email protected]/nc>
39
In-Reply-To
"In-Reply-To:" フィールドは、返信しようとしているメッセージの "Message-ID:" フィールドの内容を含む。
例:
<[email protected]/nc>
40
References
"References:" フィールドの内容は、親メッセージの "References:" フィールドの後に親メッセージの "Message-ID:" フィールドの内容を続けたもの。
例:
<[email protected]/nc> <[email protected]/nc> <[email protected]/nc>
41
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
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
掲示板メールのスレッド対応:完了
ちゃんと寝ずに聞いてた人は
ダウンロードしてね。
44
NetCommons アドオンモジュール セミナー第4回目
45
※NetCommonsは[大学共同利用機関]情報・システム研究機構の登録商標です。
パブリックスペースの 閲覧制限モジュール
まずは画面で
46
http://lime.opensource-workshop.jp/jumptest/
デモします!
非常に簡単なデモです。
肝は?
47
httpステータス
301 Moved Permanently
を返しているだけです。
肝のファイルとコード
48
pagejump¥view¥main¥init¥Init.class.php
header( "HTTP/1.1 301 Moved Permanently" );
header( "Location: " . $this->env['url'] );
ブロックが表示された時に動く部分です。
注意点①
49
現在のコードでは 301 固定です。
ブロックごとに選べるようにしたいんですが、今は時間が取れず(>_<)
用途に合わせて302(found)や307(Temporary Redirect)に変更してください。
注意点②
50
この方法はNetCommons的なルールに則っているわけではありません。
たまたま、NetCommonsが出力をバッファしてから処理しているので、NCがhttpレスポンスを返す前に、モジュールで勝手に処理してるだけです。
将来のバージョンアップでどうなるかはわからないですよ。ということ。
注意点③
51
モバイル対応していません。
モバイルではページが見えるので要注意。
モバイル管理で隠しページにしてください。
注意点④
52
ページ内の他のブロックを指定されたら見えます。
http://lime.opensource-workshop.jp/?action=announcement_view_main_init&block_id=70
NetCommonsは基本的に、ブロック単位でのアクセスが可能です。
注意点⑤
53
ここまでの注意点を理解頂き、その上で使えるとことにお使いください。
あえて見せたくはないが、ブロック指定までして来たら仕方なし。という用途を想定。
NetCommons アドオンモジュール セミナー第4回目
54
※NetCommonsは[大学共同利用機関]情報・システム研究機構の登録商標です。
ダウンロードURL
天の声
ちゃんと寝ずに聞いてた人か、 陽菜twitterをフォローしてくれた人は
ダウンロードしてね。
55
本日のセミナー資料
56
ソース関係
http://netcommons.opensource-workshop.jp
pptスライド
http://opensource-workshop.jp/press/
ありがとうございました
57
お問い合わせ&お仕事依頼は
株式会社オープンソース・ワークショップ
http://opensource-workshop.jp