Bug 134368 - Add new textarea via AJAX + some validation form

git-svn-id: svn://svn.office.custis.ru/3rdparty/bugzilla.org/trunk@1820 6955db30-a419-402b-8a0d-67ecbb4d7f56
master
akrasilnikov 2013-09-27 12:14:55 +00:00
parent f9a7aa1b64
commit 42ce2b8129
4 changed files with 49 additions and 23 deletions

View File

@ -1056,15 +1056,19 @@ sub update
# Save edited comment
foreach my $edited_comment (@{$self->{edited_comments} || []})
{
$dbh->do("UPDATE longdescs SET thetext = ? WHERE comment_id = ?",
undef, $edited_comment->{thetext}, $edited_comment->{comment_id});
$edited_comment->{bug_id} = $self->bug_id;
$edited_comment->{who} ||= $user->id;
$edited_comment->{bug_when} = $delta_ts if !$edited_comment->{bug_when} || $edited_comment->{bug_when} gt $delta_ts;
my $columns = join(',', keys %$edited_comment);
my @values = values %$edited_comment;
my $qmarks = join(',', ('?') x @values);
$dbh->do("INSERT INTO longdescs_history ($columns) VALUES ($qmarks)", undef, @values);
my $c_comment = Bugzilla::Comment->new($edited_comment->{comment_id});
if (!$c_comment->is_private || ($c_comment->is_private && $user->is_insider))
{
$dbh->do("UPDATE longdescs SET thetext = ? WHERE comment_id = ?",
undef, $edited_comment->{thetext}, $edited_comment->{comment_id});
$edited_comment->{bug_id} = $self->bug_id;
$edited_comment->{who} ||= $user->id;
$edited_comment->{bug_when} = $delta_ts if !$edited_comment->{bug_when} || $edited_comment->{bug_when} gt $delta_ts;
my $columns = join(',', keys %$edited_comment);
my @values = values %$edited_comment;
my $qmarks = join(',', ('?') x @values);
$dbh->do("INSERT INTO longdescs_history ($columns) VALUES ($qmarks)", undef, @values);
}
}
# Insert the values into the multiselect value tables

View File

@ -363,11 +363,38 @@ addListener(window, 'load', function() {
});
function showEditComment(comment_id) {
var el = document.getElementById("edit_comment_" + comment_id);
if (el.style.display == 'block') {
el.style.display = 'none';
} else {
el.style.display = 'block';
var el_container = document.getElementById("bz_textarea_"+comment_id);
var x;
if (window.XMLHttpRequest)
x = new XMLHttpRequest();
else
{
try { x = new ActiveXObject("Msxml2.XMLHTTP"); }
catch (e) { x = new ActiveXObject("Microsoft.XMLHTTP"); }
}
x.onreadystatechange = function()
{
if (x.readyState == 4)
{
var r = {};
try { eval('r = '+x.responseText+';'); } catch (e) { return; }
if (r.status == 'ok')
{
if (r.comments)
{
for(var key in r.comments)
{
var comment = r.comments[key];
el_container.innerHTML = '<textarea class="bz_textarea" name="edit_comment[' + comment_id + ']"> ' + comment.text + '</textarea>';
}
}
}
}
};
var u = window.location.href.replace(/[^\/]+$/, '');
u += 'xml.cgi?method=Bug.comments&output=json&comment_ids=' + comment_id;
x.open('GET', u);
x.send(null);
}

View File

@ -24,3 +24,5 @@
.bz_comment_text.bz_fullscreen_comment { min-width: 50em; width: 100%; word-wrap: break-word; }
#comments > table, .bz_section_additional_comments > table { table-layout: fixed; }
.bz_textarea { width: 100%; height: 150px; }

View File

@ -120,7 +120,7 @@
[% IF NOT wt_only %]
<span class="bz_comment_number">
[% IF comment.author.id == user.id %]
[<a href="#" onclick="showEditComment([% comment.id FILTER html %]); return false;">Edit Comment</a>]
[<a href="#" onclick="showEditComment([% comment.id %]); return false;">Edit Comment</a>]
[% END %]
<a name="c[% comment.count %]"
href="show_bug.cgi?id=[% bug.bug_id %]#c[% comment.count %]">
@ -168,14 +168,7 @@
</div>
[% IF comment.author.id == user.id && !wt_only %]
<style>
.bz_textarea {
width: 100%; height: 150px; display: none;
}
</style>
<textarea id="edit_comment_[% comment.id FILTER html %]" class="bz_textarea" name="edit_comment[[% comment.id FILTER html %]]">
[%+ comment.body -%]
</textarea>
<div id="bz_textarea_[% comment.id %]"></div>
[% END %]
</div>
[% END %]