This template shows the page header with its description, table of contents (TOC) and navigation tree
Paramters: Page, Description, Theme, IncludeToc (=true)
var mPars = { mPage: (__request.args.page ? string.deserialize(__request.args.page) : null ) ?? args.page ?? page, smDesc: ((__request.args.desc) ? ((__request.args.desc is map) ? __request.args.desc : { __ : __request.args.desc }) : null) ?? ((args.desc) ? ((args.desc is map) ? args.desc : { __ : args.desc }) : null) ?? null, slLang: ((__request.args.lang) ? ((__request.args.lang is list) ? __request.args.lang : [__request.args.lang]) : null) ?? ((args.lang) ? ((args.lang is list) ? args.lang : [args.lang]) : null) ?? null, sTheme: __request.args.theme ?? args.theme ?? null, bIncToc: __request.args.inctoc ?? args.inctoc ?? true, bIncTocCom: __request.args.inctoccom ?? args.inctoccom ?? true }; //Web.Pre(Json.Format(mPars)); //Get Language(s) var sLang=null; var slLang=null; var smDesc=mPars.smDesc; if (mPars.slLang==null) { let sLang=String.ToLower(mPars.mPage.language); if (sLang not in ["en","es","eu"]) let sLang='en'; //by default let slLang= [sLang]; let smDesc..={ (sLang) : smDesc["__"] }; }//if else { //@himikel #mod 2011-02-02: Set Current Language with '*' var nMainLang=0; foreach (var sLang in mPars.slLang) { if (String.StartsWith(sLang,"*")) { let nMainLang=__index; let sLang=String.SubStr(sLang,1); }//if if (sLang not in ["en","es","eu"]) let sLang='en'; //by default if (sLang not in slLang) let slLang..= [sLang]; } let sLang=slLang[nMainLang]; //set main language }//el //Web.Pre(sLang); //Web.Pre(Json.Format(smDesc)); //Web.Pre(Json.Format(slLang)); //Set Main Theme var smLangThemes= { en: "pink", es: "orange", eu: "green" }; var sTheme= (mPars.sTheme ? String.ToLower(mPars.sTheme) : null) ?? smLangThemes[sLang] ?? "white"; //Web.Pre(Json.Format(sTheme)); //Set Theme Colors var sLgtCol,sDrkCol; var smLgtCol= { pink: "rgb(255, 204, 255)", orange: "rgb(255, 204, 153)", green: "rgb(204, 255, 204)", white: "white" }; var smDrkCol= { pink: "rgb(204, 153, 255)", orange: "rgb(255, 153, 0)", green: "rgb(51, 153, 102)", white: "white" }; var sLgtCol=smLgtCol[sTheme]; var sDrkCol=smDrkCol[sTheme]; //Comppose Description Line if (smDesc!=null) { var sDescLine="<p>"; foreach (var sLang1 in slLang) { if (__index>0) let sDescLine..=" "; var sTheme1= (mPars.sTheme ? String.ToLower(mPars.sTheme) : null) ?? smLangThemes[sLang1] ?? "white"; var sLgtCol1=smLgtCol[sTheme1]; var sDesc=smDesc[sLang1]; if (String.IndexOf(sDesc,"<br />")!=0) let sDesc=" "..sDesc.." "; else let sDesc="<br /> "..String.SubStr(sDesc,6).." "; let sDescLine..="<span style='background-color: "..sLgtCol1..";'>"..sDesc.."</span>"; } let sDescLine..="</p>"; Web.Html(sDescLine); }//if if (mPars.bIncToc) { //var sPageToc1=Wiki.Toc('/'); //Web.Text(sPageToc1); //Web.Text(Page.Toc); //Prepare Page Toc: Interactive Discussion var smIntComSect={ en: "Interactive discussion", es: "Discusión interactiva", eu: "Eztabaida interaktiboa" }; var smIntComMark={ en: ".3a)_Interactive_discussion", es: ".3a)_Discusi.c3.b3n_interactiva", eu: ".3a)_Eztabaida_interaktiboa" }; var sIntComSect=smIntComSect[sLang]; var sIntComMark=smIntComMark[sLang]; //var sIntComMark="IC"; var sIntComLi="<li><span>:) </span><a href='#"..sIntComMark.."' rel='internal'>"..sIntComSect.."</a></li>"; //Web.Pre(Json.Format(Web.Text(Wiki.Toc(mPars.mPage.parent.path)))); //Set Page Toc //Web.Pre("PagePath: "..mPars.mPage.Path); var sPageTocUri=Site.Uri.."@api/deki/pages/=Template:@himikel%252FWikiToc/contents?mode=view&format=xhtml&pageid=1&path="..Uri.Encode(mPars.mPage.Path).."&authtoken="..user.authtoken; //Web.Pre("PageTocUri: "..sPageTocUri); var xPageToc=Web.Html(sPageTocUri); //var xPageToc=Web.Html(Site.Uri.."/@api/deki/pages/=Template:@himikel%252FWikiToc/contents?mode=view&format=xhtml&pageid=1&path=/MindTouch/DekiMVC"); //var xPageToc=Wiki.Template("Template:@himikel/WikiToc", { path: "/MindTouch/DekiMVC/" }); //var xPageToc=Wiki.Toc("/MindTouch/DekiMVC"); //var xPageToc=Wiki.Toc(mPars.mPage.Path); var sPageToc=Web.Text(xPageToc); let sPageToc=String.Replace(sPageToc,"\n",""); //var sPageToc=Xml.Text{ doc: xPageToc, xml: true }; //Web.Pre(Json.Format(sPageToc)); //Add Comments section in Toc if (mPars.bIncTocCom) { if (String.IndexOf(sPageToc,"<div class=\"wiki-toc\"><em>")>=0) //No Headers //if (String.IndexOf(sPageToc,"<div class=\"wiki-toc\"><em>No headers</em></div>")>=0) //No Headers { let sPageToc="<div class='wiki-toc'><ol style='list-style-type:none; margin-left:0px; padding-left:0px;'>"; let sPageToc..=sIntComLi; let sPageToc..="</ol></div>"; }//if else { var nEndOlPos=0; if (sPageToc!="") let nEndOlPos=String.LastIndexOf(sPageToc,"</ol>"); if (nEndOlPos>0) let sPageToc=String.SubStr(sPageToc,0,nEndOlPos)..sIntComLi..String.SubStr(sPageToc,nEndOlPos); }//el }//if //Contents & Navigation table var xPageTree=Wiki.Template("Template:@neilw/AjaxWikiTree", { path: mPars.mPage.path, secure: true }); //var xPageTree=Wiki.Template("Template:@himikel/WikiTree", { path: mPars.mPage.path, secure: true }); //Web.Pre(Json.Format(xPageTree)); //var xPageTree=AjaxWikiTree{ path: mPars.mPage.path, secure: true }; var xlPageTreeScript=Xml.List{ doc: xPageTree, xpath: "//script", xml: true }; var xPageTreeDiv=xPageTree["//body"]; //var xPageTreeDiv=xPageTree["//div"]; var sPageTreeDiv=Xml.Text{ doc: xPageTreeDiv, xml: true }; //Web.Pre(Json.Format(sPageTreeDiv)); //Web.Pre(Json.Format(Xml.List{ doc: xPageTree, xpath: "//*", xml: true })); var sContNavTable=" <table cellspacing='1' cellpadding='1' border='0' style='width: 100%; table-layout: fixed;'> <tbody> <tr> <td valign='top' style='width: 45%;'> <span style='font-size: medium;'><strong><span style='background-color: "..sDrkCol..";'> v </span></strong></span> "..sPageToc.." </td> <td valign='top' style='width: 5%;'> <span style='font-size: medium;'><strong><span style='background-color: "..sDrkCol..";'> <a title='..' href='"..mPars.mPage.parent.path.."'> < </a> <br /> </span></strong></span> </td> <td valign='top' style='width: 50%;'> <span style='font-size: medium;'><strong><span style='background-color: "..sDrkCol..";'> > </span></strong></span> "..sPageTreeDiv.." </td> </tr> </tbody> </table>"; Web.Html(sContNavTable); //Add JavaScripts foreach (var xPageTreeScript in xlPageTreeScript) Web.Xml(xPageTreeScript); }//if