Working Delete Prevention w Rangy11

by jrweinb

HTML

<script src="http://www.timdown.co.uk/rangy/rangy-current/rangy-core.js"></script>
<div class="redactor_ redactor_editor" contenteditable="true" dir="ltr">
  
    <p>hello lorem ipsum ffkk slfa</p>
    <p>hello afaf afa a</p>
    <br/>
    <div class="attachment" contenteditable="false" data-webdocument-id="24" data-url="http%3A%2F%2Fwww.google.com">
        <img class="media-img linkified" src="http://www.google.com/logos/doodles/2013/100th-anniversary-of-the-crossword-puzzle-5629550536949760-hp.jpg" />
        <div class="media-block">
             <h4 class="teaser-title">+Google</h4><a href="http://www.google.com" class="teaser-meta in-media linkified" target="_blank">google.com</a>

        </div>
    </div>
    <br/>
    <p>heloo fdaf afdfdfa fafa</p>
    <p>jflkajdfkjaldkfjkladjfklajdfk fkdjaflkjda lfla fa</p>
    <br/>
</div>

JavaScript

function is_all_ws( nod )
{
  // Use ECMA-262 Edition 3 String and RegExp features
  return !(/[^\t\n\r ]/.test(nod.data));
}

function is_ignorable( nod )
{
  return ( nod.nodeType == 8) || // A comment node
         ( (nod.nodeType == 3) && is_all_ws(nod) ); // a text node, all ws
}

function data_of( txt )
{
  var data = txt.data;
  // Use ECMA-262 Edition 3 String and RegExp features
  data = data.replace(/[\t\n\r ]+/g, " ");
  if (data.charAt(0) == " ")
    data = data.substring(1, data.length);
  if (data.charAt(data.length - 1) == " ")
    data = data.substring(0, data.length - 1);
  return data;
}

function node_before( sib )
{
  while ((sib = sib.previousSibling)) {
    if (!is_ignorable(sib)) return sib;
  }
  return null;
}

function node_after( sib )
{
  while ((sib = sib.nextSibling)) {
    if (!is_ignorable(sib)) return sib;
  }
  return null;
}

function first_child( par )
{
  var res=par.firstChild;
  while (res) {
    if (!is_ignorable(res)) return res;
    res = res.nextSibling;
  }
  return null;
}


$(".redactor_editor").keydown(function(ev) 
{ 
    if (ev.keyCode == "46" || ev.keyCode == "39") {
        var sel = rangy.getSelection(); 
        var range = sel.getRangeAt(0); 
            var cur = node_after(sel.anchorNode.parentNode);
            console.log(node_after(sel.anchorNode.parentNode));
            while (cur)
            {
                console.log(cur.className);
              if (cur.className === "attachment")
              {    
                  console.log(cur);
                  range.setStartAfter(cur);
                range.setEndAfter(cur);
                rangy.getSelection().setSingleRange(range);
                  console.log("HIT");
              }
              cur = node_after(cur);
            }
    }
    else if (ev.keyCode == "8" || ev.keyCode == "37") {
    }
    
    
});