Keyword

Backend Extrafields "Default values"

  • Franz Heine
  • Franz Heine's Avatar Topic Author
  • Offline
  • Premium Member
More
8 years 2 months ago - 8 years 2 months ago #156091 by Franz Heine
Backend Extrafields "Default values" was created by Franz Heine
Hi,

ive updated my K2 to the version 2.7.0

In the former version i had a custom made "checkbox list" for the extrafields. Worked as a backend rating system (see the attached pictures).

Also the link to the site: eco-shops.de/oekostrom.html

Its a mouseover solution (called Eco Index).

Now my problem:
In the "items" view i can see the Eco Index with the labels and values --> see Pic2 --> imgur.com/a/QPziB

If i go in the K2 backend to the "Extra Fields" section, i can see my custom made "K2_Extra_Filed_Multiplecheckbox" --> see Pic1-> imgur.com/a/zPd51

But if i open the "Checkbox list" i cannot see the "Default values" --> see Pic 3 --> imgur.com/a/vRHVM

If i use the general Types like "Multi-select list", i get Default values -- see pic4 --> imgur.com/a/oupcB


Now my question:

Which file is responsible for the default values in the Extra Fields?

Ive backuped the old version und copied the code for the the custom made checklist into the files. I think i forget something.

It would be great, if you have a solution for my problem.

Anyway, thank you and still a great componnet.
Last edit: 8 years 2 months ago by Franz Heine. Reason: Solved

Please Log in or Create an account to join the conversation.

  • Krikor Boghossian
  • Krikor Boghossian's Avatar
  • Offline
  • Platinum Member
More
8 years 2 months ago #156114 by Krikor Boghossian
Replied by Krikor Boghossian on topic Backend Extrafields "Default values"
Hello Franz,

The fields are being constructed in the item's model file.
(components/com_k2/models.) The getItemExtraFields() function will help you paste the old functionality back

JoomlaWorks Support Team
---
Please search the forum before posting a new topic :)

Please Log in or Create an account to join the conversation.

  • Franz Heine
  • Franz Heine's Avatar Topic Author
  • Offline
  • Premium Member
More
8 years 2 months ago #156138 by Franz Heine
Replied by Franz Heine on topic Backend Extrafields "Default values"
Hi Krikor,

thank you for your advice. I could find the code in the components/com_k2/models folder.

Here is the code
else if ($rows[$i]->type=='multipleCheckbox'){						
						// checkboxlist: added whole "else if"						
						$cnt_nm = count($json->decode($rows[$i]->value));
						$total_val = 0;
						foreach ($json->decode($rows[$i]->value) as $option)
						{
							$total_val += $option->name;
						}
						
						$v=0;
						$tmpArr = array();						
						$GrpName = $rows[$i]->name;
						foreach ($json->decode($rows[$i]->value) as $option){
							if (@in_array($option->value,$object->value)) {
								$values[$v++] = array("GrpName" => $GrpName, "Label" => $option->label_name, "Value" => $option->name, "Total" => $total_val);								
							}
						}
						//$value = @implode(" ",$values);						
						$value = $values;
					}


Unfortunately no effect in the backend.

Could it be, that ive to change more files in the adminisistrator/components/com_k2 folder?

And another question, if i select the Type "Multiselect-list" ill get in the "Deafult values" fields with the
<div id="exFieldsTypesDiv"
and the
<input type="text" name="option_name[]">


Do you know which file is responsible for this tags?

Please Log in or Create an account to join the conversation.

  • Krikor Boghossian
  • Krikor Boghossian's Avatar
  • Offline
  • Platinum Member
More
8 years 2 months ago #156148 by Krikor Boghossian
Replied by Krikor Boghossian on topic Backend Extrafields "Default values"
Are the default values being saved in the db?

JoomlaWorks Support Team
---
Please search the forum before posting a new topic :)

Please Log in or Create an account to join the conversation.

  • Franz Heine
  • Franz Heine's Avatar Topic Author
  • Offline
  • Premium Member
More
8 years 2 months ago - 8 years 2 months ago #156151 by Franz Heine
Replied by Franz Heine on topic Backend Extrafields "Default values"
Yes,

it should be in the table --> k2_extra_fields.

But thanks for the advice!! When i safe my "multipleCheckbox" the "value" field of the db just shows
[]

But i should have this values in the db field "value"
[{"name":"15","label_name":"Detailreiche Produktbilder","value":1,"label_value":1,"target":null,"alias":"checkbox","required":0,"showNull":0},{"name":"10","label_name":"Umweltfreundlicher Versand","value":2,"label_value":2,"target":null,"alias":"checkbox","required":0,"showNull":0},{"name":"15","label_name":"Produktsuche m\u00f6glich","value":3,"label_value":3,"target":null,"alias":"checkbox","required":0,"showNull":0},{"name":"10","label_name":"Shop bietet Angebote \/ Sale","value":4,"label_value":4,"target":null,"alias":"checkbox","required":0,"showNull":0},{"name":"15","label_name":"Produktbewertung m\u00f6glich","value":5,"label_value":5,"target":null,"alias":"checkbox","required":0,"showNull":0},{"name":"15","label_name":"Shop verf\u00fcgt \u00fcber Zertifikate","value":6,"label_value":6,"target":null,"alias":"checkbox","required":0,"showNull":0},{"name":"10","label_name":"F\u00f6rderprogramme f\u00fcr Kunden","value":7,"label_value":7,"target":null,"alias":"checkbox","required":0,"showNull":0},{"name":"10","label_name":"Schneller Seitenaufbau","value":8,"label_value":8,"target":null,"alias":"checkbox","required":0,"showNull":0}]

Hope you have an idea Krikor.

But anyway. Thx a lot for your help. Youre great!
Last edit: 8 years 2 months ago by Franz Heine.

Please Log in or Create an account to join the conversation.

  • Franz Heine
  • Franz Heine's Avatar Topic Author
  • Offline
  • Premium Member
More
8 years 2 months ago - 8 years 2 months ago #156178 by Franz Heine
Replied by Franz Heine on topic Backend Extrafields "Default values"
i could solve the issue:

i had to edit the k2.js file in the folder -->media/k2/assets/js/

But if i save the changes, my "Label name" is empty in the db.

[{"name":"15","label_name":null,"value":1,"label_value":1,"target":null,"alias":"checkbox","required":0,"showNull":0}
+


Any ideas?
Last edit: 8 years 2 months ago by Franz Heine.

Please Log in or Create an account to join the conversation.

  • Krikor Boghossian
  • Krikor Boghossian's Avatar
  • Offline
  • Platinum Member
More
8 years 2 months ago #156180 by Krikor Boghossian
Replied by Krikor Boghossian on topic Backend Extrafields "Default values"
This is a shot in the dark but you can try the following files:

/administrator/components/k2/views/extrafield/
/administrator/components/k2/views/item/ (to see if there where any hardcoded parts for the new type)

/administrator/components/k2/models/extrafield.php

The JavaScript file has had some modifications since the last update so be careful :)

JoomlaWorks Support Team
---
Please search the forum before posting a new topic :)

Please Log in or Create an account to join the conversation.

  • Franz Heine
  • Franz Heine's Avatar Topic Author
  • Offline
  • Premium Member
More
8 years 2 months ago #156186 by Franz Heine
Replied by Franz Heine on topic Backend Extrafields "Default values"
Thx Krikor,

worked fine. --> administrator/components/k2/models/extrafield.php was the solution.

My "checkbox" works fine in the backend (db included)

For the frontend im using components/com_k2/templates/default/item.php

Ive put my code into this file. unfortunately i cannot display my "backend rating".

See here:
eco-shops.de/bio-lebensmittel/amorebio.html

Did you make big changes at the frontend templates?

And do i have to change something specific to get the db infos? Or is it like before?

Please Log in or Create an account to join the conversation.

  • Krikor Boghossian
  • Krikor Boghossian's Avatar
  • Offline
  • Platinum Member
More
8 years 2 months ago #156192 by Krikor Boghossian
Replied by Krikor Boghossian on topic Backend Extrafields "Default values"
The templates have been changed, but if you where using overrides, you shouldn't notice a difference.

How was this rating calculated? Was it pure CSS, JS or with some PHP code on your template?

JoomlaWorks Support Team
---
Please search the forum before posting a new topic :)

Please Log in or Create an account to join the conversation.

  • Franz Heine
  • Franz Heine's Avatar Topic Author
  • Offline
  • Premium Member
More
8 years 2 months ago #156212 by Franz Heine
Replied by Franz Heine on topic Backend Extrafields "Default values"
the rating is calculated in the components/com_k2/templates/default/item.php
<!-- # New Rating System Start Here -->
	<?php 	
	if($this->item->params->get('itemRating')): ?>
    <?php
	  if (count($this->item->extra_fields) > 0 && is_array($this->item->extra_fields)) {
		
		  $dispArr = array();
		  $m=0;
		  foreach ($this->item->extra_fields as $key=>$extraField)
		  {
			 if ($extraField->name == "Eco")
			 {
				$dispArr[$m]['Name']  = $extraField->name;
				$dispArr[$m]['Value'] = $extraField->value;
				$m++;
			 }
		  }		 
		  $tipVal = '';	
		
	  	if($this->item->params->get('itemExtraFields') && count($this->item->extra_fields)) {
	  		$tipVal .= '<div id="itemExtraFieldsToolTip" class="itemExtraFieldsToolTip">';
        	$tipVal .= '<label class="extra-title">'.$this->item->title.'</label>';

            $cnt_dispArr = count($dispArr);
			$chkVal = 0;
			for ($v=0; $v<$cnt_dispArr; $v++)
			{
				if (is_array($dispArr[$v]['Value']))
				{
					$cnt_valArr = count($dispArr[$v]['Value']);
					$tipVal .= '<div class="ratinglinedesc"><ul style="padding:0; margin:0;">';
					//$tipVal .= '<div class="extra-desc-lbl">'.$dispArr[$v]['Value'][0]['GrpName'].'</div>';
					$totalChkVal = $dispArr[$v]['Value'][0]['Total'];
					for ($m=0; $m<$cnt_valArr; $m++)
					{						
						$strLabel = $dispArr[$v]['Value'][$m]['Label'];
						$chkVal += $dispArr[$v]['Value'][$m]['Value'];
						$tipVal .= '<li class="extra-desc-txt">'.$strLabel.'</li>';
					}
					$tipVal .= '</ul></div>';
				} else {
                    $tipVal .= '<div style="margin-bottom:6px;width:100%;float:left;"><div class="extra-desc-lbl">'.$dispArr[$v]['Name'].'</div>';
                    $tipVal .= '<div class="extra-desc-txt">'.$dispArr[$v]['Value'].'</div></div>';
                }
			}
        $tipVal .= '</div>';
	  }
	  }
	?>
    
	<!-- Item Rating -->
	<div class="itemRatingBlock">
		<span><?php echo JText::_('K2_RATE_THIS_ITEM'); ?></span>
		<div class="itemRatingForm">   
        	<ul class="itemRatingList">
				<li class="itemCurrentRating" id="itemCurrentRating<?php echo $this->item->id; ?>" style="width:<?php echo $this->item->votingPercentage; ?>%;"></li>
				<li><a href="#" rel="<?php echo $this->item->id; ?>" title="" class="one-star">1</a></li>
				<li><a href="#" rel="<?php echo $this->item->id; ?>" title="" class="two-stars">2</a></li>
				<li><a href="#" rel="<?php echo $this->item->id; ?>" title="" class="three-stars">3</a></li>
				<li><a href="#" rel="<?php echo $this->item->id; ?>" title="" class="four-stars">4</a></li>
				<li><a href="#" rel="<?php echo $this->item->id; ?>" title="" class="five-stars">5</a></li>
			</ul>
			<div id="itemRatingLog<?php echo $this->item->id; ?>" class="itemRatingLog"><?php echo $this->item->numOfvotes; ?></div>       	
			<div class="clr"></div>
		</div>
		<div class="clr"></div>
	</div>
    <div class="itemRatingBlock" style="width:100%;float:left;">
	<span><?php echo JText::_('Eco'); ?></span>
        <div style="float:left;" class="ratingK2analysis">
            <?php 
            $PercentSel = ($totalChkVal>0 && $totalChkVal !='')?floor((100*$chkVal)/$totalChkVal):0;
            $setAct = floor($PercentSel/20);
            $setClass='';
            for ($m=0; $m<5; $m++)
            {
                if ($m < $setAct) {
                    $setClass = ' active';
                } else {
                    $setClass = '';
                }
                echo '<div class="rating-bg-div'.$setClass.'"></div>';	
            }
            ?>
        </div>
    </div>
	<?php endif; ?>	
<!-- # New Rating System End Here -->

at the bottom ive
<script type="text/javascript">
jQuery('document').ready(function(e) {	
    jQuery('.ratingK2analysis').attr('title', '<?=$tipVal?>');
    jQuery(".ratingK2analysis").tipTip();	
});
</script>

it works fine with -->
<label class="extra-title">'.$this->item->title.'</label>

but i cannot get the values-->
if (is_array($dispArr[$v]['Value']))
				{
					$cnt_valArr = count($dispArr[$v]['Value']);
					$tipVal .= '<div class="ratinglinedesc"><ul style="padding:0; margin:0;">';
					//$tipVal .= '<div class="extra-desc-lbl">'.$dispArr[$v]['Value'][0]['GrpName'].'</div>';
					$totalChkVal = $dispArr[$v]['Value'][0]['Total'];
					for ($m=0; $m<$cnt_valArr; $m++)
					{						
						$strLabel = $dispArr[$v]['Value'][$m]['Label'];
						$chkVal += $dispArr[$v]['Value'][$m]['Value'];
						$tipVal .= '<li class="extra-desc-txt">'.$strLabel.'</li>';
					}
					$tipVal .= '</ul></div>';
				}

Please Log in or Create an account to join the conversation.


Powered by Kunena Forum