Optimal OPML Browser Released

I've released a significant revision to my OPML browser: Optimal.

If you hate the name, just be glad I'm not going to camel-case it. 😉

6 comments

  1. Dan, I think this is absolutely brilliant – thank you! Optimal does exactly what I’ve been asking for lately when I speak of “Feed Grazing” – the ability to browse OPML hierarchies PLUS read feeds. Its a different category of software to Aggregators IMHO, a category that I call Feed Grazers.

    One question – is it possible to pass a paramater to have the default view fully collapsed? I know, we’re impossible to please aren’t we! ;->

  2. Thank you for such a nice compliment, James.

    I’m actually planning on adding a parameter for the initial expanded/collapsed state, but I haven’t decided how to implement it yet. However, if you look at the HTML code, you’ll notice that I’ve got the hierarchical level reflected in the class attribute of each ul element, so I’m already half-way there.

  3. One possible way (i’m sure you are on it already) which I’ve used for expanding or collapsing all items in a similar fashion was to use javascript to toggle between CSS classes.
    I haven’t had a chance to look at your code ( i plan on using it shortly), so this might be obvious to you
    I use functions like this.
    function expandAll(){
    tmp = document.getElementsByTagName(‘div’);
    for (i=0;i

  4. oops less than sign in italics

    function expandAll(){
    tmp = document.getElementsByTagName(‘div’);
    for (i=0;itmp.length;i++){
    if (tmp[i].className == ‘description’) {
    tmp[i].style.display = ‘none’;
    }
    if (tmp[i].className == ‘descriptionlong’) {
    tmp[i].style.display = ‘block’;
    }
    }
    }
    function collapseAll(){
    tmp = document.getElementsByTagName(‘div’);
    for (i=0;iless thantmp.length;i++){
    if (tmp[i].className == ‘description’) {
    tmp[i].style.display = ‘block’;
    }
    if (tmp[i].className == ‘descriptionlong’) {
    tmp[i].style.display = ‘none’;
    }
    }
    }

  5. Thanks, Matt. I’m not into JavaScript very heavily (which is why it took me so long to get the inclusion working), so I’ll take any suggestions.

    The issue I’m more concerned with at the moment, though, is passing a parameter in the query string along with the url that determines the INITIAL expand/collapse state: something like expansionstate=0 for collapse all, expansionstate=1 to expand the first level, expansionstate=-1 to expand all, etc.

    To be honest, I think I’ve got it. I just need to sit down and code it. 🙂

  6. I’d also like to look to the source OPML for that info, too. After all, there is an expansionState element in the head element….

Comments are closed.