diff options
author | teramako | 2008-11-22 10:18:02 +0000 |
---|---|---|
committer | teramako | 2008-11-22 10:18:02 +0000 |
commit | 9bdfa4d5c403775bb2ebb54af5f856e14e492b3a (patch) | |
tree | f6b0275800ad1831d0713ac6f3885b089e0f933d /sbmcommentsviewer.js | |
parent | 098131aa97e35a259bfb0966dbfd58d79baf1513 (diff) | |
download | vimperator-plugins-9bdfa4d5c403775bb2ebb54af5f856e14e492b3a.tar.bz2 |
* follow 2.0pre
* fix: livedoorclip
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@24643 d0d07461-0603-4401-acd4-de1884942a52
Diffstat (limited to 'sbmcommentsviewer.js')
-rw-r--r-- | sbmcommentsviewer.js | 77 |
1 files changed, 39 insertions, 38 deletions
diff --git a/sbmcommentsviewer.js b/sbmcommentsviewer.js index ee8e8f7..cf9ca1d 100644 --- a/sbmcommentsviewer.js +++ b/sbmcommentsviewer.js @@ -65,26 +65,28 @@ SBMContainer.prototype = { //{{{ id, timestamp, comment, tags, extra )); }, - toHTMLString: function(format, countOnly){ - var label = (this.faviconURL ? '<img src="' + this.faviconURL + '" width="16" height="16"/>' : '') + - manager.type[this.type] + ' ' + this.count + '(' + this.entries.length + ')' + - (this.pageURL ? ' <a href="' + this.pageURL + '">' + this.pageURL + '</a>' : ''); + toHTML: function(format, countOnly){ + var label = <> + {this.faviconURL ? <img src={this.faviconURL} width="16" height="16"/> : <></>} + {manager.type[this.type] + ' ' + this.count + '(' + this.entries.length + ')'} + {this.pageURL ? <a href="#">{this.pageURL}</a> : <></>} + </>; if (countOnly){ return label; } else { - let str = [ - '<table id="liberator-sbmcommentsviewer"><caption style="text-align:left;" class="hl-Title">' + label + '</caption><tr>' - ]; - format.forEach(function(colum){ - let name = manager.format[colum] || '-'; - str.push('<th>' + name + '</th>'); - }); - str.push('</tr>'); - this.entries.forEach(function(e){ - str.push(e.toHTMLString(format)); - }); - str.push('</table>'); - return str.join(''); + let xml = <table id="liberator-sbmcommentsviewer"> + <caption style="text-align:left" class="hl-Title">{label}</caption> + <tr/> + </table>; + let self = this; + xml.*[xml.*.length()-1].* += (function(){ + var thead = <tr/>; + format.forEach(function(colum){ thead.* += <th>{manager.format[colum] || '-'}</th>; }); + var tbody = <></>; + self.entries.forEach(function(e){ tbody += e.toHTML(format); }); + return thead + tbody; + })(); + return xml; } } }; //}}} @@ -112,32 +114,31 @@ function SBMEntry(id, timestamp, comment, tags, extra){ //{{{ } } //}}} SBMEntry.prototype = { //{{{ - toHTMLString: function(format){ - // E4X で書く手もあるけど、liberator.echoを使って出力すると - // toString後に"\n"が<br/>に変換されてしまうのでStringで - var str = ['<tr>']; + toHTML: function(format){ + var xml = <tr/>; var self = this; format.forEach(function(colum){ switch(colum){ case 'id': - str.push('<td class="liberator-sbmcommentsviewer-id">' + (self.userIcon ? '<p style="display:table-cell;vertical-align:middle;padding-right:3px;"><img src="'+self.userIcon +'" width="16" height="16"/></p>' : '') + - '<p style="display:table-cell;vertical-align:middle;">' + self.id + '</p></td>'); + xml.* += <td class="liberator-sbmcommentsviewer-id"> + {self.userIcon ? <><img src={self.userIcon} width="16" height="16"/> {self.id}</> : <span>{self.id}</span>} + </td>; break; case 'timestamp': - str.push('<td class="liberator-sbmcommentsviewer-timestamp">' + self.formatDate() + '</td>'); break; + xml.* += <td class="liberator-sbmcommentsviewer-timestamp">{self.formatDate()}</td>; break; case 'tags': - str.push('<td class="liberator-sbmcommentsviewer-tags">' + self.tags.join(',') + '</td>'); break; + xml.* += <td class="liberator-sbmcommentsviewer-tags">{self.tags.join(',')}</td>; break; case 'comment': - str.push('<td class="liberator-sbmcommentsviewer-comment" style="white-space:normal;">' + self.comment + '</td>'); break; + xml.* += <td class="liberator-sbmcommentsviewer-comment" style="white-space:normal;">{self.comment}</td>; break; case 'tagsAndComment': - tagString = self.tags.length ? '[' + self.tags.join('][') + ']':''; - str.push('<td class="liberator-sbmcommentsviewer-tagsAndComment" style="white-space:normal;">' + tagString + ' ' + self.comment + '</td>'); break; + var tagString = self.tags.length ? '[' + self.tags.join('][') + ']':''; + xml.* += <td class="liberator-sbmcommentsviewer-tagsAndComment" style="white-space:normal;">{tagString + ' '+self.comment}</td>; + break; default: - str.push('<td>-</td>'); + xml.* += <td>-</td>; } }); - str.push('</tr>'); - return str.join(''); + return xml; }, formatDate: function(){ if (!this.timeStamp) return ''; @@ -180,9 +181,9 @@ function openSBM(url, type, format, countOnly, openToBrowser){ if (!sbmContainer) return; cacheManager.add(sbmContainer, url, type); if (openToBrowser) - manager.open(sbmContainer.toHTMLString(format,false)); + manager.open(sbmContainer.toHTML(format,false)); else - liberator.echo(sbmContainer.toHTMLString(format,countOnly), true); + liberator.echo(sbmContainer.toHTML(format,countOnly), true); } else { liberator.echoerr(sbmURL + ' ' + xhr.status, true); } @@ -237,7 +238,7 @@ var SBM = { //{{{ liberator.log(e); } var c = new SBMContainer('d', items.length, { - faviconURL: 'http://del.icio.us/favicon.ico', + faviconURL: 'http://delicious.com/favicon.ico', pageURL: pageURL }); items.forEach(function(item){ @@ -273,7 +274,7 @@ var SBM = { //{{{ getService(Components.interfaces.nsIJSON). decode(xhr.responseText); */ - var json = jsonDecode(xhr.reponseText); + var json = jsonDecode(xhr.responseText); if (json && json.isSuccess){ let c = new SBMContainer('l', json.total_clip_count, { faviconURL: 'http://clip.livedoor.com/favicon.ico', @@ -281,7 +282,7 @@ var SBM = { //{{{ }); json.Comments.forEach(function(clip){ c.add( clip.livedoor_id, new Date(clip.created_on * 1000), - clip.notes ? clip.notes.replace(/</g,'<').replace(/>/g,'>') : '', + clip.notes ? clip.notes : '', clip.tags, { userIcon: 'http://image.clip.livedoor.com/profile/' + @@ -471,9 +472,9 @@ commands.addUserCommand(['viewSBMComments'], 'SBM Comments Viewer', //{{{ liberator.log('cache avairable'); if (openToBrowser) // TODO - manager.open(cacheManager.get(url,type).toHTMLString(format,false), liberator.forceNewTab); + manager.open(cacheManager.get(url,type).toHTML(format,false), liberator.forceNewTab); else - liberator.echo(cacheManager.get(url, type).toHTMLString(format,countOnly), true); + liberator.echo(cacheManager.get(url, type).toHTML(format,countOnly), true); } else { try { openSBM(url, type, format, countOnly, openToBrowser); |