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

2009年7月31日金曜日

[Apache Shindig][お勉強][OpenSocial] メモ107 ShindigのtabsフィーチャーでUserPref name="selectedTab"

Shindigのgadgets.tabsでは、選択したタブをUserPrefsに自動保存する、
という機能が効かないみたい。
(コードにそのような記述はない。)

Google gadgets APIでは、

  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <Module>  
  3.   <ModulePrefs title="tabsフィーチャー">  
  4.     <Require feature="setprefs" />  
  5.     <Require feature="tabs" />  
  6.   </ModulePrefs>  
  7.   <UserPref name="selectedTab" value="0" />  
  8.   <Content type="html" view="home,profile,canvas">  

などと書いておくと、再表示したときに、前回表示したときに選択したタブが選択される
らしい。

これをShindigでもやってみた。
  1. --- tabs.js.old 2009-07-30 23:48:32.000000000 +0900  
  2. +++ tabs.js     2009-07-31 09:28:01.000000000 +0900  
  3. @@ -171,6 +171,9 @@  
  4.        'text-decoration: none;',  
  5.      '}'  
  6.    ].join(''));  
  7. +  if (gadgets.util.hasFeature('setprefs')) {  
  8. +    this.prefs = new gadgets.Prefs();  
  9. +  }  
  10.  };  
  11.   
  12.  /** 
  13. @@ -230,6 +233,12 @@ 
  14.    if (tabName == this.defaultTabName_ || (!this.defaultTabName_ && tabIndex === 0)) { 
  15.      this.selectTab_(tab); 
  16.    } 
  17. +  if (this.prefs) { 
  18. +    var selectedTab = this.prefs.getString("selectedTab"); 
  19. +    if (selectedTab === tabName) { 
  20. +      this.selectTab_(tab); 
  21. +    } 
  22. +  } 
  23.  
  24.    this.tabsAdded_++; 
  25.    this.displayTabs(true); 
  26. @@ -602,7 +611,13 @@ 
  27.   * @return {Function} Callback function to select the tab. 
  28.   */  
  29.  gadgets.TabSet.prototype.setSelectedTabGenerator_ = function(tab) {  
  30. -  return function() { tab.handle_.selectTab_(tab); };  
  31. +  var self = this;  
  32. +  return function() {  
  33. +    if (self.prefs) {  
  34. +      self.prefs.set("selectedTab", tab.getName());  
  35. +    }  
  36. +    tab.handle_.selectTab_(tab);  
  37. +  };  
  38.  };  
  39.   
  40.  /**  


と、features/tabs/tabs.jsを修正する。
すると、あら不思議。

前回選択したタブが選択された状態で表示できるじゃありませんか。

そんだけ。
.

0 コメント: