var Phylly = {
BLOCKS: [
{name: 'intertitre', tag: 'H4', klass: 'intertitle'},
+ {name: 'liste', special: 'list', tag: 'UL', klass: 'list'},
{name: 'illustration', special: 'img', tag: 'DIV', subtag: true, klass: 'figure'},
{name: 'code', tag: 'PRE', klass: 'code'},
{name: 'note', tag: 'DIV', subtag: true, klass: 'note'},
sel.removeAllRanges();
sel.addRange(range);
}
+ if (sel.anchorNode.tagName == "LI" && sel.anchorNode.innerHTML == "<br>") {
+ // new empty li got inserted, insert a <p> within
+ var empty_p = document.createElement('P');
+ empty_p.appendChild(document.createElement('BR'));
+ var empty_li = anchorNode;
+ if (empty_li.childNodes.length) { // lone <br>
+ empty_li.removeChild(empty_li.childNodes[0]);
+ }
+ empty_li.appendChild(empty_p);
+ var range = document.createRange();
+ range.setStart(empty_p, 0);
+ sel.removeAllRanges();
+ sel.addRange(range);
+ }
var prev_p = sel.anchorNode.previousSibling;
if (! prev_p) return;
if (prev_p.tagName != 'P') {
if (node.parentNode.contentEditable === 'true') return node;
return get_contenteditable_subnode(node.parentNode);
}
+ function get_parent(node, type) {
+ if (node === null) return null;
+ if (node.tagName == type) return node;
+ return get_parent(node.parentNode, type);
+ }
function get_active_block(node) {
var main_node = get_contenteditable_subnode(node);
if (main_node === null) return null;
return;
}
+ if (this.action_block.special == 'list') {
+ if (this.classList.contains('on')) { // toggle off
+ var main_node = get_contenteditable_subnode(sel.anchorNode);
+ var li = get_parent(sel.anchorNode, 'LI');
+ for (var i=li.childNodes.length; i>0; i--) {
+ var child = li.childNodes[i-1];
+ main_node.insertAdjacentElement('afterend', child);
+ var range = document.createRange();
+ range.setStart(child, 0);
+ sel.removeAllRanges();
+ sel.addRange(range);
+ }
+ li.remove();
+ update_block_style_popup();
+ } else {
+ var current_node = sel.anchorNode;
+ var ul = document.createElement('UL');
+ ul.className = 'list';
+ var li = document.createElement('LI');
+ ul.appendChild(li);
+ sel.anchorNode.parentNode.insertBefore(ul, current_node);
+ li.appendChild(current_node);
+ var range = document.createRange();
+ range.setStart(current_node, 0);
+ sel.removeAllRanges();
+ sel.addRange(range);
+ }
+ return;
+ }
if (this.classList.contains('on')) { // toggle off
if (this.action_block.subtag) {
// unwrap