kazpgmの日記

『プログラム自動作成@自動生成』作成の日記

TOOL更新_viewをphp(ver0.1)からsmarty(次期ver)へ置き換えた。

TOOL更新_viewをphp(ver0.1)からsmarty(次期ver)へ置き換えた。サンプルとした、logininfoaListView.htmlをsmartyにした。プログラム変更点を比較。smartyは「テンプレート関数プラグイン」を作成し、使用している。今後、viewについてはこのページを書き換えていく。

■logininfoaListView.html 修正。=>8/14実際のPGMを載せた(当ブログ内後述)。
番号のところが注目の変更点。(ver0.1とスクリプト言語phpsmartyというだけ。自作「テンプレート関数プラグイン」を使って。同じロジックにした。)

①削除のときのjavascriptに自作トークンを作っている。
  <<ver0.1>>
    location.href='/samples/kaz/admin/logininfo/logininfoa?mode=del_do&' + 
  'login_id=' + login_id + '&<?= TokenHandle::getTokenHtml("admin", "base"); ?>';
  <<smartyで>>
    location.href='/samples/kazBase/kaz/admin/logininfo/logininfoa/deldo?' + 
    'login_id=' + login_id + '&{{kaz_token_html namespace='admin' base='base'}}';

②チェックボックスに自作ラジオボタンを使っている。  
  <<ver0.1>>
    <?=AppHtmlUtil::getHTMLRadio($ELEMENTS['YUKO_FLG'], $o['srch_yuko_flg'], 
  srch_yuko_flg, "全て", $o['c_elements_idx'], 10)?>
  <<smartyで>>
    {{kaz_html_radio elename='YUKO_FLG' indata=$o.srch_yuko_flg name="srch_yuko_flg" 
    dflt="全て" idx=$o.c_elements_idx su=10}}

③プルダウンリストに自作プルダウンリストを使っている。  
  <<ver0.1>>
    <?=AppHtmlUtil::getHTMLSelect($ELEMENTS['LOGIN_TYPE'], $o['srch_login_type'], 
  srch_login_type, "全て", $o['c_elements_idx'])?>
  <<smartyで>>
    {{kaz_html_select elename='LOGIN_TYPE' indata=$o.srch_login_type 
    name="srch_login_type" dflt="全て" idx=$o.c_elements_idx}}

④エラー判定。エラーがないとき
  <<ver0.1>>
    <? if (!AppCheckUtil::chkError($err)) { // エラーなし ?>
  <<smartyで>>
{{kaz_chk_error_assign var='err_flg' err=$err}}
{{if $err_flg == false }}{{* // エラーなし *}}

⑤ソート順▲の制御  
  <<ver0.1>>
  <?
    $ascDesc = '▲'; // 昇順
    if ($o['sort_order']=='D') {
        $ascDesc = '▼'; // 降順
    }
  ?>
  <<smartyで>>
    {{assign var="ascDesc" value='▲'}}{{*// 昇順*}}
    {{if $o.sort_order=='D'}}
        {{$oascDesc = '▼'}}{{*// 降順*}}
    {{/if}}

⑥エレメント取得に自作エレメント取得を使っている。  
  <<ver0.1>>
    <?=esc($ELEMENTS['LOGIN_TYPE'][$vals['login_type']][$o['c_elements_idx']]) ?>
  <<smartyで>>
    {{kaz_element elename='LOGIN_TYPE' 
    value=$vals.login_type idx=$o.c_elements_idx tdKbn='TD'}}

⑦検索結果のリスト処理  
  <<ver0.1>>
  <? if ( !empty($result)  ) {
         $lineCount = 1;
         foreach( $result as $vals ){ ?>
  ・・・
     } else { ?>
      <tr>
        <td align="center" nowrap colspan="6">該当するデータがありませんでした。</td>
      </tr>
  <? } ?>
  <<smartyで>>
    {{foreach from=$result|smarty:nodefaults item="vals" name="lineCount"}}
  ・・・
    {{/foreach}} 
    {{if $smarty.foreach.lineCount.total == 0}}
        <tr>
          <td align="center" nowrap colspan="6">該当するデータがありませんでした。</td>
        </tr>
    {{/if}}

そのた1:インクルード
  <<ver0.1>>
    <?php require(DIR_VIEW . 'admin/header.lbi'); ?>
  <<smartyで>>
    {{include file='view/admin/header.lbi'}}

そのた2:タイトル
  <<ver0.1>>
    <h1><?=$o['c_elements_idx']=='0'?"":"Management "?>ログイン情報
    <?=$o['c_elements_idx']=='0'?"管理":""?></h1>
  <<smartyで>>
    <h1>{{if $o.c_elements_idx == '0'}}{{else}}Management {{/if}}ログイン情報
    {{if $o.c_elements_idx == '0'}}管理{{/if}}</h1>

そのた3:「ログインID」チェックエラー
  <<ver0.1>>
    <?= $err['srch_login_id']?>
  <<smartyで>>
    {{$err.srch_login_id|kaz_encErrTag}}

そのた4:データが削除されていたときのエラー
  <<ver0.1>>
    <? if ('' != $o['del_do_chk_msg']) { ?>
        <p class="text-center"><?=$o['del_do_chk_msg']?></p>
    <? } ?>
  <<smartyで>>
    {{if "" != $o.del_do_chk_msg}}
        <p class="text-center">{{$o.del_do_chk_msg|kaz_encErrTag}}</p>
    {{/if}}

■common.php 修正
自作「テンプレート関数プラグイン」をインクルードした。補足:smartyのdelimiterを'{{'、'}}'に変更しています。

/* Smartyを設定 */
require_once(DIR_SMARTY . 'Smarty.class.php');
$smarty = new Smarty();
$smarty->template_dir = DIR_TEMPLATE; // テンプレートファイルが存在するディレクトリ
$smarty->compile_dir = DIR_COMPILE; // テンプレートのキャッシュを作成するディレクトリ

$smarty->left_delimiter = '{{';
$smarty->right_delimiter = '}}';
$smarty->default_modifiers = 'escape:"html"';

//Smarty Plugin
require_once('AppSmartyPlugin.php');
$smarty->register_function("kaz_element", "smarty_function_kaz_element");
$smarty->register_function("kaz_token_html", "smarty_function_kaz_token_html");
$smarty->register_function("kaz_html_radio", "smarty_function_kaz_html_radio");
$smarty->register_function("kaz_html_checkbox", "smarty_function_kaz_html_checkbox");
$smarty->register_function("kaz_checkboxdispstr", "smarty_function_kaz_checkboxdispstr");
$smarty->register_function("kaz_html_select", "smarty_function_kaz_html_select");
$smarty->register_function("kaz_chk_error_assign", "smarty_function_kaz_chk_error_assign");

$smarty->register_modifier("kaz_td_nl2br", "smarty_modifier_kaz_td_nl2br");
$smarty->register_modifier("kaz_encErrTag", "smarty_modifier_kaz_encErrTag");
Zend_Registry::set('smarty',$smarty);

■AppSmartyPlugin.php 新規
「テンプレート関数プラグイン」を作った。

<?php
/**
 * @copyright  2010 kaz PHP自動作成◎自動生成お助けTOOL.
 * @license    New BSD License
 * AppSmartyPlugin.php
 */

/**
 * -------------------------------------------------------------
 * Smarty {kaz_element} function plugin
 *
 * Type:     function<br>
 * Name:     kaz_element<br>
 * Input:<br>
 *           - elename    コード一覧(AppElements)のコード名
 *           - value      コード値
 *           - idx        elements_idx ('0':日本語、'1':英語) デフォルト='0'
 *           - tdKbn      テーブルTD区分 ('TD':テーブルTD、 以外(指定なしを含む))
 * Purpose:  AppElementsからコード値を取得しエスケープして戻します。
 * @param array
 * @param Smarty
 * @return string
 * @uses smarty_function_escape_special_chars()
 * -------------------------------------------------------------
 **/
function smarty_function_kaz_element($params, &$smarty)
{
    require_once $smarty->_get_plugin_filepath('shared','escape_special_chars'); // エスケープ処理

    $elements = AppElements::getInstance();    // コード一覧

    if( isset($params['elename']) == false){
        $smarty->trigger_error("kaz_element: missing 'elename' parameter");
        return;
    }
    if( array_key_exists('value', $params) == false){
        $smarty->trigger_error("kaz_element: missing 'value' parameter");
        return;
    }
    if( isset($params['idx']) == false){
        $params['idx'] = '0'; // 日本用
    }
    if( isset($params['tdKbn']) == false){
        $params['tdKbn'] = ''; // テーブルTD以外
    }
    if(mb_strwidth($params['elename']) == 0 || 
       mb_strwidth($params['value'])   == 0){ // パラメータに値がない場合
        $rtn = "";
    } else {
        $rtn = smarty_function_escape_special_chars(
               $elements->elements[$params['elename']][$params['value']][$params['idx']]);
    }
    if (strtoupper($params['tdKbn']) == 'TD' && 
        (is_null($rtn) || $rtn == "")){ // テーブルTDの場合かつ、値が空白のとき
        return "&nbsp;";
    }
    return nl2br($rtn);
}


/**
 * -------------------------------------------------------------
 * Smarty {kaz_token_html} function plugin
 *
 * Type:     function<br>
 * Name:     kaz_token_html<br>
 * Input:<br>
 *           - namespace    Zend_Session_Namespace用namespace名
 *           - base         "":post用、""以外:get用
 * Purpose:  TokenHandleからTokenHtmlを取得して戻します。
 * @param array
 * @param Smarty
 * @return string
 * -------------------------------------------------------------
 **/
function smarty_function_kaz_token_html($params, &$smarty)
{
    require_once('TokenHandle.php');

    if( isset($params['namespace']) == false){
        $smarty->trigger_error("kaz_token_html: missing 'namespace' parameter");
        return;
    }
    if( isset($params['base']) == false){
        $params['base'] = ''; 
    }
    if(mb_strwidth($params['namespace']) == 0 ){ // パラメータに値がない場合
        $rtn = "";
    } else {
        $rtn = TokenHandle::getTokenHtml($params['namespace'], $params['base']);
    }
    return $rtn;
}


/**
 * -------------------------------------------------------------
 * Smarty {kaz_html_radio} function plugin
 *
 * Type:     function<br>
 * Name:     kaz_html_radio<br>
 * Input:<br>
 *           - elename    コード名称
 *           - indata     入力値
 *           - name       name
 *           - dfltval    デフォルト値設定。設定した場合、indataが''のときindataにdfltvalを設定する。
 *           - dflt       デフォルト設定。設定しない場合""を指定する。
 *           - dfltEng    デフォルト設定(英字)。設定しない場合""を指定する。
 *           - idx        elements_idx ('0':日本語、'1':英語) デフォルト='0'
 *           - su         1行のITEM数
 *           - addItemNm  コード名の先頭にこの項目名を付加する
 * Purpose:  AppHtmlUtilからgetHTMLRadioを取得して戻します。
 * @param array
 * @param Smarty
 * @return HTMLRadio文字
 * -------------------------------------------------------------
 **/
function smarty_function_kaz_html_radio($params, &$smarty)
{
    require_once('AppHtmlUtil.php');
    $elements = AppElements::getInstance();    // コード一覧

    if( isset($params['elename']) == false){
        $smarty->trigger_error("kaz_html_radio: missing 'elename' parameter");
        return;
    }
    if( array_key_exists('indata', $params) == false){
        $smarty->trigger_error("kaz_html_radio: missing 'indata' parameter");
        return;
    }
    if( isset($params['name']) == false){
        $smarty->trigger_error("kaz_html_radio: missing 'name' parameter");
        return;
    }
    if( isset($params['dflt']) == false){
        $params['dflt'] = ''; // デフォルト指定なし
    }
    if( isset($params['dfltEng']) == false){
        $params['dfltEng'] = ''; // デフォルト英字指定なし
    }
    if( $params['indata'] == '' && isset($params['dfltval']) == true){
        $params['indata'] = $params['dfltval']; // indataが''のときdfltvalを初期値とする。
    }
    if( isset($params['idx']) == false){
        $params['idx'] = '0'; // 日本用
    }
    if( isset($params['su']) == false){
        $params['su'] = 1; // デフォルトは1行に1つ
    }
    if( isset($params['addItemNm']) == false){
        $params['addItemNm'] = ""; // デフォルトは空文字
    }
    if(mb_strwidth($params['elename']) == 0 || 
       mb_strwidth($params['name'])    == 0){ // パラメータに値がない場合
        return "";
    }

    return AppHtmlUtil::getHTMLRadio($elements->elements[$params['elename']], 
    $params['indata'], $params['name'], 
    $params['idx']=='0'?$params['dflt']:$params['dfltEng'], $params['idx'], 
    $params['su'], $params['addItemNm']);
}


/**
 * -------------------------------------------------------------
 * Smarty {kaz_html_checkbox} function plugin
 *
 * Type:     function<br>
 * Name:     kaz_html_checkbox<br>
 * Input:<br>
 *           - elename    コード名称
 *           - indata     入力値
 *           - name       name
 *           - idx        elements_idx ('0':日本語、'1':英語) デフォルト='0'
 *           - su         1行のITEM数
 * Purpose:  AppHtmlUtilからgetHTMLCheckBoxを取得して戻します。
 * @param array
 * @param Smarty
 * @return HTMLCheckBox文字
 * -------------------------------------------------------------
 **/
function smarty_function_kaz_html_checkbox($params, &$smarty)
{
    require_once('AppHtmlUtil.php');
    $elements = AppElements::getInstance();    // コード一覧

    if( isset($params['elename']) == false){
        $smarty->trigger_error("kaz_html_checkbox: missing 'elename' parameter");
        return;
    }
    if( array_key_exists('indata', $params) == false){
        $smarty->trigger_error("kaz_html_checkbox: missing 'indata' parameter");
        return;
    }
    if( isset($params['name']) == false){
        $smarty->trigger_error("kaz_html_checkbox: missing 'name' parameter");
        return;
    }
    if( isset($params['idx']) == false){
        $params['idx'] = '0'; // 日本用
    }
    if( isset($params['su']) == false){
        $params['su'] = 5; // デフォルトは1行に5つ
    }
    if(mb_strwidth($params['elename']) == 0){ // パラメータに値がない場合
        return "";
    }

    return AppHtmlUtil::getHTMLCheckBox($elements->elements[$params['elename']], 
    $params['indata'], $params['name'], $params['idx'], $params['su']);
}


/**
 * -------------------------------------------------------------
 * Smarty {kaz_checkboxdispstr} function plugin
 *
 * Type:     function<br>
 * Name:     kaz_checkboxdispstr<br>
 * Input:<br>
 *           - elename    コード一覧(AppElements)のコード名
 *           - indata     入力値
 *           - idx        elements_idx ('0':日本語、'1':英語) デフォルト='0'
 * Purpose:  指定されたコードのHTMLCheckBoxの文字列のみをエスケープして戻します。
 * @param array
 * @param Smarty
 * @return string
 * -------------------------------------------------------------
 **/
function smarty_function_kaz_checkboxdispstr($params, &$smarty)
{
    $elements = AppElements::getInstance();    // コード一覧

    if( isset($params['elename']) == false){
        $smarty->trigger_error("kaz_checkboxdispstr: missing 'elename' parameter");
        return;
    }
    if( array_key_exists('indata', $params) == false){
        $smarty->trigger_error("kaz_checkboxdispstr: missing 'indata' parameter");
        return;
    }
    if( isset($params['idx']) == false){
        $params['idx'] = '0'; // 日本用
    }
    if(mb_strwidth($params['elename']) == 0){ // パラメータに値がない場合
        $rtn = "";
    }
    return AppHtmlUtil::getHTMLCheckBoxDispStr($elements->elements[$params['elename']], 
    $params['indata'], $params['idx']);
}


/**
 * -------------------------------------------------------------
 * Smarty {kaz_html_select} function plugin
 *
 * Type:     function<br>
 * Name:     kaz_html_select<br>
 * Input:<br>
 *           - elename    コード名称
 *           - indata     入力値
 *           - name       name
 *           - dfltval    デフォルト値設定。設定した場合かつ、indataが''のときindataにdfltvalを設定する。
 *           - dflt       デフォルト設定。設定しない場合""を指定する。
 *           - dfltEng    デフォルト設定(英字)。設定しない場合""を指定する。
 *           - idx        elements_idx ('0':日本語、'1':英語) デフォルト='0'
 * Purpose:  AppHtmlUtilからgetHTMLSelectを取得して戻します。
 * @param array
 * @param Smarty
 * @return getHTMLSelect文字
 * -------------------------------------------------------------
 **/
function smarty_function_kaz_html_select($params, &$smarty)
{
    require_once('AppHtmlUtil.php');
    $elements = AppElements::getInstance();    // コード一覧

    if( isset($params['elename']) == false){
        $smarty->trigger_error("kaz_html_select: missing 'elename' parameter");
        return;
    }
    if( array_key_exists('indata', $params) == false){
        $smarty->trigger_error("kaz_html_select: missing 'indata' parameter");
        return;
    }
    if( isset($params['name']) == false){
        $smarty->trigger_error("kaz_html_select: missing 'name' parameter");
        return;
    }
    if( isset($params['dflt']) == false){
        $params['dflt'] = ''; // デフォルト指定なし
    }
    if( isset($params['dfltEng']) == false){
        $params['dfltEng'] = ''; // デフォルト英字指定なし
    }
    if( $params['indata'] == '' && isset($params['dfltval']) == true){
        $params['indata'] = $params['dfltval']; // indataが''のときdfltvalを初期値とする。
    }
    if( isset($params['idx']) == false){
        $params['idx'] = '0'; // 日本用
    }
    if(mb_strwidth($params['elename']) == 0 || 
       mb_strwidth($params['name'])    == 0){ // パラメータに値がない場合
        return "";
    }

    return AppHtmlUtil::getHTMLSelect($elements->elements[$params['elename']], 
    $params['indata'], $params['name'], 
    $params['idx']=='0'?$params['dflt']:$params['dfltEng'], $params['idx']);
}


/**
 * -------------------------------------------------------------
 * Smarty {kaz_chk_error_assign} function plugin
 *
 * Type:     function<br>
 * Name:     kaz_chk_error_assign<br>
 * Input:<br>
 *           - var        テンプート変数
 *           - err        エラー配列
 * Purpose:  AppCheckUtilからchkErrorを取得し、テンプート変数に値を割り当てる。
 * @param array
 * @param Smarty
 * @return なし
 * -------------------------------------------------------------
 **/
function smarty_function_kaz_chk_error_assign($params, &$smarty)
{
    require_once('AppCheckUtil.php');
    if (empty($params['var'])) {
        $smarty->trigger_error("kaz_chk_error: missing 'var' parameter");
        return;
    }

    if( isset($params['err']) == false){
        $smarty->trigger_error("kaz_chk_error: missing 'err' parameter");
        return;
    }
    $smarty->assign($params['var'], AppCheckUtil::chkError($params['err']));
}


/**
 * Smarty kaz_td_nl2br modifier plugin
 *
 * Type:     modifier<br>
 * Name:     kaz_td_nl2br<br>
 * Purpose:  TD用nl2br。null、空文字のとき”&nbsp;”を戻す。それ以外はnl2brして戻す。
 *           $stringはサニタイズ済みであること。
 * @param string
 * @return string
 */
function smarty_modifier_kaz_td_nl2br($string)
{
    return is_null($string) || $string == '' ? "&nbsp;":nl2br($string);
}


/**
 * Smarty kaz_encErrTag modifier plugin
 *
 * Type:     modifier<br>
 * Name:     kaz_encErrTag<br>
 * Purpose:  エラーメッセージを赤にして戻す。
 *           $stringはサニタイズ済みであること。
 * @param string
 * @return string
 */
function smarty_modifier_kaz_encErrTag($string)
{
    return '<div class="font-s-red-form">' . nl2br($string) . '</div>';
}

?>

■logininfoaAmendRegisterViewInc.html

{{*
//  ============================================================================
//  Copyright (c) 2010 kaz PHP自動作成お助けTOOL. All rights reserved.
//  ============================================================================
*}}
<font color="#FF6600">*</font>は必須記入項目<br>
<!-- tbl-01 start -->
<table border="0" cellpadding="0" cellspacing="0" class="tbl-01">

{{if strtolower($o.mode) == 'ins'}}
<!-- tujyo01 -->
                <tr>
                  <th width="18%" nowrap  ><label for="login_id">ログインID&nbsp;&nbsp;<font color="#FF6600">*</font></label></th>
                  <td class="{{if $err.login_id == ''}}none{{else}}error{{/if}}"><input name="login_id"  class="form-eng"   id="login_id" type="text" size="15" maxlength="10" value="{{$o.login_id}}">
                    ※半角英数字 10文字以内&nbsp;&nbsp;{{$err.login_id|kaz_encErrTag}}</td>
                </tr>
{{else}}
<!-- tujyo01 -->
              <tr>
                <th width="18%" nowrap  >ログインID</th>
                <td>{{$o.login_id|kaz_td_nl2br}}</td>
              </tr>
<input type="hidden" name="login_id" value="{{$o.login_id}}">
{{/if}}
<!-- pulldown -->
                <tr>
                  <th width="18%" nowrap >ログイン権限&nbsp;&nbsp;<font color="#FF6600">*</font></th>
                  <td class="{{if $err.login_type == ''}}none{{else}}error{{/if}}">
 {{kaz_html_select elename='LOGIN_TYPE' indata=$o.login_type name="login_type" dfltval='' dflt=" --- 以下から選択して下さい。--- " idx=$o.c_elements_idx}}
                    {{$err.login_type|kaz_encErrTag}}</td>
                </tr><!-- tujyo01 -->
                <tr>
                  <th width="18%" nowrap  ><label for="pwd1">パスワード&nbsp;&nbsp;<font color="#FF6600">*</font></label></th>
                  <td class="{{if $err.pwd1 == ''}}none{{else}}error{{/if}}"><input name="pwd1"  class="form-eng"   id="pwd1" type="text" size="12" maxlength="8" value="{{$o.pwd1}}">
                    ※半角英数字 8文字以内&nbsp;&nbsp;{{$err.pwd1|kaz_encErrTag}}</td>
                </tr><!-- radio -->
                <tr>
                  <th width="18%" nowrap  >有効フラグ&nbsp;&nbsp;<font color="#FF6600">*</font></th>
                  <td class="{{if $err.yuko_flg == ''}}none{{else}}error{{/if}}">
 {{kaz_html_radio elename='YUKO_FLG' indata=$o.yuko_flg name="yuko_flg"  dfltval='2' dflt="" idx=$o.c_elements_idx su=10}}
                {{$err.yuko_flg|kaz_encErrTag}}</td>
                </tr>
</table>
<!-- tbl-01 end -->

■logininfoaAmendView.html

{{*
//  ============================================================================
//  Copyright (c) 2010 kaz PHP自動作成お助けTOOL. All rights reserved.
//  ============================================================================
// ログイン情報変更 画面
*}}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<title>kaz PHP自動作成お助けTOOL&nbsp;&nbsp;サイト管理システム</title>
<link rel="stylesheet" href="/samples/kazBase/kaz/admin/css/screen.css" type="text/css" media="screen,print" />
<script type="text/javascript" src="/samples/kazBase/kaz/admin/js/kaz.js"></script>
</head>

<body>
<!-- wrapper start -->
<div id="wrapper">

<!-- #BeginLibraryItem "/Library/header.lbi" -->
{{include file='view/admin/header.lbi'}}
<!-- #EndLibraryItem -->

    <!-- contents start -->
    <div id="contents">
<!-- #BeginLibraryItem "/Library/menu.lbi" -->
{{include file='view/admin/menu.lbi'}}
<!-- #EndLibraryItem -->

        <!-- main start -->
        <div id="main">
            <h1>{{if $o.c_elements_idx == '0'}}{{else}}Management {{/if}}ログイン情報{{if $o.c_elements_idx == '0'}}管理{{/if}}</h1>
            <h2>{{if $o.c_elements_idx == '0'}}{{else}}Modify {{/if}}ログイン情報{{if $o.c_elements_idx == '0'}}変更{{/if}}</h2> 

        <!-- contents start -->
        <form name="frm" id="frm" method="post" action="/samples/kazBase/kaz/admin/logininfo/logininfoa/upddo" >
        <input type="text" name="dummy" style="display:none;" />
{{kaz_token_html namespace='admin'}}

{{include file='view/admin/logininfo/logininfoaAmendRegisterViewInc.html'}}

            
            <p class="text-center"><a href="javascript:do_Submit_Clk1();"><img src="/samples/kazBase/kaz/admin/img/btn/btn_entry.gif" alt="登録" width="61" height="22" border="0" class="right5" /></a><a href="/samples/kazBase/kaz/admin/logininfo/logininfoa/listback"><img src="/samples/kazBase/kaz/admin/img/btn/btn_list.gif" alt="一覧に戻る" width="91" height="22" border="0" /></a></p>

        </form>        
        </div>
        <!-- main end -->

    <p class="clear"></p>
    </div>
    <!-- contents end -->

<!-- #BeginLibraryItem "/Library/footer.lbi" -->
{{include file='view/admin/footer.lbi'}}
<!-- #EndLibraryItem -->
</div>
<!-- wrapper end -->
{{include file='view/admin/analytics.lbi'}}

</body>
</html>

■logininfoaDetailView.html

{{*
//  ============================================================================
//  Copyright (c) 2010 kaz PHP自動作成お助けTOOL. All rights reserved.
//  ============================================================================
// ログイン情報詳細  画面
//
*}}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<title>kaz PHP自動作成お助けTOOL&nbsp;&nbsp;サイト管理システム</title>
<link rel="stylesheet" href="/samples/kazBase/kaz/admin/css/screen.css" type="text/css" media="screen,print" />
</head>

<body>
<!-- wrapper start -->
<div id="wrapper">

<!-- #BeginLibraryItem "/Library/header.lbi" -->
{{include file='view/admin/header.lbi'}}
<!-- #EndLibraryItem -->

    <!-- contents start -->
    <div id="contents">
<!-- #BeginLibraryItem "/Library/menu.lbi" -->
{{include file='view/admin/menu.lbi'}}
<!-- #EndLibraryItem -->

        <!-- main start -->
        <div id="main">
        <h1>{{if $o.c_elements_idx == '0'}}{{else}}Management {{/if}}ログイン情報{{if $o.c_elements_idx == '0'}}管理{{/if}}</h1>
        <h2>{{if $o.c_elements_idx == '0'}}{{else}}Detail {{/if}}ログイン情報{{if $o.c_elements_idx == '0'}}詳細{{/if}}</h2> 
        <!-- contents start -->
        <!-- tbl-01 start -->
        <table border="0" cellpadding="0" cellspacing="0" class="tbl-01">

<!-- tujyo01 -->
              <tr>
                <th width="18%" nowrap  >ログインID</th>
                <td>{{$o.login_id|kaz_td_nl2br}}</td>
              </tr><!-- code -->
              <tr>
                <th width="18%" nowrap  >ログイン権限</th>
                <td>
{{kaz_element elename='LOGIN_TYPE' value=$o.login_type idx=$o.c_elements_idx tdKbn='TD'}}
                </td>
              </tr><!-- tujyo01 -->
              <tr>
                <th width="18%" nowrap  >パスワード</th>
                <td>{{$o.pwd1|nl2br}}</td>
              </tr><!-- code -->
              <tr>
                <th width="18%" nowrap  >有効フラグ</th>
                <td>
{{kaz_element elename='YUKO_FLG' value=$o.yuko_flg idx=$o.c_elements_idx tdKbn='TD'}}
                </td>
              </tr><!-- tujyo01 -->
              <tr>
                <th width="18%" nowrap  >登録日時</th>
                <td>{{$o.logininfo_insert|kaz_td_nl2br}}</td>
              </tr><!-- tujyo01 -->
              <tr>
                <th width="18%" nowrap  >更新日時</th>
                <td>{{$o.logininfo_update|kaz_td_nl2br}}</td>
              </tr>

        </table>
        <!-- tbl-01 end -->
            <p class="text-center"><a href="/samples/kazBase/kaz/admin/logininfo/logininfoa/upd?login_id={{$o.login_id}}"><img src="/samples/kazBase/kaz/admin/img/btn/btn_edit.gif" alt="変更" width="41" height="20" border="0" class="right5" /></a><a href="/samples/kazBase/kaz/admin/logininfo/logininfoa/listback"><img src="/samples/kazBase/kaz/admin/img/btn/btn_list.gif" alt="一覧に戻る" width="91" height="22" border="0" /></a></p>

        </div>
        <!-- main end -->

    <p class="clear"></p>
    </div>
    <!-- contents end -->

<!-- #BeginLibraryItem "/Library/footer.lbi" -->
{{include file='view/admin/footer.lbi'}}
<!-- #EndLibraryItem -->
</div>
<!-- wrapper end -->
{{include file='view/admin/analytics.lbi'}}

</body>
</html>

■logininfoaListView.html

{{*
//  ============================================================================
//  Copyright (c) 2010 kaz PHP自動作成お助けTOOL. All rights reserved.
//  ============================================================================
// ログイン情報リスト 画面
*}}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<title>kaz PHP自動作成お助けTOOL&nbsp;&nbsp;サイト管理システム</title>
<link rel="stylesheet" href="/samples/kazBase/kaz/admin/css/screen.css" type="text/css" media="screen,print" />
<script type="text/javascript" src="/samples/kazBase/kaz/admin/js/kaz.js"></script>
    <script type="text/JavaScript"><!-- 
    function del( login_id ) {
        if ( window.confirm('{{if $o.c_elements_idx == '0'}}削除してもよろしいですか?{{else}}May I delete it?{{/if}}') ) {
            location.href='/samples/kazBase/kaz/admin/logininfo/logininfoa/deldo?' + 'login_id=' + login_id + '&{{kaz_token_html namespace='admin' base='base'}}';
        }
    }

    function submitFrm2(sort_item_name, sort_order) {
        document.frm2.sort_item_name.value = sort_item_name;
        document.frm2.sort_order.value = sort_order;
        document.frm2.submit();
    }

    function checkbox_clear(itemName){
        for(i = 0; i < document.frm.elements.length; i++) {
            if(document.frm.elements[i].type == "checkbox") {
                if(document.frm.elements[i].name == itemName) {
                    document.frm.elements[i].checked = false;
                }
            }
        }
    }

    function checkbox_set(itemName){
        for(i = 0; i < document.frm.elements.length; i++) {
            if(document.frm.elements[i].type == "checkbox") {
                if(document.frm.elements[i].name == itemName) {
                    document.frm.elements[i].checked = true;
                }
            }
        }
    }
     --></script>
</head>

<body>
<!-- wrapper start -->
<div id="wrapper">

<!-- #BeginLibraryItem "/Library/header.lbi" -->
{{include file='view/admin/header.lbi'}}
<!-- #EndLibraryItem -->
    
    <!-- contents start -->
    <div id="contents">
        
<!-- #BeginLibraryItem "/Library/menu.lbi" -->
{{include file='view/admin/menu.lbi'}}
<!-- #EndLibraryItem -->
        
        <!-- main start -->
        <div id="main">
            <h1>{{if $o.c_elements_idx == '0'}}{{else}}Management {{/if}}ログイン情報{{if $o.c_elements_idx == '0'}}管理{{/if}}</h1>
            <h2>{{if $o.c_elements_idx == '0'}}{{else}}Search {{/if}}ログイン情報{{if $o.c_elements_idx == '0'}}検索{{/if}}</h2> 
            
            <form name="frm" id="frm" method="post" action="/samples/kazBase/kaz/admin/logininfo/logininfoa/listdo">
            <input type="text" name="dummy" style="display:none;" />
            <!-- tbl-01 start -->
            <table border="0" cellpadding="0" cellspacing="0" class="tbl-01">
{{if $err.srch_topErrMessage != ""}}
                <tr>
                  <th> </th>
                  <td>
                   {{$err.srch_topErrMessage|kaz_encErrTag}}</td>
                </tr>
{{/if}}

<!-- radio -->
                <tr>
                  <th width="18%" nowrap >有効フラグ</th>
                  <td class="{{if $err.srch_yuko_flg ==''}}none{{else}}error{{/if}}">
 {{kaz_html_radio elename='YUKO_FLG' indata=$o.srch_yuko_flg name="srch_yuko_flg" dflt="全て" dfltEng="AllSelect" idx=$o.c_elements_idx su=10}}
                </td>
                </tr><!-- pulldown -->
                <tr>
                  <th width="18%" nowrap >ログイン権限</th>
                  <td class="{{if $err.srch_login_type ==''}}none{{else}}error{{/if}}">
 {{kaz_html_select elename='LOGIN_TYPE' indata=$o.srch_login_type name="srch_login_type" dflt="全て" dfltEng="AllSelect" idx=$o.c_elements_idx}}
                    {{$err.srch_login_type|kaz_encErrTag}}</td>
                </tr><!-- tujyo01 -->
                <tr>
                  <th width="18%" nowrap ><label for="srch_login_id">ログインID</label></th>
                  <td class="{{if $err.srch_login_id ==''}}none{{else}}error{{/if}}"><input name="srch_login_id"  class="form-eng"   id="srch_login_id" type="text" size="15" maxlength="10" value="{{$o.srch_login_id}}">
                    半角英数字  完全一致 &nbsp;&nbsp;{{$err.srch_login_id|kaz_encErrTag}}</td>
                </tr>

            </table>
            <!-- tbl-01 end -->
            
            <p class="text-center"><a href="javascript:document.frm.submit();"><img src="/samples/kazBase/kaz/admin/img/btn/btn_search.gif" alt="検索" width="50" height="20" border="0" /></a></p>
            <h2>{{if $o.c_elements_idx == '0'}}{{else}}Modify {{/if}}ログイン情報{{if $o.c_elements_idx == '0'}}一覧{{/if}}</h2>
            </form>
{{kaz_chk_error_assign var='err_flg' err=$err}}
{{if $err_flg == false }}{{* // エラーなし *}}
            <p class="csv"><a href="/samples/kazBase/kaz/admin/logininfo/logininfoa/csv">{{if $o.c_elements_idx=='0'}}管理者用csv出力{{else}}AdminCsv{{/if}}</a>
            </p>
            
<form name="frm2" method="post" action="/samples/kazBase/kaz/admin/logininfo/logininfoa/listupdwn">
            <input type="text" name="dummy" style="display:none;" />
          <input type="hidden" name="sort_item_name" value="">
          <input type="hidden" name="sort_order" value="">
    {{assign var="ascDesc" value='▲'}}{{*// 昇順*}}
    {{if $o.sort_order=='D'}}
        {{assign var="ascDesc" value='▼'}}{{*// 降順*}}
    {{/if}}
</form>

{{if "" != $o.del_do_chk_msg}}
            <p class="text-center">{{$o.del_do_chk_msg|kaz_encErrTag}}</p>
{{/if}}


            <!-- tbl-02 start -->
            <table cellpadding="0" cellspacing="0" class="tbl-02">

<!-- titleTD -->
                <th nowrap >№</th><!-- titleTDupdown -->
{{if 'login_type' == $o.sort_item_name}}
    <th nowrap ><a href="javascript:submitFrm2('login_type','{{$o.sort_order}}')">ログイン権限&nbsp;&nbsp;{{$ascDesc}}</a></th>
{{else}}
    <th nowrap ><a href="javascript:submitFrm2('login_type','')">ログイン権限</a></th>
{{/if}}<!-- titleTDupdown -->
{{if 'login_id' == $o.sort_item_name}}
    <th nowrap ><a href="javascript:submitFrm2('login_id','{{$o.sort_order}}')">ログインID&nbsp;&nbsp;{{$ascDesc}}</a></th>
{{else}}
    <th nowrap ><a href="javascript:submitFrm2('login_id','')">ログインID</a></th>
{{/if}}<!-- titleTDupdown -->
{{if 'pwd1' == $o.sort_item_name}}
    <th nowrap ><a href="javascript:submitFrm2('pwd1','{{$o.sort_order}}')">パスワード&nbsp;&nbsp;{{$ascDesc}}</a></th>
{{else}}
    <th nowrap ><a href="javascript:submitFrm2('pwd1','')">パスワード</a></th>
{{/if}}<!-- titleTDupdown -->
{{if 'yuko_flg' == $o.sort_item_name}}
    <th nowrap ><a href="javascript:submitFrm2('yuko_flg','{{$o.sort_order}}')">有効フラグ&nbsp;&nbsp;{{$ascDesc}}</a></th>
{{else}}
    <th nowrap ><a href="javascript:submitFrm2('yuko_flg','')">有効フラグ</a></th>
{{/if}}<!-- titleTD -->
                <th nowrap >操作</th>
           {{foreach from=$result|smarty:nodefaults item="vals" name="lineCount"}}
              <tr>

                <td align="center"  bgcolor="#FFFFFF">{{$smarty.foreach.lineCount.iteration}}</td>
<!-- code -->
                <td >
{{kaz_element elename='LOGIN_TYPE' value=$vals.login_type idx=$o.c_elements_idx tdKbn='TD'}}
                </td><!-- tujyo01 -->
                <td >{{$vals.login_id|kaz_td_nl2br}}</td><!-- tujyo01 -->
                <td >{{$vals.pwd1|kaz_td_nl2br}}</td><!-- code -->
                <td >
{{kaz_element elename='YUKO_FLG' value=$vals.yuko_flg idx=$o.c_elements_idx tdKbn='TD'}}
                </td>

                <td align="center" nowrap >
{{*//■H20081114 start *}}
{{if $vals.login_id == LOGIN_ID}}
<img src="/samples/kazBase/kaz/admin/img/spacer.gif"  width="76" height="20" border="0">
<img src="/samples/kazBase/kaz/admin/img/spacer.gif"  width="41" height="20" border="0">
<img src="/samples/kazBase/kaz/admin/img/spacer.gif"  width="41" height="20" border="0">
{{else}} 
<a href="/samples/kazBase/kaz/admin/logininfo/logininfoa/detail?login_id={{$vals.login_id}}">
<img src="/samples/kazBase/kaz/admin/img/btn/btn-detail.gif" alt="詳細" width="41" height="20" border="0"></a> 
<a href="/samples/kazBase/kaz/admin/logininfo/logininfoa/upd?login_id={{$vals.login_id}}"><img src="/samples/kazBase/kaz/admin/img/btn/btn_edit.gif" alt="変更" width="41" height="20" border="0"></a> 
<a href="JavaScript:del('{{$vals.login_id}}');"><img src="/samples/kazBase/kaz/admin/img/btn/btn_delete.gif" alt="削除" width="38" height="20" border="0"></a></td>
{{/if}}
{{*//■H20081114 end *}}
              </tr>

          {{/foreach}} 
          {{if $smarty.foreach.lineCount.total == 0}}
              <tr>
                <td align="center" nowrap colspan="6">該当するデータがありませんでした。</td>
              </tr>
          {{/if}}

            </table>
            <!-- tbl-02 end -->
            
            <p class="text-center">{{$o.pager|smarty:nodefaults}}</p>
{{/if}}
        </div>
        <!-- main end -->
    
    <p class="clear"></p>
    </div>
    <!-- contents end -->
    
<!-- #BeginLibraryItem "/Library/footer.lbi" -->
{{include file='view/admin/footer.lbi'}}
<!-- #EndLibraryItem -->

</div>
<!-- wrapper end -->
{{include file='view/admin/analytics.lbi'}}

</body>
</html>

■logininfoaReagisterView.html

{{*
//  ============================================================================
//  Copyright (c) 2010 kaz PHP自動作成お助けTOOL. All rights reserved.
//  ============================================================================
// ログイン情報登録 画面
*}}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<title>kaz PHP自動作成お助けTOOL&nbsp;&nbsp;サイト管理システム</title>
<link rel="stylesheet" href="/samples/kazBase/kaz/admin/css/screen.css" type="text/css" media="screen,print" />
<script type="text/javascript" src="/samples/kazBase/kaz/admin/js/kaz.js"></script>
</head>

<body>
<!-- wrapper start -->
<div id="wrapper">

<!-- #BeginLibraryItem "/Library/header.lbi" -->
{{include file='view/admin/header.lbi'}}
<!-- #EndLibraryItem -->

    <!-- contents start -->
    <div id="contents">
<!-- #BeginLibraryItem "/Library/menu.lbi" -->
{{include file='view/admin/menu.lbi'}}
<!-- #EndLibraryItem -->

        <!-- main start -->
        <div id="main">
            <h1>{{if $o.c_elements_idx == '0'}}{{else}}Management {{/if}}ログイン情報{{if $o.c_elements_idx == '0'}}管理{{/if}}</h1>
            <h2>{{if $o.c_elements_idx == '0'}}{{else}}Registration {{/if}}ログイン情報{{if $o.c_elements_idx == '0'}}登録{{/if}}</h2> 

      <!-- contents start -->
      <form name="frm" id="frm" method="post" action="/samples/kazBase/kaz/admin/logininfo/logininfoa/insdo" >
        <input type="text" name="dummy" style="display:none;" />
{{kaz_token_html namespace='admin'}}

{{include file='view/admin/logininfo/logininfoaAmendRegisterViewInc.html'}}

            
            <p class="text-center"><a href="javascript:do_Submit_Clk1();"><img src="/samples/kazBase/kaz/admin/img/btn/button-sub.gif" alt="登録" width="61" height="22" border="0" class="right5" /></a><a href="/samples/kazBase/kaz/admin/logininfo/logininfoa/inss"><img src="/samples/kazBase/kaz/admin/img/btn/button-reset.gif" alt="リセット" width="84" height="22" border="0" /></a></p>

        </form>        
        </div>
        <!-- main end -->

    <p class="clear"></p>
    </div>
    <!-- contents end -->

<!-- #BeginLibraryItem "/Library/footer.lbi" -->
{{include file='view/admin/footer.lbi'}}
<!-- #EndLibraryItem -->
</div>
<!-- wrapper end -->
{{include file='view/admin/analytics.lbi'}}

</body>
</html>

■サイト:http://kazpgm.ddo.jp/

5/19 20:00-02:00 smartyでも、自分の都合いいように使えるではないか。ちょと、ほっとした。自作「テンプレート関数プラグイン」関数名の接頭子を”kaz”にした。smartyのverup時にぶつかるかもしれないので。
5/25 23:20-23:30『smarty_modifier_kaz_chk_error』をボツにして『smarty_function_kaz_chk_error_assign』を作ったので書き換えた。
6/2 『if( isset($params['indata']) == false){』を『if( array_key_exists('indata', $params) == false){』にした。
6/14 1:00-1:30 最新内容にした。自WEBにこのページのAタグを置いた。
6/15 23:00-23-00 チェックボックス用のsmartyプラグインsmarty_function_kaz_html_checkbox、smarty_function_kaz_checkboxdispstr)を追加した。
8/9 10:00-10:30 http://d.hatena.ne.jp/kazpgm/20100809/1281315402の内容を反映した。
8/14 12:00-12:30 logininfoaAmendRegisterViewInc.html、logininfoaAmendView.html、logininfoaDetailView.html、logininfoaListView.html、logininfoaRegisterView.htmlを追記した。
8/14 17:30-17:40 AppSmartyPlugin.phpを修正。「function smarty_modifier_kaz_encErrTag($string)」の「return '<div class="font-s-red-form">' . $string . '</div>';」を「return '<div class="font-s-red-form">' . nl2br($string) . '<br />';」にした。”\n”を”<br/>”にしたいので。
2011/02/01 23:00-23:10 logininfoAをlogininfoaに修正した。これはhttp://d.hatena.ne.jp/kazpgm/20110131/1296487044による修正を反映したもの。
2011/03/07 4:00-4:10 http://d.hatena.ne.jp/kazpgm/20110307/1299523681(TOOL更新_Ver0.1Zd(次期バージョン)の管理者側もすべてアクションで切り分けるように修正した。(modeパラメータを使わないようにした。)など。)の内容を反映した。