mirror of
https://github.com/samsonjs/samhuri.net.git
synced 2026-04-27 14:57:40 +00:00
allow linking directly to comments
This commit is contained in:
parent
0bbb87c53c
commit
fc3a270617
5 changed files with 261 additions and 77 deletions
|
|
@ -11,10 +11,10 @@
|
||||||
, postCommentURL = function() { return server + 'comment' }
|
, postCommentURL = function() { return server + 'comment' }
|
||||||
, countCommentsURL = function(post) { return server + 'count/' + post }
|
, countCommentsURL = function(post) { return server + 'count/' + post }
|
||||||
|
|
||||||
function getComments() {
|
function getComments(cb) {
|
||||||
SJS.request({uri: getCommentsURL(SJS.filename)}, function(err, request, body) {
|
SJS.request({uri: getCommentsURL(SJS.filename)}, function(err, request, body) {
|
||||||
if (err) {
|
if (err) {
|
||||||
$('#comments').text('derp')
|
if (typeof cb === 'function') cb(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
var data
|
var data
|
||||||
|
|
@ -22,16 +22,34 @@
|
||||||
, h = ''
|
, h = ''
|
||||||
try {
|
try {
|
||||||
data = JSON.parse(body)
|
data = JSON.parse(body)
|
||||||
} catch (e) {
|
}
|
||||||
|
catch (e) {
|
||||||
console.log('not json -> ' + body)
|
console.log('not json -> ' + body)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
comments = data.comments
|
comments = data.comments
|
||||||
if (comments.length) {
|
if (comments && comments.length) {
|
||||||
h = data.comments.map(function(c) {
|
h = data.comments.map(function(c) {
|
||||||
return tmpl('comment_tmpl', c)
|
return tmpl('comment_tmpl', c)
|
||||||
}).join('')
|
}).join('')
|
||||||
|
$('#comments').html(h)
|
||||||
|
}
|
||||||
|
if (typeof cb === 'function') cb()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function showComments(cb) {
|
||||||
|
$('#sd-container').remove()
|
||||||
|
getComments(function(err) {
|
||||||
|
if (err) {
|
||||||
|
$('#comments').text('derp')
|
||||||
|
}
|
||||||
|
if (typeof cb === 'function') cb(err)
|
||||||
|
else {
|
||||||
|
$('#comment-stuff').slideDown(1.5, function() {
|
||||||
|
this.scrollIntoView(true)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
$('#comments').html(h)
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -45,18 +63,28 @@
|
||||||
, n
|
, n
|
||||||
try {
|
try {
|
||||||
data = JSON.parse(body)
|
data = JSON.parse(body)
|
||||||
} catch (e) {
|
}
|
||||||
|
catch (e) {
|
||||||
console.log('not json -> ' + body)
|
console.log('not json -> ' + body)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
n = data.count
|
n = data.count
|
||||||
$('#sd').text(n > 0 ? 'show the discussion (' + n + ')' : 'start the discussion')
|
$('#sd').text(n > 0 ? 'show the discussion (' + n + ')' : 'start the discussion')
|
||||||
})
|
})
|
||||||
|
|
||||||
$('#sd').click(function() {
|
// jump to comment if linked directly
|
||||||
$('#sd-container').remove()
|
var hash = window.location.hash || ''
|
||||||
$('#comment-stuff').slideDown(1.5, function() { this.scrollIntoView(true) })
|
if (/^#comment-\d+/.test(hash)) {
|
||||||
getComments()
|
alert(hash)
|
||||||
})
|
showComments(function (err) {
|
||||||
|
if (!err) {
|
||||||
|
window.location.hash = ''
|
||||||
|
window.location.hash = hash
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
$('#sd').click(showComments)
|
||||||
|
|
||||||
var showdown = new Showdown.converter()
|
var showdown = new Showdown.converter()
|
||||||
|
|
||||||
|
|
@ -73,6 +101,7 @@
|
||||||
document.getElementById('thoughts').focus()
|
document.getElementById('thoughts').focus()
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
comment.timestamp = +comment.timestamp
|
||||||
|
|
||||||
var options = { method: 'POST'
|
var options = { method: 'POST'
|
||||||
, uri: postCommentURL()
|
, uri: postCommentURL()
|
||||||
|
|
|
||||||
|
|
@ -194,6 +194,9 @@ function commentServer(context) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
comments = context.db.get(post) || []
|
comments = context.db.get(post) || []
|
||||||
|
comments.forEach(function(c, i) {
|
||||||
|
c.id = c.id || (i + 1)
|
||||||
|
})
|
||||||
res.respond({comments: comments.map(function(c) {
|
res.respond({comments: comments.map(function(c) {
|
||||||
delete c.email
|
delete c.email
|
||||||
c.html = markdown.parse(c.body)
|
c.html = markdown.parse(c.body)
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
<key>currentDocument</key>
|
<key>currentDocument</key>
|
||||||
<string>.gitignore</string>
|
<string>discussd/discussd.js</string>
|
||||||
<key>documents</key>
|
<key>documents</key>
|
||||||
<array>
|
<array>
|
||||||
<dict>
|
<dict>
|
||||||
|
|
@ -15,8 +15,6 @@
|
||||||
<string>!(\.DS_Store|.*\.min\..*|.*\.tmproj)$</string>
|
<string>!(\.DS_Store|.*\.min\..*|.*\.tmproj)$</string>
|
||||||
<key>regexFolderFilter</key>
|
<key>regexFolderFilter</key>
|
||||||
<string>!.*/(\.[^/]*|public/blog|node_modules|CVS|_blog|public/proj|Chalk|json-diff|riak-js|f|node|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string>
|
<string>!.*/(\.[^/]*|public/blog|node_modules|CVS|_blog|public/proj|Chalk|json-diff|riak-js|f|node|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string>
|
||||||
<key>selected</key>
|
|
||||||
<true/>
|
|
||||||
<key>sourceDirectory</key>
|
<key>sourceDirectory</key>
|
||||||
<string></string>
|
<string></string>
|
||||||
</dict>
|
</dict>
|
||||||
|
|
@ -25,7 +23,205 @@
|
||||||
<integer>200</integer>
|
<integer>200</integer>
|
||||||
<key>metaData</key>
|
<key>metaData</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>.gitignore</key>
|
<key>Makefile</key>
|
||||||
|
<dict>
|
||||||
|
<key>caret</key>
|
||||||
|
<dict>
|
||||||
|
<key>column</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>line</key>
|
||||||
|
<integer>18</integer>
|
||||||
|
</dict>
|
||||||
|
<key>firstVisibleColumn</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>firstVisibleLine</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
</dict>
|
||||||
|
<key>assets/css/blog.css</key>
|
||||||
|
<dict>
|
||||||
|
<key>caret</key>
|
||||||
|
<dict>
|
||||||
|
<key>column</key>
|
||||||
|
<integer>17</integer>
|
||||||
|
<key>line</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
</dict>
|
||||||
|
<key>firstVisibleColumn</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>firstVisibleLine</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
</dict>
|
||||||
|
<key>assets/css/mobile.css</key>
|
||||||
|
<dict>
|
||||||
|
<key>caret</key>
|
||||||
|
<dict>
|
||||||
|
<key>column</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>line</key>
|
||||||
|
<integer>59</integer>
|
||||||
|
</dict>
|
||||||
|
<key>firstVisibleColumn</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>firstVisibleLine</key>
|
||||||
|
<integer>10</integer>
|
||||||
|
</dict>
|
||||||
|
<key>assets/js/blog.js</key>
|
||||||
|
<dict>
|
||||||
|
<key>caret</key>
|
||||||
|
<dict>
|
||||||
|
<key>column</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>line</key>
|
||||||
|
<integer>110</integer>
|
||||||
|
</dict>
|
||||||
|
<key>firstVisibleColumn</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>firstVisibleLine</key>
|
||||||
|
<integer>78</integer>
|
||||||
|
</dict>
|
||||||
|
<key>bin/blog.rb</key>
|
||||||
|
<dict>
|
||||||
|
<key>caret</key>
|
||||||
|
<dict>
|
||||||
|
<key>column</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>line</key>
|
||||||
|
<integer>52</integer>
|
||||||
|
</dict>
|
||||||
|
<key>firstVisibleColumn</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>firstVisibleLine</key>
|
||||||
|
<integer>40</integer>
|
||||||
|
</dict>
|
||||||
|
<key>discussd/discuss.dirty</key>
|
||||||
|
<dict>
|
||||||
|
<key>caret</key>
|
||||||
|
<dict>
|
||||||
|
<key>column</key>
|
||||||
|
<integer>476</integer>
|
||||||
|
<key>line</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
</dict>
|
||||||
|
<key>firstVisibleColumn</key>
|
||||||
|
<integer>222</integer>
|
||||||
|
<key>firstVisibleLine</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
</dict>
|
||||||
|
<key>discussd/discussd.js</key>
|
||||||
|
<dict>
|
||||||
|
<key>caret</key>
|
||||||
|
<dict>
|
||||||
|
<key>column</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>line</key>
|
||||||
|
<integer>287</integer>
|
||||||
|
</dict>
|
||||||
|
<key>firstVisibleColumn</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>firstVisibleLine</key>
|
||||||
|
<integer>255</integer>
|
||||||
|
</dict>
|
||||||
|
<key>discussd/posts.json</key>
|
||||||
|
<dict>
|
||||||
|
<key>caret</key>
|
||||||
|
<dict>
|
||||||
|
<key>column</key>
|
||||||
|
<integer>517</integer>
|
||||||
|
<key>line</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
</dict>
|
||||||
|
<key>firstVisibleColumn</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>firstVisibleLine</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
</dict>
|
||||||
|
<key>public/discussions.html</key>
|
||||||
|
<dict>
|
||||||
|
<key>caret</key>
|
||||||
|
<dict>
|
||||||
|
<key>column</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>line</key>
|
||||||
|
<integer>13</integer>
|
||||||
|
</dict>
|
||||||
|
<key>firstVisibleColumn</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>firstVisibleLine</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
</dict>
|
||||||
|
<key>templates/blog/index.html</key>
|
||||||
|
<dict>
|
||||||
|
<key>caret</key>
|
||||||
|
<dict>
|
||||||
|
<key>column</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>line</key>
|
||||||
|
<integer>37</integer>
|
||||||
|
</dict>
|
||||||
|
<key>firstVisibleColumn</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>firstVisibleLine</key>
|
||||||
|
<integer>26</integer>
|
||||||
|
</dict>
|
||||||
|
<key>templates/blog/link.mustache</key>
|
||||||
|
<dict>
|
||||||
|
<key>caret</key>
|
||||||
|
<dict>
|
||||||
|
<key>column</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>line</key>
|
||||||
|
<integer>2</integer>
|
||||||
|
</dict>
|
||||||
|
<key>firstVisibleColumn</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>firstVisibleLine</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
</dict>
|
||||||
|
<key>templates/blog/link.rss.html</key>
|
||||||
|
<dict>
|
||||||
|
<key>caret</key>
|
||||||
|
<dict>
|
||||||
|
<key>column</key>
|
||||||
|
<integer>9</integer>
|
||||||
|
<key>line</key>
|
||||||
|
<integer>3</integer>
|
||||||
|
</dict>
|
||||||
|
<key>firstVisibleColumn</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>firstVisibleLine</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
</dict>
|
||||||
|
<key>templates/blog/post.html</key>
|
||||||
|
<dict>
|
||||||
|
<key>caret</key>
|
||||||
|
<dict>
|
||||||
|
<key>column</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>line</key>
|
||||||
|
<integer>39</integer>
|
||||||
|
</dict>
|
||||||
|
<key>columnSelection</key>
|
||||||
|
<false/>
|
||||||
|
<key>firstVisibleColumn</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>firstVisibleLine</key>
|
||||||
|
<integer>16</integer>
|
||||||
|
<key>selectFrom</key>
|
||||||
|
<dict>
|
||||||
|
<key>column</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>line</key>
|
||||||
|
<integer>38</integer>
|
||||||
|
</dict>
|
||||||
|
<key>selectTo</key>
|
||||||
|
<dict>
|
||||||
|
<key>column</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>line</key>
|
||||||
|
<integer>39</integer>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>templates/blog/post.mustache</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>caret</key>
|
<key>caret</key>
|
||||||
<dict>
|
<dict>
|
||||||
|
|
@ -39,70 +235,14 @@
|
||||||
<key>firstVisibleLine</key>
|
<key>firstVisibleLine</key>
|
||||||
<integer>0</integer>
|
<integer>0</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Makefile</key>
|
|
||||||
<dict>
|
|
||||||
<key>caret</key>
|
|
||||||
<dict>
|
|
||||||
<key>column</key>
|
|
||||||
<integer>0</integer>
|
|
||||||
<key>line</key>
|
|
||||||
<integer>46</integer>
|
|
||||||
</dict>
|
|
||||||
<key>firstVisibleColumn</key>
|
|
||||||
<integer>0</integer>
|
|
||||||
<key>firstVisibleLine</key>
|
|
||||||
<integer>0</integer>
|
|
||||||
</dict>
|
|
||||||
<key>TODO</key>
|
|
||||||
<dict>
|
|
||||||
<key>caret</key>
|
|
||||||
<dict>
|
|
||||||
<key>column</key>
|
|
||||||
<integer>0</integer>
|
|
||||||
<key>line</key>
|
|
||||||
<integer>22</integer>
|
|
||||||
</dict>
|
|
||||||
<key>firstVisibleColumn</key>
|
|
||||||
<integer>0</integer>
|
|
||||||
<key>firstVisibleLine</key>
|
|
||||||
<integer>0</integer>
|
|
||||||
</dict>
|
|
||||||
<key>bin/blog.rb</key>
|
|
||||||
<dict>
|
|
||||||
<key>caret</key>
|
|
||||||
<dict>
|
|
||||||
<key>column</key>
|
|
||||||
<integer>0</integer>
|
|
||||||
<key>line</key>
|
|
||||||
<integer>119</integer>
|
|
||||||
</dict>
|
|
||||||
<key>firstVisibleColumn</key>
|
|
||||||
<integer>0</integer>
|
|
||||||
<key>firstVisibleLine</key>
|
|
||||||
<integer>91</integer>
|
|
||||||
</dict>
|
|
||||||
<key>public/js/iepngfix.htc</key>
|
|
||||||
<dict>
|
|
||||||
<key>caret</key>
|
|
||||||
<dict>
|
|
||||||
<key>column</key>
|
|
||||||
<integer>20</integer>
|
|
||||||
<key>line</key>
|
|
||||||
<integer>18</integer>
|
|
||||||
</dict>
|
|
||||||
<key>firstVisibleColumn</key>
|
|
||||||
<integer>0</integer>
|
|
||||||
<key>firstVisibleLine</key>
|
|
||||||
<integer>0</integer>
|
|
||||||
</dict>
|
|
||||||
<key>templates/proj/index.html</key>
|
<key>templates/proj/index.html</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>caret</key>
|
<key>caret</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>column</key>
|
<key>column</key>
|
||||||
<integer>0</integer>
|
<integer>19</integer>
|
||||||
<key>line</key>
|
<key>line</key>
|
||||||
<integer>26</integer>
|
<integer>73</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>firstVisibleColumn</key>
|
<key>firstVisibleColumn</key>
|
||||||
<integer>0</integer>
|
<integer>0</integer>
|
||||||
|
|
@ -113,14 +253,24 @@
|
||||||
<key>openDocuments</key>
|
<key>openDocuments</key>
|
||||||
<array>
|
<array>
|
||||||
<string>bin/blog.rb</string>
|
<string>bin/blog.rb</string>
|
||||||
<string>TODO</string>
|
<string>assets/css/blog.css</string>
|
||||||
|
<string>assets/css/mobile.css</string>
|
||||||
|
<string>discussd/discuss.dirty</string>
|
||||||
|
<string>assets/js/blog.js</string>
|
||||||
|
<string>public/discussions.html</string>
|
||||||
|
<string>discussd/discussd.js</string>
|
||||||
|
<string>discussd/posts.json</string>
|
||||||
|
<string>templates/blog/post.html</string>
|
||||||
|
<string>templates/blog/link.rss.html</string>
|
||||||
|
<string>templates/blog/link.mustache</string>
|
||||||
|
<string>templates/blog/post.mustache</string>
|
||||||
|
<string>templates/proj/index.html</string>
|
||||||
|
<string>templates/blog/index.html</string>
|
||||||
<string>Makefile</string>
|
<string>Makefile</string>
|
||||||
<string>public/js/iepngfix.htc</string>
|
|
||||||
<string>.gitignore</string>
|
|
||||||
</array>
|
</array>
|
||||||
<key>showFileHierarchyDrawer</key>
|
<key>showFileHierarchyDrawer</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>windowFrame</key>
|
<key>windowFrame</key>
|
||||||
<string>{{840, 4}, {840, 1024}}</string>
|
<string>{{0, 4}, {840, 1024}}</string>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@
|
||||||
</div>
|
</div>
|
||||||
<script type="text/html" id="comment_tmpl">
|
<script type="text/html" id="comment_tmpl">
|
||||||
<div class="comment">
|
<div class="comment">
|
||||||
|
<a name="comment-<%= id %>" id="comment-<%= id %>">
|
||||||
<p>
|
<p>
|
||||||
<% if (url) { %>
|
<% if (url) { %>
|
||||||
<a href="<%= url %>"><%= name %></a>
|
<a href="<%= url %>"><%= name %></a>
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,7 @@
|
||||||
</div>
|
</div>
|
||||||
<script type="text/html" id="comment_tmpl">
|
<script type="text/html" id="comment_tmpl">
|
||||||
<div class="comment">
|
<div class="comment">
|
||||||
|
<a name="comment-<%= id %>" id="comment-<%= id %>">
|
||||||
<p>
|
<p>
|
||||||
<% if (url) { %>
|
<% if (url) { %>
|
||||||
<a href="<%= url %>"><%= name %></a>
|
<a href="<%= url %>"><%= name %></a>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue