Forums

my own css class

cuhuak 18 Apr, 2008
That is not bag, but chorocontact do not works correct.
If I specify a css-class of my control like this:
<input name="LastName" id="LastName" value="" maxlength="190" type="text" class="textInput" />

then I'll have output like this
<input name="LastName" class="required validate-alpha" id="LastName" value="" maxlength="190" type="text" class="textInput" />


We understand that it have to be something like this:
<input name="LastName" id="LastName" value="" maxlength="190" type="text" class="textInput required validate-alpha" />

where I have one class-attribute.

This issue have been solved by me... but today i have updated my Module, backuping my old version. Now I'll try to realize this feature at the current version.

If someone have a solution plz tell me..<br><br>Post edited by: cuhuak, at: 2008/04/18 11:47
cuhuak 04 May, 2008
Hi!
Here is solution.
file: ... components\com_chronocontact\chronocontact.php


	if( trim($paramsvalues->validate) == 'Yes'){
	// Easy Validation //
			
			$pattern = '/<[input|textarea|select].*?(name=["|\'](.*?)["|\']).*?>/i';
			preg_match_all($pattern, $htmlstring, $matches);			
			//echo '<pre>';print_r ($matches);die;

			$arr_required = explode(",", str_replace(" ","",$paramsvalues->val_required));
			$arr_validate_number = explode(",", str_replace(" ","",$paramsvalues->val_validate_number));
			$arr_validate_digits = explode(",", str_replace(" ","",$paramsvalues->val_validate_digits));
			$arr_validate_alpha = explode(",", str_replace(" ","",$paramsvalues->val_validate_alpha));
			$arr_validate_alphanum = explode(",", str_replace(" ","",$paramsvalues->val_validate_alphanum));
			$arr_validate_date = explode(",", str_replace(" ","",$paramsvalues->val_validate_date));
			$arr_validate_email = explode(",", str_replace(" ","",$paramsvalues->val_validate_email));
			$arr_validate_url = explode(",", str_replace(" ","",$paramsvalues->val_validate_url));
			$arr_validate_date_au = explode(",", str_replace(" ","",$paramsvalues->val_validate_date_au));
			$arr_validate_currency_dollar = explode(",", str_replace(" ","",$paramsvalues->val_validate_currency_dollar));
			$arr_validate_selection = explode(",", str_replace(" ","",$paramsvalues->val_validate_selection));
			$arr_validate_one_required = explode(",", str_replace(" ","",$paramsvalues->val_validate_one_required));
			
			$arr_all = array_merge($arr_required, $arr_validate_number, $arr_validate_digits, $arr_validate_alpha, $arr_validate_alphanum, $arr_validate_date, $arr_validate_email, $arr_validate_url, $arr_validate_date_au, 
			$arr_validate_currency_dollar, $arr_validate_selection, $arr_validate_one_required);
			$i = 0;
      $used_names = array ();
			foreach ($matches[0] as $match)
			{
				$full_name = $matches[1][$i]; // with quotes and attribute 'name', for example: name="asdasd"
				$name = $matches[2][$i]; // name value only
				$i++;
        // needed to avoid class attribute duplication in a radios or a checkboxes which has a same name
        if (in_array($name,$used_names)) {
          continue;
        }
        else {
          $used_names[] = $name;
        }
        //searchng for the class-attributes into our controls
        //as result we have array specified class-attributess
        //case when class-attribute is after name-attribute
				preg_match('/'.$name.'.*? class=["|\'](.*?)["|\']/i', $match, $class_matches);
				$class_array = array();
				if ($class_matches[0]!=''){
					$class_array[] = $class_matches[1];
				}
				else {
        //before name-attribute
					preg_match('/class=["|\'](.*?)["|\'].*?'.$name.'/i', $match, $class_matches2);
  				if ($class_matches2[0]!=''){
  					$class_array[] = $class_matches2[1];
  				}
				}

				if(in_array($name,$arr_all)){
					if(in_array($name,$arr_required)){
						$class_array[] = "required";
					}
					if(in_array($name,$arr_validate_number)){
						$class_array[] = "validate-number";
					}
					if(in_array($name,$arr_validate_digits)){
						$class_array[] = "validate-digits";
					}
					if(in_array($name,$arr_validate_alpha)){
						$class_array[] = "validate-alpha";
					}
					if(in_array($name,$arr_validate_alphanum)){
						$class_array[] = "validate-alphanum";
					}
					if(in_array($name,$arr_validate_date)){
						$class_array[] = "validate-date";
					}
					if(in_array($name,$arr_validate_email)){
						$class_array[] = "validate-email";
					}
					if(in_array($name,$arr_validate_url)){
						$class_array[] = "validate-url";
					}
					if(in_array($name,$arr_validate_date_au)){
						$class_array[] = "validate-date-au";
					}
					if(in_array($name,$arr_validate_currency_dollar)){
						$class_array[] = "validate-currency-dollar";
					}
					if(in_array($name,$arr_validate_selection)){
						$class_array[] = "validate-selection";
					}
					if(in_array($name,$arr_validate_one_required)){
						$class_array[] = "validate-one-required";
					}
					$class_array = array_reverse($class_array);
					$class_string = implode(" ",$class_array);
					if ($class_matches[0]!='') {
						$htmlstring = preg_replace('/(name=["|\']'.$name.'["|\'].*?)(class=["|\'].*?["|\'])/i','$1class="'.$class_string.'"', $htmlstring);
					}
					elseif ($class_matches2[0]!='') {
						$htmlstring = preg_replace('/(class=["|\'].*?["|\'])(.*?name=["|\']'.$name.'["|\'])/i','class="'.$class_string.'"$2', $htmlstring);
					}
          else {
						$htmlstring = str_replace($full_name,$full_name.' class="'.$class_string.'"',$htmlstring);						
					}
				}
			}			
		$rows[0]->html = $htmlstring;
		}
	/// end validation //

Max_admin 04 May, 2008
Thanks for sharing the solution!!🙂

Max
Max, ChronoForms developer
ChronoMyAdmin: Database administration within Joomla, no phpMyAdmin needed.
ChronoMails simplifies Joomla email: newsletters, logging, and custom templates.
This topic is locked and no more replies can be posted.

VPS & Email Hosting 20% discount
hostinger