Aipoのタブの切り替え方法について

js_paneをクエリ文字列に設定して切り替えます 例えば、マイページの場合は

http://localhost:8080/aipo/portal/media-type/html/user/0000000336/page/default.psml/js_pane/P-1471e250287-10000?action=controls.Restore

個人設定ページの場合は

http://localhost:8080/aipo/portal/media-type/html/user/0000000336/page/default.psml/js_pane/P-1471e250287-1000c%2CP-1471e250287-1000d?action=controls.Restore&action=controls.Restore

管理設定ページの場合は

http://localhost:8080/aipo/portal/media-type/html/user/0000000336/page/default.psml/js_pane/101%2C131?action=controls.Restore&action=controls.Restore

のようになっています。

また、マイグループなどの個人設定・管理設定タブ内のポートレットを開く場合には、js_paneにポートレットのIDを指定します。(通常のポートレットでは最大化画面を開くときにはポートレットのIDをjs_peidに指定しているので混同しないように注意が必要です。)

このjs_paneの値は、データベースのdefault.psmlの値と対応しています。 例えばJavaでマイページ・個人設定・システム管理のjs_paneを読み出す際には、次のようにします。

  /**
   * 指定したタブの ID を取得する.
   * 
   * @param rundata
   * @param portletsName
   *          PSML ファイルに記述されているタグ portletsの要素 title
   * @return
   */
  public static String getPortletIDPane(RunData rundata, String portletsName) {
    try {
      Profile profile = ((JetspeedRunData) rundata).getProfile();
      if (profile == null) {
        return null;
      }

      Portlets portlets = profile.getDocument().getPortlets();
      if (portlets == null) {
        return null;
      }

      Portlets[] portletList = portlets.getPortletsArray();
      if (portletList == null) {
        return null;
      }

      int length = portletList.length;
      for (int i = 0; i < length; i++) {
        if (portletsName.equals(portletList[i].getTitle())) {
          return portletList[i].getId();
        }
      }

    } catch (Exception ex) {
      logger.error("ALCommonUtils.getPortletIDPane", ex);
      return null;
    }
    return null;
  }

また、個人設定・管理設定ページ内のポートレットのIDを読み出す場合には次のようにします。

  /**
   * 個人設定・管理設定ページに含まれるポートレットのIdの場合trueを返す
   *
   * @param rundata
   * @param String
   *          portletID
   * @return
   */
  public static boolean isPortletIdinConfigPane(RunData rundata,
      String portletID) {
    try {
      Portlets portlets =
        ((JetspeedRunData) rundata).getProfile().getDocument().getPortlets();
      if (portlets == null) {
        return false;
      }

      Portlets[] portletList = portlets.getPortletsArray();
      if (portletList == null) {
        return false;
      }

      int length = portletList.length;
      String[] pids = new String[portletList.length];
      for (int i = 0; i < length; i++) {
        Entry[] entries = portletList[i].getEntriesArray();
        if (entries == null || entries.length <= 0) {
          continue;
        }
        if (!("個人設定".equals(portletList[i].getTitle()) || "システム管理"
          .equals(portletList[i].getTitle()))) {
          continue;
        }

        int ent_length = entries.length;
        for (int j = 0; j < ent_length; j++) {
          if (portletID.equals(entries[j].getId())) {
            return true;
          }

        }

      }
      return false;
    } catch (Exception ex) {
      logger.error("ALCommonUtils.isPortletIdinConfigPane", ex);
      return false;
    }
  }