めまぴークライアントのデモ9のソース

めまぴークライアントのデモ9の記事はこちらです。

■Application.cfm

<cfprocessingdirective pageEncoding = "UTF-8">
<cfsetting enableCFoutputOnly="yes">

<cfapplication name="#hash( getCurrentTemplatePath() )#"
    clientmanagement="Yes"
    sessionmanagement="yes"
    loginStorage="session"
    sessiontimeout=#CreateTimeSpan(1, 0, 0, 0)# >

<!---===================================
設定
====================================--->
<cfparam name="cookie.user_id"  default="">
<cfparam name="cookie.key"      default="">
<cfset request.user_id          = cookie.user_id>
<cfset request.key              = cookie.key>
<cfset request.cat_id           = 11>

<!--- 通常
<cfset request.proxyServer      = "">
<cfset request.proxyPort        = "80">
--->
<!--- 会社
<cfset request.proxyServer      = "xx.xx.xx.xx">
<cfset request.proxyPort        = "xx">
--->
<cfset request.proxyServer      = "">
<cfset request.proxyPort        = "80">
<cfset request.url              = "http://memapi.utalab.com/index.cfm?go=">

<!---
現在のサーバー時刻から
世界標準時 (UTC: Universal Time Coordinated) からの相対情報を取得し、
9時間プラスすることにより日本時間とする。
--->
<cfset info = GetTimeZoneInfo()>
<cfset UTC = DateAdd("h", info.utcHourOffset, now())>
<cfset request.now = DateAdd("h", 9, UTC)>

■index.cfm

<cfprocessingdirective pageEncoding = "UTF-8">
<!---/////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////--->
<cfparam name="url.p"   default="">
<cfparam name="url.key" default="">

<cfswitch expression = "#url.p#">
    <!--- addEnd --->
    <cfcase value="addEnd">
        <cfset url.key = lcase(hash(createUUID()))>
        <cfhttp url="#request.url#dataAddEx" method="post">
            <cfhttpparam type="formField" name="user_id"    value="#request.user_id#">
            <cfhttpparam type="formField" name="key"        value="#request.key#">
            <cfhttpparam type="formField" name="cat_id"     value="#request.cat_id#">
            <cfhttpparam type="formField" name="c1"         value="#dateformat(request.now,'yyyy/mm/dd')# #timeformat(request.now,"HH:mm:ss.")##right("00" & timeformat(request.now,"l"),3)#">
            <cfhttpparam type="formField" name="c2"         value="#url.key#">
            <cfhttpparam type="formField" name="c3"         value="#form.c3#">
            <cfhttpparam type="formField" name="i1"         value="0">
        </cfhttp>

        <cflocation url="index.cfm?key=#url.key#" addtoken="no">
    </cfcase>
</cfswitch>

<cfif url.key neq "">
    <!--- from=toにより完全一致を実現 --->
    <cfhttp url="#request.url#dataGetEx" method="post">
        <cfhttpparam type="formField" name="user_id"    value="#request.user_id#">
        <cfhttpparam type="formField" name="key"        value="#request.key#">
        <cfhttpparam type="formField" name="cat_id"     value="#request.cat_id#">
        <cfhttpparam type="formField" name="fil_id"     value="11I1_0">
        <cfhttpparam type="formField" name="fld_list"   value="cat_id,id,c1,c2">
        <cfhttpparam type="formField" name="fromto_fld" value="c2">
        <cfhttpparam type="formField" name="from"       value="#url.key#">
        <cfhttpparam type="formField" name="to"         value="#url.key#">
        <cfhttpparam type="formField" name="row"        value="10">
        <cfhttpparam type="formField" name="page"       value="1">
        <cfhttpparam type="formField" name="type"       value="wddx">
    </cfhttp>

    <cfwddx action="wddx2cfml" input="#cfhttp.filecontent#" output="outData">

    <cfif outData.recCount eq 0>
        <cfsavecontent variable="fm">
        <cfoutput>
        <br>
        既に処理が終わったか、該当データがありません。
        </cfoutput>
        </cfsavecontent>
    <cfelse>
        <cfhttp url="#request.url#dataGetEx" method="post">
            <cfhttpparam type="formField" name="user_id"    value="#request.user_id#">
            <cfhttpparam type="formField" name="key"        value="#request.key#">
            <cfhttpparam type="formField" name="cat_id"     value="#request.cat_id#">
            <cfhttpparam type="formField" name="fil_id"     value="11I1_0">
            <cfhttpparam type="formField" name="fld_list"   value="cat_id,id,c1,c2">
            <cfhttpparam type="formField" name="fromto_fld" value="c1">
            <cfhttpparam type="formField" name="to"         value="#outData.data.c1#">
            <cfhttpparam type="formField" name="row"        value="10">
            <cfhttpparam type="formField" name="page"       value="1">
            <cfhttpparam type="formField" name="type"       value="wddx">
        </cfhttp>

        <cfwddx action="wddx2cfml" input="#cfhttp.filecontent#" output="outData">

        <cfsavecontent variable="fm">
        <cfoutput>
        <br>
        あと#evaluate("outData.recCount -1")#件待ちです。<br>
        <br>
        このURLをブックマークに登録しておくと、何件待ちか確認できます。
        </cfoutput>
        </cfsavecontent>
    </cfif>
<cfelse>
    <cfset fm = cst_fm()>
</cfif>
<cfset st = cst_getData()>
<cfset cst_layout(st, fm)>
<!---=================================================================
cst_fm
==================================================================--->
<cffunction name="cst_fm" access="public" returnType="string" output="yes">
    <cfset var local = structNew()>

    <cfsavecontent variable="local.tmp">
    <cfoutput>
    <br>
    <form name="frm" method="post">
    <table>
        <tr>
            <th>お名前</th>
            <td><input type="text" name="c3"></td>
        </tr>
    </table>
    <input type="button" value="add" onClick="js_add()">
    </form>
    <script language="JavaScript">
    <!--
    function js_add(){
        with(document.frm){
            if(confirm("add OK?")){
                action = "index.cfm?p=addEnd";
                submit();
            }
        }
    }
    //-->
    </script>
    </cfoutput>
    </cfsavecontent>

    <cfreturn local.tmp>
</cffunction>
<!---=================================================================
cst_getData
==================================================================--->
<cffunction name="cst_getData" access="public" returnType="struct" output="no">

    <cfhttp url="#request.url#dataGetEx" method="post">
        <cfhttpparam type="formField" name="user_id"    value="#request.user_id#">
        <cfhttpparam type="formField" name="key"        value="#request.key#">
        <cfhttpparam type="formField" name="cat_id"     value="#request.cat_id#">
        <cfhttpparam type="formField" name="fil_id"     value="11I1_0">
        <cfhttpparam type="formField" name="fld_list"   value="cat_id,id,c1,c2">
        <cfhttpparam type="formField" name="row"        value="10">
        <cfhttpparam type="formField" name="page"       value="1">
        <cfhttpparam type="formField" name="type"       value="wddx">
    </cfhttp>

    <cfwddx action="wddx2cfml" input="#cfhttp.filecontent#" output="outData">

    <cfreturn outData>
</cffunction>
<!---=================================================================
cst_layout
==================================================================--->
<cffunction name="cst_layout" access="public" returnType="void" output="yes">
    <cfargument name="stru" type="struct" required="yes">
    <cfargument name="fm"   type="string" required="yes">

    <cfset var local= structNew()>
    <cfset var st   = arguments.stru>

    <cfoutput>
    <!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" lang="ja" xml:lang="ja">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta http-equiv="content-style-type" content="text/css; charset=utf-8" />
        <meta http-equiv="Content-Script-Type" content="text/javascript" />
        <title>めまぴークライアントのデモ(待ち行列)</title>
        <meta name="keywords" content="めまぴー,memapi" />
        <meta name="description" content="めまぴークライアントのデモ(待ち行列)です。" />
        <link href="common.css" rel="stylesheet" type="text/css" media="all" />
        <script type="text/javascript" src="common.js"></script>
        <script type="text/javascript" src="index.js"></script>
    </head>
    <body>
    <!-- container -->
    <div id="container">

        <!-- header -->
        <div id="header">
            <!-- left -->
            <div class="left">
                <h1><a href="index.cfm" accesskey="1">めまぴークライアントのデモ(待ち行列)</a></h1>
                <h2>by <a href="http://memapi.utalab.com/" target="_blank">めまぴー</a></h2>
            <!-- /.left --></div>

            <!-- right -->
            <div class="right">
            <!-- /.right --></div>

        <!-- /##header --></div>

        <div class="clearblock"/>

        <!-- left -->
        <div id="left">
            <!-- menu -->
            <div class="menu">
                <p class="title">STATUS</p>

                <table>
                    <tr>
                        <th>ret</th>
                        <td align="right" id="ret">#st.ret#</td>
                    </tr>
                    <tr>
                        <th>pageCount</th>
                        <td align="right" id="pageCount">#st.pageCount#</td>
                    </tr>
                    <tr>
                        <th>recCount</th>
                        <td align="right" id="recCount">#st.recCount#</td>
                    </tr>
                </table>

            <!-- /.menu --></div>
        <!-- /##left --></div>

        <!-- center -->
        <div id="center">
            <!-- content -->
            <div id="content">
                <h3>待ち行列</h3>

                #arguments.fm#

            <!-- /##content --></div>
        <!-- /##center --></div>

        <div class="clearblock"/>

        <!-- footer -->
        <div id="footer">
            <form name="frm_cookie">
                <table border="0" width="100%">
                    <tr>
                        <td>user_id:<input type="text" name="user_id" id="user_id" value="#request.user_id#"></td>
                        <td>key:<input type="text" name="key" id="key" value="#request.key#"></td>
                        <td>
                            <input type="button" value="cookie change" onClick="js_cookie()">
                            <input type="button" value="cookie delete" onClick="js_cookie_del()">
                        </td>
                    </tr>
                </table>
            </form>
        <!-- /##footer --></div>
    <!-- /##container --></div>

    </body>
    </html>
    </cfoutput>
</cffunction>

■index_k.cfm

<cfprocessingdirective pageEncoding = "UTF-8">
<!---/////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////--->
<cfparam name="url.p"       default="">
<cfparam name="url.page"    default="1">

<cfswitch expression = "#url.p#">
    <!--- exec --->
    <cfcase value="exec">
        <cfhttp url="#request.url#dataUpdEx" method="post">
            <cfhttpparam type="formField" name="user_id"    value="#request.user_id#">
            <cfhttpparam type="formField" name="key"        value="#request.key#">
            <cfhttpparam type="formField" name="cat_id"     value="#request.cat_id#">
            <cfhttpparam type="formField" name="id"         value="#form.id#">
            <cfhttpparam type="formField" name="i1"         value="1">
        </cfhttp>
    </cfcase>
</cfswitch>

<cfset st = cst_getData(url.page)>
<cfset cst_layout(st)>
<!---=================================================================
cst_getData
==================================================================--->
<cffunction name="cst_getData" access="public" returnType="struct" output="no">
    <cfargument name="page" type="string" required="yes">

    <cfhttp url="#request.url#dataGetEx" method="post">
        <cfhttpparam type="formField" name="user_id"    value="#request.user_id#">
        <cfhttpparam type="formField" name="key"        value="#request.key#">
        <cfhttpparam type="formField" name="cat_id"     value="#request.cat_id#">
        <cfhttpparam type="formField" name="fil_id"     value="11I1_0">
        <cfhttpparam type="formField" name="fld_list"   value="cat_id,id,c1,c2,c3">
        <cfhttpparam type="formField" name="row"        value="10">
        <cfhttpparam type="formField" name="page"       value="#arguments.page#">
        <cfhttpparam type="formField" name="type"       value="wddx">
    </cfhttp>

    <cfwddx action="wddx2cfml" input="#cfhttp.filecontent#" output="outData">

    <cfreturn outdata>
</cffunction>
<!---=================================================================
cst_layout
==================================================================--->
<cffunction name="cst_layout" access="public" returnType="void" output="yes">
    <cfargument name="stru" type="struct" required="yes">

    <cfset var local= structNew()>
    <cfset var qry  = "">

    <cfoutput>
    <!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" lang="ja" xml:lang="ja">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta http-equiv="content-style-type" content="text/css; charset=utf-8" />
        <meta http-equiv="Content-Script-Type" content="text/javascript" />
        <title>めまぴークライアントのデモ(待ち行列)</title>
        <meta name="keywords" content="めまぴー,memapi" />
        <meta name="description" content="めまぴークライアントのデモ(待ち行列)です。" />
        <link href="common.css" rel="stylesheet" type="text/css" media="all" />
        <script type="text/javascript" src="common.js"></script>
        <script type="text/javascript" src="index.js"></script>
    </head>
    <body>
    <!-- container -->
    <div id="container">

        <!-- header -->
        <div id="header">
            <!-- left -->
            <div class="left">
                <h1><a href="index_k.cfm" accesskey="1">めまぴークライアントのデモ(待ち行列)</a></h1>
                <h2>by <a href="http://memapi.utalab.com/" target="_blank">めまぴー</a></h2>
            <!-- /.left --></div>

            <!-- right -->
            <div class="right">
            <!-- /.right --></div>

        <!-- /##header --></div>

        <div class="clearblock"/>

        <!-- left -->
        <div id="left">
            <!-- menu -->
            <div class="menu">
                <p class="title">STATUS</p>

                <table>
                    <tr>
                        <th>ret</th>
                        <td align="right" id="ret">#st.ret#</td>
                    </tr>
                    <tr>
                        <th>pageCount</th>
                        <td align="right" id="pageCount">#st.pageCount#</td>
                    </tr>
                    <tr>
                        <th>recCount</th>
                        <td align="right" id="recCount">#st.recCount#</td>
                    </tr>
                </table>

            <!-- /.menu --></div>
        <!-- /##left --></div>

        <!-- center -->
        <div id="center">
            <!-- content -->
            <div id="content">
                <h3>待ち行列</h3>

                <cfif arguments.stru.recCount eq 0>
                    行列はありません。
                <cfelse>
                    <cfset qry = arguments.stru.data>
                    <form name="frm" method="post">
                    <input type="hidden" name="id" value="">

                    #arguments.stru.recCount# rec
                    <table border="1">
                        <tr>
                            <th>登録日時</th>
                            <th>登録者</th>
                        </tr>

                        <cfloop query="qry">
                            <tr>
                                <td>
                                    <cfif (qry.currentRow eq 1) and (url.page eq 1)>
                                        <a href="javascript:js_exec(#qry.id#)">#qry.c1#</a>
                                    <cfelse>
                                        #qry.c1#
                                    </cfif>
                                </td>
                                <td>#qry.c3#</td>
                            </tr>
                        </cfloop>
                    </table>
                    page:
                    <cfloop index="local.idx" from="1" to="#st.pageCount#">
                        <cfif local.idx eq url.page>
                            <strong>#local.idx#</strong>
                        <cfelse>
                            <a href="index_k.cfm?page=#local.idx#">#local.idx#</a>
                        </cfif>
                    </cfloop>
                    </form>
                </cfif>
                <script language="JavaScript">
                <!--
                function js_exec(pID){
                    with(document.frm){
                        if(confirm("syori OK?")){
                            id.value = pID;
                            action = "index_k.cfm?p=exec";
                            submit();
                        }
                    }
                }
                //-->
                </script>

            <!-- /##content --></div>
        <!-- /##center --></div>

        <div class="clearblock"/>

        <!-- footer -->
        <div id="footer">
            <form name="frm_cookie">
                <table border="0" width="100%">
                    <tr>
                        <td>user_id:<input type="text" name="user_id" id="user_id" value="#request.user_id#"></td>
                        <td>key:<input type="text" name="key" id="key" value="#request.key#"></td>
                        <td>
                            <input type="button" value="cookie change" onClick="js_cookie()">
                            <input type="button" value="cookie delete" onClick="js_cookie_del()">
                        </td>
                    </tr>
                </table>
            </form>
        <!-- /##footer --></div>
    <!-- /##container --></div>

    </body>
    </html>
    </cfoutput>
</cffunction>