mark: A photo of Mark kneeling on top of the Taal Volcano in the Philippines. It was a long hike. (Default)
Mark Smith ([staff profile] mark) wrote in [site community profile] changelog2009-07-13 02:31 am

[dw-free] Entry preview does not include metadata, including tags

[commit: http://hg.dwscoalition.org/dw-free/rev/09ad0e14b1dd]

http://bugs.dwscoalition.org/show_bug.cgi?id=545

Add missing metadata items to entry preview.

Patch by [personal profile] afuna.

Files modified:
  • cgi-bin/LJ/S2.pm
  • htdocs/preview/entry.bml
--------------------------------------------------------------------------------
diff -r 5f0f1648285b -r 09ad0e14b1dd cgi-bin/LJ/S2.pm
--- a/cgi-bin/LJ/S2.pm	Mon Jul 13 02:24:12 2009 +0000
+++ b/cgi-bin/LJ/S2.pm	Mon Jul 13 02:31:48 2009 +0000
@@ -1923,8 +1923,11 @@ sub Entry
     my $r = BML::get_request();
 
     # custom friend groups
-    my $entry = LJ::Entry->new($e->{journal}->{_u}, ditemid => $e->{itemid});
-    my $group_names = $entry->group_names;
+    my $group_names = $arg->{group_names};
+    unless ( $group_names ) {
+        my $entry = LJ::Entry->new($e->{journal}->{_u}, ditemid => $e->{itemid});
+        $group_names = $entry->group_names;
+    }
     $e->{metadata}->{groups} = $group_names if $group_names;
 
     # TODO: Populate this field more intelligently later, but for now this will
diff -r 5f0f1648285b -r 09ad0e14b1dd htdocs/preview/entry.bml
--- a/htdocs/preview/entry.bml	Mon Jul 13 02:24:12 2009 +0000
+++ b/htdocs/preview/entry.bml	Mon Jul 13 02:31:48 2009 +0000
@@ -162,8 +162,45 @@ body<=
             $current{'Music'} = $req{'prop_current_music'};
             LJ::CleanHTML::clean_subject(\$current{'Music'});
         }
+        if ( $req{prop_current_location} || $req{prop_current_coords} ) {
+            my $loc = eval { LJ::Location->new( coords   => $req{prop_current_coords},
+                                               location => $req{prop_current_location} ) };
+            $current{Location} = $loc->as_html_current if $loc;
+        }    
 
-        $ret .= "<div style='margin-left: 30px'>";
+        # custom friend groups
+        my %group_ids = ( map { $_ => 1 } grep { $req{allowmask} & ( 1 << $_ ) } 1..60 );
+        
+        if ( scalar( keys %group_ids ) > 0 ) {
+            my $groups = $u->trust_groups || {};
+            if ( keys %$groups ) {
+                my @trust_groups = ();
+        
+                foreach my $groupid ( keys %$groups ) {
+                    next unless $group_ids{$groupid};
+        
+                    my $name = LJ::ehtml( $groups->{$groupid}->{groupname} );
+                    my $url = LJ::eurl( $u->journal_base . "/security/group:$name" );
+        
+                    my $group_text = $u->get_cap( "security_filter" ) ? "<a href='$url'>$name</a>" : $name;
+                    push @trust_groups, $group_text;
+                }
+        
+                $current{Groups} = join( ', ', @trust_groups ) if @trust_groups;
+            }        
+        }
+
+        my @taglist = ();
+        LJ::Tags::is_valid_tagstring( $POST{prop_taglist}, \@taglist );
+        if ( @taglist ) {
+            my $base = $u->journal_base;
+            $current{Tags} = join( ', ',
+                                   map { "<a href='$base/tag/" . LJ::eurl( $_ ) . "'>" . LJ::ehtml( $_ ) . "</a>" }
+                                   @taglist
+                               );
+        }
+
+        $ret .= "<div id='entry' class='usercontent' style='margin-left: 30px'>";
 
         if (%current)
         {
@@ -242,9 +279,35 @@ body<=
         LJ::Tags::is_valid_tagstring($POST{prop_taglist}, \@taglist);
         @taglist = map { LJ::S2::Tag($u, -1, $_) } @taglist;
 
+        # build metadata props
+        $req{props}->{$_} = $req{"prop_".$_}
+            foreach ( qw( current_music current_location current_coords current_moodid current_mood ) );
+
+        # custom friends groups
+        my $group_names;
+        my %group_ids = ( map { $_ => 1 } grep { $req{allowmask} & ( 1 << $_ ) } 1..60 );
+        
+        if ( scalar( keys %group_ids ) > 0 ) {
+            my $groups = $u->trust_groups || {};
+            if ( keys %$groups ) {
+                my @trust_groups = ();
+        
+                foreach my $groupid ( keys %$groups ) {
+                    next unless $group_ids{$groupid};
+        
+                    my $name = LJ::ehtml( $groups->{$groupid}->{groupname} );
+                    my $url = LJ::eurl( $u->journal_base . "/security/group:$name" );
+        
+                    my $group_text = $u->get_cap( "security_filter" ) ? "<a href='$url'>$name</a>" : $name;
+                    push @trust_groups, $group_text;
+                }
+        
+                $group_names = join( ', ', @trust_groups ) if @trust_groups;
+            }        
+        }
+
         # format it
         my $raw_subj = $req{'subject'};
-
         my $s2entry = LJ::S2::Entry($u, {
             'subject' => $subject,
             'text' => $event,
@@ -261,6 +324,8 @@ body<=
             'tags' => \@taglist,
             'userpic' => $userpic,
             'permalink_url' => "#",
+            adult_content_level => $req{prop_adult_content},
+            group_names => $group_names,
         });
 
         $p->{'multiform_on'} = 0;
--------------------------------------------------------------------------------

Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org