2 // (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)
5 // Vladimir Krasnov <vladimirk@mainsoft.com>
7 // Permission is hereby granted, free of charge, to any person obtaining
8 // a copy of this software and associated documentation files (the
9 // "Software"), to deal in the Software without restriction, including
10 // without limitation the rights to use, copy, modify, merge, publish,
11 // distribute, sublicense, and/or sell copies of the Software, and to
12 // permit persons to whom the Software is furnished to do so, subject to
13 // the following conditions:
15 // The above copyright notice and this permission notice shall be
16 // included in all copies or substantial portions of the Software.
18 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
22 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
23 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
24 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
32 using System.Collections.Generic;
33 using System.ComponentModel;
36 namespace System.Web.UI.WebControls
38 public sealed class CreateUserWizardStep : TemplatedWizardStep
40 public CreateUserWizardStep ()
44 [MonoTODO ("Always false?")]
45 public override bool AllowReturn
48 set { throw new InvalidOperationException ("AllowReturn cannot be set."); }
51 [LocalizableAttribute (true)]
52 public override string Title
56 object o = ViewState ["TitleText"];
57 return (o == null) ? Locale.GetText ("Sign Up for Your New Account") : (string) o;
62 ViewState.Remove ("TitleText");
64 ViewState ["TitleText"] = value;
68 [ThemeableAttribute (false)]
69 public override WizardStepType StepType
71 get { return base.StepType; }
72 set { base.StepType = value; }
75 internal override ITemplate DefaultContentTemplate
77 get { return new CreateUserStepTemplate ((CreateUserWizard) Wizard); }
80 internal override BaseWizardContainer DefaultContentContainer
82 get { return new CreateUserStepContainer (); }
86 internal sealed class CreateUserStepContainer : BaseWizardContainer
88 public CreateUserStepContainer ()
92 public Control UserNameTextBox
96 Control c = FindControl ("UserName");
98 throw new HttpException ("CreateUserWizardStep.ContentTemplate does not contain an IEditableTextControl with ID UserName for the username.");
103 public Control PasswordTextBox
107 Control c = FindControl ("Password");
109 throw new HttpException ("CreateUserWizardStep.ContentTemplate does not contain an IEditableTextControl with ID Password for the new password, this is required if AutoGeneratePassword = true.");
114 public Control ConfirmPasswordTextBox
118 Control c = FindControl ("Password");
122 public Control EmailTextBox
126 Control c = FindControl ("Email");
128 throw new HttpException ("CreateUserWizardStep.ContentTemplate does not contain an IEditableTextControl with ID Email for the e-mail, this is required if RequireEmail = true.");
133 public Control QuestionTextBox
137 Control c = FindControl ("Question");
139 throw new HttpException ("CreateUserWizardStep.ContentTemplate does not contain an IEditableTextControl with ID Question for the security question, this is required if your membership provider requires a question and answer.");
144 public Control AnswerTextBox
148 Control c = FindControl ("Answer");
150 throw new HttpException ("CreateUserWizardStep.ContentTemplate does not contain an IEditableTextControl with ID Answer for the security answer, this is required if your membership provider requires a question and answer.");
155 public Label ErrorMessageLabel
157 get { return FindControl ("ErrorMessage") as Label; }
161 sealed class CreateUserStepTemplate : WebControl, ITemplate
163 readonly CreateUserWizard _createUserWizard;
165 public CreateUserStepTemplate (CreateUserWizard createUserWizard)
167 _createUserWizard = createUserWizard;
170 #region ITemplate Members
172 TableRow CreateRow (Control c0, Control c1, Control c2, Style s0, Style s1)
174 TableRow row = new TableRow ();
175 TableCell cell0 = new TableCell ();
176 TableCell cell1 = new TableCell ();
178 cell0.Controls.Add (c0);
179 row.Controls.Add (cell0);
181 if ((c1 != null) && (c2 != null)) {
182 cell1.Controls.Add (c1);
183 cell1.Controls.Add (c2);
184 cell0.HorizontalAlign = HorizontalAlign.Right;
187 cell0.ApplyStyle (s0);
189 cell1.ApplyStyle (s1);
191 row.Controls.Add (cell1);
194 cell0.ColumnSpan = 2;
195 cell0.HorizontalAlign = HorizontalAlign.Center;
197 cell0.ApplyStyle (s0);
202 void ITemplate.InstantiateIn (Control container)
204 Table table = new Table ();
205 table.ControlStyle.Width = Unit.Percentage (100);
206 table.ControlStyle.Height = Unit.Percentage (100);
210 CreateRow (new LiteralControl (_createUserWizard.CreateUserStep.Title),
211 null, null, _createUserWizard.TitleTextStyle, null));
214 if (_createUserWizard.InstructionText.Length > 0) {
216 CreateRow (new LiteralControl (_createUserWizard.InstructionText),
217 null, null, _createUserWizard.InstructionTextStyle, null));
221 TextBox UserName = new TextBox ();
222 UserName.ID = "UserName";
223 UserName.ApplyStyle (_createUserWizard.TextBoxStyle);
225 Label UserNameLabel = new Label ();
226 UserNameLabel.AssociatedControlID = "UserName";
227 UserNameLabel.Text = _createUserWizard.UserNameLabelText;
230 RequiredFieldValidator UserNameRequired = new RequiredFieldValidator ();
231 UserNameRequired.ID = "UserNameRequired";
232 UserNameRequired.ControlToValidate = "UserName";
233 UserNameRequired.ErrorMessage = _createUserWizard.UserNameRequiredErrorMessage;
234 UserNameRequired.ToolTip = _createUserWizard.UserNameRequiredErrorMessage;
235 UserNameRequired.Text = "*";
236 UserNameRequired.ValidationGroup = _createUserWizard.ID;
237 UserNameRequired.ApplyStyle (_createUserWizard.ValidatorTextStyle);
239 table.Controls.Add (CreateRow (UserNameLabel, UserName, UserNameRequired, _createUserWizard.LabelStyle, null));
242 if (!_createUserWizard.AutoGeneratePassword) {
243 TextBox Password = new TextBox ();
244 Password.ID = "Password";
245 Password.TextMode = TextBoxMode.Password;
246 Password.ApplyStyle (_createUserWizard.TextBoxStyle);
248 Label PasswordLabel = new Label ();
249 PasswordLabel.AssociatedControlID = "Password";
250 PasswordLabel.Text = _createUserWizard.PasswordLabelText;
252 RequiredFieldValidator PasswordRequired = new RequiredFieldValidator ();
253 PasswordRequired.ID = "PasswordRequired";
254 PasswordRequired.ControlToValidate = "Password";
255 PasswordRequired.ErrorMessage = _createUserWizard.PasswordRequiredErrorMessage;
256 PasswordRequired.ToolTip = _createUserWizard.PasswordRequiredErrorMessage;
257 PasswordRequired.Text = "*";
258 PasswordRequired.ValidationGroup = _createUserWizard.ID;
259 PasswordRequired.ApplyStyle (_createUserWizard.ValidatorTextStyle);
261 table.Controls.Add (CreateRow (PasswordLabel, Password, PasswordRequired, _createUserWizard.LabelStyle, null));
264 if (_createUserWizard.PasswordHintText.Length > 0) {
266 CreateRow (new LiteralControl (""),
267 new LiteralControl (_createUserWizard.PasswordHintText),
268 new LiteralControl (""),
269 null, _createUserWizard.PasswordHintStyle));
273 TextBox ConfirmPassword = new TextBox ();
274 ConfirmPassword.ID = "ConfirmPassword";
275 ConfirmPassword.TextMode = TextBoxMode.Password;
276 ConfirmPassword.ApplyStyle (_createUserWizard.TextBoxStyle);
278 Label ConfirmPasswordLabel = new Label ();
279 ConfirmPasswordLabel.AssociatedControlID = "ConfirmPassword";
280 ConfirmPasswordLabel.Text = _createUserWizard.ConfirmPasswordLabelText;
282 RequiredFieldValidator ConfirmPasswordRequired = new RequiredFieldValidator ();
283 ConfirmPasswordRequired.ID = "ConfirmPasswordRequired";
284 ConfirmPasswordRequired.ControlToValidate = "ConfirmPassword";
285 ConfirmPasswordRequired.ErrorMessage = _createUserWizard.ConfirmPasswordRequiredErrorMessage;
286 ConfirmPasswordRequired.ToolTip = _createUserWizard.ConfirmPasswordRequiredErrorMessage;
287 ConfirmPasswordRequired.Text = "*";
288 ConfirmPasswordRequired.ValidationGroup = _createUserWizard.ID;
289 ConfirmPasswordRequired.ApplyStyle (_createUserWizard.ValidatorTextStyle);
291 table.Controls.Add (CreateRow (ConfirmPasswordLabel, ConfirmPassword, ConfirmPasswordRequired, _createUserWizard.LabelStyle, null));
295 if (_createUserWizard.RequireEmail) {
296 TextBox Email = new TextBox ();
298 Email.ApplyStyle (_createUserWizard.TextBoxStyle);
300 Label EmailLabel = new Label ();
301 EmailLabel.AssociatedControlID = "Email";
302 EmailLabel.Text = _createUserWizard.EmailLabelText;
304 RequiredFieldValidator EmailRequired = new RequiredFieldValidator ();
305 EmailRequired.ID = "EmailRequired";
306 EmailRequired.ControlToValidate = "Email";
307 EmailRequired.ErrorMessage = _createUserWizard.EmailRequiredErrorMessage;
308 EmailRequired.ToolTip = _createUserWizard.EmailRequiredErrorMessage;
309 EmailRequired.Text = "*";
310 EmailRequired.ValidationGroup = _createUserWizard.ID;
311 EmailRequired.ApplyStyle (_createUserWizard.ValidatorTextStyle);
313 table.Controls.Add (CreateRow (EmailLabel, Email, EmailRequired, _createUserWizard.LabelStyle, null));
317 if (_createUserWizard.QuestionAndAnswerRequired) {
318 TextBox Question = new TextBox ();
319 Question.ID = "Question";
320 Question.ApplyStyle (_createUserWizard.TextBoxStyle);
322 Label QuestionLabel = new Label ();
323 QuestionLabel.AssociatedControlID = "Question";
324 QuestionLabel.Text = _createUserWizard.QuestionLabelText;
326 RequiredFieldValidator QuestionRequired = new RequiredFieldValidator ();
327 QuestionRequired.ID = "QuestionRequired";
328 QuestionRequired.ControlToValidate = "Question";
329 QuestionRequired.ErrorMessage = _createUserWizard.QuestionRequiredErrorMessage;
330 QuestionRequired.ToolTip = _createUserWizard.QuestionRequiredErrorMessage;
331 QuestionRequired.Text = "*";
332 QuestionRequired.ValidationGroup = _createUserWizard.ID;
333 QuestionRequired.ApplyStyle (_createUserWizard.ValidatorTextStyle);
335 table.Controls.Add (CreateRow (QuestionLabel, Question, QuestionRequired, _createUserWizard.LabelStyle, null));
338 TextBox Answer = new TextBox ();
339 Answer.ID = "Answer";
340 Answer.ApplyStyle (_createUserWizard.TextBoxStyle);
342 Label AnswerLabel = new Label ();
343 AnswerLabel.AssociatedControlID = "Answer";
344 AnswerLabel.Text = _createUserWizard.AnswerLabelText;
346 RequiredFieldValidator AnswerRequired = new RequiredFieldValidator ();
347 AnswerRequired.ID = "AnswerRequired";
348 AnswerRequired.ControlToValidate = "Answer";
349 AnswerRequired.ErrorMessage = _createUserWizard.AnswerRequiredErrorMessage;
350 AnswerRequired.ToolTip = _createUserWizard.AnswerRequiredErrorMessage;
351 AnswerRequired.Text = "*";
352 AnswerRequired.ValidationGroup = _createUserWizard.ID;
353 AnswerRequired.ApplyStyle (_createUserWizard.ValidatorTextStyle);
355 table.Controls.Add (CreateRow (AnswerLabel, Answer, AnswerRequired, _createUserWizard.LabelStyle, null));
359 if (!_createUserWizard.AutoGeneratePassword) {
360 CompareValidator PasswordCompare = new CompareValidator ();
361 PasswordCompare.ID = "PasswordCompare";
362 PasswordCompare.ControlToCompare = "Password";
363 PasswordCompare.ControlToValidate = "ConfirmPassword";
364 PasswordCompare.Display = ValidatorDisplay.Dynamic;
365 PasswordCompare.ErrorMessage = _createUserWizard.ConfirmPasswordCompareErrorMessage;
366 PasswordCompare.ValidationGroup = _createUserWizard.ID;
368 table.Controls.Add (CreateRow (PasswordCompare, null, null, null, null));
372 if (_createUserWizard.PasswordRegularExpression.Length > 0) {
373 RegularExpressionValidator PasswordRegEx = new RegularExpressionValidator ();
374 PasswordRegEx.ID = "PasswordRegEx";
375 PasswordRegEx.ControlToValidate = "Password";
376 PasswordRegEx.ValidationExpression = _createUserWizard.PasswordRegularExpression;
377 PasswordRegEx.Display = ValidatorDisplay.Dynamic;
378 PasswordRegEx.ErrorMessage = _createUserWizard.PasswordRegularExpressionErrorMessage;
379 PasswordRegEx.ValidationGroup = _createUserWizard.ID;
381 table.Controls.Add (CreateRow (PasswordRegEx, null, null, null, null));
385 if (_createUserWizard.EmailRegularExpression.Length > 0) {
386 RegularExpressionValidator EmailRegEx = new RegularExpressionValidator ();
387 EmailRegEx.ID = "EmailRegEx";
388 EmailRegEx.ControlToValidate = "Email";
389 EmailRegEx.ValidationExpression = _createUserWizard.EmailRegularExpression;
390 EmailRegEx.Display = ValidatorDisplay.Dynamic;
391 EmailRegEx.ErrorMessage = _createUserWizard.EmailRegularExpressionErrorMessage;
392 EmailRegEx.ValidationGroup = _createUserWizard.ID;
394 table.Controls.Add (CreateRow (EmailRegEx, null, null, null, null));
398 Label ErrorMessage = new Label ();
399 ErrorMessage.ID = "ErrorMessage";
400 ErrorMessage.EnableViewState = false;
401 ErrorMessage.ControlStyle.ForeColor = System.Drawing.Color.Red;
403 table.Controls.Add (CreateRow (ErrorMessage, null, null, null, null));
406 TableRow row9 = null;
408 HyperLink HelpLink = null;
409 if (_createUserWizard.HelpPageText.Length > 0) {
410 HelpLink = new HyperLink ();
411 HelpLink.Text = _createUserWizard.HelpPageText;
413 if (_createUserWizard.HelpPageUrl.Length > 0)
414 HelpLink.NavigateUrl = _createUserWizard.HelpPageUrl;
416 row9 = CreateRow (HelpLink, null, null, _createUserWizard.HyperLinkStyle, null);
419 Image HelpPageIcon = null;
420 if (_createUserWizard.HelpPageIconUrl.Length > 0) {
421 HelpPageIcon = new Image ();
422 HelpPageIcon.ImageUrl = _createUserWizard.HelpPageIconUrl;
423 HelpPageIcon.BorderWidth = Unit.Pixel (0);
425 if (_createUserWizard.HelpPageText.Length > 0)
426 HelpPageIcon.AlternateText = _createUserWizard.HelpPageText;
429 row9 = CreateRow (HelpPageIcon, null, null, _createUserWizard.HyperLinkStyle, null);
431 row9.Cells [0].Controls.AddAt (0, HelpPageIcon);
434 row9.Cells [0].HorizontalAlign = HorizontalAlign.Left;
435 table.Controls.Add (row9);
439 container.Controls.Add (table);