Login
Artifact [facfc6abaa]
Login

Artifact facfc6abaa5f263e40ea1d79651fc9ab7f83cc99:



const CGI = api.cgi
const skin = object{
    name: "Default Skin",
    pageTitle: {Default Page Title}
    out: api.io.output
}

var pathRoot = CGI.cgiRoot
skin.mainMenu = array [
    object {
        label: "Home",
        path: pathRoot
    },
    object {
        label: "Checkins",
        path: pathRoot+'manifest'
    },
    object {
        label: "Timeline",
        path: pathRoot+'timeline'
    },
    object {
        label: {Reports},
        path: pathRoot+'reports'
    },
    object {
        label: "Files",
        path: pathRoot+'dir'
    },
    object {
        label: 'Tmplish',
        path: pathRoot+'tmplish'
    },
    object {
        label: 'Widgets',
        path: pathRoot+'widgets'
    },
    object {
        label: 'Exception!',
        path: pathRoot+'exception'
    }
]
if( CGI.isLocalServer ){
    $skin.mainMenu.push object {
        label: 'ENV',
        path: pathRoot+'env'
    }
}

unset pathRoot

skin.outputMainMenu = proc(cgi){
    assert this.mainMenu
    var i, m
    const len = this.mainMenu.length()
    const out = api.io.output
    out({<div class='menu-main'>})
    const PI = (cgi.request.ENV.PATH_INFO_SPLIT ? cgi.request.ENV.PATH_INFO_SPLIT.0 : false)
    var isActive
    for {i=0} {i < len} {i+=1} {
        m = this.mainMenu.(i)
        isActive = (PI && (0===m.path.indexOf(cgi.cgiRoot+PI)))
        ('object' === typename m) || throw m
        out("<a href='", m.path, "'")
        $out " class='menu-entry"
        isActive && out(" active")
        out("'>", cgi.htmlEscape(m.label), {</a>})
    }
    out({</div>})
}

skin.outputOpener = proc(cgi){
    const out = api.io.output
    const F = cgi.getFossilInstance()
    cgi.setContentType('text/html; charset=utf-8')

    var title
    if('function' === typename this.pageTitle){
        title = this.pageTitle(cgi)
    }else if(this.pageTitle){
        title = this.pageTitle
    }else{
        title = cgi.request.ENV.PATH_INFO
    }
    assert title
    var pageTitle
    if(F){
        pageTitle = F.getProjectName() +': '+title
    }else{
        pageTitle = title
    }
    title = cgi.htmlEscape(title)
    pageTitle = cgi.htmlEscape(pageTitle)

    $out {<!DOCTYPE html><html><head>}
    var subPath = (cgi.request.ENV.PATH_INFO ? cgi.request.ENV.PATH_INFO.substr(1) : '')
    $out "<base href='" cgi.cgiRoot subPath "'/>"
    $out {<title>} pageTitle {</title>}
    if(true){
        $out '<link rel="stylesheet" href="' cgi.cgiRoot 'download/css/default.css" type="text/css" '\
            'media="screen" />'
    }else{
        $out {<style type='text/css'>}
        Fossil.file.passthrough(__FILE+".css")
        $out {</style>}
    }
    $out {</head><body>}

    $out {<div class='page-header'>}
    out({<div class='header-project-name'>}, cgi.getFossilInstance().getProjectName(), {</div>})
    if(title) {
        out({<div class='header-page-title'>}, title, {</div>})
    }
    this.outputMainMenu(cgi)
    $out {</div>}

}


skin.outputCloser = proc(cgi){
    $this.out {<footer class='footer'>}
    $this.out {This is the footer.}
    // BUG: "%1$0.4f".applyFormat(Fossil.runTimeMs().toDouble()/1000) is 0.0000 due to what appears to be a division bug
    $this.out ' Page generated using approximately ' "%1$0.3f".applyFormat(Fossil.runTimeMs().toDouble()/1000) ' seconds of CPU time.'
    // th1ish bug: CWAL_SCR_CANNOT_CONSUME: !+cgi.getVar('showSrc',0) (or (![-+]1), for that matter
    $this.out {<div>Powered by the <a href='http://fossil.wanderinghorse.net/repos/cwal/index.cgi/wiki/th1ish'>th1ish scripting engine</a>.<br/>}
    if(!(+cgi.getVar('showSrc',0)) && cgi.config.showPageSourceLinks){
        $this.out {<div><a href='?showSrc=1'>Source code for this page</a></div>}
    }
    $this.out {</div></footer></body>}
}

skin /* this file's import() result must be the skin object */