Module: tools
Branch: master
Commit: f3351e249f7ac4e4e72fcebcbebdfd851e3b5938
URL: https://gitlab.winehq.org/winehq/tools/-/commit/f3351e249f7ac4e4e72fcebcbeb…
Author: Francois Gouget <fgouget(a)codeweavers.com>
Date: Tue Jul 12 15:22:22 2022 +0200
testbot/web: Highlight both the 32 and 64-bit checkboxes in case of error.
The comment was wrong since the code explicitly checks that both
ShowRun32 and ShowRun64 are true.
Signed-off-by: Francois Gouget <fgouget(a)codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard(a)winehq.org>
---
testbot/web/Submit.pl | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/testbot/web/Submit.pl b/testbot/web/Submit.pl
index 4368aeeb..2e6c3cc7 100644
--- a/testbot/web/Submit.pl
+++ b/testbot/web/Submit.pl
@@ -410,8 +410,7 @@ sub Validate($)
!$self->{Run32} and $self->{ShowRun32} and
!$self->{Run64} and $self->{ShowRun64})
{
- # Don't set ErrField since Run32 and Run64 may be hidden
- $self->AddError("You must at least pick one of the 32 or 64 bit tests to run on the selected Windows VMs.");
+ $self->AddError("You must at least pick one of the 32 or 64 bit tests to run on the selected Windows VMs.", "Run32", "Run64");
return undef;
}
Module: website
Branch: master
Commit: f4a98f1b077da3ef6d5a1e1a8f632e66dcf97480
URL: https://gitlab.winehq.org/winehq/winehq/-/commit/f4a98f1b077da3ef6d5a1e1a8f…
Author: Jeremy Newman <jnewman(a)codeweavers.com>
Date: Tue Jul 12 14:30:38 2022 -0500
cleanup and reorg english forums/ml page
---
templates/en/forums.template | 59 ++++++++++++++++++++++++--------------------
1 file changed, 32 insertions(+), 27 deletions(-)
diff --git a/templates/en/forums.template b/templates/en/forums.template
index f0b55ad9..648a35ee 100644
--- a/templates/en/forums.template
+++ b/templates/en/forums.template
@@ -1,42 +1,40 @@
-<!--TITLE:[Mailing Lists / Forums]-->
+<!--TITLE:[Forums and Mailing Lists]-->
-<h1 class="title">Key Mailing Lists / Forums</h1>
+<h1 class="title">Forums and Mailing Lists</h1>
-<p>Wine has many mailing lists and forums.
-Here are the most useful ones for users:</p>
+<h2>WineHQ Forums</h2>
-<ul>
- <li>The <a href="//forum.winehq.org">WineHQ Forums</a></li>
+<p>Wine has many mailing lists and forums. Here are the most useful ones for users:</p>
- <li>Ubuntu users may also want to visit the <a href="http://ubuntuforums.org/forumdisplay.php?f=313">Wine area at Ubuntu Forums</a>
+<ul class="roomy">
- <li>If you want to be notified about new releases, subscribe to the <a href="//www.winehq.org/mailman/listinfo/wine-announce">Wine-Announce mailing list</a></li>
-</ul>
+ <li><a href="https://forum.winehq.org">WineHQ Forums</a></li>
+
+ <li><a href="https://ubuntuforums.org/forumdisplay.php?f=313">Wine area at Ubuntu Forums</a>
-<p>Please don't create another English language Wine forum (except perhaps
-a Wine area in a popular distro's main forum).</p>
+</ul>
<p>If you know of another active Wine forum - especially a non-English one
-- please let us know so we can add it to the list.
-(Email to dank(a)kegel.com would do.)</p>
+- please <a href="mailto:web-admin@winehq.org">let us know</a> so we can add it to the list.</p>
+
+<p class="text-muted"><i class="fa fa-info-circle"></i> If you only want to be notified about new releases, subscribe to the <a href="https://www.winehq.org/mailman3/postorius/lists/wine-announce.winehq.org/">Wine-Announce</a> mailing list</p>
+
+<h2>WineHQ Mailing Lists</h2>
-<h2>All WineHQ Mailing Lists</h2>
+<p>WineHQ has mailing lists for submitting patches, tracking Git commits, and discussing Wine development.</p>
-<p>WineHQ has mailing lists for submitting patches, tracking Git
-commits, and discussing Wine. They feature a very customizable user
-subscription config, and can be managed via
-<a href="https://www.winehq.org/mailman3/postorius/lists/?all-lists">the Mailman web interface</a>.</p>
+<p class="text-muted"><i class="fa fa-info-circle"></i> You need to subscribe to the lists before you can post
+to them, otherwise your posting will be discarded.<br>
+You can set your subscription to not send you email, or send as a digest.</p>
-<p><b>Note:</b> You should be subscribed to the lists before you post
-to them, otherwise your posting will be treated as possible spam by the
-mailing list software.</p>
+<h3>User Mailing Lists</h3>
<ul class="roomy">
<li>
<b><a href="mailto:wine-announce@winehq.org">wine-announce(a)winehq.org</a></b><br>
[<a href="https://www.winehq.org/mailman3/postorius/lists/wine-announce.winehq.org/">(Un-)Subscribe</a>]
- [<a href="https://www.winehq.org/mailman3/hyperkitty/list/wine-announce@winehq.org/">Archive</a>]
+ [<a href="https://www.winehq.org/mailman3/hyperkitty/list/wine-announce@winehq.org/">Archive</a>]<br>
A low traffic (2/month) read-only list for announcing releases
and other major Wine or WineHQ news.
</li>
@@ -48,24 +46,31 @@ mailing list software.</p>
A low traffic (10/day) open list for end-user discussions in Chinese.
</li>
+</ul>
+
+<h3>Developer Mailing Lists</h3>
+
+<ul class="roomy">
+
<li>
<b><a href="mailto:wine-devel@winehq.org">wine-devel(a)winehq.org</a></b><br>
[<a href="//www.winehq.org/mailman/listinfo/wine-devel">(Un-)Subscribe</a>]
- [<a href="//www.winehq.org/pipermail/wine-devel/">Archive</a>]
+ [<a href="//www.winehq.org/pipermail/wine-devel/">Archive</a>]<br>
A medium traffic (50/day) open list for discussing Wine development,
WineHQ, patches or anything else of interest to Wine developers.
</li>
<li>
<b><a href="mailto:wine-devel@winehq.org">wine-gitlab(a)winehq.org</a></b><br>
- [<a href="https://www.winehq.org/mailman3/hyperkitty/list/wine-gitlab@winehq.org/">Archive 1</a>]
+ [<a href="https://www.winehq.org/mailman3/postorius/lists/wine-gitlab.winehq.org/">(Un-)Subscribe</a>]
+ [<a href="https://www.winehq.org/mailman3/hyperkitty/list/wine-gitlab@winehq.org/">Archive</a>]<br>
A medium traffic (50/day) read only list for patches and merge requests from <a href="https://gitlab.winehq.org/">Wine Gitlab</a>.
</li>
<li>
<b><a href="mailto:wine-cvs@winehq.org">wine-cvs(a)winehq.org</a></b><br>
[<a href="//www.winehq.org/mailman/listinfo/wine-cvs">(Un-)Subscribe</a>]
- [<a href="//www.winehq.org/pipermail/wine-cvs/">Archive</a>]
+ [<a href="//www.winehq.org/pipermail/wine-cvs/">Archive</a>]<br>
A medium traffic (25/day) read only list which tracks commits to the Git
tree.
</li>
@@ -81,9 +86,9 @@ mailing list software.</p>
<li>
<b><a href="mailto:wine-bugs@winehq.org">wine-bugs(a)winehq.org</a></b><br>
[<a href="//www.winehq.org/mailman/listinfo/wine-bugs">(Un-)Subscribe</a>]
- [<a href="//www.winehq.org/pipermail/wine-bugs/">Archive</a>]
+ [<a href="//www.winehq.org/pipermail/wine-bugs/">Archive</a>]<br>
A high traffic (100/day) read-only list for monitoring activity on the
- <a href="//bugs.winehq.org/">Bug Tracking Database</a>.
+ <a href="https://bugs.winehq.org/">Bug Tracking Database</a>.
</li>
</ul>
Module: tools
Branch: master
Commit: b46bbedb3a402690812499d4c593427f00ffafcd
URL: https://gitlab.winehq.org/winehq/tools/-/commit/b46bbedb3a402690812499d4c59…
Author: Francois Gouget <fgouget(a)codeweavers.com>
Date: Mon Jul 11 18:46:17 2022 +0200
testbot/cgi: Take into account the form order in GetFirstErrField().
The base Page class does not know in which order the fields are so its
GetFirstErrField() method just returns the first invalid field in
alphabetical order. But for FormPage it makes more sense to return the
first invalid field in the form order.
Signed-off-by: Francois Gouget <fgouget(a)codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard(a)winehq.org>
---
testbot/lib/ObjectModel/CGI/FormPage.pm | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/testbot/lib/ObjectModel/CGI/FormPage.pm b/testbot/lib/ObjectModel/CGI/FormPage.pm
index 688ee13a..c299d54b 100644
--- a/testbot/lib/ObjectModel/CGI/FormPage.pm
+++ b/testbot/lib/ObjectModel/CGI/FormPage.pm
@@ -211,6 +211,35 @@ sub DisplayProperty($$)
=pod
=over 12
+=item C<GetFirstErrField()>
+
+Returns the first invalid field in the form order.
+
+See Page::GetFirstErrField().
+
+=back
+=cut
+
+sub GetFirstErrField($)
+{
+ my ($self) = @_;
+
+ if (defined $self->GetErrMessage())
+ {
+ foreach my $PropertyDescriptor (@{$self->GetPropertyDescriptors()})
+ {
+ if ($self->IsErrField($PropertyDescriptor->GetName()))
+ {
+ return $PropertyDescriptor->GetName();
+ }
+ }
+ }
+ return undef;
+}
+
+=pod
+=over 12
+
=item C<GetPropertyValue()>
Returns the underlying property value.
Module: tools
Branch: master
Commit: fa86aee33b575eafca5fb63e06ebc676348fc23c
URL: https://gitlab.winehq.org/winehq/tools/-/commit/fa86aee33b575eafca5fb63e06e…
Author: Francois Gouget <fgouget(a)codeweavers.com>
Date: Mon Jul 11 18:46:13 2022 +0200
testbot/cgi: Allow reporting multiple errors and multiple invalid fields.
Signed-off-by: Francois Gouget <fgouget(a)codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard(a)winehq.org>
---
testbot/lib/ObjectModel/CGI/FormPage.pm | 8 ++---
testbot/lib/ObjectModel/CGI/Page.pm | 56 +++++++++++++++++++++++----------
testbot/lib/WineTestBot/CGI/PageBase.pm | 2 +-
3 files changed, 44 insertions(+), 22 deletions(-)
diff --git a/testbot/lib/ObjectModel/CGI/FormPage.pm b/testbot/lib/ObjectModel/CGI/FormPage.pm
index 67b3fa00..688ee13a 100644
--- a/testbot/lib/ObjectModel/CGI/FormPage.pm
+++ b/testbot/lib/ObjectModel/CGI/FormPage.pm
@@ -505,17 +505,15 @@ sub GenerateBody($)
$self->GenerateFields();
$self->GenerateRequiredLegend();
- my $ErrMessage = $self->GetErrMessage();
- if (defined $ErrMessage)
+ if (defined $self->GetErrMessage())
{
- my $ErrField = $self->GetErrField();
- if (defined $ErrField)
+ foreach my $ErrField (sort $self->GetErrFields())
{
my $PropertyDescriptor = $self->GetPropertyDescriptorByName($ErrField);
if ($PropertyDescriptor and !($self->DisplayProperty($PropertyDescriptor))[0])
{
# The hidden fields should not be invalid
- $self->AddError("Internal error?\n$ErrMessage", $ErrField);
+ $self->AddError("The hidden $ErrField field is invalid (internal error?)", $ErrField);
}
}
$self->GenerateErrorPopup();
diff --git a/testbot/lib/ObjectModel/CGI/Page.pm b/testbot/lib/ObjectModel/CGI/Page.pm
index 1d8a59fe..37b19c8b 100644
--- a/testbot/lib/ObjectModel/CGI/Page.pm
+++ b/testbot/lib/ObjectModel/CGI/Page.pm
@@ -313,9 +313,9 @@ sub GetErrMessage($)
=pod
=over 12
-=head1 C<GetErrField()>
+=head1 C<GetFirstErrField()>
-Returns the name of the invalid field, undef otherwise.
+Returns the name of the first invalid field if any, undef otherwise.
Note that if the error does not concern a specific field this may return
undef even though an error has been set.
@@ -323,10 +323,29 @@ undef even though an error has been set.
=back
=cut
-sub GetErrField($)
+sub GetFirstErrField($)
{
my ($self) = @_;
- return $self->{ErrField};
+ return $self->{ErrFields} ? (sort keys %{$self->{ErrFields}})[0] : undef;
+}
+
+=pod
+=over 12
+
+=head1 C<GetErrFields()>
+
+Returns a list containing the names of the invalid field(s).
+
+Note that if the error does not concern a specific field this may return
+an empty list even though an error has been set.
+
+=back
+=cut
+
+sub GetErrFields($)
+{
+ my ($self) = @_;
+ return $self->{ErrFields} ? keys %{$self->{ErrFields}} : ();
}
=pod
@@ -334,7 +353,7 @@ sub GetErrField($)
=head1 C<IsErrField()>
-Returns true if the error concerns the specified field.
+Returns true if the specified field needs to be fixed.
=back
=cut
@@ -342,7 +361,7 @@ Returns true if the error concerns the specified field.
sub IsErrField($$)
{
my ($self, $FieldName) = @_;
- return (defined $self->{ErrField} and $self->{ErrField} eq $FieldName);
+ return $self->{ErrFields}->{$FieldName};
}
=pod
@@ -350,17 +369,18 @@ sub IsErrField($$)
=head1 C<AddError()>
-Sets the error message to be shown to the user.
+Adds an error message to be shown to the user.
=over
=item ErrMessage
A message to be shown on the page that describes why the form data is invalid.
This should include the display name of the field(s) that need to be fixed.
-If this parameter is false the error message is not modified.
+If this parameter is false, the error message and the list of invalid fields
+are not modified.
-=item ErrField
-If the error concerns a specific field, the name of that field. This can be
-used by the page to highlight the field that needs to be corrected.
+=item ErrFields
+A list of field names related to the error. This can be used by the page to
+highlight the field(s) that needs to be corrected.
=back
@@ -370,14 +390,18 @@ was actually added.
=back
=cut
-sub AddError($$;$)
+sub AddError($$@)
{
- my ($self, $ErrMessage, $ErrField) = @_;
+ my $self = shift;
+ my $ErrMessage = shift;
if ($ErrMessage)
{
- $self->{ErrMessage} = $ErrMessage;
- $self->{ErrField} = $ErrField;
+ $self->{ErrMessage} = "$self->{ErrMessage}\n$ErrMessage";
+ foreach my $ErrField (@_)
+ {
+ $self->{ErrFields}->{$ErrField} = 1;
+ }
}
return $ErrMessage;
}
@@ -387,7 +411,7 @@ sub ResetErrors($)
my ($self) = @_;
delete $self->{ErrMessage};
- delete $self->{ErrField};
+ delete $self->{ErrFields};
}
sub GenerateErrorDiv($)
diff --git a/testbot/lib/WineTestBot/CGI/PageBase.pm b/testbot/lib/WineTestBot/CGI/PageBase.pm
index bcfbdb80..e3cf7469 100644
--- a/testbot/lib/WineTestBot/CGI/PageBase.pm
+++ b/testbot/lib/WineTestBot/CGI/PageBase.pm
@@ -375,7 +375,7 @@ sub GenerateErrorPopup($$)
print "<script type='text/javascript'>\n";
print "<!--\n";
print "function ShowError() { alert(", $Page->JsQuote($ErrMessage), "); }\n";
- my $ErrField = $Page->GetErrField();
+ my $ErrField = $Page->GetFirstErrField();
if ($ErrField)
{
print "document.forms[0].", $ErrField, ".focus();\n";