Search:
Template:MindTouch > IDF > Controls > PageListWithBreadcrumbs

PageListWithBreadcrumbs

    Table of contents
    No headers
    /***
        USAGE:
    
        PageListWithBreadcrumbs(pages, ancestor)
    
        PARAMETERS:
    
        pages : list
            List of pages objects to show in the list.
    
        (optional) ancestor : map (default: homepage)
            Common parent page.  Is used to determine where the breadcrumbs should start from.
    
    ***/
    
    var pages = $0 ?? $pages;
    var ancestor = $1 ?? $ancestor;
    
    var ancestor_depth = ancestor ? #ancestor.parents : 0;
    
    var pages_by_parent_id = { };
    var ordered_parent_ids = [ ];
    foreach(var page in pages) {
        var parent_id = page.parent.id;
        if(pages_by_parent_id[parent_id] is nil) {
            let ordered_parent_ids ..= [ parent_id ];
            let pages_by_parent_id ..= { (parent_id): [ page ] };
         } else {
            let pages_by_parent_id ..= { (parent_id): pages_by_parent_id[parent_id] .. [ page ] };
        }
    }
    
    foreach(var parent_id in ordered_parent_ids) {
        <div class=(__count % 2 ? "mt-control-list mt-control-list-alt": "mt-control-list")>
            var pages = pages_by_parent_id[parent_id];
          
            // show linked page path
            <div class="mt-control-block-category">
                var parents = pages[0].parents;
                if(ancestor_depth > 0) {
                    let parents = list.splice(parents, 0, ancestor_depth);
                }
                let parents = list.splice(parents, -1);
                <ol>
                    foreach(var parent in parents) {
                        <li>web.link(parent.uri, parent.title);</li>
                    }
                </ol>
            </div>
    
            // list child pages
            <div class="mt-control-block-content">
                <dl>
                    foreach(var page in pages) {
                        <dt>
                            web.link(page.uri, page.title);
                            if (page.rating.count > 0) {
                                " ";
                                <span class="rating">
                                var upvotes = Num.round(page.rating.score * page.rating.count);
                                wiki.localize("MindTouch.IDF.pagelist.rating", [upvotes, page.rating.count]);
                                </span>
                            }
                        </dt>
                        <dd>
                            wiki.text(page.path, "Overview")
                        </dd>
                    }
                </dl>
            </div>
        </div>
    }
    

    Files (0)

     

    Comments (0)

    You must login to post a comment.