NetCommons2 モジュールをモバイル対応にする
NetCommons2をインストールしたままの状態では携帯画面で利用できるモジュールは下記の12個です。
・ログイン ・メニュー
・新着情報 ・カレンダー
・お知らせ ・アンケート
・Todo ・掲示板
・小テスト ・日誌
・汎用データベース ・登録フォーム
これら以外のモジュール、またはオリジナルで作成したモジュールを携帯でも使用するためにはモジュールをカスタマイズする必要があります。
ここではオンライン状況モジュールを例にします。
install.iniに下記を追加。
[Mobile] mobile_action_name = "online_view_mobile_init"
viewフォルダにmobileフォルダを作成し、さらにその中にinitフォルダを作成します。
initフォルダ内に3つのファイル(dicon.ini、maple.ini、Init.class.php)を作成。
dicon.iniの作成
[DIContainer] onlineView = "modules://online.components.view"
maple.iniの作成
[DIContainer] filename = dicon.ini [SmartyAssign] config = main.ini [AllowIdList] room_id = "TARGET_ROOM_ID" module_id = "TARGET_MODULE_ID" block_id_arr = "ALLOW_BLOCK_ID" [ValidateDef] block_id_arr.online.mobileBlock = "1:lang._mobile_error_noblock" [MobileView] define:theme = 1 success = "online_mobile_init.html"
Init.class.phpの作成
<?php
class Online_View_Mobile_Init extends Action
{
// 値をセットするため
var $onlines = null;
/**
* execute実行
*
* @access public
*/
function execute()
{
return 'success';
}
}
?>
view/main/init/maple.iniに下記を追加
[MobileView] define:theme = 1 success = "online_mobile_details.html" nonexistent = "online_nonexistent.html"
components/View.class.phpに下記を追加
/**
* 携帯用ブロックデータを取得
*
* @access public
*/
function getBlocksForMobile($block_id_arr)
{
$params = array("block_id IN (".implode(",",$block_id_arr).")" => null);
$order_params = array("insert_time" => "DESC");
return $this->_db->selectExecute("online", $params, $order_params, null, null, array($this, "_getBlocksForMobile"));
}
/**
* 携帯用ブロックデータを取得
*
* @access public
*/
function &_getBlocksForMobile(&$recordSet)
{
$commonMain =& $this->_container->getComponent("commonMain");
$convertHtml =& $commonMain->registerClass(WEBAPP_DIR.'/components/convert/Html.class.php', "Convert_Html", "convertHtml");
$result = array();
while ($row = $recordSet->fetchRow()) {
$content = $convertHtml->convertHtmlToText($row["content"]);
$content = trim(preg_replace("/\\\n/", " ", $content));
$row["title"] = mb_substr($content, 0, ONLINE_LENGTH + 1, INTERNAL_CODE);
$result[] = $row;
}
return $result;
}
configフォルダを作成(install.iniがある階層)し、configフォルダ内にmain.iniを作成
[Online_View_Mobile] define:ONLINE_LENGTH = 16
templates/default/にモバイル用のhtmlを作成
online_mobile_init.htmlの作成
<{strip}>
<h3>
</h3>
<ul>
<{section name=i loop=$action.onlines}>
<li>
<a href="?action=online_view_main_init&block_id=<{$action.onlines[i].block_id}><{$session_param}>">
<{if ($action.onlines[i].title != "") }>
<{$action.onlines[i].title|truncate:$smarty.const.ONLINE_LENGTH:$smarty.const._SEARCH_MORE:true}>
<{else}>
<{$smarty.const._SEARCH_SUBJECT_NONEXISTS}>
<{/if}>
</a>
</li>
<{/section}>
</ul>
<div align="right">
<a href="?action=menu_view_mobile_init<{$session_param}>">
<{$lang._btn_prev_arrow|smarty:nodefaults}>
</a>
</div>
<{/strip}>
online_mobile_details.htmlの作成
<{strip}>
<{if ($block_obj.block_name != "") }>
<h3><{$block_obj.block_name}></h3>
<{/if}>
<table class="outer" summary="">
<{if $action.user_flag}>
<tr>
<th class="online_title" scope="row">
<{$lang.online_user|smarty:nodefaults}>
</th>
<td class="online_count">
<{$lang.online_count|smarty:nodefaults|sprintf:$action.userCount}>
</td>
</tr>
<{/if}>
<{if $action.member_flag}>
<tr>
<th class="online_title" scope="row">
<{$lang.online_member|smarty:nodefaults}>
</th>
<td class="online_count">
<{$lang.online_count|smarty:nodefaults|sprintf:$action.memberCount}>
</td>
</tr>
<{/if}>
<{if $action.total_member_flag}>
<tr>
<th class="online_title" scope="row">
<{$lang.online_total_merber|smarty:nodefaults}>
</th>
<td class="online_count">
<{$lang.online_count|smarty:nodefaults|sprintf:$action.totalMemberCount}>
</td>
</tr>
<{/if}>
</table>
<div align="right">
<{if ($action.block_num == 1 ) }>
<a href="?action=menu_view_mobile_init<{$session_param}>">
<{else}>
<a href="?action=menu_view_mobile_detail<{$session_param}>">
<{/if}>
<{$lang._btn_prev_arrow|smarty:nodefaults}>
</a>
</div>
<{/strip}>
以上でモジュールのカスタマイズは終了です。
install.iniを編集しているので、インストールをし直す必要があります。
NetCommons2のコントロールパネル開き、モジュール管理からモジュールのアンインストールとインストールをします。
インストールが完了したらコントロールパネルの携帯管理で「携帯からのアクセス許可モジュールの設定」がONになっていることを確認してください。
簡単な作りのモジュールであればこの方法でモバイルに対応させることができそうです。
複雑な作りのモジュールの場合には、これら以外にもいくつかのファイルが必要になると思います。
トラックバック URL :
コメント (0)