Linux上ClearSilver的使用入门

来源:互联网 发布:软件开发师培训 编辑:程序博客网 时间:2024/05/22 02:13
1. 安装
#cd /usr/local/src
#tar xzvf clearsilver-0.10.4.tar.gz
#cd clearsilver-0.10.4
#./configure --disable-apache --enable-gettext
#make install
注: --disable-apache为不产生apache1.x用的模块
,--enable-gettext为多语言对应用选项。

2.功能要求:
在一个列举区域名字(从数据库取得的信息做成)的页面A上,
选择某一个执行更新,即从该页面A跳转到页面B上,
页面信息更新完毕后,点确定按钮执行,跳转到更新成功与否画面。

3. CGI文件做成 changearea.cgi
#include <stdio.h>
#include <string.h>
#include <ClearSilver.h>
#include "libEmsMng.h"
#include "emsCgi.h"

#define CGI_NAME "changearea.cgi"                // 自身のCGI名前
#define CGI_RET "getarea.cgi"                    // リターン画面CGI
#define TEMPLATE_GET AMS_SHARE "changearea.cst"    // 編集画面用テンプレート
#define TEMPLATE_FORWARD AMS_SHARE "result.cst"    // 結果画面用テンプレート

int main(void)
{
    NEOERR *err;
    CGI *cgi;
    char *template_file = TEMPLATE_GET;
    
    if(cgi_init(&cgi, NULL) != STATUS_OK){
        return ERROR;
    }
//zzz
FILE *fp = fopen("/var/test.log", "w");

    char *method = hdf_get_value(cgi->hdf, "CGI.RequestMethod", "GET");
//zz
fprintf(fp, "------method = %s-------\n", method);

    /* 一回目エリア編集画面表示 */
    if(strcmp(method, "GET") == 0){
        char *areaNoStr = hdf_get_value(cgi->hdf, "Query.areaNo", "");
        char *areaName = hdf_get_value(cgi->hdf, "Query.areaName", "");
        hdf_set_value(cgi->hdf, "area.no", areaNoStr);
        hdf_set_value(cgi->hdf, "area.name", areaName);
        
    }else if(strcmp(method, "POST") == 0){
        /* 編集成功か表示画面を設定 */
        template_file = TEMPLATE_FORWARD;
        
        const char *message = "CGIエラー";
        if(cgi_parse(cgi) == STATUS_OK){
            char *areaNoChngStr = hdf_get_value(cgi->hdf, "Query.areanochng", "");
            char *areaNameChng = hdf_get_value(cgi->hdf, "Query.areanamechng", "");
//zzz
fprintf(fp, "areanochng = %s\n", areaNoChngStr);
fprintf(fp, "areanamechng = %s\n", areaNameChng);

            if((strlen(areaNoChngStr) != 0) && (strlen(areaNameChng) != 0)){
                if(startEmsMng() == OK){
                    if(changeArea(atol(areaNoChngStr), areaNameChng) == OK){
                        message = "エリア情報編集成功";
                    }else{
                        message = "エリア情報編集失敗";
                    }
                    endEmsMng();
                }else{
                    message = "エリア情報編集失敗";
                }
            }
        }
        /* エリア編集結果情報を設定 */
        hdf_set_value(cgi->hdf, "message", message);
    }
    
    hdf_set_value(cgi->hdf, "return_url", CGI_RET);
    hdf_set_value(cgi->hdf, "Config.NoCache", "1");
    err = cgi_display(cgi, template_file);
    if(err != STATUS_OK){
        cgi_neo_error(cgi, err);
    }
    cgi_destroy(&cgi);
    
    return OK;
}

2. 模板文件做成 changearea.cst(部分)
<SCRIPT LANGUAGE="JavaScript">
<!--
function changeAreaFunc(){
document.form1.submit();
return true;
}
//-->
</SCRIPT>

<form name="form1" method="post" action="changearea.cgi">
<input type="hidden" name="dummy" value="dummy" />
<input type="hidden" name="areanochng" value="<?cs var:area.no ?>" />
<input type="text" name="areanamechng" size="30" maxlength="80" value="<?cs var:area.name ?>" />
<a href="JavaScript:changeAreaFunc()"><img src="./zz.gif“ alt="確定"></a>
0 0
原创粉丝点击