This commit is contained in:
Parziphal 2014-09-07 16:38:08 -05:00
parent 57a89bc76c
commit 4f8a3a8c2b
2 changed files with 15 additions and 15 deletions

View File

@ -1,6 +1,8 @@
<?php <?php
class AvatarHelper extends Rails\ActionView\Helper class AvatarHelper extends Rails\ActionView\Helper
{ {
protected $avatar_posts_registry = [];
# id is an identifier for the object referencing this avatar; it's passed down # id is an identifier for the object referencing this avatar; it's passed down
# to the javascripts to implement blacklisting "click again to open". # to the javascripts to implement blacklisting "click again to open".
public function avatar(User $user, $id, array $html_options = array()) public function avatar(User $user, $id, array $html_options = array())
@ -11,29 +13,28 @@ class AvatarHelper extends Rails\ActionView\Helper
#if not @shown_avatars[user] then #if not @shown_avatars[user] then
$shown_avatars[$user->id] = true; $shown_avatars[$user->id] = true;
$posts_to_send[] = $user->avatar_post; $posts_to_send[] = $user->avatar_post;
$this->avatar_posts_registry[] = $user->avatar_post;
$img = $this->imageTag($user->avatar_url() . "?" . strtotime($user->avatar_timestamp), $img = $this->imageTag($user->avatar_url() . "?" . strtotime($user->avatar_timestamp),
array_merge(array('class' => "avatar", 'width' => $user->avatar_width, 'height' => $user->avatar_height), $html_options)); array_merge(array('class' => "avatar", 'width' => $user->avatar_width, 'height' => $user->avatar_height), $html_options));
return $this->linkTo($img, return $this->linkTo($img,
array("post#show", 'id' => $user->avatar_post->id), array("post#show", 'id' => $user->avatar_post->id),
array('class' => "ca" . $user->avatar_post->id, array('class' => "ca" . $user->avatar_post->id,
'onclick' => "Post.check_avatar_blacklist(".$user->avatar_post->id.", ".$id.")")); 'onclick' => "return Post.check_avatar_blacklist(".$user->avatar_post->id.", ".$id.")"));
#end #end
} }
public function avatar_init(Post $post = null) public function avatar_init(Post $post = null)
{ {
static $posts = array(); if (!$this->avatar_posts_registry) {
if ($post) {
$posts[(string)$post->id] = $post;
} else {
if (!$posts)
return ''; return '';
}
$ret = ''; $ret = '';
foreach ($posts as $post) foreach ($this->avatar_posts_registry as $post) {
$ret .= 'Post.register('.$post->toJson().")\n"; $ret .= 'Post.register('.$post->toJson().");\n";
$ret .= 'Post.init_blacklisted()'; }
$ret .= "Post.init_blacklisted();\n";
return $ret; return $ret;
} }
} }
}

View File

@ -9,7 +9,6 @@
<?= $this->linkTo($this->t(array('time.x_ago', 't' => $this->timeAgoInWords($this->comment->created_at))), array('post#show', 'id' => $this->comment->post_id, 'anchor' => "c".$this->comment->id)) ?> <?= $this->linkTo($this->t(array('time.x_ago', 't' => $this->timeAgoInWords($this->comment->created_at))), array('post#show', 'id' => $this->comment->post_id, 'anchor' => "c".$this->comment->id)) ?>
</span> </span>
<?php if ($this->comment->user and $this->comment->user->has_avatar()) : ?> <?php if ($this->comment->user and $this->comment->user->has_avatar()) : ?>
<?php $this->avatar_init($this->comment->user->avatar_post) ?>
<div class="comment-avatar-container"> <?= $this->avatar($this->comment->user, $this->comment->id) ?> </div> <div class="comment-avatar-container"> <?= $this->avatar($this->comment->user, $this->comment->id) ?> </div>
<?php endif ?> <?php endif ?>
</div> </div>