View difference between Paste ID: L7KpNaWe and iMVzeNhg
SHOW: | | - or go back to the newest paste.
1
(function($, jn) {
2
3
	if(_Janetter_Window_Type=="main" || _Janetter_Window_Type=="profile" || _Janetter_Window_Type=="notice"){
4
5-
		// entitiesにextended_entitiesを統合(やっつけ)
5+
		// entitiesにextended_entitiesを統合
6
		var _init = jn.tweetController.prototype.init;
7
		jn.tweetController.prototype.init = function (juid, item, options, autoread){
8-
			if(item && item.entities && item.extended_entities){
8+
			if(item){
9-
				item.entities.extended_media = item.extended_entities.media || [];
9+
				if(item.entities && item.extended_entities){
10
					item.entities.extended_media = item.extended_entities.media || [];
11
				}
12
				if(item.retweeted_status && item.retweeted_status.entities && item.retweeted_status.extended_entities){
13
					item.retweeted_status.entities.extended_media = item.retweeted_status.extended_entities.media || [];
14
				}
15
			}
16
			return _init.apply(this, arguments);
17
		};
18
19
		// entitiesLinkの修正
20
		var linkExtendedEntities = function(entities){
21
			var text = '';
22
			if(entities.extended_media){
23
				entities.extended_media.slice(1).forEach(function(e, i){
24
					var link = '<a hidden href="%1" class="link" title="%2"%3%4%5>%6</a>'.format(
25
						e.url,
26
						(e.expanded_url || e.url).decodeURI().htmlEncode(true),
27
						/* そのままだとexpandedが同値になってサムネイル表示してくれないため、#付けて無理やり変える */
28
						e.expanded_url ? ' expanded="' + e.expanded_url.htmlEncode(true) + '#' + (i+2) + '"' : '',
29
						e.media_url ? ' media="' + e.media_url.htmlEncode(true) + '"' : '',
30
						e.type ? ' type="' + e.type.htmlEncode(true) + '"' : '',
31
						e.display_url ? e.display_url.htmlEncode(true) : e.url.htmlEncode(true)
32
					);
33
					text += link;
34
				});
35
			}
36-
			this.html(this.html + linkExtendedEntities(entities));
36+
37
		};
38
		var _fn_entitiesLink = $.fn.entitiesLink;
39
		$.fn.entitiesLink = function(entities){
40
			_fn_entitiesLink.call(this, entities);
41
			this.html(this.html() + linkExtendedEntities(entities));
42
			return this;
43
		};
44
		var _str_entitiesLink = String.prototype.entitiesLink;
45
		String.prototype.entitiesLink = function(entities){
46
			return _str_entitiesLink.call(this, entities) + linkExtendedEntities(entities);
47
		};
48
	}
49
50
})(jQuery, janet);