. * * For more information, contact Colosa Inc, 2566 Le Jeune Rd., * Coral Gables, FL, 33134, USA, or email info@colosa.com. * */ /** * Class XmlForm_Field * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field { var $name = ''; var $type = 'field'; var $label = ''; var $owner; var $language; var $group = 0; var $mode = ''; var $defaultValue = NULL; var $gridFieldType = ''; var $gridLabel = ''; /* Hint value generic declaration */ var $hint = ''; /*to change the presentation*/ var $enableHtml = false; var $style = ''; var $withoutLabel = false; var $className = ''; /*attributes for paged table*/ var $colWidth = 140; var $colAlign = 'left'; var $colClassName = ''; var $titleAlign = ''; var $align = ''; var $showInTable = ''; /*Events*/ var $onclick = ''; /*attributes for data filtering*/ /*dataCompareField = field to be compared with*/ var $dataCompareField = ''; /* $dataCompareType : '=' ,'<>' , 'like', ... , 'contains'(== ' like "%value%"') */ var $dataCompareType = '='; var $sql = ''; var $sqlConnection = ''; //Attributes for PM Tables integration (only ProcessMaker for now) var $pmtable = ''; var $keys = ''; var $pmconnection = ''; var $pmfield = ''; // For mode cases Grid var $modeGrid = ''; var $modeForGrid = ''; /** * Function XmlForm_Field * @author David S. Callizaya S. * @access public * @param string xmlNode * @param string lang * @param string home * @return string */ function XmlForm_Field($xmlNode, $lang = 'en', $home = '', $owner = NULL) { //Loads any attribute that were defined in the xmlNode //except name and label. $myAttributes = get_class_vars ( get_class ( $this ) ); foreach ( $myAttributes as $k => $v ) $myAttributes [$k] = strtoupper ( $k ); //$data: Includes labels and options. $data = &$xmlNode->findNode ( $lang ); if(!isset($data->value)){ //It seems that in the actual language there are no value for the current field, so get the value in English $data = &$xmlNode->findNode ( "en" ); if(!isset($data->value)){ //It seems that in the actual language there are no value for the current field, so get the value in First language if(isset($xmlNode->children[0])){//Lets find first child if((isset($xmlNode->children[0]->name))&&(strlen($xmlNode->children[0]->name)==2)){//Just to be sure that the node ocrresponds to a valid lang $data = &$xmlNode->findNode ( $xmlNode->children[0]->name ); } } } } @$this->label = $data->value; /*Loads the field attributes*/ foreach ( $xmlNode->attributes as $k => $v ) { $key = array_search ( strtoupper ( $k ), $myAttributes ); if ($key) eval ( '$this->' . $key . '=$v;' ); } //Loads the main attributes $this->name = $xmlNode->name; $this->type = strtolower ( $xmlNode->attributes ['type'] ); preg_match ( '/\s*([^\s][\w\W]*)?/m', $xmlNode->value, $matches ); $this->sql = (isset ( $matches [1] )) ? $matches [1] : ''; //List Options if (isset ( $data->children )) foreach ( $data->children as $k => $v ) { if ($v->type !== 'cdata') $this->{$v->name} [$v->attributes ["name"]] = $v->value; } $this->options = (isset ( $this->option )) ? $this->option : array (); //Sql Options : cause warning because values are not setted yet. //if ($this->sql!=='') $this->executeSQL(); if (isset($owner)) { if (isset($owner->mode)) { $ownerMode = $owner->mode; } else { $ownerMode = ''; } } else { $ownerMode = ''; } if ($ownerMode != '') { $this->mode = $ownerMode; } if ($this->mode == '') { $this->mode = 'edit'; } $this->modeForGrid = $this->mode; } /** * validate if a value is setted * @param $value * @return boolean true/false */ function validateValue($value) { return isset ( $value ); } /** * execute a xml query * @param &$owner reference of owner * @param $row * @return $result array of results */ private function executeXmlDB(&$owner, $row = -1) { if (! $this->sqlConnection) $dbc = new DBConnection ( ); else { if (defined ( 'DB_' . $this->sqlConnection . '_USER' )) { if (defined ( 'DB_' . $this->sqlConnection . '_HOST' )) eval ( '$res[\'DBC_SERVER\'] = DB_' . $this->sqlConnection . '_HOST;' ); else $res ['DBC_SERVER'] = DB_HOST; if (defined ( 'DB_' . $this->sqlConnection . '_USER' )) eval ( '$res[\'DBC_USERNAME\'] = DB_' . $this->sqlConnection . '_USER;' ); if (defined ( 'DB_' . $this->sqlConnection . '_PASS' )) eval ( '$res[\'DBC_PASSWORD\'] = DB_' . $this->sqlConnection . '_PASS;' ); else $res ['DBC_PASSWORD'] = DB_PASS; if (defined ( 'DB_' . $this->sqlConnection . '_NAME' )) eval ( '$res[\'DBC_DATABASE\'] = DB_' . $this->sqlConnection . '_NAME;' ); else $res ['DBC_DATABASE'] = DB_NAME; if (defined ( 'DB_' . $this->sqlConnection . '_TYPE' )) eval ( '$res[\'DBC_TYPE\'] = DB_' . $this->sqlConnection . '_TYPE;' ); else $res ['DBC_TYPE'] = defined ( 'DB_TYPE' ) ? DB_TYPE : 'mysql'; $dbc = new DBConnection ( $res ['DBC_SERVER'], $res ['DBC_USERNAME'], $res ['DBC_PASSWORD'], $res ['DBC_DATABASE'], $res ['DBC_TYPE'] ); } else { $dbc0 = new DBConnection ( ); $dbs0 = new DBSession ( $dbc0 ); $res = $dbs0->execute ( "select * from DB_CONNECTION WHERE DBC_UID=" . $this->sqlConnection ); $res = $res->read (); $dbc = new DBConnection ( $res ['DBC_SERVER'], $res ['DBC_USERNAME'], $res ['DBC_PASSWORD'], $res ['DBC_DATABASE'] ); } } $query = G::replaceDataField ( $this->sql, $owner->values ); $dbs = new DBSession ( $dbc ); $res = $dbs->execute ( $query ); $result = array (); while ( $row = $res->Read () ) { $result [] = $row; } return $result; } /** * Execute a propel query * @param &$owner reference * @param $row * @return $result array of */ private function executePropel(&$owner, $row = -1) { //g::pr($row); if (! isset ( $owner->values [$this->name] )) { if ($row > - 1) { $owner->values [$this->name] = array (); } else { $owner->values [$this->name] = ''; } } if (! is_array ( $owner->values [$this->name] )) { //echo '1'; $query = G::replaceDataField ( $this->sql, $owner->values ); } else { $aAux = array (); foreach ( $owner->values as $key => $data ) { if (is_array ( $data )) { //echo '3:'.$key.' '; if (isset ( $data [$row] )){ $qValue = $data [$row]; }else{ if (isset($owner->fields[$key]->selectedValue)){ $qValue = $owner->fields[$key]->selectedValue; }else{ $qValue = ''; } } $aAux [$key] = $qValue; //$aAux [$key] = isset ( $data [$row] ) ? $data [$row] : ''; } else { //echo '4'.$key.' '; $aAux [$key] = $data; } } //echo '2'; //g::pr($aAux); $query = G::replaceDataField ( $this->sql, $aAux ); } //echo $query; $result = array (); if ($this->sqlConnection == 'dbarray') { try { $con = Propel::getConnection ( $this->sqlConnection ); $stmt = $con->createStatement (); $rs = $con->executeQuery ( $query, ResultSet::FETCHMODE_NUM ); } catch ( Exception $e ) { //dismiss error because dbarray shouldnt be defined in some contexts. return $result; } } else { try { $con = Propel::getConnection ( $this->sqlConnection ); $stmt = $con->createStatement (); $rs = $stmt->executeQuery ( $query, ResultSet::FETCHMODE_NUM ); } catch ( Exception $e ) { //dismiss error because dbarray shouldnt be defined in some contexts. return $result; } } $rs->next (); $row = $rs->getRow (); while ( is_array ( $row ) ) { $result [] = $row; $rs->next (); $row = $rs->getRow (); } return $result; } /** * Function executeSQL * @author David S. Callizaya S. * @access public * @param string owner * @return string */ function executeSQL(&$owner, $row = -1) { if (! isset ( $this->sql )) return 1; if ($this->sql === '') return 1; if (! $this->sqlConnection) $this->sqlConnection = 'workflow'; //Read the result of the query if ($this->sqlConnection === "XMLDB") { $result = $this->executeXmlDB ( $owner, $row ); } else { $result = $this->executePropel ( $owner, $row ); } $this->sqlOption = array (); $this->options = array (); if (isset ( $this->option )) { foreach ( $this->option as $k => $v ) $this->options [$k] = $v; } for($r = 0; $r < sizeof ( $result ); $r ++) { $key = reset ( $result [$r] ); $this->sqlOption [$key] = next ( $result [$r] ); $this->options [$key] = $this->sqlOption [$key]; } if ($this->type != 'listbox') { if (isset ( $this->options ) && isset ( $this->owner ) && isset ( $this->owner->values [$this->name] )) { if ((! is_array ( $this->owner->values [$this->name] )) && ! ((is_string ( $this->owner->values [$this->name] ) || is_int ( $this->owner->values [$this->name] )) && array_key_exists ( $this->owner->values [$this->name], $this->options ))) { reset ( $this->options ); $firstElement = key ( $this->options ); if (isset ( $firstElement )) $this->owner->values [$this->name] = $firstElement; else $this->owner->values [$this->name] = ''; } } } return 0; } /** * return the html entities of a value * @param $value * @param $flags * @param $encoding * @return */ function htmlentities($value, $flags = ENT_QUOTES, $encoding = 'utf-8') { if ($this->enableHtml){ return $value;} else{ return htmlentities ( $value, $flags, $encoding ); } } /** * Function render * @author David S. Callizaya S. * @access public * @param string value * @return string */ function render($value = NULL) { //this is an unknown field type. return $this->htmlentities ( $value != '' ? $value : $this->name, ENT_COMPAT, 'utf-8' ); } /** * Function renderGrid * @author David S. Callizaya S. * @access public * @param string values * @return string */ function renderGrid($values = array(), $owner = NULL, $onlyValue = false, $therow = -1) { $result = array (); $r = 1; foreach ( $values as $v ) { $result [] = $this->render ( $v, $owner, '[' . $owner->name . '][' . $r . ']', $onlyValue, $r, $therow ); $r ++; } return $result; } /** * render the field in a table * @param $values * @param $owner * @param $onlyValue * @return $result */ function renderTable($values = '', $owner = NULL, $onlyValue = false) { $r = 1; $result = $this->render ( $values, $owner, '[' . $owner->name . '][' . $r . ']', $onlyValue ); return $result; } /** * Function dependentOf * @author David S. Callizaya S. * @access public * @return array */ function dependentOf() { $fields = array (); if (isset ( $this->formula )) { preg_match_all ( "/\b[a-zA-Z][a-zA-Z_0-9]*\b/", $this->formula, $matches, PREG_PATTERN_ORDER ); /* if ($this->formula!=''){ var_dump($this->formula); var_dump($matches); var_dump(array_keys($this->owner->fields)); die; }*/ foreach ( $matches [0] as $field ) { //if (array_key_exists( $this->owner->fields, $field )) $fields [] = $field; } } return $fields; } /** * Function mask * @author David S. Callizaya S. * @access public * @param string format * @param string value * @return string */ function mask($format, $value) { $value = explode ( '', $value ); for($j = 0; $j < strlen ( $format ); $j ++) { $result = ''; $correct = TRUE; for($i = $j; $i < strlen ( $format ); $i ++) { $a = substr ( $format, $i, 1 ); $e = $i < strlen ( $value ) ? substr ( $value, $i, 1 ) : ''; //$e=$i ^...$ no parece pero no, o mejor si, donde # es \d?, en general todos // es valida cuando no encuentra un caracter que no deberia estar, puede no terminar la mascara // pero si sobran caracteres en el value entonces no se cumple la mascara. return $correct ? $result : $correct; } /** * Function getAttributes * @author David S. Callizaya S. * @access public * @return string */ function getAttributes() { $attributes = array (); $json = new Services_JSON ( ); foreach ( $this as $attribute => $value ) { switch ($attribute) { case 'sql' : case 'sqlConnection' : case 'name' : case 'type' : case 'owner' : break; default : if (substr ( $attribute, 0, 2 ) !== 'on') $attributes [$attribute] = $value; } } if (sizeof ( $attributes ) < 1) return '{}'; return $json->encode ( $attributes ); } /** * Function getEvents * @author David S. Callizaya S. * @access public * @return string */ function getEvents() { $events = array (); $json = new Services_JSON ( ); foreach ( $this as $attribute => $value ) { if (substr ( $attribute, 0, 2 ) === 'on') $events [$attribute] = $value; } if (sizeof ( $events ) < 1) return '{}'; return $json->encode ( $events ); } /** * Function attachEvents: Attaches events to a control using * leimnud.event.add * @author David S. Callizaya S. * @param $elementRef * @access public */ function attachEvents($elementRef) { $events = ''; foreach ( $this as $attribute => $value ) { if (substr ( $attribute, 0, 2 ) == 'on') { $events = 'if (' . $elementRef . ') leimnud.event.add(' . $elementRef . ',"' . substr ( $attribute, 2 ) . '",function(){' . $value . '});' . "\n"; } } } /** * Function createXmlNode: Creates an Xml_Node object storing * the data of $this Xml_Field. * @author David S. Callizaya S. * @access public * @return Xml_Node */ function createXmlNode($includeDefaultValues = false) { /* Start Comment: Creates the corresponding XML Tag for $this * object. */ $attributesList = $this->getXmlAttributes ( $includeDefaultValues ); $node = new Xml_Node ( $this->name, 'open', $this->sql, $attributesList ); /* End Comment */ /* Start Comment: Creates the languages nodes and options * if exist. */ $node->addChildNode ( new Xml_Node ( '', 'cdata', "\n" ) ); $node->addChildNode ( new Xml_Node ( $this->language, 'open', $this->label ) ); if (isset ( $this->option )) { foreach ( $this->option as $k => $v ) $node->children [1]->addChildNode ( new Xml_Node ( 'option', 'open', $v, array ('name' => $k ) ) ); } /* End Comment */ return $node; } /** * Function updateXmlNode: Updates and existing Xml_Node * with the data of $this Xml_Field. * @author David S. Callizaya S. * @access public * @param string value * @return Xml_Node */ function &updateXmlNode(&$node, $includeDefaultValues = false) { /* Start Comment: Modify the node's attributes and value. */ $attributesList = $this->getXmlAttributes ( $includeDefaultValues ); $node->name = $this->name; $node->value = $this->sql; $node->attributes = $attributesList; /* End Comment */ /* Start Comment: Modifies the languages nodes */ $langNode = & $node->findNode ( $this->language ); $langNode->value = $this->label; if (isset ( $this->option )) { $langNode->children = array (); foreach ( $this->option as $k => $v ) $langNode->addChildNode ( new Xml_Node ( 'option', 'open', $v, array ('name' => $k ) ) ); } /* End Comment */ return $node; } /** * Function getXmlAttributes: Returns an associative array * with the attributes of $this Xml_field (only the modified ones). * @author David S. Callizaya S. * @access public * @param boolean includeDefaultValues Includes attributes * with default values. * @return Xml_Node */ function getXmlAttributes($includeDefaultValues = false) { $attributesList = array (); $class = get_class ( $this ); $default = new $class ( new Xml_Node ( 'DEFAULT', 'open', '', array ('type' => $this->type ) ) ); foreach ( $this as $k => $v ) { switch ($k) { case 'owner' : case 'name' : case 'type' : case 'language' : case 'sql' : break; default : if (($v !== $default->{$k}) || $includeDefaultValues) $attributesList [$k] = $v; } } return $attributesList; } /** Used in Form::validatePost * @param $value * @param &$owner * @return $value */ function maskValue($value, &$owner) { return $value; } /*Close this object*/ /** * clone the current object * @return */ function cloneObject() { //return unserialize( serialize( $this ) );//con este cambio los formularios ya no funcionan en php4 return clone ($this); } /** * get a value from a PM Table * @param $oOwner * @return $sValue */ function getPMTableValue($oOwner) { $sValue = ''; if (isset($oOwner->fields[$this->pmconnection])) { if (defined('PATH_CORE')) { if (file_exists(PATH_CORE . 'classes' . PATH_SEP . 'model' . PATH_SEP . 'AdditionalTables.php')) { require_once PATH_CORE . 'classes' . PATH_SEP . 'model' . PATH_SEP . 'AdditionalTables.php'; $oAdditionalTables = new AdditionalTables(); try { $aData = $oAdditionalTables->load($oOwner->fields[$this->pmconnection]->pmtable, true); } catch (Exception $oError) { $aData = array('FIELDS' => array()); } $aKeys = array(); $aValues = explode('|', $oOwner->fields[$this->pmconnection]->keys); $i = 0; foreach ($aData['FIELDS'] as $aField) { if ($aField['FLD_KEY'] == '1') { // note added by gustavo cruz gustavo[at]colosa[dot]com // this additional [if] checks if a case variable has been set // in the keys attribute, so it can be parsed and replaced for // their respective value. if (preg_match("/@#/", $aValues[$i])) { // check if a case are running in order to prevent that preview is // erroneous rendered. if (isset($_SESSION['APPLICATION'])){ G::LoadClass('case'); $oApp= new Cases(); if ($oApp->loadCase($_SESSION['APPLICATION'])!=null){ $aFields = $oApp->loadCase($_SESSION['APPLICATION']); $formVariable = substr($aValues[$i], 2); if(isset($aFields['APP_DATA'][$formVariable])){ $formVariableValue = $aFields['APP_DATA'][$formVariable]; $aKeys[$aField['FLD_NAME']] = (isset($formVariableValue) ? G::replaceDataField($formVariableValue, $oOwner->values) : ''); } else { $aKeys[$aField['FLD_NAME']] = ''; } } else { $aKeys[$aField['FLD_NAME']] = ''; } } else { $aKeys[$aField['FLD_NAME']] = ''; } } else { $aKeys[$aField['FLD_NAME']] = (isset($aValues[$i]) ? G::replaceDataField($aValues[$i], $oOwner->values) : ''); } $i++; } } try { $aData = $oAdditionalTables->getDataTable($oOwner->fields[$this->pmconnection]->pmtable, $aKeys); } catch (Exception $oError) { $aData = array(); } if (isset($aData[$this->pmfield])) { $sValue = $aData[$this->pmfield]; } } } } return $sValue; } /** * Prepares NS Required Value * @author Enrique Ponce de Leon * @param boolean optional (true = always show, false = show only if not empty) * @return string */ function NSRequiredValue($show = false){ if (isset($this->required)){ $req = ($this->required)? '1':'0'; }else{ $req = '0'; } $idv = 'pm:required="'.$req.'"'; if ($show){ return $idv; }else{ return ($req != '0')? $idv : ''; } } /** * Prepares NS Required Value * @author Enrique Ponce de Leon * @param boolean optional (true = always show, false = show only if not empty) * @return string */ function NSGridLabel($show = false){ $idv = 'pm:label="'.$this->label.'"'; if ($show){ return $idv; }else{ return ($this->label != '')? $idv : ''; } } /** * Prepares NS Default Text * @author Enrique Ponce de Leon * @param boolean optional (true = always show, false = show only if not empty) * @return string */ function NSDefaultValue($show = false){ $idv = 'pm:defaultvalue="'.$this->defaultValue.'"'; if ($show){ return $idv; }else{ return ($this->defaultValue != '')? $idv : ''; } } /** * Prepares NS Grid Type * @author Enrique Ponce de Leon * @param boolean optional (true = always show, false = show only if not empty) * @return string */ function NSGridType($show = false){ $igt = 'pm:gridtype="'.$this->gridFieldType.'"'; if ($show){ return $igt; }else{ return ($this->gridFieldType != '')? $igt : ''; } } /** * Prepares NS Grid Type * @author Enrique Ponce de Leon * @param boolean optional (true = always show, false = show only if not empty) * @return string */ function NSDependentFields($show = false){ $idf = 'pm:dependent="'.(($this->dependentFields != '')? '1':'0').'"'; if ($show){ return $idf; }else{ return ($this->dependentFields != '')? $idf : ''; } } /** * Prepares Hint HTML if hint value is defined * @author Enrique Ponce de Leon * @param void * @return string **/ function renderHint(){ $_outHint = ''; if ($this->hint != '' && $this->mode=='edit'){ $_outHint = ' '; } return $_outHint; } } /** * Class XmlForm_Field_Title * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_Title extends XmlForm_Field { /** * Function render * @author David S. Callizaya S. * @access public * @param string value * @return string */ function render($value = NULL, &$owner) { $this->label = G::replaceDataField ( $this->label, $owner->values ); return 'name . ']\' name=\'form[' . $this->name . ']\' >' . $this->htmlentities ( $this->label ) . ''; } /** * A title node has no value * @param $value * @return false */ function validateValue($value) { return false; } } /** * Class XmlForm_Field_Subtitle * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_Subtitle extends XmlForm_Field { /** * Function render * @author David S. Callizaya S. * @access public * @param string value * @return string */ function render($value = NULL) { return 'name . ']\' name=\'form[' . $this->name . ']\' >' . $this->htmlentities ( $this->label ) . ''; } /** * A subtitle node has no value * @param $value * @return false */ function validateValue($value) { return false; } } /** * Class XmlForm_Field_SimpleText * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_SimpleText extends XmlForm_Field { var $size = 15; var $maxLength = ''; var $validate = 'Any'; var $mask = ''; /* Additional events */ var $onkeypress = ''; var $renderMode = ''; /** * Function render * @author David S. Callizaya S. * @access public * @param string value * @return string */ function render($value = NULL, &$owner) { if (($this->pmconnection != '') && ($this->pmfield != '') && $value == NULL) { $value = $this->getPMTableValue($owner); } $onkeypress = G::replaceDataField ( $this->onkeypress, $owner->values ); if ($this->mode === 'edit') { if ($this->readOnly) return 'maxLength ) ? ' maxlength="' . $this->maxLength . '"' : '') . ' value=\'' . htmlentities ( $value, ENT_COMPAT, 'utf-8' ) . '\' '.$this->NSRequiredValue().' readOnly="readOnly" style="' . htmlentities ( $this->style, ENT_COMPAT, 'utf-8' ) . '" onkeypress="' . htmlentities ( $onkeypress, ENT_COMPAT, 'utf-8' ) . '"/>'; else return 'maxLength ) ? ' maxlength="' . $this->maxLength . '"' : '') . ' value=\'' . htmlentities ( $value, ENT_COMPAT, 'utf-8' ) . '\' '.$this->NSRequiredValue().' style="' . htmlentities ( $this->style, ENT_COMPAT, 'utf-8' ) . '" onkeypress="' . htmlentities ( $onkeypress, ENT_COMPAT, 'utf-8' ) . '"/>'; } elseif ($this->mode === 'view') { return 'maxLength ) ? ' maxlength="' . $this->maxLength . '"' : '') . ' value=\'' . htmlentities ( $value, ENT_COMPAT, 'utf-8' ) . '\' '.$this->NSRequiredValue().' style="display:none;' . htmlentities ( $this->style, ENT_COMPAT, 'utf-8' ) . '" onkeypress="' . htmlentities ( $onkeypress, ENT_COMPAT, 'utf-8' ) . '"/>' . htmlentities ( $value, ENT_COMPAT, 'utf-8' ); } else { return $this->htmlentities ( $value, ENT_COMPAT, 'utf-8' ); } } /** * Function renderGrid * @author David S. Callizaya S. * @access public * @param string values * @param string owner * @return string */ function renderGrid($values = array(), $owner) { $result = array (); $r = 1; if ($owner->mode != 'view') $this->renderMode = $this->modeForGrid; foreach ( $values as $v ) { $html = ''; if ($this->renderMode === 'edit'){ //EDIT MODE $readOnlyText = ($this->readOnly == 1 || $this->readOnly == '1') ? 'readOnly="readOnly"' : ''; $html .= 'name.']['.$r.']['.$this->name.']" '; $html .= 'name="form['.$owner->name.']['.$r.']['.$this->name.']" '; $html .= 'type="text" size="'.$this->size.'" maxlength="'.$this->maxLength.'" '; $html .= 'value="'.$this->htmlentities($v, ENT_QUOTES, 'utf-8').'" '; $html .= 'style="'.$this->htmlentities($this->style, ENT_COMPAT, 'utf-8').'" '; $html .= $this->NSDefaultValue().' '; $html .= $this->NSRequiredValue().' '; $html .= $this->NSGridType().' '; $html .= $this->NSGridLabel().' '; $html .= '/>'; }else{ //VIEW MODE $html .= $this->htmlentities($v, ENT_QUOTES, 'utf-8'); $html .= 'name.']['.$r.']['.$this->name.']" '; $html .= 'name="form['.$owner->name.']['.$r.']['.$this->name.']" '; $html .= 'type="hidden" value="'.$this->htmlentities($v, ENT_QUOTES, 'utf-8').'" />'; } $result [] = $html; $r ++; } return $result; } } /** * Class XmlForm_Field_Text * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_Text extends XmlForm_Field_SimpleText { var $size = 15; var $maxLength = 64; var $validate = 'Any'; var $mask = ''; var $defaultValue = ''; var $required = false; var $dependentFields = ''; var $linkField = ''; //Possible values:(-|UPPER|LOWER|CAPITALIZE) var $strTo = ''; var $readOnly = false; var $sqlConnection = 0; var $sql = ''; var $sqlOption = array (); //Attributes only for grids var $formula = ''; var $function = ''; var $replaceTags = 0; var $renderMode = ''; var $comma_separator = '.'; /** * Function render * @author David S. Callizaya S. * @access public * @param string value * @param string owner * @return string */ function render($value = NULL, $owner = NULL) { if ($this->renderMode =='') $this->renderMode = $this->mode; if (($this->pmconnection != '') && ($this->pmfield != '') && $value == NULL) { $value = $this->getPMTableValue($owner); } else { $this->executeSQL ( $owner ); $firstElement = key ( $this->sqlOption ); if (isset ( $firstElement )) $value = $firstElement; } //NOTE: string functions must be in G class if ($this->strTo === 'UPPER') $value = strtoupper ( $value ); if ($this->strTo === 'LOWER') $value = strtolower ( $value ); //if ($this->strTo==='CAPITALIZE') $value = strtocapitalize($value); $onkeypress = G::replaceDataField ( $this->onkeypress, $owner->values ); if ($this->replaceTags == 1) { $value = G::replaceDataField ( $value, $owner->values ); } $html = ''; if ($this->renderMode == 'edit'){ //EDIT MODE $readOnlyText = ($this->readOnly == 1 || $this->readOnly == '1') ? 'readOnly="readOnly"': ''; $html .= 'name . ']" '; $html .= 'name="form[' . $this->name . ']" '; $html .= 'type="text" size="' . $this->size . '" maxlength="' . $this->maxLength . '" '; $html .= 'value="'.$this->htmlentities ($value, ENT_QUOTES, 'utf-8').'" '; $html .= 'style="'.$this->htmlentities($this->style, ENT_COMPAT, 'utf-8').'" '; $html .= 'onkeypress="'.$this->htmlentities($onkeypress, ENT_COMPAT, 'utf-8').'" '; $html .= $this->NSDefaultValue().' '; $html .= $this->NSRequiredValue().' '; $html .= 'pm:decimal_separator="' + $this->comma_separator + '" '; $html .= '/>'; }else{ //VIEW MODE $html .= $this->htmlentities($value, ENT_QUOTES, 'utf-8'); $html .= 'name . ']" '; $html .= 'name="form[' . $this->name . ']" '; $html .= 'type="hidden" value="'.$this->htmlentities($value, ENT_QUOTES, 'utf-8').'" />'; } $html .= $this->renderHint(); if (($this->readOnly == 1)&&($this->renderMode == 'edit')) $html = str_replace("class=\"module_app_input___gray\"","class=\"module_app_input___gray_readOnly\"",$html); return $html; } /** * Function renderGrid * @author David S. Callizaya S. * @access public * @param string values * @param string owner * @return string */ function renderGrid($values = array(), $owner) { $result = $aux = array (); $r = 1; if ($owner->mode != 'view') $this->renderMode = $this->modeForGrid; foreach ( $values as $v ) { $this->executeSQL ( $owner, $r ); $firstElement = key ( $this->sqlOption ); if (isset ( $firstElement )) $v = $firstElement; if ($this->replaceTags == 1) { $v = G::replaceDataField ( $v, $owner->values ); } $aux [$r] = $v; $html = ''; if ($this->renderMode == 'edit'){ //EDIT MODE $readOnlyText = ($this->readOnly == 1 || $this->readOnly == '1') ? 'readOnly="readOnly"': ''; $html .= 'name.']['.$r.']['.$this->name.']" '; $html .= 'name="form['.$owner->name.']['.$r.']['.$this->name.']" '; $html .= 'type="text" size="' . $this->size . '" maxlength="' . $this->maxLength . '" '; $html .= 'value="'.$this->htmlentities ($v, ENT_QUOTES, 'utf-8').'" '; $html .= 'style="'.$this->htmlentities($this->style, ENT_COMPAT, 'utf-8').'" '; $html .= $this->NSDefaultValue().' '; $html .= $this->NSRequiredValue().' '; $html .= $this->NSGridLabel().' '; $html .= $this->NSGridType().' '; $html .= $this->NSDependentFields().' '; $html .= '/>'; }else{ //VIEW MODE $html .= $this->htmlentities($v, ENT_QUOTES, 'utf-8'); $html .= 'name.']['.$r.']['.$this->name.']" '; $html .= 'name="form['.$owner->name.']['.$r.']['.$this->name.']" '; $html .= $this->NSDefaultValue().' '; $html .= 'type="hidden" value="'.$this->htmlentities($v, ENT_QUOTES, 'utf-8').'" />'; } $result [] = $html; $r ++; } $this->options = $aux; return $result; } function renderTable($values = '', $owner) { $result = $this->htmlentities ( $values, ENT_COMPAT, 'utf-8' ); return $result; } } /** * Class XmlForm_Field_Suggest * @author Erik Amaru Ortiz * @package gulliver.system * @access public */ class XmlForm_Field_Suggest extends XmlForm_Field_SimpleText //by neyek { var $size = 15; var $maxLength = 64; var $validate = 'Any'; var $mask = ''; var $defaultValue = ''; var $required = false; var $dependentFields = ''; var $linkField = ''; //Possible values:(-|UPPER|LOWER|CAPITALIZE) var $strTo = ''; var $readOnly = false; var $sqlConnection = 0; var $sql = ''; var $sqlOption = array (); //Atributes only for grids var $formula = ''; var $function = ''; var $replaceTags = 0; var $ajaxServer = '../gulliver/genericAjax'; var $maxresults = '6'; var $savelabel = 1; var $shownoresults; var $callback = ''; var $store_new_entry = ''; var $table = ''; var $table_data = ''; var $primary_key = ''; var $primary_key_data = ''; var $primary_key_type = ''; var $primary_key_type_data = ''; var $field = ''; /** * Function render * @author Erik A. Ortiz. * @param $value * @param $owner * @return */ function render($value = NULL, $owner = NULL) { if (! $this->sqlConnection) $this->sqlConnection = 'workflow'; //NOTE: string functions must be in G class if ($this->strTo === 'UPPER') $value = strtoupper ( $value ); if ($this->strTo === 'LOWER') $value = strtolower ( $value ); //if ($this->strTo==='CAPITALIZE') $value = strtocapitalize($value); $onkeypress = G::replaceDataField ( $this->onkeypress, $owner->values ); if ($this->replaceTags == 1) { $value = G::replaceDataField ( $value, $owner->values ); } $aProperties = Array( 'value' =>'""', 'size' => '"'.$this->size.'"', ); $storeEntry = ''; if($this->store_new_entry){ $storeEntry = 'onchange="storeEntry(this, \''.$this->sqlConnection.'\', \''.$this->table.'\', \''.$this->primary_key.'\', \''.$this->primary_key_type.'\', \''.$this->field.'\')"'; } $formVariableValue = ''; $formVariableKeyValue = ''; G::LoadClass('case'); $oApp= new Cases(); if (isset($_SESSION['APPLICATION']) && ($_SESSION['APPLICATION'] != null && $oApp->loadCase($_SESSION['APPLICATION'])!=null) ) { $aFields = $oApp->loadCase($_SESSION['APPLICATION']); if(isset($aFields['APP_DATA'][$this->name . '_label'])){ $formVariableValue = $aFields['APP_DATA'][$this->name . '_label']; $formVariableKeyValue = $aFields['APP_DATA'][$this->name]; } } if ($this->mode === 'edit') { if ($this->readOnly) { return 'htmlentities ( $value, ENT_COMPAT, 'utf-8' ) . '\' readOnly="readOnly" style="' . htmlentities ( $this->style, ENT_COMPAT, 'utf-8' ) . '" onkeypress="' . htmlentities ( $onkeypress, ENT_COMPAT, 'utf-8' ) . '"/>'; } else { // $str = ''; if(strlen(trim($formVariableValue))>0) { $value = $formVariableValue; } $name = "'".$this->name."'"; $str = 'NSDependentFields(true).' '; $str .= '/>'; $str .= 'name . ']" '; $str .= 'name="form[' . $this->name . ']" '; $str .= 'value="' . $this->htmlentities ( $formVariableKeyValue, ENT_COMPAT, 'utf-8' ) . '" ' ; $str .= 'type="hidden" />'; $str .= $this->renderHint(); if( trim($this->callback) != '' ) { $sCallBack = 'try{'.$this->callback.'}catch(e){alert("Suggest Widget call back error: "+e)}'; } else { $sCallBack = ''; } $hash = str_rot13(base64_encode($this->sql.'@|'.$this->sqlConnection)); // $sOptions = 'script:"'.$this->ajaxServer.'?request=suggest&json=true&limit='.$this->maxresults.'&hash='.$hash.'&dependentFields='. $this->dependentFields .'&field=" + getField(\''. $this->name .'\').value + "&",'; $sSQL = $this->sql; $nCount = preg_match_all('/\@(?:([\@\%\#\!Qq])([a-zA-Z\_]\w*)|([a-zA-Z\_][\w\-\>\:]*)\(((?:[^\\\\\)]*?)*)\))/', $sSQL, $match, PREG_PATTERN_ORDER | PREG_OFFSET_CAPTURE); $sResult = array(); if($nCount){ for($i=0; $i<$nCount; $i++){ if (isset($match[0][$i][0]) && isset($match[2][$i][0])) { $aResult[$match[0][$i][0]] = $match[2][$i][0]; } } } $depValues = ''; $i = 1; if(isset($aResult) && $aResult ) { $sResult = '"' . implode('","', $aResult) . '"'; $aResultKeys = array_keys($aResult); $sResultKeys = str_rot13(base64_encode(implode('|', $aResultKeys))); foreach($aResult as $key=>$field) { $depValues .= 'getField(\''.$field.'\').value'; if($i++name .'_label\').value); '; $sOptions .= ' return "' . $this->ajaxServer . '?request=suggest&json=true&limit=' . $this->maxresults ; $sOptions .= '&hash=' . $hash . '&dependentFieldsKeys=' . $sResultKeys . '&dependentFieldsValue="'; $sOptions .= $depValues . '"&input="+inputValue+"&inputEnconde64=enable"; '; $sOptions .= '},'; $sOptions .= 'json: true,'; $sOptions .= 'limit: '.$this->maxresults.','; // $sOptions .= 'varname: "input",'; $sOptions .= 'shownoresults: ' . ($this->shownoresults ? 'true' : 'false') . ','; $sOptions .= 'maxresults: '.$this->maxresults.','; $sOptions .= 'chache: true,'; $setValue = ($this->savelabel == '1') ? 'obj.value' : 'obj.id'; $sOptions .= 'callback: function(obj){'; $sOptions .= ' var jField = { ' . $this->name . ' : obj.id };'; $sOptions .= ' var sField = "["+ encodeURIComponent(jField.toJSONString()) + "]"; '; $sOptions .= $sCallBack . '; getField("' . $this->name . '").value = obj.id;'; $sOptions .= 'var response = ajax_function("../gulliver/defaultAjaxDynaform", "reloadField", '; $sOptions .= ' "form=' . $owner->id . '&fields=" + sField, "POST"); '; $sOptions .= 'if (response.substr(0,1) === \'[\') { '; $sOptions .= ' var newcont; '; $sOptions .= ' eval(\'newcont=\' + response + \';\'); '; $sOptions .= ' for(var i = 0; iname . '_label]\', {'.$sOptions.'});'; $str .= ''; return $str; } } else { return $this->htmlentities ( $formVariableValue, ENT_COMPAT, 'utf-8' ); } } /** * Function renderGrid * @author David S. Callizaya S. * @access public * @param string values * @param string owner * @return string */ function renderGrid($values = array(), $owner) { $result = array (); $r = 1; foreach ( $values as $v ) { if ($this->replaceTags == 1) { $v = G::replaceDataField ( $v, $owner->values ); } if ($this->mode === 'edit') { if ($this->readOnly) $result [] = ''; else $result [] = ''; } elseif ($this->mode === 'view') { $result [] = $this->htmlentities ( $v, ENT_COMPAT, 'utf-8' ); } else { $result [] = $this->htmlentities ( $v, ENT_COMPAT, 'utf-8' ); } $r ++; } return $result; } /** * render in a table * @param $values * @param $owner * @return $result */ function renderTable($values = '', $owner) { $result = $this->htmlentities ( $values, ENT_COMPAT, 'utf-8' ); return $result; } } /** * prepare the field for printing * @package gulliver.system */ class XmlForm_Field_Print extends XmlForm_Field_SimpleText //by neyek { //Instead of var --> link var $link = ''; var $value = ''; var $target = ''; var $colClassName = 'RowLink'; //properties var $width; var $height; var $top; var $left; var $resizable; /** * Function render * @param string value * @return string */ //750, 450, 10, 32, 1 function render($value = NULL, $owner = NULL) { $onclick = G::replaceDataField ( $this->onclick, $owner->values ); $link = G::replaceDataField ( $this->link, $owner->values ); $target = G::replaceDataField ( $this->target, $owner->values ); $value = G::replaceDataField ( $this->value, $owner->values ); $label = G::replaceDataField ( $this->label, $owner->values ); $html = ' '; return $html; } } /*DEPRECATED*/ /** * caption field for dynaforms * @package gulliver.system */ class XmlForm_Field_Caption extends XmlForm_Field { var $defaultValue = ''; var $required = false; var $dependentFields = ''; var $readonly = false; var $option = array (); var $sqlConnection = 0; var $sql = ''; var $sqlOption = array (); var $saveLabel = 0; //var $hint; /** * @param $value * @param $owner * @return true */ function validateValue($value, &$owner) { /*$this->executeSQL( $owner ); return isset($value) && ( array_key_exists( $value , $this->options ) );*/ return true; } /** * Function render * @author David S. Callizaya S. * @access public * @param string value * @return string * modified */ function render($value = NULL, $owner = NULL, $rowId = '', $onlyValue = false, $row = -1, $therow = -1) { if (($this->pmconnection != '') && ($this->pmfield != '') && $value == NULL ) { $value = $this->getPMTableValue($owner); } if ($therow == - 1) {//print_r($this->executeSQL ( $owner, $row ));print"
"; $this->executeSQL ( $owner, $row ); } else { if ($row == $therow) { $this->executeSQL ( $owner, $row ); } } $html = ''; if (! $onlyValue) { foreach ( $this->option as $optionName => $option ) { if($optionName == $value) $value=$option; } foreach ( $this->sqlOption as $optionName => $option ) { if($optionName == $value) $value=$option; } } else { foreach ( $this->option as $optionName => $option ) { if ($optionName == $value) { $$value = $option; } } foreach ( $this->sqlOption as $optionName => $option ) { if ($optionName == $value) { $value = $option; } } } $pID= "form[$this->name]"; $htm = $this->htmlentities ( $value, ENT_COMPAT, 'utf-8' ); $htm .= ''; return $htm; } } /** * Class XmlForm_Field_Password * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_Password extends XmlForm_Field { var $size = 15; var $maxLength = 15; var $required = false; var $readOnly = false; var $autocomplete = "on"; /** * Function render * @author David S. Callizaya S. * @access public * @param string value * @return string */ function render($value = NULL) { if($this->autocomplete==='1'){ $this->autocomplete = "on"; } else{ if($this->autocomplete==='0') { $this->autocomplete ="off";} } if ($this->mode === 'edit') { if ($this->readOnly) return 'htmlentities ( $value, ENT_COMPAT, 'utf-8' ) . '\' readOnly="readOnly"/>'; else{ $html='htmlentities ( $value, ENT_COMPAT, 'utf-8' ) . '\'/>'; $html .= $this->renderHint(); return $html; } } elseif ($this->mode === 'view') { $html= 'htmlentities ( $value, ENT_COMPAT, 'utf-8' ) . '\' readOnly="readOnly"/>'; $html.= $this->htmlentities ( str_repeat ( '*', 10 ), ENT_COMPAT, 'utf-8' ); return $html; } else { return $this->htmlentities ( str_repeat ( '*', 10 ), ENT_COMPAT, 'utf-8' ); } } } /** * Class XmlForm_Field_Textarea * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_Textarea extends XmlForm_Field { var $rows = 12; var $cols = 40; var $required = false; var $readOnly = false; var $wrap = 'OFF'; var $className; var $renderMode = ''; /** * Function render * @author David S. Callizaya S. * @access public * @param string value * @return string */ function render($value = NULL, $owner) { if (($this->pmconnection != '') && ($this->pmfield != '') && $value == NULL) { $value = $this->getPMTableValue($owner); } else { $this->executeSQL ( $owner ); if (isset ( $this->sqlOption )) $firstElement = key ( $this->sqlOption ); if (isset ( $firstElement )) $value = $firstElement; } $className = isset($this->className) ? $this->className : 'module_app_input___gray'; if ($this->renderMode == '') $this->renderMode = $this->mode; $html = ''; $scrollStyle = $this->style . "overflow:scroll;overflow-y:scroll;overflow-x:hidden;overflow:-moz-scrollbars-vertical;"; if ($this->renderMode == 'edit'){ //EDIT MODE $readOnlyText = ($this->readOnly == 1 || $this->readOnly == '1')? 'readOnly="readOnly"':''; $html .= ''; }else{ //VIEW MODE $html .= ''; } $html .= $this->renderHint(); return $html; } /** * Function renderGrid * @author David S. Callizaya S. * @access public * @param string value * @param string owner * @return string */ function renderGrid($values = NULL, $owner) { $this->gridFieldType = 'textarea'; if ($owner->mode != 'view') $this->renderMode = $this->modeForGrid; $result = array (); $r = 1; foreach ( $values as $v ) { $scrollStyle = $this->style . "overflow:scroll;overflow-y:scroll;overflow-x:hidden;overflow:-moz-scrollbars-vertical;"; $html = ''; if ($this->renderMode == 'edit'){ //EDIT MODE $readOnlyText = ($this->readOnly == 1 || $this->readOnly == '1')? 'readOnly="readOnly"':''; $html .= ''; }else{ //VIEW MODE $html .= ''; } $result[] = $html; $r ++; } return $result; } } /** * Class XmlForm_Field_Currency * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_Currency extends XmlForm_Field_SimpleText { var $group = 0; var $size = 15; var $required = false; var $linkField = ''; var $readOnly = false; var $maxLength = 15; var $mask = '_###,###,###,###;###,###,###,###.## $'; var $currency = '$'; //Atributes only for grids var $formula = ''; var $function = ''; var $gridFieldType = 'currency'; var $comma_separator = '.'; /** * render the field in a dynaform * @param $value * @param $owner * @return */ function render( $value = NULL, $owner = NULL) { if ($this->renderMode == '') $this->renderMode = $this->mode; $onkeypress = G::replaceDataField ( $this->onkeypress, $owner->values ); $html = ''; $currency = preg_replace( '/([_;#,.])/', '',$this->mask); if (! $value) $value= $currency; if ($this->renderMode == 'edit'){ //EDIT MODE $readOnlyText = ($this->readOnly == 1 || $this->readOnly == '1') ? 'readOnly="readOnly"' : ''; $html .= 'name . ']" '; $html .= 'name="form[' . $this->name . ']" '; $html .= 'type="text" size="'.$this->size.'" maxlength="'.$this->maxLength.'" '; $html .= 'value="'.$this->htmlentities($value, ENT_QUOTES, 'utf-8').'" '; $html .= 'style="'.$this->htmlentities($this->style, ENT_COMPAT, 'utf-8').'" '; $html .= 'onkeypress="'.$this->htmlentities($onkeypress, ENT_COMPAT, 'utf-8').'" '; $html .= $this->NSDefaultValue().' '; $html .= $this->NSRequiredValue().' '; $html .= $this->NSGridType().' '; $html .= 'pm:decimal_separator="'.$this->comma_separator.'" '; $html .= '/>'; }else{ //VIEW MODE $html .= $this->htmlentities($value, ENT_COMPAT, 'utf-8'); $html .= 'name . ']" '; $html .= 'name="form[' . $this->name . ']" '; $html .= 'type="hidden" value="'.$this->htmlentities($value, ENT_COMPAT, 'utf-8').'" />'; } if (($this->readOnly == 1) && ($this->renderMode == 'edit')) { $html = str_replace("class=\"module_app_input___gray\"", "class=\"module_app_input___gray_readOnly\"", $html); } $html .= $this->renderHint(); return $html; } /** * Function renderGrid * @author alvaro campos sanchez * @access public * @param string values * @param string owner * @return string */ function renderGrid($values = array(), $owner) { $result = array (); $r = 1; if ($owner->mode != 'view') $this->renderMode = $this->modeForGrid; foreach ( $values as $v ) { $html = ''; $currency = preg_replace( '/([_;#,.])/', '',$this->mask); if (! $v) $v= $currency; if ($this->renderMode === 'edit'){ //EDIT MODE $readOnlyText = ($this->readOnly == 1 || $this->readOnly == '1') ? 'readOnly="readOnly"' : ''; $html .= 'name.']['.$r.']['.$this->name.']" '; $html .= 'name="form['.$owner->name.']['.$r.']['.$this->name.']" '; $html .= 'type="text" size="'.$this->size.'" maxlength="'.$this->maxLength.'" '; $html .= 'value="'.$this->htmlentities($v, ENT_QUOTES, 'utf-8').'" '; $html .= 'style="'.$this->htmlentities($this->style, ENT_COMPAT, 'utf-8').'" '; $html .= $this->NSDefaultValue().' '; $html .= $this->NSRequiredValue().' '; $html .= $this->NSGridType().' '; $html .= $this->NSGridLabel().' '; $html .= '/>'; }else{ //VIEW MODE $html .= $this->htmlentities($v, ENT_QUOTES, 'utf-8'); $html .= 'name.']['.$r.']['.$this->name.']" '; $html .= 'name="form['.$owner->name.']['.$r.']['.$this->name.']" '; $html .= 'type="hidden" value="'.$this->htmlentities($v, ENT_QUOTES, 'utf-8').'" />'; } $result [] = $html; $r ++; } return $result; } } /*DEPRECATED*/ /** * @package gulliver.system */ class XmlForm_Field_CaptionCurrency extends XmlForm_Field { /** * Function render * @author David S. Callizaya S. * @access public * @param string value * @return string */ function render($value = NULL) { return '$ ' . $this->htmlentities ( $value, ENT_COMPAT, 'utf-8' ); } } /** * Class XmlForm_Field_Percentage * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_Percentage extends XmlForm_Field_SimpleText { var $size = 15; var $required = false; var $linkField = ''; var $readOnly = false; var $maxLength = 15; var $mask = '###.## %'; //Atributes only for grids var $formula = ''; var $function = ''; var $gridFieldType = 'percentage'; var $comma_separator = '.'; function render( $value = NULL, $owner = NULL) { if ($this->renderMode == '') $this->renderMode = $this->mode; $onkeypress = G::replaceDataField ( $this->onkeypress, $owner->values ); $html = ''; if ($this->renderMode == 'edit'){ //EDIT MODE $readOnlyText = ($this->readOnly == 1 || $this->readOnly == '1') ? 'readOnly="readOnly"' : ''; $html .= 'name . ']" '; $html .= 'name="form[' . $this->name . ']" '; $html .= 'type="text" size="'.$this->size.'" maxlength="'.$this->maxLength.'" '; $html .= 'value="'.$this->htmlentities($value, ENT_QUOTES, 'utf-8').'" '; $html .= 'style="'.$this->htmlentities($this->style, ENT_COMPAT, 'utf-8').'" '; $html .= 'onkeypress="'.$this->htmlentities($onkeypress, ENT_COMPAT, 'utf-8').'" '; $html .= $this->NSDefaultValue().' '; $html .= $this->NSRequiredValue().' '; $html .= 'pm:decimal_separator="' + $this->comma_separator + '" '; $html .= '/>'; }else{ //VIEW MODE $html .= $this->htmlentities($value, ENT_COMPAT, 'utf-8'); $html .= 'name . ']" '; $html .= 'name="form[' . $this->name . ']" '; $html .= 'type="hidden" value="'.$this->htmlentities($value, ENT_COMPAT, 'utf-8').'" />'; } if (($this->readOnly == 1) && ($this->renderMode == 'edit')) { $html = str_replace("class=\"module_app_input___gray\"", "class=\"module_app_input___gray_readOnly\"", $html); } $html .= $this->renderHint(); return $html; // $onkeypress = G::replaceDataField ( $this->onkeypress, $owner->values ); // if ($this->mode === 'edit') { // if ($this->readOnly) // return 'htmlentities ( $value, ENT_QUOTES, 'utf-8' ) . '\' readOnly="readOnly" style="' . htmlentities ( $this->style, ENT_COMPAT, 'utf-8' ) . '" onkeypress="' . htmlentities ( $onkeypress, ENT_COMPAT, 'utf-8' ) . '"/>'; // else { // // $html = 'htmlentities ( $value, ENT_QUOTES, 'utf-8' ) . '\' style="' . htmlentities ( $this->style, ENT_COMPAT, 'utf-8' ) . '" onkeypress="' . htmlentities ( $onkeypress, ENT_COMPAT, 'utf-8' ) . '"/>'; // // if($this->hint){ // $html .= ' // // '; // } // // return $html; // } // } elseif ($this->mode === 'view') { // return 'htmlentities ( $value, ENT_QUOTES, 'utf-8' ) . '\' style="display:none;' . htmlentities ( $this->style, ENT_COMPAT, 'utf-8' ) . '" onkeypress="' . htmlentities ( $onkeypress, ENT_COMPAT, 'utf-8' ) . '"/>' . $this->htmlentities ( $value, ENT_COMPAT, 'utf-8' ); // } else { // return $this->htmlentities ( $value, ENT_QUOTES, 'utf-8' ); // } } } /*DEPRECATED*/ /** * @package gulliver.system */ class XmlForm_Field_CaptionPercentage extends XmlForm_Field { function render($value = NULL) { return $this->htmlentities ( $value, ENT_COMPAT, 'utf-8' ); } } /** * Class XmlForm_Field_Date * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_Date2 extends XmlForm_Field_SimpleText { //Instead of size --> startDate var $startDate = ''; //Instead of maxLength --> endDate var $endDate = ''; //for dinamically dates, beforeDate << currentDate << afterDate // beforeDate='1y' means one year before, beforeDate='3m' means 3 months before // afterDate='5y' means five year after, afterDate='15d' means 15 days after // startDate and endDate have priority over beforeDate and AfterDate. var $afterDate = ''; var $beforeDate = ''; var $defaultValue = NULL; var $format = 'Y-m-d'; var $required = false; var $readOnly = false; var $mask = 'yyyy-mm-dd'; var $dependentFields = ''; /** * Verify the date format * @param $date * @return Boolean true/false */ function verifyDateFormat($date) { $aux = explode ( '-', $date ); if (count ( $aux ) != 3) return false; if (! (is_numeric ( $aux [0] ) && is_numeric ( $aux [1] ) && is_numeric ( $aux [2] ))) return false; if ($aux [0] < 1900 || $aux [0] > 2100) return false; return true; } /** * checks if a date has he correct format * @param $date * @return */ function isvalidBeforeFormat($date) { $part1 = substr ( $date, 0, strlen ( $date ) - 1 ); $part2 = substr ( $date, strlen ( $date ) - 1 ); if ($part2 != 'd' && $part2 != 'm' && $part2 != 'y') return false; if (! is_numeric ( $part1 )) return false; return true; } /** * Calculate the date before the format * @param $date * @param $sign * @return $res date based on the data insert */ function calculateBeforeFormat($date, $sign) { $part1 = $sign * substr ( $date, 0, strlen ( $date ) - 1 ); $part2 = substr ( $date, strlen ( $date ) - 1 ); switch ($part2) { case 'd' : $res = date ( 'Y-m-d', mktime ( 0, 0, 0, date ( 'm' ), date ( 'd' ) + $part1, date ( 'Y' ) ) ); break; case 'm' : $res = date ( 'Y-m-d', mktime ( 0, 0, 0, date ( 'm' ) + $part1, date ( 'd' ), date ( 'Y' ) ) ); break; case 'y' : $res = date ( 'Y-m-d', mktime ( 0, 0, 0, date ( 'm' ), date ( 'd' ), date ( 'Y' ) + $part1 ) ); break; } return $res; } /** * render the field in a dynaform * @param $value * @param $owner * @return */ function render($value = NULL, $owner = NULL) { $value = G::replaceDataField ( $value, $owner->values ); $startDate = G::replaceDataField ( $this->startDate, $owner->values ); $endDate = G::replaceDataField ( $this->endDate, $owner->values ); $beforeDate = G::replaceDataField ( $this->beforeDate, $owner->values ); $afterDate = G::replaceDataField ( $this->afterDate, $owner->values ); //for backward compatibility size and maxlength if ($startDate != '') { if (! $this->verifyDateFormat ( $startDate )) $startDate = ''; } if (isset ( $beforeDate ) && $beforeDate != '') { if ($this->isvalidBeforeFormat ( $beforeDate )) $startDate = $this->calculateBeforeFormat ( $beforeDate, - 1 ); } if ($startDate == '' && isset ( $this->size ) && is_numeric ( $this->size ) && $this->size >= 1900 && $this->size <= 2100) { $startDate = $this->size . '-01-01'; } if ($startDate == '') { $startDate = date ( 'Y-m-d' ); // the default is the current date } //for backward compatibility maxlength //if ( $this->endDate == '') $this->finalYear = date('Y') + 8; //for backward compatibility size and maxlength if ($endDate != '') { if (! $this->verifyDateFormat ( $endDate )) $endDate = ''; } if (isset ( $afterDate ) && $afterDate != '') { if ($this->isvalidBeforeFormat ( $afterDate )) $endDate = $this->calculateBeforeFormat ( $afterDate, + 1 ); if($endDate){ $sign='1'; $date=$afterDate; $part1 = $sign * substr ( $date, 0, strlen ( $date ) - 1 ); $part2 = substr ( $date, strlen ( $date ) - 1 ); switch ($part2) { case 'd' : $res = date ( 'Y-m-d', mktime ( 0, 0, 0, date ( 'm' ), date ( 'd' ) + $part1, date ( 'Y' ) ) ); break; case 'm' : $res = date ( 'Y-m-d', mktime ( 0, 0, 0, date ( 'm' ) + $part1, date ( 'd' ) - 1, date ( 'Y' ) ) ); break; case 'y' : $res = (intVal(date ( 'Y' )) + $part1) . '-' . date ( 'm' ) . '-' . date ( 'd' ); break; } $endDate=$res; } } if (isset ( $this->maxlength ) && is_numeric ( $this->maxlength ) && $this->maxlength >= 1900 && $this->maxlength <= 2100) { $endDate = $this->maxlength . '-01-01'; } if ($endDate == '') { //$this->endDate = mktime ( 0,0,0,date('m'),date('d'),date('y') ); // the default is the current date + 2 years $endDate = date ( 'Y-m-d', mktime ( 0, 0, 0, date ( 'm' ), date ( 'd' ), date ( 'Y' ) + 2 ) ); // the default is the current date + 2 years } if ($value == '') { $value = date ( 'Y-m-d' ); } $html = ""; $html .= "" . $value . " "; if ($this->mode == 'edit') $html .= "id . "', '" . $this->name . "', '" . $value . "', '" . $startDate . "', '" . $endDate . "'); return false;\" >"; return $html; } /** * render the field in a grid * @param $values * @param $owner * @param $onlyValue * @return */ function renderGrid($values = NULL, $owner = NULL, $onlyValue = false) { $result = array (); $r = 1; foreach ( $values as $v ) { $v = G::replaceDataField ( $v, $owner->values ); $startDate = G::replaceDataField ( $this->startDate, $owner->values ); $endDate = G::replaceDataField ( $this->endDate, $owner->values ); $beforeDate = G::replaceDataField ( $this->beforeDate, $owner->values ); $afterDate = G::replaceDataField ( $this->afterDate, $owner->values ); //for backward compatibility size and maxlength if ($startDate != '') { if (! $this->verifyDateFormat ( $startDate )) $startDate = ''; } if ($startDate == '' && isset ( $beforeDate ) && $beforeDate != '') { if ($this->isvalidBeforeFormat ( $beforeDate )) $startDate = $this->calculateBeforeFormat ( $beforeDate, - 1 ); } if ($startDate == '' && isset ( $this->size ) && is_numeric ( $this->size ) && $this->size >= 1900 && $this->size <= 2100) { $startDate = $this->size . '-01-01'; } if ($startDate == '') { $startDate = date ( 'Y-m-d' ); // the default is the current date } //for backward compatibility maxlength //if ( $this->endDate == '') $this->finalYear = date('Y') + 8; //for backward compatibility size and maxlength if ($endDate != '') { if (! $this->verifyDateFormat ( $endDate )) $endDate = ''; } if ($endDate == '' && isset ( $afterDate ) && $afterDate != '') { if ($this->isvalidBeforeFormat ( $afterDate )) $endDate = $this->calculateBeforeFormat ( $afterDate, + 1 ); } if ($endDate == '' && isset ( $this->maxlength ) && is_numeric ( $this->maxlength ) && $this->maxlength >= 1900 && $this->maxlength <= 2100) { $endDate = $this->maxlength . '-01-01'; } if ($endDate == '') { //$this->endDate = mktime ( 0,0,0,date('m'),date('d'),date('y') ); // the default is the current date + 2 years $endDate = date ( 'Y-m-d', mktime ( 0, 0, 0, date ( 'm' ), date ( 'd' ), date ( 'Y' ) + 2 ) ); // the default is the current date + 2 years } if ($v == '') { $v = date ( 'Y-m-d' ); } if (! $onlyValue) { $html = "name . "]' name='form[" . $owner->name . '][' . $r . '][' . $this->name . "]' value='" . $v . "'>"; if (isset ( $owner->owner->id )) { $html .= "name . "]' name='span[" . $owner->owner->id . "][" . $owner->name . '][' . $r . '][' . $this->name . "]' style='border:1;border-color:#000;width:100px;'>" . $v . " "; } else { $html .= "name . "]' name='span[" . $owner->id . "][" . $owner->name . '][' . $r . '][' . $this->name . "]' style='border:1;border-color:#000;width:100px;'>" . $v . " "; } if ($this->mode == 'edit') { $html .= "owner ) ? $owner->owner->id : $owner->id) . "', '" . $owner->name . '][' . $r . '][' . $this->name . "', '" . $v . "', '" . $startDate . "', '" . $endDate . "'); return false;\" >"; } } else { $html = $v; } $result [] = $html; $r ++; } return $result; } } /*DEPRECATED*/ /** * @package gulliver.system */ class XmlForm_Field_DateView extends XmlForm_Field { function render($value = NULL) { return $this->htmlentities ( $value, ENT_COMPAT, 'utf-8' ); } } /** * Class XmlForm_Field_YesNo * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_YesNo extends XmlForm_Field { var $required = false; var $readonly = false; var $renderMode = ''; /** * Function render * @author David S. Callizaya S. * @access public * @param string value * @return string */ function render($value = NULL, $owner = NULL) { if (($this->pmconnection != '') && ($this->pmfield != '') && $value == NULL) { $value = $this->getPMTableValue($owner); } if ($value == '') $value = '0'; if ($this->renderMode == '') $this->renderMode = $this->mode; $html = ''; if ($this->renderMode == 'edit'){ //EDIT MODE $readOnlyText = ($this->readonly == 1 || $this->readonly == '1') ? 'disabled' : ''; $html .= ''; if ($readOnlyText != ''){ $html .= 'name.']" '; $html .= 'name="form['.$this->name.']" '; $html .= 'type="hidden" value="'.(($value==='0')? '0':'1').'" />'; } }else{ //VIEW MODE $html .= ''; $html .= ($value==='0') ? G::LoadTranslation('ID_NO_VALUE') : G::LoadTranslation('ID_YES_VALUE'); $html .= 'name.']" '; $html .= 'name="form['.$this->name.']" '; $html .= 'type="hidden" value="'.(($value==='0')? '0':'1').'" />'; } $html .= $this->renderHint(); return $html; } /** * render the field in a grid * @param $values * @param $owner * @return */ function renderGrid($values = array(), $owner) { $this->gridFieldType = 'yesno'; $result = array (); $r = 1; if ($owner->mode != 'view') $this->renderMode = $this->modeForGrid; foreach ( $values as $v ) { $html = ''; if ($v == '') $v = '0'; if ($this->renderMode == 'edit'){ //EDIT MODE $readOnlyText = ($this->readonly == 1 || $this->readonly == '1') ? 'disabled' : ''; $html .= ''; if ($readOnlyText != ''){ $html .= 'name.']['.$r.']['.$this->name.']" '; $html .= 'name="form['.$owner->name.']['.$r.']['.$this->name.']" '; $html .= 'type="hidden" value="'.(($v==='0')? '0':'1').'" />'; } }else{ //VIEW MODE $html .= ($v==='0') ? G::LoadTranslation('ID_NO_VALUE') : G::LoadTranslation('ID_YES_VALUE'); $html .= 'name.']['.$r.']['.$this->name.']" '; $html .= 'name="form['.$owner->name.']['.$r.']['.$this->name.']" '; $html .= $this->NSGridType().' '; $html .= 'type="hidden" value="'.(($v==='0')? '0':'1').'" />'; } $result [] = $html; $r ++; } return $result; } } /** * Class XmlForm_Field_Link * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_Link extends XmlForm_Field { //Instead of var --> link var $link = ''; var $value = ''; var $target = ''; var $style = ''; var $colClassName = 'RowLink'; /** * Function render * @author David S. Callizaya S. * @access public * @param string value * @return string */ function render($value = NULL, $owner = NULL) { $onclick = G::replaceDataField ( $this->onclick, $owner->values ); $link = G::replaceDataField ( $this->link, $owner->values ); $target = G::replaceDataField ( $this->target, $owner->values ); $value = G::replaceDataField ( $this->value, $owner->values ); $label = G::replaceDataField ( $this->label, $owner->values ); $html = 'htmlentities ( $link, ENT_QUOTES, 'utf-8' ) . '\''; $html .= 'id="form[' . $this->name . ']" name="form[' . $this->name . ']" style="' . htmlentities ( $this->style, ENT_QUOTES, 'utf-8' ) .'" '; $html .= (($this->onclick) ? ' onclick="' . htmlentities ( $onclick, ENT_QUOTES, 'utf-8' ) . '"' : '') ; $html .= (($this->target) ? ' target="' . htmlentities ( $target, ENT_QUOTES, 'utf-8' ) . '"' : '') . '>'; $html .= $this->htmlentities ( $this->value === '' ? $label : $value, ENT_QUOTES, 'utf-8' ) . ''; return $html; } /** * render the field in a grid * @param $values * @param $owner * @return */ function renderGrid($values = array(), $owner = NULL) { $result = array (); $r = 1; foreach ( $values as $v ) { $_aData_ = (isset($owner->values[$owner->name][$r]) ? $owner->values[$owner->name][$r] : array()); $onclick = G::replaceDataField ( $this->onclick, $_aData_ ); $link = G::replaceDataField ( $this->link, $_aData_ ); $target = G::replaceDataField ( $this->target, $_aData_ ); $value = G::replaceDataField ( $this->value, $_aData_ ); $label = G::replaceDataField ( $this->label, $_aData_ ); $html = 'htmlentities ( $link, ENT_QUOTES, 'utf-8' ) . '\''; $html .= 'id="form[' . $owner->name . '][' . $r . '][' . $this->name . ']"'; $html .= 'name="form[' . $owner->name . '][' . $r . '][' . $this->name . ']"'; $html .= (($this->onclick) ? ' onclick="' . htmlentities ( $onclick, ENT_QUOTES, 'utf-8' ) . '"' : ''); $html .= (($this->target) ? ' target="' . htmlentities ( $target, ENT_QUOTES, 'utf-8' ) . '"' : '') ; if ($this->mode == 'view') $html .= 'style="color: #006699; text-decoration: none;font-weight: normal;"'; $html .= '>'.$this->htmlentities ( $this->value === '' ? $label : $value, ENT_QUOTES, 'utf-8' ) . ''; $result [] = $html; $r ++; } return $result; } /** * render the field in a table * @param $values * @param $owner * @return */ function renderTable($value = NULL, $owner = NULL) { $onclick = $this->htmlentities ( G::replaceDataField ( $this->onclick, $owner->values ), ENT_QUOTES, 'utf-8' ); $link = $this->htmlentities ( G::replaceDataField ( $this->link, $owner->values ), ENT_QUOTES, 'utf-8' ); $target = G::replaceDataField ( $this->target, $owner->values ); $value = G::replaceDataField ( $this->value, $owner->values ); $label = G::replaceDataField ( $this->label, $owner->values ); $aLabel = $this->htmlentities ( $this->value === '' ? $label : $value, ENT_QUOTES, 'utf-8' ); if(isset($aLabel) && strlen($aLabel)>0) return 'onclick) ? ' onclick="' . $onclick . '"' : '') . (($this->target) ? ' target="' . htmlentities ( $target, ENT_QUOTES, 'utf-8' ) . '"' : '') . '>' . $aLabel . ''; else return ''; } } /** * Class XmlForm_Field_File * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_File extends XmlForm_Field { var $required = false; var $input = ''; /** * Function render * @author David S. Callizaya S. * @access public * @param string value * @return string */ function render($value = NULL) { $mode = ($this->mode == 'view') ? ' disabled="disabled"' : ''; if($this->mode == 'view'){ $displayStyle = 'display:none;'; $html = $value.''; } else{ $html = ''; } if( isset($this->input) && $this->input != '') { require_once 'classes/model/InputDocument.php'; $oiDoc = new InputDocument; try { $aDoc = $oiDoc->load($this->input); $aDoc['INP_DOC_TITLE'] = isset($aDoc['INP_DOC_TITLE'])? $aDoc['INP_DOC_TITLE']: ''; $html .= ''; } catch (Exception $e) { // then the input document doesn't exits, id referencial broken $html .= ' ('.G::loadTranslation('ID_INPUT_DOC_DOESNT_EXIST').')'; } } $html .= $this->renderHint(); return $html; } } /** * Class XmlForm_Field_Dropdownpt * hook, dropdown field for Propel table * @author Erik Amaru * @package gulliver.system * @access public */ class XmlForm_Field_Dropdownpt extends XmlForm_Field { var $value; function render($value = NULL, $owner = NULL) { $this->value = $value; $id = $this->value->id; $value = isset($this->value->value)? $this->value->value: ''; $items = $this->value->items; $res = '"; return $res; } /* Used in Form::validatePost */ function maskValue($value, &$owner) { return ($value === $this->value) ? $value : $this->falseValue; } } /** * Class XmlForm_Field_Checkboxpt * checkbox field for Propel table * @author Erik Amaru * @package gulliver.system * @access public */ class XmlForm_Field_Checkboxpt extends XmlForm_Field { var $required = false; var $value = 'on'; var $falseValue = 'off'; var $labelOnRight = true; /** * Render the field in a dynaform * @param $value * @param $owner * @return <> */ function render($value = NULL, $owner = NULL) { if (($this->pmconnection != '') && ($this->pmfield != '') && $value == NULL) { $value = $this->getPMTableValue($owner); } $checked = (isset ( $value ) && ($value == $this->value)) ? 'checked' : ''; $res = ""; return $res; } /** * Render the field in a grid * @param $value * @param $owner * @return result */ function renderGrid($values = array(), $owner) { $result = array (); $r = 1; foreach ( $values as $v ) { $checked = (($v == $this->value) ? 'checked="checked"' : ''); $disabled = (($this->value == 'view') ? 'disabled="disabled"' : ''); $html = $res = ""; $result [] = $html; $r ++; } return $result; } /** * Used in Form::validatePost * @param $value * @param &$owner * @return either the value or falseValue attributes */ function maskValue($value, &$owner) { return ($value === $this->value) ? $value : $this->falseValue; } } /** * Class XmlForm_Field_Checkbox * @author Erik Amaru * @package gulliver.system * @access public */ class XmlForm_Field_Checkbox extends XmlForm_Field { var $required = false; var $value = 'on'; var $falseValue = 'off'; var $labelOnRight = true; var $readOnly = false; /** * Function render * @author David S. Callizaya S. * @access public * @param string value * @return string */ function render($value = NULL, $owner = NULL) { if (($this->pmconnection != '') && ($this->pmfield != '') && $value == NULL) { $value = $this->getPMTableValue($owner); } $disabled = ''; if($this->readOnly==='readonly' or $this->readOnly==='1' ){ $readOnly = 'readonly="readonly" onclick="javascript: return false;"';//$disabled = "disabled"; } else{ $readOnly = ''; } $checked = (isset ( $value ) && ($value == $this->value)) ? 'checked' : ''; if ($this->mode === 'edit') { //$readOnly = isset ( $this->readOnly ) && $this->readOnly ? 'disabled' : ''; if ($this->labelOnRight) { $res = "" . $this->label . ''; } else { $res = ""; } $res .= $this->renderHint(); // $res = "" . $this->label ; return $res; } elseif ($this->mode === 'view') { $checked = (isset ( $value ) && ($value == $this->value)) ? 'checked' : ''; if ($this->labelOnRight) { $html = ''; $html = " " . $this->label . ''; } else { $html = ""; } $html .= ""; // if($this->hint){ // $html .= ' // // '; // } return $html; } } /** * Render the field in a grid * @param $value * @param $owner * @return result */ function renderGrid($values = array(), $owner) { $this->gridFieldType = 'checkbox'; $result = array (); $r = 1; foreach ( $values as $v ) { $checked = (($v == $this->value) ? 'checked="checked"' : ''); if($this->readOnly==='readonly' or $this->readOnly==='1' ) { $disabled = "disabled"; } else { $disabled = ''; } if ($this->mode==='edit') { $html = $res = "NSDefaultValue()." ".$this->NSGridType()."/>"; $result [] = $html; $r ++; } else { //$disabled = (($this->value == 'view') ? 'disabled="disabled"' : ''); $html = $res = "NSDefaultValue()." ".$this->NSGridType()."/>"; $result [] = $html; $r ++; } } return $result; } /** * Used in Form::validatePost * @param $value * @param $owner * @return either the value or falseValue */ function maskValue($value, &$owner) { return ($value === $this->value) ? $value : $this->falseValue; } } /*DEPRECATED*/ /** * @package gulliver.system */ class XmlForm_Field_Checkbox2 extends XmlForm_Field { var $required = false; function render($value = NULL) { return '' . $this->label . ''; } } /** * Class XmlForm_Field_Button * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_Button extends XmlForm_Field { var $onclick = ''; var $align = 'center'; var $style; /** * Function render * @author David S. Callizaya S. * @access public * @param string value * @return string */ function render($value = NULL, $owner = NULL) { $onclick = G::replaceDataField ( $this->onclick, $owner->values ); $label = G::replaceDataField ( $this->label, $owner->values ); if ($this->mode === 'edit') { $re = "style}\" class='module_app_button___gray {$this->className}' id=\"form[{$this->name}]\" name=\"form[{$this->name}]\" type='button' value=\"{$label}\" " . (($this->onclick) ? 'onclick="' . htmlentities ( $onclick, ENT_COMPAT, 'utf-8' ) . '"' : '') . " />"; return $re; } elseif ($this->mode === 'view') { return "style};display:none\" disabled='disabled' class='module_app_button___gray module_app_buttonDisabled___gray {$this->className}' id=\"form[{$this->name}]\" name=\"form[{$this->name}]\" type='button' value=\"{$label}\" " . (($this->onclick) ? 'onclick="' . htmlentities ( $onclick, ENT_COMPAT, 'utf-8' ) . '"' : '') . " />"; } else { return $this->htmlentities ( $value, ENT_COMPAT, 'utf-8' ); } } } /** * Class XmlForm_Field_Reset * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_Reset extends XmlForm_Field { /** * Function render * @author David S. Callizaya S. * @access public * @param string value * @return string */ function render($value = NULL, $owner) { $onclick = G::replaceDataField ( $this->onclick, $owner->values ); $mode = ($this->mode == 'view') ? ' disabled="disabled"' : ''; //return ''; // return "style}\" $mode class='module_app_button___gray {$this->className}' id=\"form[{$this->name}]\" name=\"form[{$this->name}]\" type='reset' value=\"{$this->label}\" " . (($this->onclick) ? 'onclick="' . htmlentities ( $onclick, ENT_COMPAT, 'utf-8' ) . '"' : '') . " />"; if ($this->mode === 'edit') { return "style}\" $mode class='module_app_button___gray {$this->className}' id=\"form[{$this->name}]\" name=\"form[{$this->name}]\" type='reset' value=\"{$this->label}\" " . (($this->onclick) ? 'onclick="' . htmlentities ( $onclick, ENT_COMPAT, 'utf-8' ) . '"' : '') . " />"; } elseif ($this->mode === 'view') { return "style};display:none\" $mode class='module_app_button___gray {$this->className}' id=\"form[{$this->name}]\" name=\"form[{$this->name}]\" type='reset' value=\"{$this->label}\" " . (($this->onclick) ? 'onclick="' . htmlentities ( $onclick, ENT_COMPAT, 'utf-8' ) . '"' : '') . " />"; } else { return $this->htmlentities ( $value, ENT_COMPAT, 'utf-8' ); } } } /** * Class XmlForm_Field_Submit * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_Submit extends XmlForm_Field { var $onclick = ''; /** * Function render * @author David S. Callizaya S. * @access public * @param string value * @return string */ function render($value = NULL, $owner) { $onclick = G::replaceDataField ( $this->onclick, $owner->values ); if ($this->mode === 'edit') { // if ($this->readOnly) // return 'label .'\' disabled/>'; return "style}\" class='module_app_button___gray {$this->className}' id=\"form[{$this->name}]\" name=\"form[{$this->name}]\" type='submit' value=\"{$this->label}\" " . (($this->onclick) ? 'onclick="' . htmlentities ( $onclick, ENT_COMPAT, 'utf-8' ) . '"' : '') . " />"; } elseif ($this->mode === 'view') { // return "style};display:none\" disabled='disabled' class='module_app_button___gray module_app_buttonDisabled___gray {$this->className}' id=\"form[{$this->name}]\" name=\"form[{$this->name}]\" type='submit' value=\"{$this->label}\" " . (($this->onclick) ? 'onclick="' . htmlentities ( $onclick, ENT_COMPAT, 'utf-8' ) . '"' : '') . " />"; //$sLinkNextStep = 'window.open("' . $owner->fields['__DYNAFORM_OPTIONS']->xmlMenu->values['NEXT_STEP'] . '", "_self");'; $html = ''; if (isset($_SESSION['CURRENT_DYN_UID'])) { $sLinkNextStep = 'window.location=("casesSaveDataView?UID='.$_SESSION['CURRENT_DYN_UID'].'");'; $html = ''; } $html .= 'name . ']" '; $html .= 'name="form[' . $this->name . ']" '; $html .= 'type="hidden" value="'. $this->htmlentities ( $this->label, ENT_QUOTES, 'utf-8' ) .'" />'; return $html; } else { return $this->htmlentities ( $value, ENT_COMPAT, 'utf-8' ); } } } /** * Class XmlForm_Field_Hidden * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_Hidden extends XmlForm_Field { var $sqlConnection = 0; var $sql = ''; var $sqlOption = array (); var $dependentFields = ''; /** * Function render * @author David S. Callizaya S. * @access public * @param string value * @param string owner * @return string */ function render($value = NULL, $owner) { if (($this->pmconnection != '') && ($this->pmfield != '') && $value == NULL) { $value = $this->getPMTableValue($owner); } else { $this->executeSQL ( $owner ); if (isset ( $this->sqlOption )) { reset ( $this->sqlOption ); $firstElement = key ( $this->sqlOption ); if (isset ( $firstElement )) $value = $firstElement; } } if ($this->mode === 'edit') { return ''; } elseif ($this->mode === 'view') { //a button? who wants a hidden field be showed like a button?? very strange. return ''; } else { return $this->htmlentities ( $value, ENT_COMPAT, 'utf-8' ); } } /** * Render the field in a grid * @param $value * @param $owner * @return result */ function renderGrid($values = NULL, $owner) { $result = array (); $r = 1; foreach ( $values as $v ) { $result [] = ''; $r ++; } return $result; } /** * Render the field in a table * @param $value * @param $owner * @return result */ function renderTable($value = '', $owner) { return ''; } } /** * Class XmlForm_Field_Dropdown * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_Dropdown extends XmlForm_Field { var $defaultValue = ''; var $required = false; var $dependentFields = ''; var $readonly = false; var $option = array (); var $sqlConnection = 0; var $sql = ''; var $sqlOption = array (); var $saveLabel = 0; var $modeGridDrop = ''; var $renderMode = ''; var $selectedValue = ''; function validateValue($value, &$owner) { /*$this->executeSQL( $owner ); return isset($value) && ( array_key_exists( $value , $this->options ) );*/ return true; } /** * Function render * @author David S. Callizaya S. * @access public * @param string value * @param string owner * @return string */ function render($value = NULL, $owner = NULL, $rowId = '', $onlyValue = false, $row = -1, $therow = -1) { $displayStyle = ''; //Returns value from a PMTable when it is exists. if (($this->pmconnection != '') && ($this->pmfield != '') && $value == NULL) { $value = $this->getPMTableValue($owner); } //Recalculate SQL options if $therow is not defined or the row id equal if ($therow == -1) { //echo 'Entro:'.$this->dependentFields; $this->executeSQL ( $owner, $row ); } else { if ($row == $therow) { $this->executeSQL ( $owner, $row ); } } $html = ''; $displayLabel = ''; if ($this->renderMode == '') $this->renderMode = $this->mode; if (!$onlyValue){ //Render Field if not defined onlyValue if ($this->renderMode != 'edit') { //EDIT MODE $displayStyle = 'display:none;'; } $readOnlyField = ($this->readonly == 1 || $this->readonly == '1') ? 'disabled' : ''; $html = ''; if ($readOnlyField != ''){ $html .= 'name . ']" '; $html .= 'name="form' . $rowId . '[' . $this->name . ']" '; $html .= 'value="'.(($findValue != '') ? $findValue : $firstValue).'" />'; } $this->selectedValue = ($findValue != '') ? $findValue : ($cont==0)? $firstValue : ''; }else{ //Render Field showing only value; foreach ($this->option as $optValue => $optName) { if ($optValue == $value) { $html = $optName; } } foreach ($this->sqlOption as $optValue => $optName) { if ($optValue == $value) { $html = $optName; } } } if ($this->gridFieldType == '') $html .= $this->renderHint(); if ($displayStyle != '') $html = $displayLabel . $html; return $html; } /** * Function renderGrid * @author David S. Callizaya S. * @access public * @param string values * @return string */ function renderGrid($values = array(), $owner = NULL, $onlyValue = false, $therow = -1) { $this->gridFieldType = 'dropdown'; $result = array (); $r = 1; if ($owner->mode != 'view') $this->renderMode = $this->modeForGrid; foreach ( $values as $v ) { $result [] = $this->render ( $v, $owner, '[' . $owner->name . '][' . $r . ']', $onlyValue, $r, $therow ); $r ++; } return $result; } } /** * Class XmlForm_Field_Listbox * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_Listbox extends XmlForm_Field { var $defaultValue = ''; var $required = false; var $option = array (); var $sqlConnection = 0; var $size = 4; var $width = ''; var $sql = ''; var $sqlOption = array (); function validateValue($value, $owner) { $this->executeSQL ( $owner ); return true; // isset($value) && ( array_key_exists( $value , $this->options ) ); } /** * Function render * @author David S. Callizaya S. * @access public * @param string value * @param string owner * @return string */ function render($value = NULL, $owner = NULL) { if (($this->pmconnection != '') && ($this->pmfield != '') && $value == NULL) { $value = $this->getPMTableValue($owner); } $this->executeSQL ( $owner ); if (! is_array ( $value )) $value = explode ( '|', $value ); if ($this->mode === 'edit') { $itemWidth = ''; if ($this->width != '') { $itemWidth = 'style="width:'.$this->width . '"'; } $html = ''; $html .= $this->renderHint(); return $html; } elseif ($this->mode === 'view') { $html = ''; foreach ( $this->option as $optionName => $option ) { $html .= ''; } foreach ( $this->sqlOption as $optionName => $option ) { $html .= ''; } return $html; } else { return $this->htmlentities ( $value, ENT_COMPAT, 'utf-8' ); } } /** * Render the field in a grid * @param $value * @param $owner * @return result */ function renderGrid($value = NULL, $owner = NULL) { return $this->render ( $value, $owner ); } } /** * Class XmlForm_Field_RadioGroup * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_RadioGroup extends XmlForm_Field { var $defaultValue = ''; var $required = false; var $option = array (); var $sqlConnection = 0; var $sql = ''; var $sqlOption = array (); var $viewAlign = 'vertical'; var $linkType; /** * validate the execution of a query * @param $value * @param $owner * @return $value */ function validateValue($value, $owner) { $this->executeSQL ( $owner ); return isset ( $value ) && (array_key_exists ( $value, $this->options )); } /** * Function render * @author David S. Callizaya S. * @access public * @param string value * @param string owner * @return string */ function render($value = NULL, $owner) { if (($this->pmconnection != '') && ($this->pmfield != '') && $value == NULL) { $value = $this->getPMTableValue($owner); } $this->executeSQL ( $owner ); if ($this->mode === 'edit') { $html = ''; $i = 0; foreach ( $this->options as $optionName => $option ) { if( isset($this->linkType) && ($this->linkType == 1 || $this->linkType == "1") ){ $html .= '' . $option . ''; } else { $html .= '' . $option . ''; } if(++$i==count($this->options)){ $html .= '      '.$this->renderHint(); } if($this->viewAlign == 'horizontal') $html .=' '; else $html .='
'; } return $html; } elseif ($this->mode === 'view') { $html = ''; foreach ( $this->options as $optionName => $option ) { $html .= '' . $option . '
'; if($optionName == $value) $html .= ''; } return $html; } else { return $this->htmlentities ( $value, ENT_COMPAT, 'utf-8' ); } } } /*DEPRECATED*/ /** * @package gulliver.system */ class XmlForm_Field_RadioGroupView extends XmlForm_Field { var $defaultValue = ''; var $required = false; var $option = array (); var $sqlConnection = 0; var $sql = ''; var $sqlOption = array (); /** * Function render * @author David S. Callizaya S. * @access public * @param string value * @param string owner * @return string */ function render($value = NULL, $owner = NULL) { $this->executeSQL ( $owner ); $html = ''; foreach ( $this->option as $optionName => $option ) { $html .= '' . $option . '
'; } return $html; } } /** * Class XmlForm_Field_CheckGroup * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_CheckGroup extends XmlForm_Field { var $required = false; var $option = array (); var $sqlConnection = 0; var $sql = ''; var $sqlOption = array (); /*function validateValue( $value , $owner ) { $this->executeSQL( $owner ); return isset($value) && ( array_key_exists( $value , $this->options ) ); }*/ /** * Function render * @author David S. Callizaya S. * @access public * @param string value * @param string owner * @return string */ function render($value = NULL, $owner = NULL) { if (($this->pmconnection != '') && ($this->pmfield != '') && $value == NULL) { $value = $this->getPMTableValue($owner); } $this->executeSQL ( $owner ); if (! is_array ( $value )) $value = explode ( '|', $value ); if ($this->mode === 'edit') { $i=0; $html = ''; foreach ( $this->options as $optionName => $option ) { $html .= '' . $option . ''; if(++$i==count($this->options)){ $html .= '      '.$this->renderHint(); } $html .= '
'; }//fin for return $html; } elseif ($this->mode === 'view') { $html = ''; foreach ( $this->options as $optionName => $option ) { $html .= '' . $option . '
'; $html .= ''; } return $html; } else { return $this->htmlentities ( $value, ENT_COMPAT, 'utf-8' ); } } } /* TODO: DEPRECATED */ /** * @package gulliver.system */ class XmlForm_Field_CheckGroupView extends XmlForm_Field { var $option = array (); var $sqlConnection = 0; var $sql = ''; var $sqlOption = array (); /** * Function render * @author David S. Callizaya S. * @access public * @param string value * @return string */ function render($value = NULL) { $html = ''; foreach ( $this->option as $optionName => $option ) { $html .= '' . $option . '
'; } return $html; } } /** * Class XmlForm_Field_Grid * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_Grid extends XmlForm_Field { var $xmlGrid = ''; var $initRows = 1; var $group = 0; var $addRow = "1"; var $deleteRow = "1"; var $editRow = "0"; var $sql = ''; //TODO: 0=doesn't excecute the query, 1=Only the first time, 2=Allways var $fillType = 0; var $fields = array (); var $scriptURL; var $id = ''; /** * Function XmlForm_Field_Grid * @author David S. Callizaya S. * @access public * @param string xmlnode * @param string language * @param string home * @return string */ function XmlForm_Field_Grid($xmlnode, $language, $home) { parent::XmlForm_Field ( $xmlnode, $language ); $this->parseFile ( $home, $language ); } /** * Function parseFile * @author David S. Callizaya S. * @access public * @param string home * @param string language * @return string */ function parseFile($home, $language) { if (file_exists ( $home . $this->xmlGrid . '.xml' )) { $this->xmlform = new XmlForm ( ); $this->xmlform->home = $home; $this->xmlform->parseFile ( $this->xmlGrid . '.xml', $language, false ); $this->fields = $this->xmlform->fields; $this->scriptURL = $this->xmlform->scriptURL; $this->id = $this->xmlform->id; $this->modeGrid = $this->xmlform->mode; unset ( $this->xmlform ); } } /** * Render the field in a dynaform * @param $value * @param $owner * @return