diff options
author | ctrlaltca <> | 2012-07-12 11:21:01 +0000 |
---|---|---|
committer | ctrlaltca <> | 2012-07-12 11:21:01 +0000 |
commit | 903ae8a581fac1e6917fc3e31d2ad8fb91df80c3 (patch) | |
tree | e08bf04f0823650a231227ac3499121270172a23 /framework/Web/UI/WebControls/TValidationSummary.php | |
parent | 3e4e6e66aeb3f8fea4e1eb4237498ef9d2358f63 (diff) |
standardize the use of unix eol; use svn properties to enforce native eol
Diffstat (limited to 'framework/Web/UI/WebControls/TValidationSummary.php')
-rw-r--r-- | framework/Web/UI/WebControls/TValidationSummary.php | 1072 |
1 files changed, 536 insertions, 536 deletions
diff --git a/framework/Web/UI/WebControls/TValidationSummary.php b/framework/Web/UI/WebControls/TValidationSummary.php index 6c258927..c915d163 100644 --- a/framework/Web/UI/WebControls/TValidationSummary.php +++ b/framework/Web/UI/WebControls/TValidationSummary.php @@ -1,536 +1,536 @@ -<?php
-/**
- * TValidationSummary class file
- *
- * @author Qiang Xue <qiang.xue@gmail.com>
- * @link http://www.pradosoft.com/
- * @copyright Copyright © 2005-2012 PradoSoft
- * @license http://www.pradosoft.com/license/
- * @version $Id$
- * @package System.Web.UI.WebControls
- */
-
-/**
- * TValidationSummary class
- *
- * TValidationSummary displays a summary of validation errors inline on a Web page,
- * in a message box, or both. By default, a validation summary will collect
- * {@link TBaseValidator::getErrorMessage ErrorMessage} of all failed validators
- * on the page. If {@link getValidationGroup ValidationGroup} is not
- * empty, only those validators who belong to the group will show their error messages
- * in the summary.
- *
- * The summary can be displayed as a list, as a bulleted list, or as a single
- * paragraph based on the {@link setDisplayMode DisplayMode} property.
- * The messages shown can be prefixed with {@link setHeaderText HeaderText}.
- *
- * The summary can be displayed on the Web page and in a message box by setting
- * the {@link setShowSummary ShowSummary} and {@link setShowMessageBox ShowMessageBox}
- * properties, respectively. Note, the latter is only effective when
- * {@link setEnableClientScript EnableClientScript} is true.
- *
- * @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id$
- * @package System.Web.UI.WebControls
- * @since 3.0
- */
-class TValidationSummary extends TWebControl
-{
- /**
- * @var TClientSideValidationSummaryOptions validation client side options.
- */
- private $_clientSide;
-
- /**
- * Constructor.
- * This method sets the foreground color to red.
- */
- public function __construct()
- {
- parent::__construct();
- $this->setForeColor('red');
- }
-
- /**
- * @return TValidationSummaryDisplayStyle the style of displaying the error messages. Defaults to TValidationSummaryDisplayStyle::Fixed.
- */
- public function getDisplay()
- {
- return $this->getViewState('Display',TValidationSummaryDisplayStyle::Fixed);
- }
-
- /**
- * @param TValidationSummaryDisplayStyle the style of displaying the error messages
- */
- public function setDisplay($value)
- {
- $this->setViewState('Display',TPropertyValue::ensureEnum($value,'TValidationSummaryDisplayStyle'),TValidationSummaryDisplayStyle::Fixed);
- }
-
- /**
- * @return string the header text displayed at the top of the summary
- */
- public function getHeaderText()
- {
- return $this->getViewState('HeaderText','');
- }
-
- /**
- * Sets the header text to be displayed at the top of the summary
- * @param string the header text
- */
- public function setHeaderText($value)
- {
- $this->setViewState('HeaderText',$value,'');
- }
-
- /**
- * @return TValidationSummaryDisplayMode the mode of displaying error messages. Defaults to TValidationSummaryDisplayMode::BulletList.
- */
- public function getDisplayMode()
- {
- return $this->getViewState('DisplayMode',TValidationSummaryDisplayMode::BulletList);
- }
-
- /**
- * @param TValidationSummaryDisplayMode the mode of displaying error messages
- */
- public function setDisplayMode($value)
- {
- $this->setViewState('DisplayMode',TPropertyValue::ensureEnum($value,'TValidationSummaryDisplayMode'),TValidationSummaryDisplayMode::BulletList);
- }
-
- /**
- * @return boolean whether the TValidationSummary component updates itself using client-side script. Defaults to true.
- */
- public function getEnableClientScript()
- {
- return $this->getViewState('EnableClientScript',true);
- }
-
- /**
- * @param boolean whether the TValidationSummary component updates itself using client-side script.
- */
- public function setEnableClientScript($value)
- {
- $this->setViewState('EnableClientScript',TPropertyValue::ensureBoolean($value),true);
- }
-
- /**
- * @return boolean whether the validation summary is displayed in a message box. Defaults to false.
- */
- public function getShowMessageBox()
- {
- return $this->getViewState('ShowMessageBox',false);
- }
-
- /**
- * @param boolean whether the validation summary is displayed in a message box.
- */
- public function setShowMessageBox($value)
- {
- $this->setViewState('ShowMessageBox',TPropertyValue::ensureBoolean($value),false);
- }
-
- /**
- * @return boolean whether the validation summary is displayed inline. Defaults to true.
- */
- public function getShowSummary()
- {
- return $this->getViewState('ShowSummary',true);
- }
-
- /**
- * @param boolean whether the validation summary is displayed inline.
- */
- public function setShowSummary($value)
- {
- $this->setViewState('ShowSummary',TPropertyValue::ensureBoolean($value),true);
- }
-
- /**
- * @return boolean whether scroll summary into viewport or not. Defaults to true.
- */
- public function getScrollToSummary()
- {
- return $this->getViewState('ScrollToSummary',true);
- }
-
- /**
- * @param boolean whether scroll summary into viewport or not.
- */
- public function setScrollToSummary($value)
- {
- $this->setViewState('ScrollToSummary',TPropertyValue::ensureBoolean($value),true);
- }
-
- /**
- * @return boolean whether the validation summary should be anchored. Defaults to false.
- */
- public function getShowAnchor()
- {
- return $this->getViewState('ShowAnchor',false);
- }
-
- /**
- * @param boolean whether the validation summary should be anchored.
- */
- public function setShowAnchor($value)
- {
- $this->setViewState('ShowAnchor',TPropertyValue::ensureBoolean($value),false);
- }
-
- /**
- * Gets the auto-update for this summary.
- * @return boolean automatic client-side summary updates. Defaults to true.
- */
- public function getAutoUpdate()
- {
- return $this->getViewState('AutoUpdate', true);
- }
-
- /**
- * Sets the summary to auto-update on the client-side
- * @param boolean true for automatic summary updates.
- */
- public function setAutoUpdate($value)
- {
- $this->setViewState('AutoUpdate', TPropertyValue::ensureBoolean($value), true);
- }
-
- /**
- * @return string the group which this validator belongs to
- */
- public function getValidationGroup()
- {
- return $this->getViewState('ValidationGroup','');
- }
-
- /**
- * @param string the group which this validator belongs to
- */
- public function setValidationGroup($value)
- {
- $this->setViewState('ValidationGroup',$value,'');
- }
-
- protected function addAttributesToRender($writer)
- {
- $display=$this->getDisplay();
- $visible=$this->getEnabled(true) && count($this->getErrorMessages()) > 0;
- if(!$visible)
- {
- if($display===TValidationSummaryDisplayStyle::None || $display===TValidationSummaryDisplayStyle::Dynamic)
- $writer->addStyleAttribute('display','none');
- else
- $writer->addStyleAttribute('visibility','hidden');
- }
- $writer->addAttribute('id',$this->getClientID());
- parent::addAttributesToRender($writer);
- }
-
- /**
- * Render the javascript for validation summary.
- * @param array list of options for validation summary.
- */
- protected function renderJsSummary()
- {
- if(!$this->getEnabled(true) || !$this->getEnableClientScript())
- return;
- $cs = $this->getPage()->getClientScript();
- $cs->registerPradoScript('validator');
-
- //need to register the validation manager is validation summary is alone.
- $formID=$this->getPage()->getForm()->getClientID();
- $scriptKey = "TBaseValidator:$formID";
- if($this->getEnableClientScript() && !$cs->isEndScriptRegistered($scriptKey))
- {
- $manager['FormID'] = $formID;
- $options = TJavaScript::encode($manager);
- $cs->registerPradoScript('validator');
- $cs->registerEndScript($scriptKey, "new Prado.ValidationManager({$options});");
- }
-
-
- $options=TJavaScript::encode($this->getClientScriptOptions());
- $script = "new Prado.WebUI.TValidationSummary({$options});";
- $cs->registerEndScript($this->getClientID(), $script);
- }
-
- /**
- * Get a list of options for the client-side javascript validation summary.
- * @return array list of options for the summary
- */
- protected function getClientScriptOptions()
- {
- $options['ID'] = $this->getClientID();
- $options['FormID'] = $this->getPage()->getForm()->getClientID();
- if($this->getShowMessageBox())
- $options['ShowMessageBox']=true;
- if(!$this->getShowSummary())
- $options['ShowSummary']=false;
-
- $options['ScrollToSummary']=$this->getScrollToSummary();
- $options['HeaderText']=$this->getHeaderText();
- $options['DisplayMode']=$this->getDisplayMode();
-
- $options['Refresh'] = $this->getAutoUpdate();
- $options['ValidationGroup'] = $this->getValidationGroup();
- $options['Display'] = $this->getDisplay();
-
- if($this->_clientSide!==null)
- $options = array_merge($options,$this->_clientSide->getOptions()->toArray());
-
- return $options;
- }
-
- /**
- * @return TClientSideValidationSummaryOptions client-side validation summary
- * event options.
- */
- public function getClientSide()
- {
- if($this->_clientSide===null)
- $this->_clientSide = $this->createClientScript();
- return $this->_clientSide;
- }
-
- /**
- * @return TClientSideValidationSummaryOptions javascript validation summary
- * event options.
- */
- protected function createClientScript()
- {
- return new TClientSideValidationSummaryOptions;
- }
- /**
- * Get the list of validation error messages.
- * @return array list of validator error messages.
- */
- protected function getErrorMessages()
- {
- $validators=$this->getPage()->getValidators($this->getValidationGroup());
- $messages = array();
- foreach($validators as $validator)
- {
- if(!$validator->getIsValid() && ($msg=$validator->getErrorMessage())!=='')
- //$messages[] = $validator->getAnchoredMessage($msg);
- $messages[] = $msg;
- }
- return $messages;
- }
-
- /**
- * Overrides parent implementation by rendering TValidationSummary-specific presentation.
- * @return string the rendering result
- */
- public function renderContents($writer)
- {
- $this->renderJsSummary();
- if($this->getShowSummary())
- {
-// $this->setStyle('display:block');
- switch($this->getDisplayMode())
- {
- case TValidationSummaryDisplayMode::SimpleList:
- $this->renderList($writer);
- break;
- case TValidationSummaryDisplayMode::SingleParagraph:
- $this->renderSingleParagraph($writer);
- break;
- case TValidationSummaryDisplayMode::BulletList:
- $this->renderBulletList($writer);
- break;
- case TValidationSummaryDisplayMode::HeaderOnly:
- $this->renderHeaderOnly($writer);
- break;
- }
- }
- }
-
- /**
- * Render the validation summary as a simple list.
- * @param array list of messages
- * @param string the header text
- * @return string summary list
- */
- protected function renderList($writer)
- {
- $header=$this->getHeaderText();
- $messages=$this->getErrorMessages();
- $content = '';
- if(strlen($header))
- $content.= $header."<br/>\n";
- foreach($messages as $message)
- $content.="$message<br/>\n";
- $writer->write($content);
- }
-
- /**
- * Render the validation summary as a paragraph.
- * @param array list of messages
- * @param string the header text
- * @return string summary paragraph
- */
- protected function renderSingleParagraph($writer)
- {
- $header=$this->getHeaderText();
- $messages=$this->getErrorMessages();
- $content = $header;
- foreach($messages as $message)
- $content.= ' '.$message;
- $writer->write($content);
- }
-
- /**
- * Render the validation summary as a bullet list.
- * @param array list of messages
- * @param string the header text
- * @return string summary bullet list
- */
- protected function renderBulletList($writer)
- {
- $header=$this->getHeaderText();
- $messages=$this->getErrorMessages();
- $content = $header;
- if(count($messages)>0)
- {
- $content .= "<ul>\n";
- foreach($messages as $message)
- $content.= '<li>'.$message."</li>\n";
- $content .= "</ul>\n";
- }
- $writer->write($content);
- }
-
- /**
- * Render the validation summary header text only.
- * @param THtmlWriter the writer used for the rendering purpose
- */
- protected function renderHeaderOnly($writer)
- {
- $writer->write($this->getHeaderText());
- }
-}
-
-/**
- * TClientSideValidationSummaryOptions class.
- *
- * Client-side validation summary events such as {@link setOnHideSummary
- * OnHideSummary} and {@link setOnShowSummary OnShowSummary} can be modified
- * through the {@link TBaseValidator:: getClientSide ClientSide} property of a
- * validation summary.
- *
- * The <tt>OnHideSummary</tt> event is raise when the validation summary
- * requests to hide the messages.
- *
- * The <tt>OnShowSummary</tt> event is raised when the validation summary
- * requests to show the messages.
- *
- * See the quickstart documentation for further details.
- *
- * @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id$
- * @package System.Web.UI.WebControls
- * @since 3.0
- */
-class TClientSideValidationSummaryOptions extends TClientSideOptions
-{
- /**
- * @return string javascript code for client-side OnHideSummary event.
- */
- public function getOnHideSummary()
- {
- return $this->getOption('OnHideSummary');
- }
-
- /**
- * Client-side OnHideSummary validation summary event is raise when all the
- * validators are valid. This will override the default client-side
- * validation summary behaviour.
- * @param string javascript code for client-side OnHideSummary event.
- */
- public function setOnHideSummary($javascript)
- {
- $this->setFunction('OnHideSummary', $javascript);
- }
-
- /**
- * Client-side OnShowSummary event is raise when one or more validators are
- * not valid. This will override the default client-side validation summary
- * behaviour.
- * @param string javascript code for client-side OnShowSummary event.
- */
- public function setOnShowSummary($javascript)
- {
- $this->setFunction('OnShowSummary', $javascript);
- }
-
- /**
- * @return string javascript code for client-side OnShowSummary event.
- */
- public function getOnShowSummary()
- {
- return $this->getOption('OnShowSummary');
- }
-
- /**
- * Ensure the string is a valid javascript function. The code block
- * is enclosed with "function(summary, validators){ }" block.
- * @param string javascript code.
- * @return string javascript function code.
- */
- protected function ensureFunction($javascript)
- {
- return "function(summary, validators){ {$javascript} }";
- }
-}
-
-
-/**
- * TValidationSummaryDisplayMode class.
- * TValidationSummaryDisplayMode defines the enumerable type for the possible modes
- * that a {@link TValidationSummary} can organize and display the collected error messages.
- *
- * The following enumerable values are defined:
- * - SimpleList: the error messages are displayed as a list without any decorations.
- * - SingleParagraph: the error messages are concatenated together into a paragraph.
- * - BulletList: the error messages are displayed as a bulleted list.
- * - HeaderOnly: only the HeaderText will be display.
- *
- * @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id$
- * @package System.Web.UI.WebControls
- * @since 3.0.4
- */
-class TValidationSummaryDisplayMode extends TEnumerable
-{
- const SimpleList='SimpleList';
- const SingleParagraph='SingleParagraph';
- const BulletList='BulletList';
- const HeaderOnly='HeaderOnly';
-}
-
-
-/**
- * TValidationSummaryDisplay class.
- * TValidationSummaryDisplay defines the enumerable type for the possible styles
- * that a {@link TValidationSummary} can display the collected error messages.
- *
- * The following enumerable values are defined:
- * - None: the error messages are not displayed
- * - Dynamic: the error messages are dynamically added to display as the corresponding validators fail
- * - Fixed: Similar to Dynamic except that the error messages physically occupy the page layout (even though they may not be visible)
- *
- * @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id$
- * @package System.Web.UI.WebControls
- * @since 3.0.4
- */
-class TValidationSummaryDisplayStyle extends TEnumerable
-{
- const None='None';
- const Dynamic='Dynamic';
- const Fixed='Fixed';
-}
-
+<?php +/** + * TValidationSummary class file + * + * @author Qiang Xue <qiang.xue@gmail.com> + * @link http://www.pradosoft.com/ + * @copyright Copyright © 2005-2012 PradoSoft + * @license http://www.pradosoft.com/license/ + * @version $Id$ + * @package System.Web.UI.WebControls + */ + +/** + * TValidationSummary class + * + * TValidationSummary displays a summary of validation errors inline on a Web page, + * in a message box, or both. By default, a validation summary will collect + * {@link TBaseValidator::getErrorMessage ErrorMessage} of all failed validators + * on the page. If {@link getValidationGroup ValidationGroup} is not + * empty, only those validators who belong to the group will show their error messages + * in the summary. + * + * The summary can be displayed as a list, as a bulleted list, or as a single + * paragraph based on the {@link setDisplayMode DisplayMode} property. + * The messages shown can be prefixed with {@link setHeaderText HeaderText}. + * + * The summary can be displayed on the Web page and in a message box by setting + * the {@link setShowSummary ShowSummary} and {@link setShowMessageBox ShowMessageBox} + * properties, respectively. Note, the latter is only effective when + * {@link setEnableClientScript EnableClientScript} is true. + * + * @author Qiang Xue <qiang.xue@gmail.com> + * @version $Id$ + * @package System.Web.UI.WebControls + * @since 3.0 + */ +class TValidationSummary extends TWebControl +{ + /** + * @var TClientSideValidationSummaryOptions validation client side options. + */ + private $_clientSide; + + /** + * Constructor. + * This method sets the foreground color to red. + */ + public function __construct() + { + parent::__construct(); + $this->setForeColor('red'); + } + + /** + * @return TValidationSummaryDisplayStyle the style of displaying the error messages. Defaults to TValidationSummaryDisplayStyle::Fixed. + */ + public function getDisplay() + { + return $this->getViewState('Display',TValidationSummaryDisplayStyle::Fixed); + } + + /** + * @param TValidationSummaryDisplayStyle the style of displaying the error messages + */ + public function setDisplay($value) + { + $this->setViewState('Display',TPropertyValue::ensureEnum($value,'TValidationSummaryDisplayStyle'),TValidationSummaryDisplayStyle::Fixed); + } + + /** + * @return string the header text displayed at the top of the summary + */ + public function getHeaderText() + { + return $this->getViewState('HeaderText',''); + } + + /** + * Sets the header text to be displayed at the top of the summary + * @param string the header text + */ + public function setHeaderText($value) + { + $this->setViewState('HeaderText',$value,''); + } + + /** + * @return TValidationSummaryDisplayMode the mode of displaying error messages. Defaults to TValidationSummaryDisplayMode::BulletList. + */ + public function getDisplayMode() + { + return $this->getViewState('DisplayMode',TValidationSummaryDisplayMode::BulletList); + } + + /** + * @param TValidationSummaryDisplayMode the mode of displaying error messages + */ + public function setDisplayMode($value) + { + $this->setViewState('DisplayMode',TPropertyValue::ensureEnum($value,'TValidationSummaryDisplayMode'),TValidationSummaryDisplayMode::BulletList); + } + + /** + * @return boolean whether the TValidationSummary component updates itself using client-side script. Defaults to true. + */ + public function getEnableClientScript() + { + return $this->getViewState('EnableClientScript',true); + } + + /** + * @param boolean whether the TValidationSummary component updates itself using client-side script. + */ + public function setEnableClientScript($value) + { + $this->setViewState('EnableClientScript',TPropertyValue::ensureBoolean($value),true); + } + + /** + * @return boolean whether the validation summary is displayed in a message box. Defaults to false. + */ + public function getShowMessageBox() + { + return $this->getViewState('ShowMessageBox',false); + } + + /** + * @param boolean whether the validation summary is displayed in a message box. + */ + public function setShowMessageBox($value) + { + $this->setViewState('ShowMessageBox',TPropertyValue::ensureBoolean($value),false); + } + + /** + * @return boolean whether the validation summary is displayed inline. Defaults to true. + */ + public function getShowSummary() + { + return $this->getViewState('ShowSummary',true); + } + + /** + * @param boolean whether the validation summary is displayed inline. + */ + public function setShowSummary($value) + { + $this->setViewState('ShowSummary',TPropertyValue::ensureBoolean($value),true); + } + + /** + * @return boolean whether scroll summary into viewport or not. Defaults to true. + */ + public function getScrollToSummary() + { + return $this->getViewState('ScrollToSummary',true); + } + + /** + * @param boolean whether scroll summary into viewport or not. + */ + public function setScrollToSummary($value) + { + $this->setViewState('ScrollToSummary',TPropertyValue::ensureBoolean($value),true); + } + + /** + * @return boolean whether the validation summary should be anchored. Defaults to false. + */ + public function getShowAnchor() + { + return $this->getViewState('ShowAnchor',false); + } + + /** + * @param boolean whether the validation summary should be anchored. + */ + public function setShowAnchor($value) + { + $this->setViewState('ShowAnchor',TPropertyValue::ensureBoolean($value),false); + } + + /** + * Gets the auto-update for this summary. + * @return boolean automatic client-side summary updates. Defaults to true. + */ + public function getAutoUpdate() + { + return $this->getViewState('AutoUpdate', true); + } + + /** + * Sets the summary to auto-update on the client-side + * @param boolean true for automatic summary updates. + */ + public function setAutoUpdate($value) + { + $this->setViewState('AutoUpdate', TPropertyValue::ensureBoolean($value), true); + } + + /** + * @return string the group which this validator belongs to + */ + public function getValidationGroup() + { + return $this->getViewState('ValidationGroup',''); + } + + /** + * @param string the group which this validator belongs to + */ + public function setValidationGroup($value) + { + $this->setViewState('ValidationGroup',$value,''); + } + + protected function addAttributesToRender($writer) + { + $display=$this->getDisplay(); + $visible=$this->getEnabled(true) && count($this->getErrorMessages()) > 0; + if(!$visible) + { + if($display===TValidationSummaryDisplayStyle::None || $display===TValidationSummaryDisplayStyle::Dynamic) + $writer->addStyleAttribute('display','none'); + else + $writer->addStyleAttribute('visibility','hidden'); + } + $writer->addAttribute('id',$this->getClientID()); + parent::addAttributesToRender($writer); + } + + /** + * Render the javascript for validation summary. + * @param array list of options for validation summary. + */ + protected function renderJsSummary() + { + if(!$this->getEnabled(true) || !$this->getEnableClientScript()) + return; + $cs = $this->getPage()->getClientScript(); + $cs->registerPradoScript('validator'); + + //need to register the validation manager is validation summary is alone. + $formID=$this->getPage()->getForm()->getClientID(); + $scriptKey = "TBaseValidator:$formID"; + if($this->getEnableClientScript() && !$cs->isEndScriptRegistered($scriptKey)) + { + $manager['FormID'] = $formID; + $options = TJavaScript::encode($manager); + $cs->registerPradoScript('validator'); + $cs->registerEndScript($scriptKey, "new Prado.ValidationManager({$options});"); + } + + + $options=TJavaScript::encode($this->getClientScriptOptions()); + $script = "new Prado.WebUI.TValidationSummary({$options});"; + $cs->registerEndScript($this->getClientID(), $script); + } + + /** + * Get a list of options for the client-side javascript validation summary. + * @return array list of options for the summary + */ + protected function getClientScriptOptions() + { + $options['ID'] = $this->getClientID(); + $options['FormID'] = $this->getPage()->getForm()->getClientID(); + if($this->getShowMessageBox()) + $options['ShowMessageBox']=true; + if(!$this->getShowSummary()) + $options['ShowSummary']=false; + + $options['ScrollToSummary']=$this->getScrollToSummary(); + $options['HeaderText']=$this->getHeaderText(); + $options['DisplayMode']=$this->getDisplayMode(); + + $options['Refresh'] = $this->getAutoUpdate(); + $options['ValidationGroup'] = $this->getValidationGroup(); + $options['Display'] = $this->getDisplay(); + + if($this->_clientSide!==null) + $options = array_merge($options,$this->_clientSide->getOptions()->toArray()); + + return $options; + } + + /** + * @return TClientSideValidationSummaryOptions client-side validation summary + * event options. + */ + public function getClientSide() + { + if($this->_clientSide===null) + $this->_clientSide = $this->createClientScript(); + return $this->_clientSide; + } + + /** + * @return TClientSideValidationSummaryOptions javascript validation summary + * event options. + */ + protected function createClientScript() + { + return new TClientSideValidationSummaryOptions; + } + /** + * Get the list of validation error messages. + * @return array list of validator error messages. + */ + protected function getErrorMessages() + { + $validators=$this->getPage()->getValidators($this->getValidationGroup()); + $messages = array(); + foreach($validators as $validator) + { + if(!$validator->getIsValid() && ($msg=$validator->getErrorMessage())!=='') + //$messages[] = $validator->getAnchoredMessage($msg); + $messages[] = $msg; + } + return $messages; + } + + /** + * Overrides parent implementation by rendering TValidationSummary-specific presentation. + * @return string the rendering result + */ + public function renderContents($writer) + { + $this->renderJsSummary(); + if($this->getShowSummary()) + { +// $this->setStyle('display:block'); + switch($this->getDisplayMode()) + { + case TValidationSummaryDisplayMode::SimpleList: + $this->renderList($writer); + break; + case TValidationSummaryDisplayMode::SingleParagraph: + $this->renderSingleParagraph($writer); + break; + case TValidationSummaryDisplayMode::BulletList: + $this->renderBulletList($writer); + break; + case TValidationSummaryDisplayMode::HeaderOnly: + $this->renderHeaderOnly($writer); + break; + } + } + } + + /** + * Render the validation summary as a simple list. + * @param array list of messages + * @param string the header text + * @return string summary list + */ + protected function renderList($writer) + { + $header=$this->getHeaderText(); + $messages=$this->getErrorMessages(); + $content = ''; + if(strlen($header)) + $content.= $header."<br/>\n"; + foreach($messages as $message) + $content.="$message<br/>\n"; + $writer->write($content); + } + + /** + * Render the validation summary as a paragraph. + * @param array list of messages + * @param string the header text + * @return string summary paragraph + */ + protected function renderSingleParagraph($writer) + { + $header=$this->getHeaderText(); + $messages=$this->getErrorMessages(); + $content = $header; + foreach($messages as $message) + $content.= ' '.$message; + $writer->write($content); + } + + /** + * Render the validation summary as a bullet list. + * @param array list of messages + * @param string the header text + * @return string summary bullet list + */ + protected function renderBulletList($writer) + { + $header=$this->getHeaderText(); + $messages=$this->getErrorMessages(); + $content = $header; + if(count($messages)>0) + { + $content .= "<ul>\n"; + foreach($messages as $message) + $content.= '<li>'.$message."</li>\n"; + $content .= "</ul>\n"; + } + $writer->write($content); + } + + /** + * Render the validation summary header text only. + * @param THtmlWriter the writer used for the rendering purpose + */ + protected function renderHeaderOnly($writer) + { + $writer->write($this->getHeaderText()); + } +} + +/** + * TClientSideValidationSummaryOptions class. + * + * Client-side validation summary events such as {@link setOnHideSummary + * OnHideSummary} and {@link setOnShowSummary OnShowSummary} can be modified + * through the {@link TBaseValidator:: getClientSide ClientSide} property of a + * validation summary. + * + * The <tt>OnHideSummary</tt> event is raise when the validation summary + * requests to hide the messages. + * + * The <tt>OnShowSummary</tt> event is raised when the validation summary + * requests to show the messages. + * + * See the quickstart documentation for further details. + * + * @author Wei Zhuo <weizhuo[at]gmail[dot]com> + * @version $Id$ + * @package System.Web.UI.WebControls + * @since 3.0 + */ +class TClientSideValidationSummaryOptions extends TClientSideOptions +{ + /** + * @return string javascript code for client-side OnHideSummary event. + */ + public function getOnHideSummary() + { + return $this->getOption('OnHideSummary'); + } + + /** + * Client-side OnHideSummary validation summary event is raise when all the + * validators are valid. This will override the default client-side + * validation summary behaviour. + * @param string javascript code for client-side OnHideSummary event. + */ + public function setOnHideSummary($javascript) + { + $this->setFunction('OnHideSummary', $javascript); + } + + /** + * Client-side OnShowSummary event is raise when one or more validators are + * not valid. This will override the default client-side validation summary + * behaviour. + * @param string javascript code for client-side OnShowSummary event. + */ + public function setOnShowSummary($javascript) + { + $this->setFunction('OnShowSummary', $javascript); + } + + /** + * @return string javascript code for client-side OnShowSummary event. + */ + public function getOnShowSummary() + { + return $this->getOption('OnShowSummary'); + } + + /** + * Ensure the string is a valid javascript function. The code block + * is enclosed with "function(summary, validators){ }" block. + * @param string javascript code. + * @return string javascript function code. + */ + protected function ensureFunction($javascript) + { + return "function(summary, validators){ {$javascript} }"; + } +} + + +/** + * TValidationSummaryDisplayMode class. + * TValidationSummaryDisplayMode defines the enumerable type for the possible modes + * that a {@link TValidationSummary} can organize and display the collected error messages. + * + * The following enumerable values are defined: + * - SimpleList: the error messages are displayed as a list without any decorations. + * - SingleParagraph: the error messages are concatenated together into a paragraph. + * - BulletList: the error messages are displayed as a bulleted list. + * - HeaderOnly: only the HeaderText will be display. + * + * @author Qiang Xue <qiang.xue@gmail.com> + * @version $Id$ + * @package System.Web.UI.WebControls + * @since 3.0.4 + */ +class TValidationSummaryDisplayMode extends TEnumerable +{ + const SimpleList='SimpleList'; + const SingleParagraph='SingleParagraph'; + const BulletList='BulletList'; + const HeaderOnly='HeaderOnly'; +} + + +/** + * TValidationSummaryDisplay class. + * TValidationSummaryDisplay defines the enumerable type for the possible styles + * that a {@link TValidationSummary} can display the collected error messages. + * + * The following enumerable values are defined: + * - None: the error messages are not displayed + * - Dynamic: the error messages are dynamically added to display as the corresponding validators fail + * - Fixed: Similar to Dynamic except that the error messages physically occupy the page layout (even though they may not be visible) + * + * @author Qiang Xue <qiang.xue@gmail.com> + * @version $Id$ + * @package System.Web.UI.WebControls + * @since 3.0.4 + */ +class TValidationSummaryDisplayStyle extends TEnumerable +{ + const None='None'; + const Dynamic='Dynamic'; + const Fixed='Fixed'; +} + |