Commit d5a4f9eb authored by danielgrippi's avatar danielgrippi

use content_view for comments (markdown, tagging)

parent 985657cb
......@@ -18,9 +18,7 @@
</a>
</span>
<p class="collapsible">
<%= text %>
</p>
<%= text %>
<div class="comment_info">
<time class="timeago" datetime="<%= created_at %>"/>
......
......@@ -19,6 +19,7 @@ javascripts:
- public/javascripts/app/models/*
- public/javascripts/app/collections/*
- public/javascripts/app/views/stream_object_view.js
- public/javascripts/app/views/content_view.js
- public/javascripts/app/views/*
- public/javascripts/rails.validations.js
......
app.views.Comment = app.views.StreamObject.extend({
app.views.Comment = app.views.Content.extend({
template_name: "#comment-template",
......
app.views.Content = app.views.StreamObject.extend({
presenter : function(){
var model = this.model
return _.extend(this.defaultPresenter(), {
text : metafyText(model.get("text"))
})
function metafyText(text) {
//we want it to return at least a <p> from markdown
text = text || ""
return mentionify(
hashtagify(
markdownify(text)
)
)
}
function markdownify(text){
//markdown returns falsy when it performs no substitutions, apparently...
return markdown.toHTML(text) || text
}
function hashtagify(text){
var utf8WordCharcters =/(\s|^|>)#([\u0080-\uFFFF|\w|-]+|&lt;3)/g
return text.replace(utf8WordCharcters, function(hashtag, preceeder, tagText) {
return preceeder + "<a href='/tags/" + tagText + "' class='tag'>#" + tagText + "</a>"
})
}
function mentionify(text) {
var mentionRegex = /@\{([^;]+); ([^\}]+)\}/g
return text.replace(mentionRegex, function(mentionText, fullName, diasporaId) {
var personId = _.find(model.get("mentioned_people"), function(person){
return person.diaspora_id == diasporaId
}).id
return "<a href='/people/" + personId + "' class='mention'>" + fullName + "</a>"
})
return text
}
}
})
app.views.StatusMessage = app.views.Content.extend({
template_name : "#status-message-template"
});
app.views.Reshare = app.views.Content.extend({
template_name : "#reshare-template"
});
app.views.ActivityStreams__Photo = app.views.Content.extend({
template_name : "#activity-streams-photo-template"
});
(function(){
var postContentView = app.views.StreamObject.extend({
presenter : function(){
var model = this.model
return _.extend(this.defaultPresenter(), {
text : metafyText(model.get("text"))
})
function metafyText(text) {
//we want it to return at least a <p> from markdown
text = text || ""
return mentionify(
hashtagify(
markdownify(text)
)
)
}
function markdownify(text){
//markdown returns falsy when it performs no substitutions, apparently...
return markdown.toHTML(text) || text
}
function hashtagify(text){
var utf8WordCharcters =/(\s|^|>)#([\u0080-\uFFFF|\w|-]+|&lt;3)/g
return text.replace(utf8WordCharcters, function(hashtag, preceeder, tagText) {
return preceeder + "<a href='/tags/" + tagText + "' class='tag'>#" + tagText + "</a>"
})
}
function mentionify(text) {
var mentionRegex = /@\{([^;]+); ([^\}]+)\}/g
return text.replace(mentionRegex, function(mentionText, fullName, diasporaId) {
var personId = _.find(model.get("mentioned_people"), function(person){
return person.diaspora_id == diasporaId
}).id
return "<a href='/people/" + personId + "' class='mention'>" + fullName + "</a>"
})
return text
}
}
})
app.views.StatusMessage = postContentView.extend({
template_name : "#status-message-template"
});
app.views.Reshare = postContentView.extend({
template_name : "#reshare-template"
});
app.views.ActivityStreams__Photo = postContentView.extend({
template_name : "#activity-streams-photo-template"
});
})();
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment