diff --git a/include/ListView/ListViewController.php b/include/ListView/ListViewController.php index ccc648e90cf4e447b3c132095bad43438ae5bf77..c496d13eb429bcd4e59bcf4118671fbf3ee06f16 100644 --- a/include/ListView/ListViewController.php +++ b/include/ListView/ListViewController.php @@ -57,7 +57,7 @@ class ListViewController { $isRoleBased = vtws_isRoleBasedPicklist($name); $this->picklistRoleMap[$name] = $isRoleBased; if ($this->picklistRoleMap[$name]) { - $this->picklistValueMap[$name] = getAssignedPicklistValues($name,$this->user->roleid, $this->db); + $this->picklistValueMap[$name] = getAllPickListValues($name,$this->user->roleid, $this->db); } } @@ -339,11 +339,6 @@ class ListViewController { if($module == 'Calendar' && ($fieldName == 'taskstatus' || $fieldName == 'eventstatus' || $fieldName == 'activitytype')) { $value = Vtiger_Language_Handler::getTranslatedString($value,$module); $value = textlength_check($value); - } - else if ($value != '' && !$is_admin && $this->picklistRoleMap[$fieldName] && - !in_array($value, $this->picklistValueMap[$fieldName]) && strtolower($value) != '--none--' && strtolower($value) != 'none' ) { - $value = "<font color='red'>". Vtiger_Language_Handler::getTranslatedString('LBL_NOT_ACCESSIBLE', - $module)."</font>"; } else { $value = Vtiger_Language_Handler::getTranslatedString($value,$module); $value = textlength_check($value); @@ -440,33 +435,7 @@ class ListViewController { } elseif($field->getUIType() == 98) { $value = '<a href="index.php?module=Roles&parent=Settings&view=Edit&record='.$value.'">'.textlength_check(getRoleName($value)).'</a>'; } elseif($fieldDataType == 'multipicklist') { - if(!$is_admin && $value != '') { - $valueArray = ($rawValue != "") ? explode(' |##| ',$rawValue) : array(); - $notaccess = '<font color="red">'.getTranslatedString('LBL_NOT_ACCESSIBLE', - $module)."</font>"; - $tmp = ''; - $tmpArray = array(); - foreach($valueArray as $index => $val) { - $val = decode_html($val); - if(!$listview_max_textlength || - !(strlen(preg_replace("/(<\/?)(\w+)([^>]*>)/i","",$tmp)) > - $listview_max_textlength)) { - if (!$is_admin && $this->picklistRoleMap[$fieldName] && - !in_array(trim($val), $this->picklistValueMap[$fieldName])) { - $tmpArray[] = $notaccess; - $tmp .= ', '.$notaccess; - } else { - $tmpArray[] = $val; - $tmp .= ', '.$val; - } - } else { - $tmpArray[] = '...'; - $tmp .= '...'; - } - } - $value = implode(', ', $tmpArray); - $value = textlength_check($value); - } else if ($value != '') { + if ($value != '') { $moduleName = getTabModuleName($field->getTabId()); $value = explode(' |##| ', $value); foreach ($value as $key => $val) { diff --git a/languages/en_us/Settings/Picklist.php b/languages/en_us/Settings/Picklist.php index d765d3e1f635b4c9b5ed8edf8cc0f60b04ff3ec3..881663a0ce30ff9b5c13f5c69bd8d3d3129ea198 100644 --- a/languages/en_us/Settings/Picklist.php +++ b/languages/en_us/Settings/Picklist.php @@ -24,7 +24,8 @@ $languageStrings = array( 'LBL_DELETE_PICKLIST_ITEMS' => 'Delete PickList Items', 'LBL_ITEMS_TO_DELETE' => 'Items to Delete', 'LBL_REPLACE_IT_WITH' => 'Replace it with', - 'LBL_ASSIGN_TO_ROLE' => 'Assign to Role', + 'LBL_ASSIGN_TO_ROLE' => 'Who can assign this value to a record?', + 'LBL_ASSIGN_TO_ROLE_INFO' => 'Only users with selected roles will be able to assign this value to a record. Once assigned, all users with access to record can view the value. The value will be available for selection to all users in list filters', 'LBL_ALL_ROLES' => 'All Roles', 'LBL_CHOOSE_ROLES' => 'Choose Roles', 'LBL_ALL_VALUES' => 'All values', diff --git a/layouts/v7/modules/Settings/Picklist/CreateView.tpl b/layouts/v7/modules/Settings/Picklist/CreateView.tpl index c0b16e443b42f7d1caf25b991bc6a77910853c20..19ab0849034891651a3bb6f6e47a9ce3d7394f0f 100644 --- a/layouts/v7/modules/Settings/Picklist/CreateView.tpl +++ b/layouts/v7/modules/Settings/Picklist/CreateView.tpl @@ -25,24 +25,32 @@ {include file="ModalHeader.tpl"|vtemplate_path:$MODULE TITLE=$HEADER_TITLE} <div class="modal-body"> <div class="form-group"> - <div class="control-label col-sm-3 col-xs-3">{vtranslate('LBL_ITEM_VALUE',$QUALIFIED_MODULE)} <span class="redColor">*</span></div> + <div class="control-label col-sm-4 col-xs-4">{vtranslate('LBL_ITEM_VALUE',$QUALIFIED_MODULE)} <span class="redColor">*</span></div> <div class="controls col-sm-3 col-xs-3"><input style="min-width: 220px;" name="newValue" class="form-control select2" data-rule-required="true"/></div> </div> {if $SELECTED_PICKLIST_FIELDMODEL->isRoleBased()} <div class="form-group"> - <div class="control-label col-sm-3 col-xs-3">{vtranslate('LBL_ASSIGN_TO_ROLE',$QUALIFIED_MODULE)}</div> + <div class="control-label col-sm-4 col-xs-4"> + {vtranslate('LBL_ASSIGN_TO_ROLE',$QUALIFIED_MODULE)} + <span class="input-info-addon cursorPointer"> + <i class="fa fa-info-circle" data-toggle="tooltip" data-placement="bottom" title="{vtranslate('LBL_ASSIGN_TO_ROLE_INFO',$QUALIFIED_MODULE)}"></i> + </span> + </div> <div class="controls col-sm-3 col-xs-3"> <select class="rolesList form-control" name="rolesSelected[]" multiple style="min-width: 220px" data-placeholder="{vtranslate('LBL_CHOOSE_ROLES',$QUALIFIED_MODULE)}"> <option value="all" selected>{vtranslate('LBL_ALL_ROLES',$QUALIFIED_MODULE)}</option> {foreach from=$ROLES_LIST item=ROLE} <option value="{$ROLE->get('roleid')}">{$ROLE->get('rolename')}</option> {/foreach} - </select> + </select> + </div> + <div class="input-info-addon cursorPointer" style='line-height: 2;'> + <i class="fa fa-info-circle" data-toggle="tooltip" data-placement="bottom" title="{vtranslate('LBL_ASSIGN_TO_ROLE_INFO',$QUALIFIED_MODULE)}"></i> </div> </div> {/if} <div class="form-group"> - <div class="control-label col-sm-3 col-xs-3">{vtranslate('LBL_SELECT_COLOR', $QUALIFIED_MODULE)}</div> + <div class="control-label col-sm-4 col-xs-4">{vtranslate('LBL_SELECT_COLOR', $QUALIFIED_MODULE)}</div> <div class="controls col-sm-3 col-xs-3"> <input type="hidden" name="selectedColor" /> <div class="colorPicker"> diff --git a/layouts/v7/modules/Vtiger/resources/AdvanceFilter.js b/layouts/v7/modules/Vtiger/resources/AdvanceFilter.js index b49f4b5b8fa9ca19e88108f011c86ef277374163..38383c60844494473fe149eecef4e7a322e49e3e 100644 --- a/layouts/v7/modules/Vtiger/resources/AdvanceFilter.js +++ b/layouts/v7/modules/Vtiger/resources/AdvanceFilter.js @@ -675,6 +675,12 @@ Vtiger_Currencylist_Field_Js('AdvanceFilter_Currencylist_Field_Js',{},{ Vtiger_Picklist_Field_Js('AdvanceFilter_Picklist_Field_Js',{},{ + /** + * Function to get the picklist values + */ + getPickListValues : function() { + return this.get('picklistvalues'); + }, getUi : function(){ var comparatorSelectedOptionVal = this.get('comparatorElementVal'); if(comparatorSelectedOptionVal == 'e' || comparatorSelectedOptionVal =='n'){ @@ -716,6 +722,12 @@ Vtiger_Picklist_Field_Js('AdvanceFilter_Picklist_Field_Js',{},{ Vtiger_Multipicklist_Field_Js('AdvanceFilter_Multipicklist_Field_Js',{},{ + /** + * Function to get the picklist values + */ + getPickListValues : function() { + return this.get('picklistvalues'); + }, getSelectedOptions : function(selectedOption){ var valueArray = selectedOption.split(','); var selectedOptionsArray = []; diff --git a/layouts/v7/modules/Vtiger/resources/Field.js b/layouts/v7/modules/Vtiger/resources/Field.js index 75a0fc4936eae69926373fa02aa8e7bc7dfdb639..a9bd9ee360a3bc582dfb05b41e44ce78f63c0a38 100644 --- a/layouts/v7/modules/Vtiger/resources/Field.js +++ b/layouts/v7/modules/Vtiger/resources/Field.js @@ -229,7 +229,7 @@ Vtiger_Field_Js('Vtiger_Picklist_Field_Js',{},{ * @return <object> key value pair of options */ getPickListValues : function() { - return this.get('picklistvalues'); + return this.get('editablepicklistvalues'); }, /** @@ -469,7 +469,7 @@ Vtiger_Field_Js('Vtiger_Owner_Field_Js',{},{ * Function to get the picklist values */ getPickListValues : function() { - return this.get('picklistvalues'); + return this.get('editablepicklistvalues'); }, getUi : function() { diff --git a/layouts/v7/modules/Vtiger/uitypes/MultiPicklist.tpl b/layouts/v7/modules/Vtiger/uitypes/MultiPicklist.tpl index bf1e30c8f8a44310ada4a6b8854cef1821411f0e..6a3b0aa03af145d8cf9cf14075134d11da5f14e6 100644 --- a/layouts/v7/modules/Vtiger/uitypes/MultiPicklist.tpl +++ b/layouts/v7/modules/Vtiger/uitypes/MultiPicklist.tpl @@ -13,7 +13,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_VALUES value=$FIELD_INFO['picklistvalues']} + {assign var=PICKLIST_VALUES value=$FIELD_INFO['editablepicklistvalues']} {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;' diff --git a/layouts/v7/modules/Vtiger/uitypes/Picklist.tpl b/layouts/v7/modules/Vtiger/uitypes/Picklist.tpl index 0ab5518e2b71ca4847d4a700cf25553214709178..a508a0ed75839e7b2d39fdb52e98291b2e5d6095 100644 --- a/layouts/v7/modules/Vtiger/uitypes/Picklist.tpl +++ b/layouts/v7/modules/Vtiger/uitypes/Picklist.tpl @@ -10,7 +10,7 @@ {strip} {assign var="FIELD_INFO" value=$FIELD_MODEL->getFieldInfo()} {assign var="SPECIAL_VALIDATOR" value=$FIELD_MODEL->getValidator()} -{assign var=PICKLIST_VALUES value=$FIELD_INFO['picklistvalues']} +{assign var=PICKLIST_VALUES value=$FIELD_INFO['editablepicklistvalues']} {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} diff --git a/layouts/v7/modules/Vtiger/uitypes/Salutation.tpl b/layouts/v7/modules/Vtiger/uitypes/Salutation.tpl index 864bc972b37e9c47387bd08526c4011ced7d477a..cf98283d12e9e37ac256dfbdbff1ca48ff9c2e5a 100644 --- a/layouts/v7/modules/Vtiger/uitypes/Salutation.tpl +++ b/layouts/v7/modules/Vtiger/uitypes/Salutation.tpl @@ -9,7 +9,7 @@ {strip} {if $SALUTATION_FIELD_MODEL} - {assign var=PICKLIST_VALUES value=$SALUTATION_FIELD_MODEL->getPicklistValues()} + {assign var=PICKLIST_VALUES value=$SALUTATION_FIELD_MODEL->getEditablePicklistValues()} {assign var="SALUTATION_VALIDATOR" value=$SALUTATION_FIELD_MODEL->getValidator()} <select class="inputElement select2" style="width:78px;" name="{$SALUTATION_FIELD_MODEL->get('name')}" > {if $SALUTATION_FIELD_MODEL->isEmptyPicklistOptionAllowed()}<option value="">{vtranslate('LBL_NONE', $MODULE)}</option>{/if} diff --git a/modules/Calendar/models/DetailRecordStructure.php b/modules/Calendar/models/DetailRecordStructure.php index 87821fe0104fa80cd39c12aa06e999f0a4210c5f..c86ea71416634d0ad6728f76d1745eb08c012f6a 100644 --- a/modules/Calendar/models/DetailRecordStructure.php +++ b/modules/Calendar/models/DetailRecordStructure.php @@ -45,32 +45,6 @@ class Calendar_DetailRecordStructure_Model extends Vtiger_DetailRecordStructure_ if(!$currentUsersModel->isAdminUser() && ($fieldModel->getFieldDataType() == 'picklist' || $fieldModel->getFieldDataType() == 'multipicklist')) { $value = decode_html($value); $this->setupAccessiblePicklistValueList($fieldName); - if($fieldModel->getFieldDataType() == 'picklist') { - if ($value != '' && $this->picklistRoleMap[$fieldName] && !in_array($value, $this->picklistValueMap[$fieldName]) && strtolower($value) != '--none--' && strtolower($value) != 'none' ) { - $value = "<font color='red'>". vtranslate('LBL_NOT_ACCESSIBLE', - $moduleModel->getName())."</font>"; - } - } - if($fieldModel->getFieldDataType() == 'multipicklist') { - if(!$currentUsersModel->isAdminUser() && $value != '') { - $valueArray = ($value != "") ? explode(' |##| ',$value) : array(); - $notaccess = '<font color="red">'. vtranslate('LBL_NOT_ACCESSIBLE', - $moduleModel->getName())."</font>"; - $tmp = ''; - $tmpArray = array(); - foreach($valueArray as $val) { - if (!$currentUsersModel->isAdminUser() && $this->picklistRoleMap[$fieldName] && - !in_array(trim($val), $this->picklistValueMap[$fieldName])) { - $tmpArray[] = $notaccess; - $tmp .= ', '.$notaccess; - } else { - $tmpArray[] = $val; - $tmp .= ', '.$val; - } - } - $value = implode(' |##| ', $tmpArray); - } - } } $fieldModel->set('fieldvalue', $value); } @@ -82,15 +56,4 @@ class Calendar_DetailRecordStructure_Model extends Vtiger_DetailRecordStructure_ $this->structuredValues = $values; return $values; } - - public function setupAccessiblePicklistValueList($name) { - $db = PearDatabase::getInstance(); - $currentUsersModel = Users_Record_Model::getCurrentUserModel(); - $roleId = $currentUsersModel->getRole(); - $isRoleBased = vtws_isRoleBasedPicklist($name); - $this->picklistRoleMap[$name] = $isRoleBased; - if ($this->picklistRoleMap[$name]) { - $this->picklistValueMap[$name] = getAssignedPicklistValues($name,$roleId, $db); - } - } } \ No newline at end of file diff --git a/modules/HelpDesk/models/Module.php b/modules/HelpDesk/models/Module.php index 7f82378012e17cef4242631fc027c3b3a5d1e8d5..f933f9c3b1a04ea0c467dba2dbed736f110bb04a 100644 --- a/modules/HelpDesk/models/Module.php +++ b/modules/HelpDesk/models/Module.php @@ -65,11 +65,9 @@ class HelpDesk_Module_Model extends Vtiger_Module_Model { $db = PearDatabase::getInstance(); //TODO need to handle security $params = array(); - if(vtws_isRoleBasedPicklist('ticketstatus')) { - $currentUserModel = Users_Record_Model::getCurrentUserModel(); - $picklistvaluesmap = getAssignedPicklistValues("ticketstatus",$currentUserModel->getRole(), $db); - if(in_array('Open', $picklistvaluesmap)) $params[] = 'Open'; - } + $picklistvaluesmap = getAllPickListValues("ticketstatus"); + if(in_array('Open', $picklistvaluesmap)) $params[] = 'Open'; + if(count($params) > 0) { $result = $db->pquery('SELECT count(*) AS count, COALESCE(vtiger_groups.groupname,concat(vtiger_users.first_name, " " ,vtiger_users.last_name)) as name, COALESCE(vtiger_groups.groupid,vtiger_users.id) as id FROM vtiger_troubletickets INNER JOIN vtiger_crmentity ON vtiger_troubletickets.ticketid = vtiger_crmentity.crmid @@ -107,11 +105,10 @@ class HelpDesk_Module_Model extends Vtiger_Module_Model { $params[] = $dateFilter['start']; $params[] = $dateFilter['end']; } - if(vtws_isRoleBasedPicklist('ticketstatus')) { - $currentUserModel = Users_Record_Model::getCurrentUserModel(); - $picklistvaluesmap = getAssignedPicklistValues("ticketstatus",$currentUserModel->getRole(), $db); - foreach($picklistvaluesmap as $picklistValue) $params[] = $picklistValue; - } + $picklistvaluesmap = getAllPickListValues("ticketstatus"); + foreach($picklistvaluesmap as $picklistValue) { + $params[] = $picklistValue; + } $result = $db->pquery('SELECT COUNT(*) as count, CASE WHEN vtiger_troubletickets.status IS NULL OR vtiger_troubletickets.status = "" THEN "" ELSE vtiger_troubletickets.status END AS statusvalue FROM vtiger_troubletickets INNER JOIN vtiger_crmentity ON vtiger_troubletickets.ticketid = vtiger_crmentity.crmid AND vtiger_crmentity.deleted=0 diff --git a/modules/Leads/models/Module.php b/modules/Leads/models/Module.php index 2f3126412e0792089babc7304bcb6c1a28026ee7..d64ae21b5ca3b05152580ec7057ac341658fe0fc 100644 --- a/modules/Leads/models/Module.php +++ b/modules/Leads/models/Module.php @@ -143,10 +143,9 @@ class Leads_Module_Model extends Vtiger_Module_Model { $params[] = $dateFilter['start']; $params[] = $dateFilter['end']; } - if(vtws_isRoleBasedPicklist('leadstatus')) { - $currentUserModel = Users_Record_Model::getCurrentUserModel(); - $picklistvaluesmap = getAssignedPicklistValues("leadstatus",$currentUserModel->getRole(), $db); - foreach($picklistvaluesmap as $picklistValue) $params[] = $picklistValue; + $picklistvaluesmap = getAllPickListValues("leadstatus"); + foreach($picklistvaluesmap as $picklistValue) { + $params[] = $picklistValue; } $result = $db->pquery('SELECT COUNT(*) as count, CASE WHEN vtiger_leadstatus.leadstatus IS NULL OR vtiger_leadstatus.leadstatus = "" THEN "" ELSE @@ -192,10 +191,9 @@ class Leads_Module_Model extends Vtiger_Module_Model { $params[] = $dateFilter['start']; $params[] = $dateFilter['end']; } - if(vtws_isRoleBasedPicklist('leadsource')) { - $currentUserModel = Users_Record_Model::getCurrentUserModel(); - $picklistvaluesmap = getAssignedPicklistValues("leadsource",$currentUserModel->getRole(), $db); - foreach($picklistvaluesmap as $picklistValue) $params[] = $picklistValue; + $picklistvaluesmap = getAllPickListValues("leadsource"); + foreach($picklistvaluesmap as $picklistValue) { + $params[] = $picklistValue; } $result = $db->pquery('SELECT COUNT(*) as count, CASE WHEN vtiger_leaddetails.leadsource IS NULL OR vtiger_leaddetails.leadsource = "" THEN "" @@ -240,10 +238,9 @@ class Leads_Module_Model extends Vtiger_Module_Model { $params[] = $dateFilter['start']; $params[] = $dateFilter['end']; } - if(vtws_isRoleBasedPicklist('industry')) { - $currentUserModel = Users_Record_Model::getCurrentUserModel(); - $picklistvaluesmap = getAssignedPicklistValues("industry",$currentUserModel->getRole(), $db); - foreach($picklistvaluesmap as $picklistValue) $params[] = $picklistValue; + $picklistvaluesmap = getAllPickListValues("industry"); + foreach($picklistvaluesmap as $picklistValue) { + $params[] = $picklistValue; } $result = $db->pquery('SELECT COUNT(*) as count, CASE WHEN vtiger_leaddetails.industry IS NULL OR vtiger_leaddetails.industry = "" THEN "" diff --git a/modules/Potentials/models/Module.php b/modules/Potentials/models/Module.php index 9ea4f242bc3a1335bf6d010698e5b00f5f148f77..15616aa7cafd1bcaab982de5de4d787495cdbba0 100644 --- a/modules/Potentials/models/Module.php +++ b/modules/Potentials/models/Module.php @@ -61,11 +61,10 @@ class Potentials_Module_Model extends Vtiger_Module_Model { $params[] = $dateFilter['start']; $params[] = $dateFilter['end']; } - if(vtws_isRoleBasedPicklist('sales_stage')) { - $currentUserModel = Users_Record_Model::getCurrentUserModel(); - $picklistvaluesmap = getAssignedPicklistValues("sales_stage",$currentUserModel->getRole(), $db); - unset($picklistvaluesmap['Closed Won']);unset($picklistvaluesmap['Closed Lost']); - foreach($picklistvaluesmap as $picklistValue) $params[] = $picklistValue; + $picklistvaluesmap = getAllPickListValues("sales_stage"); + unset($picklistvaluesmap['Closed Won']);unset($picklistvaluesmap['Closed Lost']); + foreach($picklistvaluesmap as $picklistValue) { + $params[] = $picklistValue; } $result = $db->pquery('SELECT COUNT(*) count, vtiger_potential.sales_stage FROM vtiger_potential @@ -95,11 +94,11 @@ class Potentials_Module_Model extends Vtiger_Module_Model { $db = PearDatabase::getInstance(); //TODO need to handle security $params = array(); - if(vtws_isRoleBasedPicklist('sales_stage')) { - $currentUserModel = Users_Record_Model::getCurrentUserModel(); - $picklistvaluesmap = getAssignedPicklistValues("sales_stage",$currentUserModel->getRole(), $db); - foreach($picklistvaluesmap as $picklistValue) $params[] = $picklistValue; + $picklistvaluesmap = getAllPickListValues("sales_stage"); + foreach($picklistvaluesmap as $picklistValue) { + $params[] = $picklistValue; } + $result = $db->pquery('SELECT COUNT(*) AS count, concat(first_name," ",last_name) as last_name, vtiger_potential.sales_stage, vtiger_groups.groupname FROM vtiger_potential INNER JOIN vtiger_crmentity ON vtiger_potential.potentialid = vtiger_crmentity.crmid AND vtiger_crmentity.deleted = 0 LEFT JOIN vtiger_users ON vtiger_users.id=vtiger_crmentity.smownerid AND vtiger_users.status="ACTIVE" @@ -131,12 +130,10 @@ class Potentials_Module_Model extends Vtiger_Module_Model { $db = PearDatabase::getInstance(); //TODO need to handle security $params = array(); - if(vtws_isRoleBasedPicklist('sales_stage')) { - $currentUserModel = Users_Record_Model::getCurrentUserModel(); - $picklistvaluesmap = getAssignedPicklistValues("sales_stage",$currentUserModel->getRole(), $db); - unset($picklistvaluesmap['Closed Won']);unset($picklistvaluesmap['Closed Lost']); - foreach($picklistvaluesmap as $picklistValue) $params[] = $picklistValue; - } + $picklistvaluesmap = getAllPickListValues("sales_stage"); + unset($picklistvaluesmap['Closed Won']);unset($picklistvaluesmap['Closed Lost']); + foreach($picklistvaluesmap as $picklistValue) $params[] = $picklistValue; + $result = $db->pquery('SELECT sum(amount) AS amount, concat(first_name," ",last_name) as last_name, vtiger_potential.sales_stage FROM vtiger_potential INNER JOIN vtiger_crmentity ON vtiger_potential.potentialid = vtiger_crmentity.crmid INNER JOIN vtiger_users ON vtiger_users.id=vtiger_crmentity.smownerid AND vtiger_users.status="ACTIVE" @@ -302,10 +299,7 @@ class Potentials_Module_Model extends Vtiger_Module_Model { //$currentUser = Users_Record_Model::getCurrentUserModel(); $db = PearDatabase::getInstance(); - if(vtws_isRoleBasedPicklist('sales_stage')) { - $currentUserModel = Users_Record_Model::getCurrentUserModel(); - $picklistValues = getAssignedPicklistValues("sales_stage",$currentUserModel->getRole(), $db); - } + $picklistValues = getAllPickListValues("sales_stage"); $data = array(); foreach ($picklistValues as $key => $picklistValue) { $result = $db->pquery('SELECT SUM(amount) AS amount FROM vtiger_potential diff --git a/modules/Reports/ReportUtils.php b/modules/Reports/ReportUtils.php index dc0bf74408a7a57556744a15307a00c864859d40..bbd40c0fd41ad3678a77608806175770fa8b59b8 100644 --- a/modules/Reports/ReportUtils.php +++ b/modules/Reports/ReportUtils.php @@ -202,30 +202,13 @@ function getReportFieldValue ($report, $picklistArray, $dbField, $valueArray, $f $fieldvalue = $value; } } elseif( $fieldType == "picklist" && !empty($value) ) { - if(is_array($picklistArray)) { - if(is_array($picklistArray[$dbField->name]) && - $field->getFieldName() != 'activitytype' && !in_array( - $value, $picklistArray[$dbField->name])){ - $fieldvalue =$app_strings['LBL_NOT_ACCESSIBLE']; - } else { - $fieldvalue = getTranslatedString($value, $module); - } - } else { $fieldvalue = getTranslatedString($value, $module); - } } elseif( $fieldType == "multipicklist" && !empty($value) ) { if(is_array($picklistArray[1])) { $valueList = explode(' |##| ', $value); $translatedValueList = array(); foreach ( $valueList as $value) { - if(is_array($picklistArray[1][$dbField->name]) && !in_array( - $value, $picklistArray[1][$dbField->name])) { - $translatedValueList[] = - $app_strings['LBL_NOT_ACCESSIBLE']; - } else { - $translatedValueList[] = getTranslatedString($value, - $module); - } + $translatedValueList[] = getTranslatedString($value, $module); } } if (!is_array($picklistArray[1]) || !is_array($picklistArray[1][$dbField->name])) { diff --git a/modules/Reports/models/Chart.php b/modules/Reports/models/Chart.php index cc50b2f28be865bde5960d07fc8baf845a7139aa..9cfb3c6b78ccd30f0fcc0224f52327a520f637e7 100644 --- a/modules/Reports/models/Chart.php +++ b/modules/Reports/models/Chart.php @@ -497,9 +497,8 @@ class PieChart extends Base_Chart { $currentUserModel = Users_Record_Model::getCurrentUserModel(); $currencyRateAndSymbol = getCurrencySymbolandCRate($currentUserModel->currency_id); - if(($legendField->getFieldDataType() == 'picklist' || $legendField->getFieldDataType() == 'multipicklist') && vtws_isRoleBasedPicklist($legendField->getName())){ - $currentUserModel = Users_Record_Model::getCurrentUserModel(); - $picklistvaluesmap = getAssignedPicklistValues($legendField->getName(),$currentUserModel->getRole(), $db); + if($legendField->getFieldDataType() == 'picklist' || $legendField->getFieldDataType() == 'multipicklist'){ + $picklistvaluesmap = getAllPickListValues($legendField->getName(),$currentUserModel->getRole(), $db); } $sector = trim($sector, '`'); // remove backticks from sector @@ -596,9 +595,9 @@ class VerticalbarChart extends Base_Chart { $groupByColumnsByFieldModel = $this->getGroupbyColumnsByFieldModel(); foreach($groupByColumnsByFieldModel as $eachGroupByField) { - if($eachGroupByField->getFieldDataType() == 'picklist' && vtws_isRoleBasedPicklist($eachGroupByField->getName())){ + if($eachGroupByField->getFieldDataType() == 'picklist'){ $currentUserModel = Users_Record_Model::getCurrentUserModel(); - $picklistValueMap[$eachGroupByField->getName()] = getAssignedPicklistValues($eachGroupByField->getName(),$currentUserModel->getRole(), $db); + $picklistValueMap[$eachGroupByField->getName()] = getAllPickListValues($eachGroupByField->getName(),$currentUserModel->getRole(), $db); } } $currentUserModel = Users_Record_Model::getCurrentUserModel(); diff --git a/modules/Settings/LayoutEditor/models/Field.php b/modules/Settings/LayoutEditor/models/Field.php index 25f7b080ac42d192a1af4bdd3e6a414ad231c7c3..aa5812a1b64834bd2f5aa46b17650de7f25edf60 100644 --- a/modules/Settings/LayoutEditor/models/Field.php +++ b/modules/Settings/LayoutEditor/models/Field.php @@ -354,6 +354,20 @@ class Settings_LayoutEditor_Field_Model extends Vtiger_Field_Model { $picklistValues = array(' '=> vtranslate('LBL_SELECT_OPTION')); $fieldInfo['picklistvalues'] = $picklistValues; } + + if (isset($fieldInfo['editablepicklistvalues'])) { + if ($fieldInfo['type'] != 'multipicklist') { + $picklistValues = $fieldInfo['editablepicklistvalues']; + $emptyOption = array(' ' => vtranslate('LBL_SELECT_OPTION')); + + $picklistValues = $emptyOption + $picklistValues; + $fieldInfo['editablepicklistvalues'] = $picklistValues; + } + } else { + $picklistValues = array(' ' => vtranslate('LBL_SELECT_OPTION')); + $fieldInfo['editablepicklistvalues'] = $picklistValues; + } + //for new field we need to have all attributes $currentUser = Users_Record_Model::getCurrentUserModel(); $fieldInfo['date-format'] = $currentUser->get('date_format'); diff --git a/modules/Settings/MailConverter/models/Field.php b/modules/Settings/MailConverter/models/Field.php index 65ad41de1b0e20150bd1419a52e4d271f35eaa3f..609e4e36eb5b7947b6b9d9b3a74968da115bd1c3 100644 --- a/modules/Settings/MailConverter/models/Field.php +++ b/modules/Settings/MailConverter/models/Field.php @@ -68,6 +68,10 @@ class Settings_MailConverter_Field_Model extends Vtiger_Field_Model { return $pickListValues; } + public function getEditablePicklistValues() { + return $this->getPickListValues(); + } + public function getRadioOptions() { $fieldName = $this->getName(); if($fieldName == 'ssltype') { diff --git a/modules/Settings/Picklist/models/Field.php b/modules/Settings/Picklist/models/Field.php index 182d8054bfe09edca6b96f8949d0dd57260626a3..f7b64bd6b702fb1320bf7560e9b2737157b88028 100644 --- a/modules/Settings/Picklist/models/Field.php +++ b/modules/Settings/Picklist/models/Field.php @@ -102,7 +102,7 @@ class Settings_Picklist_Field_Model extends Vtiger_Field_Model { * @param type $fieldName -- string * @return type -- array of values */ - public static function getEditablePicklistValues($fieldName){ + public function getEditablePicklistValues($fieldName){ $cache = Vtiger_Cache::getInstance(); $EditablePicklistValues = $cache->get('EditablePicklistValues', $fieldName); if($EditablePicklistValues) { diff --git a/modules/Settings/Picklist/models/Module.php b/modules/Settings/Picklist/models/Module.php index ca39d3f3ca46914420fb2fd5303bc1564f4daf07..cc317bd83de7b4327f1df393c053c6c9bdc08360 100644 --- a/modules/Settings/Picklist/models/Module.php +++ b/modules/Settings/Picklist/models/Module.php @@ -468,7 +468,7 @@ class Settings_Picklist_Module_Model extends Vtiger_Module_Model { $db = PearDatabase::getInstance(); $picklistValues = array(); if (vtws_isRoleBasedPicklist($name)) { - $picklistValues = getAssignedPicklistValues($name, $currentUser->roleid, $db); + $picklistValues = getAllPickListValues($name, $currentUser->roleid, $db); } return $picklistValues; diff --git a/modules/Users/models/Field.php b/modules/Users/models/Field.php index 1fea24da81efe5daad3a209c53e18147c7cbe3be..c460f1c2ce6dc19e4a119c16ccad14febc408b01 100644 --- a/modules/Users/models/Field.php +++ b/modules/Users/models/Field.php @@ -92,6 +92,14 @@ class Users_Field_Model extends Vtiger_Field_Model { } return parent::getPicklistValues(); } + + /** + * Function to get all the available picklist values for the current field + * @return <Array> List of picklist values if the field is of type picklist or multipicklist, null otherwise. + */ + public function getEditablePicklistValues() { + return $this->getPicklistValues(); + } /** * Function to returns all skins(themes) diff --git a/modules/Vtiger/models/DetailRecordStructure.php b/modules/Vtiger/models/DetailRecordStructure.php index f825977a59db580f06a843fcc15b8ebfc3a592af..bab9261023f95ec3e45708a38c3681172819aaaa 100644 --- a/modules/Vtiger/models/DetailRecordStructure.php +++ b/modules/Vtiger/models/DetailRecordStructure.php @@ -41,31 +41,7 @@ class Vtiger_DetailRecordStructure_Model extends Vtiger_RecordStructure_Model { $value = $recordModel->get($fieldName); if(!$currentUsersModel->isAdminUser() && ($fieldModel->getFieldDataType() == 'picklist' || $fieldModel->getFieldDataType() == 'multipicklist')) { $value = decode_html($value); - $this->setupAccessiblePicklistValueList($fieldName); - if($fieldModel->getFieldDataType() == 'picklist') { - if ($value != '' && $this->picklistRoleMap[$fieldName] && !in_array($value, $this->picklistValueMap[$fieldName]) && strtolower($value) != '--none--' && strtolower($value) != 'none' ) { - $value = "<font color='red'>". vtranslate('LBL_NOT_ACCESSIBLE', - $moduleModel->getName())."</font>"; - } - } - if($fieldModel->getFieldDataType() == 'multipicklist') { - if (!$currentUsersModel->isAdminUser() && $value != '') { - $valueArray = ($value != "") ? explode(' |##| ', $value) : array(); - $notaccess = '<font color="red">'.vtranslate('LBL_NOT_ACCESSIBLE', $moduleModel->getName())."</font>"; - $tmp = ''; - $tmpArray = array(); - foreach ($valueArray as $val) { - if (!$currentUsersModel->isAdminUser() && $this->picklistRoleMap[$fieldName] && !in_array(trim($val), $this->picklistValueMap[$fieldName])) { - $tmpArray[] = $notaccess; - $tmp .= ', '.$notaccess; - } else { - $tmpArray[] = $val; - $tmp .= ', '.$val; - } - } - $value = implode(' |##| ', $tmpArray); - } - } + $this->setupAccessiblePicklistValueList($fieldModel); } $fieldModel->set('fieldvalue', $value); } @@ -78,14 +54,15 @@ class Vtiger_DetailRecordStructure_Model extends Vtiger_RecordStructure_Model { return $values; } - public function setupAccessiblePicklistValueList($name) { + public function setupAccessiblePicklistValueList($fieldModel) { $db = PearDatabase::getInstance(); $currentUsersModel = Users_Record_Model::getCurrentUserModel(); $roleId = $currentUsersModel->getRole(); + $name = $fieldModel->getName(); $isRoleBased = vtws_isRoleBasedPicklist($name); $this->picklistRoleMap[$name] = $isRoleBased; if ($this->picklistRoleMap[$name]) { - $this->picklistValueMap[$name] = getAssignedPicklistValues($name, $roleId, $db); + $this->picklistValueMap[$name] = $fieldModel->getPicklistValues(); } } diff --git a/modules/Vtiger/models/Field.php b/modules/Vtiger/models/Field.php index dea6331f1ad960e05fa95b4e421713af95377e1d..3f51052850b729154bc7228fddbc5ed25b7b4900 100644 --- a/modules/Vtiger/models/Field.php +++ b/modules/Vtiger/models/Field.php @@ -264,22 +264,53 @@ class Vtiger_Field_Model extends Vtiger_Field { if($fieldName == 'hdnTaxType' || ($fieldName == 'region_id' && $this->get('displaytype') == 5)) return null; - if($fieldDataType == 'picklist' || $fieldDataType == 'multipicklist') { - $fieldPickListValues = array(); - $currentUser = Users_Record_Model::getCurrentUserModel(); - if($this->isRoleBased()) { - $userModel = Users_Record_Model::getCurrentUserModel(); - $picklistValues = Vtiger_Util_Helper::getRoleBasedPicklistValues($fieldName, $userModel->get('roleid')); - }else{ - $picklistValues = Vtiger_Util_Helper::getPickListValues($fieldName); + if($fieldDataType == 'picklist' || $fieldDataType == 'multipicklist' || $fieldDataType == 'metricpicklist' || $fieldDataType == 'timestring') { + $fieldPickListValues = array(); + $picklistValues = Vtiger_Util_Helper::getPickListValues($fieldName); + + foreach($picklistValues as $value) { + $fieldPickListValues[$value] = vtranslate($value,$this->getModuleName()); } - foreach($picklistValues as $value) { - $fieldPickListValues[$value] = vtranslate($value,$this->getModuleName()); + return $fieldPickListValues; + } + return null; + } + + + /** + * Function to get all editable picklist values for the current user + * @return <Array> List of picklist values if the field is of type picklist or multipicklist, null otherwise. + */ + public function getEditablePicklistValues() { + $fieldDataType = $this->getFieldDataType(); + $fieldName = $this->getName(); + $permission = true; + + // for reference fields the field name will be in the format of (referencefieldname;(module)fieldname) + preg_match('/(\w+) ; \((\w+)\) (\w+)/', $fieldName, $matches); + if(count($matches) > 0) { + list($full, $referenceParentField, $referenceModule, $referenceFieldName) = $matches; + $fieldName = $referenceFieldName; + } + + if($fieldName == 'hdnTaxType' || ($fieldName == 'region_id' && $this->get('displaytype') == 5)) return null; + + if($fieldDataType == 'picklist' || $fieldDataType == 'multipicklist') { + $fieldPickListValues = array(); + if($this->isRoleBased()) { + $userModel = Users_Record_Model::getCurrentUserModel(); + $picklistValues = Vtiger_Util_Helper::getRoleBasedPicklistValues($fieldName, $userModel->get('roleid')); + }else{ + $picklistValues = Vtiger_Util_Helper::getPickListValues($fieldName); + } + + foreach($picklistValues as $value) { + $fieldPickListValues[$value] = vtranslate($value,$this->getModuleName()); } - return $fieldPickListValues; + return $fieldPickListValues; } return null; - } + } /** * Function to check if the current field is mandatory or not @@ -533,11 +564,18 @@ class Vtiger_Field_Model extends Vtiger_Field { if($fieldDataType == 'picklist' || $fieldDataType == 'multipicklist' || $fieldDataType == 'multiowner') { $pickListValues = $this->getPicklistValues(); + $editablePicklistValues = $this->getEditablePicklistValues(); if(!empty($pickListValues)) { $this->fieldInfo['picklistvalues'] = $pickListValues; } else { $this->fieldInfo['picklistvalues'] = array(); } + + if(!empty($editablePicklistValues)) { + $this->fieldInfo['editablepicklistvalues'] = $editablePicklistValues; + } else { + $this->fieldInfo['editablepicklistvalues'] = array(); + } $this->fieldInfo['picklistColors'] = array(); $picklistColors = $this->getPicklistColors(); diff --git a/modules/Vtiger/models/SummaryRecordStructure.php b/modules/Vtiger/models/SummaryRecordStructure.php index 9c47744ac94a24f2c7571a33ddd846ed9f652b85..216b56fa9631aff8dfd5cc7e0054ec53919aa92c 100644 --- a/modules/Vtiger/models/SummaryRecordStructure.php +++ b/modules/Vtiger/models/SummaryRecordStructure.php @@ -46,36 +46,6 @@ class Vtiger_SummaryRecordStructure_Model extends Vtiger_DetailRecordStructure_M $blockSequence = $fieldModel->block->sequence; if(!$currentUsersModel->isAdminUser() && ($fieldModel->getFieldDataType() == 'picklist' || $fieldModel->getFieldDataType() == 'multipicklist')) { $this->setupAccessiblePicklistValueList($fieldName); - $value = decode_html($fieldModel->get('fieldvalue')); - $moduleModel = $fieldModel->getModule(); - if($fieldModel->getFieldDataType() == 'picklist') { - if ($value != '' && $this->picklistRoleMap[$fieldName] && !in_array($value, $this->picklistValueMap[$fieldName]) && strtolower($value) != '--none--' && strtolower($value) != 'none' ) { - $value = '<font color="red">'. vtranslate('LBL_NOT_ACCESSIBLE', - $moduleModel->getName()).'</font>'; - $fieldModel->set('fieldvalue', $value); - } - } - if($fieldModel->getFieldDataType() == 'multipicklist') { - if(!$currentUsersModel->isAdminUser() && $value != '') { - $valueArray = ($value != "") ? explode(' |##| ',$value) : array(); - $notaccess = '<font color="red">'. vtranslate('LBL_NOT_ACCESSIBLE', - $moduleModel->getName())."</font>"; - $tmp = ''; - $tmpArray = array(); - foreach($valueArray as $val) { - if (!$currentUsersModel->isAdminUser() && $this->picklistRoleMap[$fieldName] && - !in_array(trim($val), $this->picklistValueMap[$fieldName])) { - $tmpArray[] = $notaccess; - $tmp .= ', '.$notaccess; - } else { - $tmpArray[] = $val; - $tmp .= ', '.$val; - } - } - $value = implode(' |##| ', $tmpArray); - $fieldModel->set('fieldvalue', $value); - } - } } $blockSeqSortSummaryFields[$blockSequence]['SUMMARY_FIELDS'][$fieldName] = $fieldModel; } diff --git a/pkg/vtiger/modules/EmailTemplates/modules/EmailTemplates/models/Field.php b/pkg/vtiger/modules/EmailTemplates/modules/EmailTemplates/models/Field.php index 70328297963921c9e2e83b3634370d0c73045cc2..0d33c981f71c22226443b156f0f05e0f02cbdb32 100644 --- a/pkg/vtiger/modules/EmailTemplates/modules/EmailTemplates/models/Field.php +++ b/pkg/vtiger/modules/EmailTemplates/modules/EmailTemplates/models/Field.php @@ -49,5 +49,9 @@ class EmailTemplates_Field_Model extends Vtiger_Field_Model { public function isNameField() { return false; } + + public function getEditablePicklistValues() { + return $this->getPicklistValues(); + } } \ No newline at end of file diff --git a/pkg/vtiger/modules/Webforms/settings/models/Field.php b/pkg/vtiger/modules/Webforms/settings/models/Field.php index 42d3e185258d2e520c9cfb638c960cdd4a6f856c..eb1383223bf927ea6bdd7fe19072ef4ed5b995de 100644 --- a/pkg/vtiger/modules/Webforms/settings/models/Field.php +++ b/pkg/vtiger/modules/Webforms/settings/models/Field.php @@ -73,6 +73,14 @@ class Settings_Webforms_Field_Model extends Vtiger_Field_Model { } return array(); } + + /** + * Function to get Editable Picklist values + * @return <Array> Editable Picklist values + */ + public function getEditablePicklistValues() { + return $this->getPicklistValues(); + } public function getDisplayValue($value) { if ($this->getName() === 'enabled') { diff --git a/pkg/vtiger/modules/Webforms/settings/models/ModuleField.php b/pkg/vtiger/modules/Webforms/settings/models/ModuleField.php index 15a4912f2f01f8d65d7d3a882848fb0c0e2d1167..23cf0f564c63fcf9fd153a83787e4dcfc5872ec6 100644 --- a/pkg/vtiger/modules/Webforms/settings/models/ModuleField.php +++ b/pkg/vtiger/modules/Webforms/settings/models/ModuleField.php @@ -41,6 +41,7 @@ class Settings_Webforms_ModuleField_Model extends Vtiger_Field_Model { $pickListValues = $this->getPicklistValues(); if(!empty($pickListValues)) { $fieldInfo['picklistvalues'] = $pickListValues; + $fieldInfo['editablepicklistvalues'] = $pickListValues; } if($this->getFieldDataType() == 'date' || $this->getFieldDataType() == 'datetime'){ @@ -91,7 +92,7 @@ class Settings_Webforms_ModuleField_Model extends Vtiger_Field_Model { } $pickListValues = array(); $pickListValues[""] = vtranslate("LBL_SELECT_OPTION", 'Settings:Webforms'); - return ($pickListValues + parent::getPicklistValues()); + return ($pickListValues + parent::getEditablePicklistValues()); } /**