allow linking directly to comments

This commit is contained in:
Sami Samhuri 2011-12-09 19:50:55 -08:00
parent 0bbb87c53c
commit fc3a270617
5 changed files with 261 additions and 77 deletions

View file

@ -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()

View file

@ -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)

View file

@ -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>

View file

@ -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>

View file

@ -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>