diff --git a/public/javascripts/app/views/content_view.js b/public/javascripts/app/views/content_view.js
index 69f811461..c616392b2 100644
--- a/public/javascripts/app/views/content_view.js
+++ b/public/javascripts/app/views/content_view.js
@@ -10,7 +10,9 @@ app.views.Content = app.views.StreamObject.extend({
text = text || ""
return mentionify(
hashtagify(
- markdownify(text)
+ urlify(
+ markdownify(text)
+ )
)
)
}
@@ -34,11 +36,18 @@ app.views.Content = app.views.StreamObject.extend({
return person.diaspora_id == diasporaId
}).id
-
return "" + fullName + ""
})
return text
}
+
+ function urlify(text) {
+ var urlRegex = /[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/gi
+ return text.replace(urlRegex, function(url) {
+ var protocol = (url.search(/:\/\//) == -1 ? "http://" : "")
+ return "" + url + ""
+ })
+ }
}
})
diff --git a/spec/javascripts/app/views/post_view_spec.js b/spec/javascripts/app/views/post_view_spec.js
index d36581de9..f4fc85d44 100644
--- a/spec/javascripts/app/views/post_view_spec.js
+++ b/spec/javascripts/app/views/post_view_spec.js
@@ -126,6 +126,23 @@ describe("app.views.Post", function(){
})
})
+ context("generates urls from plaintext", function(){
+ it("works", function(){
+ links = ["http://google.com",
+ "https://joindiaspora.com",
+ "http://www.yahooligans.com",
+ "obama.com",
+ "japan.co.jp"]
+
+ this.statusMessage.set({text : links.join(" ")})
+ var view = new app.views.Post({model : this.statusMessage}).render();
+
+ _.each(links, function(link) {
+ expect(view.$("a[href='" + link + "']").text()).toContain(link)
+ })
+ })
+ })
+
context("user not signed in", function(){
it("does not provide a Feedback view", function(){
window.current_user = app.user(null);
diff --git a/spec/javascripts/support/jasmine.yml b/spec/javascripts/support/jasmine.yml
index ad92fb19a..1b8eb2ce2 100644
--- a/spec/javascripts/support/jasmine.yml
+++ b/spec/javascripts/support/jasmine.yml
@@ -42,6 +42,7 @@ src_files:
- 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/mobile.js