mirror of
https://github.com/vale981/Vulcan
synced 2025-03-07 02:21:43 -05:00
127 lines
No EOL
3.4 KiB
JavaScript
127 lines
No EOL
3.4 KiB
JavaScript
Template.post_item.events = {
|
|
'click .go-to-comments': function(e){
|
|
e.preventDefault();
|
|
// Session.set('selected_post', this);
|
|
Session.set('state', 'view_post');
|
|
Router.navigate('posts/'+this._id, {trigger: true});
|
|
}
|
|
|
|
, 'click .upvote-link': function(){
|
|
console.log('upvote', this);
|
|
Meteor.call('voteForPost', this);
|
|
}
|
|
|
|
, 'click .share-link': function(e){
|
|
var $this = $(e.target);
|
|
e.preventDefault();
|
|
$(".share-link").not($this).next().addClass("hidden");
|
|
$this.next().toggleClass("hidden");
|
|
// $(".overlay").toggleClass("hidden");
|
|
}
|
|
};
|
|
|
|
|
|
Template.post_item.created = function(){
|
|
if(this.data){
|
|
this.current_distance = (getRank(this.data)-1) * 80;
|
|
}
|
|
}
|
|
|
|
Template.post_item.rendered = function(){
|
|
// t("post_item");
|
|
if(this.data){
|
|
var new_distance=(getRank(this.data)-1)*80;
|
|
var old_distance=this.current_distance;
|
|
var $this=$(this.find(".post"));
|
|
var instance=this;
|
|
// console.log("rendered: ", this.data.headline, "| old distance: "+old_distance, "| new distance: "+new_distance);
|
|
|
|
// at rendering time, move posts to their old place
|
|
$this.css("top", old_distance+"px");
|
|
setTimeout(function() {
|
|
// then a few milliseconds after, move the to their new spot
|
|
$this.css("top", new_distance+"px");
|
|
// we don't want elements to be animated the first ever time they load, so we only set the class "animate" after that
|
|
$this.addClass("animate");
|
|
instance.current_distance=new_distance;
|
|
}, 100);
|
|
}
|
|
|
|
if (Meteor.is_client) {
|
|
if($(window).width()>400){ //do not load social media plugin on mobile
|
|
// $('.share-replace').sharrre({
|
|
// share: {
|
|
// googlePlus: true,
|
|
// facebook: true,
|
|
// twitter: true,
|
|
// },
|
|
// buttons: {
|
|
// googlePlus: {size: 'tall'},
|
|
// facebook: {layout: 'box_count'},
|
|
// twitter: {count: 'vertical'},
|
|
// },
|
|
// enableHover: false,
|
|
// enableCounter: false,
|
|
// enableTracking: true
|
|
// });
|
|
}
|
|
}
|
|
};
|
|
|
|
Template.post_item.preserve({
|
|
'.post': function (node) {return node.id; }
|
|
});
|
|
|
|
Template.post_item.ago = function(){
|
|
var submitted = new Date(this.submitted);
|
|
var timeAgo=jQuery.timeago(submitted);
|
|
return timeAgo;
|
|
};
|
|
|
|
Template.post_item.voted = function(){
|
|
var user = Meteor.user();
|
|
if(!user) return false;
|
|
|
|
return _.include(this.voters, user._id);
|
|
};
|
|
|
|
var getRank = function(post){
|
|
var filter = {$or: [
|
|
{score: {$gt: post.score}},
|
|
{$and: [{score: post.score}, {submitted: {$lt: post.submitted}}]}
|
|
]};
|
|
return Posts.find(filter).count()+1;
|
|
}
|
|
|
|
Template.post_item.rank = function() {
|
|
return getRank(this);
|
|
}
|
|
|
|
Template.post_item.domain = function(){
|
|
var a = document.createElement('a');
|
|
a.href = this.url;
|
|
return a.hostname;
|
|
};
|
|
|
|
Template.post_item.is_my_post = function(){
|
|
if(this.user_id && Meteor.user() && Meteor.user()._id==this.user_id){
|
|
return true;
|
|
}
|
|
return false;
|
|
};
|
|
|
|
Template.post_item.author = function(){
|
|
if(this.user_id && Meteor.users.findOne(this.user_id)){
|
|
return Meteor.users.findOne(this.user_id).username
|
|
}
|
|
};
|
|
|
|
Template.post_item.short_score = function(){
|
|
return Math.floor(this.score*1000)/1000;
|
|
}
|
|
|
|
Template.post_item.body_formatted = function(){
|
|
var converter = new Markdown.Converter();
|
|
var html_body=converter.makeHtml(this.body);
|
|
return html_body.autoLink();
|
|
} |