mirror of
https://github.com/samsonjs/samhuri.net.git
synced 2026-03-25 09:05:47 +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' }
|
||||
, countCommentsURL = function(post) { return server + 'count/' + post }
|
||||
|
||||
function getComments() {
|
||||
function getComments(cb) {
|
||||
SJS.request({uri: getCommentsURL(SJS.filename)}, function(err, request, body) {
|
||||
if (err) {
|
||||
$('#comments').text('derp')
|
||||
if (typeof cb === 'function') cb(err)
|
||||
return
|
||||
}
|
||||
var data
|
||||
|
|
@ -22,16 +22,34 @@
|
|||
, h = ''
|
||||
try {
|
||||
data = JSON.parse(body)
|
||||
} catch (e) {
|
||||
}
|
||||
catch (e) {
|
||||
console.log('not json -> ' + body)
|
||||
return
|
||||
}
|
||||
comments = data.comments
|
||||
if (comments.length) {
|
||||
if (comments && comments.length) {
|
||||
h = data.comments.map(function(c) {
|
||||
return tmpl('comment_tmpl', c)
|
||||
}).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
|
||||
try {
|
||||
data = JSON.parse(body)
|
||||
} catch (e) {
|
||||
}
|
||||
catch (e) {
|
||||
console.log('not json -> ' + body)
|
||||
return
|
||||
}
|
||||
n = data.count
|
||||
$('#sd').text(n > 0 ? 'show the discussion (' + n + ')' : 'start the discussion')
|
||||
})
|
||||
|
||||
$('#sd').click(function() {
|
||||
$('#sd-container').remove()
|
||||
$('#comment-stuff').slideDown(1.5, function() { this.scrollIntoView(true) })
|
||||
getComments()
|
||||
})
|
||||
// jump to comment if linked directly
|
||||
var hash = window.location.hash || ''
|
||||
if (/^#comment-\d+/.test(hash)) {
|
||||
alert(hash)
|
||||
showComments(function (err) {
|
||||
if (!err) {
|
||||
window.location.hash = ''
|
||||
window.location.hash = hash
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
$('#sd').click(showComments)
|
||||
|
||||
var showdown = new Showdown.converter()
|
||||
|
||||
|
|
@ -73,6 +101,7 @@
|
|||
document.getElementById('thoughts').focus()
|
||||
return false
|
||||
}
|
||||
comment.timestamp = +comment.timestamp
|
||||
|
||||
var options = { method: 'POST'
|
||||
, uri: postCommentURL()
|
||||
|
|
|
|||
|
|
@ -194,6 +194,9 @@ function commentServer(context) {
|
|||
return
|
||||
}
|
||||
comments = context.db.get(post) || []
|
||||
comments.forEach(function(c, i) {
|
||||
c.id = c.id || (i + 1)
|
||||
})
|
||||
res.respond({comments: comments.map(function(c) {
|
||||
delete c.email
|
||||
c.html = markdown.parse(c.body)
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>currentDocument</key>
|
||||
<string>.gitignore</string>
|
||||
<string>discussd/discussd.js</string>
|
||||
<key>documents</key>
|
||||
<array>
|
||||
<dict>
|
||||
|
|
@ -15,8 +15,6 @@
|
|||
<string>!(\.DS_Store|.*\.min\..*|.*\.tmproj)$</string>
|
||||
<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>
|
||||
<key>selected</key>
|
||||
<true/>
|
||||
<key>sourceDirectory</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
|
|
@ -25,7 +23,205 @@
|
|||
<integer>200</integer>
|
||||
<key>metaData</key>
|
||||
<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>
|
||||
<key>caret</key>
|
||||
<dict>
|
||||
|
|
@ -39,70 +235,14 @@
|
|||
<key>firstVisibleLine</key>
|
||||
<integer>0</integer>
|
||||
</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>
|
||||
<dict>
|
||||
<key>caret</key>
|
||||
<dict>
|
||||
<key>column</key>
|
||||
<integer>0</integer>
|
||||
<integer>19</integer>
|
||||
<key>line</key>
|
||||
<integer>26</integer>
|
||||
<integer>73</integer>
|
||||
</dict>
|
||||
<key>firstVisibleColumn</key>
|
||||
<integer>0</integer>
|
||||
|
|
@ -113,14 +253,24 @@
|
|||
<key>openDocuments</key>
|
||||
<array>
|
||||
<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>public/js/iepngfix.htc</string>
|
||||
<string>.gitignore</string>
|
||||
</array>
|
||||
<key>showFileHierarchyDrawer</key>
|
||||
<false/>
|
||||
<key>windowFrame</key>
|
||||
<string>{{840, 4}, {840, 1024}}</string>
|
||||
<string>{{0, 4}, {840, 1024}}</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@
|
|||
</div>
|
||||
<script type="text/html" id="comment_tmpl">
|
||||
<div class="comment">
|
||||
<a name="comment-<%= id %>" id="comment-<%= id %>">
|
||||
<p>
|
||||
<% if (url) { %>
|
||||
<a href="<%= url %>"><%= name %></a>
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@
|
|||
</div>
|
||||
<script type="text/html" id="comment_tmpl">
|
||||
<div class="comment">
|
||||
<a name="comment-<%= id %>" id="comment-<%= id %>">
|
||||
<p>
|
||||
<% if (url) { %>
|
||||
<a href="<%= url %>"><%= name %></a>
|
||||
|
|
|
|||
Loading…
Reference in a new issue