From 1714a2cf1eb6543bf0531990cd52b9fb8eb06dcf Mon Sep 17 00:00:00 2001
From: satish <satish.dvnk@vtiger.com>
Date: Tue, 18 Apr 2017 22:50:50 +0530
Subject: [PATCH] Fixes #444 - vt7 dev release - picklist color in Edit /
 Create view

---
 layouts/v7/modules/Vtiger/resources/Field.js  | 49 +++++++++++++++++++
 .../modules/Vtiger/uitypes/MultiPicklist.tpl  |  2 +-
 .../v7/modules/Vtiger/uitypes/Picklist.tpl    |  2 +-
 modules/Vtiger/models/Field.php               |  6 +++
 4 files changed, 57 insertions(+), 2 deletions(-)

diff --git a/layouts/v7/modules/Vtiger/resources/Field.js b/layouts/v7/modules/Vtiger/resources/Field.js
index c8fce927a..55043e606 100644
--- a/layouts/v7/modules/Vtiger/resources/Field.js
+++ b/layouts/v7/modules/Vtiger/resources/Field.js
@@ -245,14 +245,39 @@ Vtiger_Field_Js('Vtiger_Picklist_Field_Js',{},{
 		if(typeof pickListValues[' '] == 'undefined' || pickListValues[' '].length <= 0 || pickListValues[' '] != 'Select an Option') {
 			html += '<option value="">Select an Option</option>';
 		}
+
+		var data = this.getData();
+		var picklistColors = data['picklistColors'];
+
+		var fieldName = this.getName();
 		for(var option in pickListValues) {
 			html += '<option value="'+option+'" ';
+
+			var className = '';
+			if (picklistColors[option]) {
+				className = 'picklistColor_'+fieldName+'_'+option.replace(' ', '_');
+				html += 'class="'+className+'"';
+			}
+
 			if(option == selectedOption) {
 				html += ' selected ';
 			}
 			html += '>'+pickListValues[option]+'</option>';
 		}
 		html +='</select>';
+
+		if (picklistColors) {
+			html +='<style type="text/css">';
+			for(option in picklistColors) {
+				var picklistColor = picklistColors[option];
+				if (picklistColor) {
+					className = '.picklistColor_'+fieldName+'_'+option.replace(' ', '_');
+					html += className+'{background-color: '+picklistColor+' !important;}';
+				}
+			}
+			html +='<\style>';
+		}
+
 		var selectContainer = jQuery(html);
 		this.addValidationToElement(selectContainer);
 		return selectContainer;
@@ -319,14 +344,38 @@ Vtiger_Field_Js('Vtiger_Multipicklist_Field_Js',{},{
 		var selectedOption = app.htmlDecode(this.getValue());
 		var selectedOptionsArray = this.getSelectedOptions(selectedOption);
 
+		var data = this.getData();
+		var picklistColors = data['picklistColors'];
+
+		var fieldName = this.getName();
 		for(var option in pickListValues) {
 			html += '<option value="'+option+'" ';
+
+			var className = '';
+			if (picklistColors[option]) {
+				className = 'picklistColor_'+fieldName+'_'+option.replace(' ', '_');
+				html += 'class="'+className+'"';
+			}
+
 			if(jQuery.inArray(option,selectedOptionsArray) != -1){
 				html += ' selected ';
 			}
 			html += '>'+pickListValues[option]+'</option>';
 		}
 		html +='</select>';
+
+		if (picklistColors) {
+			html +='<style type="text/css">';
+			for(option in picklistColors) {
+				var picklistColor = picklistColors[option];
+				if (picklistColor) {
+					className = '.picklistColor_'+fieldName+'_'+option.replace(' ', '_');
+					html += className+'{background-color: '+picklistColor+' !important;}';
+				}
+			}
+			html +='<\style>';
+		}
+
 		var selectContainer = jQuery(html);
 		this.addValidationToElement(selectContainer);
 		return selectContainer;
diff --git a/layouts/v7/modules/Vtiger/uitypes/MultiPicklist.tpl b/layouts/v7/modules/Vtiger/uitypes/MultiPicklist.tpl
index c9a94e8cb..2a35d33f8 100644
--- a/layouts/v7/modules/Vtiger/uitypes/MultiPicklist.tpl
+++ b/layouts/v7/modules/Vtiger/uitypes/MultiPicklist.tpl
@@ -14,7 +14,7 @@
 	{assign var="FIELD_INFO" value=$FIELD_MODEL->getFieldInfo()}
 	{assign var="SPECIAL_VALIDATOR" value=$FIELD_MODEL->getValidator()}
 	{assign var="FIELD_VALUE_LIST" value=explode(' |##| ',$FIELD_MODEL->get('fieldvalue'))}
-	{assign var=PICKLIST_COLORS value=$FIELD_MODEL->getPicklistColors()}
+	{assign var=PICKLIST_COLORS value=$FIELD_INFO['picklistColors']}
 	<input type="hidden" name="{$FIELD_MODEL->getFieldName()}" value=""  data-fieldtype="multipicklist"/>
 	<select id="{$MODULE}_{$smarty.request.view}_fieldName_{$FIELD_MODEL->getFieldName()}" multiple class="select2" name="{$FIELD_MODEL->getFieldName()}[]" data-fieldtype="multipicklist" style='width:210px;height:30px;' 
 			{if $FIELD_INFO["mandatory"] eq true} data-rule-required="true" {/if}
diff --git a/layouts/v7/modules/Vtiger/uitypes/Picklist.tpl b/layouts/v7/modules/Vtiger/uitypes/Picklist.tpl
index 7eb5c880a..cceae5116 100644
--- a/layouts/v7/modules/Vtiger/uitypes/Picklist.tpl
+++ b/layouts/v7/modules/Vtiger/uitypes/Picklist.tpl
@@ -11,7 +11,7 @@
 {assign var="FIELD_INFO" value=$FIELD_MODEL->getFieldInfo()}
 {assign var=PICKLIST_VALUES value=$FIELD_MODEL->getPicklistValues()}
 {assign var="SPECIAL_VALIDATOR" value=$FIELD_MODEL->getValidator()}
-{assign var=PICKLIST_COLORS value=$FIELD_MODEL->getPicklistColors()}
+{assign var=PICKLIST_COLORS value=$FIELD_INFO['picklistColors']}
 <select data-fieldname="{$FIELD_MODEL->getFieldName()}" data-fieldtype="picklist" class="inputElement select2 {if $OCCUPY_COMPLETE_WIDTH} row {/if}" type="picklist" name="{$FIELD_MODEL->getFieldName()}" {if !empty($SPECIAL_VALIDATOR)}data-validator='{Zend_Json::encode($SPECIAL_VALIDATOR)}'{/if} data-selected-value='{$FIELD_MODEL->get('fieldvalue')}'
 	{if $FIELD_INFO["mandatory"] eq true} data-rule-required="true" {/if}
 	{if count($FIELD_INFO['validator'])}
diff --git a/modules/Vtiger/models/Field.php b/modules/Vtiger/models/Field.php
index c838a9b9b..e7ab867b9 100644
--- a/modules/Vtiger/models/Field.php
+++ b/modules/Vtiger/models/Field.php
@@ -538,6 +538,12 @@ class Vtiger_Field_Model extends Vtiger_Field {
 			} else {
 				$this->fieldInfo['picklistvalues'] = array();
 			}
+
+			$this->fieldInfo['picklistColors'] = array();
+			$picklistColors = $this->getPicklistColors();
+			if ($picklistColors) {
+				$this->fieldInfo['picklistColors'] = $picklistColors;
+			}
 		}
 
 		if($fieldDataType === 'currencyList'){
-- 
GitLab