Compare commits
	
		
			94 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| d8f1f4cbdd | |||
| 22640f02b6 | |||
| 797da77803 | |||
| 66f95f46bf | |||
| b85cbaf398 | |||
| 34b7a1c7c9 | |||
| fb2249d9bd | |||
| 614293c114 | |||
| 167166b898 | |||
| c3f802835f | |||
| 13ddf5aa13 | |||
| 225e92a51c | |||
| 60c64afcab | |||
| 49ab81ca23 | |||
| 65fe65474e | |||
| 57fae7c1c3 | |||
| cc551b0851 | |||
| 40435a16be | |||
| f783fa2373 | |||
| 8b725e5a9a | |||
| 7c3b007ff9 | |||
| f39f4a331d | |||
| 6069ac0901 | |||
| 240a55f54f | |||
| b194367eef | |||
| f293676fa5 | |||
| ba4e6668aa | |||
| 3b62ebd0ee | |||
| 198a3f0558 | |||
| 833c21346d | |||
| 4b84c99541 | |||
| 0de22b7e90 | |||
| dad1ffc746 | |||
| f6c7519a11 | |||
| 27e7e3ae2a | |||
| 5eef57f470 | |||
| d0fea802ee | |||
| 260979edcc | |||
| dbc38e8f61 | |||
| c95f8280bc | |||
| 24a8e8864f | |||
| 90c4462512 | |||
| 52f77cb342 | |||
| 5f790c73c7 | |||
| f617fc207e | |||
| 0c9707419e | |||
| 042e5853bb | |||
| 720b6f005d | |||
| cc2f03ddb3 | |||
| 2411813bd6 | |||
| d4e8991804 | |||
| 658e60f296 | |||
| 2ecef5c1dd | |||
| 92e81ee518 | |||
| d7197d7ed6 | |||
| 3458949bb0 | |||
| 9e18b3ea28 | |||
| 623e801c58 | |||
| f9d4820ac2 | |||
| 88cd511d9f | |||
| 9ee00ed738 | |||
| ff94eb8285 | |||
| cf7892ed15 | |||
| 72e7cb99c3 | |||
| 04d6525d6c | |||
| d9453c1323 | |||
| 3eba291d5a | |||
| de691b5a52 | |||
| 8cde0b8892 | |||
| cffe817ce9 | |||
| 3753b4e25c | |||
| f601890ad0 | |||
| 6dca2e98e9 | |||
| c19b7d4be8 | |||
| b6afcfe47a | |||
| 4b8872b586 | |||
| 8d2d095b8e | |||
| 0c977a7d48 | |||
| a4c02ed249 | |||
| a0e4b4028f | |||
| 5c20e83ed5 | |||
| 78b8371be9 | |||
| 48e6ae4196 | |||
| ac4e6eddd5 | |||
| b1a8534d29 | |||
| 42bf2c8e77 | |||
| 7e4acae864 | |||
| 80f86c62fd | |||
| 794bc0da68 | |||
| 892a7ae35b | |||
| 3586ef5788 | |||
| 436607a305 | |||
| c7d36df842 | |||
| 8cb50d271b | 
| @ -0,0 +1,8 @@ | ||||
| uuid: 85aacc47-8df9-4309-b7f4-f58be70f83d0 | ||||
| langcode: en | ||||
| status: true | ||||
| dependencies: {  } | ||||
| name: 'Case Provider Roles' | ||||
| vid: oc_case_provider_role | ||||
| description: '' | ||||
| weight: 0 | ||||
							
								
								
									
										8
									
								
								config/install/taxonomy.vocabulary.oc_fee_category.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								config/install/taxonomy.vocabulary.oc_fee_category.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | ||||
| uuid: 93a96bb4-da95-4d69-be37-d1477624f849 | ||||
| langcode: en | ||||
| status: true | ||||
| dependencies: {  } | ||||
| name: 'Fee categories' | ||||
| vid: oc_fee_category | ||||
| description: '' | ||||
| weight: 0 | ||||
							
								
								
									
										119
									
								
								css/opencase.css
									
									
									
									
									
								
							
							
						
						
									
										119
									
								
								css/opencase.css
									
									
									
									
									
								
							| @ -3,22 +3,62 @@ | ||||
|   display: none; | ||||
| } | ||||
|  | ||||
| /* paragraphs */ | ||||
|  | ||||
|  | ||||
| .paragraph .field { | ||||
|     width: auto; | ||||
| } | ||||
|  | ||||
| .field.field--type-entity-reference-revisions { | ||||
|     border: none; | ||||
|     padding: 0.4em; | ||||
| } | ||||
|  | ||||
| .field.field--type-entity-reference-revisions .field__item { | ||||
|     padding: 0; | ||||
| } | ||||
|  | ||||
| /* end paragraphs */ | ||||
|  | ||||
|  | ||||
| /* MOVE THIS INTO GNO! */ | ||||
| #block-accreditationcount { | ||||
|   position: absolute; | ||||
|   right: 50%; | ||||
|   /*background-color: #fff;*/ | ||||
|   background-image: linear-gradient(to top, #2a419a 0%, #1d84c3 100%); | ||||
|   border-radius: 5px; | ||||
| } | ||||
|  | ||||
| #block-accreditationcount table { | ||||
|   border: 0px #2a419a; | ||||
|   background-color: #1d84c3; | ||||
| } | ||||
|  | ||||
| #block-accreditationcount h1 { | ||||
|   color: white; | ||||
| } | ||||
|  | ||||
|  | ||||
| #block-accreditationcount td { | ||||
|   color: black; | ||||
| } | ||||
|  | ||||
| /*  */ | ||||
|  | ||||
| body { | ||||
|   font-size: 100% !important; | ||||
| } | ||||
|  | ||||
| .field--type-entity-reference-revisions .field__items { | ||||
| 	margin-left: 2em; | ||||
| .field.field--type-entity-reference { | ||||
|   margin: inherit; | ||||
| } | ||||
|  | ||||
| .field--type-entity-reference-revisions .field__items .field{ | ||||
| 	margin-top: 0; | ||||
| } | ||||
| .field--type-entity-reference-revisions .field__items .paragraph{ | ||||
| 	margin-top: 0.5em; | ||||
| 	margin-bottom: 0.5em; | ||||
| .field { | ||||
|     width: 30%; | ||||
|     display: inline-block; | ||||
|     padding: 0.4em; | ||||
| } | ||||
|  | ||||
| /* remove this confusing thing from user creation page */ | ||||
| @ -107,14 +147,6 @@ td.views-field { | ||||
|   font-weight: bold !important; | ||||
| } | ||||
|  | ||||
| /* Styling for grouped views */ | ||||
| table.views-table.views-view-table caption { | ||||
|   text-align: left; | ||||
|   margin-bottom: 1em; | ||||
|   margin-top: 2em; | ||||
|   font-weight: bold; | ||||
| } | ||||
|  | ||||
| /* remove "details" accordion, see https://drupal.stackexchange.com/questions/294312/why-has-this-details-accordion-appeared-in-this-view */ | ||||
| .views-table details { | ||||
|     display: none; | ||||
| @ -123,3 +155,58 @@ table.views-table.views-view-table caption { | ||||
| form.oc-organisation-relation-form tr:first-child { | ||||
|   display: none; | ||||
| } | ||||
|  | ||||
|  | ||||
| /* trav styling */ | ||||
| .site-branding { | ||||
| 	margin-top: -2.20em !important; | ||||
| } | ||||
|  | ||||
| .follow-ups-due td { | ||||
|   background-color: #FB8A4F; | ||||
| } | ||||
|  | ||||
| #block-accreditationcount th, | ||||
| #block-accreditationcount td { | ||||
|   border: none; | ||||
| } | ||||
|  | ||||
| #block-accreditationcount { | ||||
|   padding: 1em; | ||||
| } | ||||
|  | ||||
| tr:nth-child(even) { | ||||
|   background-color: #fefefe; | ||||
| } | ||||
|  | ||||
| tr:nth-child(odd) { | ||||
|   background-color: #eee; | ||||
| } | ||||
|  | ||||
| .Off { | ||||
| 	color:gray; | ||||
| } | ||||
|  | ||||
| .Off a { | ||||
| 	color:gray; | ||||
| } | ||||
|  | ||||
| .field--type-entity-reference-revisions { | ||||
| 	border-radius: 25px; | ||||
| 	border: 2px solid #2A419A; | ||||
| 	padding: 10px;  | ||||
| 	border-width: thin; | ||||
| } | ||||
|  | ||||
| .follow-ups-due table{ | ||||
| 	background-color: #FB8A4F; | ||||
| } | ||||
|  | ||||
| .views-field-field-client-substatus { | ||||
| 	font-weight: bold; | ||||
| }	 | ||||
|  | ||||
| thead { | ||||
| 	background-color: #1d84c3; | ||||
| }	 | ||||
|  | ||||
|  | ||||
| @ -0,0 +1,12 @@ | ||||
| opencase_cases.oc_case_fee_type.*: | ||||
|   type: config_entity | ||||
|   label: 'Case Fee type config' | ||||
|   mapping: | ||||
|     id: | ||||
|       type: string | ||||
|       label: 'ID' | ||||
|     label: | ||||
|       type: label | ||||
|       label: 'Label' | ||||
|     uuid: | ||||
|       type: string | ||||
| @ -0,0 +1,12 @@ | ||||
| opencase_cases.oc_case_provision_type.*: | ||||
|   type: config_entity | ||||
|   label: 'Case Provision type config' | ||||
|   mapping: | ||||
|     id: | ||||
|       type: string | ||||
|       label: 'ID' | ||||
|     label: | ||||
|       type: label | ||||
|       label: 'Label' | ||||
|     uuid: | ||||
|       type: string | ||||
							
								
								
									
										30
									
								
								modules/opencase_cases/oc_case_fee.page.inc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								modules/opencase_cases/oc_case_fee.page.inc
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,30 @@ | ||||
| <?php | ||||
|  | ||||
| /** | ||||
|  * @file | ||||
|  * Contains oc_case_fee.page.inc. | ||||
|  * | ||||
|  * Page callback for Case Fee entities. | ||||
|  */ | ||||
|  | ||||
| use Drupal\Core\Render\Element; | ||||
|  | ||||
| /** | ||||
|  * Prepares variables for Case Fee templates. | ||||
|  * | ||||
|  * Default template: oc_case_fee.html.twig. | ||||
|  * | ||||
|  * @param array $variables | ||||
|  *   An associative array containing: | ||||
|  *   - elements: An associative array containing the user information and any | ||||
|  *   - attributes: HTML attributes for the containing element. | ||||
|  */ | ||||
| function template_preprocess_oc_case_fee(array &$variables) { | ||||
|   // Fetch OCCaseFee Entity Object. | ||||
|   $oc_case_fee = $variables['elements']['#oc_case_fee']; | ||||
|  | ||||
|   // Helpful $content variable for templates. | ||||
|   foreach (Element::children($variables['elements']) as $key) { | ||||
|     $variables['content'][$key] = $variables['elements'][$key]; | ||||
|   } | ||||
| } | ||||
							
								
								
									
										30
									
								
								modules/opencase_cases/oc_case_provision.page.inc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								modules/opencase_cases/oc_case_provision.page.inc
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,30 @@ | ||||
| <?php | ||||
|  | ||||
| /** | ||||
|  * @file | ||||
|  * Contains oc_case_provision.page.inc. | ||||
|  * | ||||
|  * Page callback for Case Provision entities. | ||||
|  */ | ||||
|  | ||||
| use Drupal\Core\Render\Element; | ||||
|  | ||||
| /** | ||||
|  * Prepares variables for Case Provision templates. | ||||
|  * | ||||
|  * Default template: oc_case_provision.html.twig. | ||||
|  * | ||||
|  * @param array $variables | ||||
|  *   An associative array containing: | ||||
|  *   - elements: An associative array containing the user information and any | ||||
|  *   - attributes: HTML attributes for the containing element. | ||||
|  */ | ||||
| function template_preprocess_oc_case_provision(array &$variables) { | ||||
|   // Fetch OCCaseProvision Entity Object. | ||||
|   $oc_case_provision = $variables['elements']['#oc_case_provision']; | ||||
|  | ||||
|   // Helpful $content variable for templates. | ||||
|   foreach (Element::children($variables['elements']) as $key) { | ||||
|     $variables['content'][$key] = $variables['elements'][$key]; | ||||
|   } | ||||
| } | ||||
| @ -1,7 +1,7 @@ | ||||
| name: 'Opencase Cases' | ||||
| type: module | ||||
| description: 'Provides case entities and a required field on activities linking them to a case.' | ||||
| core: 8.x | ||||
| core_version_requirement: 9.x | ||||
| package: OpenCase | ||||
| dependencies: | ||||
|   0: opencase_entities | ||||
|  | ||||
							
								
								
									
										102
									
								
								modules/opencase_cases/opencase_cases.install
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								modules/opencase_cases/opencase_cases.install
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,102 @@ | ||||
| <?php | ||||
| use \Drupal\Core\Field\BaseFieldDefinition; | ||||
|  | ||||
| function opencase_cases_update_90002() { | ||||
|   $field_storage_definition = BaseFieldDefinition::create('entity_reference') | ||||
|     ->setLabel(t('Target')) | ||||
|     ->setRevisionable(TRUE) | ||||
|     ->setSetting('target_type', 'oc_actor') | ||||
|     ->setSetting('handler', 'default') | ||||
|     ->setDefaultValueCallback('\Drupal\opencase_cases\Entity\OCCase::defaultTarget') | ||||
|     ->setDisplayConfigurable('form', true) | ||||
|     ->setDisplayConfigurable('view', true); | ||||
|   | ||||
|  | ||||
|   \Drupal::entityDefinitionUpdateManager() | ||||
|     ->installFieldStorageDefinition('oc_target', 'oc_case', 'opencase_cases', $field_storage_definition); | ||||
| } | ||||
|  | ||||
| function opencase_cases_update_8025() { | ||||
|   //check if the table exists first.  If not, then create the entity. | ||||
|   if(!db_table_exists('oc_case_provision')) { | ||||
|     \Drupal::entityTypeManager()->clearCachedDefinitions(); | ||||
|     \Drupal::entityDefinitionUpdateManager() | ||||
|       ->installEntityType(\Drupal::entityTypeManager()->getDefinition('oc_case_provision')); | ||||
|   } | ||||
| } | ||||
|  | ||||
| function opencase_cases_update_8026() { | ||||
|     $storage_definition = BaseFieldDefinition::create('entity_reference') | ||||
|       ->setLabel(t('Role')) | ||||
|       ->setSetting('target_type', 'taxonomy_term') | ||||
|       ->setSetting('handler_settings', ['target_bundles' => ['oc_case_provider_role' => 'oc_case_provider_role']]) | ||||
|       ->setSetting('handler', 'default') | ||||
|       ->setTranslatable(TRUE) | ||||
|       ->setCardinality(1) | ||||
|       ->setDisplayConfigurable("view", true) | ||||
|       ->setDisplayConfigurable("form", true) | ||||
|       ->setRequired(FALSE); | ||||
|   \Drupal::entityDefinitionUpdateManager() | ||||
|     ->installFieldStorageDefinition('oc_case_provider_role', 'oc_case_provision', 'oc_case_provision', $storage_definition); | ||||
| } | ||||
|  | ||||
| function opencase_cases_update_8027() { | ||||
|   //check if the table exists first.  If not, then create the entity. | ||||
|   if(!db_table_exists('oc_case_fee')) { | ||||
|     \Drupal::entityTypeManager()->clearCachedDefinitions(); | ||||
|     \Drupal::entityDefinitionUpdateManager() | ||||
|       ->installEntityType(\Drupal::entityTypeManager()->getDefinition('oc_case_fee')); | ||||
|   } | ||||
| } | ||||
|  | ||||
| function opencase_cases_update_8028() { | ||||
|     $storage_definition =  \Drupal\Core\Field\BaseFieldDefinition::create('decimal') | ||||
|       ->setLabel(t('Amount')) | ||||
|       ->setRevisionable(TRUE) | ||||
|       ->setSettings([ | ||||
|         'prefix' => '£', | ||||
|       ]) | ||||
|       ->SetDisplayConfigurable("form", true) | ||||
|       ->SetDisplayConfigurable("view", true); | ||||
|   \Drupal::entityDefinitionUpdateManager() | ||||
|     ->installFieldStorageDefinition('amount', 'oc_case_fee', 'oc_case_fee', $storage_definition); | ||||
|     $storage_definition =  \Drupal\Core\Field\BaseFieldDefinition::create('entity_reference') | ||||
|       ->setLabel(t('Fee Category')) | ||||
|       ->setSetting('target_type', 'taxonomy_term') | ||||
|       ->setSetting('handler_settings', ['target_bundles' => ['oc_fee_category' => 'oc_fee_category']]) | ||||
|       ->setSetting('handler', 'default') | ||||
|       ->setTranslatable(TRUE) | ||||
|       ->setCardinality(1) | ||||
|       ->setDisplayConfigurable("view", true) | ||||
|       ->setDisplayConfigurable("form", true) | ||||
|       ->setRequired(FALSE); | ||||
|   \Drupal::entityDefinitionUpdateManager() | ||||
|     ->installFieldStorageDefinition('oc_fee_category', 'oc_case_fee', 'oc_case_fee', $storage_definition); | ||||
| } | ||||
|  | ||||
| function opencase_cases_update_8029() { | ||||
|     $storage_definition =  \Drupal\Core\Field\BaseFieldDefinition::create('string_long') | ||||
|       ->setRevisionable(TRUE) | ||||
|       ->setLabel(t('Notes')) | ||||
|       ->setSettings(array( | ||||
|         'default_value' => '', | ||||
|         'max_length' => 255, | ||||
|         'text_processing' => 0, | ||||
|       )) | ||||
|       ->setDisplayConfigurable('form', true) | ||||
|       ->setDisplayConfigurable('view', true); | ||||
|   \Drupal::entityDefinitionUpdateManager() | ||||
|     ->installFieldStorageDefinition('notes', 'oc_case', 'oc_case', $storage_definition); | ||||
| } | ||||
|  | ||||
| function opencase_cases_update_8030() { | ||||
|     $storage_definition =  \Drupal\Core\Field\BaseFieldDefinition::create('decimal') | ||||
|     ->setLabel(t('Total Fee')) | ||||
|     ->setRevisionable(TRUE) | ||||
|     ->setSettings([ | ||||
|       'prefix' => '£', | ||||
|     ]) | ||||
|     ->SetDisplayConfigurable("view", true); | ||||
|   \Drupal::entityDefinitionUpdateManager() | ||||
|     ->installFieldStorageDefinition('total_fee', 'oc_case', 'oc_case', $storage_definition); | ||||
| } | ||||
| @ -10,3 +10,23 @@ entity.oc_case_type.add_form: | ||||
|   appears_on: | ||||
|     - entity.oc_case_type.collection | ||||
|  | ||||
| entity.oc_case_provision.add_form: | ||||
|   route_name: entity.oc_case_provision.add_page | ||||
|   title: 'Add Case Provision' | ||||
|   appears_on: | ||||
|     - entity.oc_case_provision.collection | ||||
| entity.oc_case_provision_type.add_form: | ||||
|   route_name: entity.oc_case_provision_type.add_form | ||||
|   title: 'Add Case Provision type' | ||||
|   appears_on: | ||||
|     - entity.oc_case_provision_type.collection | ||||
| entity.oc_case_fee.add_form: | ||||
|   route_name: entity.oc_case_fee.add_page | ||||
|   title: 'Add Case Fee' | ||||
|   appears_on: | ||||
|     - entity.oc_case_fee.collection | ||||
| entity.oc_case_fee_type.add_form: | ||||
|   route_name: entity.oc_case_fee_type.add_form | ||||
|   title: 'Add Case Fee type' | ||||
|   appears_on: | ||||
|     - entity.oc_case_fee_type.collection | ||||
|  | ||||
| @ -23,3 +23,37 @@ entity.oc_case_type.collection: | ||||
|   weight: 99 | ||||
|  | ||||
|  | ||||
|  | ||||
| # Case Provision menu items definition | ||||
| entity.oc_case_provision.collection: | ||||
|   title: 'Case Provision list' | ||||
|   route_name: entity.oc_case_provision.collection | ||||
|   description: 'List Case Provision entities' | ||||
|   parent: system.admin_structure | ||||
|   weight: 100 | ||||
|  | ||||
|  | ||||
| # Case Provision type menu items definition | ||||
| entity.oc_case_provision_type.collection: | ||||
|   title: 'Case Provision type' | ||||
|   route_name: entity.oc_case_provision_type.collection | ||||
|   description: 'List Case Provision type (bundles)' | ||||
|   parent: system.admin_structure | ||||
|   weight: 99 | ||||
|  | ||||
| # Case Fee menu items definition | ||||
| entity.oc_case_fee.collection: | ||||
|   title: 'Case Fee list' | ||||
|   route_name: entity.oc_case_fee.collection | ||||
|   description: 'List Case Fee entities' | ||||
|   parent: system.admin_structure | ||||
|   weight: 100 | ||||
|  | ||||
|  | ||||
| # Case Fee type menu items definition | ||||
| entity.oc_case_fee_type.collection: | ||||
|   title: 'Case Fee type' | ||||
|   route_name: entity.oc_case_fee_type.collection | ||||
|   description: 'List Case Fee type (bundles)' | ||||
|   parent: system.admin_structure | ||||
|   weight: 99 | ||||
|  | ||||
| @ -21,3 +21,47 @@ entity.oc_case.delete_form: | ||||
|   base_route:  entity.oc_case.canonical | ||||
|   title: Delete | ||||
|   weight: 10 | ||||
| # Case Provision routing definition | ||||
|  | ||||
| entity.oc_case_provision.canonical: | ||||
|   route_name: entity.oc_case_provision.canonical | ||||
|   base_route: entity.oc_case_provision.canonical | ||||
|   title: 'View' | ||||
|  | ||||
| entity.oc_case_provision.edit_form: | ||||
|   route_name: entity.oc_case_provision.edit_form | ||||
|   base_route: entity.oc_case_provision.canonical | ||||
|   title: 'Edit' | ||||
|  | ||||
| entity.oc_case_provision.version_history: | ||||
|   route_name: entity.oc_case_provision.version_history | ||||
|   base_route: entity.oc_case_provision.canonical | ||||
|   title: 'Revisions' | ||||
|  | ||||
| entity.oc_case_provision.delete_form: | ||||
|   route_name:  entity.oc_case_provision.delete_form | ||||
|   base_route:  entity.oc_case_provision.canonical | ||||
|   title: Delete | ||||
|   weight: 10 | ||||
| # Case Fee routing definition | ||||
|  | ||||
| entity.oc_case_fee.canonical: | ||||
|   route_name: entity.oc_case_fee.canonical | ||||
|   base_route: entity.oc_case_fee.canonical | ||||
|   title: 'View' | ||||
|  | ||||
| entity.oc_case_fee.edit_form: | ||||
|   route_name: entity.oc_case_fee.edit_form | ||||
|   base_route: entity.oc_case_fee.canonical | ||||
|   title: 'Edit' | ||||
|  | ||||
| entity.oc_case_fee.version_history: | ||||
|   route_name: entity.oc_case_fee.version_history | ||||
|   base_route: entity.oc_case_fee.canonical | ||||
|   title: 'Revisions' | ||||
|  | ||||
| entity.oc_case_fee.delete_form: | ||||
|   route_name:  entity.oc_case_fee.delete_form | ||||
|   base_route:  entity.oc_case_fee.canonical | ||||
|   title: Delete | ||||
|   weight: 10 | ||||
|  | ||||
| @ -1,4 +1,5 @@ | ||||
| <?php | ||||
| declare(strict_types = 1); | ||||
|  | ||||
| /** | ||||
|  * @file | ||||
| @ -6,6 +7,9 @@ | ||||
|  */ | ||||
|  | ||||
| use Drupal\Core\Routing\RouteMatchInterface; | ||||
| use PHPUnit\Framework\Constraint\IsEmpty; | ||||
|  | ||||
| use function PHPUnit\Framework\isEmpty; | ||||
|  | ||||
| /** | ||||
|  * Implements hook_help(). | ||||
| @ -16,7 +20,7 @@ function opencase_cases_help($route_name, RouteMatchInterface $route_match) { | ||||
|     case 'help.page.opencase_cases': | ||||
|       $output = ''; | ||||
|       $output .= '<h3>' . t('About') . '</h3>'; | ||||
|       $output .= '<p>' . t('Provides case entities and a required field on activities linking them to a case.') . '</p>'; | ||||
|       $output .= '<p>' . t('Provides case entities and a required field on activities linking them to a case, plus case fee and case provision entities.') . '</p>'; | ||||
|       return $output; | ||||
|  | ||||
|     default: | ||||
| @ -40,10 +44,90 @@ function opencase_cases_theme() { | ||||
|       'render element' => 'content', | ||||
|       'variables' => ['content' => NULL], | ||||
|       'file' => 'oc_case.page.inc', | ||||
|     ] | ||||
|     ], | ||||
|     'oc_case_provision' => [ | ||||
|       'render element' => 'elements', | ||||
|       'file' => 'oc_case_provision.page.inc', | ||||
|       'template' => 'oc_case_provision', | ||||
|     ], | ||||
|     'oc_case_provision_content_add_list' => [ | ||||
|       'render element' => 'content', | ||||
|       'variables' => ['content' => NULL], | ||||
|       'file' => 'oc_case_provision.page.inc', | ||||
|     ], | ||||
|     'oc_case_fee' => [ | ||||
|       'render element' => 'elements', | ||||
|       'file' => 'oc_case_fee.page.inc', | ||||
|       'template' => 'oc_case_fee', | ||||
|     ], | ||||
|     'oc_case_fee_content_add_list' => [ | ||||
|       'render element' => 'content', | ||||
|       'variables' => ['content' => NULL], | ||||
|       'file' => 'oc_case_fee.page.inc', | ||||
|     ], | ||||
|   ]; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * @return Drupal\opencase_cases\entity\OCCaseFee[] | ||||
|  */ | ||||
| function opencase_cases_get_case_fees(Drupal\opencase_cases\entity\OCCase $case): array { | ||||
|   $query = \Drupal::entityQuery('oc_case_fee') | ||||
|     ->condition('oc_case.target_id', $case->id()); | ||||
|   $case_fee_ids =  $query->execute(); | ||||
|   $case_fees = []; | ||||
|   foreach($case_fee_ids as $id) { | ||||
|     $case_fees[] = Drupal\opencase_cases\entity\OCCaseFee::load($id); | ||||
|   } | ||||
|   return $case_fees; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * @return Drupal\opencase_cases\entity\OCActivity[] | ||||
|  */ | ||||
| function opencase_cases_get_activities(Drupal\opencase_cases\entity\OCCase $case): array { | ||||
|   $query = \Drupal::entityQuery('oc_activity') | ||||
|     ->condition('oc_case.target_id', $case->id()); | ||||
|   $activity_ids =  $query->execute(); | ||||
|   $activities = []; | ||||
|   foreach($activity_ids as $id) { | ||||
|     $activities[] = Drupal\opencase_entities\Entity\OCActivity::load($id); | ||||
|   } | ||||
|   return $activities; | ||||
| } | ||||
|  | ||||
| function opencase_cases_get_amount(Drupal\opencase_cases\entity\OCCaseFee $case_fee): string { | ||||
|   if (!isEmpty($case_fee->amount)) return $case_fee->amount->first()->value; | ||||
|   else return '0'; | ||||
| } | ||||
|  | ||||
| function opencase_cases_get_case(Drupal\opencase_cases\entity\OCCaseFee $case_fee): Drupal\opencase_cases\entity\OCCase { | ||||
|   return $case_fee->oc_case->referencedEntities()[0]; | ||||
| } | ||||
|  | ||||
| function opencase_cases_update_total_fee_for_case_belonging_to_case_fee(Drupal\opencase_cases\entity\OCCaseFee $case_fee): void { | ||||
|   $total = 0; | ||||
|   $case = opencase_cases_get_case($case_fee); | ||||
|   $case_fees = opencase_cases_get_case_fees($case); | ||||
|   foreach($case_fees as $case_fee) { | ||||
|     $total += opencase_cases_get_amount($case_fee); | ||||
|   } | ||||
|   $case->set('total_fee', $total);   | ||||
|   $case->save(); | ||||
| } | ||||
|  | ||||
| function opencase_cases_oc_case_fee_update(Drupal\opencase_cases\entity\OCCaseFee $case_fee): void { | ||||
|   opencase_cases_update_total_fee_for_case_belonging_to_case_fee($case_fee); | ||||
| } | ||||
|  | ||||
| function opencase_cases_oc_case_fee_insert(Drupal\opencase_cases\entity\OCCaseFee $case_fee): void { | ||||
|   opencase_cases_update_total_fee_for_case_belonging_to_case_fee($case_fee); | ||||
| } | ||||
|  | ||||
| function opencase_cases_oc_case_fee_delete(Drupal\opencase_cases\entity\OCCaseFee $case_fee): void { | ||||
|   opencase_cases_update_total_fee_for_case_belonging_to_case_fee($case_fee); | ||||
| } | ||||
|  | ||||
| function opencase_cases_entity_base_field_info($entity_type) { | ||||
|   $fields = array(); | ||||
|    | ||||
| @ -56,7 +140,7 @@ function opencase_cases_entity_base_field_info($entity_type) { | ||||
|       ->setSetting('handler', 'default') | ||||
|       ->setTranslatable(TRUE) | ||||
|       ->setCardinality(1) | ||||
|       ->setDefaultValueCallback('opencase_cases_default_activity_case_value') | ||||
|       ->setDefaultValueCallback('opencase_cases_default_case_id') | ||||
|       ->setDisplayOptions('view', [ | ||||
|         'type' => 'string', | ||||
|         'weight' => -3, | ||||
| @ -66,10 +150,19 @@ function opencase_cases_entity_base_field_info($entity_type) { | ||||
|   return $fields; | ||||
| } | ||||
|  | ||||
| // When deleting a case, delete the activities associated with it | ||||
| function opencase_cases_oc_case_delete(Drupal\opencase_cases\Entity\OCCase $case): void { | ||||
|   $activities = opencase_cases_get_activities($case); | ||||
|   foreach ($activities as $activity) { | ||||
|     $activity->delete(); | ||||
|   } | ||||
| } | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * When creating an activity, it sets the case id from the URL. | ||||
|  */ | ||||
| function opencase_cases_default_activity_case_value() { | ||||
| function opencase_cases_default_case_id() { | ||||
|   return array(\Drupal::request()->query->get('case_id')); | ||||
| } | ||||
|  | ||||
| @ -91,9 +184,16 @@ function opencase_cases_form_alter(&$form, &$form_state, $form_id) { | ||||
| function _opencase_cases_redirect_to_home($form, &$form_state) { | ||||
|   $form_state->setRedirect('<front>');  | ||||
| } | ||||
|  | ||||
| // Upon deletion of an activity, go to the related case if there is one, otherwise to its target. | ||||
| function _opencase_cases_delete_activity_redirect($form, &$form_state) { | ||||
|   $case_id = $form_state->getFormObject()->getEntity()->oc_case->target_id; | ||||
|   $form_state->setRedirect('entity.oc_case.canonical', ['oc_case' => $case_id]); | ||||
|   if (!IsEmpty($form_state->getFormObject()->getEntity()->oc_case)) { | ||||
|     $case_id = $form_state->getFormObject()->getEntity()->oc_case->target_id; | ||||
|     $form_state->setRedirect('entity.oc_case.canonical', ['oc_case' => $case_id]); | ||||
|   } else { | ||||
|     $target_actor_id = $form_state->getFormObject()->getEntity()->oc_target->target_id; | ||||
|     $form_state->setRedirect('entity.oc_actor.canonical', ['oc_actor' => $target_actor_id]); | ||||
|   } | ||||
| } | ||||
| /** | ||||
| * Implements hook_theme_suggestions_HOOK(). | ||||
| @ -111,29 +211,34 @@ function opencase_cases_theme_suggestions_oc_case(array $variables) { | ||||
|   return $suggestions; | ||||
| } | ||||
|  | ||||
| function opencase_views_query_alter(Drupal\views\ViewExecutable $view, $query) { | ||||
|   if ($view->getBaseEntityType() && $view->getBaseEntityType()->id() == 'oc_case') { | ||||
|     $query->addTag('oc_case_access'); | ||||
|   } | ||||
|   if ($view->getBaseEntityType() && $view->getBaseEntityType()->id() == 'oc_activity') { | ||||
|     $query->addTag('oc_activity_access'); | ||||
|   } | ||||
| /** | ||||
|  * Implements hook_theme_suggestions_HOOK(). | ||||
|  */ | ||||
| function opencase_cases_theme_suggestions_oc_case_provision(array $variables) { | ||||
|   $suggestions = []; | ||||
|   $entity = $variables['elements']['#oc_case_provision']; | ||||
|   $sanitized_view_mode = strtr($variables['elements']['#view_mode'], '.', '_'); | ||||
|  | ||||
|   $suggestions[] = 'oc_case_provision__' . $sanitized_view_mode; | ||||
|   $suggestions[] = 'oc_case_provision__' . $entity->bundle(); | ||||
|   $suggestions[] = 'oc_case_provision__' . $entity->bundle() . '__' . $sanitized_view_mode; | ||||
|   $suggestions[] = 'oc_case_provision__' . $entity->id(); | ||||
|   $suggestions[] = 'oc_case_provision__' . $entity->id() . '__' . $sanitized_view_mode; | ||||
|   return $suggestions; | ||||
| } | ||||
|  | ||||
| function opencase_query_oc_case_access_alter($query) { | ||||
|   if (\Drupal::currentUser()->hasPermission('view published case entities')) { | ||||
|     return; | ||||
|   }  | ||||
|   $linked_actor_id = CaseInvolvement::getLinkedActorId(\Drupal::currentUser()); | ||||
|   $query->addJoin('INNER', 'oc_case__actors_involved', 'access_filter', 'access_filter.entity_id = oc_case_field_data.id'); | ||||
|   $query->condition('access_filter.actors_involved_target_id', $linked_actor_id); | ||||
| } | ||||
| /** | ||||
|  * Implements hook_theme_suggestions_HOOK(). | ||||
|  */ | ||||
| function opencase_cases_theme_suggestions_oc_case_fee(array $variables) { | ||||
|   $suggestions = []; | ||||
|   $entity = $variables['elements']['#oc_case_fee']; | ||||
|   $sanitized_view_mode = strtr($variables['elements']['#view_mode'], '.', '_'); | ||||
|  | ||||
| function opencase_query_oc_activity_access_alter($query) { | ||||
|   if (\Drupal::currentUser()->hasPermission('view published case entities')) { | ||||
|     return; | ||||
|   }  | ||||
|   $linked_actor_id = CaseInvolvement::getLinkedActorId(\Drupal::currentUser()); | ||||
|   $query->addJoin('INNER', 'oc_case__actors_involved', 'access_filter', 'access_filter.entity_id = oc_activity_field_data.oc_case'); | ||||
|   $query->condition('access_filter.actors_involved_target_id', $linked_actor_id); | ||||
|   $suggestions[] = 'oc_case_fee__' . $sanitized_view_mode; | ||||
|   $suggestions[] = 'oc_case_fee__' . $entity->bundle(); | ||||
|   $suggestions[] = 'oc_case_fee__' . $entity->bundle() . '__' . $sanitized_view_mode; | ||||
|   $suggestions[] = 'oc_case_fee__' . $entity->id(); | ||||
|   $suggestions[] = 'oc_case_fee__' . $entity->id() . '__' . $sanitized_view_mode; | ||||
|   return $suggestions; | ||||
| } | ||||
|  | ||||
							
								
								
									
										61
									
								
								modules/opencase_cases/opencase_cases.permissions.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								modules/opencase_cases/opencase_cases.permissions.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,61 @@ | ||||
| add case provision entities: | ||||
|   title: 'Create new Case Provision entities' | ||||
|  | ||||
| administer case provision entities: | ||||
|   title: 'Administer Case Provision entities' | ||||
|   description: 'Allow to access the administration form to configure Case Provision entities.' | ||||
|   restrict access: true | ||||
|  | ||||
| delete case provision entities: | ||||
|   title: 'Delete Case Provision entities' | ||||
|  | ||||
| edit case provision entities: | ||||
|   title: 'Edit Case Provision entities' | ||||
|  | ||||
| view published case provision entities: | ||||
|   title: 'View published Case Provision entities' | ||||
|  | ||||
| view unpublished case provision entities: | ||||
|   title: 'View unpublished Case Provision entities' | ||||
|  | ||||
| view all case provision revisions: | ||||
|   title: 'View all Case Provision revisions' | ||||
|  | ||||
| revert all case provision revisions: | ||||
|   title: 'Revert all Case Provision revisions' | ||||
|   description: 'Role requires permission <em>view Case Provision revisions</em> and <em>edit rights</em> for case provision entities in question or <em>administer case provision entities</em>.' | ||||
|  | ||||
| delete all case provision revisions: | ||||
|   title: 'Delete all revisions' | ||||
|   description: 'Role requires permission to <em>view Case Provision revisions</em> and <em>delete rights</em> for case provision entities in question or <em>administer case provision entities</em>.' | ||||
|  | ||||
| add case fee entities: | ||||
|   title: 'Create new Case Fee entities' | ||||
|  | ||||
| administer case fee entities: | ||||
|   title: 'Administer Case Fee entities' | ||||
|   description: 'Allow to access the administration form to configure Case Fee entities.' | ||||
|   restrict access: true | ||||
|  | ||||
| delete case fee entities: | ||||
|   title: 'Delete Case Fee entities' | ||||
|  | ||||
| edit case fee entities: | ||||
|   title: 'Edit Case Fee entities' | ||||
|  | ||||
| view published case fee entities: | ||||
|   title: 'View published Case Fee entities' | ||||
|  | ||||
| view unpublished case fee entities: | ||||
|   title: 'View unpublished Case Fee entities' | ||||
|  | ||||
| view all case fee revisions: | ||||
|   title: 'View all Case Fee revisions' | ||||
|  | ||||
| revert all case fee revisions: | ||||
|   title: 'Revert all Case Fee revisions' | ||||
|   description: 'Role requires permission <em>view Case Fee revisions</em> and <em>edit rights</em> for case fee entities in question or <em>administer case fee entities</em>.' | ||||
|  | ||||
| delete all case fee revisions: | ||||
|   title: 'Delete all revisions' | ||||
|   description: 'Role requires permission to <em>view Case Fee revisions</em> and <em>delete rights</em> for case fee entities in question or <em>administer case fee entities</em>.' | ||||
| @ -10,8 +10,11 @@ class CaseInvolvement { | ||||
|  | ||||
|   public static function userIsInvolved($account, $case) { | ||||
|     $actorId = self::getLinkedActorId($account);         | ||||
|     $involvedIds = array_column($case->actors_involved->getValue(), 'target_id'); | ||||
|     return in_array($actorId, $involvedIds); | ||||
|     $query = \Drupal::entityQuery('oc_case_provision') | ||||
|     ->condition('oc_provider', $actorId) | ||||
|     ->condition('oc_case', $case->id()); | ||||
|     $results = $query->execute(); | ||||
|     return !empty($results); | ||||
|   } | ||||
|  | ||||
|   public static function userIsInvolved_activity($account, $activity) { | ||||
|  | ||||
| @ -25,8 +25,8 @@ class OCCaseController extends ControllerBase implements ContainerInjectionInter | ||||
|    *   An array suitable for drupal_render(). | ||||
|    */ | ||||
|   public function revisionShow($oc_case_revision) { | ||||
|     $oc_case = $this->entityManager()->getStorage('oc_case')->loadRevision($oc_case_revision); | ||||
|     $view_builder = $this->entityManager()->getViewBuilder('oc_case'); | ||||
|     $oc_case = $this->entityTypeManager()->getStorage('oc_case')->loadRevision($oc_case_revision); | ||||
|     $view_builder = $this->entityTypeManager()->getViewBuilder('oc_case'); | ||||
|  | ||||
|     return $view_builder->view($oc_case); | ||||
|   } | ||||
| @ -41,8 +41,10 @@ class OCCaseController extends ControllerBase implements ContainerInjectionInter | ||||
|    *   The page title. | ||||
|    */ | ||||
|   public function revisionPageTitle($oc_case_revision) { | ||||
|     $oc_case = $this->entityManager()->getStorage('oc_case')->loadRevision($oc_case_revision); | ||||
|     return $this->t('Revision of %title from %date', ['%title' => $oc_case->label(), '%date' => format_date($oc_case->getRevisionCreationTime())]); | ||||
|     $oc_case = $this->entityTypeManager()->getStorage('oc_case')->loadRevision($oc_case_revision); | ||||
|  | ||||
|     $date = \Drupal::service('date.formatter')->format($oc_case->getRevisionCreationTime()); | ||||
|     return $this->t('Revision of %title from %date', ['%title' => $oc_case->label(), '%date' => $date]); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
| @ -60,7 +62,7 @@ class OCCaseController extends ControllerBase implements ContainerInjectionInter | ||||
|     $langname = $oc_case->language()->getName(); | ||||
|     $languages = $oc_case->getTranslationLanguages(); | ||||
|     $has_translations = (count($languages) > 1); | ||||
|     $oc_case_storage = $this->entityManager()->getStorage('oc_case'); | ||||
|     $oc_case_storage = $this->entityTypeManager()->getStorage('oc_case'); | ||||
|  | ||||
|     $build['#title'] = $has_translations ? $this->t('@langname revisions for %title', ['@langname' => $langname, '%title' => $oc_case->label()]) : $this->t('Revisions for %title', ['%title' => $oc_case->label()]); | ||||
|     $header = [$this->t('Revision'), $this->t('Operations')]; | ||||
| @ -88,10 +90,11 @@ class OCCaseController extends ControllerBase implements ContainerInjectionInter | ||||
|         // Use revision link to link to revisions that are not active. | ||||
|         $date = \Drupal::service('date.formatter')->format($revision->getRevisionCreationTime(), 'short'); | ||||
|         if ($vid != $oc_case->getRevisionId()) { | ||||
|           $link = $this->l($date, new Url('entity.oc_case.revision', ['oc_case' => $oc_case->id(), 'oc_case_revision' => $vid])); | ||||
|           $url =  new Url('entity.oc_case.revision', ['oc_case' => $oc_case->id(), 'oc_case_revision' => $vid]); | ||||
|           $link = \Drupal\Core\Link::fromTextAndUrl($date, $url)->toString(); | ||||
|         } | ||||
|         else { | ||||
|           $link = $oc_case->link($date); | ||||
|           $link = $oc_case->toLink($date)->toString(); | ||||
|         } | ||||
|  | ||||
|         $row = []; | ||||
|  | ||||
							
								
								
									
										210
									
								
								modules/opencase_cases/src/Controller/OCCaseFeeController.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										210
									
								
								modules/opencase_cases/src/Controller/OCCaseFeeController.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,210 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases\Controller; | ||||
|  | ||||
| use Drupal\Component\Utility\Xss; | ||||
| use Drupal\Core\Controller\ControllerBase; | ||||
| use Drupal\Core\DependencyInjection\ContainerInjectionInterface; | ||||
| use Drupal\Core\Url; | ||||
| use Drupal\opencase_cases\Entity\OCCaseFeeInterface; | ||||
| use Symfony\Component\DependencyInjection\ContainerInterface; | ||||
|  | ||||
| /** | ||||
|  * Class OCCaseFeeController. | ||||
|  * | ||||
|  *  Returns responses for Case Fee routes. | ||||
|  */ | ||||
| class OCCaseFeeController extends ControllerBase implements ContainerInjectionInterface { | ||||
|  | ||||
|   /** | ||||
|    * The date formatter. | ||||
|    * | ||||
|    * @var \Drupal\Core\Datetime\DateFormatter | ||||
|    */ | ||||
|   protected $dateFormatter; | ||||
|  | ||||
|   /** | ||||
|    * The renderer. | ||||
|    * | ||||
|    * @var \Drupal\Core\Render\Renderer | ||||
|    */ | ||||
|   protected $renderer; | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public static function create(ContainerInterface $container) { | ||||
|     $instance = parent::create($container); | ||||
|     $instance->dateFormatter = $container->get('date.formatter'); | ||||
|     $instance->renderer = $container->get('renderer'); | ||||
|     return $instance; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Displays a Case Fee revision. | ||||
|    * | ||||
|    * @param int $oc_case_fee_revision | ||||
|    *   The Case Fee revision ID. | ||||
|    * | ||||
|    * @return array | ||||
|    *   An array suitable for drupal_render(). | ||||
|    */ | ||||
|   public function revisionShow($oc_case_fee_revision) { | ||||
|     $oc_case_fee = $this->entityTypeManager()->getStorage('oc_case_fee') | ||||
|       ->loadRevision($oc_case_fee_revision); | ||||
|     $view_builder = $this->entityTypeManager()->getViewBuilder('oc_case_fee'); | ||||
|  | ||||
|     return $view_builder->view($oc_case_fee); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Page title callback for a Case Fee revision. | ||||
|    * | ||||
|    * @param int $oc_case_fee_revision | ||||
|    *   The Case Fee revision ID. | ||||
|    * | ||||
|    * @return string | ||||
|    *   The page title. | ||||
|    */ | ||||
|   public function revisionPageTitle($oc_case_fee_revision) { | ||||
|     $oc_case_fee = $this->entityTypeManager()->getStorage('oc_case_fee') | ||||
|       ->loadRevision($oc_case_fee_revision); | ||||
|     return $this->t('Revision of %title from %date', [ | ||||
|       '%title' => $oc_case_fee->label(), | ||||
|       '%date' => $this->dateFormatter->format($oc_case_fee->getRevisionCreationTime()), | ||||
|     ]); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Generates an overview table of older revisions of a Case Fee. | ||||
|    * | ||||
|    * @param \Drupal\opencase_cases\Entity\OCCaseFeeInterface $oc_case_fee | ||||
|    *   A Case Fee object. | ||||
|    * | ||||
|    * @return array | ||||
|    *   An array as expected by drupal_render(). | ||||
|    */ | ||||
|   public function revisionOverview(OCCaseFeeInterface $oc_case_fee) { | ||||
|     $account = $this->currentUser(); | ||||
|     $oc_case_fee_storage = $this->entityTypeManager()->getStorage('oc_case_fee'); | ||||
|  | ||||
|     $langcode = $oc_case_fee->language()->getId(); | ||||
|     $langname = $oc_case_fee->language()->getName(); | ||||
|     $languages = $oc_case_fee->getTranslationLanguages(); | ||||
|     $has_translations = (count($languages) > 1); | ||||
|     $build['#title'] = $has_translations ? $this->t('@langname revisions for %title', ['@langname' => $langname, '%title' => $oc_case_fee->label()]) : $this->t('Revisions for %title', ['%title' => $oc_case_fee->label()]); | ||||
|  | ||||
|     $header = [$this->t('Revision'), $this->t('Operations')]; | ||||
|     $revert_permission = (($account->hasPermission("revert all case fee revisions") || $account->hasPermission('administer case fee entities'))); | ||||
|     $delete_permission = (($account->hasPermission("delete all case fee revisions") || $account->hasPermission('administer case fee entities'))); | ||||
|  | ||||
|     $rows = []; | ||||
|  | ||||
|     $vids = $oc_case_fee_storage->revisionIds($oc_case_fee); | ||||
|  | ||||
|     $latest_revision = TRUE; | ||||
|  | ||||
|     foreach (array_reverse($vids) as $vid) { | ||||
|       /** @var \Drupal\opencase_cases\OCCaseFeeInterface $revision */ | ||||
|       $revision = $oc_case_fee_storage->loadRevision($vid); | ||||
|       // Only show revisions that are affected by the language that is being | ||||
|       // displayed. | ||||
|       if ($revision->hasTranslation($langcode) && $revision->getTranslation($langcode)->isRevisionTranslationAffected()) { | ||||
|         $username = [ | ||||
|           '#theme' => 'username', | ||||
|           '#account' => $revision->getRevisionUser(), | ||||
|         ]; | ||||
|  | ||||
|         // Use revision link to link to revisions that are not active. | ||||
|         $date = $this->dateFormatter->format($revision->getRevisionCreationTime(), 'short'); | ||||
|         if ($vid != $oc_case_fee->getRevisionId()) { | ||||
|           $url = new Url('entity.oc_case_fee.revision', [ | ||||
|             'oc_case_fee' => $oc_case_fee->id(), | ||||
|             'oc_case_fee_revision' => $vid, | ||||
|           ]); | ||||
|           $link = \Drupal\Core\Link::fromTextAndUrl($date, $url)->toString(); | ||||
|         } | ||||
|         else { | ||||
|           $link = $oc_case_fee->toLink($date)->toString(); | ||||
|         } | ||||
|  | ||||
|         $row = []; | ||||
|         $column = [ | ||||
|           'data' => [ | ||||
|             '#type' => 'inline_template', | ||||
|             '#template' => '{% trans %}{{ date }} by {{ username }}{% endtrans %}{% if message %}<p class="revision-log">{{ message }}</p>{% endif %}', | ||||
|             '#context' => [ | ||||
|               'date' => $link, | ||||
|               'username' => $this->renderer->renderPlain($username), | ||||
|               'message' => [ | ||||
|                 '#markup' => $revision->getRevisionLogMessage(), | ||||
|                 '#allowed_tags' => Xss::getHtmlTagList(), | ||||
|               ], | ||||
|             ], | ||||
|           ], | ||||
|         ]; | ||||
|         $row[] = $column; | ||||
|  | ||||
|         if ($latest_revision) { | ||||
|           $row[] = [ | ||||
|             'data' => [ | ||||
|               '#prefix' => '<em>', | ||||
|               '#markup' => $this->t('Current revision'), | ||||
|               '#suffix' => '</em>', | ||||
|             ], | ||||
|           ]; | ||||
|           foreach ($row as &$current) { | ||||
|             $current['class'] = ['revision-current']; | ||||
|           } | ||||
|           $latest_revision = FALSE; | ||||
|         } | ||||
|         else { | ||||
|           $links = []; | ||||
|           if ($revert_permission) { | ||||
|             $links['revert'] = [ | ||||
|               'title' => $this->t('Revert'), | ||||
|               'url' => $has_translations ? | ||||
|               Url::fromRoute('entity.oc_case_fee.translation_revert', [ | ||||
|                 'oc_case_fee' => $oc_case_fee->id(), | ||||
|                 'oc_case_fee_revision' => $vid, | ||||
|                 'langcode' => $langcode, | ||||
|               ]) : | ||||
|               Url::fromRoute('entity.oc_case_fee.revision_revert', [ | ||||
|                 'oc_case_fee' => $oc_case_fee->id(), | ||||
|                 'oc_case_fee_revision' => $vid, | ||||
|               ]), | ||||
|             ]; | ||||
|           } | ||||
|  | ||||
|           if ($delete_permission) { | ||||
|             $links['delete'] = [ | ||||
|               'title' => $this->t('Delete'), | ||||
|               'url' => Url::fromRoute('entity.oc_case_fee.revision_delete', [ | ||||
|                 'oc_case_fee' => $oc_case_fee->id(), | ||||
|                 'oc_case_fee_revision' => $vid, | ||||
|               ]), | ||||
|             ]; | ||||
|           } | ||||
|  | ||||
|           $row[] = [ | ||||
|             'data' => [ | ||||
|               '#type' => 'operations', | ||||
|               '#links' => $links, | ||||
|             ], | ||||
|           ]; | ||||
|         } | ||||
|  | ||||
|         $rows[] = $row; | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     $build['oc_case_fee_revisions_table'] = [ | ||||
|       '#theme' => 'table', | ||||
|       '#rows' => $rows, | ||||
|       '#header' => $header, | ||||
|     ]; | ||||
|  | ||||
|     return $build; | ||||
|   } | ||||
|  | ||||
| } | ||||
| @ -0,0 +1,210 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases\Controller; | ||||
|  | ||||
| use Drupal\Component\Utility\Xss; | ||||
| use Drupal\Core\Controller\ControllerBase; | ||||
| use Drupal\Core\DependencyInjection\ContainerInjectionInterface; | ||||
| use Drupal\Core\Url; | ||||
| use Drupal\opencase_cases\Entity\OCCaseProvisionInterface; | ||||
| use Symfony\Component\DependencyInjection\ContainerInterface; | ||||
|  | ||||
| /** | ||||
|  * Class OCCaseProvisionController. | ||||
|  * | ||||
|  *  Returns responses for Case Provision routes. | ||||
|  */ | ||||
| class OCCaseProvisionController extends ControllerBase implements ContainerInjectionInterface { | ||||
|  | ||||
|   /** | ||||
|    * The date formatter. | ||||
|    * | ||||
|    * @var \Drupal\Core\Datetime\DateFormatter | ||||
|    */ | ||||
|   protected $dateFormatter; | ||||
|  | ||||
|   /** | ||||
|    * The renderer. | ||||
|    * | ||||
|    * @var \Drupal\Core\Render\Renderer | ||||
|    */ | ||||
|   protected $renderer; | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public static function create(ContainerInterface $container) { | ||||
|     $instance = parent::create($container); | ||||
|     $instance->dateFormatter = $container->get('date.formatter'); | ||||
|     $instance->renderer = $container->get('renderer'); | ||||
|     return $instance; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Displays a Case Provision revision. | ||||
|    * | ||||
|    * @param int $oc_case_provision_revision | ||||
|    *   The Case Provision revision ID. | ||||
|    * | ||||
|    * @return array | ||||
|    *   An array suitable for drupal_render(). | ||||
|    */ | ||||
|   public function revisionShow($oc_case_provision_revision) { | ||||
|     $oc_case_provision = $this->entityTypeManager()->getStorage('oc_case_provision') | ||||
|       ->loadRevision($oc_case_provision_revision); | ||||
|     $view_builder = $this->entityTypeManager()->getViewBuilder('oc_case_provision'); | ||||
|  | ||||
|     return $view_builder->view($oc_case_provision); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Page title callback for a Case Provision revision. | ||||
|    * | ||||
|    * @param int $oc_case_provision_revision | ||||
|    *   The Case Provision revision ID. | ||||
|    * | ||||
|    * @return string | ||||
|    *   The page title. | ||||
|    */ | ||||
|   public function revisionPageTitle($oc_case_provision_revision) { | ||||
|     $oc_case_provision = $this->entityTypeManager()->getStorage('oc_case_provision') | ||||
|       ->loadRevision($oc_case_provision_revision); | ||||
|     return $this->t('Revision of %title from %date', [ | ||||
|       '%title' => $oc_case_provision->label(), | ||||
|       '%date' => $this->dateFormatter->format($oc_case_provision->getRevisionCreationTime()), | ||||
|     ]); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Generates an overview table of older revisions of a Case Provision. | ||||
|    * | ||||
|    * @param \Drupal\opencase_cases\Entity\OCCaseProvisionInterface $oc_case_provision | ||||
|    *   A Case Provision object. | ||||
|    * | ||||
|    * @return array | ||||
|    *   An array as expected by drupal_render(). | ||||
|    */ | ||||
|   public function revisionOverview(OCCaseProvisionInterface $oc_case_provision) { | ||||
|     $account = $this->currentUser(); | ||||
|     $oc_case_provision_storage = $this->entityTypeManager()->getStorage('oc_case_provision'); | ||||
|  | ||||
|     $langcode = $oc_case_provision->language()->getId(); | ||||
|     $langname = $oc_case_provision->language()->getName(); | ||||
|     $languages = $oc_case_provision->getTranslationLanguages(); | ||||
|     $has_translations = (count($languages) > 1); | ||||
|     $build['#title'] = $has_translations ? $this->t('@langname revisions for %title', ['@langname' => $langname, '%title' => $oc_case_provision->label()]) : $this->t('Revisions for %title', ['%title' => $oc_case_provision->label()]); | ||||
|  | ||||
|     $header = [$this->t('Revision'), $this->t('Operations')]; | ||||
|     $revert_permission = (($account->hasPermission("revert all case provision revisions") || $account->hasPermission('administer case provision entities'))); | ||||
|     $delete_permission = (($account->hasPermission("delete all case provision revisions") || $account->hasPermission('administer case provision entities'))); | ||||
|  | ||||
|     $rows = []; | ||||
|  | ||||
|     $vids = $oc_case_provision_storage->revisionIds($oc_case_provision); | ||||
|  | ||||
|     $latest_revision = TRUE; | ||||
|  | ||||
|     foreach (array_reverse($vids) as $vid) { | ||||
|       /** @var \Drupal\opencase_cases\OCCaseProvisionInterface $revision */ | ||||
|       $revision = $oc_case_provision_storage->loadRevision($vid); | ||||
|       // Only show revisions that are affected by the language that is being | ||||
|       // displayed. | ||||
|       if ($revision->hasTranslation($langcode) && $revision->getTranslation($langcode)->isRevisionTranslationAffected()) { | ||||
|         $username = [ | ||||
|           '#theme' => 'username', | ||||
|           '#account' => $revision->getRevisionUser(), | ||||
|         ]; | ||||
|  | ||||
|         // Use revision link to link to revisions that are not active. | ||||
|         $date = $this->dateFormatter->format($revision->getRevisionCreationTime(), 'short'); | ||||
|         if ($vid != $oc_case_provision->getRevisionId()) { | ||||
|           $url = new Url('entity.oc_case_provision.revision', [ | ||||
|             'oc_case_provision' => $oc_case_provision->id(), | ||||
|             'oc_case_provision_revision' => $vid, | ||||
|           ]); | ||||
|           $link = \Drupal\Core\Link::fromTextAndUrl($date, $url)->toString(); | ||||
|         } | ||||
|         else { | ||||
|           $link = $oc_case_provision->toLink($date)->toString(); | ||||
|         } | ||||
|  | ||||
|         $row = []; | ||||
|         $column = [ | ||||
|           'data' => [ | ||||
|             '#type' => 'inline_template', | ||||
|             '#template' => '{% trans %}{{ date }} by {{ username }}{% endtrans %}{% if message %}<p class="revision-log">{{ message }}</p>{% endif %}', | ||||
|             '#context' => [ | ||||
|               'date' => $link, | ||||
|               'username' => $this->renderer->renderPlain($username), | ||||
|               'message' => [ | ||||
|                 '#markup' => $revision->getRevisionLogMessage(), | ||||
|                 '#allowed_tags' => Xss::getHtmlTagList(), | ||||
|               ], | ||||
|             ], | ||||
|           ], | ||||
|         ]; | ||||
|         $row[] = $column; | ||||
|  | ||||
|         if ($latest_revision) { | ||||
|           $row[] = [ | ||||
|             'data' => [ | ||||
|               '#prefix' => '<em>', | ||||
|               '#markup' => $this->t('Current revision'), | ||||
|               '#suffix' => '</em>', | ||||
|             ], | ||||
|           ]; | ||||
|           foreach ($row as &$current) { | ||||
|             $current['class'] = ['revision-current']; | ||||
|           } | ||||
|           $latest_revision = FALSE; | ||||
|         } | ||||
|         else { | ||||
|           $links = []; | ||||
|           if ($revert_permission) { | ||||
|             $links['revert'] = [ | ||||
|               'title' => $this->t('Revert'), | ||||
|               'url' => $has_translations ? | ||||
|               Url::fromRoute('entity.oc_case_provision.translation_revert', [ | ||||
|                 'oc_case_provision' => $oc_case_provision->id(), | ||||
|                 'oc_case_provision_revision' => $vid, | ||||
|                 'langcode' => $langcode, | ||||
|               ]) : | ||||
|               Url::fromRoute('entity.oc_case_provision.revision_revert', [ | ||||
|                 'oc_case_provision' => $oc_case_provision->id(), | ||||
|                 'oc_case_provision_revision' => $vid, | ||||
|               ]), | ||||
|             ]; | ||||
|           } | ||||
|  | ||||
|           if ($delete_permission) { | ||||
|             $links['delete'] = [ | ||||
|               'title' => $this->t('Delete'), | ||||
|               'url' => Url::fromRoute('entity.oc_case_provision.revision_delete', [ | ||||
|                 'oc_case_provision' => $oc_case_provision->id(), | ||||
|                 'oc_case_provision_revision' => $vid, | ||||
|               ]), | ||||
|             ]; | ||||
|           } | ||||
|  | ||||
|           $row[] = [ | ||||
|             'data' => [ | ||||
|               '#type' => 'operations', | ||||
|               '#links' => $links, | ||||
|             ], | ||||
|           ]; | ||||
|         } | ||||
|  | ||||
|         $rows[] = $row; | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     $build['oc_case_provision_revisions_table'] = [ | ||||
|       '#theme' => 'table', | ||||
|       '#rows' => $rows, | ||||
|       '#header' => $header, | ||||
|     ]; | ||||
|  | ||||
|     return $build; | ||||
|   } | ||||
|  | ||||
| } | ||||
| @ -41,6 +41,11 @@ use Drupal\user\UserInterface; | ||||
|  *   data_table = "oc_case_field_data", | ||||
|  *   revision_table = "oc_case_revision", | ||||
|  *   revision_data_table = "oc_case_field_revision", | ||||
|  *   revision_metadata_keys = { | ||||
|  *     "revision_user" = "revision_user", | ||||
|  *     "revision_created" = "revision_created", | ||||
|  *     "revision_log_message" = "revision_log" | ||||
|  *   }, | ||||
|  *   translatable = TRUE, | ||||
|  *   admin_permission = "administer case entities", | ||||
|  *   entity_keys = { | ||||
| @ -84,6 +89,12 @@ class OCCase extends RevisionableContentEntityBase implements OCCaseInterface { | ||||
|     ]; | ||||
|   } | ||||
|  | ||||
|      | ||||
|   public static function defaultTarget() { | ||||
|     if (opencase_entities_get('target_id')) return [opencase_entities_get('target_id')]; | ||||
|     else return []; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
| @ -197,6 +208,8 @@ class OCCase extends RevisionableContentEntityBase implements OCCaseInterface { | ||||
|     return $this; | ||||
|   } | ||||
|  | ||||
|  | ||||
|    | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
| @ -205,9 +218,10 @@ class OCCase extends RevisionableContentEntityBase implements OCCaseInterface { | ||||
|  | ||||
|     // not currently used. Will add form and view settings when ready | ||||
|     $fields['status'] = BaseFieldDefinition::create('boolean') | ||||
|       ->setLabel(t('Publishing status')) | ||||
|       ->setDescription(t('A boolean indicating whether the Case is published.')) | ||||
|       ->setLabel(t('Visible')) | ||||
|       ->setDescription('If this box is not ticked this record will be hidden from view for most users. Users with access to unpublished entities will be able to restore it if needed.') | ||||
|       ->setRevisionable(TRUE) | ||||
|       ->setDisplayConfigurable("form", TRUE) | ||||
|       ->setDefaultValue(TRUE); | ||||
|  | ||||
|     $fields['user_id'] = BaseFieldDefinition::create('entity_reference') | ||||
| @ -217,16 +231,29 @@ class OCCase extends RevisionableContentEntityBase implements OCCaseInterface { | ||||
|       ->setSetting('target_type', 'user') | ||||
|       ->setSetting('handler', 'default') | ||||
|       ->setTranslatable(TRUE) | ||||
|       ->setDisplayConfigurable('form', true) | ||||
|       ->setDisplayConfigurable('view', true) | ||||
|       ->setDisplayOptions('view', [ | ||||
|         'label' => 'above', | ||||
|         'type' => 'author', | ||||
|         'weight' => 80, | ||||
|       ]); | ||||
|  | ||||
|  | ||||
|     $fields['oc_target'] = BaseFieldDefinition::create('entity_reference') | ||||
|     ->setLabel(t('Target')) | ||||
|     ->setRevisionable(TRUE) | ||||
|     ->setSetting('target_type', 'oc_actor') | ||||
|     ->setSetting('handler', 'default') | ||||
|     ->setDefaultValueCallback('\Drupal\opencase_cases\Entity\OCCase::defaultTarget') | ||||
|     ->setDisplayConfigurable('form', true) | ||||
|     ->setDisplayConfigurable('view', true); | ||||
|  | ||||
|     $fields['name'] = BaseFieldDefinition::create('string') | ||||
|       ->setLabel(t('Title')) | ||||
|       ->setRevisionable(TRUE) | ||||
|       ->setSettings([ | ||||
|         'max_length' => 50, | ||||
|         'max_length' => 120, | ||||
|         'text_processing' => 0, | ||||
|       ]) | ||||
|       ->setDefaultValue('') | ||||
| @ -250,6 +277,8 @@ class OCCase extends RevisionableContentEntityBase implements OCCaseInterface { | ||||
|       ->setSetting('description_field', 'true') | ||||
|       ->setSetting('uri_scheme', 'private') | ||||
|       ->setCardinality(-1) | ||||
|       ->setDisplayConfigurable('form', true) | ||||
|       ->setDisplayConfigurable('view', true) | ||||
|       ->setDisplayOptions('form', [ | ||||
|         'type' => 'file_generic', | ||||
|         'weight' => -1, | ||||
| @ -265,18 +294,12 @@ class OCCase extends RevisionableContentEntityBase implements OCCaseInterface { | ||||
|     $fields['created'] = BaseFieldDefinition::create('created') | ||||
|       ->setLabel(t('Created on')) | ||||
|       ->setDescription(t('When the case was created.')) | ||||
|       ->setDisplayOptions('view', [ | ||||
|         'label' => 'above', | ||||
|         'weight' => 80, | ||||
|       ]); | ||||
|       ->setDisplayConfigurable('view', true); | ||||
|  | ||||
|     $fields['changed'] = BaseFieldDefinition::create('changed') | ||||
|       ->setLabel(t('Last updated')) | ||||
|       ->setDescription(t('When the case was last edited.')) | ||||
|       ->setDisplayOptions('view', [ | ||||
|         'label' => 'above', | ||||
|         'weight' => 80, | ||||
|       ]); | ||||
|       ->setDisplayConfigurable('view', true); | ||||
|  | ||||
|     $fields['revision_translation_affected'] = BaseFieldDefinition::create('boolean') | ||||
|       ->setLabel(t('Revision translation affected')) | ||||
| @ -285,6 +308,26 @@ class OCCase extends RevisionableContentEntityBase implements OCCaseInterface { | ||||
|       ->setRevisionable(TRUE) | ||||
|       ->setTranslatable(TRUE); | ||||
|  | ||||
|     $fields['notes'] = BaseFieldDefinition::create('string_long') | ||||
|       ->setRevisionable(TRUE) | ||||
|       ->setLabel(t('Notes')) | ||||
|       ->setSettings(array( | ||||
|         'default_value' => '', | ||||
|         'max_length' => 255, | ||||
|         'text_processing' => 0, | ||||
|       )) | ||||
|       ->setDisplayConfigurable('form', true) | ||||
|       ->setDisplayConfigurable('view', true); | ||||
|  | ||||
|  | ||||
|     $fields['total_fee'] = BaseFieldDefinition::create('decimal') | ||||
|     ->setLabel(t('Total Fee')) | ||||
|     ->setRevisionable(TRUE) | ||||
|     ->setSettings([ | ||||
|       'prefix' => '£', | ||||
|     ]) | ||||
|     ->SetDisplayConfigurable("view", true); | ||||
|  | ||||
|     return $fields; | ||||
|   } | ||||
| } | ||||
|  | ||||
							
								
								
									
										303
									
								
								modules/opencase_cases/src/Entity/OCCaseFee.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										303
									
								
								modules/opencase_cases/src/Entity/OCCaseFee.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,303 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases\Entity; | ||||
|  | ||||
| use Drupal\Core\Entity\EntityStorageInterface; | ||||
| use Drupal\Core\Field\BaseFieldDefinition; | ||||
| use Drupal\Core\Entity\EditorialContentEntityBase; | ||||
| use Drupal\Core\Entity\RevisionableInterface; | ||||
| use Drupal\Core\Entity\EntityChangedTrait; | ||||
| use Drupal\Core\Entity\EntityPublishedTrait; | ||||
| use Drupal\Core\Entity\EntityTypeInterface; | ||||
| use Drupal\user\UserInterface; | ||||
|  | ||||
| /** | ||||
|  * Defines the Case Fee entity. | ||||
|  * | ||||
|  * @ingroup opencase_cases | ||||
|  * | ||||
|  * @ContentEntityType( | ||||
|  *   id = "oc_case_fee", | ||||
|  *   label = @Translation("Case Fee"), | ||||
|  *   bundle_label = @Translation("Case Fee type"), | ||||
|  *   handlers = { | ||||
|  *     "storage" = "Drupal\opencase_cases\OCCaseFeeStorage", | ||||
|  *     "view_builder" = "Drupal\Core\Entity\EntityViewBuilder", | ||||
|  *     "list_builder" = "Drupal\opencase_cases\OCCaseFeeListBuilder", | ||||
|  *     "views_data" = "Drupal\opencase_cases\Entity\OCCaseFeeViewsData", | ||||
|  *     "translation" = "Drupal\opencase_cases\OCCaseFeeTranslationHandler", | ||||
|  * | ||||
|  *     "form" = { | ||||
|  *       "default" = "Drupal\opencase_cases\Form\OCCaseFeeForm", | ||||
|  *       "add" = "Drupal\opencase_cases\Form\OCCaseFeeForm", | ||||
|  *       "edit" = "Drupal\opencase_cases\Form\OCCaseFeeForm", | ||||
|  *       "delete" = "Drupal\opencase_cases\Form\OCCaseFeeDeleteForm", | ||||
|  *     }, | ||||
|  *     "route_provider" = { | ||||
|  *       "html" = "Drupal\opencase_cases\OCCaseFeeHtmlRouteProvider", | ||||
|  *     }, | ||||
|  *     "access" = "Drupal\opencase_cases\OCCaseFeeAccessControlHandler", | ||||
|  *   }, | ||||
|  *   base_table = "oc_case_fee", | ||||
|  *   data_table = "oc_case_fee_field_data", | ||||
|  *   revision_table = "oc_case_fee_revision", | ||||
|  *   revision_data_table = "oc_case_fee_field_revision", | ||||
|  *   translatable = TRUE, | ||||
|  *   permission_granularity = "bundle", | ||||
|  *   admin_permission = "administer case fee entities", | ||||
|  *   entity_keys = { | ||||
|  *     "id" = "id", | ||||
|  *     "revision" = "vid", | ||||
|  *     "bundle" = "type", | ||||
|  *     "label" = "name", | ||||
|  *     "uuid" = "uuid", | ||||
|  *     "uid" = "user_id", | ||||
|  *     "langcode" = "langcode", | ||||
|  *     "published" = "status", | ||||
|  *   }, | ||||
|  *   revision_metadata_keys = { | ||||
|  *     "revision_user" = "revision_user", | ||||
|  *     "revision_created" = "revision_created", | ||||
|  *     "revision_log_message" = "revision_log", | ||||
|  *   }, | ||||
|  *   links = { | ||||
|  *     "canonical" = "/opencase/oc_case_fee/{oc_case_fee}", | ||||
|  *     "add-page" = "/opencase/oc_case_fee/add", | ||||
|  *     "add-form" = "/opencase/oc_case_fee/add/{oc_case_fee_type}", | ||||
|  *     "edit-form" = "/opencase/oc_case_fee/{oc_case_fee}/edit", | ||||
|  *     "delete-form" = "/opencase/oc_case_fee/{oc_case_fee}/delete", | ||||
|  *     "version-history" = "/opencase/oc_case_fee/{oc_case_fee}/revisions", | ||||
|  *     "revision" = "/opencase/oc_case_fee/{oc_case_fee}/revisions/{oc_case_fee_revision}/view", | ||||
|  *     "revision_revert" = "/opencase/oc_case_fee/{oc_case_fee}/revisions/{oc_case_fee_revision}/revert", | ||||
|  *     "revision_delete" = "/opencase/oc_case_fee/{oc_case_fee}/revisions/{oc_case_fee_revision}/delete", | ||||
|  *     "translation_revert" = "/opencase/oc_case_fee/{oc_case_fee}/revisions/{oc_case_fee_revision}/revert/{langcode}", | ||||
|  *     "collection" = "/opencase/oc_case_fee", | ||||
|  *   }, | ||||
|  *   bundle_entity_type = "oc_case_fee_type", | ||||
|  *   field_ui_base_route = "entity.oc_case_fee_type.edit_form" | ||||
|  * ) | ||||
|  */ | ||||
| class OCCaseFee extends EditorialContentEntityBase implements OCCaseFeeInterface { | ||||
|  | ||||
|   use EntityChangedTrait; | ||||
|   use EntityPublishedTrait; | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public static function preCreate(EntityStorageInterface $storage_controller, array &$values) { | ||||
|     parent::preCreate($storage_controller, $values); | ||||
|     $values += [ | ||||
|       'user_id' => \Drupal::currentUser()->id(), | ||||
|     ]; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   protected function urlRouteParameters($rel) { | ||||
|     $uri_route_parameters = parent::urlRouteParameters($rel); | ||||
|  | ||||
|     if ($rel === 'revision_revert' && $this instanceof RevisionableInterface) { | ||||
|       $uri_route_parameters[$this->getEntityTypeId() . '_revision'] = $this->getRevisionId(); | ||||
|     } | ||||
|     elseif ($rel === 'revision_delete' && $this instanceof RevisionableInterface) { | ||||
|       $uri_route_parameters[$this->getEntityTypeId() . '_revision'] = $this->getRevisionId(); | ||||
|     } | ||||
|  | ||||
|     return $uri_route_parameters; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function preSave(EntityStorageInterface $storage) { | ||||
|     parent::preSave($storage); | ||||
|  | ||||
|     foreach (array_keys($this->getTranslationLanguages()) as $langcode) { | ||||
|       $translation = $this->getTranslation($langcode); | ||||
|  | ||||
|       // If no owner has been set explicitly, make the anonymous user the owner. | ||||
|       if (!$translation->getOwner()) { | ||||
|         $translation->setOwnerId(0); | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     // If no revision author has been set explicitly, | ||||
|     // make the oc_case_fee owner the revision author. | ||||
|     if (!$this->getRevisionUser()) { | ||||
|       $this->setRevisionUserId($this->getOwnerId()); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getName() { | ||||
|     return $this->get('name')->value; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function setName($name) { | ||||
|     $this->set('name', $name); | ||||
|     return $this; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getCreatedTime() { | ||||
|     return $this->get('created')->value; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function setCreatedTime($timestamp) { | ||||
|     $this->set('created', $timestamp); | ||||
|     return $this; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getOwner() { | ||||
|     return $this->get('user_id')->entity; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getOwnerId() { | ||||
|     return $this->get('user_id')->target_id; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function setOwnerId($uid) { | ||||
|     $this->set('user_id', $uid); | ||||
|     return $this; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function setOwner(UserInterface $account) { | ||||
|     $this->set('user_id', $account->id()); | ||||
|     return $this; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public static function baseFieldDefinitions(EntityTypeInterface $entity_type) { | ||||
|     $fields = parent::baseFieldDefinitions($entity_type); | ||||
|  | ||||
|     // Add the published field. | ||||
|     $fields += static::publishedBaseFieldDefinitions($entity_type); | ||||
|  | ||||
|     $fields['user_id'] = BaseFieldDefinition::create('entity_reference') | ||||
|       ->setLabel(t('Authored by')) | ||||
|       ->setDescription(t('The user ID of author of the Case Fee entity.')) | ||||
|       ->setRevisionable(TRUE) | ||||
|       ->setSetting('target_type', 'user') | ||||
|       ->setSetting('handler', 'default') | ||||
|       ->setTranslatable(TRUE) | ||||
|       ->setDisplayOptions('view', [ | ||||
|         'label' => 'hidden', | ||||
|         'type' => 'author', | ||||
|         'weight' => 0, | ||||
|       ]) | ||||
|       ->setDisplayOptions('form', [ | ||||
|         'type' => 'entity_reference_autocomplete', | ||||
|         'weight' => 5, | ||||
|         'settings' => [ | ||||
|           'match_operator' => 'CONTAINS', | ||||
|           'size' => '60', | ||||
|           'autocomplete_type' => 'tags', | ||||
|           'placeholder' => '', | ||||
|         ], | ||||
|       ]) | ||||
|       ->setDisplayConfigurable('form', TRUE) | ||||
|       ->setDisplayConfigurable('view', TRUE); | ||||
|  | ||||
|     $fields['name'] = BaseFieldDefinition::create('string') | ||||
|       ->setLabel(t('Name')) | ||||
|       ->setDescription(t('The name of the Case Fee entity.')) | ||||
|       ->setRevisionable(TRUE) | ||||
|       ->setSettings([ | ||||
|         'max_length' => 50, | ||||
|         'text_processing' => 0, | ||||
|       ]) | ||||
|       ->setDefaultValue('') | ||||
|       ->setDisplayOptions('view', [ | ||||
|         'label' => 'above', | ||||
|         'type' => 'string', | ||||
|         'weight' => -4, | ||||
|       ]) | ||||
|       ->setDisplayOptions('form', [ | ||||
|         'type' => 'string_textfield', | ||||
|         'weight' => -4, | ||||
|       ]) | ||||
|       ->setDisplayConfigurable('form', TRUE) | ||||
|       ->setDisplayConfigurable('view', TRUE) | ||||
|       ->setRequired(TRUE); | ||||
|  | ||||
|     $fields['status']->setDescription(t('A boolean indicating whether the Case Fee is published.')) | ||||
|       ->setDisplayConfigurable('form', TRUE) | ||||
|       ->setDisplayConfigurable('view', TRUE); | ||||
|  | ||||
|     $fields['created'] = BaseFieldDefinition::create('created') | ||||
|       ->setLabel(t('Created')) | ||||
|       ->setDescription(t('The time that the entity was created.')); | ||||
|  | ||||
|     $fields['changed'] = BaseFieldDefinition::create('changed') | ||||
|       ->setLabel(t('Changed')) | ||||
|       ->setDescription(t('The time that the entity was last edited.')); | ||||
|  | ||||
|     $fields['revision_translation_affected'] = BaseFieldDefinition::create('boolean') | ||||
|       ->setLabel(t('Revision translation affected')) | ||||
|       ->setDescription(t('Indicates if the last edit of a translation belongs to current revision.')) | ||||
|       ->setReadOnly(TRUE) | ||||
|       ->setRevisionable(TRUE) | ||||
|       ->setTranslatable(TRUE); | ||||
|  | ||||
|     $fields['oc_case'] = \Drupal\Core\Field\BaseFieldDefinition::create('entity_reference') | ||||
|       ->setLabel(t('Case')) | ||||
|       ->setSetting('target_type', 'oc_case') | ||||
|       ->setSetting('handler', 'default') | ||||
|       ->setTranslatable(TRUE) | ||||
|       ->setCardinality(1) | ||||
|       ->setDefaultValueCallback('opencase_cases_default_case_id')  // defined in opencase_cases.module | ||||
|       ->setDisplayConfigurable("view", true) | ||||
|       ->setDisplayConfigurable("form", true) | ||||
|       ->setRequired(TRUE); | ||||
|  | ||||
|     $fields['oc_fee_category'] = \Drupal\Core\Field\BaseFieldDefinition::create('entity_reference') | ||||
|       ->setLabel(t('Fee Category')) | ||||
|       ->setSetting('target_type', 'taxonomy_term') | ||||
|       ->setSetting('handler_settings', ['target_bundles' => ['oc_fee_category' => 'oc_fee_category']]) | ||||
|       ->setSetting('handler', 'default') | ||||
|       ->setTranslatable(TRUE) | ||||
|       ->setCardinality(1) | ||||
|       ->setDisplayConfigurable("view", true) | ||||
|       ->setDisplayConfigurable("form", true) | ||||
|       ->setRequired(FALSE); | ||||
|  | ||||
|     $fields['amount'] = BaseFieldDefinition::create('decimal') | ||||
|       ->setLabel(t('Amount')) | ||||
|       ->setRevisionable(TRUE) | ||||
|       ->setSettings([ | ||||
|         'prefix' => '£', | ||||
|       ]) | ||||
|       ->setRequired(TRUE) | ||||
|       ->SetDisplayConfigurable("form", true) | ||||
|       ->SetDisplayConfigurable("view", true); | ||||
|  | ||||
|     return $fields; | ||||
|   } | ||||
|  | ||||
| } | ||||
							
								
								
									
										98
									
								
								modules/opencase_cases/src/Entity/OCCaseFeeInterface.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								modules/opencase_cases/src/Entity/OCCaseFeeInterface.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,98 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases\Entity; | ||||
|  | ||||
| use Drupal\Core\Entity\ContentEntityInterface; | ||||
| use Drupal\Core\Entity\RevisionLogInterface; | ||||
| use Drupal\Core\Entity\EntityChangedInterface; | ||||
| use Drupal\Core\Entity\EntityPublishedInterface; | ||||
| use Drupal\user\EntityOwnerInterface; | ||||
|  | ||||
| /** | ||||
|  * Provides an interface for defining Case Fee entities. | ||||
|  * | ||||
|  * @ingroup opencase_cases | ||||
|  */ | ||||
| interface OCCaseFeeInterface extends ContentEntityInterface, RevisionLogInterface, EntityChangedInterface, EntityPublishedInterface, EntityOwnerInterface { | ||||
|  | ||||
|   /** | ||||
|    * Add get/set methods for your configuration properties here. | ||||
|    */ | ||||
|  | ||||
|   /** | ||||
|    * Gets the Case Fee name. | ||||
|    * | ||||
|    * @return string | ||||
|    *   Name of the Case Fee. | ||||
|    */ | ||||
|   public function getName(); | ||||
|  | ||||
|   /** | ||||
|    * Sets the Case Fee name. | ||||
|    * | ||||
|    * @param string $name | ||||
|    *   The Case Fee name. | ||||
|    * | ||||
|    * @return \Drupal\opencase_cases\Entity\OCCaseFeeInterface | ||||
|    *   The called Case Fee entity. | ||||
|    */ | ||||
|   public function setName($name); | ||||
|  | ||||
|   /** | ||||
|    * Gets the Case Fee creation timestamp. | ||||
|    * | ||||
|    * @return int | ||||
|    *   Creation timestamp of the Case Fee. | ||||
|    */ | ||||
|   public function getCreatedTime(); | ||||
|  | ||||
|   /** | ||||
|    * Sets the Case Fee creation timestamp. | ||||
|    * | ||||
|    * @param int $timestamp | ||||
|    *   The Case Fee creation timestamp. | ||||
|    * | ||||
|    * @return \Drupal\opencase_cases\Entity\OCCaseFeeInterface | ||||
|    *   The called Case Fee entity. | ||||
|    */ | ||||
|   public function setCreatedTime($timestamp); | ||||
|  | ||||
|   /** | ||||
|    * Gets the Case Fee revision creation timestamp. | ||||
|    * | ||||
|    * @return int | ||||
|    *   The UNIX timestamp of when this revision was created. | ||||
|    */ | ||||
|   public function getRevisionCreationTime(); | ||||
|  | ||||
|   /** | ||||
|    * Sets the Case Fee revision creation timestamp. | ||||
|    * | ||||
|    * @param int $timestamp | ||||
|    *   The UNIX timestamp of when this revision was created. | ||||
|    * | ||||
|    * @return \Drupal\opencase_cases\Entity\OCCaseFeeInterface | ||||
|    *   The called Case Fee entity. | ||||
|    */ | ||||
|   public function setRevisionCreationTime($timestamp); | ||||
|  | ||||
|   /** | ||||
|    * Gets the Case Fee revision author. | ||||
|    * | ||||
|    * @return \Drupal\user\UserInterface | ||||
|    *   The user entity for the revision author. | ||||
|    */ | ||||
|   public function getRevisionUser(); | ||||
|  | ||||
|   /** | ||||
|    * Sets the Case Fee revision author. | ||||
|    * | ||||
|    * @param int $uid | ||||
|    *   The user ID of the revision author. | ||||
|    * | ||||
|    * @return \Drupal\opencase_cases\Entity\OCCaseFeeInterface | ||||
|    *   The called Case Fee entity. | ||||
|    */ | ||||
|   public function setRevisionUserId($uid); | ||||
|  | ||||
| } | ||||
							
								
								
									
										63
									
								
								modules/opencase_cases/src/Entity/OCCaseFeeType.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								modules/opencase_cases/src/Entity/OCCaseFeeType.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,63 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases\Entity; | ||||
|  | ||||
| use Drupal\Core\Config\Entity\ConfigEntityBundleBase; | ||||
|  | ||||
| /** | ||||
|  * Defines the Case Fee type entity. | ||||
|  * | ||||
|  * @ConfigEntityType( | ||||
|  *   id = "oc_case_fee_type", | ||||
|  *   label = @Translation("Case Fee type"), | ||||
|  *   handlers = { | ||||
|  *     "view_builder" = "Drupal\Core\Entity\EntityViewBuilder", | ||||
|  *     "list_builder" = "Drupal\opencase_cases\OCCaseFeeTypeListBuilder", | ||||
|  *     "form" = { | ||||
|  *       "add" = "Drupal\opencase_cases\Form\OCCaseFeeTypeForm", | ||||
|  *       "edit" = "Drupal\opencase_cases\Form\OCCaseFeeTypeForm", | ||||
|  *       "delete" = "Drupal\opencase_cases\Form\OCCaseFeeTypeDeleteForm" | ||||
|  *     }, | ||||
|  *     "route_provider" = { | ||||
|  *       "html" = "Drupal\opencase_cases\OCCaseFeeTypeHtmlRouteProvider", | ||||
|  *     }, | ||||
|  *   }, | ||||
|  *   config_prefix = "oc_case_fee_type", | ||||
|  *   admin_permission = "administer site configuration", | ||||
|  *   bundle_of = "oc_case_fee", | ||||
|  *   entity_keys = { | ||||
|  *     "id" = "id", | ||||
|  *     "label" = "label", | ||||
|  *     "uuid" = "uuid" | ||||
|  *   }, | ||||
|  *   config_export = { | ||||
|  *     "id" = "id", | ||||
|  *     "label" = "label", | ||||
|  *     "uuid" = "uuid" | ||||
|  *   }, | ||||
|  *   links = { | ||||
|  *     "canonical" = "/opencase/oc_case_fee_type/{oc_case_fee_type}", | ||||
|  *     "add-form" = "/opencase/oc_case_fee_type/add", | ||||
|  *     "edit-form" = "/opencase/oc_case_fee_type/{oc_case_fee_type}/edit", | ||||
|  *     "delete-form" = "/opencase/oc_case_fee_type/{oc_case_fee_type}/delete", | ||||
|  *     "collection" = "/opencase/oc_case_fee_type" | ||||
|  *   } | ||||
|  * ) | ||||
|  */ | ||||
| class OCCaseFeeType extends ConfigEntityBundleBase implements OCCaseFeeTypeInterface { | ||||
|  | ||||
|   /** | ||||
|    * The Case Fee type ID. | ||||
|    * | ||||
|    * @var string | ||||
|    */ | ||||
|   protected $id; | ||||
|  | ||||
|   /** | ||||
|    * The Case Fee type label. | ||||
|    * | ||||
|    * @var string | ||||
|    */ | ||||
|   protected $label; | ||||
|  | ||||
| } | ||||
							
								
								
									
										13
									
								
								modules/opencase_cases/src/Entity/OCCaseFeeTypeInterface.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								modules/opencase_cases/src/Entity/OCCaseFeeTypeInterface.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases\Entity; | ||||
|  | ||||
| use Drupal\Core\Config\Entity\ConfigEntityInterface; | ||||
|  | ||||
| /** | ||||
|  * Provides an interface for defining Case Fee type entities. | ||||
|  */ | ||||
| interface OCCaseFeeTypeInterface extends ConfigEntityInterface { | ||||
|  | ||||
|   // Add get/set methods for your configuration properties here. | ||||
| } | ||||
							
								
								
									
										23
									
								
								modules/opencase_cases/src/Entity/OCCaseFeeViewsData.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								modules/opencase_cases/src/Entity/OCCaseFeeViewsData.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,23 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases\Entity; | ||||
|  | ||||
| use Drupal\views\EntityViewsData; | ||||
|  | ||||
| /** | ||||
|  * Provides Views data for Case Fee entities. | ||||
|  */ | ||||
| class OCCaseFeeViewsData extends EntityViewsData { | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getViewsData() { | ||||
|     $data = parent::getViewsData(); | ||||
|  | ||||
|     // Additional information for Views integration, such as table joins, can be | ||||
|     // put here. | ||||
|     return $data; | ||||
|   } | ||||
|  | ||||
| } | ||||
							
								
								
									
										314
									
								
								modules/opencase_cases/src/Entity/OCCaseProvision.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										314
									
								
								modules/opencase_cases/src/Entity/OCCaseProvision.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,314 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases\Entity; | ||||
|  | ||||
| use Drupal\Core\Entity\EntityStorageInterface; | ||||
| use Drupal\Core\Field\BaseFieldDefinition; | ||||
| use Drupal\Core\Entity\EditorialContentEntityBase; | ||||
| use Drupal\Core\Entity\RevisionableInterface; | ||||
| use Drupal\Core\Entity\EntityChangedTrait; | ||||
| use Drupal\Core\Entity\EntityPublishedTrait; | ||||
| use Drupal\Core\Entity\EntityTypeInterface; | ||||
| use Drupal\user\UserInterface; | ||||
|  | ||||
| /** | ||||
|  * Defines the Case Provision entity. | ||||
|  * | ||||
|  * @ingroup opencase_cases | ||||
|  * | ||||
|  * @ContentEntityType( | ||||
|  *   id = "oc_case_provision", | ||||
|  *   label = @Translation("Case Provision"), | ||||
|  *   bundle_label = @Translation("Case Provision type"), | ||||
|  *   handlers = { | ||||
|  *     "storage" = "Drupal\opencase_cases\OCCaseProvisionStorage", | ||||
|  *     "view_builder" = "Drupal\Core\Entity\EntityViewBuilder", | ||||
|  *     "list_builder" = "Drupal\opencase_cases\OCCaseProvisionListBuilder", | ||||
|  *     "views_data" = "Drupal\opencase_cases\Entity\OCCaseProvisionViewsData", | ||||
|  *     "translation" = "Drupal\opencase_cases\OCCaseProvisionTranslationHandler", | ||||
|  * | ||||
|  *     "form" = { | ||||
|  *       "default" = "Drupal\opencase_cases\Form\OCCaseProvisionForm", | ||||
|  *       "add" = "Drupal\opencase_cases\Form\OCCaseProvisionForm", | ||||
|  *       "edit" = "Drupal\opencase_cases\Form\OCCaseProvisionForm", | ||||
|  *       "delete" = "Drupal\opencase_cases\Form\OCCaseProvisionDeleteForm", | ||||
|  *     }, | ||||
|  *     "route_provider" = { | ||||
|  *       "html" = "Drupal\opencase_cases\OCCaseProvisionHtmlRouteProvider", | ||||
|  *     }, | ||||
|  *     "access" = "Drupal\opencase_cases\OCCaseProvisionAccessControlHandler", | ||||
|  *   }, | ||||
|  *   base_table = "oc_case_provision", | ||||
|  *   data_table = "oc_case_provision_field_data", | ||||
|  *   revision_table = "oc_case_provision_revision", | ||||
|  *   revision_data_table = "oc_case_provision_field_revision", | ||||
|  *   translatable = TRUE, | ||||
|  *   permission_granularity = "bundle", | ||||
|  *   admin_permission = "administer case provision entities", | ||||
|  *   entity_keys = { | ||||
|  *     "id" = "id", | ||||
|  *     "revision" = "vid", | ||||
|  *     "bundle" = "type", | ||||
|  *     "label" = "name", | ||||
|  *     "uuid" = "uuid", | ||||
|  *     "uid" = "user_id", | ||||
|  *     "langcode" = "langcode", | ||||
|  *     "published" = "status", | ||||
|  *   }, | ||||
|  *   revision_metadata_keys = { | ||||
|  *     "revision_user" = "revision_user", | ||||
|  *     "revision_created" = "revision_created", | ||||
|  *     "revision_log_message" = "revision_log", | ||||
|  *   }, | ||||
|  *   links = { | ||||
|  *     "canonical" = "/opencase/oc_case_provision/{oc_case_provision}", | ||||
|  *     "add-page" = "/opencase/oc_case_provision/add", | ||||
|  *     "add-form" = "/opencase/oc_case_provision/add/{oc_case_provision_type}", | ||||
|  *     "edit-form" = "/opencase/oc_case_provision/{oc_case_provision}/edit", | ||||
|  *     "delete-form" = "/opencase/oc_case_provision/{oc_case_provision}/delete", | ||||
|  *     "version-history" = "/opencase/oc_case_provision/{oc_case_provision}/revisions", | ||||
|  *     "revision" = "/opencase/oc_case_provision/{oc_case_provision}/revisions/{oc_case_provision_revision}/view", | ||||
|  *     "revision_revert" = "/opencase/oc_case_provision/{oc_case_provision}/revisions/{oc_case_provision_revision}/revert", | ||||
|  *     "revision_delete" = "/opencase/oc_case_provision/{oc_case_provision}/revisions/{oc_case_provision_revision}/delete", | ||||
|  *     "translation_revert" = "/opencase/oc_case_provision/{oc_case_provision}/revisions/{oc_case_provision_revision}/revert/{langcode}", | ||||
|  *     "collection" = "/opencase/oc_case_provision", | ||||
|  *   }, | ||||
|  *   bundle_entity_type = "oc_case_provision_type", | ||||
|  *   field_ui_base_route = "entity.oc_case_provision_type.edit_form" | ||||
|  * ) | ||||
|  */ | ||||
| class OCCaseProvision extends EditorialContentEntityBase implements OCCaseProvisionInterface { | ||||
|  | ||||
|   use EntityChangedTrait; | ||||
|   use EntityPublishedTrait; | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public static function preCreate(EntityStorageInterface $storage_controller, array &$values) { | ||||
|     parent::preCreate($storage_controller, $values); | ||||
|     $values += [ | ||||
|       'user_id' => \Drupal::currentUser()->id(), | ||||
|     ]; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   protected function urlRouteParameters($rel) { | ||||
|     $uri_route_parameters = parent::urlRouteParameters($rel); | ||||
|  | ||||
|     if ($rel === 'revision_revert' && $this instanceof RevisionableInterface) { | ||||
|       $uri_route_parameters[$this->getEntityTypeId() . '_revision'] = $this->getRevisionId(); | ||||
|     } | ||||
|     elseif ($rel === 'revision_delete' && $this instanceof RevisionableInterface) { | ||||
|       $uri_route_parameters[$this->getEntityTypeId() . '_revision'] = $this->getRevisionId(); | ||||
|     } | ||||
|  | ||||
|     return $uri_route_parameters; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function preSave(EntityStorageInterface $storage) { | ||||
|     parent::preSave($storage); | ||||
|  | ||||
|     foreach (array_keys($this->getTranslationLanguages()) as $langcode) { | ||||
|       $translation = $this->getTranslation($langcode); | ||||
|  | ||||
|       // If no owner has been set explicitly, make the anonymous user the owner. | ||||
|       if (!$translation->getOwner()) { | ||||
|         $translation->setOwnerId(0); | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     // If no revision author has been set explicitly, | ||||
|     // make the oc_case_provision owner the revision author. | ||||
|     if (!$this->getRevisionUser()) { | ||||
|       $this->setRevisionUserId($this->getOwnerId()); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getName() { | ||||
|     return $this->get('name')->value; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function setName($name) { | ||||
|     $this->set('name', $name); | ||||
|     return $this; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getCreatedTime() { | ||||
|     return $this->get('created')->value; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function setCreatedTime($timestamp) { | ||||
|     $this->set('created', $timestamp); | ||||
|     return $this; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getOwner() { | ||||
|     return $this->get('user_id')->entity; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getOwnerId() { | ||||
|     return $this->get('user_id')->target_id; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function setOwnerId($uid) { | ||||
|     $this->set('user_id', $uid); | ||||
|     return $this; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function setOwner(UserInterface $account) { | ||||
|     $this->set('user_id', $account->id()); | ||||
|     return $this; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public static function baseFieldDefinitions(EntityTypeInterface $entity_type) { | ||||
|     $fields = parent::baseFieldDefinitions($entity_type); | ||||
|  | ||||
|     // Add the published field. | ||||
|     $fields += static::publishedBaseFieldDefinitions($entity_type); | ||||
|  | ||||
|     $fields['user_id'] = BaseFieldDefinition::create('entity_reference') | ||||
|       ->setLabel(t('Authored by')) | ||||
|       ->setDescription(t('The user ID of author of the Case Provision entity.')) | ||||
|       ->setRevisionable(TRUE) | ||||
|       ->setSetting('target_type', 'user') | ||||
|       ->setSetting('handler', 'default') | ||||
|       ->setTranslatable(TRUE) | ||||
|       ->setDisplayOptions('view', [ | ||||
|         'label' => 'hidden', | ||||
|         'type' => 'author', | ||||
|         'weight' => 0, | ||||
|       ]) | ||||
|       ->setDisplayOptions('form', [ | ||||
|         'type' => 'entity_reference_autocomplete', | ||||
|         'weight' => 5, | ||||
|         'settings' => [ | ||||
|           'match_operator' => 'CONTAINS', | ||||
|           'size' => '60', | ||||
|           'autocomplete_type' => 'tags', | ||||
|           'placeholder' => '', | ||||
|         ], | ||||
|       ]) | ||||
|       ->setDisplayConfigurable('form', TRUE) | ||||
|       ->setDisplayConfigurable('view', TRUE); | ||||
|  | ||||
|     $fields['name'] = BaseFieldDefinition::create('string') | ||||
|       ->setLabel(t('Name')) | ||||
|       ->setDescription(t('The name of the Case Provision entity.')) | ||||
|       ->setRevisionable(TRUE) | ||||
|       ->setSettings([ | ||||
|         'max_length' => 50, | ||||
|         'text_processing' => 0, | ||||
|       ]) | ||||
|       ->setDefaultValue('') | ||||
|       ->setDisplayOptions('view', [ | ||||
|         'label' => 'above', | ||||
|         'type' => 'string', | ||||
|         'weight' => -4, | ||||
|       ]) | ||||
|       ->setDisplayOptions('form', [ | ||||
|         'type' => 'string_textfield', | ||||
|         'weight' => -4, | ||||
|       ]) | ||||
|       ->setDisplayConfigurable('form', TRUE) | ||||
|       ->setDisplayConfigurable('view', TRUE) | ||||
|       ->setRequired(TRUE); | ||||
|  | ||||
|  | ||||
|       $fields['status'] = BaseFieldDefinition::create('boolean') | ||||
|       ->setLabel(t('Visible')) | ||||
|       ->setDescription('If this box is not ticked this record will be hidden from view for most users. Users with access to unpublished entities will be able to restore it if needed.') | ||||
|       ->setRevisionable(TRUE) | ||||
|       ->setDisplayConfigurable('form', TRUE) | ||||
|       ->setDefaultValue(TRUE); | ||||
|  | ||||
|  | ||||
|     $fields['created'] = BaseFieldDefinition::create('created') | ||||
|       ->setLabel(t('Created')) | ||||
|       ->setDescription(t('The time that the entity was created.')); | ||||
|  | ||||
|     $fields['changed'] = BaseFieldDefinition::create('changed') | ||||
|       ->setLabel(t('Changed')) | ||||
|       ->setDescription(t('The time that the entity was last edited.')); | ||||
|  | ||||
|     $fields['revision_translation_affected'] = BaseFieldDefinition::create('boolean') | ||||
|       ->setLabel(t('Revision translation affected')) | ||||
|       ->setDescription(t('Indicates if the last edit of a translation belongs to current revision.')) | ||||
|       ->setReadOnly(TRUE) | ||||
|       ->setRevisionable(TRUE) | ||||
|       ->setTranslatable(TRUE); | ||||
|  | ||||
|     $fields['oc_case'] = \Drupal\Core\Field\BaseFieldDefinition::create('entity_reference') | ||||
|       ->setLabel(t('Case')) | ||||
|       ->setSetting('target_type', 'oc_case') | ||||
|       ->setSetting('handler', 'default') | ||||
|       ->setTranslatable(TRUE) | ||||
|       ->setCardinality(1) | ||||
|       ->setDefaultValueCallback('opencase_cases_default_case_id')  // defined in opencase_cases.module | ||||
|       ->setDisplayConfigurable('form', TRUE) | ||||
|       ->setDisplayConfigurable('view', TRUE) | ||||
|       ->setRequired(TRUE); | ||||
|  | ||||
|     $fields['oc_provider'] = \Drupal\Core\Field\BaseFieldDefinition::create('entity_reference') | ||||
|       ->setLabel(t('Provider')) | ||||
|       ->setSetting('target_type', 'oc_actor') // TODO: this should eventually point to a Provider rather than an Actor | ||||
|       ->setSetting('handler', 'views') | ||||
|       ->setTranslatable(TRUE) | ||||
|       ->setCardinality(1) | ||||
|       ->setSetting('handler_settings', [ | ||||
|         'view' => [ | ||||
|           'view_name' => 'case_providers', | ||||
|           'display_name' => 'entity_reference_1', | ||||
|           'arguments' => [], | ||||
|         ] | ||||
|       ]) | ||||
|       ->setDisplayConfigurable("view", true) | ||||
|       ->setDisplayConfigurable("form", true) | ||||
|       ->setRequired(TRUE); | ||||
|  | ||||
|     $fields['oc_case_provider_role'] = \Drupal\Core\Field\BaseFieldDefinition::create('entity_reference')  | ||||
|       ->setLabel(t('Role')) | ||||
|       ->setSetting('target_type', 'taxonomy_term') | ||||
|       ->setSetting('handler_settings', ['target_bundles' => ['oc_case_provider_role' => 'oc_case_provider_role']]) | ||||
|       ->setSetting('handler', 'default') | ||||
|       ->setTranslatable(TRUE) | ||||
|       ->setCardinality(1) | ||||
|       ->setDisplayConfigurable("view", true) | ||||
|       ->setDisplayConfigurable("form", true) | ||||
|       ->setRequired(FALSE); | ||||
|     return $fields; | ||||
|   } | ||||
|  | ||||
| } | ||||
| @ -0,0 +1,98 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases\Entity; | ||||
|  | ||||
| use Drupal\Core\Entity\ContentEntityInterface; | ||||
| use Drupal\Core\Entity\RevisionLogInterface; | ||||
| use Drupal\Core\Entity\EntityChangedInterface; | ||||
| use Drupal\Core\Entity\EntityPublishedInterface; | ||||
| use Drupal\user\EntityOwnerInterface; | ||||
|  | ||||
| /** | ||||
|  * Provides an interface for defining Case Provision entities. | ||||
|  * | ||||
|  * @ingroup opencase_cases | ||||
|  */ | ||||
| interface OCCaseProvisionInterface extends ContentEntityInterface, RevisionLogInterface, EntityChangedInterface, EntityPublishedInterface, EntityOwnerInterface { | ||||
|  | ||||
|   /** | ||||
|    * Add get/set methods for your configuration properties here. | ||||
|    */ | ||||
|  | ||||
|   /** | ||||
|    * Gets the Case Provision name. | ||||
|    * | ||||
|    * @return string | ||||
|    *   Name of the Case Provision. | ||||
|    */ | ||||
|   public function getName(); | ||||
|  | ||||
|   /** | ||||
|    * Sets the Case Provision name. | ||||
|    * | ||||
|    * @param string $name | ||||
|    *   The Case Provision name. | ||||
|    * | ||||
|    * @return \Drupal\opencase_cases\Entity\OCCaseProvisionInterface | ||||
|    *   The called Case Provision entity. | ||||
|    */ | ||||
|   public function setName($name); | ||||
|  | ||||
|   /** | ||||
|    * Gets the Case Provision creation timestamp. | ||||
|    * | ||||
|    * @return int | ||||
|    *   Creation timestamp of the Case Provision. | ||||
|    */ | ||||
|   public function getCreatedTime(); | ||||
|  | ||||
|   /** | ||||
|    * Sets the Case Provision creation timestamp. | ||||
|    * | ||||
|    * @param int $timestamp | ||||
|    *   The Case Provision creation timestamp. | ||||
|    * | ||||
|    * @return \Drupal\opencase_cases\Entity\OCCaseProvisionInterface | ||||
|    *   The called Case Provision entity. | ||||
|    */ | ||||
|   public function setCreatedTime($timestamp); | ||||
|  | ||||
|   /** | ||||
|    * Gets the Case Provision revision creation timestamp. | ||||
|    * | ||||
|    * @return int | ||||
|    *   The UNIX timestamp of when this revision was created. | ||||
|    */ | ||||
|   public function getRevisionCreationTime(); | ||||
|  | ||||
|   /** | ||||
|    * Sets the Case Provision revision creation timestamp. | ||||
|    * | ||||
|    * @param int $timestamp | ||||
|    *   The UNIX timestamp of when this revision was created. | ||||
|    * | ||||
|    * @return \Drupal\opencase_cases\Entity\OCCaseProvisionInterface | ||||
|    *   The called Case Provision entity. | ||||
|    */ | ||||
|   public function setRevisionCreationTime($timestamp); | ||||
|  | ||||
|   /** | ||||
|    * Gets the Case Provision revision author. | ||||
|    * | ||||
|    * @return \Drupal\user\UserInterface | ||||
|    *   The user entity for the revision author. | ||||
|    */ | ||||
|   public function getRevisionUser(); | ||||
|  | ||||
|   /** | ||||
|    * Sets the Case Provision revision author. | ||||
|    * | ||||
|    * @param int $uid | ||||
|    *   The user ID of the revision author. | ||||
|    * | ||||
|    * @return \Drupal\opencase_cases\Entity\OCCaseProvisionInterface | ||||
|    *   The called Case Provision entity. | ||||
|    */ | ||||
|   public function setRevisionUserId($uid); | ||||
|  | ||||
| } | ||||
							
								
								
									
										63
									
								
								modules/opencase_cases/src/Entity/OCCaseProvisionType.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								modules/opencase_cases/src/Entity/OCCaseProvisionType.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,63 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases\Entity; | ||||
|  | ||||
| use Drupal\Core\Config\Entity\ConfigEntityBundleBase; | ||||
|  | ||||
| /** | ||||
|  * Defines the Case Provision type entity. | ||||
|  * | ||||
|  * @ConfigEntityType( | ||||
|  *   id = "oc_case_provision_type", | ||||
|  *   label = @Translation("Case Provision type"), | ||||
|  *   handlers = { | ||||
|  *     "view_builder" = "Drupal\Core\Entity\EntityViewBuilder", | ||||
|  *     "list_builder" = "Drupal\opencase_cases\OCCaseProvisionTypeListBuilder", | ||||
|  *     "form" = { | ||||
|  *       "add" = "Drupal\opencase_cases\Form\OCCaseProvisionTypeForm", | ||||
|  *       "edit" = "Drupal\opencase_cases\Form\OCCaseProvisionTypeForm", | ||||
|  *       "delete" = "Drupal\opencase_cases\Form\OCCaseProvisionTypeDeleteForm" | ||||
|  *     }, | ||||
|  *     "route_provider" = { | ||||
|  *       "html" = "Drupal\opencase_cases\OCCaseProvisionTypeHtmlRouteProvider", | ||||
|  *     }, | ||||
|  *   }, | ||||
|  *   config_prefix = "oc_case_provision_type", | ||||
|  *   admin_permission = "administer site configuration", | ||||
|  *   bundle_of = "oc_case_provision", | ||||
|  *   entity_keys = { | ||||
|  *     "id" = "id", | ||||
|  *     "label" = "label", | ||||
|  *     "uuid" = "uuid" | ||||
|  *   }, | ||||
|  *   config_export = { | ||||
|  *     "id" = "id", | ||||
|  *     "label" = "label", | ||||
|  *     "uuid" = "uuid" | ||||
|  *   }, | ||||
|  *   links = { | ||||
|  *     "canonical" = "/opencase/oc_case_provision_type/{oc_case_provision_type}", | ||||
|  *     "add-form" = "/opencase/oc_case_provision_type/add", | ||||
|  *     "edit-form" = "/opencase/oc_case_provision_type/{oc_case_provision_type}/edit", | ||||
|  *     "delete-form" = "/opencase/oc_case_provision_type/{oc_case_provision_type}/delete", | ||||
|  *     "collection" = "/opencase/oc_case_provision_type" | ||||
|  *   } | ||||
|  * ) | ||||
|  */ | ||||
| class OCCaseProvisionType extends ConfigEntityBundleBase implements OCCaseProvisionTypeInterface { | ||||
|  | ||||
|   /** | ||||
|    * The Case Provision type ID. | ||||
|    * | ||||
|    * @var string | ||||
|    */ | ||||
|   protected $id; | ||||
|  | ||||
|   /** | ||||
|    * The Case Provision type label. | ||||
|    * | ||||
|    * @var string | ||||
|    */ | ||||
|   protected $label; | ||||
|  | ||||
| } | ||||
| @ -0,0 +1,13 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases\Entity; | ||||
|  | ||||
| use Drupal\Core\Config\Entity\ConfigEntityInterface; | ||||
|  | ||||
| /** | ||||
|  * Provides an interface for defining Case Provision type entities. | ||||
|  */ | ||||
| interface OCCaseProvisionTypeInterface extends ConfigEntityInterface { | ||||
|  | ||||
|   // Add get/set methods for your configuration properties here. | ||||
| } | ||||
| @ -0,0 +1,23 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases\Entity; | ||||
|  | ||||
| use Drupal\views\EntityViewsData; | ||||
|  | ||||
| /** | ||||
|  * Provides Views data for Case Provision entities. | ||||
|  */ | ||||
| class OCCaseProvisionViewsData extends EntityViewsData { | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getViewsData() { | ||||
|     $data = parent::getViewsData(); | ||||
|  | ||||
|     // Additional information for Views integration, such as table joins, can be | ||||
|     // put here. | ||||
|     return $data; | ||||
|   } | ||||
|  | ||||
| } | ||||
| @ -31,6 +31,11 @@ use Drupal\Core\Config\Entity\ConfigEntityBundleBase; | ||||
|  *     "label" = "label", | ||||
|  *     "uuid" = "uuid" | ||||
|  *   }, | ||||
|  *   config_export = { | ||||
|  *     "id" = "id", | ||||
|  *     "label" = "label", | ||||
|  *     "uuid" = "uuid" | ||||
|  *   }, | ||||
|  *   links = { | ||||
|  *     "canonical" = "/admin/opencase/oc_case_type/{oc_case_type}", | ||||
|  *     "add-form" = "/admin/opencase/oc_case_type/add", | ||||
|  | ||||
							
								
								
									
										15
									
								
								modules/opencase_cases/src/Form/OCCaseFeeDeleteForm.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								modules/opencase_cases/src/Form/OCCaseFeeDeleteForm.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases\Form; | ||||
|  | ||||
| use Drupal\Core\Entity\ContentEntityDeleteForm; | ||||
|  | ||||
| /** | ||||
|  * Provides a form for deleting Case Fee entities. | ||||
|  * | ||||
|  * @ingroup opencase_cases | ||||
|  */ | ||||
| class OCCaseFeeDeleteForm extends ContentEntityDeleteForm { | ||||
|  | ||||
|  | ||||
| } | ||||
							
								
								
									
										78
									
								
								modules/opencase_cases/src/Form/OCCaseFeeForm.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								modules/opencase_cases/src/Form/OCCaseFeeForm.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,78 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases\Form; | ||||
|  | ||||
| use Drupal\Core\Entity\ContentEntityForm; | ||||
| use Drupal\Core\Form\FormStateInterface; | ||||
| use Symfony\Component\DependencyInjection\ContainerInterface; | ||||
|  | ||||
| /** | ||||
|  * Form controller for Case Fee edit forms. | ||||
|  * | ||||
|  * @ingroup opencase_cases | ||||
|  */ | ||||
| class OCCaseFeeForm extends ContentEntityForm { | ||||
|  | ||||
|   /** | ||||
|    * The current user account. | ||||
|    * | ||||
|    * @var \Drupal\Core\Session\AccountProxyInterface | ||||
|    */ | ||||
|   protected $account; | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public static function create(ContainerInterface $container) { | ||||
|     // Instantiates this form class. | ||||
|     $instance = parent::create($container); | ||||
|     $instance->account = $container->get('current_user'); | ||||
|     return $instance; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function buildForm(array $form, FormStateInterface $form_state) { | ||||
|     /* @var \Drupal\opencase_cases\Entity\OCCaseFee $entity */ | ||||
|     $form = parent::buildForm($form, $form_state); | ||||
|  | ||||
|     if (!$this->entity->isNew()) { | ||||
|       $form['new_revision'] = [ | ||||
|         '#type' => 'checkbox', | ||||
|         '#title' => $this->t('Create new revision'), | ||||
|         '#default_value' => FALSE, | ||||
|         '#weight' => 10, | ||||
|       ]; | ||||
|     } | ||||
|  | ||||
|     return $form; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function save(array $form, FormStateInterface $form_state) { | ||||
|     $entity = $this->entity; | ||||
|     $entity->setNewRevision(); | ||||
|     $entity->setRevisionCreationTime(REQUEST_TIME); | ||||
|     $entity->setRevisionUserId(\Drupal::currentUser()->id()); | ||||
|  | ||||
|     $status = parent::save($form, $form_state); | ||||
|  | ||||
|     switch ($status) { | ||||
|       case SAVED_NEW: | ||||
|         $this->messenger()->addMessage($this->t('Created the %label Case Fee.', [ | ||||
|           '%label' => $entity->label(), | ||||
|         ])); | ||||
|         break; | ||||
|  | ||||
|       default: | ||||
|         $this->messenger()->addMessage($this->t('Saved the %label Case Fee.', [ | ||||
|           '%label' => $entity->label(), | ||||
|         ])); | ||||
|     } | ||||
|     $form_state->setRedirect('entity.oc_case_fee.canonical', ['oc_case_fee' => $entity->id()]); | ||||
|   } | ||||
|  | ||||
| } | ||||
							
								
								
									
										108
									
								
								modules/opencase_cases/src/Form/OCCaseFeeRevisionDeleteForm.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										108
									
								
								modules/opencase_cases/src/Form/OCCaseFeeRevisionDeleteForm.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,108 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases\Form; | ||||
|  | ||||
| use Drupal\Core\Form\ConfirmFormBase; | ||||
| use Drupal\Core\Form\FormStateInterface; | ||||
| use Drupal\Core\Url; | ||||
| use Symfony\Component\DependencyInjection\ContainerInterface; | ||||
|  | ||||
| /** | ||||
|  * Provides a form for deleting a Case Fee revision. | ||||
|  * | ||||
|  * @ingroup opencase_cases | ||||
|  */ | ||||
| class OCCaseFeeRevisionDeleteForm extends ConfirmFormBase { | ||||
|  | ||||
|   /** | ||||
|    * The Case Fee revision. | ||||
|    * | ||||
|    * @var \Drupal\opencase_cases\Entity\OCCaseFeeInterface | ||||
|    */ | ||||
|   protected $revision; | ||||
|  | ||||
|   /** | ||||
|    * The Case Fee storage. | ||||
|    * | ||||
|    * @var \Drupal\Core\Entity\EntityStorageInterface | ||||
|    */ | ||||
|   protected $oCCaseFeeStorage; | ||||
|  | ||||
|   /** | ||||
|    * The database connection. | ||||
|    * | ||||
|    * @var \Drupal\Core\Database\Connection | ||||
|    */ | ||||
|   protected $connection; | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public static function create(ContainerInterface $container) { | ||||
|     $instance = parent::create($container); | ||||
|     $instance->oCCaseFeeStorage = $container->get('entity_type.manager')->getStorage('oc_case_fee'); | ||||
|     $instance->connection = $container->get('database'); | ||||
|     return $instance; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getFormId() { | ||||
|     return 'oc_case_fee_revision_delete_confirm'; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getQuestion() { | ||||
|     return $this->t('Are you sure you want to delete the revision from %revision-date?', [ | ||||
|       '%revision-date' => format_date($this->revision->getRevisionCreationTime()), | ||||
|     ]); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getCancelUrl() { | ||||
|     return new Url('entity.oc_case_fee.version_history', ['oc_case_fee' => $this->revision->id()]); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getConfirmText() { | ||||
|     return $this->t('Delete'); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function buildForm(array $form, FormStateInterface $form_state, $oc_case_fee_revision = NULL) { | ||||
|     $this->revision = $this->OCCaseFeeStorage->loadRevision($oc_case_fee_revision); | ||||
|     $form = parent::buildForm($form, $form_state); | ||||
|  | ||||
|     return $form; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function submitForm(array &$form, FormStateInterface $form_state) { | ||||
|     $this->OCCaseFeeStorage->deleteRevision($this->revision->getRevisionId()); | ||||
|  | ||||
|     $this->logger('content')->notice('Case Fee: deleted %title revision %revision.', ['%title' => $this->revision->label(), '%revision' => $this->revision->getRevisionId()]); | ||||
|     $this->messenger()->addMessage(t('Revision from %revision-date of Case Fee %title has been deleted.', ['%revision-date' => format_date($this->revision->getRevisionCreationTime()), '%title' => $this->revision->label()])); | ||||
|     $form_state->setRedirect( | ||||
|       'entity.oc_case_fee.canonical', | ||||
|        ['oc_case_fee' => $this->revision->id()] | ||||
|     ); | ||||
|     if ($this->connection->query('SELECT COUNT(DISTINCT vid) FROM {oc_case_fee_field_revision} WHERE id = :id', [':id' => $this->revision->id()])->fetchField() > 1) { | ||||
|       $form_state->setRedirect( | ||||
|         'entity.oc_case_fee.version_history', | ||||
|          ['oc_case_fee' => $this->revision->id()] | ||||
|       ); | ||||
|     } | ||||
|   } | ||||
|  | ||||
| } | ||||
							
								
								
									
										137
									
								
								modules/opencase_cases/src/Form/OCCaseFeeRevisionRevertForm.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										137
									
								
								modules/opencase_cases/src/Form/OCCaseFeeRevisionRevertForm.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,137 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases\Form; | ||||
|  | ||||
| use Drupal\Core\Form\ConfirmFormBase; | ||||
| use Drupal\Core\Form\FormStateInterface; | ||||
| use Drupal\Core\Url; | ||||
| use Drupal\opencase_cases\Entity\OCCaseFeeInterface; | ||||
| use Symfony\Component\DependencyInjection\ContainerInterface; | ||||
|  | ||||
| /** | ||||
|  * Provides a form for reverting a Case Fee revision. | ||||
|  * | ||||
|  * @ingroup opencase_cases | ||||
|  */ | ||||
| class OCCaseFeeRevisionRevertForm extends ConfirmFormBase { | ||||
|  | ||||
|   /** | ||||
|    * The Case Fee revision. | ||||
|    * | ||||
|    * @var \Drupal\opencase_cases\Entity\OCCaseFeeInterface | ||||
|    */ | ||||
|   protected $revision; | ||||
|  | ||||
|   /** | ||||
|    * The Case Fee storage. | ||||
|    * | ||||
|    * @var \Drupal\Core\Entity\EntityStorageInterface | ||||
|    */ | ||||
|   protected $oCCaseFeeStorage; | ||||
|  | ||||
|   /** | ||||
|    * The date formatter service. | ||||
|    * | ||||
|    * @var \Drupal\Core\Datetime\DateFormatterInterface | ||||
|    */ | ||||
|   protected $dateFormatter; | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public static function create(ContainerInterface $container) { | ||||
|     $instance = parent::create($container); | ||||
|     $instance->oCCaseFeeStorage = $container->get('entity_type.manager')->getStorage('oc_case_fee'); | ||||
|     $instance->dateFormatter = $container->get('date.formatter'); | ||||
|     return $instance; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getFormId() { | ||||
|     return 'oc_case_fee_revision_revert_confirm'; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getQuestion() { | ||||
|     return $this->t('Are you sure you want to revert to the revision from %revision-date?', [ | ||||
|       '%revision-date' => $this->dateFormatter->format($this->revision->getRevisionCreationTime()), | ||||
|     ]); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getCancelUrl() { | ||||
|     return new Url('entity.oc_case_fee.version_history', ['oc_case_fee' => $this->revision->id()]); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getConfirmText() { | ||||
|     return $this->t('Revert'); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getDescription() { | ||||
|     return ''; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function buildForm(array $form, FormStateInterface $form_state, $oc_case_fee_revision = NULL) { | ||||
|     $this->revision = $this->OCCaseFeeStorage->loadRevision($oc_case_fee_revision); | ||||
|     $form = parent::buildForm($form, $form_state); | ||||
|  | ||||
|     return $form; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function submitForm(array &$form, FormStateInterface $form_state) { | ||||
|     // The revision timestamp will be updated when the revision is saved. Keep | ||||
|     // the original one for the confirmation message. | ||||
|     $original_revision_timestamp = $this->revision->getRevisionCreationTime(); | ||||
|  | ||||
|     $this->revision = $this->prepareRevertedRevision($this->revision, $form_state); | ||||
|     $this->revision->revision_log = $this->t('Copy of the revision from %date.', [ | ||||
|       '%date' => $this->dateFormatter->format($original_revision_timestamp), | ||||
|     ]); | ||||
|     $this->revision->save(); | ||||
|  | ||||
|     $this->logger('content')->notice('Case Fee: reverted %title revision %revision.', ['%title' => $this->revision->label(), '%revision' => $this->revision->getRevisionId()]); | ||||
|     $this->messenger()->addMessage(t('Case Fee %title has been reverted to the revision from %revision-date.', ['%title' => $this->revision->label(), '%revision-date' => $this->dateFormatter->format($original_revision_timestamp)])); | ||||
|     $form_state->setRedirect( | ||||
|       'entity.oc_case_fee.version_history', | ||||
|       ['oc_case_fee' => $this->revision->id()] | ||||
|     ); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Prepares a revision to be reverted. | ||||
|    * | ||||
|    * @param \Drupal\opencase_cases\Entity\OCCaseFeeInterface $revision | ||||
|    *   The revision to be reverted. | ||||
|    * @param \Drupal\Core\Form\FormStateInterface $form_state | ||||
|    *   The current state of the form. | ||||
|    * | ||||
|    * @return \Drupal\opencase_cases\Entity\OCCaseFeeInterface | ||||
|    *   The prepared revision ready to be stored. | ||||
|    */ | ||||
|   protected function prepareRevertedRevision(OCCaseFeeInterface $revision, FormStateInterface $form_state) { | ||||
|     $revision->setNewRevision(); | ||||
|     $revision->isDefaultRevision(TRUE); | ||||
|     $revision->setRevisionCreationTime(REQUEST_TIME); | ||||
|  | ||||
|     return $revision; | ||||
|   } | ||||
|  | ||||
| } | ||||
| @ -0,0 +1,97 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases\Form; | ||||
|  | ||||
| use Drupal\Core\Form\FormStateInterface; | ||||
| use Drupal\opencase_cases\Entity\OCCaseFeeInterface; | ||||
| use Symfony\Component\DependencyInjection\ContainerInterface; | ||||
|  | ||||
| /** | ||||
|  * Provides a form for reverting a Case Fee revision for a single trans. | ||||
|  * | ||||
|  * @ingroup opencase_cases | ||||
|  */ | ||||
| class OCCaseFeeRevisionRevertTranslationForm extends OCCaseFeeRevisionRevertForm { | ||||
|  | ||||
|   /** | ||||
|    * The language to be reverted. | ||||
|    * | ||||
|    * @var string | ||||
|    */ | ||||
|   protected $langcode; | ||||
|  | ||||
|   /** | ||||
|    * The language manager. | ||||
|    * | ||||
|    * @var \Drupal\Core\Language\LanguageManagerInterface | ||||
|    */ | ||||
|   protected $languageManager; | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public static function create(ContainerInterface $container) { | ||||
|     $instance = parent::create($container); | ||||
|     $instance->languageManager = $container->get('language_manager'); | ||||
|     return $instance; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getFormId() { | ||||
|     return 'oc_case_fee_revision_revert_translation_confirm'; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getQuestion() { | ||||
|     return $this->t('Are you sure you want to revert @language translation to the revision from %revision-date?', [ | ||||
|       '@language' => $this->languageManager->getLanguageName($this->langcode), | ||||
|       '%revision-date' => $this->dateFormatter->format($this->revision->getRevisionCreationTime()), | ||||
|     ]); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function buildForm(array $form, FormStateInterface $form_state, $oc_case_fee_revision = NULL, $langcode = NULL) { | ||||
|     $this->langcode = $langcode; | ||||
|     $form = parent::buildForm($form, $form_state, $oc_case_fee_revision); | ||||
|  | ||||
|     $form['revert_untranslated_fields'] = [ | ||||
|       '#type' => 'checkbox', | ||||
|       '#title' => $this->t('Revert content shared among translations'), | ||||
|       '#default_value' => FALSE, | ||||
|     ]; | ||||
|  | ||||
|     return $form; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   protected function prepareRevertedRevision(OCCaseFeeInterface $revision, FormStateInterface $form_state) { | ||||
|     $revert_untranslated_fields = $form_state->getValue('revert_untranslated_fields'); | ||||
|  | ||||
|     /** @var \Drupal\opencase_cases\Entity\OCCaseFeeInterface $default_revision */ | ||||
|     $latest_revision = $this->OCCaseFeeStorage->load($revision->id()); | ||||
|     $latest_revision_translation = $latest_revision->getTranslation($this->langcode); | ||||
|  | ||||
|     $revision_translation = $revision->getTranslation($this->langcode); | ||||
|  | ||||
|     foreach ($latest_revision_translation->getFieldDefinitions() as $field_name => $definition) { | ||||
|       if ($definition->isTranslatable() || $revert_untranslated_fields) { | ||||
|         $latest_revision_translation->set($field_name, $revision_translation->get($field_name)->getValue()); | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     $latest_revision_translation->setNewRevision(); | ||||
|     $latest_revision_translation->isDefaultRevision(TRUE); | ||||
|     $revision->setRevisionCreationTime(REQUEST_TIME); | ||||
|  | ||||
|     return $latest_revision_translation; | ||||
|   } | ||||
|  | ||||
| } | ||||
							
								
								
									
										53
									
								
								modules/opencase_cases/src/Form/OCCaseFeeSettingsForm.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								modules/opencase_cases/src/Form/OCCaseFeeSettingsForm.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,53 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases\Form; | ||||
|  | ||||
| use Drupal\Core\Form\FormBase; | ||||
| use Drupal\Core\Form\FormStateInterface; | ||||
|  | ||||
| /** | ||||
|  * Class OCCaseFeeSettingsForm. | ||||
|  * | ||||
|  * @ingroup opencase_cases | ||||
|  */ | ||||
| class OCCaseFeeSettingsForm extends FormBase { | ||||
|  | ||||
|   /** | ||||
|    * Returns a unique string identifying the form. | ||||
|    * | ||||
|    * @return string | ||||
|    *   The unique string identifying the form. | ||||
|    */ | ||||
|   public function getFormId() { | ||||
|     return 'occasefee_settings'; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Form submission handler. | ||||
|    * | ||||
|    * @param array $form | ||||
|    *   An associative array containing the structure of the form. | ||||
|    * @param \Drupal\Core\Form\FormStateInterface $form_state | ||||
|    *   The current state of the form. | ||||
|    */ | ||||
|   public function submitForm(array &$form, FormStateInterface $form_state) { | ||||
|     // Empty implementation of the abstract submit class. | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Defines the settings form for Case Fee entities. | ||||
|    * | ||||
|    * @param array $form | ||||
|    *   An associative array containing the structure of the form. | ||||
|    * @param \Drupal\Core\Form\FormStateInterface $form_state | ||||
|    *   The current state of the form. | ||||
|    * | ||||
|    * @return array | ||||
|    *   Form definition array. | ||||
|    */ | ||||
|   public function buildForm(array $form, FormStateInterface $form_state) { | ||||
|     $form['occasefee_settings']['#markup'] = 'Settings form for Case Fee entities. Manage field settings here.'; | ||||
|     return $form; | ||||
|   } | ||||
|  | ||||
| } | ||||
							
								
								
									
										51
									
								
								modules/opencase_cases/src/Form/OCCaseFeeTypeDeleteForm.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								modules/opencase_cases/src/Form/OCCaseFeeTypeDeleteForm.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,51 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases\Form; | ||||
|  | ||||
| use Drupal\Core\Entity\EntityConfirmFormBase; | ||||
| use Drupal\Core\Form\FormStateInterface; | ||||
| use Drupal\Core\Url; | ||||
|  | ||||
| /** | ||||
|  * Builds the form to delete Case Fee type entities. | ||||
|  */ | ||||
| class OCCaseFeeTypeDeleteForm extends EntityConfirmFormBase { | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getQuestion() { | ||||
|     return $this->t('Are you sure you want to delete %name?', ['%name' => $this->entity->label()]); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getCancelUrl() { | ||||
|     return new Url('entity.oc_case_fee_type.collection'); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getConfirmText() { | ||||
|     return $this->t('Delete'); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function submitForm(array &$form, FormStateInterface $form_state) { | ||||
|     $this->entity->delete(); | ||||
|  | ||||
|     $this->messenger()->addMessage( | ||||
|       $this->t('content @type: deleted @label.', [ | ||||
|         '@type' => $this->entity->bundle(), | ||||
|         '@label' => $this->entity->label(), | ||||
|       ]) | ||||
|     ); | ||||
|  | ||||
|     $form_state->setRedirectUrl($this->getCancelUrl()); | ||||
|   } | ||||
|  | ||||
| } | ||||
							
								
								
									
										65
									
								
								modules/opencase_cases/src/Form/OCCaseFeeTypeForm.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								modules/opencase_cases/src/Form/OCCaseFeeTypeForm.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,65 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases\Form; | ||||
|  | ||||
| use Drupal\Core\Entity\EntityForm; | ||||
| use Drupal\Core\Form\FormStateInterface; | ||||
|  | ||||
| /** | ||||
|  * Class OCCaseFeeTypeForm. | ||||
|  */ | ||||
| class OCCaseFeeTypeForm extends EntityForm { | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function form(array $form, FormStateInterface $form_state) { | ||||
|     $form = parent::form($form, $form_state); | ||||
|  | ||||
|     $oc_case_fee_type = $this->entity; | ||||
|     $form['label'] = [ | ||||
|       '#type' => 'textfield', | ||||
|       '#title' => $this->t('Label'), | ||||
|       '#maxlength' => 255, | ||||
|       '#default_value' => $oc_case_fee_type->label(), | ||||
|       '#description' => $this->t("Label for the Case Fee type."), | ||||
|       '#required' => TRUE, | ||||
|     ]; | ||||
|  | ||||
|     $form['id'] = [ | ||||
|       '#type' => 'machine_name', | ||||
|       '#default_value' => $oc_case_fee_type->id(), | ||||
|       '#machine_name' => [ | ||||
|         'exists' => '\Drupal\opencase_cases\Entity\OCCaseFeeType::load', | ||||
|       ], | ||||
|       '#disabled' => !$oc_case_fee_type->isNew(), | ||||
|     ]; | ||||
|  | ||||
|     /* You will need additional form elements for your custom properties. */ | ||||
|  | ||||
|     return $form; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function save(array $form, FormStateInterface $form_state) { | ||||
|     $oc_case_fee_type = $this->entity; | ||||
|     $status = $oc_case_fee_type->save(); | ||||
|  | ||||
|     switch ($status) { | ||||
|       case SAVED_NEW: | ||||
|         $this->messenger()->addMessage($this->t('Created the %label Case Fee type.', [ | ||||
|           '%label' => $oc_case_fee_type->label(), | ||||
|         ])); | ||||
|         break; | ||||
|  | ||||
|       default: | ||||
|         $this->messenger()->addMessage($this->t('Saved the %label Case Fee type.', [ | ||||
|           '%label' => $oc_case_fee_type->label(), | ||||
|         ])); | ||||
|     } | ||||
|     $form_state->setRedirectUrl($oc_case_fee_type->toUrl('collection')); | ||||
|   } | ||||
|  | ||||
| } | ||||
| @ -38,34 +38,33 @@ class OCCaseForm extends ContentEntityForm { | ||||
|    */ | ||||
|   public function save(array $form, FormStateInterface $form_state) { | ||||
|     $entity = $this->entity; | ||||
|  | ||||
|     // Save as a new revision if requested to do so. | ||||
|     if (!$form_state->isValueEmpty('new_revision') && $form_state->getValue('new_revision') != FALSE) { | ||||
|       $entity->setNewRevision(); | ||||
|  | ||||
|       // If a new revision is created, save the current user as revision author. | ||||
|       $entity->setRevisionCreationTime(REQUEST_TIME); | ||||
|       $entity->setRevisionUserId(\Drupal::currentUser()->id()); | ||||
|     } | ||||
|     else { | ||||
|       $entity->setNewRevision(FALSE); | ||||
|     } | ||||
|     $entity->setNewRevision(); | ||||
|     $entity->setRevisionCreationTime(REQUEST_TIME); | ||||
|     $entity->setRevisionUserId(\Drupal::currentUser()->id()); | ||||
|  | ||||
|     $status = parent::save($form, $form_state); | ||||
|  | ||||
|     switch ($status) { | ||||
|       case SAVED_NEW: | ||||
|         drupal_set_message($this->t('Created the %label Case.', [ | ||||
|         \Drupal::messenger()->addMessage($this->t('Created the %label Case.', [ | ||||
|           '%label' => $entity->label(), | ||||
|         ])); | ||||
|         break; | ||||
|  | ||||
|       default: | ||||
|         drupal_set_message($this->t('Saved the %label Case.', [ | ||||
|         \Drupal::messenger()->addMessage($this->t('Saved the %label Case.', [ | ||||
|           '%label' => $entity->label(), | ||||
|         ])); | ||||
|     } | ||||
|     $form_state->setRedirect('entity.oc_case.canonical', ['oc_case' => $entity->id()]); | ||||
|     // If you have unpublished the entity and you can't see unpublished entities, redirect to a more informative message than just "Access Denied". | ||||
|     if (!$form_state->getValue('status')['value'] && !\Drupal::currentUser()->hasPermission('view unpublished case entities')) { | ||||
|       \Drupal::messenger()->addMessage($this->t('The record for "%label" is now unpublished & hidden from you.', [ | ||||
|         '%label' => $entity->label(), | ||||
|       ])); | ||||
|       $form_state->setRedirect('<front>'); | ||||
|     } else { | ||||
|       $form_state->setRedirect('entity.oc_case.canonical', ['oc_case' => $entity->id()]); | ||||
|     } | ||||
|   } | ||||
|  | ||||
| } | ||||
|  | ||||
| @ -0,0 +1,15 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases\Form; | ||||
|  | ||||
| use Drupal\Core\Entity\ContentEntityDeleteForm; | ||||
|  | ||||
| /** | ||||
|  * Provides a form for deleting Case Provision entities. | ||||
|  * | ||||
|  * @ingroup opencase_cases | ||||
|  */ | ||||
| class OCCaseProvisionDeleteForm extends ContentEntityDeleteForm { | ||||
|  | ||||
|  | ||||
| } | ||||
							
								
								
									
										78
									
								
								modules/opencase_cases/src/Form/OCCaseProvisionForm.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								modules/opencase_cases/src/Form/OCCaseProvisionForm.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,78 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases\Form; | ||||
|  | ||||
| use Drupal\Core\Entity\ContentEntityForm; | ||||
| use Drupal\Core\Form\FormStateInterface; | ||||
| use Symfony\Component\DependencyInjection\ContainerInterface; | ||||
|  | ||||
| /** | ||||
|  * Form controller for Case Provision edit forms. | ||||
|  * | ||||
|  * @ingroup opencase_cases | ||||
|  */ | ||||
| class OCCaseProvisionForm extends ContentEntityForm { | ||||
|  | ||||
|   /** | ||||
|    * The current user account. | ||||
|    * | ||||
|    * @var \Drupal\Core\Session\AccountProxyInterface | ||||
|    */ | ||||
|   protected $account; | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public static function create(ContainerInterface $container) { | ||||
|     // Instantiates this form class. | ||||
|     $instance = parent::create($container); | ||||
|     $instance->account = $container->get('current_user'); | ||||
|     return $instance; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function buildForm(array $form, FormStateInterface $form_state) { | ||||
|     /* @var \Drupal\opencase_cases\Entity\OCCaseProvision $entity */ | ||||
|     $form = parent::buildForm($form, $form_state); | ||||
|  | ||||
|     if (!$this->entity->isNew()) { | ||||
|       $form['new_revision'] = [ | ||||
|         '#type' => 'checkbox', | ||||
|         '#title' => $this->t('Create new revision'), | ||||
|         '#default_value' => FALSE, | ||||
|         '#weight' => 10, | ||||
|       ]; | ||||
|     } | ||||
|  | ||||
|     return $form; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function save(array $form, FormStateInterface $form_state) { | ||||
|     $entity = $this->entity; | ||||
|     $entity->setNewRevision(); | ||||
|     $entity->setRevisionCreationTime(REQUEST_TIME); | ||||
|     $entity->setRevisionUserId(\Drupal::currentUser()->id()); | ||||
|  | ||||
|     $status = parent::save($form, $form_state); | ||||
|  | ||||
|     switch ($status) { | ||||
|       case SAVED_NEW: | ||||
|         $this->messenger()->addMessage($this->t('Created the %label Case Provision.', [ | ||||
|           '%label' => $entity->label(), | ||||
|         ])); | ||||
|         break; | ||||
|  | ||||
|       default: | ||||
|         $this->messenger()->addMessage($this->t('Saved the %label Case Provision.', [ | ||||
|           '%label' => $entity->label(), | ||||
|         ])); | ||||
|     } | ||||
|     $form_state->setRedirect('entity.oc_case_provision.canonical', ['oc_case_provision' => $entity->id()]); | ||||
|   } | ||||
|  | ||||
| } | ||||
| @ -0,0 +1,108 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases\Form; | ||||
|  | ||||
| use Drupal\Core\Form\ConfirmFormBase; | ||||
| use Drupal\Core\Form\FormStateInterface; | ||||
| use Drupal\Core\Url; | ||||
| use Symfony\Component\DependencyInjection\ContainerInterface; | ||||
|  | ||||
| /** | ||||
|  * Provides a form for deleting a Case Provision revision. | ||||
|  * | ||||
|  * @ingroup opencase_cases | ||||
|  */ | ||||
| class OCCaseProvisionRevisionDeleteForm extends ConfirmFormBase { | ||||
|  | ||||
|   /** | ||||
|    * The Case Provision revision. | ||||
|    * | ||||
|    * @var \Drupal\opencase_cases\Entity\OCCaseProvisionInterface | ||||
|    */ | ||||
|   protected $revision; | ||||
|  | ||||
|   /** | ||||
|    * The Case Provision storage. | ||||
|    * | ||||
|    * @var \Drupal\Core\Entity\EntityStorageInterface | ||||
|    */ | ||||
|   protected $oCCaseProvisionStorage; | ||||
|  | ||||
|   /** | ||||
|    * The database connection. | ||||
|    * | ||||
|    * @var \Drupal\Core\Database\Connection | ||||
|    */ | ||||
|   protected $connection; | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public static function create(ContainerInterface $container) { | ||||
|     $instance = parent::create($container); | ||||
|     $instance->oCCaseProvisionStorage = $container->get('entity_type.manager')->getStorage('oc_case_provision'); | ||||
|     $instance->connection = $container->get('database'); | ||||
|     return $instance; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getFormId() { | ||||
|     return 'oc_case_provision_revision_delete_confirm'; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getQuestion() { | ||||
|     return $this->t('Are you sure you want to delete the revision from %revision-date?', [ | ||||
|       '%revision-date' => format_date($this->revision->getRevisionCreationTime()), | ||||
|     ]); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getCancelUrl() { | ||||
|     return new Url('entity.oc_case_provision.version_history', ['oc_case_provision' => $this->revision->id()]); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getConfirmText() { | ||||
|     return $this->t('Delete'); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function buildForm(array $form, FormStateInterface $form_state, $oc_case_provision_revision = NULL) { | ||||
|     $this->revision = $this->OCCaseProvisionStorage->loadRevision($oc_case_provision_revision); | ||||
|     $form = parent::buildForm($form, $form_state); | ||||
|  | ||||
|     return $form; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function submitForm(array &$form, FormStateInterface $form_state) { | ||||
|     $this->OCCaseProvisionStorage->deleteRevision($this->revision->getRevisionId()); | ||||
|  | ||||
|     $this->logger('content')->notice('Case Provision: deleted %title revision %revision.', ['%title' => $this->revision->label(), '%revision' => $this->revision->getRevisionId()]); | ||||
|     $this->messenger()->addMessage(t('Revision from %revision-date of Case Provision %title has been deleted.', ['%revision-date' => format_date($this->revision->getRevisionCreationTime()), '%title' => $this->revision->label()])); | ||||
|     $form_state->setRedirect( | ||||
|       'entity.oc_case_provision.canonical', | ||||
|        ['oc_case_provision' => $this->revision->id()] | ||||
|     ); | ||||
|     if ($this->connection->query('SELECT COUNT(DISTINCT vid) FROM {oc_case_provision_field_revision} WHERE id = :id', [':id' => $this->revision->id()])->fetchField() > 1) { | ||||
|       $form_state->setRedirect( | ||||
|         'entity.oc_case_provision.version_history', | ||||
|          ['oc_case_provision' => $this->revision->id()] | ||||
|       ); | ||||
|     } | ||||
|   } | ||||
|  | ||||
| } | ||||
| @ -0,0 +1,137 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases\Form; | ||||
|  | ||||
| use Drupal\Core\Form\ConfirmFormBase; | ||||
| use Drupal\Core\Form\FormStateInterface; | ||||
| use Drupal\Core\Url; | ||||
| use Drupal\opencase_cases\Entity\OCCaseProvisionInterface; | ||||
| use Symfony\Component\DependencyInjection\ContainerInterface; | ||||
|  | ||||
| /** | ||||
|  * Provides a form for reverting a Case Provision revision. | ||||
|  * | ||||
|  * @ingroup opencase_cases | ||||
|  */ | ||||
| class OCCaseProvisionRevisionRevertForm extends ConfirmFormBase { | ||||
|  | ||||
|   /** | ||||
|    * The Case Provision revision. | ||||
|    * | ||||
|    * @var \Drupal\opencase_cases\Entity\OCCaseProvisionInterface | ||||
|    */ | ||||
|   protected $revision; | ||||
|  | ||||
|   /** | ||||
|    * The Case Provision storage. | ||||
|    * | ||||
|    * @var \Drupal\Core\Entity\EntityStorageInterface | ||||
|    */ | ||||
|   protected $oCCaseProvisionStorage; | ||||
|  | ||||
|   /** | ||||
|    * The date formatter service. | ||||
|    * | ||||
|    * @var \Drupal\Core\Datetime\DateFormatterInterface | ||||
|    */ | ||||
|   protected $dateFormatter; | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public static function create(ContainerInterface $container) { | ||||
|     $instance = parent::create($container); | ||||
|     $instance->oCCaseProvisionStorage = $container->get('entity_type.manager')->getStorage('oc_case_provision'); | ||||
|     $instance->dateFormatter = $container->get('date.formatter'); | ||||
|     return $instance; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getFormId() { | ||||
|     return 'oc_case_provision_revision_revert_confirm'; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getQuestion() { | ||||
|     return $this->t('Are you sure you want to revert to the revision from %revision-date?', [ | ||||
|       '%revision-date' => $this->dateFormatter->format($this->revision->getRevisionCreationTime()), | ||||
|     ]); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getCancelUrl() { | ||||
|     return new Url('entity.oc_case_provision.version_history', ['oc_case_provision' => $this->revision->id()]); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getConfirmText() { | ||||
|     return $this->t('Revert'); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getDescription() { | ||||
|     return ''; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function buildForm(array $form, FormStateInterface $form_state, $oc_case_provision_revision = NULL) { | ||||
|     $this->revision = $this->OCCaseProvisionStorage->loadRevision($oc_case_provision_revision); | ||||
|     $form = parent::buildForm($form, $form_state); | ||||
|  | ||||
|     return $form; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function submitForm(array &$form, FormStateInterface $form_state) { | ||||
|     // The revision timestamp will be updated when the revision is saved. Keep | ||||
|     // the original one for the confirmation message. | ||||
|     $original_revision_timestamp = $this->revision->getRevisionCreationTime(); | ||||
|  | ||||
|     $this->revision = $this->prepareRevertedRevision($this->revision, $form_state); | ||||
|     $this->revision->revision_log = $this->t('Copy of the revision from %date.', [ | ||||
|       '%date' => $this->dateFormatter->format($original_revision_timestamp), | ||||
|     ]); | ||||
|     $this->revision->save(); | ||||
|  | ||||
|     $this->logger('content')->notice('Case Provision: reverted %title revision %revision.', ['%title' => $this->revision->label(), '%revision' => $this->revision->getRevisionId()]); | ||||
|     $this->messenger()->addMessage(t('Case Provision %title has been reverted to the revision from %revision-date.', ['%title' => $this->revision->label(), '%revision-date' => $this->dateFormatter->format($original_revision_timestamp)])); | ||||
|     $form_state->setRedirect( | ||||
|       'entity.oc_case_provision.version_history', | ||||
|       ['oc_case_provision' => $this->revision->id()] | ||||
|     ); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Prepares a revision to be reverted. | ||||
|    * | ||||
|    * @param \Drupal\opencase_cases\Entity\OCCaseProvisionInterface $revision | ||||
|    *   The revision to be reverted. | ||||
|    * @param \Drupal\Core\Form\FormStateInterface $form_state | ||||
|    *   The current state of the form. | ||||
|    * | ||||
|    * @return \Drupal\opencase_cases\Entity\OCCaseProvisionInterface | ||||
|    *   The prepared revision ready to be stored. | ||||
|    */ | ||||
|   protected function prepareRevertedRevision(OCCaseProvisionInterface $revision, FormStateInterface $form_state) { | ||||
|     $revision->setNewRevision(); | ||||
|     $revision->isDefaultRevision(TRUE); | ||||
|     $revision->setRevisionCreationTime(REQUEST_TIME); | ||||
|  | ||||
|     return $revision; | ||||
|   } | ||||
|  | ||||
| } | ||||
| @ -0,0 +1,97 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases\Form; | ||||
|  | ||||
| use Drupal\Core\Form\FormStateInterface; | ||||
| use Drupal\opencase_cases\Entity\OCCaseProvisionInterface; | ||||
| use Symfony\Component\DependencyInjection\ContainerInterface; | ||||
|  | ||||
| /** | ||||
|  * Provides a form for reverting a Case Provision revision for a single trans. | ||||
|  * | ||||
|  * @ingroup opencase_cases | ||||
|  */ | ||||
| class OCCaseProvisionRevisionRevertTranslationForm extends OCCaseProvisionRevisionRevertForm { | ||||
|  | ||||
|   /** | ||||
|    * The language to be reverted. | ||||
|    * | ||||
|    * @var string | ||||
|    */ | ||||
|   protected $langcode; | ||||
|  | ||||
|   /** | ||||
|    * The language manager. | ||||
|    * | ||||
|    * @var \Drupal\Core\Language\LanguageManagerInterface | ||||
|    */ | ||||
|   protected $languageManager; | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public static function create(ContainerInterface $container) { | ||||
|     $instance = parent::create($container); | ||||
|     $instance->languageManager = $container->get('language_manager'); | ||||
|     return $instance; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getFormId() { | ||||
|     return 'oc_case_provision_revision_revert_translation_confirm'; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getQuestion() { | ||||
|     return $this->t('Are you sure you want to revert @language translation to the revision from %revision-date?', [ | ||||
|       '@language' => $this->languageManager->getLanguageName($this->langcode), | ||||
|       '%revision-date' => $this->dateFormatter->format($this->revision->getRevisionCreationTime()), | ||||
|     ]); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function buildForm(array $form, FormStateInterface $form_state, $oc_case_provision_revision = NULL, $langcode = NULL) { | ||||
|     $this->langcode = $langcode; | ||||
|     $form = parent::buildForm($form, $form_state, $oc_case_provision_revision); | ||||
|  | ||||
|     $form['revert_untranslated_fields'] = [ | ||||
|       '#type' => 'checkbox', | ||||
|       '#title' => $this->t('Revert content shared among translations'), | ||||
|       '#default_value' => FALSE, | ||||
|     ]; | ||||
|  | ||||
|     return $form; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   protected function prepareRevertedRevision(OCCaseProvisionInterface $revision, FormStateInterface $form_state) { | ||||
|     $revert_untranslated_fields = $form_state->getValue('revert_untranslated_fields'); | ||||
|  | ||||
|     /** @var \Drupal\opencase_cases\Entity\OCCaseProvisionInterface $default_revision */ | ||||
|     $latest_revision = $this->OCCaseProvisionStorage->load($revision->id()); | ||||
|     $latest_revision_translation = $latest_revision->getTranslation($this->langcode); | ||||
|  | ||||
|     $revision_translation = $revision->getTranslation($this->langcode); | ||||
|  | ||||
|     foreach ($latest_revision_translation->getFieldDefinitions() as $field_name => $definition) { | ||||
|       if ($definition->isTranslatable() || $revert_untranslated_fields) { | ||||
|         $latest_revision_translation->set($field_name, $revision_translation->get($field_name)->getValue()); | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     $latest_revision_translation->setNewRevision(); | ||||
|     $latest_revision_translation->isDefaultRevision(TRUE); | ||||
|     $revision->setRevisionCreationTime(REQUEST_TIME); | ||||
|  | ||||
|     return $latest_revision_translation; | ||||
|   } | ||||
|  | ||||
| } | ||||
| @ -0,0 +1,53 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases\Form; | ||||
|  | ||||
| use Drupal\Core\Form\FormBase; | ||||
| use Drupal\Core\Form\FormStateInterface; | ||||
|  | ||||
| /** | ||||
|  * Class OCCaseProvisionSettingsForm. | ||||
|  * | ||||
|  * @ingroup opencase_cases | ||||
|  */ | ||||
| class OCCaseProvisionSettingsForm extends FormBase { | ||||
|  | ||||
|   /** | ||||
|    * Returns a unique string identifying the form. | ||||
|    * | ||||
|    * @return string | ||||
|    *   The unique string identifying the form. | ||||
|    */ | ||||
|   public function getFormId() { | ||||
|     return 'occaseprovision_settings'; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Form submission handler. | ||||
|    * | ||||
|    * @param array $form | ||||
|    *   An associative array containing the structure of the form. | ||||
|    * @param \Drupal\Core\Form\FormStateInterface $form_state | ||||
|    *   The current state of the form. | ||||
|    */ | ||||
|   public function submitForm(array &$form, FormStateInterface $form_state) { | ||||
|     // Empty implementation of the abstract submit class. | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Defines the settings form for Case Provision entities. | ||||
|    * | ||||
|    * @param array $form | ||||
|    *   An associative array containing the structure of the form. | ||||
|    * @param \Drupal\Core\Form\FormStateInterface $form_state | ||||
|    *   The current state of the form. | ||||
|    * | ||||
|    * @return array | ||||
|    *   Form definition array. | ||||
|    */ | ||||
|   public function buildForm(array $form, FormStateInterface $form_state) { | ||||
|     $form['occaseprovision_settings']['#markup'] = 'Settings form for Case Provision entities. Manage field settings here.'; | ||||
|     return $form; | ||||
|   } | ||||
|  | ||||
| } | ||||
| @ -0,0 +1,51 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases\Form; | ||||
|  | ||||
| use Drupal\Core\Entity\EntityConfirmFormBase; | ||||
| use Drupal\Core\Form\FormStateInterface; | ||||
| use Drupal\Core\Url; | ||||
|  | ||||
| /** | ||||
|  * Builds the form to delete Case Provision type entities. | ||||
|  */ | ||||
| class OCCaseProvisionTypeDeleteForm extends EntityConfirmFormBase { | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getQuestion() { | ||||
|     return $this->t('Are you sure you want to delete %name?', ['%name' => $this->entity->label()]); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getCancelUrl() { | ||||
|     return new Url('entity.oc_case_provision_type.collection'); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getConfirmText() { | ||||
|     return $this->t('Delete'); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function submitForm(array &$form, FormStateInterface $form_state) { | ||||
|     $this->entity->delete(); | ||||
|  | ||||
|     $this->messenger()->addMessage( | ||||
|       $this->t('content @type: deleted @label.', [ | ||||
|         '@type' => $this->entity->bundle(), | ||||
|         '@label' => $this->entity->label(), | ||||
|       ]) | ||||
|     ); | ||||
|  | ||||
|     $form_state->setRedirectUrl($this->getCancelUrl()); | ||||
|   } | ||||
|  | ||||
| } | ||||
							
								
								
									
										65
									
								
								modules/opencase_cases/src/Form/OCCaseProvisionTypeForm.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								modules/opencase_cases/src/Form/OCCaseProvisionTypeForm.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,65 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases\Form; | ||||
|  | ||||
| use Drupal\Core\Entity\EntityForm; | ||||
| use Drupal\Core\Form\FormStateInterface; | ||||
|  | ||||
| /** | ||||
|  * Class OCCaseProvisionTypeForm. | ||||
|  */ | ||||
| class OCCaseProvisionTypeForm extends EntityForm { | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function form(array $form, FormStateInterface $form_state) { | ||||
|     $form = parent::form($form, $form_state); | ||||
|  | ||||
|     $oc_case_provision_type = $this->entity; | ||||
|     $form['label'] = [ | ||||
|       '#type' => 'textfield', | ||||
|       '#title' => $this->t('Label'), | ||||
|       '#maxlength' => 255, | ||||
|       '#default_value' => $oc_case_provision_type->label(), | ||||
|       '#description' => $this->t("Label for the Case Provision type."), | ||||
|       '#required' => TRUE, | ||||
|     ]; | ||||
|  | ||||
|     $form['id'] = [ | ||||
|       '#type' => 'machine_name', | ||||
|       '#default_value' => $oc_case_provision_type->id(), | ||||
|       '#machine_name' => [ | ||||
|         'exists' => '\Drupal\opencase_cases\Entity\OCCaseProvisionType::load', | ||||
|       ], | ||||
|       '#disabled' => !$oc_case_provision_type->isNew(), | ||||
|     ]; | ||||
|  | ||||
|     /* You will need additional form elements for your custom properties. */ | ||||
|  | ||||
|     return $form; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function save(array $form, FormStateInterface $form_state) { | ||||
|     $oc_case_provision_type = $this->entity; | ||||
|     $status = $oc_case_provision_type->save(); | ||||
|  | ||||
|     switch ($status) { | ||||
|       case SAVED_NEW: | ||||
|         $this->messenger()->addMessage($this->t('Created the %label Case Provision type.', [ | ||||
|           '%label' => $oc_case_provision_type->label(), | ||||
|         ])); | ||||
|         break; | ||||
|  | ||||
|       default: | ||||
|         $this->messenger()->addMessage($this->t('Saved the %label Case Provision type.', [ | ||||
|           '%label' => $oc_case_provision_type->label(), | ||||
|         ])); | ||||
|     } | ||||
|     $form_state->setRedirectUrl($oc_case_provision_type->toUrl('collection')); | ||||
|   } | ||||
|  | ||||
| } | ||||
| @ -107,7 +107,7 @@ class OCCaseRevisionDeleteForm extends ConfirmFormBase { | ||||
|     $this->OCCaseStorage->deleteRevision($this->revision->getRevisionId()); | ||||
|  | ||||
|     $this->logger('content')->notice('Case: deleted %title revision %revision.', ['%title' => $this->revision->label(), '%revision' => $this->revision->getRevisionId()]); | ||||
|     drupal_set_message(t('Revision from %revision-date of Case %title has been deleted.', ['%revision-date' => format_date($this->revision->getRevisionCreationTime()), '%title' => $this->revision->label()])); | ||||
|     \Drupal::messenger()->addMessage(t('Revision from %revision-date of Case %title has been deleted.', ['%revision-date' => format_date($this->revision->getRevisionCreationTime()), '%title' => $this->revision->label()])); | ||||
|     $form_state->setRedirect( | ||||
|       'entity.oc_case.canonical', | ||||
|        ['oc_case' => $this->revision->id()] | ||||
|  | ||||
| @ -120,7 +120,7 @@ class OCCaseRevisionRevertForm extends ConfirmFormBase { | ||||
|     $this->revision->save(); | ||||
|  | ||||
|     $this->logger('content')->notice('Case: reverted %title revision %revision.', ['%title' => $this->revision->label(), '%revision' => $this->revision->getRevisionId()]); | ||||
|     drupal_set_message(t('Case %title has been reverted to the revision from %revision-date.', ['%title' => $this->revision->label(), '%revision-date' => $this->dateFormatter->format($original_revision_timestamp)])); | ||||
|     \Drupal::messenger()->addMessage(t('Case %title has been reverted to the revision from %revision-date.', ['%title' => $this->revision->label(), '%revision-date' => $this->dateFormatter->format($original_revision_timestamp)])); | ||||
|     $form_state->setRedirect( | ||||
|       'entity.oc_case.version_history', | ||||
|       ['oc_case' => $this->revision->id()] | ||||
|  | ||||
| @ -38,7 +38,7 @@ class OCCaseTypeDeleteForm extends EntityConfirmFormBase { | ||||
|   public function submitForm(array &$form, FormStateInterface $form_state) { | ||||
|     $this->entity->delete(); | ||||
|  | ||||
|     drupal_set_message( | ||||
|     \Drupal::messenger()->addMessage( | ||||
|       $this->t('content @type: deleted @label.', | ||||
|         [ | ||||
|           '@type' => $this->entity->bundle(), | ||||
|  | ||||
| @ -49,13 +49,13 @@ class OCCaseTypeForm extends EntityForm { | ||||
|  | ||||
|     switch ($status) { | ||||
|       case SAVED_NEW: | ||||
|         drupal_set_message($this->t('Created the %label Case type.', [ | ||||
|         \Drupal::messenger()->addMessage($this->t('Created the %label Case type.', [ | ||||
|           '%label' => $oc_case_type->label(), | ||||
|         ])); | ||||
|         break; | ||||
|  | ||||
|       default: | ||||
|         drupal_set_message($this->t('Saved the %label Case type.', [ | ||||
|         \Drupal::messenger()->addMessage($this->t('Saved the %label Case type.', [ | ||||
|           '%label' => $oc_case_type->label(), | ||||
|         ])); | ||||
|     } | ||||
|  | ||||
							
								
								
									
										9
									
								
								modules/opencase_cases/src/Helper/HookHelper.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								modules/opencase_cases/src/Helper/HookHelper.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,9 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases\Helper; | ||||
|  | ||||
| class HookHelper { | ||||
|     public static function onCaseFeeUpdate(\Drupal\opencase_cases\Entity\OCCaseFee $caseFee) { | ||||
|          | ||||
|     } | ||||
| } | ||||
| @ -32,7 +32,6 @@ class OCCaseAccessControlHandler extends EntityAccessControlHandler { | ||||
|       case 'update':   // you can edit the case only if a) you can see it and b) you have the permission to edit cases. | ||||
|         return AccessResult::allowedIf( | ||||
|             $account->hasPermission('edit case entities') | ||||
|             && ($account->hasPermission('view published case entities') || CaseInvolvement::userIsInvolved($account, $entity)) | ||||
|         ); | ||||
|       case 'delete':   // you can delete the case only if a) you can see it and b) you have the permission to delete cases. | ||||
|         return AccessResult::allowedIf( | ||||
|  | ||||
							
								
								
									
										116
									
								
								modules/opencase_cases/src/OCCaseFeeAccessControlHandler.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										116
									
								
								modules/opencase_cases/src/OCCaseFeeAccessControlHandler.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,116 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases; | ||||
|  | ||||
| use Drupal\Core\Entity\EntityAccessControlHandler; | ||||
| use Drupal\Core\Entity\EntityInterface; | ||||
| use Drupal\Core\Session\AccountInterface; | ||||
| use Drupal\Core\Access\AccessResult; | ||||
|  | ||||
| /** | ||||
|  * Access controller for the Case Fee entity. | ||||
|  * | ||||
|  * @see \Drupal\opencase_cases\Entity\OCCaseFee. | ||||
|  */ | ||||
| class OCCaseFeeAccessControlHandler extends EntityAccessControlHandler { | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   protected function checkAccess(EntityInterface $entity, $operation, AccountInterface $account) { | ||||
|     /** @var \Drupal\opencase_cases\Entity\OCCaseFeeInterface $entity */ | ||||
|  | ||||
|     switch ($operation) { | ||||
|  | ||||
|       case 'view': | ||||
|  | ||||
|         if (!$entity->isPublished()) { | ||||
|           $permission = $this->checkOwn($entity, 'view unpublished', $account); | ||||
|           if (!empty($permission)) { | ||||
|             return AccessResult::allowed(); | ||||
|           } | ||||
|  | ||||
|           return AccessResult::allowedIfHasPermission($account, 'view unpublished case fee entities'); | ||||
|         } | ||||
|  | ||||
|         $permission = $this->checkOwn($entity, $operation, $account); | ||||
|         if (!empty($permission)) { | ||||
|           return AccessResult::allowed(); | ||||
|         } | ||||
|  | ||||
|         return AccessResult::allowedIfHasPermission($account, 'view published case fee entities'); | ||||
|  | ||||
|       case 'update': | ||||
|  | ||||
|         $permission = $this->checkOwn($entity, $operation, $account); | ||||
|         if (!empty($permission)) { | ||||
|           return AccessResult::allowed(); | ||||
|         } | ||||
|         return AccessResult::allowedIfHasPermission($account, 'edit case fee entities'); | ||||
|  | ||||
|       case 'delete': | ||||
|  | ||||
|         $permission = $this->checkOwn($entity, $operation, $account); | ||||
|         if (!empty($permission)) { | ||||
|           return AccessResult::allowed(); | ||||
|         } | ||||
|         return AccessResult::allowedIfHasPermission($account, 'delete case fee entities'); | ||||
|     } | ||||
|  | ||||
|     // Unknown operation, no opinion. | ||||
|     return AccessResult::neutral(); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   protected function checkCreateAccess(AccountInterface $account, array $context, $entity_bundle = NULL) { | ||||
|     return AccessResult::allowedIfHasPermission($account, 'add case fee entities'); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Test for given 'own' permission. | ||||
|    * | ||||
|    * @param \Drupal\Core\Entity\EntityInterface $entity | ||||
|    * @param $operation | ||||
|    * @param \Drupal\Core\Session\AccountInterface $account | ||||
|    * | ||||
|    * @return string|null | ||||
|    *   The permission string indicating it's allowed. | ||||
|    */ | ||||
|   protected function checkOwn(EntityInterface $entity, $operation, AccountInterface $account) { | ||||
|     $status = $entity->isPublished(); | ||||
|     $uid = $entity->getOwnerId(); | ||||
|  | ||||
|     $is_own = $account->isAuthenticated() && $account->id() == $uid; | ||||
|     if (!$is_own) { | ||||
|       return; | ||||
|     } | ||||
|  | ||||
|     $bundle = $entity->bundle(); | ||||
|  | ||||
|     $ops = [ | ||||
|       'create' => '%bundle add own %bundle entities', | ||||
|       'view unpublished' => '%bundle view own unpublished %bundle entities', | ||||
|       'view' => '%bundle view own entities', | ||||
|       'update' => '%bundle edit own entities', | ||||
|       'delete' => '%bundle delete own entities', | ||||
|     ]; | ||||
|     $permission = strtr($ops[$operation], ['%bundle' => $bundle]); | ||||
|  | ||||
|     if ($operation === 'view unpublished') { | ||||
|       if (!$status && $account->hasPermission($permission)) { | ||||
|         return $permission; | ||||
|       } | ||||
|       else { | ||||
|         return NULL; | ||||
|       } | ||||
|     } | ||||
|     if ($account->hasPermission($permission)) { | ||||
|       return $permission; | ||||
|     } | ||||
|  | ||||
|     return NULL; | ||||
|   } | ||||
|  | ||||
| } | ||||
							
								
								
									
										196
									
								
								modules/opencase_cases/src/OCCaseFeeHtmlRouteProvider.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										196
									
								
								modules/opencase_cases/src/OCCaseFeeHtmlRouteProvider.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,196 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases; | ||||
|  | ||||
| use Drupal\Core\Entity\EntityTypeInterface; | ||||
| use Drupal\Core\Entity\Routing\AdminHtmlRouteProvider; | ||||
| use Symfony\Component\Routing\Route; | ||||
|  | ||||
| /** | ||||
|  * Provides routes for Case Fee entities. | ||||
|  * | ||||
|  * @see \Drupal\Core\Entity\Routing\AdminHtmlRouteProvider | ||||
|  * @see \Drupal\Core\Entity\Routing\DefaultHtmlRouteProvider | ||||
|  */ | ||||
| class OCCaseFeeHtmlRouteProvider extends AdminHtmlRouteProvider { | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getRoutes(EntityTypeInterface $entity_type) { | ||||
|     $collection = parent::getRoutes($entity_type); | ||||
|  | ||||
|     $entity_type_id = $entity_type->id(); | ||||
|  | ||||
|     if ($history_route = $this->getHistoryRoute($entity_type)) { | ||||
|       $collection->add("entity.{$entity_type_id}.version_history", $history_route); | ||||
|     } | ||||
|  | ||||
|     if ($revision_route = $this->getRevisionRoute($entity_type)) { | ||||
|       $collection->add("entity.{$entity_type_id}.revision", $revision_route); | ||||
|     } | ||||
|  | ||||
|     if ($revert_route = $this->getRevisionRevertRoute($entity_type)) { | ||||
|       $collection->add("entity.{$entity_type_id}.revision_revert", $revert_route); | ||||
|     } | ||||
|  | ||||
|     if ($delete_route = $this->getRevisionDeleteRoute($entity_type)) { | ||||
|       $collection->add("entity.{$entity_type_id}.revision_delete", $delete_route); | ||||
|     } | ||||
|  | ||||
|     if ($translation_route = $this->getRevisionTranslationRevertRoute($entity_type)) { | ||||
|       $collection->add("{$entity_type_id}.revision_revert_translation_confirm", $translation_route); | ||||
|     } | ||||
|  | ||||
|     if ($settings_form_route = $this->getSettingsFormRoute($entity_type)) { | ||||
|       $collection->add("$entity_type_id.settings", $settings_form_route); | ||||
|     } | ||||
|  | ||||
|     return $collection; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Gets the version history route. | ||||
|    * | ||||
|    * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type | ||||
|    *   The entity type. | ||||
|    * | ||||
|    * @return \Symfony\Component\Routing\Route|null | ||||
|    *   The generated route, if available. | ||||
|    */ | ||||
|   protected function getHistoryRoute(EntityTypeInterface $entity_type) { | ||||
|     if ($entity_type->hasLinkTemplate('version-history')) { | ||||
|       $route = new Route($entity_type->getLinkTemplate('version-history')); | ||||
|       $route | ||||
|         ->setDefaults([ | ||||
|           '_title' => "{$entity_type->getLabel()} revisions", | ||||
|           '_controller' => '\Drupal\opencase_cases\Controller\OCCaseFeeController::revisionOverview', | ||||
|         ]) | ||||
|         ->setRequirement('_permission', 'view all case fee revisions') | ||||
|         ->setOption('_admin_route', TRUE); | ||||
|  | ||||
|       return $route; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Gets the revision route. | ||||
|    * | ||||
|    * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type | ||||
|    *   The entity type. | ||||
|    * | ||||
|    * @return \Symfony\Component\Routing\Route|null | ||||
|    *   The generated route, if available. | ||||
|    */ | ||||
|   protected function getRevisionRoute(EntityTypeInterface $entity_type) { | ||||
|     if ($entity_type->hasLinkTemplate('revision')) { | ||||
|       $route = new Route($entity_type->getLinkTemplate('revision')); | ||||
|       $route | ||||
|         ->setDefaults([ | ||||
|           '_controller' => '\Drupal\opencase_cases\Controller\OCCaseFeeController::revisionShow', | ||||
|           '_title_callback' => '\Drupal\opencase_cases\Controller\OCCaseFeeController::revisionPageTitle', | ||||
|         ]) | ||||
|         ->setRequirement('_permission', 'view all case fee revisions') | ||||
|         ->setOption('_admin_route', TRUE); | ||||
|  | ||||
|       return $route; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Gets the revision revert route. | ||||
|    * | ||||
|    * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type | ||||
|    *   The entity type. | ||||
|    * | ||||
|    * @return \Symfony\Component\Routing\Route|null | ||||
|    *   The generated route, if available. | ||||
|    */ | ||||
|   protected function getRevisionRevertRoute(EntityTypeInterface $entity_type) { | ||||
|     if ($entity_type->hasLinkTemplate('revision_revert')) { | ||||
|       $route = new Route($entity_type->getLinkTemplate('revision_revert')); | ||||
|       $route | ||||
|         ->setDefaults([ | ||||
|           '_form' => '\Drupal\opencase_cases\Form\OCCaseFeeRevisionRevertForm', | ||||
|           '_title' => 'Revert to earlier revision', | ||||
|         ]) | ||||
|         ->setRequirement('_permission', 'revert all case fee revisions') | ||||
|         ->setOption('_admin_route', TRUE); | ||||
|  | ||||
|       return $route; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Gets the revision delete route. | ||||
|    * | ||||
|    * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type | ||||
|    *   The entity type. | ||||
|    * | ||||
|    * @return \Symfony\Component\Routing\Route|null | ||||
|    *   The generated route, if available. | ||||
|    */ | ||||
|   protected function getRevisionDeleteRoute(EntityTypeInterface $entity_type) { | ||||
|     if ($entity_type->hasLinkTemplate('revision_delete')) { | ||||
|       $route = new Route($entity_type->getLinkTemplate('revision_delete')); | ||||
|       $route | ||||
|         ->setDefaults([ | ||||
|           '_form' => '\Drupal\opencase_cases\Form\OCCaseFeeRevisionDeleteForm', | ||||
|           '_title' => 'Delete earlier revision', | ||||
|         ]) | ||||
|         ->setRequirement('_permission', 'delete all case fee revisions') | ||||
|         ->setOption('_admin_route', TRUE); | ||||
|  | ||||
|       return $route; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Gets the revision translation revert route. | ||||
|    * | ||||
|    * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type | ||||
|    *   The entity type. | ||||
|    * | ||||
|    * @return \Symfony\Component\Routing\Route|null | ||||
|    *   The generated route, if available. | ||||
|    */ | ||||
|   protected function getRevisionTranslationRevertRoute(EntityTypeInterface $entity_type) { | ||||
|     if ($entity_type->hasLinkTemplate('translation_revert')) { | ||||
|       $route = new Route($entity_type->getLinkTemplate('translation_revert')); | ||||
|       $route | ||||
|         ->setDefaults([ | ||||
|           '_form' => '\Drupal\opencase_cases\Form\OCCaseFeeRevisionRevertTranslationForm', | ||||
|           '_title' => 'Revert to earlier revision of a translation', | ||||
|         ]) | ||||
|         ->setRequirement('_permission', 'revert all case fee revisions') | ||||
|         ->setOption('_admin_route', TRUE); | ||||
|  | ||||
|       return $route; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Gets the settings form route. | ||||
|    * | ||||
|    * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type | ||||
|    *   The entity type. | ||||
|    * | ||||
|    * @return \Symfony\Component\Routing\Route|null | ||||
|    *   The generated route, if available. | ||||
|    */ | ||||
|   protected function getSettingsFormRoute(EntityTypeInterface $entity_type) { | ||||
|     if (!$entity_type->getBundleEntityType()) { | ||||
|       $route = new Route("/admin/structure/{$entity_type->id()}/settings"); | ||||
|       $route | ||||
|         ->setDefaults([ | ||||
|           '_form' => 'Drupal\opencase_cases\Form\OCCaseFeeSettingsForm', | ||||
|           '_title' => "{$entity_type->getLabel()} settings", | ||||
|         ]) | ||||
|         ->setRequirement('_permission', $entity_type->getAdminPermission()) | ||||
|         ->setOption('_admin_route', TRUE); | ||||
|  | ||||
|       return $route; | ||||
|     } | ||||
|   } | ||||
|  | ||||
| } | ||||
							
								
								
									
										39
									
								
								modules/opencase_cases/src/OCCaseFeeListBuilder.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								modules/opencase_cases/src/OCCaseFeeListBuilder.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,39 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases; | ||||
|  | ||||
| use Drupal\Core\Entity\EntityInterface; | ||||
| use Drupal\Core\Entity\EntityListBuilder; | ||||
| use Drupal\Core\Link; | ||||
|  | ||||
| /** | ||||
|  * Defines a class to build a listing of Case Fee entities. | ||||
|  * | ||||
|  * @ingroup opencase_cases | ||||
|  */ | ||||
| class OCCaseFeeListBuilder extends EntityListBuilder { | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function buildHeader() { | ||||
|     $header['id'] = $this->t('Case Fee ID'); | ||||
|     $header['name'] = $this->t('Name'); | ||||
|     return $header + parent::buildHeader(); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function buildRow(EntityInterface $entity) { | ||||
|     /* @var \Drupal\opencase_cases\Entity\OCCaseFee $entity */ | ||||
|     $row['id'] = $entity->id(); | ||||
|     $row['name'] = Link::createFromRoute( | ||||
|       $entity->label(), | ||||
|       'entity.oc_case_fee.edit_form', | ||||
|       ['oc_case_fee' => $entity->id()] | ||||
|     ); | ||||
|     return $row + parent::buildRow($entity); | ||||
|   } | ||||
|  | ||||
| } | ||||
							
								
								
									
										80
									
								
								modules/opencase_cases/src/OCCaseFeePermissions.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								modules/opencase_cases/src/OCCaseFeePermissions.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,80 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases; | ||||
|  | ||||
| use Drupal\Core\StringTranslation\StringTranslationTrait; | ||||
| use Drupal\opencase_cases\Entity\OCCaseFee; | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Provides dynamic permissions for Case Fee of different types. | ||||
|  * | ||||
|  * @ingroup opencase_cases | ||||
|  * | ||||
|  */ | ||||
| class OCCaseFeePermissions{ | ||||
|  | ||||
|   use StringTranslationTrait; | ||||
|  | ||||
|   /** | ||||
|    * Returns an array of node type permissions. | ||||
|    * | ||||
|    * @return array | ||||
|    *   The OCCaseFee by bundle permissions. | ||||
|    *   @see \Drupal\user\PermissionHandlerInterface::getPermissions() | ||||
|    */ | ||||
|   public function generatePermissions() { | ||||
|     $perms = []; | ||||
|  | ||||
|     foreach (OCCaseFee::loadMultiple() as $type) { | ||||
|       $perms += $this->buildPermissions($type); | ||||
|     } | ||||
|  | ||||
|     return $perms; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Returns a list of node permissions for a given node type. | ||||
|    * | ||||
|    * @param \Drupal\opencase_cases\Entity\OCCaseFee $type | ||||
|    *   The OCCaseFee type. | ||||
|    * | ||||
|    * @return array | ||||
|    *   An associative array of permission names and descriptions. | ||||
|    */ | ||||
|   protected function buildPermissions(OCCaseFee $type) { | ||||
|     $type_id = $type->id(); | ||||
|     $type_params = ['%type_name' => $type->label()]; | ||||
|  | ||||
|     return [ | ||||
|       "$type_id create entities" => [ | ||||
|         'title' => $this->t('Create new %type_name entities', $type_params), | ||||
|       ], | ||||
|       "$type_id edit own entities" => [ | ||||
|         'title' => $this->t('Edit own %type_name entities', $type_params), | ||||
|       ], | ||||
|       "$type_id edit any entities" => [ | ||||
|         'title' => $this->t('Edit any %type_name entities', $type_params), | ||||
|       ], | ||||
|       "$type_id delete own entities" => [ | ||||
|         'title' => $this->t('Delete own %type_name entities', $type_params), | ||||
|       ], | ||||
|       "$type_id delete any entities" => [ | ||||
|         'title' => $this->t('Delete any %type_name entities', $type_params), | ||||
|       ], | ||||
|       "$type_id view revisions" => [ | ||||
|         'title' => $this->t('View %type_name revisions', $type_params), | ||||
|         'description' => t('To view a revision, you also need permission to view the entity item.'), | ||||
|       ], | ||||
|       "$type_id revert revisions" => [ | ||||
|         'title' => $this->t('Revert %type_name revisions', $type_params), | ||||
|         'description' => t('To revert a revision, you also need permission to edit the entity item.'), | ||||
|       ], | ||||
|       "$type_id delete revisions" => [ | ||||
|         'title' => $this->t('Delete %type_name revisions', $type_params), | ||||
|         'description' => $this->t('To delete a revision, you also need permission to delete the entity item.'), | ||||
|       ], | ||||
|     ]; | ||||
|   } | ||||
|  | ||||
| } | ||||
							
								
								
									
										58
									
								
								modules/opencase_cases/src/OCCaseFeeStorage.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								modules/opencase_cases/src/OCCaseFeeStorage.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,58 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases; | ||||
|  | ||||
| use Drupal\Core\Entity\Sql\SqlContentEntityStorage; | ||||
| use Drupal\Core\Session\AccountInterface; | ||||
| use Drupal\Core\Language\LanguageInterface; | ||||
| use Drupal\opencase_cases\Entity\OCCaseFeeInterface; | ||||
|  | ||||
| /** | ||||
|  * Defines the storage handler class for Case Fee entities. | ||||
|  * | ||||
|  * This extends the base storage class, adding required special handling for | ||||
|  * Case Fee entities. | ||||
|  * | ||||
|  * @ingroup opencase_cases | ||||
|  */ | ||||
| class OCCaseFeeStorage extends SqlContentEntityStorage implements OCCaseFeeStorageInterface { | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function revisionIds(OCCaseFeeInterface $entity) { | ||||
|     return $this->database->query( | ||||
|       'SELECT vid FROM {oc_case_fee_revision} WHERE id=:id ORDER BY vid', | ||||
|       [':id' => $entity->id()] | ||||
|     )->fetchCol(); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function userRevisionIds(AccountInterface $account) { | ||||
|     return $this->database->query( | ||||
|       'SELECT vid FROM {oc_case_fee_field_revision} WHERE uid = :uid ORDER BY vid', | ||||
|       [':uid' => $account->id()] | ||||
|     )->fetchCol(); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function countDefaultLanguageRevisions(OCCaseFeeInterface $entity) { | ||||
|     return $this->database->query('SELECT COUNT(*) FROM {oc_case_fee_field_revision} WHERE id = :id AND default_langcode = 1', [':id' => $entity->id()]) | ||||
|       ->fetchField(); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function clearRevisionsLanguage(LanguageInterface $language) { | ||||
|     return $this->database->update('oc_case_fee_revision') | ||||
|       ->fields(['langcode' => LanguageInterface::LANGCODE_NOT_SPECIFIED]) | ||||
|       ->condition('langcode', $language->getId()) | ||||
|       ->execute(); | ||||
|   } | ||||
|  | ||||
| } | ||||
							
								
								
									
										61
									
								
								modules/opencase_cases/src/OCCaseFeeStorageInterface.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								modules/opencase_cases/src/OCCaseFeeStorageInterface.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,61 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases; | ||||
|  | ||||
| use Drupal\Core\Entity\ContentEntityStorageInterface; | ||||
| use Drupal\Core\Session\AccountInterface; | ||||
| use Drupal\Core\Language\LanguageInterface; | ||||
| use Drupal\opencase_cases\Entity\OCCaseFeeInterface; | ||||
|  | ||||
| /** | ||||
|  * Defines the storage handler class for Case Fee entities. | ||||
|  * | ||||
|  * This extends the base storage class, adding required special handling for | ||||
|  * Case Fee entities. | ||||
|  * | ||||
|  * @ingroup opencase_cases | ||||
|  */ | ||||
| interface OCCaseFeeStorageInterface extends ContentEntityStorageInterface { | ||||
|  | ||||
|   /** | ||||
|    * Gets a list of Case Fee revision IDs for a specific Case Fee. | ||||
|    * | ||||
|    * @param \Drupal\opencase_cases\Entity\OCCaseFeeInterface $entity | ||||
|    *   The Case Fee entity. | ||||
|    * | ||||
|    * @return int[] | ||||
|    *   Case Fee revision IDs (in ascending order). | ||||
|    */ | ||||
|   public function revisionIds(OCCaseFeeInterface $entity); | ||||
|  | ||||
|   /** | ||||
|    * Gets a list of revision IDs having a given user as Case Fee author. | ||||
|    * | ||||
|    * @param \Drupal\Core\Session\AccountInterface $account | ||||
|    *   The user entity. | ||||
|    * | ||||
|    * @return int[] | ||||
|    *   Case Fee revision IDs (in ascending order). | ||||
|    */ | ||||
|   public function userRevisionIds(AccountInterface $account); | ||||
|  | ||||
|   /** | ||||
|    * Counts the number of revisions in the default language. | ||||
|    * | ||||
|    * @param \Drupal\opencase_cases\Entity\OCCaseFeeInterface $entity | ||||
|    *   The Case Fee entity. | ||||
|    * | ||||
|    * @return int | ||||
|    *   The number of revisions in the default language. | ||||
|    */ | ||||
|   public function countDefaultLanguageRevisions(OCCaseFeeInterface $entity); | ||||
|  | ||||
|   /** | ||||
|    * Unsets the language for all Case Fee with the given language. | ||||
|    * | ||||
|    * @param \Drupal\Core\Language\LanguageInterface $language | ||||
|    *   The language object. | ||||
|    */ | ||||
|   public function clearRevisionsLanguage(LanguageInterface $language); | ||||
|  | ||||
| } | ||||
							
								
								
									
										13
									
								
								modules/opencase_cases/src/OCCaseFeeTranslationHandler.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								modules/opencase_cases/src/OCCaseFeeTranslationHandler.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases; | ||||
|  | ||||
| use Drupal\content_translation\ContentTranslationHandler; | ||||
|  | ||||
| /** | ||||
|  * Defines the translation handler for oc_case_fee. | ||||
|  */ | ||||
| class OCCaseFeeTranslationHandler extends ContentTranslationHandler { | ||||
|  | ||||
|   // Override here the needed methods from ContentTranslationHandler. | ||||
| } | ||||
| @ -0,0 +1,26 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases; | ||||
|  | ||||
| use Drupal\Core\Entity\EntityTypeInterface; | ||||
| use Drupal\Core\Entity\Routing\AdminHtmlRouteProvider; | ||||
|  | ||||
| /** | ||||
|  * Provides routes for Case Fee type entities. | ||||
|  * | ||||
|  * @see Drupal\Core\Entity\Routing\AdminHtmlRouteProvider | ||||
|  * @see Drupal\Core\Entity\Routing\DefaultHtmlRouteProvider | ||||
|  */ | ||||
| class OCCaseFeeTypeHtmlRouteProvider extends AdminHtmlRouteProvider { | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getRoutes(EntityTypeInterface $entity_type) { | ||||
|     $collection = parent::getRoutes($entity_type); | ||||
|  | ||||
|     // Provide your custom entity routes here. | ||||
|     return $collection; | ||||
|   } | ||||
|  | ||||
| } | ||||
							
								
								
									
										32
									
								
								modules/opencase_cases/src/OCCaseFeeTypeListBuilder.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								modules/opencase_cases/src/OCCaseFeeTypeListBuilder.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,32 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases; | ||||
|  | ||||
| use Drupal\Core\Config\Entity\ConfigEntityListBuilder; | ||||
| use Drupal\Core\Entity\EntityInterface; | ||||
|  | ||||
| /** | ||||
|  * Provides a listing of Case Fee type entities. | ||||
|  */ | ||||
| class OCCaseFeeTypeListBuilder extends ConfigEntityListBuilder { | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function buildHeader() { | ||||
|     $header['label'] = $this->t('Case Fee type'); | ||||
|     $header['id'] = $this->t('Machine name'); | ||||
|     return $header + parent::buildHeader(); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function buildRow(EntityInterface $entity) { | ||||
|     $row['label'] = $entity->label(); | ||||
|     $row['id'] = $entity->id(); | ||||
|     // You probably want a few more properties here... | ||||
|     return $row + parent::buildRow($entity); | ||||
|   } | ||||
|  | ||||
| } | ||||
| @ -0,0 +1,116 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases; | ||||
|  | ||||
| use Drupal\Core\Entity\EntityAccessControlHandler; | ||||
| use Drupal\Core\Entity\EntityInterface; | ||||
| use Drupal\Core\Session\AccountInterface; | ||||
| use Drupal\Core\Access\AccessResult; | ||||
|  | ||||
| /** | ||||
|  * Access controller for the Case Provision entity. | ||||
|  * | ||||
|  * @see \Drupal\opencase_cases\Entity\OCCaseProvision. | ||||
|  */ | ||||
| class OCCaseProvisionAccessControlHandler extends EntityAccessControlHandler { | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   protected function checkAccess(EntityInterface $entity, $operation, AccountInterface $account) { | ||||
|     /** @var \Drupal\opencase_cases\Entity\OCCaseProvisionInterface $entity */ | ||||
|  | ||||
|     switch ($operation) { | ||||
|  | ||||
|       case 'view': | ||||
|  | ||||
|         if (!$entity->isPublished()) { | ||||
|           $permission = $this->checkOwn($entity, 'view unpublished', $account); | ||||
|           if (!empty($permission)) { | ||||
|             return AccessResult::allowed(); | ||||
|           } | ||||
|  | ||||
|           return AccessResult::allowedIfHasPermission($account, 'view unpublished case provision entities'); | ||||
|         } | ||||
|  | ||||
|         $permission = $this->checkOwn($entity, $operation, $account); | ||||
|         if (!empty($permission)) { | ||||
|           return AccessResult::allowed(); | ||||
|         } | ||||
|  | ||||
|         return AccessResult::allowedIfHasPermission($account, 'view published case provision entities'); | ||||
|  | ||||
|       case 'update': | ||||
|  | ||||
|         $permission = $this->checkOwn($entity, $operation, $account); | ||||
|         if (!empty($permission)) { | ||||
|           return AccessResult::allowed(); | ||||
|         } | ||||
|         return AccessResult::allowedIfHasPermission($account, 'edit case provision entities'); | ||||
|  | ||||
|       case 'delete': | ||||
|  | ||||
|         $permission = $this->checkOwn($entity, $operation, $account); | ||||
|         if (!empty($permission)) { | ||||
|           return AccessResult::allowed(); | ||||
|         } | ||||
|         return AccessResult::allowedIfHasPermission($account, 'delete case provision entities'); | ||||
|     } | ||||
|  | ||||
|     // Unknown operation, no opinion. | ||||
|     return AccessResult::neutral(); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   protected function checkCreateAccess(AccountInterface $account, array $context, $entity_bundle = NULL) { | ||||
|     return AccessResult::allowedIfHasPermission($account, 'add case provision entities'); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Test for given 'own' permission. | ||||
|    * | ||||
|    * @param \Drupal\Core\Entity\EntityInterface $entity | ||||
|    * @param $operation | ||||
|    * @param \Drupal\Core\Session\AccountInterface $account | ||||
|    * | ||||
|    * @return string|null | ||||
|    *   The permission string indicating it's allowed. | ||||
|    */ | ||||
|   protected function checkOwn(EntityInterface $entity, $operation, AccountInterface $account) { | ||||
|     $status = $entity->isPublished(); | ||||
|     $uid = $entity->getOwnerId(); | ||||
|  | ||||
|     $is_own = $account->isAuthenticated() && $account->id() == $uid; | ||||
|     if (!$is_own) { | ||||
|       return; | ||||
|     } | ||||
|  | ||||
|     $bundle = $entity->bundle(); | ||||
|  | ||||
|     $ops = [ | ||||
|       'create' => '%bundle add own %bundle entities', | ||||
|       'view unpublished' => '%bundle view own unpublished %bundle entities', | ||||
|       'view' => '%bundle view own entities', | ||||
|       'update' => '%bundle edit own entities', | ||||
|       'delete' => '%bundle delete own entities', | ||||
|     ]; | ||||
|     $permission = strtr($ops[$operation], ['%bundle' => $bundle]); | ||||
|  | ||||
|     if ($operation === 'view unpublished') { | ||||
|       if (!$status && $account->hasPermission($permission)) { | ||||
|         return $permission; | ||||
|       } | ||||
|       else { | ||||
|         return NULL; | ||||
|       } | ||||
|     } | ||||
|     if ($account->hasPermission($permission)) { | ||||
|       return $permission; | ||||
|     } | ||||
|  | ||||
|     return NULL; | ||||
|   } | ||||
|  | ||||
| } | ||||
							
								
								
									
										196
									
								
								modules/opencase_cases/src/OCCaseProvisionHtmlRouteProvider.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										196
									
								
								modules/opencase_cases/src/OCCaseProvisionHtmlRouteProvider.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,196 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases; | ||||
|  | ||||
| use Drupal\Core\Entity\EntityTypeInterface; | ||||
| use Drupal\Core\Entity\Routing\AdminHtmlRouteProvider; | ||||
| use Symfony\Component\Routing\Route; | ||||
|  | ||||
| /** | ||||
|  * Provides routes for Case Provision entities. | ||||
|  * | ||||
|  * @see \Drupal\Core\Entity\Routing\AdminHtmlRouteProvider | ||||
|  * @see \Drupal\Core\Entity\Routing\DefaultHtmlRouteProvider | ||||
|  */ | ||||
| class OCCaseProvisionHtmlRouteProvider extends AdminHtmlRouteProvider { | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getRoutes(EntityTypeInterface $entity_type) { | ||||
|     $collection = parent::getRoutes($entity_type); | ||||
|  | ||||
|     $entity_type_id = $entity_type->id(); | ||||
|  | ||||
|     if ($history_route = $this->getHistoryRoute($entity_type)) { | ||||
|       $collection->add("entity.{$entity_type_id}.version_history", $history_route); | ||||
|     } | ||||
|  | ||||
|     if ($revision_route = $this->getRevisionRoute($entity_type)) { | ||||
|       $collection->add("entity.{$entity_type_id}.revision", $revision_route); | ||||
|     } | ||||
|  | ||||
|     if ($revert_route = $this->getRevisionRevertRoute($entity_type)) { | ||||
|       $collection->add("entity.{$entity_type_id}.revision_revert", $revert_route); | ||||
|     } | ||||
|  | ||||
|     if ($delete_route = $this->getRevisionDeleteRoute($entity_type)) { | ||||
|       $collection->add("entity.{$entity_type_id}.revision_delete", $delete_route); | ||||
|     } | ||||
|  | ||||
|     if ($translation_route = $this->getRevisionTranslationRevertRoute($entity_type)) { | ||||
|       $collection->add("{$entity_type_id}.revision_revert_translation_confirm", $translation_route); | ||||
|     } | ||||
|  | ||||
|     if ($settings_form_route = $this->getSettingsFormRoute($entity_type)) { | ||||
|       $collection->add("$entity_type_id.settings", $settings_form_route); | ||||
|     } | ||||
|  | ||||
|     return $collection; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Gets the version history route. | ||||
|    * | ||||
|    * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type | ||||
|    *   The entity type. | ||||
|    * | ||||
|    * @return \Symfony\Component\Routing\Route|null | ||||
|    *   The generated route, if available. | ||||
|    */ | ||||
|   protected function getHistoryRoute(EntityTypeInterface $entity_type) { | ||||
|     if ($entity_type->hasLinkTemplate('version-history')) { | ||||
|       $route = new Route($entity_type->getLinkTemplate('version-history')); | ||||
|       $route | ||||
|         ->setDefaults([ | ||||
|           '_title' => "{$entity_type->getLabel()} revisions", | ||||
|           '_controller' => '\Drupal\opencase_cases\Controller\OCCaseProvisionController::revisionOverview', | ||||
|         ]) | ||||
|         ->setRequirement('_permission', 'view all case provision revisions') | ||||
|         ->setOption('_admin_route', TRUE); | ||||
|  | ||||
|       return $route; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Gets the revision route. | ||||
|    * | ||||
|    * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type | ||||
|    *   The entity type. | ||||
|    * | ||||
|    * @return \Symfony\Component\Routing\Route|null | ||||
|    *   The generated route, if available. | ||||
|    */ | ||||
|   protected function getRevisionRoute(EntityTypeInterface $entity_type) { | ||||
|     if ($entity_type->hasLinkTemplate('revision')) { | ||||
|       $route = new Route($entity_type->getLinkTemplate('revision')); | ||||
|       $route | ||||
|         ->setDefaults([ | ||||
|           '_controller' => '\Drupal\opencase_cases\Controller\OCCaseProvisionController::revisionShow', | ||||
|           '_title_callback' => '\Drupal\opencase_cases\Controller\OCCaseProvisionController::revisionPageTitle', | ||||
|         ]) | ||||
|         ->setRequirement('_permission', 'view all case provision revisions') | ||||
|         ->setOption('_admin_route', TRUE); | ||||
|  | ||||
|       return $route; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Gets the revision revert route. | ||||
|    * | ||||
|    * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type | ||||
|    *   The entity type. | ||||
|    * | ||||
|    * @return \Symfony\Component\Routing\Route|null | ||||
|    *   The generated route, if available. | ||||
|    */ | ||||
|   protected function getRevisionRevertRoute(EntityTypeInterface $entity_type) { | ||||
|     if ($entity_type->hasLinkTemplate('revision_revert')) { | ||||
|       $route = new Route($entity_type->getLinkTemplate('revision_revert')); | ||||
|       $route | ||||
|         ->setDefaults([ | ||||
|           '_form' => '\Drupal\opencase_cases\Form\OCCaseProvisionRevisionRevertForm', | ||||
|           '_title' => 'Revert to earlier revision', | ||||
|         ]) | ||||
|         ->setRequirement('_permission', 'revert all case provision revisions') | ||||
|         ->setOption('_admin_route', TRUE); | ||||
|  | ||||
|       return $route; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Gets the revision delete route. | ||||
|    * | ||||
|    * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type | ||||
|    *   The entity type. | ||||
|    * | ||||
|    * @return \Symfony\Component\Routing\Route|null | ||||
|    *   The generated route, if available. | ||||
|    */ | ||||
|   protected function getRevisionDeleteRoute(EntityTypeInterface $entity_type) { | ||||
|     if ($entity_type->hasLinkTemplate('revision_delete')) { | ||||
|       $route = new Route($entity_type->getLinkTemplate('revision_delete')); | ||||
|       $route | ||||
|         ->setDefaults([ | ||||
|           '_form' => '\Drupal\opencase_cases\Form\OCCaseProvisionRevisionDeleteForm', | ||||
|           '_title' => 'Delete earlier revision', | ||||
|         ]) | ||||
|         ->setRequirement('_permission', 'delete all case provision revisions') | ||||
|         ->setOption('_admin_route', TRUE); | ||||
|  | ||||
|       return $route; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Gets the revision translation revert route. | ||||
|    * | ||||
|    * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type | ||||
|    *   The entity type. | ||||
|    * | ||||
|    * @return \Symfony\Component\Routing\Route|null | ||||
|    *   The generated route, if available. | ||||
|    */ | ||||
|   protected function getRevisionTranslationRevertRoute(EntityTypeInterface $entity_type) { | ||||
|     if ($entity_type->hasLinkTemplate('translation_revert')) { | ||||
|       $route = new Route($entity_type->getLinkTemplate('translation_revert')); | ||||
|       $route | ||||
|         ->setDefaults([ | ||||
|           '_form' => '\Drupal\opencase_cases\Form\OCCaseProvisionRevisionRevertTranslationForm', | ||||
|           '_title' => 'Revert to earlier revision of a translation', | ||||
|         ]) | ||||
|         ->setRequirement('_permission', 'revert all case provision revisions') | ||||
|         ->setOption('_admin_route', TRUE); | ||||
|  | ||||
|       return $route; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Gets the settings form route. | ||||
|    * | ||||
|    * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type | ||||
|    *   The entity type. | ||||
|    * | ||||
|    * @return \Symfony\Component\Routing\Route|null | ||||
|    *   The generated route, if available. | ||||
|    */ | ||||
|   protected function getSettingsFormRoute(EntityTypeInterface $entity_type) { | ||||
|     if (!$entity_type->getBundleEntityType()) { | ||||
|       $route = new Route("/admin/structure/{$entity_type->id()}/settings"); | ||||
|       $route | ||||
|         ->setDefaults([ | ||||
|           '_form' => 'Drupal\opencase_cases\Form\OCCaseProvisionSettingsForm', | ||||
|           '_title' => "{$entity_type->getLabel()} settings", | ||||
|         ]) | ||||
|         ->setRequirement('_permission', $entity_type->getAdminPermission()) | ||||
|         ->setOption('_admin_route', TRUE); | ||||
|  | ||||
|       return $route; | ||||
|     } | ||||
|   } | ||||
|  | ||||
| } | ||||
							
								
								
									
										39
									
								
								modules/opencase_cases/src/OCCaseProvisionListBuilder.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								modules/opencase_cases/src/OCCaseProvisionListBuilder.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,39 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases; | ||||
|  | ||||
| use Drupal\Core\Entity\EntityInterface; | ||||
| use Drupal\Core\Entity\EntityListBuilder; | ||||
| use Drupal\Core\Link; | ||||
|  | ||||
| /** | ||||
|  * Defines a class to build a listing of Case Provision entities. | ||||
|  * | ||||
|  * @ingroup opencase_cases | ||||
|  */ | ||||
| class OCCaseProvisionListBuilder extends EntityListBuilder { | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function buildHeader() { | ||||
|     $header['id'] = $this->t('Case Provision ID'); | ||||
|     $header['name'] = $this->t('Name'); | ||||
|     return $header + parent::buildHeader(); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function buildRow(EntityInterface $entity) { | ||||
|     /* @var \Drupal\opencase_cases\Entity\OCCaseProvision $entity */ | ||||
|     $row['id'] = $entity->id(); | ||||
|     $row['name'] = Link::createFromRoute( | ||||
|       $entity->label(), | ||||
|       'entity.oc_case_provision.edit_form', | ||||
|       ['oc_case_provision' => $entity->id()] | ||||
|     ); | ||||
|     return $row + parent::buildRow($entity); | ||||
|   } | ||||
|  | ||||
| } | ||||
							
								
								
									
										80
									
								
								modules/opencase_cases/src/OCCaseProvisionPermissions.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								modules/opencase_cases/src/OCCaseProvisionPermissions.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,80 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases; | ||||
|  | ||||
| use Drupal\Core\StringTranslation\StringTranslationTrait; | ||||
| use Drupal\opencase_cases\Entity\OCCaseProvision; | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Provides dynamic permissions for Case Provision of different types. | ||||
|  * | ||||
|  * @ingroup opencase_cases | ||||
|  * | ||||
|  */ | ||||
| class OCCaseProvisionPermissions{ | ||||
|  | ||||
|   use StringTranslationTrait; | ||||
|  | ||||
|   /** | ||||
|    * Returns an array of node type permissions. | ||||
|    * | ||||
|    * @return array | ||||
|    *   The OCCaseProvision by bundle permissions. | ||||
|    *   @see \Drupal\user\PermissionHandlerInterface::getPermissions() | ||||
|    */ | ||||
|   public function generatePermissions() { | ||||
|     $perms = []; | ||||
|  | ||||
|     foreach (OCCaseProvision::loadMultiple() as $type) { | ||||
|       $perms += $this->buildPermissions($type); | ||||
|     } | ||||
|  | ||||
|     return $perms; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Returns a list of node permissions for a given node type. | ||||
|    * | ||||
|    * @param \Drupal\opencase_cases\Entity\OCCaseProvision $type | ||||
|    *   The OCCaseProvision type. | ||||
|    * | ||||
|    * @return array | ||||
|    *   An associative array of permission names and descriptions. | ||||
|    */ | ||||
|   protected function buildPermissions(OCCaseProvision $type) { | ||||
|     $type_id = $type->id(); | ||||
|     $type_params = ['%type_name' => $type->label()]; | ||||
|  | ||||
|     return [ | ||||
|       "$type_id create entities" => [ | ||||
|         'title' => $this->t('Create new %type_name entities', $type_params), | ||||
|       ], | ||||
|       "$type_id edit own entities" => [ | ||||
|         'title' => $this->t('Edit own %type_name entities', $type_params), | ||||
|       ], | ||||
|       "$type_id edit any entities" => [ | ||||
|         'title' => $this->t('Edit any %type_name entities', $type_params), | ||||
|       ], | ||||
|       "$type_id delete own entities" => [ | ||||
|         'title' => $this->t('Delete own %type_name entities', $type_params), | ||||
|       ], | ||||
|       "$type_id delete any entities" => [ | ||||
|         'title' => $this->t('Delete any %type_name entities', $type_params), | ||||
|       ], | ||||
|       "$type_id view revisions" => [ | ||||
|         'title' => $this->t('View %type_name revisions', $type_params), | ||||
|         'description' => t('To view a revision, you also need permission to view the entity item.'), | ||||
|       ], | ||||
|       "$type_id revert revisions" => [ | ||||
|         'title' => $this->t('Revert %type_name revisions', $type_params), | ||||
|         'description' => t('To revert a revision, you also need permission to edit the entity item.'), | ||||
|       ], | ||||
|       "$type_id delete revisions" => [ | ||||
|         'title' => $this->t('Delete %type_name revisions', $type_params), | ||||
|         'description' => $this->t('To delete a revision, you also need permission to delete the entity item.'), | ||||
|       ], | ||||
|     ]; | ||||
|   } | ||||
|  | ||||
| } | ||||
							
								
								
									
										58
									
								
								modules/opencase_cases/src/OCCaseProvisionStorage.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								modules/opencase_cases/src/OCCaseProvisionStorage.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,58 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases; | ||||
|  | ||||
| use Drupal\Core\Entity\Sql\SqlContentEntityStorage; | ||||
| use Drupal\Core\Session\AccountInterface; | ||||
| use Drupal\Core\Language\LanguageInterface; | ||||
| use Drupal\opencase_cases\Entity\OCCaseProvisionInterface; | ||||
|  | ||||
| /** | ||||
|  * Defines the storage handler class for Case Provision entities. | ||||
|  * | ||||
|  * This extends the base storage class, adding required special handling for | ||||
|  * Case Provision entities. | ||||
|  * | ||||
|  * @ingroup opencase_cases | ||||
|  */ | ||||
| class OCCaseProvisionStorage extends SqlContentEntityStorage implements OCCaseProvisionStorageInterface { | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function revisionIds(OCCaseProvisionInterface $entity) { | ||||
|     return $this->database->query( | ||||
|       'SELECT vid FROM {oc_case_provision_revision} WHERE id=:id ORDER BY vid', | ||||
|       [':id' => $entity->id()] | ||||
|     )->fetchCol(); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function userRevisionIds(AccountInterface $account) { | ||||
|     return $this->database->query( | ||||
|       'SELECT vid FROM {oc_case_provision_field_revision} WHERE uid = :uid ORDER BY vid', | ||||
|       [':uid' => $account->id()] | ||||
|     )->fetchCol(); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function countDefaultLanguageRevisions(OCCaseProvisionInterface $entity) { | ||||
|     return $this->database->query('SELECT COUNT(*) FROM {oc_case_provision_field_revision} WHERE id = :id AND default_langcode = 1', [':id' => $entity->id()]) | ||||
|       ->fetchField(); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function clearRevisionsLanguage(LanguageInterface $language) { | ||||
|     return $this->database->update('oc_case_provision_revision') | ||||
|       ->fields(['langcode' => LanguageInterface::LANGCODE_NOT_SPECIFIED]) | ||||
|       ->condition('langcode', $language->getId()) | ||||
|       ->execute(); | ||||
|   } | ||||
|  | ||||
| } | ||||
| @ -0,0 +1,61 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases; | ||||
|  | ||||
| use Drupal\Core\Entity\ContentEntityStorageInterface; | ||||
| use Drupal\Core\Session\AccountInterface; | ||||
| use Drupal\Core\Language\LanguageInterface; | ||||
| use Drupal\opencase_cases\Entity\OCCaseProvisionInterface; | ||||
|  | ||||
| /** | ||||
|  * Defines the storage handler class for Case Provision entities. | ||||
|  * | ||||
|  * This extends the base storage class, adding required special handling for | ||||
|  * Case Provision entities. | ||||
|  * | ||||
|  * @ingroup opencase_cases | ||||
|  */ | ||||
| interface OCCaseProvisionStorageInterface extends ContentEntityStorageInterface { | ||||
|  | ||||
|   /** | ||||
|    * Gets a list of Case Provision revision IDs for a specific Case Provision. | ||||
|    * | ||||
|    * @param \Drupal\opencase_cases\Entity\OCCaseProvisionInterface $entity | ||||
|    *   The Case Provision entity. | ||||
|    * | ||||
|    * @return int[] | ||||
|    *   Case Provision revision IDs (in ascending order). | ||||
|    */ | ||||
|   public function revisionIds(OCCaseProvisionInterface $entity); | ||||
|  | ||||
|   /** | ||||
|    * Gets a list of revision IDs having a given user as Case Provision author. | ||||
|    * | ||||
|    * @param \Drupal\Core\Session\AccountInterface $account | ||||
|    *   The user entity. | ||||
|    * | ||||
|    * @return int[] | ||||
|    *   Case Provision revision IDs (in ascending order). | ||||
|    */ | ||||
|   public function userRevisionIds(AccountInterface $account); | ||||
|  | ||||
|   /** | ||||
|    * Counts the number of revisions in the default language. | ||||
|    * | ||||
|    * @param \Drupal\opencase_cases\Entity\OCCaseProvisionInterface $entity | ||||
|    *   The Case Provision entity. | ||||
|    * | ||||
|    * @return int | ||||
|    *   The number of revisions in the default language. | ||||
|    */ | ||||
|   public function countDefaultLanguageRevisions(OCCaseProvisionInterface $entity); | ||||
|  | ||||
|   /** | ||||
|    * Unsets the language for all Case Provision with the given language. | ||||
|    * | ||||
|    * @param \Drupal\Core\Language\LanguageInterface $language | ||||
|    *   The language object. | ||||
|    */ | ||||
|   public function clearRevisionsLanguage(LanguageInterface $language); | ||||
|  | ||||
| } | ||||
| @ -0,0 +1,13 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases; | ||||
|  | ||||
| use Drupal\content_translation\ContentTranslationHandler; | ||||
|  | ||||
| /** | ||||
|  * Defines the translation handler for oc_case_provision. | ||||
|  */ | ||||
| class OCCaseProvisionTranslationHandler extends ContentTranslationHandler { | ||||
|  | ||||
|   // Override here the needed methods from ContentTranslationHandler. | ||||
| } | ||||
| @ -0,0 +1,26 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases; | ||||
|  | ||||
| use Drupal\Core\Entity\EntityTypeInterface; | ||||
| use Drupal\Core\Entity\Routing\AdminHtmlRouteProvider; | ||||
|  | ||||
| /** | ||||
|  * Provides routes for Case Provision type entities. | ||||
|  * | ||||
|  * @see Drupal\Core\Entity\Routing\AdminHtmlRouteProvider | ||||
|  * @see Drupal\Core\Entity\Routing\DefaultHtmlRouteProvider | ||||
|  */ | ||||
| class OCCaseProvisionTypeHtmlRouteProvider extends AdminHtmlRouteProvider { | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function getRoutes(EntityTypeInterface $entity_type) { | ||||
|     $collection = parent::getRoutes($entity_type); | ||||
|  | ||||
|     // Provide your custom entity routes here. | ||||
|     return $collection; | ||||
|   } | ||||
|  | ||||
| } | ||||
| @ -0,0 +1,32 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Drupal\opencase_cases; | ||||
|  | ||||
| use Drupal\Core\Config\Entity\ConfigEntityListBuilder; | ||||
| use Drupal\Core\Entity\EntityInterface; | ||||
|  | ||||
| /** | ||||
|  * Provides a listing of Case Provision type entities. | ||||
|  */ | ||||
| class OCCaseProvisionTypeListBuilder extends ConfigEntityListBuilder { | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function buildHeader() { | ||||
|     $header['label'] = $this->t('Case Provision type'); | ||||
|     $header['id'] = $this->t('Machine name'); | ||||
|     return $header + parent::buildHeader(); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * {@inheritdoc} | ||||
|    */ | ||||
|   public function buildRow(EntityInterface $entity) { | ||||
|     $row['label'] = $entity->label(); | ||||
|     $row['id'] = $entity->id(); | ||||
|     // You probably want a few more properties here... | ||||
|     return $row + parent::buildRow($entity); | ||||
|   } | ||||
|  | ||||
| } | ||||
| @ -9,15 +9,15 @@ | ||||
|  *   - link: A link to add a content entity of this type. | ||||
|  *   - description: A description of this content entity types/bundle. | ||||
|  * | ||||
|  * @see template_preprocess_oc_case_content_add_list() | ||||
|  * @see template_preprocess_oc_activity_content_add_list() | ||||
|  * | ||||
|  * @ingroup themeable | ||||
|  */ | ||||
| #} | ||||
| {% spaceless %} | ||||
|   <dl> | ||||
|     {% for type in types %} | ||||
|       <dt>{{ type.link }}</dt> | ||||
|     {% for id,type in bundles %} | ||||
|       <dt><a href="/opencase/oc_case/add/{{ id }}?client_id={{ client_id }}">{{ type.label }}</a></dt> | ||||
|     {% endfor %} | ||||
|   </dl> | ||||
| {% endspaceless %} | ||||
|  | ||||
| @ -0,0 +1,23 @@ | ||||
| {# | ||||
| /** | ||||
|  * @file | ||||
|  * Default theme implementation to present a list of custom content entity types/bundles. | ||||
|  * | ||||
|  * Available variables: | ||||
|  * - types: A collection of all the available custom entity types/bundles. | ||||
|  *   Each type/bundle contains the following: | ||||
|  *   - link: A link to add a content entity of this type. | ||||
|  *   - description: A description of this content entity types/bundle. | ||||
|  * | ||||
|  * @see template_preprocess_oc_case_fee_content_add_list() | ||||
|  * | ||||
|  * @ingroup themeable | ||||
|  */ | ||||
| #} | ||||
| {% spaceless %} | ||||
|   <dl> | ||||
|     {% for type in types %} | ||||
|       <dt>{{ type.link }}</dt> | ||||
|     {% endfor %} | ||||
|   </dl> | ||||
| {% endspaceless %} | ||||
| @ -0,0 +1,23 @@ | ||||
| {# | ||||
| /** | ||||
|  * @file | ||||
|  * Default theme implementation to present a list of custom content entity types/bundles. | ||||
|  * | ||||
|  * Available variables: | ||||
|  * - types: A collection of all the available custom entity types/bundles. | ||||
|  *   Each type/bundle contains the following: | ||||
|  *   - link: A link to add a content entity of this type. | ||||
|  *   - description: A description of this content entity types/bundle. | ||||
|  * | ||||
|  * @see template_preprocess_oc_case_provision_content_add_list() | ||||
|  * | ||||
|  * @ingroup themeable | ||||
|  */ | ||||
| #} | ||||
| {% spaceless %} | ||||
|   <dl> | ||||
|     {% for type in types %} | ||||
|       <dt>{{ type.link }}</dt> | ||||
|     {% endfor %} | ||||
|   </dl> | ||||
| {% endspaceless %} | ||||
| @ -16,18 +16,7 @@ | ||||
|  */ | ||||
| #} | ||||
| <div{{ attributes.addClass('oc_case') }}> | ||||
|   <h2>{{ title }}</h2> | ||||
|   <div class="oc_entity"> | ||||
|     <div class="left"> | ||||
|       {{ base_fields.actors_involved }} | ||||
|       {{ base_fields.changed }} | ||||
|       {{ base_fields.created }} | ||||
|       {{ base_fields.user_id }} | ||||
|     </div> | ||||
|     <div class="right"> | ||||
|       {% for field in other_fields %} | ||||
|         {{ field }} | ||||
|       {% endfor %} | ||||
|     </div> | ||||
|   </div> | ||||
|   {% if content %} | ||||
|     {{- content -}} | ||||
|   {% endif %} | ||||
| </div> | ||||
|  | ||||
							
								
								
									
										22
									
								
								modules/opencase_cases/templates/oc_case_fee.html.twig
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								modules/opencase_cases/templates/oc_case_fee.html.twig
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,22 @@ | ||||
| {# | ||||
| /** | ||||
|  * @file oc_case_fee.html.twig | ||||
|  * Default theme implementation to present Case Fee data. | ||||
|  * | ||||
|  * This template is used when viewing Case Fee pages. | ||||
|  * | ||||
|  * | ||||
|  * Available variables: | ||||
|  * - content: A list of content items. Use 'content' to print all content, or | ||||
|  * - attributes: HTML attributes for the container element. | ||||
|  * | ||||
|  * @see template_preprocess_oc_case_fee() | ||||
|  * | ||||
|  * @ingroup themeable | ||||
|  */ | ||||
| #} | ||||
| <div{{ attributes.addClass('oc_case_fee') }}> | ||||
|   {% if content %} | ||||
|     {{- content -}} | ||||
|   {% endif %} | ||||
| </div> | ||||
							
								
								
									
										22
									
								
								modules/opencase_cases/templates/oc_case_provision.html.twig
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								modules/opencase_cases/templates/oc_case_provision.html.twig
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,22 @@ | ||||
| {# | ||||
| /** | ||||
|  * @file oc_case_provision.html.twig | ||||
|  * Default theme implementation to present Case Provision data. | ||||
|  * | ||||
|  * This template is used when viewing Case Provision pages. | ||||
|  * | ||||
|  * | ||||
|  * Available variables: | ||||
|  * - content: A list of content items. Use 'content' to print all content, or | ||||
|  * - attributes: HTML attributes for the container element. | ||||
|  * | ||||
|  * @see template_preprocess_oc_case_provision() | ||||
|  * | ||||
|  * @ingroup themeable | ||||
|  */ | ||||
| #} | ||||
| <div{{ attributes.addClass('oc_case_provision') }}> | ||||
|   {% if content %} | ||||
|     {{- content -}} | ||||
|   {% endif %} | ||||
| </div> | ||||
| @ -1,28 +0,0 @@ | ||||
| langcode: en | ||||
| status: true | ||||
| dependencies: | ||||
|   config: | ||||
|     - facets.facet.asylum_status | ||||
|   module: | ||||
|     - facets | ||||
|     - system | ||||
|   theme: | ||||
|     - bartik | ||||
| id: facet_asylum_status | ||||
| theme: bartik | ||||
| region: sidebar_second | ||||
| weight: 0 | ||||
| provider: null | ||||
| plugin: 'facet_block:asylum_status' | ||||
| settings: | ||||
|   id: 'facet_block:asylum_status' | ||||
|   label: 'Asylum Status' | ||||
|   provider: facets | ||||
|   label_display: visible | ||||
|   block_id: facet_asylum_status | ||||
| visibility: | ||||
|   request_path: | ||||
|     id: request_path | ||||
|     pages: '/opencase/reporting/clients' | ||||
|     negate: false | ||||
|     context_mapping: {  } | ||||
| @ -1,28 +0,0 @@ | ||||
| langcode: en | ||||
| status: true | ||||
| dependencies: | ||||
|   config: | ||||
|     - facets.facet.created | ||||
|   module: | ||||
|     - facets | ||||
|     - system | ||||
|   theme: | ||||
|     - bartik | ||||
| id: facet_created | ||||
| theme: bartik | ||||
| region: sidebar_second | ||||
| weight: 0 | ||||
| provider: null | ||||
| plugin: 'facet_block:created' | ||||
| settings: | ||||
|   id: 'facet_block:created' | ||||
|   label: 'Created Date' | ||||
|   provider: facets | ||||
|   label_display: visible | ||||
|   block_id: facet_created | ||||
| visibility: | ||||
|   request_path: | ||||
|     id: request_path | ||||
|     pages: '/opencase/reporting/clients' | ||||
|     negate: false | ||||
|     context_mapping: {  } | ||||
| @ -1,28 +0,0 @@ | ||||
| langcode: en | ||||
| status: true | ||||
| dependencies: | ||||
|   config: | ||||
|     - facets.facet.disability | ||||
|   module: | ||||
|     - facets | ||||
|     - system | ||||
|   theme: | ||||
|     - bartik | ||||
| id: facet_disability | ||||
| theme: bartik | ||||
| region: sidebar_second | ||||
| weight: 0 | ||||
| provider: null | ||||
| plugin: 'facet_block:disability' | ||||
| settings: | ||||
|   id: 'facet_block:disability' | ||||
|   label: 'Disability' | ||||
|   provider: facets | ||||
|   label_display: visible | ||||
|   block_id: facet_disability | ||||
| visibility: | ||||
|   request_path: | ||||
|     id: request_path | ||||
|     pages: '/opencase/reporting/clients' | ||||
|     negate: false | ||||
|     context_mapping: {  } | ||||
| @ -1,28 +0,0 @@ | ||||
| langcode: en | ||||
| status: true | ||||
| dependencies: | ||||
|   config: | ||||
|     - facets.facet.gender_identified_with | ||||
|   module: | ||||
|     - facets | ||||
|     - system | ||||
|   theme: | ||||
|     - bartik | ||||
| id: facet_gender_identified_with | ||||
| theme: bartik | ||||
| region: sidebar_second | ||||
| weight: 0 | ||||
| provider: null | ||||
| plugin: 'facet_block:gender_identified_with' | ||||
| settings: | ||||
|   id: 'facet_block:gender_identified_with' | ||||
|   label: 'Gender Identity' | ||||
|   provider: facets | ||||
|   label_display: visible | ||||
|   block_id: facet_gender_identified_with | ||||
| visibility: | ||||
|   request_path: | ||||
|     id: request_path | ||||
|     pages: '/opencase/reporting/clients' | ||||
|     negate: false | ||||
|     context_mapping: {  } | ||||
| @ -1,28 +0,0 @@ | ||||
| langcode: en | ||||
| status: true | ||||
| dependencies: | ||||
|   config: | ||||
|     - facets.facet.languages | ||||
|   module: | ||||
|     - facets | ||||
|     - system | ||||
|   theme: | ||||
|     - bartik | ||||
| id: facet_languages | ||||
| theme: bartik | ||||
| region: sidebar_second | ||||
| weight: 0 | ||||
| provider: null | ||||
| plugin: 'facet_block:languages' | ||||
| settings: | ||||
|   id: 'facet_block:languages' | ||||
|   label: 'Languages' | ||||
|   provider: facets | ||||
|   label_display: visible | ||||
|   block_id: facet_languages | ||||
| visibility: | ||||
|   request_path: | ||||
|     id: request_path | ||||
|     pages: '/opencase/reporting/clients' | ||||
|     negate: false | ||||
|     context_mapping: {  } | ||||
| @ -1,28 +0,0 @@ | ||||
| langcode: en | ||||
| status: true | ||||
| dependencies: | ||||
|   config: | ||||
|     - facets.facet.involved_parties | ||||
|   module: | ||||
|     - facets | ||||
|     - system | ||||
|   theme: | ||||
|     - bartik | ||||
| id: involvedparties | ||||
| theme: bartik | ||||
| region: sidebar_second | ||||
| weight: 0 | ||||
| provider: null | ||||
| plugin: 'facet_block:involved_parties' | ||||
| settings: | ||||
|   id: 'facet_block:involved_parties' | ||||
|   label: 'Involved Parties' | ||||
|   provider: facets | ||||
|   label_display: visible | ||||
|   block_id: involvedparties | ||||
| visibility: | ||||
|   request_path: | ||||
|     id: request_path | ||||
|     pages: /opencase/reporting/cases | ||||
|     negate: false | ||||
|     context_mapping: {  } | ||||
| @ -1,28 +0,0 @@ | ||||
| langcode: en | ||||
| status: true | ||||
| dependencies: | ||||
|   config: | ||||
|     - facets.facet.nationalities | ||||
|   module: | ||||
|     - facets | ||||
|     - system | ||||
|   theme: | ||||
|     - bartik | ||||
| id: nationalities | ||||
| theme: bartik | ||||
| region: sidebar_second | ||||
| weight: 0 | ||||
| provider: null | ||||
| plugin: 'facet_block:nationalities' | ||||
| settings: | ||||
|   id: 'facet_block:nationalities' | ||||
|   label: Nationalities | ||||
|   provider: facets | ||||
|   label_display: visible | ||||
|   block_id: nationalities | ||||
| visibility: | ||||
|   request_path: | ||||
|     id: request_path | ||||
|     pages: /opencase/reporting/clients | ||||
|     negate: false | ||||
|     context_mapping: {  } | ||||
| @ -1,28 +0,0 @@ | ||||
| langcode: en | ||||
| status: true | ||||
| dependencies: | ||||
|   config: | ||||
|     - facets.facet.osic_level | ||||
|   module: | ||||
|     - facets | ||||
|     - system | ||||
|   theme: | ||||
|     - bartik | ||||
| id: osiclevel | ||||
| theme: bartik | ||||
| region: sidebar_second | ||||
| weight: 0 | ||||
| provider: null | ||||
| plugin: 'facet_block:osic_level' | ||||
| settings: | ||||
|   id: 'facet_block:osic_level' | ||||
|   label: 'OSIC level' | ||||
|   provider: facets | ||||
|   label_display: visible | ||||
|   block_id: osiclevel | ||||
| visibility: | ||||
|   request_path: | ||||
|     id: request_path | ||||
|     pages: /opencase/reporting/volunteers | ||||
|     negate: false | ||||
|     context_mapping: {  } | ||||
| @ -1,29 +0,0 @@ | ||||
| langcode: en | ||||
| status: true | ||||
| dependencies: | ||||
|   config: | ||||
|     - facets.facet.outcome | ||||
|   module: | ||||
|     - facets | ||||
|     - system | ||||
|   theme: | ||||
|     - bartik | ||||
| id: outcome | ||||
| theme: bartik | ||||
| region: sidebar_second | ||||
| weight: 0 | ||||
| provider: null | ||||
| plugin: 'facet_block:outcome' | ||||
| settings: | ||||
|   id: 'facet_block:outcome' | ||||
|   label: Outcome | ||||
|   provider: facets | ||||
|   label_display: visible | ||||
|   block_id: outcome | ||||
| visibility: | ||||
|   request_path: | ||||
|     id: request_path | ||||
|     pages: /opencase/reporting/cases | ||||
|     negate: false | ||||
|     context_mapping: {  } | ||||
|  | ||||
| @ -1,47 +0,0 @@ | ||||
| langcode: en | ||||
| status: true | ||||
| dependencies: | ||||
|   config: | ||||
|     - search_api.index.opencase_reporting_clients | ||||
|     - views.view.reporting_clients | ||||
|   module: | ||||
|     - search_api | ||||
| id: asylum_status | ||||
| name: 'Asylum status' | ||||
| url_alias: asylum_status | ||||
| weight: 0 | ||||
| min_count: 0 | ||||
| show_only_one_result: false | ||||
| field_identifier: field_asylum_status | ||||
| facet_source_id: 'search_api:views_page__reporting_clients__page_1' | ||||
| widget: | ||||
|   type: checkbox | ||||
|   config: | ||||
|     show_numbers: false | ||||
|     soft_limit: 0 | ||||
|     soft_limit_settings: | ||||
|       show_less_label: 'Show less' | ||||
|       show_more_label: 'Show more' | ||||
| query_operator: or | ||||
| use_hierarchy: false | ||||
| expand_hierarchy: false | ||||
| enable_parent_when_child_gets_disabled: true | ||||
| hard_limit: 0 | ||||
| exclude: false | ||||
| only_visible_when_facet_source_is_visible: true | ||||
| processor_configs: | ||||
|   display_value_widget_order: | ||||
|     processor_id: display_value_widget_order | ||||
|     weights: | ||||
|       sort: 40 | ||||
|     settings: | ||||
|       sort: ASC | ||||
|   url_processor_handler: | ||||
|     processor_id: url_processor_handler | ||||
|     weights: | ||||
|       pre_query: 50 | ||||
|       build: 15 | ||||
|     settings: {  } | ||||
| empty_behavior: | ||||
|   behavior: none | ||||
| show_title: false | ||||
| @ -1,47 +0,0 @@ | ||||
| langcode: en | ||||
| status: true | ||||
| dependencies: | ||||
|   config: | ||||
|     - search_api.index.opencase_reporting_clients | ||||
|     - views.view.reporting_clients | ||||
|   module: | ||||
|     - search_api | ||||
| id: asylum_status_export | ||||
| name: 'Asylum status' | ||||
| url_alias: asylum_status | ||||
| weight: 0 | ||||
| min_count: 0 | ||||
| show_only_one_result: false | ||||
| field_identifier: field_asylum_status | ||||
| facet_source_id: 'search_api:views_data_export__reporting_clients__data_export_1' | ||||
| widget: | ||||
|   type: checkbox | ||||
|   config: | ||||
|     show_numbers: false | ||||
|     soft_limit: 0 | ||||
|     soft_limit_settings: | ||||
|       show_less_label: 'Show less' | ||||
|       show_more_label: 'Show more' | ||||
| query_operator: or | ||||
| use_hierarchy: false | ||||
| expand_hierarchy: false | ||||
| enable_parent_when_child_gets_disabled: true | ||||
| hard_limit: 0 | ||||
| exclude: false | ||||
| only_visible_when_facet_source_is_visible: true | ||||
| processor_configs: | ||||
|   display_value_widget_order: | ||||
|     processor_id: display_value_widget_order | ||||
|     weights: | ||||
|       sort: 40 | ||||
|     settings: | ||||
|       sort: ASC | ||||
|   url_processor_handler: | ||||
|     processor_id: url_processor_handler | ||||
|     weights: | ||||
|       pre_query: 50 | ||||
|       build: 15 | ||||
|     settings: {  } | ||||
| empty_behavior: | ||||
|   behavior: none | ||||
| show_title: false | ||||
| @ -1,67 +0,0 @@ | ||||
| langcode: en | ||||
| status: true | ||||
| dependencies: | ||||
|   config: | ||||
|     - search_api.index.opencase_reporting_clients | ||||
|     - views.view.reporting_clients | ||||
|   module: | ||||
|     - search_api | ||||
| id: created | ||||
| name: Created | ||||
| url_alias: created | ||||
| weight: 0 | ||||
| min_count: 0 | ||||
| show_only_one_result: false | ||||
| field_identifier: created | ||||
| facet_source_id: 'search_api:views_page__reporting_clients__page_1' | ||||
| widget: | ||||
|   type: checkbox | ||||
|   config: | ||||
|     show_numbers: true | ||||
|     soft_limit: 0 | ||||
|     soft_limit_settings: | ||||
|       show_less_label: 'Show less' | ||||
|       show_more_label: 'Show more' | ||||
| query_operator: or | ||||
| use_hierarchy: false | ||||
| expand_hierarchy: false | ||||
| enable_parent_when_child_gets_disabled: true | ||||
| hard_limit: 0 | ||||
| exclude: false | ||||
| only_visible_when_facet_source_is_visible: true | ||||
| processor_configs: | ||||
|   active_widget_order: | ||||
|     processor_id: active_widget_order | ||||
|     weights: | ||||
|       sort: -8 | ||||
|     settings: | ||||
|       sort: DESC | ||||
|   count_widget_order: | ||||
|     processor_id: count_widget_order | ||||
|     weights: | ||||
|       sort: -9 | ||||
|     settings: | ||||
|       sort: DESC | ||||
|   date_item: | ||||
|     processor_id: date_item | ||||
|     weights: | ||||
|       build: 35 | ||||
|     settings: | ||||
|       date_display: actual_date | ||||
|       granularity: 5 | ||||
|       date_format: '' | ||||
|   display_value_widget_order: | ||||
|     processor_id: display_value_widget_order | ||||
|     weights: | ||||
|       sort: -10 | ||||
|     settings: | ||||
|       sort: ASC | ||||
|   url_processor_handler: | ||||
|     processor_id: url_processor_handler | ||||
|     weights: | ||||
|       pre_query: 50 | ||||
|       build: 15 | ||||
|     settings: {  } | ||||
| empty_behavior: | ||||
|   behavior: none | ||||
| show_title: false | ||||
| @ -1,67 +0,0 @@ | ||||
| langcode: en | ||||
| status: true | ||||
| dependencies: | ||||
|   config: | ||||
|     - search_api.index.opencase_reporting_clients | ||||
|   module: | ||||
|     - views_data_export | ||||
| id: created_export | ||||
| name: 'Created - Export' | ||||
| url_alias: created | ||||
| weight: 0 | ||||
| min_count: 0 | ||||
| show_only_one_result: false | ||||
| field_identifier: created | ||||
| facet_source_id: 'search_api:views_data_export__reporting_clients__data_export_1' | ||||
| widget: | ||||
|   type: checkbox | ||||
|   config: | ||||
|     show_numbers: true | ||||
|     soft_limit: 0 | ||||
|     soft_limit_settings: | ||||
|       show_less_label: 'Show less' | ||||
|       show_more_label: 'Show more' | ||||
| query_operator: or | ||||
| use_hierarchy: false | ||||
| expand_hierarchy: false | ||||
| enable_parent_when_child_gets_disabled: true | ||||
| hard_limit: 0 | ||||
| exclude: false | ||||
| only_visible_when_facet_source_is_visible: true | ||||
| processor_configs: | ||||
|   active_widget_order: | ||||
|     processor_id: active_widget_order | ||||
|     weights: | ||||
|       sort: 20 | ||||
|     settings: | ||||
|       sort: DESC | ||||
|   count_widget_order: | ||||
|     processor_id: count_widget_order | ||||
|     weights: | ||||
|       sort: 30 | ||||
|     settings: | ||||
|       sort: DESC | ||||
|   date_item: | ||||
|     processor_id: date_item | ||||
|     weights: | ||||
|       build: 35 | ||||
|     settings: | ||||
|       date_display: actual_date | ||||
|       granularity: 5 | ||||
|       date_format: '' | ||||
|   display_value_widget_order: | ||||
|     processor_id: display_value_widget_order | ||||
|     weights: | ||||
|       sort: 40 | ||||
|     settings: | ||||
|       sort: ASC | ||||
|   url_processor_handler: | ||||
|     processor_id: url_processor_handler | ||||
|     weights: | ||||
|       pre_query: 50 | ||||
|       build: 15 | ||||
|     settings: {  } | ||||
| empty_behavior: | ||||
|   behavior: none | ||||
| show_title: false | ||||
|  | ||||
| @ -1,47 +0,0 @@ | ||||
| langcode: en | ||||
| status: true | ||||
| dependencies: | ||||
|   config: | ||||
|     - search_api.index.opencase_reporting_clients | ||||
|     - views.view.reporting_clients | ||||
|   module: | ||||
|     - search_api | ||||
| id: disability | ||||
| name: 'Disability' | ||||
| url_alias: disability | ||||
| weight: 0 | ||||
| min_count: 0 | ||||
| show_only_one_result: false | ||||
| field_identifier: field_disability | ||||
| facet_source_id: 'search_api:views_page__reporting_clients__page_1' | ||||
| widget: | ||||
|   type: checkbox | ||||
|   config: | ||||
|     show_numbers: false | ||||
|     soft_limit: 0 | ||||
|     soft_limit_settings: | ||||
|       show_less_label: 'Show less' | ||||
|       show_more_label: 'Show more' | ||||
| query_operator: or | ||||
| use_hierarchy: false | ||||
| expand_hierarchy: false | ||||
| enable_parent_when_child_gets_disabled: true | ||||
| hard_limit: 0 | ||||
| exclude: false | ||||
| only_visible_when_facet_source_is_visible: true | ||||
| processor_configs: | ||||
|   display_value_widget_order: | ||||
|     processor_id: display_value_widget_order | ||||
|     weights: | ||||
|       sort: 40 | ||||
|     settings: | ||||
|       sort: ASC | ||||
|   url_processor_handler: | ||||
|     processor_id: url_processor_handler | ||||
|     weights: | ||||
|       pre_query: 50 | ||||
|       build: 15 | ||||
|     settings: {  } | ||||
| empty_behavior: | ||||
|   behavior: none | ||||
| show_title: false | ||||
| @ -1,47 +0,0 @@ | ||||
| langcode: en | ||||
| status: true | ||||
| dependencies: | ||||
|   config: | ||||
|     - search_api.index.opencase_reporting_clients | ||||
|     - views.view.reporting_clients | ||||
|   module: | ||||
|     - search_api | ||||
| id: disability_export | ||||
| name: 'Disability' | ||||
| url_alias: disability | ||||
| weight: 0 | ||||
| min_count: 0 | ||||
| show_only_one_result: false | ||||
| field_identifier: field_disability | ||||
| facet_source_id: 'search_api:views_data_export__reporting_clients__data_export_1' | ||||
| widget: | ||||
|   type: checkbox | ||||
|   config: | ||||
|     show_numbers: false | ||||
|     soft_limit: 0 | ||||
|     soft_limit_settings: | ||||
|       show_less_label: 'Show less' | ||||
|       show_more_label: 'Show more' | ||||
| query_operator: or | ||||
| use_hierarchy: false | ||||
| expand_hierarchy: false | ||||
| enable_parent_when_child_gets_disabled: true | ||||
| hard_limit: 0 | ||||
| exclude: false | ||||
| only_visible_when_facet_source_is_visible: true | ||||
| processor_configs: | ||||
|   display_value_widget_order: | ||||
|     processor_id: display_value_widget_order | ||||
|     weights: | ||||
|       sort: 40 | ||||
|     settings: | ||||
|       sort: ASC | ||||
|   url_processor_handler: | ||||
|     processor_id: url_processor_handler | ||||
|     weights: | ||||
|       pre_query: 50 | ||||
|       build: 15 | ||||
|     settings: {  } | ||||
| empty_behavior: | ||||
|   behavior: none | ||||
| show_title: false | ||||
| @ -1,47 +0,0 @@ | ||||
| langcode: en | ||||
| status: true | ||||
| dependencies: | ||||
|   config: | ||||
|     - search_api.index.opencase_reporting_clients | ||||
|     - views.view.reporting_clients | ||||
|   module: | ||||
|     - search_api | ||||
| id: gender_identified_with | ||||
| name: 'Gender Identity' | ||||
| url_alias: gender_identified_with | ||||
| weight: 0 | ||||
| min_count: 0 | ||||
| show_only_one_result: false | ||||
| field_identifier: field_gender_identified_with | ||||
| facet_source_id: 'search_api:views_page__reporting_clients__page_1' | ||||
| widget: | ||||
|   type: checkbox | ||||
|   config: | ||||
|     show_numbers: false | ||||
|     soft_limit: 0 | ||||
|     soft_limit_settings: | ||||
|       show_less_label: 'Show less' | ||||
|       show_more_label: 'Show more' | ||||
| query_operator: or | ||||
| use_hierarchy: false | ||||
| expand_hierarchy: false | ||||
| enable_parent_when_child_gets_disabled: true | ||||
| hard_limit: 0 | ||||
| exclude: false | ||||
| only_visible_when_facet_source_is_visible: true | ||||
| processor_configs: | ||||
|   display_value_widget_order: | ||||
|     processor_id: display_value_widget_order | ||||
|     weights: | ||||
|       sort: 40 | ||||
|     settings: | ||||
|       sort: ASC | ||||
|   url_processor_handler: | ||||
|     processor_id: url_processor_handler | ||||
|     weights: | ||||
|       pre_query: 50 | ||||
|       build: 15 | ||||
|     settings: {  } | ||||
| empty_behavior: | ||||
|   behavior: none | ||||
| show_title: false | ||||
| @ -1,47 +0,0 @@ | ||||
| langcode: en | ||||
| status: true | ||||
| dependencies: | ||||
|   config: | ||||
|     - search_api.index.opencase_reporting_clients | ||||
|     - views.view.reporting_clients | ||||
|   module: | ||||
|     - search_api | ||||
| id: gender_identified_with_export | ||||
| name: 'Gender Identity' | ||||
| url_alias: gender_identified_with | ||||
| weight: 0 | ||||
| min_count: 0 | ||||
| show_only_one_result: false | ||||
| field_identifier: field_gender_identified_with | ||||
| facet_source_id: 'search_api:views_data_export__reporting_clients__data_export_1' | ||||
| widget: | ||||
|   type: checkbox | ||||
|   config: | ||||
|     show_numbers: false | ||||
|     soft_limit: 0 | ||||
|     soft_limit_settings: | ||||
|       show_less_label: 'Show less' | ||||
|       show_more_label: 'Show more' | ||||
| query_operator: or | ||||
| use_hierarchy: false | ||||
| expand_hierarchy: false | ||||
| enable_parent_when_child_gets_disabled: true | ||||
| hard_limit: 0 | ||||
| exclude: false | ||||
| only_visible_when_facet_source_is_visible: true | ||||
| processor_configs: | ||||
|   display_value_widget_order: | ||||
|     processor_id: display_value_widget_order | ||||
|     weights: | ||||
|       sort: 40 | ||||
|     settings: | ||||
|       sort: ASC | ||||
|   url_processor_handler: | ||||
|     processor_id: url_processor_handler | ||||
|     weights: | ||||
|       pre_query: 50 | ||||
|       build: 15 | ||||
|     settings: {  } | ||||
| empty_behavior: | ||||
|   behavior: none | ||||
| show_title: false | ||||
| @ -1,62 +0,0 @@ | ||||
| langcode: en | ||||
| status: true | ||||
| dependencies: | ||||
|   config: | ||||
|     - search_api.index.opencase_reporting_cases | ||||
|     - views.view.reporting_cases | ||||
|   module: | ||||
|     - search_api | ||||
| id: involved_parties | ||||
| name: 'Involved Parties' | ||||
| url_alias: involved_parties | ||||
| weight: 0 | ||||
| min_count: 0 | ||||
| show_only_one_result: false | ||||
| field_identifier: actors_involved | ||||
| facet_source_id: 'search_api:views_page__reporting_cases__page_1' | ||||
| widget: | ||||
|   type: checkbox | ||||
|   config: | ||||
|     show_numbers: false | ||||
|     soft_limit: 0 | ||||
|     soft_limit_settings: | ||||
|       show_less_label: 'Show less' | ||||
|       show_more_label: 'Show more' | ||||
|     show_reset_link: false | ||||
|     reset_text: 'Show all' | ||||
|     hide_reset_when_no_selection: false | ||||
| query_operator: or | ||||
| use_hierarchy: false | ||||
| expand_hierarchy: false | ||||
| enable_parent_when_child_gets_disabled: true | ||||
| hard_limit: 0 | ||||
| exclude: false | ||||
| only_visible_when_facet_source_is_visible: true | ||||
| processor_configs: | ||||
|   display_value_widget_order: | ||||
|     processor_id: display_value_widget_order | ||||
|     weights: | ||||
|       sort: 40 | ||||
|     settings: | ||||
|       sort: ASC | ||||
|   exclude_specified_items: | ||||
|     processor_id: exclude_specified_items | ||||
|     weights: | ||||
|       build: 50 | ||||
|     settings: | ||||
|       exclude: client | ||||
|       regex: true | ||||
|   translate_entity: | ||||
|     processor_id: translate_entity | ||||
|     weights: | ||||
|       build: 5 | ||||
|     settings: {  } | ||||
|   url_processor_handler: | ||||
|     processor_id: url_processor_handler | ||||
|     weights: | ||||
|       pre_query: 50 | ||||
|       build: 15 | ||||
|     settings: {  } | ||||
| empty_behavior: | ||||
|   behavior: none | ||||
| show_title: false | ||||
| @ -1,55 +0,0 @@ | ||||
| langcode: en | ||||
| status: true | ||||
| dependencies: | ||||
|   config: | ||||
|     - search_api.index.opencase_reporting_cases | ||||
|     - views.view.reporting_cases | ||||
|   module: | ||||
|     - search_api | ||||
| id: involved_parties_export | ||||
| name: 'Involved Parties (Export)' | ||||
| url_alias: involved_parties | ||||
| weight: 0 | ||||
| min_count: 0 | ||||
| show_only_one_result: false | ||||
| field_identifier: actors_involved | ||||
| facet_source_id: 'search_api:views_data_export__reporting_cases__data_export_1' | ||||
| widget: | ||||
|   type: checkbox | ||||
|   config: | ||||
|     show_numbers: false | ||||
|     soft_limit: 0 | ||||
|     soft_limit_settings: | ||||
|       show_less_label: 'Show less' | ||||
|       show_more_label: 'Show more' | ||||
|     show_reset_link: false | ||||
|     reset_text: 'Show all' | ||||
|     hide_reset_when_no_selection: false | ||||
| query_operator: or | ||||
| use_hierarchy: false | ||||
| expand_hierarchy: false | ||||
| enable_parent_when_child_gets_disabled: true | ||||
| hard_limit: 0 | ||||
| exclude: false | ||||
| only_visible_when_facet_source_is_visible: true | ||||
| processor_configs: | ||||
|   display_value_widget_order: | ||||
|     processor_id: display_value_widget_order | ||||
|     weights: | ||||
|       sort: 40 | ||||
|     settings: | ||||
|       sort: ASC | ||||
|   translate_entity: | ||||
|     processor_id: translate_entity | ||||
|     weights: | ||||
|       build: 5 | ||||
|     settings: {  } | ||||
|   url_processor_handler: | ||||
|     processor_id: url_processor_handler | ||||
|     weights: | ||||
|       pre_query: 50 | ||||
|       build: 15 | ||||
|     settings: {  } | ||||
| empty_behavior: | ||||
|   behavior: none | ||||
| show_title: false | ||||
| @ -1,47 +0,0 @@ | ||||
| langcode: en | ||||
| status: true | ||||
| dependencies: | ||||
|   config: | ||||
|     - search_api.index.opencase_reporting_clients | ||||
|     - views.view.reporting_clients | ||||
|   module: | ||||
|     - search_api | ||||
| id: languages | ||||
| name: 'Languages' | ||||
| url_alias: languages | ||||
| weight: 0 | ||||
| min_count: 0 | ||||
| show_only_one_result: false | ||||
| field_identifier: field_languages_spoken | ||||
| facet_source_id: 'search_api:views_page__reporting_clients__page_1' | ||||
| widget: | ||||
|   type: checkbox | ||||
|   config: | ||||
|     show_numbers: false | ||||
|     soft_limit: 0 | ||||
|     soft_limit_settings: | ||||
|       show_less_label: 'Show less' | ||||
|       show_more_label: 'Show more' | ||||
| query_operator: or | ||||
| use_hierarchy: false | ||||
| expand_hierarchy: false | ||||
| enable_parent_when_child_gets_disabled: true | ||||
| hard_limit: 0 | ||||
| exclude: false | ||||
| only_visible_when_facet_source_is_visible: true | ||||
| processor_configs: | ||||
|   display_value_widget_order: | ||||
|     processor_id: display_value_widget_order | ||||
|     weights: | ||||
|       sort: 40 | ||||
|     settings: | ||||
|       sort: ASC | ||||
|   url_processor_handler: | ||||
|     processor_id: url_processor_handler | ||||
|     weights: | ||||
|       pre_query: 50 | ||||
|       build: 15 | ||||
|     settings: {  } | ||||
| empty_behavior: | ||||
|   behavior: none | ||||
| show_title: false | ||||
| @ -1,47 +0,0 @@ | ||||
| langcode: en | ||||
| status: true | ||||
| dependencies: | ||||
|   config: | ||||
|     - search_api.index.opencase_reporting_clients | ||||
|     - views.view.reporting_clients | ||||
|   module: | ||||
|     - search_api | ||||
| id: languages_export | ||||
| name: 'Languages' | ||||
| url_alias: languages | ||||
| weight: 0 | ||||
| min_count: 0 | ||||
| show_only_one_result: false | ||||
| field_identifier: field_languages_spoken | ||||
| facet_source_id: 'search_api:views_data_export__reporting_clients__data_export_1' | ||||
| widget: | ||||
|   type: checkbox | ||||
|   config: | ||||
|     show_numbers: false | ||||
|     soft_limit: 0 | ||||
|     soft_limit_settings: | ||||
|       show_less_label: 'Show less' | ||||
|       show_more_label: 'Show more' | ||||
| query_operator: or | ||||
| use_hierarchy: false | ||||
| expand_hierarchy: false | ||||
| enable_parent_when_child_gets_disabled: true | ||||
| hard_limit: 0 | ||||
| exclude: false | ||||
| only_visible_when_facet_source_is_visible: true | ||||
| processor_configs: | ||||
|   display_value_widget_order: | ||||
|     processor_id: display_value_widget_order | ||||
|     weights: | ||||
|       sort: 40 | ||||
|     settings: | ||||
|       sort: ASC | ||||
|   url_processor_handler: | ||||
|     processor_id: url_processor_handler | ||||
|     weights: | ||||
|       pre_query: 50 | ||||
|       build: 15 | ||||
|     settings: {  } | ||||
| empty_behavior: | ||||
|   behavior: none | ||||
| show_title: false | ||||
| @ -1,47 +0,0 @@ | ||||
| langcode: en | ||||
| status: true | ||||
| dependencies: | ||||
|   config: | ||||
|     - search_api.index.opencase_reporting_clients | ||||
|     - views.view.reporting_clients | ||||
|   module: | ||||
|     - search_api | ||||
| id: nationalities | ||||
| name: Nationalities | ||||
| url_alias: nationalities | ||||
| weight: 0 | ||||
| min_count: 0 | ||||
| show_only_one_result: false | ||||
| field_identifier: field_nationalities | ||||
| facet_source_id: 'search_api:views_page__reporting_clients__page_1' | ||||
| widget: | ||||
|   type: checkbox | ||||
|   config: | ||||
|     show_numbers: false | ||||
|     soft_limit: 0 | ||||
|     soft_limit_settings: | ||||
|       show_less_label: 'Show less' | ||||
|       show_more_label: 'Show more' | ||||
| query_operator: or | ||||
| use_hierarchy: false | ||||
| expand_hierarchy: false | ||||
| enable_parent_when_child_gets_disabled: true | ||||
| hard_limit: 0 | ||||
| exclude: false | ||||
| only_visible_when_facet_source_is_visible: true | ||||
| processor_configs: | ||||
|   display_value_widget_order: | ||||
|     processor_id: display_value_widget_order | ||||
|     weights: | ||||
|       sort: 40 | ||||
|     settings: | ||||
|       sort: ASC | ||||
|   url_processor_handler: | ||||
|     processor_id: url_processor_handler | ||||
|     weights: | ||||
|       pre_query: 50 | ||||
|       build: 15 | ||||
|     settings: {  } | ||||
| empty_behavior: | ||||
|   behavior: none | ||||
| show_title: false | ||||
| @ -1,58 +0,0 @@ | ||||
| langcode: en | ||||
| status: true | ||||
| dependencies: | ||||
|   config: | ||||
|     - search_api.index.opencase_reporting_clients | ||||
|   module: | ||||
|     - views_data_export | ||||
| id: nationalities_export | ||||
| name: Nationalities-export | ||||
| url_alias: nationalities_export | ||||
| weight: 0 | ||||
| min_count: 0 | ||||
| show_only_one_result: false | ||||
| field_identifier: field_nationalities | ||||
| facet_source_id: 'search_api:views_data_export__reporting_clients__data_export_1' | ||||
| widget: | ||||
|   type: links | ||||
|   config: | ||||
|     show_numbers: false | ||||
|     soft_limit: 0 | ||||
|     soft_limit_settings: | ||||
|       show_less_label: 'Show less' | ||||
|       show_more_label: 'Show more' | ||||
| query_operator: or | ||||
| use_hierarchy: false | ||||
| expand_hierarchy: false | ||||
| enable_parent_when_child_gets_disabled: true | ||||
| hard_limit: 0 | ||||
| exclude: false | ||||
| only_visible_when_facet_source_is_visible: true | ||||
| processor_configs: | ||||
|   active_widget_order: | ||||
|     processor_id: active_widget_order | ||||
|     weights: | ||||
|       sort: 20 | ||||
|     settings: | ||||
|       sort: DESC | ||||
|   count_widget_order: | ||||
|     processor_id: count_widget_order | ||||
|     weights: | ||||
|       sort: 30 | ||||
|     settings: | ||||
|       sort: DESC | ||||
|   display_value_widget_order: | ||||
|     processor_id: display_value_widget_order | ||||
|     weights: | ||||
|       sort: 40 | ||||
|     settings: | ||||
|       sort: ASC | ||||
|   url_processor_handler: | ||||
|     processor_id: url_processor_handler | ||||
|     weights: | ||||
|       pre_query: 50 | ||||
|       build: 15 | ||||
|     settings: {  } | ||||
| empty_behavior: | ||||
|   behavior: none | ||||
| show_title: false | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user
	