Tabla de contenidos
    No hay encabezados
    /**
        Author: Blake Harms
        CoAuthor: @himikel
    
        version: 1.0.3 (modified by @himikel)
        
        HOW TO USE:
        Create a dekiscript block and add:
            blog();
        Change the page permissions to whatever you would like. But if you only want you to be able to add a post, set it to semi-public and give ONLY you permission to create.
    */
    /******************* Configurable options *********************/
    var postsPerPage = $0 ?? $postsPerPage ?? 5;                   // # of posts to show per page
    var recentNum    = $1 ?? $recentNum ?? 10;                     // # of recent posts to show in sidebar
    var commentsNum  = $2 ?? $commentsNum ?? 10;                   // # of recent comments to show in sidebar
    var categoriesNum= $3 ?? $categoriesNum ?? 10;                 // # of top categories to show in sidebar
    //@himikel #add 2010-06-13: New Linked blog parameter
    var sLinkedBlogsTitle = __request.args.linkedBlogsTitle ?? args.linkedBlogsTitle ?? null;
    var sLinkedBlogsUrl = __request.args.linkedBlogsUrl ?? args.linkedBlogsUrl ?? null;
    //@himikel #add 2010-10-04: New Page parameter
    var nPageId = __request.args.pageid ?? args.pageid ?? -1;
    var bpage=page;
    if (nPageId>=0)
    {
      //Web.Html("<br />");Web.Text("PageId: "..nPageId);
      let bpage=Wiki.GetPage(Num.Int(nPageId));
      //Web.Pre(Json.Format(bpage));
    }
    /****************** /Configurable options  ********************/
    
    var startAt = __request.args.start ?? 0;
    
    <html><head>
    <style type="text/css">"
    /* main */
        #posts {    width:70%; float:left; margin-left:1%;    }
        .post {    padding-right:10px;    }
        .post .post-head a {    color:black !important;   }
        .post .post-subhead {     padding-left:50px;font-size:12px;    }
        .post .post-subhead .post-date {    padding:0px; margin:0px;    }
        .post .post-subhead .post-author {     padding:0px; margin:0px; font-weight:bold; font-size:14px;    }
        .post .post-subhead .post-author a {     color:black;    }
        .post .post-body {    padding:10px; font-size-adjust: 0.5   }
        .post .post-footer .post-edited {    font-style:italic; color: #AAA; padding:10px;    }
        .post .post-footer .post-links a {    padding-right:20px;    }
        .post .post-footer .post-tags a {    padding-right: 5px; color:black !important;    }
    /* sidebar */
        #blog-sidebar {    float:right; width:24%;    }
        #blog-sidebar {    border-left: 2px solid black; padding-left:2%; padding-bottom:21px;    }
        #blog-sidebar ul {    margin-top:5px; list-style-type:none; padding-left: 5px; font-size:12px;   }
        #blog-sidebar ul li	{   background: url('/skins/common/images/bullet.gif') 0 1px no-repeat; padding-left: 10px;   }
    /* paginate */
        #paginator {    padding:15px; clear:both;    }
        #paginator a.paginate-previous {    float:left; text-align:left;    }
        #paginator a.paginate-next {    float:right; text-align:right;    }
    "</style>
    </head></html>
    //@himikel mod 2010-10-04: If user is anonymous don't show the 'new post' button
    if (!user.anonymous)
      wiki.create("New Blog Post",_,_,true,"Blog #" .. #bpage.subpages);
    //@himikel #mod 2011/09/26: fixed from ver 1.0.7 (@NeilW http://developer.mindtouch.com/Template:BBlog)
    //@himikel #mod 2010/10/04: only wiki pages & without max limit
    var blog = list.sort([ p foreach var p in bpage.subpages ], _, true, "date.compare($left.date,$right.date)");
    //var blog= wiki.getSearch("path:" .. string.searchescape(bpage.path) .."/*",0xFFFFFF,"-date","type:wiki");
    //var blog= wiki.getSearch("path:" .. string.searchescape(bpage.path) .."/*", #bpage.subpages+1,"-date");
    //@himikel add 2010/10/04: order posts by creation date
    var mCreatInd=[];
    foreach (var post in blog)   
      let mCreatInd..=[{ index: (__index), date: (Date.Format(post.revisions[0].date,"yyyy-MM-dd")) }];
    var mCreatOrd=List.OrderBy(mCreatInd,"date descending");
    if(startAt > 0){
        if(startAt < #blog){
            //@himikel mod 2010/10/04: order posts by creation date
            let mCreatOrd = List.splice(mCreatOrd, 0, startAt);
            //let blog = List.splice(blog, 0, startAt);
        }
    }
    //"#Posts: "..#blog;
    var nPostCount=0;
    <div id="blog-body">
        <div id="posts">
        if(#blog> 0){
            var shown = 0;
              //@himikel mod 2010/10/04: order posts by creation date
              foreach(var co in mCreatOrd) {
    //        foreach(var p in blog){
                //"#"..__count.." Title: "..p.Title;                    
                 var p=blog[co.index];
                 let nPostCount+=1;
                 if(! p.path){
                    continue;
                }
                if(shown >= postsPerPage){
                    break;
                }
            <div class="post">
                <div class="post-head">
                    <h2><a href=(uri.encode(p.path))>p.title</a></h2>
                </div>
                <div class="post-subhead">
                    "by ";
                    <span class="post-author">
                        var author= p.revisions[0].author;
                        <a href=(author.homepage.uri)>author.name</a>
                    </span>
                    " on ";
                    <span class="post-date">
                        p.revisions[0].date;
                    </span>
                </div>
                <div class="post-body">                                
                    var wikiPage=wiki.page(p.path)["//div[@id='header']"];                
                    var bReadMore=(string.length(xml.text(wikiPage))>0);
                    if (!bReadMore) {
                        let wikiPage=wiki.page(p.path);
                    }
                    wikiPage; 
                    //@himikel #add 2010-10-13: to add JavaScript code
                    var xlPageScripts=Xml.List{ doc: wikiPage, xpath: "//script", xml: true };
                    foreach (var xPageScript in xlPageScripts)
                    { 
                      //Because of performance only add FlashPlayer embed script
                      if (String.IndexOf(xPageScript,"flashembed")>=0)
                        Web.Xml(xPageScript);                  
                    }//fe
                    //Web.Xml(wikiPage);
                    if (bReadMore) {
                        <b><a href=(uri.encode(p.path))>"Leer más..."</a></b>
                        //web.link(p.path,"Leer más...");
                    }
                </div>
                <div class="post-footer">
                    if(#p.revisions >1){
                        <div class="post-edited">
                            "Last Edited: "..p.date .. " ";
                            "by ";
                            <a href=(p.author.homepage.uri)>p.author.name</a>
                        </div>
                    }
                    <div class="post-links">
                        <a href=(p.path.."#comment")>"Comments ("..#p.comments..")"</a><a href=(p.path)> "Views: "..p.viewcount</a>
                    </div>
                    if(#p.tags >0) {
                    <div class="post-tags">
                        "Tags: ";
                        var tags = Map.keys(p.tags);
                        foreach(var tag in tags){
                            <a href=(uri.build(site.uri,"/Special:Tags",{'tag':tag}))>tag</a>
                        }
                    </div>
                    }
                </div>
            </div>
                let shown+=1;
            }
        }
        else {
            "No posts";
        }
            <div id="paginator">
            if(startAt > 0){
                var previous = 0;
                if(startAt - postsPerPage > 0){
                    let previous = startAt - postsPerPage;
                }
                <a href=(uri.build(bpage.uri,_,{start:previous})) class="paginate-previous"> "< Previous posts"</a>
            }
            if(startAt + postsPerPage <= #bpage.subpages -1){
                var next = startAt + nPostCount - 1;
                //var next = startAt + postsPerPage;
                <a href=(uri.build(bpage.uri,_,{start:next})) class="paginate-next"> "Next posts >"</a>
            }
            </div>
            <br />
            <br />
        </div>
        <div id="blog-sidebar">
            //@himikel #add
            <div class="license-rss" style="text-align:center">
                //@himikel #add 2010-06-13
                var sRssUrl=Uri.Build(Site.Api, ["pages"]).."/="..Uri.Encode(Uri.Encode(bpage.path)).."/feed/new";
                //var sRssUrl=Uri.Build(bpage.Api, "feed/new");
                <a rel="rss" href=(sRssUrl)>
                   <img alt="RSS" style="border-width:0" width="35" height="35" align="left" src="http://www.gureweb.net/@api/deki/files/83/=feed.png?size=thumb" />
                </a>
                <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/es/">
                    <img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-sa/3.0/es/88x31.png" />
                </a>
            </div>
            //@himikel #add 2010-06-13
            if (sLinkedBlogsUrl!=null)
            {
                <div id="linkedBlogs">
                    <h3>"Linked Blogs"</h3>
                    <ul> 
                        <li><a href=(sLinkedBlogsUrl)>(sLinkedBlogsTitle)</a></li> 
                    </ul>
                </div>
            }
            <div id="recentPosts">
                <h3>"Recent Posts"</h3>
                <ul>
                    //@himikel mod 2010/10/08: order posts by creation date
                    var recco=list.splice(mCreatOrd, recentNum-1, -1, []);
                    //var recent = wiki.getSearch("path:" .. string.searchescape(bpage.path) .."/*", recentNum,"-date");
                    if(#recco > 1) {
                    //if(#recent > 1) {
                        foreach(var rco in recco){
                        //foreach(var post in recent){
                           var post=blog[rco.index];
                            <li><a href=(post.path)> post.title</a></li>
                        }
                    }
                    else {
                        <li>"No recent posts."</li>
                    }
                </ul>
            </div>
            <div id="recentComments">
                <h3>"Recent Comments"</h3>
                var comments= [];
                foreach(var p in bpage.subpages){    let comments ..= p.comments;    }
                if(#comments != 0){
                    var comment= wiki.api(uri.build(bpage.api,"comments",{limit:5,sortby:"-date.posted",depth:"infinity"}));
                    var com_page = xml.list(comment,"//comment/page.parent/title");
                    var com_path = xml.list(comment,"//comment/page.parent/path");
                    var com_num = xml.list(comment,"//comment/number");
                    var i=0;
                    <ul>
                        foreach(var n in com_num){
                            <li><a href=(com_path[i])>com_page[i]</a>; " ("; <a href=(com_path[i].."#comment"..n)>n</a>; ")"; </li>
                            let i +=1;
                        }
                    </ul>
                }
            </div>
            <div id="categories">
                <h3>"Top Categories"</h3>
                // Get subpages tags. Credit: SteveB (TagDirectory)
                var tagmap = { }; 
                var tag_count = [ ];
                foreach(var p in bpage.subpages) { 
                    var tags = p.tags; 
    
                    // check if page has no tags; if so make up a default list
                    if(!#tags) {
                        let tags = [ { name: '(unclassified)', type: 'text' } ];
                    }
    
                    // foreach tag on the page, append the page to that tag's list
                    foreach(var t in tags where t.type == 'text') {
                        let tagmap ..= { (t.name) : tagmap[t.name] .. [ p ] };
                    } 
                }
                if(#tagmap) {
                    // count how many pages each tag has
                    foreach(var tag in map.keys(tagmap)) { 
                        let tag_count ..= [ { 'tag': tag, 'count': #tagmap[tag] } ]; 
                    } 
                }
                let tag_count = List.splice(List.Sort(tag_count, 'count',true),categoriesNum);
                <ul>
                    foreach(var category in tag_count){
                        <li> <a href=("/Special:Tags?tag=" .. category.tag)>category.tag</a>" ("..category.count..")" </li>
                    }
                </ul>
            </div>
        </div>
    </div>
    
    Etiquetas (Edit tags)
    • No tags

    Archivos 3

    ArchivoTamañoFechaAdjuntado por 
     feed.png
    No hay descripción
    4.08 kB20:01, 13 Jun 2010himikelAcciones
     linkedin.png
    No hay descripción
    3.42 kB20:01, 13 Jun 2010himikelAcciones
     twitter.png
    No hay descripción
    3.8 kB20:01, 13 Jun 2010himikelAcciones
    Debe inicie sesión para enviar un comentario.