diff options
8 files changed, 204 insertions, 5 deletions
diff --git a/.gitattributes b/.gitattributes index def0017f..27aea6ff 100644 --- a/.gitattributes +++ b/.gitattributes @@ -229,6 +229,10 @@ demos/quickstart/protected/pages/Controls/Samples/TWizard/Sample1.page -text  demos/quickstart/protected/pages/Controls/Samples/TWizard/Sample1.php -text  demos/quickstart/protected/pages/Controls/Samples/TWizard/Sample2.page -text  demos/quickstart/protected/pages/Controls/Samples/TWizard/Sample2.php -text +demos/quickstart/protected/pages/Controls/Samples/TWizard/Sample3.page -text +demos/quickstart/protected/pages/Controls/Samples/TWizard/Sample3.php -text +demos/quickstart/protected/pages/Controls/Samples/TWizard/Sample4.page -text +demos/quickstart/protected/pages/Controls/Samples/TWizard/Sample4.php -text  demos/quickstart/protected/pages/Controls/Samples/TWizard/Sample5.page -text  demos/quickstart/protected/pages/Controls/Samples/TWizard/Sample5.php -text  demos/quickstart/protected/pages/Controls/Samples/config.xml -text diff --git a/demos/quickstart/protected/pages/Controls/Samples/TWizard/Sample3.page b/demos/quickstart/protected/pages/Controls/Samples/TWizard/Sample3.page new file mode 100644 index 00000000..bb0a251c --- /dev/null +++ b/demos/quickstart/protected/pages/Controls/Samples/TWizard/Sample3.page @@ -0,0 +1,61 @@ +<com:TContent ID="body">
 +
 +<h2>Nonlinear Wizard Navigation Sample</h2>
 +
 +<p>
 +In the following survey, if you are a college student, you will be asked which major you are in. Otherwise, the question is skipped to your favorite sport. This demo also shows unidrectional navigation.
 +</p>
 +
 +<com:TWizard ID="Wizard3"
 +		BackColor="#FFFBD6"
 +		Width="300px"
 +		HeaderText="A Mini Survey"
 +		DisplaySideBar="false"
 +		HeaderStyle.BackColor="PaleGoldenrod"
 +		HeaderStyle.HorizontalAlign="Center"
 +		NavigationStyle.HorizontalAlign="Center"
 +		OnNextButtonClick="wizard3NextStep"
 +		OnCompleteButtonClick="wizard3Completed" >
 +
 +  <com:TWizardStep Title="Background" AllowReturn="false">
 +    <b><%= $this->Parent->Title %></b>
 +    <br/><br/>
 +    <com:TCheckBox ID="StudentCheckBox" Text="I am a college student." />
 +    <br/><br/>
 +  </com:TWizardStep>
 +
 +  <com:TWizardStep Title="Major" AllowReturn="false">
 +    <b><%= $this->Parent->Title %></b>
 +    <br/><br/>
 +    My major is
 +      <com:TDropDownList ID="DropDownList11">
 +        <com:TListItem Value="Computer Science" />
 +        <com:TListItem Value="Chemistry" />
 +        <com:TListItem Value="Mathematics" />
 +        <com:TListItem Value="Others" />
 +      </com:TDropDownList>
 +    <br/><br/>
 +  </com:TWizardStep>
 +
 +  <com:TWizardStep Title="Hobbies" AllowReturn="false">
 +    <b><%= $this->Parent->Title %></b>
 +    <br/><br/>
 +    My favorite Sport is
 +      <com:TDropDownList ID="DropDownList22">
 +        <com:TListItem Value="Baseball" />
 +        <com:TListItem Value="Football" />
 +        <com:TListItem Value="Tennis" />
 +      </com:TDropDownList>
 +    <br/><br/>
 +  </com:TWizardStep>
 +
 +  <com:TWizardStep Title="Summary" StepType="Complete">
 +    <h3>Thank you for taking this survey!</h3>
 +    <p>
 +    <com:TLabel ID="Wizard3Result" />
 +    </p>
 +  </com:TWizardStep>
 +
 +</com:TWizard>
 +
 +</com:TContent>
\ No newline at end of file diff --git a/demos/quickstart/protected/pages/Controls/Samples/TWizard/Sample3.php b/demos/quickstart/protected/pages/Controls/Samples/TWizard/Sample3.php new file mode 100644 index 00000000..d85d041a --- /dev/null +++ b/demos/quickstart/protected/pages/Controls/Samples/TWizard/Sample3.php @@ -0,0 +1,25 @@ +<?php
 +
 +class Sample3 extends TPage
 +{
 +	public function wizard3Completed($sender,$param)
 +	{
 +		if($this->StudentCheckBox->Checked)
 +		{
 +			$str="You are a college student.<br/>";
 +			$str.="You are in major: ".$this->DropDownList11->SelectedValue."<br/>";
 +			$str.="Your favorite sport is: ".$this->DropDownList22->SelectedValue;
 +		}
 +		else
 +			$str="Your favorite sport is: ".$this->DropDownList22->SelectedValue;
 +		$this->Wizard3Result->Text=$str;
 +	}
 +
 +	public function wizard3NextStep($sender,$param)
 +	{
 +		if($param->CurrentStepIndex===0 && !$this->StudentCheckBox->Checked)
 +			$this->Wizard3->ActiveStepIndex=2;
 +	}
 +}
 +
 +?>
\ No newline at end of file diff --git a/demos/quickstart/protected/pages/Controls/Samples/TWizard/Sample4.page b/demos/quickstart/protected/pages/Controls/Samples/TWizard/Sample4.page new file mode 100644 index 00000000..8687d842 --- /dev/null +++ b/demos/quickstart/protected/pages/Controls/Samples/TWizard/Sample4.page @@ -0,0 +1,85 @@ +<com:TContent ID="body">
 +
 +<h2>Customized Wizard Template Sample</h2>
 +
 +<com:TWizard ID="Wizard1"
 +		BackColor="OldLace"
 +		Width="400px"
 +		SideBarStyle.Width="120px"
 +		StepStyle.BackColor="#FFFBD6"
 +		HeaderStyle.BackColor="Moccasin"
 +		NavigationStyle.BackColor="PaleGoldenrod"
 +		OnActiveStepChanged="wizardCompleted" >
 +
 +		<prop:HeaderTemplate>
 +		<i>Header Template</i>
 +		<br/>
 +		<b>Step <%= $this->Parent->Parent->ActiveStepIndex+1 %> of 3</b>
 +		</prop:HeaderTemplate>
 +
 +		<prop:SideBarTemplate>
 +		<i>SideBar Template</i>
 +		<br/>
 +		<com:TDataList ID="SideBarList">
 +				<prop:ItemTemplate>
 +				<com:TButton ID="SideBarButton" />
 +				</prop:ItemTemplate>
 +				<prop:SelectedItemTemplate>
 +				<com:TButton ID="SideBarButton" Font.Bold="true" />
 +				</prop:SelectedItemTemplate>
 +		</com:TDataList>
 +		</prop:SideBarTemplate>
 +
 +		<prop:StartNavigationTemplate>
 +		<com:TLinkButton CommandName="NextStep" Text="Next >" />
 +		<br/>
 +		<i>Start Navigation Template</i>
 +		</prop:StartNavigationTemplate>
 +
 +		<prop:StepNavigationTemplate>
 +		<com:TLinkButton CausesValidation="False" CommandName="PreviousStep" Text="< Previous" />
 +		<com:TLinkButton CommandName="NextStep" Text="Next >" />
 +		<br/>
 +		<i>Step Navigation Template</i>
 +		</prop:StepNavigationTemplate>
 +
 +		<prop:FinishNavigationTemplate>
 +		All navigation buttons are removed.
 +		<br/>
 +		<i>Step Navigation Template</i>
 +		</prop:FinishNavigationTemplate>
 +
 +	<com:TWizardStep ID="WizardStep1" Title="Step 1">
 +	<i>Wizard Step Content</i>
 +	<br/><br/>
 +	Your favorite color:
 +	<com:TDropDownList ID="DropDownList1">
 +	<com:TListItem Value="Red" />
 +	<com:TListItem Value="Blue" />
 +	<com:TListItem Value="Green" />
 +	<com:TListItem Value="Purple" />
 +	<com:TListItem Value="Black" />
 +	<com:TListItem Value="Yellow" />
 +	<com:TListItem Value="Orange" />
 +	<com:TListItem Value="Pink" />
 +	<com:TListItem Value="Cyan" />
 +	</com:TDropDownList>
 +	<br/><br/>
 +	</com:TWizardStep>
 +
 +	<com:TWizardStep ID="WizardStep2" Title="Step 2">
 +	<i>Wizard Step Content</i>
 +	<br/><br/>
 +	<com:TLabel ID="Result" />
 +	<br/><br/>
 +	</com:TWizardStep>
 +
 +	<com:TWizardStep ID="WizardStep3" Title="Step 3">
 +	<i>Wizard Step Content</i>
 +	<br/><br/>
 +	Thank you for completing this survey.<br />
 +	<br/><br/>
 +	</com:TWizardStep>
 +</com:TWizard>
 +
 +</com:TContent>
\ No newline at end of file diff --git a/demos/quickstart/protected/pages/Controls/Samples/TWizard/Sample4.php b/demos/quickstart/protected/pages/Controls/Samples/TWizard/Sample4.php new file mode 100644 index 00000000..6b79698d --- /dev/null +++ b/demos/quickstart/protected/pages/Controls/Samples/TWizard/Sample4.php @@ -0,0 +1,11 @@ +<?php
 +
 +class Sample4 extends TPage
 +{
 +	public function wizardCompleted($sender,$param)
 +	{
 +		$this->Result->Text="Your favorite color is: " . $this->DropDownList1->SelectedValue;
 +	}
 +}
 +
 +?>
\ No newline at end of file diff --git a/demos/quickstart/protected/pages/Controls/Wizard.page b/demos/quickstart/protected/pages/Controls/Wizard.page index 29718930..7d83c697 100644 --- a/demos/quickstart/protected/pages/Controls/Wizard.page +++ b/demos/quickstart/protected/pages/Controls/Wizard.page @@ -10,6 +10,10 @@  <img src="<%~wizard.gif%>" alt="components of wizard" />
  <p>
 +By default, <tt>TWizard</tt> embeds the above components in an HTML table so that the side bar is displayed on the left while the rest on the right. If <tt>UseDefaultLayout</tt> is set to false, no HTML table will be used, and developers should use pure CSS techniques to position the wizard components. Note, each component is displayed as a <div> and the wizard itself is also a <div> that encloses its components' <div>.
 +</p>
 +
 +<p>
  Wizard steps are represented by <tt>TWizardStep</tt> and are maintained in <tt>TWizard</tt> through its <tt>WizardSteps</tt> property. At any time, only one step is visible, which is determined by the <tt>ActiveStep</tt> property. The <tt>ActiveStepIndex</tt> property gives the index of the active step in the step collection. Clicking on navigation buttons can activate different wizard steps.
  </p>
 @@ -85,9 +89,6 @@ Given a set of wizard steps, <tt>TWizard</tt> supports three different ways of n    <li>Navigation - <tt>StartNavigationTemplate</tt>, <tt>StepNavigationTemplate</tt>, <tt>FinishNavigationTemplate</tt>.</li>
    <li>Side bar - <tt>SideBarTemplate</tt>.</li>
  </ul>
 -Note about side bar button IDs, navigation button commands
 -headertext vs. headertemplate
 -tablelayout vs pure div layout
  <com:RunBar PagePath="Controls.Samples.TWizard.Sample4" />
  <h3>Using Templated Wizard Steps</h3>
 diff --git a/framework/Exceptions/messages.txt b/framework/Exceptions/messages.txt index 81664b3e..798fb50a 100644 --- a/framework/Exceptions/messages.txt +++ b/framework/Exceptions/messages.txt @@ -159,6 +159,7 @@ templatecontrol_mastercontrol_invalid	= Master control must be of type TTemplate  templatecontrol_contentid_duplicated	= TContent ID '{0}' is duplicated.
  templatecontrol_placeholderid_duplicated= TContentPlaceHolder ID '{0}' is duplicated.
  templatecontrol_directive_invalid		= {0}.{1} can only accept a static text string through a template directive.
 +templatecontrol_placeholder_inexistent	= TContent '{0}' does not have a matching TPlaceHolder.
  page_form_duplicated					= A page can contain at most one TForm. Use regular HTML form tags for the rest forms.
  page_isvalid_unknown					= TPage.IsValid has not been evaluated yet.
 @@ -257,4 +258,11 @@ multiview_viewid_invalid				= TMultiView cannot find the view '{0}' to switch to  viewcollection_view_required			= TViewCollection can only accept TView as its element.
 -view_visible_readonly					= TView.Visible is read-only. Use TView.Active to toggle its visibility.
\ No newline at end of file +view_visible_readonly					= TView.Visible is read-only. Use TView.Active to toggle its visibility.
 +
 +wizard_step_invalid						= The step to be activated cannot be found in wizard step collection.
 +wizard_command_invalid					= Invalid wizard navigation command '{0}'.
 +
 +completewizardstep_steptype_readonly	= TCompleteWizardStep.StepType is read-only.
 +
 +wizardstepcollection_wizardstep_required = TWizardStepCollection can only accept objects of TWizardStep or its derived classes.
\ No newline at end of file diff --git a/framework/Web/UI/WebControls/TWizard.php b/framework/Web/UI/WebControls/TWizard.php index 3a37b590..0da859f8 100644 --- a/framework/Web/UI/WebControls/TWizard.php +++ b/framework/Web/UI/WebControls/TWizard.php @@ -202,6 +202,7 @@ class TWizard extends TWebControl implements INamingContainer  	/**
  	 * @param TWizardStep step to be activated
 +	 * @throws TInvalidOperationException if the step is not in the wizard step collection
  	 */
  	public function setActiveStep($step)
  	{
 @@ -1275,6 +1276,7 @@ class TWizard extends TWebControl implements INamingContainer  	 * wizard-specific events.
  	 * @param mixed sender of the original command event
  	 * @param TEventParameter event parameter
 +	 * @throws TInvalidDataValueException if a navigation command is associated with an invalid parameter
  	 */
  	public function onBubbleEvent($sender,$param)
  	{
 @@ -1751,6 +1753,7 @@ class TWizardStepCollection extends TList  	 * the item being added is a {@link TWizardStep}.
  	 * @param integer the speicified position.
  	 * @param mixed new item
 +	 * @throws TInvalidDataTypeException if the item being added is not TWizardStep.
  	 */
  	public function insertAt($index,$item)
  	{
 @@ -1760,7 +1763,7 @@ class TWizardStepCollection extends TList  			$this->_wizard->addedWizardStep($item);
  		}
  		else
 -			throw new TInvalidDataTypeException('wizardstepcollection_wizardstepbase_required');
 +			throw new TInvalidDataTypeException('wizardstepcollection_wizardstep_required');
  	}
  	/**
 @@ -2032,6 +2035,7 @@ class TWizardNavigationTemplate extends TComponent implements ITemplate  	 * @param TWizardNavigationButtonStyle button style
  	 * @param boolean whether the button should cause validation
  	 * @param string command name for the button's OnCommand event
 +	 * @throws TInvalidDataValueException if the button type is not recognized
  	 */
  	protected function createNavigationButton($buttonStyle,$causesValidation,$commandName)
  	{
  | 
