*/
require_once 'HTML/QuickForm/Page.php';
+
+/**
+ * Class CRM_Core_Form
+ */
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
* 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;
* 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,
/**
* 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)) {
*/
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();
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();
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();
}
}
+ /**
+ * @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,
$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));
));
}
+ /**
+ * @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
$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(
}
}
+ /**
+ * @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);
}
}
+ /**
+ * @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) {
}
}
+ /**
+ * @return string
+ */
function buttonType() {
$uploadNames = $this->get('uploadNames');
$buttonType = (is_array($uploadNames) && !empty($uploadNames)) ? 'upload' : 'next';
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;
}
}
}
+ /**
+ * @param $elementName
+ */
function removeFileRequiredRules($elementName) {
$this->_required = array_diff($this->_required, array($elementName));
if (isset($this->_rules[$elementName])) {
}
}
-/**
- * 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 <mixed, NULL, value, unknown, array, number>|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'])) {