Changeset 198 for trunk/plugins


Ignore:
Timestamp:
05/25/05 08:28:27 (14 years ago)
Author:
niko
Message:

#242: show anchors on the page

Location:
trunk/plugins/Linker
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/plugins/Linker/dialog.html

    r29 r198  
    77      document.getElementById('[urltable]').style.display=this.checked?'':'none'; 
    88      document.getElementById('[mailtable]').style.display=this.checked?'none':''; 
     9      document.getElementById('[anchortable]').style.display=this.checked?'none':''; 
    910    " /> <l10n>URL Link</l10n></label></legend> 
    1011    <table id="[urltable]" width="100%"> 
     
    6364      document.getElementById('[mailtable]').style.display=this.checked?'':'none'; 
    6465      document.getElementById('[urltable]').style.display=this.checked?'none':''; 
     66      document.getElementById('[anchortable]').style.display=this.checked?'none':''; 
    6567    "/> <l10n>Email Link</l10n></label></legend> 
    6668    <table id="[mailtable]" width="100%"> 
     
    7981    </table> 
    8082  </fieldset> 
     83 
     84  <fieldset id="[anchorfieldset]"> 
     85    <legend><label><input type="radio" name="[type]" value="anchor" onclick=" 
     86      document.getElementById('[urltable]').style.display=this.checked?'none':''; 
     87      document.getElementById('[mailtable]').style.display=this.checked?'none':''; 
     88      document.getElementById('[anchortable]').style.display=this.checked?'':'none'; 
     89    "/> <l10n>Anchor-Link</l10n></label></legend> 
     90    <table id="[anchortable]" width="100%"> 
     91      <tr> 
     92        <th><label for="[anchor]"><l10n>Anchor:</l10n> </label></th> 
     93        <td> 
     94            <select name="[anchor]" id="[anchor]"> 
     95            </select> 
     96        </td> 
     97      </tr> 
     98    </table> 
     99  </fieldset> 
     100 
    81101  <div style="text-align:right"> 
    82102    <input type="button" id="[ok]"     value="_(OK)"     /> 
  • trunk/plugins/Linker/linker.js

    r175 r198  
    7373  { 
    7474    var m = a.href.match(/^mailto:(.*@[^?&]*)(\?(.*))?$/); 
     75    var anchor = a.href.match(/^#(.*)$/); 
    7576    if(m) 
    7677    { 
     
    9091        } 
    9192      } 
     93    } 
     94    else if (anchor) 
     95    { 
     96      //Anchor-Link 
     97      inputs.type = 'anchor'; 
     98      inputs.anchor = m[1]; 
    9299    } 
    93100    else 
     
    173180     } 
    174181    } 
     182    else if(values.type == 'anchor') 
     183    { 
     184      if(values.anchor) 
     185      { 
     186        atr.href = values.anchor.value; 
     187      } 
     188    } 
    175189    else 
    176190    { 
     
    422436    this.dialog.getElementById('urltable').style.display = ''; 
    423437    this.dialog.getElementById('mailtable').style.display = 'none'; 
     438    this.dialog.getElementById('anchortable').style.display = 'none'; 
     439  } 
     440  else if(inputs.type=='anchor') 
     441  { 
     442    this.dialog.getElementById('urltable').style.display = 'none'; 
     443    this.dialog.getElementById('mailtable').style.display = 'none'; 
     444    this.dialog.getElementById('anchortable').style.display = ''; 
    424445  } 
    425446  else 
     
    427448    this.dialog.getElementById('urltable').style.display = 'none'; 
    428449    this.dialog.getElementById('mailtable').style.display = ''; 
     450    this.dialog.getElementById('anchortable').style.display = 'none'; 
    429451  } 
    430452 
     
    437459    this.dialog.getElementById('popuptable').style.display = 'none'; 
    438460  } 
     461 
     462  var anchor = this.dialog.getElementById('anchor'); 
     463  for(var i=0;i<anchor.childNodes.length;i++) { 
     464    anchor.removeChild(anchor.childNodes[i]); 
     465  } 
     466 
     467  var html = this.linker.editor.getHTML();   
     468  var anchors = new Array(); 
     469 
     470  var m = html.match(/<a[^>]+name="([^"]+)"/gi); 
     471  if(m) 
     472  { 
     473    for(i=0;i<m.length;i++) 
     474    { 
     475        var n = m[i].match(/name="([^"]+)"/i); 
     476        if(!anchors.contains(n[1])) anchors.push(n[1]); 
     477    } 
     478  } 
     479  m = html.match(/id="([^"]+)"/gi); 
     480  if(m) 
     481  { 
     482    for(i=0;i<m.length;i++) 
     483    { 
     484        n = m[i].match(/id="([^"]+)"/i); 
     485        if(!anchors.contains(n[1])) anchors.push(n[1]); 
     486    } 
     487  } 
     488   
     489  for(i=0;i<anchors.length;i++) 
     490  { 
     491    var opt = document.createElement('option'); 
     492    opt.value = '#'+anchors[i]; 
     493    opt.innerHTML = anchors[i]; 
     494    anchor.appendChild(opt); 
     495  } 
     496 
     497  //if no anchors found completely hide Anchor-Link 
     498  if(anchor.childNodes.length==0) { 
     499    this.dialog.getElementById('anchorfieldset').style.display = "none"; 
     500  } 
     501   
    439502 
    440503  // Connect the OK and Cancel buttons 
Note: See TracChangeset for help on using the changeset viewer.