<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>LANCARD.LAB｜ランカードコムのスタッフブログ</title>
	<atom:link href="http://www.lancard.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.lancard.com/blog</link>
	<description>LANCARD.COM STAFF BLOG</description>
	<lastBuildDate>Tue, 21 May 2013 08:13:56 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Roundcubeプラグイン　フックを設置する</title>
		<link>http://www.lancard.com/blog/2013/05/21/roundcube%e3%83%97%e3%83%a9%e3%82%b0%e3%82%a4%e3%83%b3%e3%80%80%e3%83%95%e3%83%83%e3%82%af%e3%82%92%e8%a8%ad%e7%bd%ae%e3%81%99%e3%82%8b/</link>
		<comments>http://www.lancard.com/blog/2013/05/21/roundcube%e3%83%97%e3%83%a9%e3%82%b0%e3%82%a4%e3%83%b3%e3%80%80%e3%83%95%e3%83%83%e3%82%af%e3%82%92%e8%a8%ad%e7%bd%ae%e3%81%99%e3%82%8b/#comments</comments>
		<pubDate>Tue, 21 May 2013 08:13:56 +0000</pubDate>
		<dc:creator>uchida</dc:creator>
				<category><![CDATA[Roundcube]]></category>

		<guid isPermaLink="false">http://www.lancard.com/blog/?p=2904</guid>
		<description><![CDATA[Roundcubeでフックを設置する方法を紹介します。 今回はsample_aプラグインにフックを設置し、それをsample_bから利用する例です。 sample_aは画面をもったプラグインでボタンをクリックしたら、フッ [...]]]></description>
			<content:encoded><![CDATA[<p>Roundcubeでフックを設置する方法を紹介します。</p>
<p>今回はsample_aプラグインにフックを設置し、それをsample_bから利用する例です。<br />
sample_aは画面をもったプラグインでボタンをクリックしたら、フックを実行し<br />
元の画面を再度表示するようにしています。</p>
<p>ソースは以下のようになります。<br />
sample_a.php</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> 
<span style="color: #000000; font-weight: bold;">class</span> sample_a <span style="color: #000000; font-weight: bold;">extends</span> rcube_plugin <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$rc</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">function</span> init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #666666; font-style: italic;">//rcmailオブジェクトを取得</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rc</span> <span style="color: #339933;">=</span> rcmail<span style="color: #339933;">::</span><span style="color: #004000;">get_instance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//ローカライズ対応</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">add_texts</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'localization/'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//タスクとしてsample_aを設定</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">register_task</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'sample_a'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//タスクバーにボタンを追加</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">add_button</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
				<span style="color: #0000ff;">'command'</span>    <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'sample_a'</span><span style="color: #339933;">,</span>
				<span style="color: #0000ff;">'label'</span>      <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'sample_a.sample'</span><span style="color: #339933;">,</span>
		<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'taskbar'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//sampleタスクの場合のみ、アクションのコールバックを登録</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rc</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">task</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">'sample_a'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">register_action</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'index'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'action'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">register_action</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'fook_test'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'action'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> action<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rc</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">action</span> <span style="color: #339933;">===</span> <span style="color: #0000ff;">'fook_test'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rc</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">plugins</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">exec_hook</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'sample_hook'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'data_a'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'hoge'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #990000;">error_log</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">print_r</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rc</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">output</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">send</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'sample_a.index'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>index.html</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&lt;roundcube:object name=&quot;doctype&quot; value=&quot;html5&quot; /&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;&lt;roundcube:object name=&quot;pagetitle&quot; /&gt;&lt;/title&gt;
&lt;roundcube:include file=&quot;/includes/links.html&quot; /&gt;
&lt;/head&gt;
&lt;body&gt;
&nbsp;
	&lt;roundcube:include file=&quot;/includes/header.html&quot; /&gt;
&nbsp;
	&lt;div id=&quot;mainscreen&quot;&gt;
&nbsp;
		&lt;roundcube:button href=&quot;?_task=sample_a&amp;amp;_action=fook_test&quot; type=&quot;link&quot; label=&quot;sample_a.fook_test&quot; title=&quot;sample_a.fook_test&quot; /&gt;
&nbsp;
	&lt;/div&gt;
&nbsp;
	&lt;roundcube:include file=&quot;/includes/footer.html&quot; /&gt;
&nbsp;
&lt;/body&gt;
&lt;/html&gt;</pre></td></tr></table></div>

<p>sample_b.php</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> 
<span style="color: #000000; font-weight: bold;">class</span> sample_b <span style="color: #000000; font-weight: bold;">extends</span> rcube_plugin <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">function</span> init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">add_hook</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'sample_hook'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'set_data'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> set_data<span style="color: #009900;">&#40;</span><span style="color: #000088;">$args</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #990000;">error_log</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">print_r</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$args</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'data_b'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;foo&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #000088;">$data</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>①フックを設置するコードは以下の部分になります。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rc</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">plugins</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">exec_hook</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'sample_hook'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'data_a'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'hoge'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>引数として配列を渡しています。</p>
<p>②フックを利用するコードは以下の部分になります。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">	<span style="color: #000000; font-weight: bold;">function</span> init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">add_hook</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'sample_hook'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'set_data'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> set_data<span style="color: #009900;">&#40;</span><span style="color: #000088;">$args</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #990000;">error_log</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">print_r</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$args</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'data_b'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;foo&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #000088;">$data</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>このような配列が渡されてきます。<br />
(<br />
　　[data_a] => hoge<br />
　　[abort] =><br />
)</p>
<p>渡された引数を処理して戻り値を返したりすることが出来ます。<br />
戻り値はこのようになります。<br />
(<br />
　　[data_b] => foo<br />
　　[data_a] => hoge<br />
　　[abort] =><br />
)</p>
<p>exec_hookの定義が以下のようになっているため、戻り値が配列の場合は自動的に<br />
渡された配列に足して返されます。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> exec_hook<span style="color: #009900;">&#40;</span><span style="color: #000088;">$hook</span><span style="color: #339933;">,</span> <span style="color: #000088;">$args</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">is_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$args</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
      <span style="color: #000088;">$args</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'arg'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$args</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000088;">$args</span> <span style="color: #339933;">+=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'abort'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">active_hook</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$hook</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#41;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">handlers</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$hook</span><span style="color: #009900;">&#93;</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$callback</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000088;">$ret</span> <span style="color: #339933;">=</span> <span style="color: #990000;">call_user_func</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$callback</span><span style="color: #339933;">,</span> <span style="color: #000088;">$args</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$ret</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #990000;">is_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ret</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
        <span style="color: #000088;">$args</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$ret</span> <span style="color: #339933;">+</span> <span style="color: #000088;">$args</span><span style="color: #339933;">;</span>
&nbsp;
      <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$args</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'abort'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>
        <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">active_hook</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$args</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<img src="http://www.lancard.com/blog/?ak_action=api_record_view&id=2904&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.lancard.com/blog/2013/05/21/roundcube%e3%83%97%e3%83%a9%e3%82%b0%e3%82%a4%e3%83%b3%e3%80%80%e3%83%95%e3%83%83%e3%82%af%e3%82%92%e8%a8%ad%e7%bd%ae%e3%81%99%e3%82%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Roundcubeプラグイン ユーザー情報の取得方法</title>
		<link>http://www.lancard.com/blog/2013/05/20/roundcube%e3%83%97%e3%83%a9%e3%82%b0%e3%82%a4%e3%83%b3-%e3%83%a6%e3%83%bc%e3%82%b6%e3%83%bc%e6%83%85%e5%a0%b1%e3%81%ae%e5%8f%96%e5%be%97%e6%96%b9%e6%b3%95/</link>
		<comments>http://www.lancard.com/blog/2013/05/20/roundcube%e3%83%97%e3%83%a9%e3%82%b0%e3%82%a4%e3%83%b3-%e3%83%a6%e3%83%bc%e3%82%b6%e3%83%bc%e6%83%85%e5%a0%b1%e3%81%ae%e5%8f%96%e5%be%97%e6%96%b9%e6%b3%95/#comments</comments>
		<pubDate>Mon, 20 May 2013 00:22:55 +0000</pubDate>
		<dc:creator>uchida</dc:creator>
				<category><![CDATA[Roundcube]]></category>

		<guid isPermaLink="false">http://www.lancard.com/blog/?p=2897</guid>
		<description><![CDATA[Roundcubeでのユーザー情報の取得方法について紹介します。 ①ユーザー情報 ユーザー情報の取得方法は以下のようになります。 1 2 3 $rc = rcmail::get_instance&#40;&#41;; $ [...]]]></description>
			<content:encoded><![CDATA[<p>Roundcubeでのユーザー情報の取得方法について紹介します。</p>
<p>①ユーザー情報<br />
ユーザー情報の取得方法は以下のようになります。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$rc</span> <span style="color: #339933;">=</span> rcmail<span style="color: #339933;">::</span><span style="color: #004000;">get_instance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$user_data</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$rc</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">user</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span><span style="color: #339933;">;</span>
<span style="color: #990000;">error_log</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">print_r</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$user_data</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>このような情報が取得できます。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">(
    [user_id] =&gt; 4
    [username] =&gt; foo
    [mail_host] =&gt; 192.168.15.117
    [alias] =&gt; 
    [created] =&gt; 2013-04-11 10:14:23
    [last_login] =&gt; 2013-05-17 07:45:24
    [language] =&gt; ja_JP
    [preferences] =&gt; a:5:{s:16:&quot;message_sort_col&quot;;s:7:&quot;subject&quot;;s:18:&quot;message_sort_order&quot;;s:3:&quot;ASC&quot;;s:8:&quot;timezone&quot;;s:4:&quot;auto&quot;;s:4:&quot;skin&quot;;s:5:&quot;larry&quot;;s:17:&quot;message_threading&quot;;a:0:{}}
)</pre></td></tr></table></div>

<p>②識別情報<br />
Roundcubeでは設定画面から識別情報を登録出来ます。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/img12.png" class="thickbox no_icon" rel="gallery-2897" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/img12-400x207.png" alt="" title="img1" width="400" height="207" class="aligncenter size-medium wp-image-2898" /></a></p>
<p>以下のようにして識別情報を取得出来ます。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$rc</span> <span style="color: #339933;">=</span> rcmail<span style="color: #339933;">::</span><span style="color: #004000;">get_instance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$identity</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$rc</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">user</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get_identity</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">error_log</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">print_r</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$identity</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">(
    [identity_id] =&gt; 4
    [user_id] =&gt; 4
    [changed] =&gt; 2013-05-17 12:28:06
    [del] =&gt; 0
    [standard] =&gt; 1
    [name] =&gt; テスト
    [organization] =&gt; bar
    [email] =&gt; foo@roundcube.com
    [reply-to] =&gt; hoge@roundcube.com
    [bcc] =&gt; test@roundcube.com
    [signature] =&gt; 署名
    [html_signature] =&gt; 0
)</pre></td></tr></table></div>

<p>③特定のユーザーの情報を取得する方法。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$rc</span> <span style="color: #339933;">=</span> rcmail<span style="color: #339933;">::</span><span style="color: #004000;">get_instance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$identity</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$rc</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">user</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get_identity</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>上記のようにユーザー情報を取得する場合、ログインユーザーの情報を取得します。</p>
<p>その理由は、rcmailクラスの188行目が以下のようになっているからです。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">    <span style="color: #666666; font-style: italic;">// create user object</span>
    <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">set_user</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> rcube_user<span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'user_id'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>ということで、Roundcubeのuser_idがわかれば、rcube_userクラスをインスタンス化し<br />
ユーザー情報やユーザーの識別情報を取得出来ます。</p>
<p>例えば、次のようになります。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">		<span style="color: #000088;">$user_id</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">4</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$user</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> rcube_user<span style="color: #009900;">&#40;</span><span style="color: #000088;">$user_id</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$user_data</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$user</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$user_identity</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$user</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get_identity</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">error_log</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">print_r</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$user_data</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">error_log</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">print_r</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$user_identity</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<img src="http://www.lancard.com/blog/?ak_action=api_record_view&id=2897&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.lancard.com/blog/2013/05/20/roundcube%e3%83%97%e3%83%a9%e3%82%b0%e3%82%a4%e3%83%b3-%e3%83%a6%e3%83%bc%e3%82%b6%e3%83%bc%e6%83%85%e5%a0%b1%e3%81%ae%e5%8f%96%e5%be%97%e6%96%b9%e6%b3%95/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Roundcubeプラグイン設定ファイルの利用方法</title>
		<link>http://www.lancard.com/blog/2013/05/17/roundcube%e3%83%97%e3%83%a9%e3%82%b0%e3%82%a4%e3%83%b3%e8%a8%ad%e5%ae%9a%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%81%ae%e5%88%a9%e7%94%a8%e6%96%b9%e6%b3%95/</link>
		<comments>http://www.lancard.com/blog/2013/05/17/roundcube%e3%83%97%e3%83%a9%e3%82%b0%e3%82%a4%e3%83%b3%e8%a8%ad%e5%ae%9a%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%81%ae%e5%88%a9%e7%94%a8%e6%96%b9%e6%b3%95/#comments</comments>
		<pubDate>Fri, 17 May 2013 04:17:26 +0000</pubDate>
		<dc:creator>uchida</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Roundcube]]></category>

		<guid isPermaLink="false">http://www.lancard.com/blog/?p=2890</guid>
		<description><![CDATA[Roundcubeプラグイン設定ファイルの利用方法を紹介します。 以下のように設定ファイルを用意します。 ソースは以下のようになります。 sample.php 1 2 3 4 5 6 7 8 9 10 11 12 13  [...]]]></description>
			<content:encoded><![CDATA[<p>Roundcubeプラグイン設定ファイルの利用方法を紹介します。</p>
<p>以下のように設定ファイルを用意します。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/img11.png" class="thickbox no_icon" rel="gallery-2890" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/img11.png" alt="" title="img1" width="189" height="108" class="aligncenter size-full wp-image-2893" /></a></p>
<p>ソースは以下のようになります。</p>
<p>sample.php</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000000; font-weight: bold;">class</span> sample <span style="color: #000000; font-weight: bold;">extends</span> rcube_plugin <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$rc</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span><span style="color: #000088;">$api</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		parent<span style="color: #339933;">::</span>__construct<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span><span style="color: #000088;">$api</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//rcmailオブジェクトを取得</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rc</span> <span style="color: #339933;">=</span> rcmail<span style="color: #339933;">::</span><span style="color: #004000;">get_instance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//設定ファイルをロード</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">load_config</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'config/config.inc.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">function</span> init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$name</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rc</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">config</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'sample.user'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">error_log</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'name:'</span><span style="color: #339933;">.</span><span style="color: #000088;">$name</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>config.inc.php</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000088;">$rcmail_config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'sample.user'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'foo'</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>割と簡単に使えるようです。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rc</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">config</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'sample.user'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>ここのconfigの実態はrcube_configオブジェクトになります。<br />
getメソッドの第二引数は値が取得出来なかった場合のデフォルト値になります。</p>
<p>注意点としては</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
parent<span style="color: #339933;">::</span>__construct<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span><span style="color: #000088;">$api</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>コンストラクタの中で親クラスであるrcube_pluginのコンストラクタを<br />
必ず呼び出す必要があります。</p>
<p>rcube_pluginクラスのコンストラクタは以下のようになっています。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #000088;">$api</span><span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span> <span style="color: #339933;">=</span> <span style="color: #990000;">get_class</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">api</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$api</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">home</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$api</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">dir</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">urlbase</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$api</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">url</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/'</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>homeディレクトリなどの値を設定しています。</p>
<p>そして、rcube_pluginクラスのload_configメソッドは以下のようになっています。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> load_config<span style="color: #009900;">&#40;</span><span style="color: #000088;">$fname</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'config.inc.php'</span><span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$fpath</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">home</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'/'</span><span style="color: #339933;">.</span><span style="color: #000088;">$fname</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$rcmail</span> <span style="color: #339933;">=</span> rcmail<span style="color: #339933;">::</span><span style="color: #004000;">get_instance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">is_file</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fpath</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #339933;">!</span><span style="color: #000088;">$rcmail</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">config</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">load_from_file</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fpath</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      raise_error<span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'code'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">527</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'type'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'php'</span><span style="color: #339933;">,</span>
        <span style="color: #0000ff;">'file'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900; font-weight: bold;">__FILE__</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'line'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900; font-weight: bold;">__LINE__</span><span style="color: #339933;">,</span>
        <span style="color: #0000ff;">'message'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;Failed to load config from <span style="color: #006699; font-weight: bold;">$fpath</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>ここで設定ファイルの場所を取得するためにhome変数を使用しているため<br />
rcube_pluginクラスのコンストラクタを呼び出していないと設定ファイルを取得出来なくなります。</p>
<img src="http://www.lancard.com/blog/?ak_action=api_record_view&id=2890&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.lancard.com/blog/2013/05/17/roundcube%e3%83%97%e3%83%a9%e3%82%b0%e3%82%a4%e3%83%b3%e8%a8%ad%e5%ae%9a%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%81%ae%e5%88%a9%e7%94%a8%e6%96%b9%e6%b3%95/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Roundcubeプラグインからメール送信</title>
		<link>http://www.lancard.com/blog/2013/05/16/roundcube%e3%83%97%e3%83%a9%e3%82%b0%e3%82%a4%e3%83%b3%e3%81%8b%e3%82%89%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1/</link>
		<comments>http://www.lancard.com/blog/2013/05/16/roundcube%e3%83%97%e3%83%a9%e3%82%b0%e3%82%a4%e3%83%b3%e3%81%8b%e3%82%89%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1/#comments</comments>
		<pubDate>Thu, 16 May 2013 05:05:38 +0000</pubDate>
		<dc:creator>uchida</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Roundcube]]></category>

		<guid isPermaLink="false">http://www.lancard.com/blog/?p=2885</guid>
		<description><![CDATA[Roundcubeプラグインからメール送信出来たら、色々な可能性が広がるので調べてみました。 ソースは以下のようになります。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [...]]]></description>
			<content:encoded><![CDATA[<p>Roundcubeプラグインからメール送信出来たら、色々な可能性が広がるので調べてみました。</p>
<p>ソースは以下のようになります。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000000; font-weight: bold;">class</span> sample <span style="color: #000000; font-weight: bold;">extends</span> rcube_plugin <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$rc</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">function</span> init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #666666; font-style: italic;">//rcmailオブジェクトを取得</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rc</span> <span style="color: #339933;">=</span> rcmail<span style="color: #339933;">::</span><span style="color: #004000;">get_instance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//ローカライズ対応</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">add_texts</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'localization/'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//タスクとしてsampleを設定</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">register_task</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'sample'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//タスクバーにボタンを追加</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">add_button</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
			<span style="color: #0000ff;">'command'</span>    <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'sample'</span><span style="color: #339933;">,</span>
			<span style="color: #0000ff;">'label'</span>      <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'sample.sample'</span><span style="color: #339933;">,</span>
		<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'taskbar'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//sampleタスクの場合のみ、アクションのコールバックを登録</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rc</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">task</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">'sample'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">register_action</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'index'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'index'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">register_action</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'send_mail'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'send_mail'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> index<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rc</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">output</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">send</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'sample.index'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> send_mail<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$CONFIG</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$message_charset</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rc</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">output</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get_charset</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">//rcube_html_pageオブジェクトの持っている、charsetを取得します。</span>
		<span style="color: #000088;">$flowed</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rc</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">config</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'send_format_flowed'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000088;">$from</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'foo@roundcube.com'</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$to</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'bar@roundcube.com'</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000088;">$headers</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
			<span style="color: #0000ff;">'Date'</span> <span style="color: #339933;">=&gt;</span> rcmail_user_date<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
			<span style="color: #0000ff;">'From'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$from</span><span style="color: #339933;">,</span>
			<span style="color: #0000ff;">'To'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$to</span><span style="color: #339933;">,</span>
			<span style="color: #0000ff;">'Message-ID'</span> <span style="color: #339933;">=&gt;</span> rcmail_gen_message_id<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
			<span style="color: #0000ff;">'User-Agent'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$CONFIG</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'useragent'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
			<span style="color: #0000ff;">'Subject'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'テストメール'</span><span style="color: #339933;">,</span>
			<span style="color: #0000ff;">'X-Sender'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$to</span><span style="color: #339933;">,</span>
		<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$mail_mime</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Mail_mime<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$mail_mime</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">headers</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$headers</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//$mail_mime-&gt;setTXTBody('こんにちは');</span>
		<span style="color: #000088;">$mail_mime</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setHTMLBody</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'こんにちは'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//ASCII文字か判定</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/[^\x00-\x7F]/'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$mail_mime</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getTXTBody</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$transfer_encoding</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rc</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">config</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'force_7bit'</span><span style="color: #009900;">&#41;</span> ? <span style="color: #0000ff;">'quoted-printable'</span> <span style="color: #339933;">:</span> <span style="color: #0000ff;">'8bit'</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span><span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$transfer_encoding</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'7bit'</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//文字コードなどヘッダフィールドの設定</span>
		<span style="color: #000088;">$mail_mime</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setParam</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'text_encoding'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$transfer_encoding</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$mail_mime</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setParam</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'html_encoding'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'quoted-printable'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$mail_mime</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setParam</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'head_encoding'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'quoted-printable'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$mail_mime</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setParam</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'head_charset'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$message_charset</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$mail_mime</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setParam</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'html_charset'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$message_charset</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$mail_mime</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setParam</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'text_charset'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$message_charset</span> <span style="color: #339933;">.</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$flowed</span> ? <span style="color: #0000ff;">&quot;;<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span> format=flowed&quot;</span> <span style="color: #339933;">:</span> <span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//ヘッダ情報の配列をテキスト形式に変換します。</span>
		<span style="color: #000088;">$smtp_headers</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$mail_mime</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">txtHeaders</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$headers</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">is_object</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rc</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">smtp</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #666666; font-style: italic;">//rcmailオブジェクトにrcube_smtpクラスのオブジェクトがない場合、生成します。</span>
			<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rc</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">smtp_init</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//メールを送信します。</span>
		<span style="color: #000088;">$sent</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rc</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">smtp</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">send_mail</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$from</span><span style="color: #339933;">,</span> <span style="color: #000088;">$to</span><span style="color: #339933;">,</span> <span style="color: #000088;">$smtp_headers</span><span style="color: #339933;">,</span> <span style="color: #000088;">$mail_mime</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getMessageBody</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//必要な場合以下の情報で後処理をする。</span>
		<span style="color: #666666; font-style: italic;">//$smtp_response = $this-&gt;rc-&gt;smtp-&gt;get_response();</span>
		<span style="color: #666666; font-style: italic;">//$smtp_error = $this-&gt;rc-&gt;smtp-&gt;get_error();</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//元の画面を再表示</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">index</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>/roundcuberoot/program/steps/mail/sendmail.incを参考に作成しています。<br />
この内容でほとんどのメールは送信可能かと思います。<br />
添付ファイルをつけたメール送信や画像を含んだメールなどはさらに処理が必要になります。</p>
<img src="http://www.lancard.com/blog/?ak_action=api_record_view&id=2885&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.lancard.com/blog/2013/05/16/roundcube%e3%83%97%e3%83%a9%e3%82%b0%e3%82%a4%e3%83%b3%e3%81%8b%e3%82%89%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Roundcubeプラグインの作り方② ～画面のあるプラグイン編～</title>
		<link>http://www.lancard.com/blog/2013/05/15/roundcube%e3%83%97%e3%83%a9%e3%82%b0%e3%82%a4%e3%83%b3%e3%81%ae%e4%bd%9c%e3%82%8a%e6%96%b9%e2%91%a1-%ef%bd%9e%e7%94%bb%e9%9d%a2%e3%81%ae%e3%81%82%e3%82%8b%e3%83%97%e3%83%a9%e3%82%b0%e3%82%a4%e3%83%b3/</link>
		<comments>http://www.lancard.com/blog/2013/05/15/roundcube%e3%83%97%e3%83%a9%e3%82%b0%e3%82%a4%e3%83%b3%e3%81%ae%e4%bd%9c%e3%82%8a%e6%96%b9%e2%91%a1-%ef%bd%9e%e7%94%bb%e9%9d%a2%e3%81%ae%e3%81%82%e3%82%8b%e3%83%97%e3%83%a9%e3%82%b0%e3%82%a4%e3%83%b3/#comments</comments>
		<pubDate>Wed, 15 May 2013 01:50:46 +0000</pubDate>
		<dc:creator>uchida</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Roundcube]]></category>

		<guid isPermaLink="false">http://www.lancard.com/blog/?p=2871</guid>
		<description><![CDATA[今回は、Roundcubeプラグインとして、画面のあるプラグインの作り方を紹介します。 まず、初めにフォルダ構成は以下のようになります。 ソースの内容は以下のようになります。 sample.php 1 2 3 4 5 6 [...]]]></description>
			<content:encoded><![CDATA[<p>今回は、Roundcubeプラグインとして、画面のあるプラグインの作り方を紹介します。</p>
<p>まず、初めにフォルダ構成は以下のようになります。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/img1.png" class="thickbox no_icon" rel="gallery-2871" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/img1.png" alt="" title="img1" width="218" height="158" class="aligncenter size-full wp-image-2873" /></a><br />
ソースの内容は以下のようになります。<br />
sample.php</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000000; font-weight: bold;">class</span> sample <span style="color: #000000; font-weight: bold;">extends</span> rcube_plugin <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$rc</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">function</span> init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #666666; font-style: italic;">//rcmailオブジェクトを取得</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rc</span> <span style="color: #339933;">=</span> rcmail<span style="color: #339933;">::</span><span style="color: #004000;">get_instance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//ローカライズ対応</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">add_texts</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'localization/'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">//タスクとしてsampleを設定</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">register_task</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'sample'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">//タスクバーにボタンを追加</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">add_button</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
			<span style="color: #0000ff;">'command'</span>    <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'sample'</span><span style="color: #339933;">,</span>
			<span style="color: #0000ff;">'label'</span>      <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'sample.sample'</span><span style="color: #339933;">,</span>
		<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'taskbar'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//sampleタスクの場合のみ、アクションのコールバックを登録</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rc</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">task</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">'sample'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">register_action</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'index'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'index'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">register_action</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'test'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'test'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> index<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rc</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">output</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">send</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'sample.index'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> test<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rc</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">output</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">send</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'sample.test'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>index.html</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&lt;roundcube:object name=&quot;doctype&quot; value=&quot;html5&quot; /&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;&lt;roundcube:object name=&quot;pagetitle&quot; /&gt;&lt;/title&gt;
&lt;roundcube:include file=&quot;/includes/links.html&quot; /&gt;
&lt;/head&gt;
&lt;body&gt;
&nbsp;
	&lt;roundcube:include file=&quot;/includes/header.html&quot; /&gt;
&nbsp;
	&lt;div id=&quot;mainscreen&quot;&gt;
&nbsp;
		&lt;div class=&quot;toolbar&quot; style=&quot;margin-bottom:10px;&quot;&gt;
			&lt;roundcube:button name=&quot;index&quot; href=&quot;?_task=sample&quot; type=&quot;link&quot; label=&quot;sample.index&quot; title=&quot;sample.index&quot; /&gt;
			&lt;roundcube:button name=&quot;test&quot; href=&quot;?_task=sample&amp;amp;_action=test&quot; type=&quot;link&quot; label=&quot;sample.test&quot; title=&quot;sample.test&quot; /&gt;
		&lt;/div&gt;
&nbsp;
		初期画面
	&lt;/div&gt;
&nbsp;
	&lt;roundcube:include file=&quot;/includes/footer.html&quot; /&gt;
&nbsp;
&lt;/body&gt;
&lt;/html&gt;</pre></td></tr></table></div>

<p>test.html</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&lt;roundcube:object name=&quot;doctype&quot; value=&quot;html5&quot; /&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;&lt;roundcube:object name=&quot;pagetitle&quot; /&gt;&lt;/title&gt;
&lt;roundcube:include file=&quot;/includes/links.html&quot; /&gt;
&lt;/head&gt;
&lt;body&gt;
&nbsp;
	&lt;roundcube:include file=&quot;/includes/header.html&quot; /&gt;
&nbsp;
	&lt;div id=&quot;mainscreen&quot;&gt;
&nbsp;
		&lt;div class=&quot;toolbar&quot; style=&quot;margin-bottom:10px;&quot;&gt;
			&lt;roundcube:button name=&quot;index&quot; href=&quot;?_task=sample&quot; type=&quot;link&quot; label=&quot;sample.index&quot; title=&quot;sample.index&quot; /&gt;
			&lt;roundcube:button name=&quot;test&quot; href=&quot;?_task=sample&amp;amp;_action=test&quot; type=&quot;link&quot; label=&quot;sample.test&quot; title=&quot;sample.test&quot; /&gt;
		&lt;/div&gt;
&nbsp;
		テスト画面
	&lt;/div&gt;
&nbsp;
	&lt;roundcube:include file=&quot;/includes/footer.html&quot; /&gt;
&nbsp;
&lt;/body&gt;
&lt;/html&gt;</pre></td></tr></table></div>

<p>ja_JP.inc</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000088;">$labels</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$labels</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'sample'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'サンプル'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$labels</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'index'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'初期画面'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$labels</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'test'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'テスト画面'</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>この状態でこのように動きます。<br />
初期画面<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/img5.png" class="thickbox no_icon" rel="gallery-2871" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/img5-400x100.png" alt="" title="img5" width="400" height="100" class="aligncenter size-medium wp-image-2880" /></a><br />
テスト画面<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/img4.png" class="thickbox no_icon" rel="gallery-2871" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/img4-400x86.png" alt="" title="img4" width="400" height="86" class="aligncenter size-medium wp-image-2879" /></a><br />
ここからはソースの説明になります。</p>
<p>①全てのリクエストは、プラグインクラスが受け付けます。<br />
　　プラグインクラスとは、rcube_pluginを継承したクラスになります。<br />
　　今回の場合、sampleクラスになります。</p>
<p>②タスクとアクション<br />
　　Roundcubeにはタスクとアクションの概念があります。<br />
　　１つのプラグインの中に１つのタスクがあり、複数のアクションがあるイメージになります。<br />
　　今回の場合は、sampleタスクの中にindexアクションとtestアクションがある状態になります。</p>
<p>　　例えば、「http://roundcube.com/?_task=sample&#038;_action=test」のようにアクセスすると<br />
　　タスクはsampleで、アクションはtestという指定で動作します。<br />
　　「http://roundcube.com/?_task=sample」このようなURLの場合<br />
　　アクションは何もついていませんので、indexというアクションが自動的に付加されます。</p>
<p>③rcmailオブジェクト</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rc</span> <span style="color: #339933;">=</span> rcmail<span style="color: #339933;">::</span><span style="color: #004000;">get_instance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>　　Roundcubeの様々な情報を持っているオブジェクトになります。<br />
　　ここにタスクとアクションの情報も入っていますので、メンバ変数に保持します。</p>
<p>④コールバックの登録<br />
　　あるアクションが指定されたときに、どのメソッドがコールされるかを登録します。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">	<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">register_action</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'index'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'index'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>	この場合はindexというアクションが指定されたら、<br />
	$thisの中にあるindexメソッドをコールするという登録方法になります。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/img3.png" class="thickbox no_icon" rel="gallery-2871" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/img3-400x227.png" alt="" title="img3" width="400" height="227" class="aligncenter size-medium wp-image-2874" /></a></p>
<p>⑤テンプレート表示</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">	<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rc</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">output</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">send</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'sample.index'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>	上記のように記述することで、sampleタスク内にあるindex.htmlを表示するようにします。</p>
<img src="http://www.lancard.com/blog/?ak_action=api_record_view&id=2871&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.lancard.com/blog/2013/05/15/roundcube%e3%83%97%e3%83%a9%e3%82%b0%e3%82%a4%e3%83%b3%e3%81%ae%e4%bd%9c%e3%82%8a%e6%96%b9%e2%91%a1-%ef%bd%9e%e7%94%bb%e9%9d%a2%e3%81%ae%e3%81%82%e3%82%8b%e3%83%97%e3%83%a9%e3%82%b0%e3%82%a4%e3%83%b3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse RCPの作り方</title>
		<link>http://www.lancard.com/blog/2013/05/06/eclipse-rcp%e3%81%ae%e4%bd%9c%e3%82%8a%e6%96%b9/</link>
		<comments>http://www.lancard.com/blog/2013/05/06/eclipse-rcp%e3%81%ae%e4%bd%9c%e3%82%8a%e6%96%b9/#comments</comments>
		<pubDate>Mon, 06 May 2013 10:07:48 +0000</pubDate>
		<dc:creator>uchida</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.lancard.com/blog/?p=2810</guid>
		<description><![CDATA[Eclipse RCPの作り方を紹介します。 (といっても、久しぶりに作ろうと思ったら忘れていたので 今度は忘れないように自分のためのログですが・・。) ①Eclipse RCP 　　Eclipse Rich Clien [...]]]></description>
			<content:encoded><![CDATA[<p>Eclipse RCPの作り方を紹介します。</p>
<p>(といっても、久しぶりに作ろうと思ったら忘れていたので<br />
今度は忘れないように自分のためのログですが・・。)</p>
<p>①Eclipse RCP<br />
　　Eclipse Rich Client Platformの略で、EclipseとJavaの資産が<br />
　　使えることが利点になります。</p>
<p>　　さらに、一度ソースを書くとWindows Mac Linuxなど<br />
　　様々なOS用にコンパイルすることが出来ます。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/0.png" class="thickbox no_icon" rel="gallery-2810" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/0-400x111.png" alt="" title="0" width="400" height="111" class="aligncenter size-medium wp-image-2811" /></a></p>
<p>②プラグインプロジェクトの作成<br />
　　Eclipseには内蔵ブラウザがあるので、ブラウザを使ったものを作ってみます。</p>
<p>　　1.プラグインプロジェクトを選択します。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/1.png" class="thickbox no_icon" rel="gallery-2810" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/1-400x276.png" alt="" title="1" width="400" height="276" class="aligncenter size-medium wp-image-2812" /></a><br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/2.png" class="thickbox no_icon" rel="gallery-2810" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/2-336x400.png" alt="" title="2" width="336" height="400" class="aligncenter size-medium wp-image-2814" /></a><br />
　　2.リッチクライアントアプリケーションを作成の部分は「はい」を選択して下さい。<br />
　　　「いいえ」を選択するとEclipseプラグインになります。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/3.png" class="thickbox no_icon" rel="gallery-2810" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/3-334x400.png" alt="" title="3" width="334" height="400" class="aligncenter size-medium wp-image-2815" /></a><br />
　　3.特に機能はいらないので「Hello RCP」を選択します。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/4.png" class="thickbox no_icon" rel="gallery-2810" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/4-338x400.png" alt="" title="4" width="338" height="400" class="aligncenter size-medium wp-image-2816" /></a></p>
<p>③とりあえず、起動する。</p>
<p>　　右下にあるテストの項目の、「Eclipseアプリケーションの起動」をクリックします。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/2-11.png" class="thickbox no_icon" rel="gallery-2810" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/2-11-400x126.png" alt="" title="2-1" width="400" height="126" class="aligncenter size-medium wp-image-2817" /></a><br />
　　何も無い画面だけが表示されます。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/2-2.png" class="thickbox no_icon" rel="gallery-2810" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/2-2-400x227.png" alt="" title="2-2" width="400" height="227" class="aligncenter size-medium wp-image-2818" /></a></p>
<p>④ブラウザ表示用にViewを追加します。<br />
　　1.plugin.xmlを開きます。<br />
　　2.拡張タブを選択します。<br />
　　3.追加ボタンをクリックします。<br />
　　4.「org.eclipse.ui.views」を追加します。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/4-1.png" class="thickbox no_icon" rel="gallery-2810" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/4-1-290x400.png" alt="" title="4-1" width="290" height="400" class="aligncenter size-medium wp-image-2824" /></a><br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/4-2.png" class="thickbox no_icon" rel="gallery-2810" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/4-2.png" alt="" title="4-2" width="372" height="90" class="aligncenter size-full wp-image-2825" /></a><br />
　　5.追加された「org.eclipse.ui.views」を右クリックして<br />
　　　以下のようにviewを選択します。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/4-3.png" class="thickbox no_icon" rel="gallery-2810" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/4-3-400x279.png" alt="" title="4-3" width="400" height="279" class="aligncenter size-medium wp-image-2828" /></a><br />
　　6.追加されたviewを選択して以下のように入力します。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/4-4.png" class="thickbox no_icon" rel="gallery-2810" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/4-4-400x144.png" alt="" title="4-4" width="400" height="144" class="aligncenter size-medium wp-image-2829" /></a><br />
　　7.以下のように「com.lancard.mybrowser.view.MyBrowserView」クラスを作成します。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">com.lancard.mybrowser.view</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.swt.SWT</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.swt.browser.Browser</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.swt.layout.RowData</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.swt.layout.RowLayout</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.swt.widgets.Composite</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.ui.part.ViewPart</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> MyBrowserView <span style="color: #000000; font-weight: bold;">extends</span> ViewPart <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000000; font-weight: bold;">final</span> <span style="color: #003399;">String</span> ID <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;com.lancard.mybrowser.view.MyBrowserView&quot;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">private</span> Browser browser <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> createPartControl<span style="color: #009900;">&#40;</span><span style="color: #003399;">Composite</span> parent<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #003399;">Composite</span> top <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Composite</span><span style="color: #009900;">&#40;</span>parent, SWT.<span style="color: #006633;">NONE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		RowLayout layout <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> RowLayout<span style="color: #009900;">&#40;</span>SWT.<span style="color: #006633;">VERTICAL</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		layout.<span style="color: #006633;">wrap</span> <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
		top.<span style="color: #006633;">setLayout</span><span style="color: #009900;">&#40;</span>layout<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		browser<span style="color: #009900;">&#40;</span>top<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">void</span> browser<span style="color: #009900;">&#40;</span><span style="color: #003399;">Composite</span> top<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #003399;">Composite</span> obj <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Composite</span><span style="color: #009900;">&#40;</span>top, SWT.<span style="color: #006633;">NONE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		RowLayout layout <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> RowLayout<span style="color: #009900;">&#40;</span>SWT.<span style="color: #006633;">HORIZONTAL</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		layout.<span style="color: #006633;">wrap</span> <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
		obj.<span style="color: #006633;">setLayout</span><span style="color: #009900;">&#40;</span>layout<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		browser <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Browser<span style="color: #009900;">&#40;</span>obj,SWT.<span style="color: #006633;">BORDER</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		browser.<span style="color: #006633;">setUrl</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;http://www.google.co.jp&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		browser.<span style="color: #006633;">setLayoutData</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> RowData<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">800</span>,<span style="color: #cc66cc;">500</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> setFocus<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>⑤ブラウザを表示するコマンドを追加します。<br />
　　1.plugin.xmlを開きます。<br />
　　2.拡張タブを選択します。<br />
　　3.追加ボタンをクリックします。<br />
　　4.「org.eclipse.ui.commands」を追加します。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/5-1.png" class="thickbox no_icon" rel="gallery-2810" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/5-1-290x400.png" alt="" title="5-1" width="290" height="400" class="aligncenter size-medium wp-image-2832" /></a><br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/5-2.png" class="thickbox no_icon" rel="gallery-2810" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/5-2.png" alt="" title="5-2" width="371" height="115" class="aligncenter size-full wp-image-2833" /></a><br />
　　5.追加された「org.eclipse.ui.commands」を右クリックして<br />
　　　以下のようにcommandを選択します。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/5-3.png" class="thickbox no_icon" rel="gallery-2810" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/5-3-400x222.png" alt="" title="5-3" width="400" height="222" class="aligncenter size-medium wp-image-2834" /></a><br />
　　6.追加されたcommandを選択して以下のように入力します。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/5-4.png" class="thickbox no_icon" rel="gallery-2810" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/5-4-400x147.png" alt="" title="5-4" width="400" height="147" class="aligncenter size-medium wp-image-2835" /></a><br />
　　7.以下のように「com.lancard.mybrowser.action.MyBrowserAction」クラスを作成します。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">com.lancard.mybrowser.action</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.jface.action.Action</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.jface.dialogs.MessageDialog</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.ui.IWorkbenchPage</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.ui.IWorkbenchWindow</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.ui.PartInitException</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.lancard.mybrowser.ICommandIds</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> MyBrowserAction <span style="color: #000000; font-weight: bold;">extends</span> <span style="color: #003399;">Action</span> <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">final</span> IWorkbenchWindow window<span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">int</span> instanceNum <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">final</span> <span style="color: #003399;">String</span> viewId<span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> MyBrowserAction<span style="color: #009900;">&#40;</span>IWorkbenchWindow window, <span style="color: #003399;">String</span> label, <span style="color: #003399;">String</span> viewId<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">window</span> <span style="color: #339933;">=</span> window<span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">viewId</span> <span style="color: #339933;">=</span> viewId<span style="color: #339933;">;</span>
        setText<span style="color: #009900;">&#40;</span>label<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		setId<span style="color: #009900;">&#40;</span>ICommandIds.<span style="color: #006633;">CMD_MY_BROWSER</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> run<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>window <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>	
			<span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
				window.<span style="color: #006633;">getActivePage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">showView</span><span style="color: #009900;">&#40;</span>viewId, <span style="color: #003399;">Integer</span>.<span style="color: #006633;">toString</span><span style="color: #009900;">&#40;</span>instanceNum<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>, IWorkbenchPage.<span style="color: #006633;">VIEW_ACTIVATE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span>PartInitException e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				MessageDialog.<span style="color: #006633;">openError</span><span style="color: #009900;">&#40;</span>window.<span style="color: #006633;">getShell</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>, <span style="color: #0000ff;">&quot;Error&quot;</span>, <span style="color: #0000ff;">&quot;Error opening view:&quot;</span> <span style="color: #339933;">+</span> e.<span style="color: #006633;">getMessage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>「com.lancard.mybrowser.ICommandIds」は以下のように記述します。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">com.lancard.mybrowser</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">interface</span> ICommandIds <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000000; font-weight: bold;">final</span> <span style="color: #003399;">String</span> CMD_MY_BROWSER <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;com.lancard.mybrowser.mybrowser&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>⑥メニューを追加してみます。<br />
　　メニューを追加するには、自動的に作成されている<br />
　　「com.lancard.mybrowser.ApplicationActionBarAdvisor」クラスに以下のように記述します。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">com.lancard.mybrowser</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.jface.action.IMenuManager</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.jface.action.MenuManager</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.ui.IWorkbenchActionConstants</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.ui.IWorkbenchWindow</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.ui.application.ActionBarAdvisor</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.ui.application.IActionBarConfigurer</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.lancard.mybrowser.action.MyBrowserAction</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.lancard.mybrowser.view.MyBrowserView</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> ApplicationActionBarAdvisor <span style="color: #000000; font-weight: bold;">extends</span> ActionBarAdvisor <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">private</span> MyBrowserAction myBrowserAction<span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">public</span> ApplicationActionBarAdvisor<span style="color: #009900;">&#40;</span>IActionBarConfigurer configurer<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">super</span><span style="color: #009900;">&#40;</span>configurer<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #000066; font-weight: bold;">void</span> makeActions<span style="color: #009900;">&#40;</span>IWorkbenchWindow window<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    	myBrowserAction <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> MyBrowserAction<span style="color: #009900;">&#40;</span>window, <span style="color: #0000ff;">&quot;ブラウザ&quot;</span>, MyBrowserView.<span style="color: #006633;">ID</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        register<span style="color: #009900;">&#40;</span>myBrowserAction<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #000066; font-weight: bold;">void</span> fillMenuBar<span style="color: #009900;">&#40;</span>IMenuManager menuBar<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        MenuManager fileMenu <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> MenuManager<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;&amp;メニュー&quot;</span>, IWorkbenchActionConstants.<span style="color: #006633;">M_FILE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        menuBar.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span>fileMenu<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        fileMenu.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span>myBrowserAction<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>⑦構成<br />
この時点でプロジェクトの構成はこのようになっています。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/7.png" class="thickbox no_icon" rel="gallery-2810" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/7-273x400.png" alt="" title="7" width="273" height="400" class="aligncenter size-medium wp-image-2837" /></a></p>
<p>⑧起動してみる。</p>
<p>　　今度は右上にメニューが出来ていて中にはブラウザメニューがあります。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/8-1.png" class="thickbox no_icon" rel="gallery-2810" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/8-1.png" alt="" title="8-1" width="181" height="55" class="aligncenter size-full wp-image-2838" /></a><br />
　　ブラウザメニューを選択すると、作成したブラウザビューが表示されます。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/8-2.png" class="thickbox no_icon" rel="gallery-2810" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/8-2-400x277.png" alt="" title="8-2" width="400" height="277" class="aligncenter size-medium wp-image-2839" /></a></p>
<p>⑨製品化する。<br />
　　このままだと、Eclipseを起動しないと使えないので製品化する作業をします。</p>
<p>　　1.MyBrowserプロジェクトを選択して、右クリックします。<br />
　　2.新規メニューから製品構成を選択します。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/9-1.png" class="thickbox no_icon" rel="gallery-2810" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/9-1-400x227.png" alt="" title="9-1" width="400" height="227" class="aligncenter size-medium wp-image-2841" /></a><br />
　　3.以下のように入力して、完了ボタンをクリックします。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/9-2.png" class="thickbox no_icon" rel="gallery-2810" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/9-2-315x400.png" alt="" title="9-2" width="315" height="400" class="aligncenter size-medium wp-image-2842" /></a><br />
　　　　「MyBrowser.product」というファイルが追加されます。<br />
　　4.「MyBrowser.product」を開きます。<br />
　　5.概要タブを選択し、以下のように記述します。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/9-3.png" class="thickbox no_icon" rel="gallery-2810" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/9-3-400x81.png" alt="" title="9-3" width="400" height="81" class="aligncenter size-medium wp-image-2843" /></a><br />
　　　　「新規」ボタンをクリックします。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/9-6.png" class="thickbox no_icon" rel="gallery-2810" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/9-6-400x61.png" alt="" title="9-6" width="400" height="61" class="aligncenter size-medium wp-image-2844" /></a><br />
　　　　次のように入力して完了をクリックします。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/9-7.png" class="thickbox no_icon" rel="gallery-2810" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/9-7-400x308.png" alt="" title="9-7" width="400" height="308" class="aligncenter size-medium wp-image-2848" /></a><br />
　　　　次のようになります。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/9-8.png" class="thickbox no_icon" rel="gallery-2810" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/9-8-400x136.png" alt="" title="9-8" width="400" height="136" class="aligncenter size-medium wp-image-2846" /></a><br />
　　6.依存関係タブを選択し、追加ボタンをクリック。<br />
　　　　「MyBrowser」があると思うので選択して「OK」をクリック。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/9-4.png" class="thickbox no_icon" rel="gallery-2810" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/9-4.png" alt="" title="9-4" width="383" height="373" class="aligncenter size-full wp-image-2850" /></a><br />
　　　　「必須プラグインの追加」ボタンをクリックします。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/9-5.png" class="thickbox no_icon" rel="gallery-2810" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/9-5-400x157.png" alt="" title="9-5" width="400" height="157" class="aligncenter size-medium wp-image-2851" /></a><br />
　　7.起動タブを選択し、以下のように入力します。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/9-14.png" class="thickbox no_icon" rel="gallery-2810" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/9-14.png" alt="" title="9-14" width="349" height="188" class="aligncenter size-full wp-image-2852" /></a><br />
　　8.概要タブのエクスポートの項目にある<br />
　　　「Eclipse製品エクスポート・ウィザード」をクリックします。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/9-9.png" class="thickbox no_icon" rel="gallery-2810" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/9-9-400x124.png" alt="" title="9-9" width="400" height="124" class="aligncenter size-medium wp-image-2853" /></a><br />
　　　　ディレクトリーは適当な場所にして、完了をクリックします。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/9-10.png" class="thickbox no_icon" rel="gallery-2810" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/9-10-382x400.png" alt="" title="9-10" width="382" height="400" class="aligncenter size-medium wp-image-2854" /></a><br />
　　9.２つのフォルダが出来ます。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/9-11.png" class="thickbox no_icon" rel="gallery-2810" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/9-11.png" alt="" title="9-11" width="102" height="213" class="aligncenter size-full wp-image-2855" /></a><br />
　　10.mybrowserの中にある「MyBrowser」を起動します。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/9-12.png" class="thickbox no_icon" rel="gallery-2810" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/9-12.png" alt="" title="9-12" width="218" height="104" class="aligncenter size-full wp-image-2856" /></a><br />
　　11.ちゃんと動きました。<br />
　　　　しかし、ソース上に書いた文字は文字化けします。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/9-13.png" class="thickbox no_icon" rel="gallery-2810" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/9-13-400x278.png" alt="" title="9-13" width="400" height="278" class="aligncenter size-medium wp-image-2857" /></a></p>
<p>⑩国際化対応<br />
　　文字がソース上にそのまま書いてあるため、文字化けしている状態になります。<br />
　　国際化対応するための機構があるので国際化対応します。</p>
<p>　　1.「com.lancard.mybrowser.resource」パッケージを作成します。<br />
　　2.「custom_ja.properties」というファイルを作成します。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/10-1.png" class="thickbox no_icon" rel="gallery-2810" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/10-1.png" alt="" title="10-1" width="301" height="162" class="aligncenter size-full wp-image-2858" /></a><br />
　　　　ファイルの中は次のように記述します。<br />
MENU=&#038;メニュー<br />
BROWSER=ブラウザ</p>
<p>　　3.「com.lancard.mybrowser.CustomString」クラスを作成します。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">com.lancard.mybrowser</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.Locale</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.ResourceBundle</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> CustomString <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000000; font-weight: bold;">final</span> <span style="color: #003399;">String</span> BUNDLE_NAME <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;com.lancard.mybrowser.resource.custom&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #003399;">ResourceBundle</span> rb <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> setBundle<span style="color: #009900;">&#40;</span><span style="color: #003399;">Locale</span> locale<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
			rb <span style="color: #339933;">=</span> <span style="color: #003399;">ResourceBundle</span>.<span style="color: #006633;">getBundle</span><span style="color: #009900;">&#40;</span>BUNDLE_NAME, locale<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">Exception</span> e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			rb <span style="color: #339933;">=</span> <span style="color: #003399;">ResourceBundle</span>.<span style="color: #006633;">getBundle</span><span style="color: #009900;">&#40;</span>BUNDLE_NAME, <span style="color: #003399;">Locale</span>.<span style="color: #006633;">JAPANESE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #003399;">String</span> getString<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> key<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #003399;">String</span> keyValue <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">String</span><span style="color: #009900;">&#40;</span>rb.<span style="color: #006633;">getString</span><span style="color: #009900;">&#40;</span>key<span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getBytes</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;ISO-8859-1&quot;</span><span style="color: #009900;">&#41;</span>, <span style="color: #0000ff;">&quot;UTF-8&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000000; font-weight: bold;">return</span> keyValue<span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">Exception</span> e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			e.<span style="color: #006633;">printStackTrace</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000000; font-weight: bold;">return</span> key<span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>　　4.既に存在する「com.lancard.mybrowser.Application」クラスの<br />
　　　　startメソッドに次の一行を追加します。<br />
　　　　「CustomString.setBundle(Locale.getDefault());」</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code"><pre class="java" style="font-family:monospace;">	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">Object</span> start<span style="color: #009900;">&#40;</span>IApplicationContext context<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">throws</span> <span style="color: #003399;">Exception</span> <span style="color: #009900;">&#123;</span>
		CustomString.<span style="color: #006633;">setBundle</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">Locale</span>.<span style="color: #006633;">getDefault</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		Display display <span style="color: #339933;">=</span> PlatformUI.<span style="color: #006633;">createDisplay</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000066; font-weight: bold;">int</span> returnCode <span style="color: #339933;">=</span> PlatformUI.<span style="color: #006633;">createAndRunWorkbench</span><span style="color: #009900;">&#40;</span>display, <span style="color: #000000; font-weight: bold;">new</span> ApplicationWorkbenchAdvisor<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>returnCode <span style="color: #339933;">==</span> PlatformUI.<span style="color: #006633;">RETURN_RESTART</span><span style="color: #009900;">&#41;</span>
				<span style="color: #000000; font-weight: bold;">return</span> IApplication.<span style="color: #006633;">EXIT_RESTART</span><span style="color: #339933;">;</span>
			<span style="color: #000000; font-weight: bold;">else</span>
				<span style="color: #000000; font-weight: bold;">return</span> IApplication.<span style="color: #006633;">EXIT_OK</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">finally</span> <span style="color: #009900;">&#123;</span>
			display.<span style="color: #006633;">dispose</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>　　5.「com.lancard.mybrowser.ApplicationActionBarAdvisor」の<br />
　　　　文字部分を次のように書き換えます。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">com.lancard.mybrowser</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.jface.action.IMenuManager</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.jface.action.MenuManager</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.ui.IWorkbenchActionConstants</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.ui.IWorkbenchWindow</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.ui.application.ActionBarAdvisor</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.ui.application.IActionBarConfigurer</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.lancard.mybrowser.action.MyBrowserAction</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.lancard.mybrowser.view.MyBrowserView</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> ApplicationActionBarAdvisor <span style="color: #000000; font-weight: bold;">extends</span> ActionBarAdvisor <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">private</span> MyBrowserAction myBrowserAction<span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">public</span> ApplicationActionBarAdvisor<span style="color: #009900;">&#40;</span>IActionBarConfigurer configurer<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">super</span><span style="color: #009900;">&#40;</span>configurer<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #000066; font-weight: bold;">void</span> makeActions<span style="color: #009900;">&#40;</span>IWorkbenchWindow window<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    	myBrowserAction <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> MyBrowserAction<span style="color: #009900;">&#40;</span>window, CustomString.<span style="color: #006633;">getString</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;BROWSER&quot;</span><span style="color: #009900;">&#41;</span>, MyBrowserView.<span style="color: #006633;">ID</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        register<span style="color: #009900;">&#40;</span>myBrowserAction<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #000066; font-weight: bold;">void</span> fillMenuBar<span style="color: #009900;">&#40;</span>IMenuManager menuBar<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        MenuManager fileMenu <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> MenuManager<span style="color: #009900;">&#40;</span>CustomString.<span style="color: #006633;">getString</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;MENU&quot;</span><span style="color: #009900;">&#41;</span>, IWorkbenchActionConstants.<span style="color: #006633;">M_FILE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        menuBar.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span>fileMenu<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        fileMenu.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span>myBrowserAction<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>　　6.もう一度エクスポートします。<br />
　　　　今度は文字化けしていた部分もきちんと日本語が表示されました。<br />
<a  href="http://www.lancard.com/blog/wp-content/uploads/2013/05/10-2.png" class="thickbox no_icon" rel="gallery-2810" title=""><img src="http://www.lancard.com/blog/wp-content/uploads/2013/05/10-2-400x275.png" alt="" title="10-2" width="400" height="275" class="aligncenter size-medium wp-image-2859" /></a></p>
<img src="http://www.lancard.com/blog/?ak_action=api_record_view&id=2810&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.lancard.com/blog/2013/05/06/eclipse-rcp%e3%81%ae%e4%bd%9c%e3%82%8a%e6%96%b9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PhpStorm(IntelliJ)のクリップボードマネージャ</title>
		<link>http://www.lancard.com/blog/2013/05/02/phpstormintellij%e3%81%ae%e3%82%af%e3%83%aa%e3%83%83%e3%83%97%e3%83%9c%e3%83%bc%e3%83%89%e3%83%9e%e3%83%8d%e3%83%bc%e3%82%b8%e3%83%a3/</link>
		<comments>http://www.lancard.com/blog/2013/05/02/phpstormintellij%e3%81%ae%e3%82%af%e3%83%aa%e3%83%83%e3%83%97%e3%83%9c%e3%83%bc%e3%83%89%e3%83%9e%e3%83%8d%e3%83%bc%e3%82%b8%e3%83%a3/#comments</comments>
		<pubDate>Thu, 02 May 2013 08:55:08 +0000</pubDate>
		<dc:creator>yoshida</dc:creator>
				<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://www.lancard.com/blog/?p=2804</guid>
		<description><![CDATA[PhpStormにはクリップボードマネージャ機能があり、クリップボードの履歴からペーストしたりすることができます。しかし私は別のクリップボードマネージャアプリを使用しており、そのアプリから貼り付けたいのですが、機能がバッ [...]]]></description>
			<content:encoded><![CDATA[<p>PhpStormにはクリップボードマネージャ機能があり、クリップボードの履歴からペーストしたりすることができます。しかし私は別のクリップボードマネージャアプリを使用しており、そのアプリから貼り付けたいのですが、機能がバッティングしてしまいうまく動作しません。</p>
<p>調べたところシステムのクリップボード領域とPhpStormのクリップボード領域を同期する設定をすることで正しく動作するようになりました。</p>
<p>idea.use.alt.clipboard.sync=trueを/Applications/PhpStorm.app/bin/idea.vmoptionsに追記するだけでOKです。</p>
<p>参考</p>
<blockquote><p><a  href="http://youtrack.jetbrains.com/issue/RUBY-9050" onclick="pageTracker._trackPageview('/outgoing/youtrack.jetbrains.com/issue/RUBY-9050?referer=');">Switching clipboard content with system clipboard manager does not work in rubymine (Ubuntu)</a></p></blockquote>
<img src="http://www.lancard.com/blog/?ak_action=api_record_view&id=2804&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.lancard.com/blog/2013/05/02/phpstormintellij%e3%81%ae%e3%82%af%e3%83%aa%e3%83%83%e3%83%97%e3%83%9c%e3%83%bc%e3%83%89%e3%83%9e%e3%83%8d%e3%83%bc%e3%82%b8%e3%83%a3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RoudcubeプラグインでAjaxする</title>
		<link>http://www.lancard.com/blog/2013/04/26/roudcube%e3%83%97%e3%83%a9%e3%82%b0%e3%82%a4%e3%83%b3%e3%81%a7ajax%e3%81%99%e3%82%8b/</link>
		<comments>http://www.lancard.com/blog/2013/04/26/roudcube%e3%83%97%e3%83%a9%e3%82%b0%e3%82%a4%e3%83%b3%e3%81%a7ajax%e3%81%99%e3%82%8b/#comments</comments>
		<pubDate>Fri, 26 Apr 2013 08:17:48 +0000</pubDate>
		<dc:creator>uchida</dc:creator>
				<category><![CDATA[Roundcube]]></category>

		<guid isPermaLink="false">http://www.lancard.com/blog/?p=2794</guid>
		<description><![CDATA[RoudcubeプラグインでAjaxする方法を紹介します。 サーバ側： 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 [...]]]></description>
			<content:encoded><![CDATA[<p>RoudcubeプラグインでAjaxする方法を紹介します。</p>
<p>サーバ側：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> 
<span style="color: #000000; font-weight: bold;">class</span> ajax_sample <span style="color: #000000; font-weight: bold;">extends</span> rcube_plugin <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$rc</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rc</span> <span style="color: #339933;">=</span> rcmail<span style="color: #339933;">::</span><span style="color: #004000;">get_instance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">add_texts</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'localization/'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">register_task</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'ajax_sample'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rc</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">task</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">'ajax_sample'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">register_action</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'index'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'action'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">register_action</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'get_data'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'action'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span><span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">add_button</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
					<span style="color: #0000ff;">'command'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'ajax_sample'</span><span style="color: #339933;">,</span>
					<span style="color: #0000ff;">'label'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'ajax_sample.title'</span>
			<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'taskbar'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> action<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #666666; font-style: italic;">//画面表示</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rc</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">action</span> <span style="color: #339933;">===</span> <span style="color: #0000ff;">'index'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
			<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">include_script</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'ajax_sample.js'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rc</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">output</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">send</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'ajax_sample.ajax_sample'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//ajax</span>
		<span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rc</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">action</span> <span style="color: #339933;">===</span> <span style="color: #0000ff;">'get_data'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
			<span style="color: #990000;">error_log</span><span style="color: #009900;">&#40;</span>get_input_value<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'data'</span><span style="color: #339933;">,</span> RCUBE_INPUT_POST<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rc</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">output</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">command</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'plugin.get_data'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'data'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'test'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>クライアント側：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> get_data_call_back <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>response<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span>response.<span style="color: #660066;">data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>window.<span style="color: #660066;">rcmail</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	rcmail.<span style="color: #660066;">addEventListener</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'init'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		rcmail.<span style="color: #660066;">addEventListener</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'plugin.get_data'</span><span style="color: #339933;">,</span> get_data_call_back<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		rcmail.<span style="color: #660066;">enable_command</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'get_data'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
rcube_webmail.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">get_data</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	rcmail.<span style="color: #660066;">http_post</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'get_data'</span><span style="color: #339933;">,</span><span style="color: #009900;">&#123;</span><span style="color: #3366CC;">&quot;data&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">'test'</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>①コールバックの登録<br />
　　クライアント側のrcmail.addEventListener(&#8216;plugin.get_data&#8217;, get_data_call_back);の<br />
　　第一引数と<br />
　　サーバ側の$this->rc->output->command(&#8216;plugin.get_data&#8217;, array(&#8216;data&#8217; => &#8216;test&#8217;));の<br />
　　第一引数を<br />
　　一致させる必要があります。</p>
<p>　　この際に&#8217;plugin.&#8217;という文字を前につける必要があります。<br />
　　なぜなら/roundcuberoot/program/include/rcube_json_output.phpの<br />
　　141行目が次のようになっています。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> command<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$cmd</span> <span style="color: #339933;">=</span> <span style="color: #990000;">func_get_args</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">strpos</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cmd</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'plugin.'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">===</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span>
          <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">callbacks</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$cmd</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">else</span>
          <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">commands</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$cmd</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>　　ここでcallbacksに登録されないため</p>
<p>　　/roundcuberoot/program/js/app.src.jsの6041行目</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">    <span style="color: #006600; font-style: italic;">// execute callback functions of plugins</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>response.<span style="color: #660066;">callbacks</span> <span style="color: #339933;">&amp;&amp;</span> response.<span style="color: #660066;">callbacks</span>.<span style="color: #660066;">length</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> response.<span style="color: #660066;">callbacks</span>.<span style="color: #660066;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
        <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">triggerEvent</span><span style="color: #009900;">&#40;</span>response.<span style="color: #660066;">callbacks</span><span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> response.<span style="color: #660066;">callbacks</span><span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>　　この部分のコールバックとして実行されません。</p>
<p>②ポストするデータ<br />
　　rcmail.http_post(&#8216;get_data&#8217;,{&#8220;data&#8221;:&#8217;test&#8217;});の第二引数で指定します。</p>
<p>③サーバから返すデータ<br />
　　$this->rc->output->command(&#8216;plugin.get_data&#8217;, array(&#8216;data&#8217; => &#8216;test&#8217;));の第二引数で指定します。</p>
<img src="http://www.lancard.com/blog/?ak_action=api_record_view&id=2794&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.lancard.com/blog/2013/04/26/roudcube%e3%83%97%e3%83%a9%e3%82%b0%e3%82%a4%e3%83%b3%e3%81%a7ajax%e3%81%99%e3%82%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
