body<= " unless $remote; my $err = sub { return ""; }; return $err->($ML{'.disabled'}) if $LJ::DISABLED{tags}; LJ::need_res("stc/tags.css", "js/tags.js"); my ($ret, $msg); return $err->($ML{'.invalid.link'}) unless LJ::did_post() || ($GET{journal} && $GET{itemid}); my $journal = $GET{journal} || $POST{journal}; my $u = LJ::load_user($journal); return $err->($ML{'.invalid.journal'}) unless $u; return $err->($ML{'.readonly.journal'}) if $u->is_readonly; return $err->($ML{'.invalid.journal'}) unless $u->{statusvis} eq 'V'; my $ditemid = ($GET{itemid} || $POST{itemid})+0; my $anum = $ditemid % 256; my $jitemid = $ditemid >> 8; return $err->($ML{'.invalid.entry'}) unless $jitemid; my $logrow = LJ::get_log2_row($u, $jitemid); return $err->($ML{'.invalid.entry'}) unless $logrow; return $err->($ML{'.invalid.entry'}) unless $logrow->{anum} == $anum; return $err->($ML{'.invalid.notauthorized'}) unless LJ::can_view($remote, $logrow); # poster must be visible too if ($logrow->{posterid} != $u->{userid}) { my $pu = LJ::load_userid($logrow->{posterid}); unless ($remote->can_manage($u) && !$pu->is_suspended) { return $err->($ML{'.readonly.poster'}) if $pu->is_readonly; return $err->($ML{'.invalid.journal'}) if $pu->{statusvis} ne 'V'; } } if (LJ::did_post()) { return $err->($ML{'.invalid.link'}) unless LJ::check_form_auth(); my $tagerr = ""; my $rv = LJ::Tags::update_logtags($u, $jitemid, { set_string => $POST{edittags}, remote => $remote, err_ref => \$tagerr, }); return $err->($tagerr) unless $rv; BML::redirect( LJ::journal_base($u) . "/$ditemid.html" ); #$msg = "
Tags successfully updated.
"; } my $lt2 = LJ::get_logtext2($u, $jitemid); my ($subj, $evt) = @{$lt2->{$jitemid} || []}; return $err->($ML{'.error.db'}) unless $evt; my (%props, %opts); LJ::load_log_props2($u->{userid}, [$jitemid], \%props); $opts{'preformatted'} = $props{$jitemid}{'opt_preformatted'}; LJ::CleanHTML::clean_subject(\$subj); LJ::CleanHTML::clean_event(\$evt, \%opts); my $logtags = LJ::Tags::get_logtags($u, $jitemid); my $usertags = LJ::Tags::get_usertags($u, { remote => $remote }) || {}; $logtags = $logtags->{$jitemid} || {}; my $logtagstr = join ', ', map { LJ::ejs($_) } sort values %$logtags; $ret .= "
"; $ret .= ""; $ret .= ''; $ret .= "" if $subj; $ret .= ""; $ret .= ""; # spacer $ret .= ""; $ret .= ''; $ret .= LJ::form_auth(); $ret .= ""; $ret .= ""; $ret .= '
$ML{'.subject'}$subj
$ML{'.entry'}$evt
  
$ML{'.current'}
"; if ( LJ::Tags::can_add_tags($u, $remote) ) { $ret .= LJ::html_text( { name => 'edittags', value => (join ', ', sort values %$logtags), size => 40, class => 'tagfield', id => 'tagfield', } ); $ret .= '  '; $ret .= LJ::html_submit( 'save', $ML{'.button.save'}, { class => 'btn' }); $ret .= $msg if $msg; } else { # no widgets $ret .= $ML{'.permissions.none'}; } $ret .= "
$ML{'.users'}"; if ( scalar keys %$usertags ) { $ret .= ""; } else { $ret .= "none" } $ret .= "

"; $ret .= "$ML{'.permissions.add.yes'}
" if LJ::Tags::can_add_tags($u, $remote); $ret .= "$ML{'.permissions.control.yes'}
" if LJ::Tags::can_control_tags($u, $remote); $ret .= BML::ml('.view', { aopts => 'href="' . LJ::journal_base($u) . "/$ditemid.html" . '"' }); $ret .= "
'; $ret .= LJ::html_hidden('journal', $journal); $ret .= LJ::html_hidden('itemid', $GET{itemid} || $POST{itemid}); $ret .= ''; return $ret; } _code?> <=body page?>