メモ代わり。てきとーに。 いや、ですからてきとーですって。 2年前ぐらいにPythonあたりでメールくれた方、ごめんなさい。メール紛失してしまい無視した形になってしまいました。。。

2009年7月31日金曜日

[Apache Shindig][お勉強][OpenSocial] メモ112 settitleフィーチャー

ガジェットのタイトルをプログラムから設定する場合に指定するもの。

使えるメソッドは、

  1. gadgets.window.setTitle(title)  

のみ。

  1. _IG_SetTitle  

という名前でもコールできる。

で、やってみる。
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <Module>  
  3.   <ModulePrefs title="settitleフィーチャー">  
  4.     <Require feature="settitle"/>  
  5.   </ModulePrefs>  
  6.   <Content type="html" view="canvas,profile,home">  
  7.   <![CDATA[ 
  8.     <script type="text/javascript"> 
  9.     function init() { 
  10.       gadgets.window.setTitle('ああああ'); 
  11.     } 
  12.     function changeTitle(form) { 
  13.       _IG_SetTitle(form.inputbox.value); 
  14.     } 
  15.     gadgets.util.registerOnLoadHandler(init); 
  16.     </script> 
  17.   <FORM NAME="myform" ACTION="" METHOD="GET"> 
  18.  
  19.   <INPUT TYPE="text" NAME="inputbox" VALUE=""> 
  20.   <INPUT TYPE="button" NAME="button" Value="Add" onClick="changeTitle(this.form)"> 
  21.   <INPUT TYPE="button" NAME="button2" Value="Clear" onClick="clearList(this.form)"> 
  22.   </FORM> 
  23.   <div id="content_div"></div> 
  24.   ]]>  
  25.   </Content>  
  26. </Module>  

初期表示時にgadgets.window.setTitleを使ってタイトルを設定。
フォームから入力されると、_IG_SetTitleを使ってタイトルを設定。

ちゃんと動いた。
このメソッドも、結局は、gadgets.rpc.call(null,'set_title', null, title)な感じで
rpc経由。

rpc経由でコールされる側のメソッドでは、
  1. gadgets.IfrGadgetService.prototype.setTitle = function(title) {  
  2.   var element = document.getElementById(this.f + '_title');  
  3.   if (element) {  
  4.     element.innerHTML = title.replace(/&/g, '&amp;').replace(/</g, '&lt;');  
  5.   }  
  6. };  

となっているので、タイトルを出力したいところのidは

ガジェットを表示するiframeの名前+'_title'

とする必要がある。もちろんShindigデフォルトの場合。


そんだけ。
.

0 コメント: