ARAGO for Internet Wiki Project AkuAku

This web site is powered by Arago for Internet v7.0 UTF-8 edition on FreeBSD
SPC main menu Expand/Fold
Products 取扱商品 Expand/Fold
SouthWind  Expand/Fold
Q&A Technical support Expand/Fold
BBS 掲示板 Expand/Fold
Easy PC life Expand/Fold

Last Edit Date: 06/03/2008
indexのプログラム
rewrite.prgで作成されたprgファイルをrewrite.prgはdo &programnameでprgファイルを実行しindex.htmlページを表示します。
ではindex.prgがどのようにできているかを見ます。

#!/usr/local/aragoi/aragoi.exe index.prg     <-この行がファイルの先頭になる Unicesでは先頭にBOMが有るとエラーになる
THISPAGE = "index"
THISPAGETITLE = "Southern Pacific Computer Inc. home page"     <-Browserの上部に表示されるタイトル
AUTHOR = "Southern Pacific Computer Inc."            <-このプログラムの作者、
WEBURL = "www.soupacific.com" && web url for  favicon        <-ドメイン名
CGINAME ="akuaku/"                        <-cgiディレクトリ
MAINMENUTITLE = "SPC main menu"                    <-このページのメインメニュ名
ADMINNAME = "ADMIN"                        <-管理者名
ADMINMAIL = "admin@soupacific.com"                <-管理者のメイルアドレス
HOMEPAGENAME = "Home Page"
*******ordinary basic setting
SET COMPATIBLE OFF                    <-お決まりの設定
SET LANGUAGE TO UTF8                    <-必ず指定する
SET DATE TO ANSI
SET CENTURY ON
SET DELETE ON                        <-DELETE ONでDBFを操作する
****Get premade FORM data
LOGIN = GETFORM("LOGIN")                <-Formが実行されたときにsubmitボタンLOGINを取得
NAME = GETFORM("username")                <-同 usernameを取得
USERIP =GETENV("REMOTE_ADDR")                <-セキュリティのための保存
******???language info, we select proper language page from db
REMOTELANG  =GETENV("HTTP_ACCEPT_LANGUAGE")        <-将来的に言語を調べる
DATE=DATE()
**********pass page info***********
**using this for security, where this call came and also set return page to
toppage = "index" &&top page is named as index.prg    <-documentrootでのdefaultのページ名
gparents = GETFORM("parents")                <-Formが実行されたときにHiddenで送られる前の前ページ名情報
parents = GETFORM("mypage")                <-同 前のページ名
mypage = thispage                     <-このページ名
***********************************
IF LOGIN = "login"                    <-submitボタンがloginだったら認証プログラムへ行く
    DO auth.prg
    RETURN
ENDIF
**open database with index   index on pagename lastaccess
USE content INDEX pagename, laccess, topmenu ALIAS maindb    <-メインのデータベース
**master index is PAGENAME
**Locate right record
IF .NOT. SEEK(THISPAGE)                    <-このページに行く 無いと言う事はありえないが念のため
                            errorだったら
  OUTPUT('Content-type: text/html;CHARSET=utf-8 ')    <-Apacheのcgiが期待する文字列、ついでにcharsetもおまけ
  OUTPUT("",1)                        <-crlfが2回いる
  OUTPUT("",1)
  OUTPUT("page not found")
  RETURN
ENDIF
*****for giving happiness for Apache 2.x cgi
OUTPUT('Content-type: text/html;CHARSET=utf-8 ')    <-Apacheのcgiが期待する文字列、ついでにcharsetもおまけ
OUTPUT("",1)
OUTPUT("",1)
OUTPUT('<html>',2) &&here we need carriage return
OUTPUT("<HEAD>")
OUTPUT('<meta name="Robots" content="All">')
OUTPUT('<meta http-equiv="Content-Type" content="text/html; charset=utf-8">') <-ここでBrowserに文字情報
*****web name, page title set in above
OUTPUT('<meta name="author" content="' + AUTHOR  + '">')
OUTPUT('<link rel="SHORTCUT ICON" href="http://' + WEBURL + '/favicon.ico">') <-ここでBrowserに文字情報
OUTPUT("<TITLE>" + THISPAGETITLE + "</TITLE>")

****need to set location for css file and javascript file
OUTPUT('<link rel="stylesheet" type="text/css" href="http://' + WEBURL + '/spcneat.css" />') && for css

link
OUTPUT('<script src="http://' + WEBURL + '/spcneat.js"></script></HEAD>') && for javascript link
**********end of head
OUTPUT('<body class="spc_wiki">')
**Show project name
OUTPUT('<TABLE BORDER="1" CELLSPACING="1" WIDTH="100%" HEIGHT="24"><TR>')
OUTPUT('<TD WIDTH="100%" VALIGN="MIDDLE" BGCOLOR="#FFFF00"><H3 ALIGN="CENTER">ARAGO for Internet Wiki

Project AkuAku</H3></TD></TR></TABLE>')
** define FORM action
OUTPUT('<FORM NAME = "' + THISPAGE + '" ACTION="http://' + WEBURL + '/' + CGINAME  + SUBDIR +  

'rewrite.prg?' + THISPAGE  + '" METHOD="POST" ENCTYPE="application/x-www-form-urlencoded">')

*************send parents information
OUTPUT('<INPUT TYPE="HIDDEN" NAME="parents" VALUE="'+ mypage + '">')    <-ここでBrowserに文字情報
OUTPUT('<INPUT TYPE="HIDDEN" NAME="mypage" VALUE="'+ mypage + '">')    <-プログラムによって異なった値に変更されていることがある
*************
**top site header
OUTPUT('<div id="siteheader">')
*** first header table
output('<div style="padding: 0pt 10px; background-color: rgb(34, 34, 34); color: rgb(255, 255, 255); font

-weight: bold; font-size: 12px;"><b style="float: right; color: rgb(51, 255, 0);">Commercial Software is

ALSO good for you</b>')
OUTPUT('<a href="http://' + WEBURL + '/" style="color: rgb(255, 255, 255); text-decoration:

none;">Southern Pacific Computer Inc. </a> </div></div>')
OUTPUT('<div id="spc-top">This web site is powered by Arago for Internet v7.0 UTF-8  edition on FreeBSD

</div>')
** end header table

OUTPUT('<tbody>') && starting body
 
**Display as normal page
DO DISPLAYMODE                            <-メニュー、メイン部分の表示プログラムへ                

                            
OUTPUT('</tr></tbody></table></div>')
IF maindb->BOTTOM = .T.
  OUTPUT('<div id="spc-bot">')
  OUTPUT('<small>' + maindb->BMTXT + '</small></div>')        <-BMTXTは一番下に表示さるデータ
ENDIF
OUTPUT('</DIV></FORM></HTML>')
*********end all html process********

***** each procedure starts

*******************************
PROCEDURE LEFTMENU                    <-左メニューの生成
*******************************
SELECT 2
USE menuorder                        <-メインメニュー一覧 DBF

I = 0
DO WHILE .NOT. EOF()
    I = I + 1
    IF .NOT. EOF() .AND. DELETED = .F.
        TOPMENU = RTRIM(MENUTITLE)
        CNT = LTRIM(STR(I)) && create macro value
        TOGGLENAME = "mod-spcMenu&CNT"
        IF I = 1
            OUTPUT('<td id="leftcolumn" valign="top">  <div class="box box-spcMenu"><div

class="box-title"><table style="width: 174px; height: 19px;" class="box-title">')
            OUTPUT('<tbody><tr><td> <span class="box-titletext">'+ TOPMENU + '</span> </td>')
        ELSE
            OUTPUT('<div class="box box-spcMenu"><div class="box-title"><table style="width:

174px; height: 19px;" class="box-title">')
            OUTPUT('<tbody><tr><td> <span class="box-titletext">'  + TOPMENU +'</span> </td>')
        ENDIF

        OUTPUT('<td width="11"><a title="Expand/Fold contents" href="javascript: toggle(' + "'" +

TOGGLENAME + "'" + ');"><img src="http://' + WEBURL + '/tree.jpg" width=12 height=12 border=0

alt="Expand/Fold"></a></td> </tr> </tbody></table> </div>')
        OUTPUT('<div id="' + TOGGLENAME  + '" style="display: block;" class="box-data">')

        OUTPUT('<table><tbody>')
        RET = GETLMENU(RTRIM(PAGENAME))
        SELECT 2
         OUTPUT('</tbody></table></div></div>')
     ENDIF
     IF .NOT. EOF()
            SKIP
    ENDIF        
ENDDO    
OUTPUT('</div></div></div>')
USE
SELECT 1
                編集メニューへのログイン画面
OUTPUT('<div class="box box-login_box"><div class="box-title"><table class="box-title">')
OUTPUT('<tbody><tr><td> <span class="box-titletext">Login</span></td>')
OUTPUT('<td width="11"><a title="Members"  href="javascript: toggle(' + "'mod-login_box'" + ');"><img

src="http://' + WEBURL + '/tree.jpg" width=12 height=12 border=0 alt="Expand/Fold"> </a> </td>

</tr></tbody></table></div>')
OUTPUT('<div id="mod-login_box" style="display: none;" class="box-data">')
OUTPUT('<table border="0">')
OUTPUT('<tbody><tr><td><table><tbody><tr><td class="module"><label for="login-

user">account:</label></td></tr>')
OUTPUT('<tr><td><input name="account" id="login-user" size="20" type="text" /></td></tr>')
OUTPUT('<tr><td class="module"><label for="login-pass">password:</label></td></tr>')
OUTPUT('<tr><td><input name="password" id="login-pass" size="20" type="password" /></td></tr>')
OUTPUT('<tr><td><input name="login" value="login" type="submit" /></td></tr>')
OUTPUT('<tr><td class="module" valign="bottom"> <a class="linkmodule" href="http://' + WEBURL + '/'  +

SUBDIR +  'registration.html" title="Click here to register"> register </a><br>  <a class="linkmodule"

href="http://' + WEBURL + '/'  + SUBDIR +  'forgot.html" title="Click here if forgotten your

password">forgot password</a></td></tr> </tbody></table></td></tr> </tbody></table>')
OUTPUT('<input name="stay_in_ssl_mode" value="" type="hidden" />')
OUTPUT('</div></div> <br /> </td>')
RETURN
*******************************

*******************************
FUNCTION GETLMENU            <-サブメニューの生成
*******************************
PARAMETERS VAL1 && pagename
SELECT 5
USE lmenu                 <-全てのサブメニュ-のDBF

SKEY = VAL1

IF .NOT. EMPTY(SKEY)
    GO TOP
    DO WHILE .NOT. EOF()     
        LOCATE FOR TOPMENU = SKEY REST &&SEEK(SKEY)
        IF EOF()
             EXIT
        ENDIF    
        IF DELETED = .F. .AND. PRIVATE = .F.
            OUTPUT('<tr align="left"><td><a href="http://' + WEBURL + '/'  + SUBDIR + FILTER

(RTRIM(pagenameii), "_", "/") +'.html" >' + RTRIM(menu) + '</a></tr></td>')
        ENDIF
        SKIP
    ENDDO
ENDIF
USE
RETURN .T.
*******************************

*******************************
PROCEDURE RIGHTMENU                <-右メニューの生成
*******************************
OUTPUT('<td id="rightcolumn" valign="top"><div class="box box-upcoming_events"><div class="box-title">

<table class="box-title"> <tbody> <tr><td><span class="box-titletext">Advertisement</span></td>')
OUTPUT('<td width="11"><a title="Advertisement"  href="javascript: toggle(' + "'right_box'" + ');"><img

src="http://' + WEBURL + '/tree.jpg" width=12 height=12 border=0 alt="Expand/Fold"> </a></td>

</tr></tbody> </table></div>')
OUTPUT('<div id="right_box" style="display: block;" class="box-data">' + RMTXT + '</div>')
OUTPUT('</div></tr></tbody></table></div>')
RETURN
*******************************
*******************************
PROCEDURE DISPLAYMODE            <-主画面の出力
*******************************
OUTPUT('<div id="spc-mid"><table id="spc-midtbl" border="0" cellpadding="0" cellspacing="0"> ')
IF LEFT = .T.
  DO LEFTMENU
ENDIF
OUTPUT(' <td id="centercolumn" valign="top"> <div id="spc-center">')
************************************
&&following are language select TABs        <-言語TABの処理
OUTPUT('<div id="tabsI"><ul>')
OUTPUT('<li><a href="http://' + WEBURL + '" title="Link 1"><span>日本語</span></a></li>')
OUTPUT('<li><a href="http://' + WEBURL + '/en/index.html" title="Link 2"><span>English</span></a></li>')
OUTPUT('<li><a href="http://' + WEBURL + '/tch/index.html" title="Link 3"><span>正體</span></a></li>')
OUTPUT('<li><a href="http://' + WEBURL + '/sch/index.html" title="Link 4"><span>简体</span></a></li>')
OUTPUT('</ul></div>')
************************************
OUTPUT('<div style="text-align: right;">Last Edit Date :' + DTOC(LASTMODIFY) + '</div>')

OUTPUT(MMTXT)
IF RIGHT = .T.
  DO RIGHTMENU
ENDIF
RETURN
******************************

Advertisement Expand/Fold