[Jifty-commit] r1024 - in jifty/trunk: . lib/Jifty
share/web/static/css share/web/static/js share/web/templates/__jifty
jifty-commit at lists.jifty.org
jifty-commit at lists.jifty.org
Mon May 8 22:37:40 EDT 2006
Author: jesse
Date: Mon May 8 22:37:38 2006
New Revision: 1024
Modified:
jifty/trunk/ (props changed)
jifty/trunk/lib/Jifty/Action.pm
jifty/trunk/lib/Jifty/Result.pm
jifty/trunk/lib/Jifty/Web/Form/Field.pm
jifty/trunk/share/web/static/css/base.css
jifty/trunk/share/web/static/css/forms.css
jifty/trunk/share/web/static/js/jifty.js
jifty/trunk/share/web/templates/__jifty/validator.xml
Log:
r13323 at hualien: jesse | 2006-05-08 22:36:22 -0400
Support for "warnings" in addition to the existing "errors" and "validators" from Sean E. Millichamp
Modified: jifty/trunk/lib/Jifty/Action.pm
==============================================================================
--- jifty/trunk/lib/Jifty/Action.pm (original)
+++ jifty/trunk/lib/Jifty/Action.pm Mon May 8 22:37:38 2006
@@ -507,6 +507,20 @@
return 'errors-' . $self->form_field_name($field_name);
}
+=head2 warning_div_id ARGUMENT
+
+Turn one of this action's L<arguments|Jifty::Manual::Glossary/arguments> into
+the id for the div in which its warnings live; takes name of the field
+as an argument.
+
+=cut
+
+sub warning_div_id {
+ my $self = shift;
+ my $field_name = shift;
+ return 'warnings-' . $self->form_field_name($field_name);
+}
+
=head1 VALIDATION METHODS
@@ -821,6 +835,27 @@
return 0;
}
+=head2 validation_warning ARGUMENT => WARNING TEXT
+
+Used to report a warning during validation. Inside a validator you
+should write:
+
+ return $self->validation_warning( $field => "warning");
+
+..where C<$field> is the name of the argument which is at fault.
+
+=cut
+
+sub validation_warning {
+ my $self = shift;
+ my $field = shift;
+ my $warning = shift;
+
+ $self->result->field_warning($field => $warning);
+
+ return 0;
+}
+
=head2 validation_ok ARGUMENT
Used to report that a field B<does> validate. Inside a validator you
Modified: jifty/trunk/lib/Jifty/Result.pm
==============================================================================
--- jifty/trunk/lib/Jifty/Result.pm (original)
+++ jifty/trunk/lib/Jifty/Result.pm Mon May 8 22:37:38 2006
@@ -109,6 +109,32 @@
return %{$self->{field_errors}};
}
+=head2 field_warning FIELD [WARNING]
+
+Gets or sets the warning string for a specific field on the action.
+
+=cut
+
+sub field_warning {
+ my $self = shift;
+ my $field = shift;
+
+ $self->{field_warnings}{ $field } = shift if @_;
+ return $self->{field_warnings}{ $field };
+}
+
+=head2 field_warnings
+
+Returns a hash which maps L<argument|Jifty::Manual::Glossary/argument>
+name to warning.
+
+=cut
+
+sub field_warnings {
+ my $self = shift;
+ return %{$self->{field_warnings}};
+}
+
=head2 content [KEY [, VALUE]]
Gets or sets the content C<KEY>. This is used when actions need to
Modified: jifty/trunk/lib/Jifty/Web/Form/Field.pm
==============================================================================
--- jifty/trunk/lib/Jifty/Web/Form/Field.pm (original)
+++ jifty/trunk/lib/Jifty/Web/Form/Field.pm Mon May 8 22:37:38 2006
@@ -279,8 +279,8 @@
=head2 render
Outputs this form element in a span with class C<form_field>. This
-outputs the label, the widget itself, any hints, and any errors, using
-L</render_label>, L</render_widget>, L</render_hints>,
+outputs the label, the widget itself, any hints, any errors, and any
+warnings using L</render_label>, L</render_widget>, L</render_hints>,
L</render_errors> respectively. Returns an empty string.
This is also what C<Jifty::Web::Form::Field>s do when stringified.
@@ -300,6 +300,7 @@
$self->render_key_binding();
$self->render_hints();
$self->render_errors();
+ $self->render_warnings();
} elsif ($self->render_mode eq 'read'){
$self->render_value();
}
@@ -512,4 +513,22 @@
return '';
}
+=head2 render_warnings
+
+Outputs a <div> with any warnings for this action, even if there are
+none -- AJAX could fill it in.
+
+=cut
+
+sub render_warnings {
+ my $self = shift;
+
+ return unless $self->action;
+
+ Jifty->web->out(
+qq!<span class="warning @{[$self->classes]}" id="@{[$self->action->warning_div_id($self->name)]}">@{[ $self->action->result->field_warning( $self->name ) || '']}</span>\n!
+ );
+ return '';
+}
+
1;
Modified: jifty/trunk/share/web/static/css/base.css
==============================================================================
--- jifty/trunk/share/web/static/css/base.css (original)
+++ jifty/trunk/share/web/static/css/base.css Mon May 8 22:37:38 2006
@@ -8,6 +8,10 @@
color: #a00000;
}
+.warning {
+ color: #00a0a0;
+}
+
hr {
clear: both;
}
Modified: jifty/trunk/share/web/static/css/forms.css
==============================================================================
--- jifty/trunk/share/web/static/css/forms.css (original)
+++ jifty/trunk/share/web/static/css/forms.css Mon May 8 22:37:38 2006
@@ -31,7 +31,7 @@
color: #999999;
}
-div.form_field .error {
+div.form_field .error, div.form_field .warning {
float: right;
width: 88%;
text-align: left;
Modified: jifty/trunk/share/web/static/js/jifty.js
==============================================================================
--- jifty/trunk/share/web/static/js/jifty.js (original)
+++ jifty/trunk/share/web/static/js/jifty.js Mon May 8 22:37:38 2006
@@ -110,8 +110,9 @@
for (var field = action.firstChild; field != null; field = field.nextSibling) {
// Possibilities for field.nodeName: it could be #text (whitespace),
// or 'blank' (the field was blank, don't mess with the error div), or 'ok'
- // (clear the error div!) or 'error' (fill in the error div!)
- if (field.nodeName == 'error') {
+ // (clear the error and warning div!) or 'error' (fill in the error div, clear
+ // the warning div!) or 'warning' (fill in the warning div and clear the error div!)
+ if (field.nodeName == 'error' || field.nodeName == 'warning') {
var err_div = document.getElementById(field.getAttribute("id"));
if (err_div != null) {
err_div.innerHTML = field.firstChild.data;
Modified: jifty/trunk/share/web/templates/__jifty/validator.xml
==============================================================================
--- jifty/trunk/share/web/templates/__jifty/validator.xml (original)
+++ jifty/trunk/share/web/templates/__jifty/validator.xml Mon May 8 22:37:38 2006
@@ -12,17 +12,28 @@
for my $arg ( $action->argument_names ) {
if ( not $action->arguments->{$arg}->{ajax_validates} ) {
$writer->emptyTag( "ignored", id => $action->error_div_id($arg) );
+ $writer->emptyTag( "ignored", id => $action->warning_div_id($arg) );
} elsif ( not defined $action->argument_value($arg)
or length $action->argument_value($arg) == 0 ) {
$writer->emptyTag( "blank", id => $action->error_div_id($arg) );
+ $writer->emptyTag( "blank", id => $action->warning_div_id($arg) );
} elsif ( $action->result->field_error($arg) ) {
$writer->dataElement(
"error",
$action->result->field_error($arg),
id => $action->error_div_id($arg)
);
+ $writer->emptyTag( "ok", id => $action->warning_div_id($arg) );
+ } elsif ( $action->result->field_warning($arg) ) {
+ $writer->dataElement(
+ "warning",
+ $action->result->field_warning($arg),
+ id => $action->warning_div_id($arg)
+ );
+ $writer->emptyTag( "ok", id => $action->error_div_id($arg) );
} else {
$writer->emptyTag( "ok", id => $action->error_div_id($arg) );
+ $writer->emptyTag( "ok", id => $action->warning_div_id($arg) );
}
}
$writer->endTag();
More information about the Jifty-commit
mailing list