Fix issues with clones, re-add auto-embed

This commit is contained in:
Zixaphir 2013-08-06 20:10:50 -07:00
parent b47aea7055
commit 4ff97f9435
3 changed files with 60 additions and 60 deletions

View File

@ -4335,21 +4335,22 @@
}); });
}, },
node: function() { node: function() {
var data, embedder, i, len, node, range, snapshot, _i, _j, _len, _len1, _ref, _ref1; var data, el, i, items, node, range, snapshot, _i, _len, _ref;
if (this.isClone && Conf['Embedding']) { if (this.isClone) {
_ref = $$('.embedder', this.nodes.comment); if (Conf['Embedding']) {
for (_i = 0, _len = _ref.length; _i < _len; _i++) { i = 0;
embedder = _ref[_i]; items = $$('.embedded', this.nodes.comment);
$.on(embedder, "click", Linkify.cb.toggle); while (el = items[i++]) {
$.on(el, "click", Linkify.cb.toggle);
Linkify.cb.toggle.call(el);
}
} }
return; return;
} }
snapshot = $.X('.//text()', this.nodes.comment); snapshot = $.X('.//text()', this.nodes.comment);
i = -1; i = 0;
len = snapshot.snapshotLength; while (node = snapshot.snapshotItem(i++)) {
while (++i < len) {
node = snapshot.snapshotItem(i);
if (node.parentElement.nodeName === "A") { if (node.parentElement.nodeName === "A") {
continue; continue;
} }
@ -4362,9 +4363,9 @@
if (!(Conf['Embedding'] || Conf['Link Title'])) { if (!(Conf['Embedding'] || Conf['Link Title'])) {
return; return;
} }
_ref1 = this.nodes.links; _ref = this.nodes.links;
for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { for (_i = 0, _len = _ref.length; _i < _len; _i++) {
range = _ref1[_j]; range = _ref[_i];
if (data = Linkify.services(range)) { if (data = Linkify.services(range)) {
if (Conf['Embedding']) { if (Conf['Embedding']) {
Linkify.embed(data); Linkify.embed(data);
@ -4473,6 +4474,9 @@
$.addClass(link, "" + embed.dataset.key); $.addClass(link, "" + embed.dataset.key);
$.on(embed, 'click', Linkify.cb.toggle); $.on(embed, 'click', Linkify.cb.toggle);
$.after(link, [$.tn(' '), embed]); $.after(link, [$.tn(' '), embed]);
if (Conf['Auto-embed']) {
Linkify.cb.toggle.call(embed);
}
}, },
title: function(data) { title: function(data) {
var err, key, link, options, service, title, titles, uid; var err, key, link, options, service, title, titles, uid;
@ -4508,11 +4512,10 @@
}, },
cb: { cb: {
toggle: function() { toggle: function() {
var el, embed; var string, _ref;
embed = this.previousElementSibling; _ref = $.hasClass(this, "embedded") ? ['unembed', '(embed)'] : ['embed', '(unembed)'], string = _ref[0], this.textContent = _ref[1];
el = !this.className.contains("embedded") ? Linkify.cb.embed(this) : Linkify.cb.unembed(this); $.replace(this.previousElementSibling, Linkify.cb[string](this));
$.replace(embed, el);
return $.toggleClass(this, 'embedded'); return $.toggleClass(this, 'embedded');
}, },
embed: function(a) { embed: function(a) {
@ -4520,7 +4523,6 @@
el = (type = Linkify.types[a.dataset.key]).el.call(a); el = (type = Linkify.types[a.dataset.key]).el.call(a);
el.style.cssText = (style = type.style) ? style : "border: 0; width: 640px; height: 390px"; el.style.cssText = (style = type.style) ? style : "border: 0; width: 640px; height: 390px";
a.textContent = '(unembed)';
return el; return el;
}, },
unembed: function(a) { unembed: function(a) {
@ -4533,7 +4535,6 @@
href: a.dataset.href, href: a.dataset.href,
innerHTML: a.dataset.title || a.dataset.nodedata innerHTML: a.dataset.title || a.dataset.nodedata
}); });
a.textContent = '(embed)';
$.addClass(el, a.dataset.key); $.addClass(el, a.dataset.key);
return el; return el;
}, },

View File

@ -4340,21 +4340,22 @@
}); });
}, },
node: function() { node: function() {
var data, embedder, i, len, node, range, snapshot, _i, _j, _len, _len1, _ref, _ref1; var data, el, i, items, node, range, snapshot, _i, _len, _ref;
if (this.isClone && Conf['Embedding']) { if (this.isClone) {
_ref = $$('.embedder', this.nodes.comment); if (Conf['Embedding']) {
for (_i = 0, _len = _ref.length; _i < _len; _i++) { i = 0;
embedder = _ref[_i]; items = $$('.embedded', this.nodes.comment);
$.on(embedder, "click", Linkify.cb.toggle); while (el = items[i++]) {
$.on(el, "click", Linkify.cb.toggle);
Linkify.cb.toggle.call(el);
}
} }
return; return;
} }
snapshot = $.X('.//text()', this.nodes.comment); snapshot = $.X('.//text()', this.nodes.comment);
i = -1; i = 0;
len = snapshot.snapshotLength; while (node = snapshot.snapshotItem(i++)) {
while (++i < len) {
node = snapshot.snapshotItem(i);
if (node.parentElement.nodeName === "A") { if (node.parentElement.nodeName === "A") {
continue; continue;
} }
@ -4367,9 +4368,9 @@
if (!(Conf['Embedding'] || Conf['Link Title'])) { if (!(Conf['Embedding'] || Conf['Link Title'])) {
return; return;
} }
_ref1 = this.nodes.links; _ref = this.nodes.links;
for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { for (_i = 0, _len = _ref.length; _i < _len; _i++) {
range = _ref1[_j]; range = _ref[_i];
if (data = Linkify.services(range)) { if (data = Linkify.services(range)) {
if (Conf['Embedding']) { if (Conf['Embedding']) {
Linkify.embed(data); Linkify.embed(data);
@ -4478,6 +4479,9 @@
$.addClass(link, "" + embed.dataset.key); $.addClass(link, "" + embed.dataset.key);
$.on(embed, 'click', Linkify.cb.toggle); $.on(embed, 'click', Linkify.cb.toggle);
$.after(link, [$.tn(' '), embed]); $.after(link, [$.tn(' '), embed]);
if (Conf['Auto-embed']) {
Linkify.cb.toggle.call(embed);
}
}, },
title: function(data) { title: function(data) {
var err, key, link, options, service, title, titles, uid; var err, key, link, options, service, title, titles, uid;
@ -4513,11 +4517,10 @@
}, },
cb: { cb: {
toggle: function() { toggle: function() {
var el, embed; var string, _ref;
embed = this.previousElementSibling; _ref = $.hasClass(this, "embedded") ? ['unembed', '(embed)'] : ['embed', '(unembed)'], string = _ref[0], this.textContent = _ref[1];
el = !this.className.contains("embedded") ? Linkify.cb.embed(this) : Linkify.cb.unembed(this); $.replace(this.previousElementSibling, Linkify.cb[string](this));
$.replace(embed, el);
return $.toggleClass(this, 'embedded'); return $.toggleClass(this, 'embedded');
}, },
embed: function(a) { embed: function(a) {
@ -4525,7 +4528,6 @@
el = (type = Linkify.types[a.dataset.key]).el.call(a); el = (type = Linkify.types[a.dataset.key]).el.call(a);
el.style.cssText = (style = type.style) ? style : "border: 0; width: 640px; height: 390px"; el.style.cssText = (style = type.style) ? style : "border: 0; width: 640px; height: 390px";
a.textContent = '(unembed)';
return el; return el;
}, },
unembed: function(a) { unembed: function(a) {
@ -4538,7 +4540,6 @@
href: a.dataset.href, href: a.dataset.href,
innerHTML: a.dataset.title || a.dataset.nodedata innerHTML: a.dataset.title || a.dataset.nodedata
}); });
a.textContent = '(embed)';
$.addClass(el, a.dataset.key); $.addClass(el, a.dataset.key);
return el; return el;
}, },

View File

@ -33,20 +33,22 @@ Linkify =
cb: @node cb: @node
node: -> node: ->
if @isClone and Conf['Embedding'] if @isClone
for embedder in $$ '.embedder', @nodes.comment if Conf['Embedding']
$.on embedder, "click", Linkify.cb.toggle i = 0
items = $$ '.embedded', @nodes.comment
while el = items[i++]
$.on el, "click", Linkify.cb.toggle
Linkify.cb.toggle.call el
return return
snapshot = $.X './/text()', @nodes.comment snapshot = $.X './/text()', @nodes.comment
i = -1 i = 0
len = snapshot.snapshotLength while node = snapshot.snapshotItem i++
while ++i < len
node = snapshot.snapshotItem i
continue if node.parentElement.nodeName is "A" continue if node.parentElement.nodeName is "A"
data = node.data data = node.data
if Linkify.regString.test data if Linkify.regString.test data
@ -146,13 +148,17 @@ Linkify =
for name, value of {key, href, uid, options} for name, value of {key, href, uid, options}
embed.dataset[name] = value embed.dataset[name] = value
embed.dataset.nodedata = link.innerHTML embed.dataset.nodedata = link.innerHTML
$.addClass link, "#{embed.dataset.key}" $.addClass link, "#{embed.dataset.key}"
$.on embed, 'click', Linkify.cb.toggle $.on embed, 'click', Linkify.cb.toggle
$.after link, [$.tn(' '), embed] $.after link, [$.tn(' '), embed]
if Conf['Auto-embed']
Linkify.cb.toggle.call embed
return return
title: (data) -> title: (data) ->
@ -179,16 +185,11 @@ Linkify =
cb: cb:
toggle: -> toggle: ->
# We setup the link to be replaced by the embedded video [string, @textContent] = if $.hasClass @, "embedded"
embed = @previousElementSibling ['unembed', '(embed)']
# Unembed.
el = unless @className.contains "embedded"
Linkify.cb.embed @
else else
Linkify.cb.unembed @ ['embed', '(unembed)']
$.replace @previousElementSibling, Linkify.cb[string] @
$.replace embed, el
$.toggleClass @, 'embedded' $.toggleClass @, 'embedded'
embed: (a) -> embed: (a) ->
@ -201,8 +202,6 @@ Linkify =
else else
"border: 0; width: 640px; height: 390px" "border: 0; width: 640px; height: 390px"
a.textContent = '(unembed)'
return el return el
unembed: (a) -> unembed: (a) ->
@ -214,7 +213,6 @@ Linkify =
href: a.dataset.href href: a.dataset.href
innerHTML: a.dataset.title or a.dataset.nodedata innerHTML: a.dataset.title or a.dataset.nodedata
a.textContent = '(embed)'
$.addClass el, a.dataset.key $.addClass el, a.dataset.key
return el return el