X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FCore%2FForm.php;h=f26ce82e2454c8c57c75b9bdeccf001fcd214b4c;hb=20f57460897100cb2aea105c40c16ab16604033a;hp=1112f75d754713dd8fd3702500b0a66d1c6d2789;hpb=2340eec651f3de2bc38a14dae5f32f9876af5a7e;p=civicrm-core.git diff --git a/CRM/Core/Form.php b/CRM/Core/Form.php index 1112f75d75..f26ce82e24 100644 --- a/CRM/Core/Form.php +++ b/CRM/Core/Form.php @@ -37,6 +37,10 @@ */ require_once 'HTML/QuickForm/Page.php'; + +/** + * Class CRM_Core_Form + */ class CRM_Core_Form extends HTML_QuickForm_Page { /** @@ -117,6 +121,11 @@ class CRM_Core_Form extends HTML_QuickForm_Page { */ public $urlPath = array(); + /** + * @var CRM_Core_Controller + */ + public $controller; + /** * constants for attributes for various form elements * attempt to standardize on the number of variations that we @@ -132,7 +141,7 @@ class CRM_Core_Form extends HTML_QuickForm_Page { * If u have multiple groups of checkboxes, you will need to give them different * ids to avoid potential name collision * - * @var const string / int + * @var string|int */ CONST CB_PREFIX = 'mark_x_', CB_PREFIY = 'mark_y_', CB_PREFIZ = 'mark_z_', CB_PREFIX_LEN = 7; @@ -143,12 +152,12 @@ class CRM_Core_Form extends HTML_QuickForm_Page { * of default convenient functions, rules and buttons * * @param object $state State associated with this form - * @param \const|\enum $action The mode the form is operating in (None/Create/View/Update/Delete) + * @param \const|\enum|int $action The mode the form is operating in (None/Create/View/Update/Delete) * @param string $method The type of http method used (GET/POST) * @param string $name The name of the form if different from class name * * @return \CRM_Core_Form - @access public + * @access public */ function __construct( $state = NULL, @@ -287,13 +296,15 @@ class CRM_Core_Form extends HTML_QuickForm_Page { /** * This function is just a wrapper, so that we can call all the hook functions + * @param bool $allowAjax - FIXME: This feels kind of hackish, ideally we would take the json-related code from this function + * and bury it deeper down in the controller */ - function mainProcess() { + function mainProcess($allowAjax = TRUE) { $this->postProcess(); $this->postProcessHook(); // Respond with JSON if in AJAX context (also support legacy value '6') - if (!empty($_REQUEST['snippet']) && in_array($_REQUEST['snippet'], array(CRM_Core_Smarty::PRINT_JSON, 6))) { + if ($allowAjax && !empty($_REQUEST['snippet']) && in_array($_REQUEST['snippet'], array(CRM_Core_Smarty::PRINT_JSON, 6))) { $this->ajaxResponse['buttonName'] = str_replace('_qf_' . $this->getAttribute('id') . '_', '', $this->controller->getButtonName()); $this->ajaxResponse['action'] = $this->_action; if (isset($this->_id) || isset($this->id)) { @@ -350,6 +361,13 @@ class CRM_Core_Form extends HTML_QuickForm_Page { */ function addRules() {} + /** + * Performs the server side validation + * @access public + * @since 1.0 + * @return boolean true if no error found + * @throws HTML_QuickForm_Error + */ function validate() { $error = parent::validate(); @@ -800,6 +818,16 @@ class CRM_Core_Form extends HTML_QuickForm_Page { return self::$_template->get_template_vars($name); } + /** + * @param $name + * @param $title + * @param $values + * @param array $attributes + * @param null $separator + * @param bool $required + * + * @return HTML_QuickForm_group + */ function &addRadio($name, $title, $values, $attributes = array(), $separator = NULL, $required = FALSE) { $options = array(); $attributes = $attributes ? $attributes : array(); @@ -819,6 +847,13 @@ class CRM_Core_Form extends HTML_QuickForm_Page { return $group; } + /** + * @param $id + * @param $title + * @param bool $allowClear + * @param null $required + * @param array $attributes + */ function addYesNo($id, $title, $allowClear = FALSE, $required = NULL, $attributes = array()) { $attributes += array('id_suffix' => $id); $choice = array(); @@ -834,6 +869,17 @@ class CRM_Core_Form extends HTML_QuickForm_Page { } } + /** + * @param $id + * @param $title + * @param $values + * @param null $other + * @param null $attributes + * @param null $required + * @param null $javascriptMethod + * @param string $separator + * @param bool $flipValues + */ function addCheckBox($id, $title, $values, $other = NULL, $attributes = NULL, $required = NULL, $javascriptMethod = NULL, @@ -916,6 +962,15 @@ class CRM_Core_Form extends HTML_QuickForm_Page { $this->addButtons($buttons); } + /** + * @param $name + * @param string $from + * @param string $to + * @param string $label + * @param string $dateFormat + * @param bool $required + * @param bool $displayTime + */ function addDateRange($name, $from = '_from', $to = '_to', $label = 'From:', $dateFormat = 'searchDate', $required = FALSE, $displayTime = FALSE) { if ($displayTime) { $this->addDateTime($name . $from, $label, $required, array('formatType' => $dateFormat)); @@ -1010,6 +1065,12 @@ class CRM_Core_Form extends HTML_QuickForm_Page { )); } + /** + * @param $name + * @param $label + * @param $attributes + * @param bool $forceTextarea + */ function addWysiwyg($name, $label, $attributes, $forceTextarea = FALSE) { // 1. Get configuration option for editor (tinymce, ckeditor, pure textarea) // 2. Based on the option, initialise proper editor @@ -1048,6 +1109,12 @@ class CRM_Core_Form extends HTML_QuickForm_Page { $this->assign('includeWysiwygEditor', $includeWysiwygEditor); } + /** + * @param $id + * @param $title + * @param null $required + * @param null $extra + */ function addCountry($id, $title, $required = NULL, $extra = NULL) { $this->addElement('select', $id, $title, array( @@ -1058,6 +1125,14 @@ class CRM_Core_Form extends HTML_QuickForm_Page { } } + /** + * @param $name + * @param $label + * @param $options + * @param $attributes + * @param null $required + * @param null $javascriptMethod + */ function addSelectOther($name, $label, $options, $attributes, $required = NULL, $javascriptMethod = NULL) { $this->addElement('select', $name . '_id', $label, $options, $javascriptMethod); @@ -1067,18 +1142,30 @@ class CRM_Core_Form extends HTML_QuickForm_Page { } } + /** + * @return null + */ public function getRootTitle() { return NULL; } + /** + * @return string + */ public function getCompleteTitle() { return $this->getRootTitle() . $this->getTitle(); } + /** + * @return CRM_Core_Smarty + */ static function &getTemplate() { return self::$_template; } + /** + * @param $elementName + */ function addUploadElement($elementName) { $uploadNames = $this->get('uploadNames'); if (!$uploadNames) { @@ -1104,6 +1191,9 @@ class CRM_Core_Form extends HTML_QuickForm_Page { } } + /** + * @return string + */ function buttonType() { $uploadNames = $this->get('uploadNames'); $buttonType = (is_array($uploadNames) && !empty($uploadNames)) ? 'upload' : 'next'; @@ -1111,10 +1201,19 @@ class CRM_Core_Form extends HTML_QuickForm_Page { return $buttonType; } + /** + * @param $name + * + * @return null + */ function getVar($name) { return isset($this->$name) ? $this->$name : NULL; } + /** + * @param $name + * @param $value + */ function setVar($name, $value) { $this->$name = $value; } @@ -1359,6 +1458,9 @@ class CRM_Core_Form extends HTML_QuickForm_Page { } } + /** + * @param $elementName + */ function removeFileRequiredRules($elementName) { $this->_required = array_diff($this->_required, array($elementName)); if (isset($this->_rules[$elementName])) { @@ -1393,17 +1495,17 @@ class CRM_Core_Form extends HTML_QuickForm_Page { } } -/** - * Get contact if for a form object. Prioritise - * - cid in URL if 0 (on behalf on someoneelse) - * (@todo consider setting a variable if onbehalf for clarity of downstream 'if's - * - logged in user id if it matches the one in the cid in the URL - * - contact id validated from a checksum from a checksum - * - cid from the url if the caller has ACL permission to view - * - fallback is logged in user (or ? NULL if no logged in user) (@todo wouldn't 0 be more intuitive?) - * - * @return Ambigous |unknown - */ + /** + * Get contact if for a form object. Prioritise + * - cid in URL if 0 (on behalf on someoneelse) + * (@todo consider setting a variable if onbehalf for clarity of downstream 'if's + * - logged in user id if it matches the one in the cid in the URL + * - contact id validated from a checksum from a checksum + * - cid from the url if the caller has ACL permission to view + * - fallback is logged in user (or ? NULL if no logged in user) (@todo wouldn't 0 be more intuitive?) + * + * @return mixed NULL|integer + */ function getContactID() { $tempID = CRM_Utils_Request::retrieve('cid', 'Positive', $this); if(isset($this->_params) && isset($this->_params['select_contact_id'])) {