field-settings key * - moduleSettingsLinkLabelMap(): field-settings key => effective label * * When a field key is unknown, the dropdown item falls back to the static * language label (trans($language_file.'.'.$link['label'])). */ trait SyncsModuleSettingsLabels { /** * Map of module "Settings" dropdown label keys (e.g. 'settings.status') * to field-settings keys (e.g. 'lead_status_id'). */ protected function moduleSettingsLinkFieldMap(): array { return []; } /** * Effective field label map (field-settings key => label) including any * user overrides saved via the CRM Settings editor. */ protected function moduleSettingsLinkLabelMap(): array { return []; } /** * Resolve the module "Settings" dropdown labels from the effective field * labels, falling back to the static language label when unavailable. */ protected function dynamicModuleSettingsLinks(): array { $map = $this->moduleSettingsLinkFieldMap(); if (empty($map)) { return $this->moduleSettingsLinks; } $labelMap = $this->moduleSettingsLinkLabelMap(); $links = []; foreach ($this->moduleSettingsLinks as $link) { $fieldKey = $map[$link['label']] ?? null; $link['label_text'] = ($fieldKey !== null && isset($labelMap[$fieldKey])) ? $labelMap[$fieldKey] : null; $links[] = $link; } return $links; } public function index(Request $request) { \View::share('moduleSettingsLinks', $this->dynamicModuleSettingsLinks()); return parent::index($request); } }