George Baugh 1 gadu atpakaļ
vecāks
revīzija
2a07a10749
4 mainītis faili ar 21 papildinājumiem un 7 dzēšanām
  1. 16 0
      lib/Trog/Auth.pm
  2. 1 3
      lib/Trog/DataModule.pm
  3. 3 3
      lib/Trog/Routes/HTML.pm
  4. 1 1
      www/templates/css/avatars.tx

+ 16 - 0
lib/Trog/Auth.pm

@@ -17,6 +17,7 @@ use Trog::Utils;
 use Trog::Log qw{:all};
 use Trog::Config;
 use Trog::SQLite;
+use Trog::Data;
 
 =head1 Trog::Auth
 
@@ -110,6 +111,21 @@ sub username2display ($name) {
     return $rows->[0]{display_name};
 }
 
+sub username2classname ($name) {
+    # Just return the user's post UUID.
+    state $data;
+    state $conf;
+    $conf //= Trog::Config::get();
+    $data //= Trog::Data->new($conf);
+
+    state @userposts = $data->get( tags => ['about'], acls => [qw{admin}] );
+    # Users are always self-authored, you see
+
+    my $user_obj  = List::Util::first { ( $_->{user} || '' ) eq $name } @userposts;
+    my $NNname = $user_obj->{id} || '';
+    $NNname =~ tr/-/_/;
+    return "a_$NNname";
+}
 =head2 acls4user(STRING username) = ARRAYREF
 
 Return the list of ACLs belonging to the user.

+ 1 - 3
lib/Trog/DataModule.pm

@@ -133,9 +133,7 @@ sub _fixup ( $self, @filtered ) {
 
         $subj->{method} = 'GET' unless exists( $subj->{method} );
 
-        $subj->{user_class} = $user2display{ $subj->{user} };
-        $subj->{user_class} =~ tr/ /_/ if $subj->{user_class};
-
+        $subj->{user_class} = Trog::Auth::username2classname($subj->{user});
         $subj
     } @filtered;
 

+ 3 - 3
lib/Trog/Routes/HTML.pm

@@ -284,9 +284,7 @@ sub index ( $query, $content = '', $i_styles = [], $i_scripts = [] ) {
 
     # Grab the avatar class for the logged in user
     if ( $query->{user} ) {
-        $query->{user_class} = Trog::Auth::username2display( $query->{user} );
-        # For "wizi" users with no user page, suppress warnings here
-        $query->{user_class} =~ tr/ /_/ if $query->{user_class};
+        $query->{user_class} = Trog::Auth::username2classname( $query->{user} );
     }
 
     state $data;
@@ -1009,6 +1007,8 @@ sub avatars ($query) {
         $query->{etag} = "$posts[0]{id}-$posts[0]{version}";
     }
 
+    @posts = map { $_->{id} =~ tr/-/_/; $_->{id} = "a_$_->{id}"; $_ } @posts;
+
     return Trog::Renderer->render(
         template => 'avatars.tx',
         data     => {

+ 1 - 1
www/templates/css/avatars.tx

@@ -1,6 +1,6 @@
 /*User Images set here*/
 : for $users -> $post {
-a.<: $post.user_class :> {
+a.<: $post.id :> {
  background-image: url(<: $post.preview :>);
  filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='<: $post.preview :>', sizingMethod='scale');
  -ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='<: $post.preview :>', sizingMethod='scale')"