my own css class

Please post any ChronoForms bugs you found here

my own css class

Postby cuhuak on Fri Apr 18, 2008 3:43 pm

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

then I'll have output like this
Code: Select all
<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:
Code: Select all
<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
Fresh Boarder
 
Posts: 10
Joined: Fri Apr 11, 2008 8:39 am

Re:my own css class

Postby cuhuak on Sun May 04, 2008 5:41 pm

Hi!
Here is solution.
file: ... components\com_chronocontact\chronocontact.php
Code: Select all

   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 //

cuhuak
Fresh Boarder
 
Posts: 10
Joined: Fri Apr 11, 2008 8:39 am

Re:my own css class

Postby admin on Sun May 04, 2008 11:09 pm

Thanks for sharing the solution!! :)

Max
ChronoForms/ChronoConnectivity/ChronoComments Developer Thanks for using our components!
If you have any problems with any extension please tell us.
If you like any of our extensions please post a review at Joomla.org
Want users to submit their content to your website ? try Submit Story
Want to list/edit/delete your data ? try ChronoConnectivity
Want to have stylish AJAX comments ? try ChronoComments
User avatar
admin
Platinum Boarder
 
Posts: 3168
Joined: Mon Aug 14, 2006 5:29 am


Return to ChronoForms Bugs

Who is online

Users browsing this forum: Google [Bot], priestjim and 1 guest