Changeset 1707

Show
Ignore:
Timestamp:
05/19/07 10:17:42 (17 months ago)
Author:
mbonetti
Message:

cleanup + added new commands. o: opens the URL of the current item, shift-o
opens the URL of the current item in a new window/tab

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/gregarius/plugins/keyboardnavigation.php

    r1706 r1707  
    9696            case 'h': return __kbnav_ScrollTop(); break; 
    9797            case 'c': return __kbnav_ToggleCollapse(); break; 
     98            case 'o': return (event.shiftKey ? __kbnav_OpenUrlNW() : __kbnav_OpenUrl()); break; 
    9899            default : return true; 
    99100        } 
     
    121122        if (kbNavCurrent == -1)kbNavCurrent=0; 
    122123        var item = kbNavItems[kbNavCurrent]; 
    123  
    124         if (item && (r1 = new RegExp(".*es.([0-9]+),([0-9]+).*,([0-9]+).*","gm").exec(item.innerHTML))) { 
    125             return r1; 
     124        if (item) { 
     125            var ret = {}; 
     126            if (rx = new RegExp(".*es.([0-9]+),([0-9]+).*,([0-9]+).*","gm").exec(item.innerHTML)) { 
     127                ret.id = rx[1]; 
     128                ret.state = rx[2]; 
     129                ret.cid = rx[3]; 
     130            } 
     131            if (href = item.getElementsByTagName('h4').item(0).getElementsByTagName('a').item(0).href) { 
     132                ret.url = href; 
     133            } 
     134            return ret; 
    126135        } 
    127136 
     
    131140    function __kbnav_ToggleCollapse() { 
    132141        if ('function' == typeof(toggleItemByID)) { 
    133             r1=__kbnav_CurrentItemData(); 
    134             if (null != r1) { 
    135                 id=r1[1]; 
    136                 toggleItemByID(id); 
     142            var r=__kbnav_CurrentItemData(); 
     143            if (null != r && r.id) { 
     144                toggleItemByID(r.id); 
    137145            } 
    138146        } 
     
    142150    function __kbnav_ToggleSticky() { 
    143151        if ('function' == typeof(_stickyflag_sticky)) { 
    144             r1=__kbnav_CurrentItemData(); 
    145             if (null != r1) { 
    146                 id=r1[1]; 
    147                 s =r1[2]; 
    148                 _stickyflag_sticky(id, s); 
     152            var r=__kbnav_CurrentItemData(); 
     153            if (null != r && r.id && r.state) { 
     154                _stickyflag_sticky(r.id, r.state); 
    149155            } 
    150156        } 
     
    154160    function __kbnav_ToggleFlag() { 
    155161        if ('function' == typeof(_stickyflag_flag)) { 
    156             r1=__kbnav_CurrentItemData(); 
    157             if (null != r1) { 
    158                 id=r1[1]; 
    159                 f =r1[2]; 
    160                 _stickyflag_flag(id, f); 
     162            var r=__kbnav_CurrentItemData(); 
     163            if (null != r && r.id && r.state) { 
     164                _stickyflag_flag(r.id, r.state); 
    161165            } 
    162166        } 
     
    198202     
    199203    function __kbnav_NextMarkRead() { 
    200         r1=__kbnav_CurrentItemData(); 
    201  
    202         if (null != r1 && (r1[2] & 1)) { 
     204        var r=__kbnav_CurrentItemData(); 
     205 
     206        if (null != r && (r.state & 1)) { 
    203207            if (! document.all) { 
    204                 c = unreadCnt(-1,r1[3]); 
    205          } else { 
    206             c = 1; 
    207          } 
    208             id=r1[1]; 
    209             s =r1[2] & 30; 
    210             setItemHide(id, (c == 0)); 
    211             setState(id,s); 
     208                c = unreadCnt(-1,r.cid); 
     209            } else { 
     210                c = 1; 
     211            } 
     212            setItemHide(r.id, (c == 0)); 
     213            setState(r.id,r.state & 30); 
    212214            kbNavItems.splice(kbNavCurrent,1); 
    213215            __kbnav_scrollTo(0); 
    214              
    215         } else if(null != r1) { 
     216        } else if(null != r) { 
    216217            // non logged in users can't mark as read, so let this behave as a scroll. 
    217218            __kbnav_scrollTo(1); 
     
    223224    } 
    224225     
     226    function __kbnav_OpenUrl() { 
     227        var r = __kbnav_CurrentItemData(); 
     228        if (null != r && r.url) { 
     229            document.location=r.url; 
     230        } 
     231        return false; 
     232    } 
     233    function __kbnav_OpenUrlNW() { 
     234        var r = __kbnav_CurrentItemData(); 
     235        if (null != r && r.url) { 
     236            window.open(r.url,'_blank'); 
     237        } 
     238        return false; 
     239    } 
     240     
    225241<?php 
    226242    flush();