From e7017e1d80f2567cb517a6ea0d82f937c57013b1 Mon Sep 17 00:00:00 2001 From: Paul Pound Date: Fri, 27 Feb 2026 11:27:40 -0400 Subject: [PATCH] added tracking content type; --- ...play.node.ill_request_tracking.default.yml | 115 +++ ...play.node.ill_request_tracking.default.yml | 92 ++ ...uest_tracking.field_ill_date_processed.yml | 21 + ...quest_tracking.field_ill_date_returned.yml | 21 + ...ll_request_tracking.field_ill_due_date.yml | 21 + ...st_tracking.field_ill_last_modified_by.yml | 30 + ...t_tracking.field_ill_request_reference.yml | 31 + ...request_tracking.field_ill_staff_notes.yml | 21 + ...est_tracking.field_ill_tracking_number.yml | 21 + ...est_tracking.field_ill_tracking_status.yml | 22 + ....storage.node.field_ill_date_processed.yml | 22 + ...d.storage.node.field_ill_date_returned.yml | 22 + .../field.storage.node.field_ill_due_date.yml | 22 + ...torage.node.field_ill_last_modified_by.yml | 22 + ...orage.node.field_ill_request_reference.yml | 21 + ...eld.storage.node.field_ill_staff_notes.yml | 21 + ...storage.node.field_ill_tracking_number.yml | 23 + ...storage.node.field_ill_tracking_status.yml | 30 + .../node.type.ill_request_tracking.yml | 13 + .../views.view.ill_request_tracking.yml | 794 ++++++++++++++++++ ill_corporate_forms.info.yml | 1 + ill_corporate_forms.install | 2 +- ill_corporate_forms.module | 55 +- 23 files changed, 1440 insertions(+), 3 deletions(-) create mode 100644 config/install/core.entity_form_display.node.ill_request_tracking.default.yml create mode 100644 config/install/core.entity_view_display.node.ill_request_tracking.default.yml create mode 100644 config/install/field.field.node.ill_request_tracking.field_ill_date_processed.yml create mode 100644 config/install/field.field.node.ill_request_tracking.field_ill_date_returned.yml create mode 100644 config/install/field.field.node.ill_request_tracking.field_ill_due_date.yml create mode 100644 config/install/field.field.node.ill_request_tracking.field_ill_last_modified_by.yml create mode 100644 config/install/field.field.node.ill_request_tracking.field_ill_request_reference.yml create mode 100644 config/install/field.field.node.ill_request_tracking.field_ill_staff_notes.yml create mode 100644 config/install/field.field.node.ill_request_tracking.field_ill_tracking_number.yml create mode 100644 config/install/field.field.node.ill_request_tracking.field_ill_tracking_status.yml create mode 100644 config/install/field.storage.node.field_ill_date_processed.yml create mode 100644 config/install/field.storage.node.field_ill_date_returned.yml create mode 100644 config/install/field.storage.node.field_ill_due_date.yml create mode 100644 config/install/field.storage.node.field_ill_last_modified_by.yml create mode 100644 config/install/field.storage.node.field_ill_request_reference.yml create mode 100644 config/install/field.storage.node.field_ill_staff_notes.yml create mode 100644 config/install/field.storage.node.field_ill_tracking_number.yml create mode 100644 config/install/field.storage.node.field_ill_tracking_status.yml create mode 100644 config/install/node.type.ill_request_tracking.yml create mode 100644 config/install/views.view.ill_request_tracking.yml diff --git a/config/install/core.entity_form_display.node.ill_request_tracking.default.yml b/config/install/core.entity_form_display.node.ill_request_tracking.default.yml new file mode 100644 index 0000000..3f4d378 --- /dev/null +++ b/config/install/core.entity_form_display.node.ill_request_tracking.default.yml @@ -0,0 +1,115 @@ +langcode: en +status: true +dependencies: + config: + - field.field.node.ill_request_tracking.field_ill_date_processed + - field.field.node.ill_request_tracking.field_ill_date_returned + - field.field.node.ill_request_tracking.field_ill_due_date + - field.field.node.ill_request_tracking.field_ill_last_modified_by + - field.field.node.ill_request_tracking.field_ill_request_reference + - field.field.node.ill_request_tracking.field_ill_staff_notes + - field.field.node.ill_request_tracking.field_ill_tracking_number + - field.field.node.ill_request_tracking.field_ill_tracking_status + - node.type.ill_request_tracking + module: + - datetime + - options + - text + enforced: + module: + - ill_corporate_forms +id: node.ill_request_tracking.default +targetEntityType: node +bundle: ill_request_tracking +mode: default +content: + field_ill_request_reference: + type: entity_reference_autocomplete + weight: 1 + region: content + settings: + match_operator: CONTAINS + match_limit: 10 + size: 60 + placeholder: '' + third_party_settings: {} + field_ill_tracking_status: + type: options_select + weight: 2 + region: content + settings: {} + third_party_settings: {} + field_ill_date_processed: + type: datetime_default + weight: 3 + region: content + settings: {} + third_party_settings: {} + field_ill_due_date: + type: datetime_default + weight: 4 + region: content + settings: {} + third_party_settings: {} + field_ill_date_returned: + type: datetime_default + weight: 5 + region: content + settings: {} + third_party_settings: {} + field_ill_tracking_number: + type: string_textfield + weight: 6 + region: content + settings: + size: 60 + placeholder: '' + third_party_settings: {} + field_ill_staff_notes: + type: text_textarea + weight: 7 + region: content + settings: + rows: 5 + placeholder: '' + third_party_settings: {} + created: + type: datetime_timestamp + weight: 10 + region: content + settings: {} + third_party_settings: {} + uid: + type: entity_reference_autocomplete + weight: 11 + region: content + settings: + match_operator: CONTAINS + match_limit: 10 + size: 60 + placeholder: '' + third_party_settings: {} + promote: + type: boolean_checkbox + settings: + display_label: true + weight: 12 + region: content + third_party_settings: {} + sticky: + type: boolean_checkbox + settings: + display_label: true + weight: 13 + region: content + third_party_settings: {} + status: + type: boolean_checkbox + settings: + display_label: true + weight: 14 + region: content + third_party_settings: {} +hidden: + field_ill_last_modified_by: true + title: true diff --git a/config/install/core.entity_view_display.node.ill_request_tracking.default.yml b/config/install/core.entity_view_display.node.ill_request_tracking.default.yml new file mode 100644 index 0000000..a80fece --- /dev/null +++ b/config/install/core.entity_view_display.node.ill_request_tracking.default.yml @@ -0,0 +1,92 @@ +langcode: en +status: true +dependencies: + config: + - field.field.node.ill_request_tracking.field_ill_date_processed + - field.field.node.ill_request_tracking.field_ill_date_returned + - field.field.node.ill_request_tracking.field_ill_due_date + - field.field.node.ill_request_tracking.field_ill_last_modified_by + - field.field.node.ill_request_tracking.field_ill_request_reference + - field.field.node.ill_request_tracking.field_ill_staff_notes + - field.field.node.ill_request_tracking.field_ill_tracking_number + - field.field.node.ill_request_tracking.field_ill_tracking_status + - node.type.ill_request_tracking + module: + - datetime + - options + - text + - user + enforced: + module: + - ill_corporate_forms +id: node.ill_request_tracking.default +targetEntityType: node +bundle: ill_request_tracking +mode: default +content: + field_ill_request_reference: + type: entity_reference_label + weight: 1 + region: content + label: above + settings: + link: true + third_party_settings: {} + field_ill_tracking_status: + type: list_default + weight: 2 + region: content + label: above + settings: {} + third_party_settings: {} + field_ill_date_processed: + type: datetime_default + weight: 3 + region: content + label: above + settings: + timezone_override: '' + format_type: medium + third_party_settings: {} + field_ill_due_date: + type: datetime_default + weight: 4 + region: content + label: above + settings: + timezone_override: '' + format_type: medium + third_party_settings: {} + field_ill_date_returned: + type: datetime_default + weight: 5 + region: content + label: above + settings: + timezone_override: '' + format_type: medium + third_party_settings: {} + field_ill_tracking_number: + type: string + weight: 6 + region: content + label: above + settings: {} + third_party_settings: {} + field_ill_staff_notes: + type: text_default + weight: 7 + region: content + label: above + settings: {} + third_party_settings: {} + field_ill_last_modified_by: + type: entity_reference_label + weight: 8 + region: content + label: above + settings: + link: true + third_party_settings: {} +hidden: + links: true diff --git a/config/install/field.field.node.ill_request_tracking.field_ill_date_processed.yml b/config/install/field.field.node.ill_request_tracking.field_ill_date_processed.yml new file mode 100644 index 0000000..0aa7df6 --- /dev/null +++ b/config/install/field.field.node.ill_request_tracking.field_ill_date_processed.yml @@ -0,0 +1,21 @@ +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_ill_date_processed + - node.type.ill_request_tracking + enforced: + module: + - ill_corporate_forms +id: node.ill_request_tracking.field_ill_date_processed +field_name: field_ill_date_processed +entity_type: node +bundle: ill_request_tracking +label: 'Date Processed' +description: '' +required: false +translatable: false +default_value: {} +default_value_callback: '' +settings: {} +field_type: datetime diff --git a/config/install/field.field.node.ill_request_tracking.field_ill_date_returned.yml b/config/install/field.field.node.ill_request_tracking.field_ill_date_returned.yml new file mode 100644 index 0000000..2790bb9 --- /dev/null +++ b/config/install/field.field.node.ill_request_tracking.field_ill_date_returned.yml @@ -0,0 +1,21 @@ +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_ill_date_returned + - node.type.ill_request_tracking + enforced: + module: + - ill_corporate_forms +id: node.ill_request_tracking.field_ill_date_returned +field_name: field_ill_date_returned +entity_type: node +bundle: ill_request_tracking +label: 'Date Returned' +description: '' +required: false +translatable: false +default_value: {} +default_value_callback: '' +settings: {} +field_type: datetime diff --git a/config/install/field.field.node.ill_request_tracking.field_ill_due_date.yml b/config/install/field.field.node.ill_request_tracking.field_ill_due_date.yml new file mode 100644 index 0000000..89dd954 --- /dev/null +++ b/config/install/field.field.node.ill_request_tracking.field_ill_due_date.yml @@ -0,0 +1,21 @@ +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_ill_due_date + - node.type.ill_request_tracking + enforced: + module: + - ill_corporate_forms +id: node.ill_request_tracking.field_ill_due_date +field_name: field_ill_due_date +entity_type: node +bundle: ill_request_tracking +label: 'Due Date' +description: '' +required: false +translatable: false +default_value: {} +default_value_callback: '' +settings: {} +field_type: datetime diff --git a/config/install/field.field.node.ill_request_tracking.field_ill_last_modified_by.yml b/config/install/field.field.node.ill_request_tracking.field_ill_last_modified_by.yml new file mode 100644 index 0000000..9414726 --- /dev/null +++ b/config/install/field.field.node.ill_request_tracking.field_ill_last_modified_by.yml @@ -0,0 +1,30 @@ +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_ill_last_modified_by + - node.type.ill_request_tracking + enforced: + module: + - ill_corporate_forms +id: node.ill_request_tracking.field_ill_last_modified_by +field_name: field_ill_last_modified_by +entity_type: node +bundle: ill_request_tracking +label: 'Last Modified By' +description: 'Automatically set to the current user on save.' +required: false +translatable: false +default_value: {} +default_value_callback: '' +settings: + handler: 'default:user' + handler_settings: + include_anonymous: false + filter: + type: _none + target_bundles: null + sort: + field: _none + auto_create: false +field_type: entity_reference diff --git a/config/install/field.field.node.ill_request_tracking.field_ill_request_reference.yml b/config/install/field.field.node.ill_request_tracking.field_ill_request_reference.yml new file mode 100644 index 0000000..976ba9b --- /dev/null +++ b/config/install/field.field.node.ill_request_tracking.field_ill_request_reference.yml @@ -0,0 +1,31 @@ +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_ill_request_reference + - node.type.ill_institution_request + - node.type.ill_request_tracking + enforced: + module: + - ill_corporate_forms +id: node.ill_request_tracking.field_ill_request_reference +field_name: field_ill_request_reference +entity_type: node +bundle: ill_request_tracking +label: 'ILL Request' +description: 'Select the ILL request this tracking record is for.' +required: true +translatable: false +default_value: {} +default_value_callback: '' +settings: + handler: 'default:node' + handler_settings: + target_bundles: + ill_institution_request: ill_institution_request + sort: + field: title + direction: ASC + auto_create: false + auto_create_bundle: '' +field_type: entity_reference diff --git a/config/install/field.field.node.ill_request_tracking.field_ill_staff_notes.yml b/config/install/field.field.node.ill_request_tracking.field_ill_staff_notes.yml new file mode 100644 index 0000000..2c400d3 --- /dev/null +++ b/config/install/field.field.node.ill_request_tracking.field_ill_staff_notes.yml @@ -0,0 +1,21 @@ +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_ill_staff_notes + - node.type.ill_request_tracking + enforced: + module: + - ill_corporate_forms +id: node.ill_request_tracking.field_ill_staff_notes +field_name: field_ill_staff_notes +entity_type: node +bundle: ill_request_tracking +label: 'Staff Notes' +description: '' +required: false +translatable: false +default_value: {} +default_value_callback: '' +settings: {} +field_type: text_long diff --git a/config/install/field.field.node.ill_request_tracking.field_ill_tracking_number.yml b/config/install/field.field.node.ill_request_tracking.field_ill_tracking_number.yml new file mode 100644 index 0000000..66c0ecc --- /dev/null +++ b/config/install/field.field.node.ill_request_tracking.field_ill_tracking_number.yml @@ -0,0 +1,21 @@ +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_ill_tracking_number + - node.type.ill_request_tracking + enforced: + module: + - ill_corporate_forms +id: node.ill_request_tracking.field_ill_tracking_number +field_name: field_ill_tracking_number +entity_type: node +bundle: ill_request_tracking +label: 'Tracking/Reference Number' +description: '' +required: false +translatable: false +default_value: {} +default_value_callback: '' +settings: {} +field_type: string diff --git a/config/install/field.field.node.ill_request_tracking.field_ill_tracking_status.yml b/config/install/field.field.node.ill_request_tracking.field_ill_tracking_status.yml new file mode 100644 index 0000000..86895d5 --- /dev/null +++ b/config/install/field.field.node.ill_request_tracking.field_ill_tracking_status.yml @@ -0,0 +1,22 @@ +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_ill_tracking_status + - node.type.ill_request_tracking + enforced: + module: + - ill_corporate_forms +id: node.ill_request_tracking.field_ill_tracking_status +field_name: field_ill_tracking_status +entity_type: node +bundle: ill_request_tracking +label: Status +description: '' +required: true +translatable: false +default_value: + - value: received +default_value_callback: '' +settings: {} +field_type: list_string diff --git a/config/install/field.storage.node.field_ill_date_processed.yml b/config/install/field.storage.node.field_ill_date_processed.yml new file mode 100644 index 0000000..052cd2c --- /dev/null +++ b/config/install/field.storage.node.field_ill_date_processed.yml @@ -0,0 +1,22 @@ +langcode: en +status: true +dependencies: + module: + - datetime + - node + enforced: + module: + - ill_corporate_forms +id: node.field_ill_date_processed +field_name: field_ill_date_processed +entity_type: node +type: datetime +settings: + datetime_type: date +module: datetime +locked: false +cardinality: 1 +translatable: true +indexes: {} +persist_with_no_fields: false +custom_storage: false diff --git a/config/install/field.storage.node.field_ill_date_returned.yml b/config/install/field.storage.node.field_ill_date_returned.yml new file mode 100644 index 0000000..75160c7 --- /dev/null +++ b/config/install/field.storage.node.field_ill_date_returned.yml @@ -0,0 +1,22 @@ +langcode: en +status: true +dependencies: + module: + - datetime + - node + enforced: + module: + - ill_corporate_forms +id: node.field_ill_date_returned +field_name: field_ill_date_returned +entity_type: node +type: datetime +settings: + datetime_type: date +module: datetime +locked: false +cardinality: 1 +translatable: true +indexes: {} +persist_with_no_fields: false +custom_storage: false diff --git a/config/install/field.storage.node.field_ill_due_date.yml b/config/install/field.storage.node.field_ill_due_date.yml new file mode 100644 index 0000000..e37c0ef --- /dev/null +++ b/config/install/field.storage.node.field_ill_due_date.yml @@ -0,0 +1,22 @@ +langcode: en +status: true +dependencies: + module: + - datetime + - node + enforced: + module: + - ill_corporate_forms +id: node.field_ill_due_date +field_name: field_ill_due_date +entity_type: node +type: datetime +settings: + datetime_type: date +module: datetime +locked: false +cardinality: 1 +translatable: true +indexes: {} +persist_with_no_fields: false +custom_storage: false diff --git a/config/install/field.storage.node.field_ill_last_modified_by.yml b/config/install/field.storage.node.field_ill_last_modified_by.yml new file mode 100644 index 0000000..0b4e6e2 --- /dev/null +++ b/config/install/field.storage.node.field_ill_last_modified_by.yml @@ -0,0 +1,22 @@ +langcode: en +status: true +dependencies: + module: + - node + - user + enforced: + module: + - ill_corporate_forms +id: node.field_ill_last_modified_by +field_name: field_ill_last_modified_by +entity_type: node +type: entity_reference +settings: + target_type: user +module: core +locked: false +cardinality: 1 +translatable: true +indexes: {} +persist_with_no_fields: false +custom_storage: false diff --git a/config/install/field.storage.node.field_ill_request_reference.yml b/config/install/field.storage.node.field_ill_request_reference.yml new file mode 100644 index 0000000..e9bcba2 --- /dev/null +++ b/config/install/field.storage.node.field_ill_request_reference.yml @@ -0,0 +1,21 @@ +langcode: en +status: true +dependencies: + module: + - node + enforced: + module: + - ill_corporate_forms +id: node.field_ill_request_reference +field_name: field_ill_request_reference +entity_type: node +type: entity_reference +settings: + target_type: node +module: core +locked: false +cardinality: 1 +translatable: true +indexes: {} +persist_with_no_fields: false +custom_storage: false diff --git a/config/install/field.storage.node.field_ill_staff_notes.yml b/config/install/field.storage.node.field_ill_staff_notes.yml new file mode 100644 index 0000000..03b58d4 --- /dev/null +++ b/config/install/field.storage.node.field_ill_staff_notes.yml @@ -0,0 +1,21 @@ +langcode: en +status: true +dependencies: + module: + - node + - text + enforced: + module: + - ill_corporate_forms +id: node.field_ill_staff_notes +field_name: field_ill_staff_notes +entity_type: node +type: text_long +settings: {} +module: text +locked: false +cardinality: 1 +translatable: true +indexes: {} +persist_with_no_fields: false +custom_storage: false diff --git a/config/install/field.storage.node.field_ill_tracking_number.yml b/config/install/field.storage.node.field_ill_tracking_number.yml new file mode 100644 index 0000000..b06714d --- /dev/null +++ b/config/install/field.storage.node.field_ill_tracking_number.yml @@ -0,0 +1,23 @@ +langcode: en +status: true +dependencies: + module: + - node + enforced: + module: + - ill_corporate_forms +id: node.field_ill_tracking_number +field_name: field_ill_tracking_number +entity_type: node +type: string +settings: + max_length: 255 + is_ascii: false + case_sensitive: false +module: core +locked: false +cardinality: 1 +translatable: true +indexes: {} +persist_with_no_fields: false +custom_storage: false diff --git a/config/install/field.storage.node.field_ill_tracking_status.yml b/config/install/field.storage.node.field_ill_tracking_status.yml new file mode 100644 index 0000000..12b2ce0 --- /dev/null +++ b/config/install/field.storage.node.field_ill_tracking_status.yml @@ -0,0 +1,30 @@ +langcode: en +status: true +dependencies: + module: + - node + - options + enforced: + module: + - ill_corporate_forms +id: node.field_ill_tracking_status +field_name: field_ill_tracking_status +entity_type: node +type: list_string +settings: + allowed_values: + - value: received + label: Received + - value: in_progress + label: 'In Progress' + - value: sent + label: Sent + - value: completed + label: Completed +module: options +locked: false +cardinality: 1 +translatable: true +indexes: {} +persist_with_no_fields: false +custom_storage: false diff --git a/config/install/node.type.ill_request_tracking.yml b/config/install/node.type.ill_request_tracking.yml new file mode 100644 index 0000000..40cb1fd --- /dev/null +++ b/config/install/node.type.ill_request_tracking.yml @@ -0,0 +1,13 @@ +langcode: en +status: true +dependencies: + enforced: + module: + - ill_corporate_forms +name: ILL Request Tracking +type: ill_request_tracking +description: 'Tracks the fulfillment state of an interlibrary loan request.' +help: '' +new_revision: true +preview_mode: 1 +display_submitted: true diff --git a/config/install/views.view.ill_request_tracking.yml b/config/install/views.view.ill_request_tracking.yml new file mode 100644 index 0000000..a07e63a --- /dev/null +++ b/config/install/views.view.ill_request_tracking.yml @@ -0,0 +1,794 @@ +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_ill_date_processed + - field.storage.node.field_ill_date_returned + - field.storage.node.field_ill_due_date + - field.storage.node.field_ill_last_modified_by + - field.storage.node.field_ill_request_reference + - field.storage.node.field_ill_tracking_number + - field.storage.node.field_ill_tracking_status + - node.type.ill_request_tracking + module: + - datetime + - node + - options + - user + enforced: + module: + - ill_corporate_forms +id: ill_request_tracking +label: 'ILL Request Tracking' +module: views +description: 'Tracks the fulfillment state of ILL requests.' +tag: '' +base_table: node_field_data +base_field: nid +display: + default: + id: default + display_title: Default + display_plugin: default + position: 0 + display_options: + title: 'ILL Request Tracking' + fields: + field_ill_request_reference: + id: field_ill_request_reference + table: node__field_ill_request_reference + field: field_ill_request_reference + relationship: none + group_type: group + admin_label: '' + plugin_id: field + label: 'ILL Request' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: target_id + type: entity_reference_label + settings: + link: true + group_column: target_id + group_columns: {} + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + field_ill_tracking_status: + id: field_ill_tracking_status + table: node__field_ill_tracking_status + field: field_ill_tracking_status + relationship: none + group_type: group + admin_label: '' + plugin_id: field + label: Status + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: list_default + settings: {} + group_column: value + group_columns: {} + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + field_ill_date_processed: + id: field_ill_date_processed + table: node__field_ill_date_processed + field: field_ill_date_processed + relationship: none + group_type: group + admin_label: '' + plugin_id: field + label: 'Date Processed' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: datetime_default + settings: + timezone_override: '' + format_type: medium + group_column: value + group_columns: {} + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + field_ill_due_date: + id: field_ill_due_date + table: node__field_ill_due_date + field: field_ill_due_date + relationship: none + group_type: group + admin_label: '' + plugin_id: field + label: 'Due Date' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: datetime_default + settings: + timezone_override: '' + format_type: medium + group_column: value + group_columns: {} + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + field_ill_date_returned: + id: field_ill_date_returned + table: node__field_ill_date_returned + field: field_ill_date_returned + relationship: none + group_type: group + admin_label: '' + plugin_id: field + label: 'Date Returned' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: datetime_default + settings: + timezone_override: '' + format_type: medium + group_column: value + group_columns: {} + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + field_ill_tracking_number: + id: field_ill_tracking_number + table: node__field_ill_tracking_number + field: field_ill_tracking_number + relationship: none + group_type: group + admin_label: '' + plugin_id: field + label: 'Tracking Number' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: string + settings: + link_to_entity: false + group_column: value + group_columns: {} + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + field_ill_last_modified_by: + id: field_ill_last_modified_by + table: node__field_ill_last_modified_by + field: field_ill_last_modified_by + relationship: none + group_type: group + admin_label: '' + plugin_id: field + label: 'Last Modified By' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: target_id + type: entity_reference_label + settings: + link: true + group_column: target_id + group_columns: {} + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + view_node: + id: view_node + table: node + field: view_node + relationship: none + group_type: group + admin_label: '' + entity_type: node + plugin_id: node_link + label: Operations + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + text: View + pager: + type: full + options: + offset: 0 + items_per_page: 25 + total_pages: null + id: 0 + tags: + next: 'Next ›' + previous: '‹ Previous' + first: '« First' + last: 'Last »' + expose: + items_per_page: false + items_per_page_label: 'Items per page' + items_per_page_options: '5, 10, 25, 50' + items_per_page_options_all: false + items_per_page_options_all_label: '- All -' + offset: false + offset_label: Offset + quantity: 9 + exposed_form: + type: basic + options: + submit_button: Filter + reset_button: true + reset_button_label: Reset + exposed_sorts_label: 'Sort by' + expose_sort_order: true + sort_asc_label: Asc + sort_desc_label: Desc + access: + type: perm + options: + perm: 'access content' + cache: + type: tag + options: {} + empty: {} + sorts: + created: + id: created + table: node_field_data + field: created + relationship: none + group_type: group + admin_label: '' + entity_type: node + entity_field: created + plugin_id: date + order: DESC + expose: + label: '' + field_identifier: '' + exposed: false + arguments: {} + filters: + type: + id: type + table: node_field_data + field: type + relationship: none + group_type: group + admin_label: '' + entity_type: node + entity_field: type + plugin_id: bundle + value: + ill_request_tracking: ill_request_tracking + operator: in + group: 1 + exposed: false + expose: + operator_id: '' + label: '' + description: '' + use_operator: false + operator: '' + operator_limit_selection: false + operator_list: {} + identifier: '' + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + reduce: false + is_grouped: false + group_info: + label: '' + description: '' + identifier: '' + optional: true + widget: select + multiple: false + remember: false + default_group: All + default_group_multiple: {} + group_items: {} + field_ill_tracking_status_value: + id: field_ill_tracking_status_value + table: node__field_ill_tracking_status + field: field_ill_tracking_status_value + relationship: none + group_type: group + admin_label: '' + plugin_id: list_field + operator: or + value: {} + group: 1 + exposed: true + expose: + operator_id: field_ill_tracking_status_value_op + label: Status + description: '' + use_operator: false + operator: field_ill_tracking_status_value_op + operator_limit_selection: false + operator_list: {} + identifier: field_ill_tracking_status_value + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + reduce: false + is_grouped: false + group_info: + label: '' + description: '' + identifier: '' + optional: true + widget: select + multiple: false + remember: false + default_group: All + default_group_multiple: {} + group_items: {} + filter_groups: + operator: AND + groups: + 1: AND + style: + type: table + options: + grouping: {} + row_class: '' + default_row_class: true + columns: + field_ill_request_reference: field_ill_request_reference + field_ill_tracking_status: field_ill_tracking_status + field_ill_date_processed: field_ill_date_processed + field_ill_due_date: field_ill_due_date + field_ill_date_returned: field_ill_date_returned + field_ill_tracking_number: field_ill_tracking_number + field_ill_last_modified_by: field_ill_last_modified_by + view_node: view_node + default: '-1' + info: + field_ill_request_reference: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + field_ill_tracking_status: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + field_ill_date_processed: + sortable: true + default_sort_order: desc + align: '' + separator: '' + empty_column: false + responsive: '' + field_ill_due_date: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + field_ill_date_returned: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + field_ill_tracking_number: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + field_ill_last_modified_by: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + view_node: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + override: true + sticky: false + summary: '' + empty_table: true + caption: '' + description: '' + row: + type: fields + options: {} + query: + type: views_query + options: + query_comment: '' + disable_sql_rewrite: false + distinct: false + replica: false + query_tags: {} + relationships: {} + header: {} + footer: {} + display_extenders: {} + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - url + - url.query_args + - 'user.node_grants:view' + - user.permissions + tags: {} + page_1: + id: page_1 + display_title: Page + display_plugin: page + position: 1 + display_options: + display_extenders: {} + path: ill/tracking + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - url + - url.query_args + - 'user.node_grants:view' + - user.permissions + tags: {} diff --git a/ill_corporate_forms.info.yml b/ill_corporate_forms.info.yml index af5e2d6..34ad021 100644 --- a/ill_corporate_forms.info.yml +++ b/ill_corporate_forms.info.yml @@ -9,3 +9,4 @@ dependencies: - drupal:text - drupal:options - drupal:views + - drupal:datetime diff --git a/ill_corporate_forms.install b/ill_corporate_forms.install index f7fb17d..8033094 100644 --- a/ill_corporate_forms.install +++ b/ill_corporate_forms.install @@ -16,7 +16,7 @@ function ill_corporate_forms_uninstall(): void { $entity_type_manager = \Drupal::entityTypeManager(); $node_storage = $entity_type_manager->getStorage('node'); - foreach (['ill_institution_request', 'ill_institution'] as $bundle) { + foreach (['ill_request_tracking', 'ill_institution_request', 'ill_institution'] as $bundle) { $nids = $node_storage->getQuery() ->accessCheck(FALSE) ->condition('type', $bundle) diff --git a/ill_corporate_forms.module b/ill_corporate_forms.module index 1b6ca6c..7ca68b2 100644 --- a/ill_corporate_forms.module +++ b/ill_corporate_forms.module @@ -49,6 +49,20 @@ function ill_corporate_forms_form_node_ill_institution_edit_form_alter(array &$f $form['#validate'][] = '_ill_corporate_forms_validate_institution_phone'; } +/** + * Implements hook_form_FORM_ID_alter() for the ill_request_tracking node form. + */ +function ill_corporate_forms_form_node_ill_request_tracking_form_alter(array &$form, FormStateInterface $form_state, string $form_id): void { + $form['title']['#access'] = FALSE; +} + +/** + * Implements hook_form_FORM_ID_alter() for the ill_request_tracking edit form. + */ +function ill_corporate_forms_form_node_ill_request_tracking_edit_form_alter(array &$form, FormStateInterface $form_state, string $form_id): void { + $form['title']['#access'] = FALSE; +} + /** * Adds #states for item-type conditional fields on the request form. * @@ -123,10 +137,20 @@ function _ill_corporate_forms_add_item_type_states(array &$form): void { * Sets the request title to the Borrowing Library name before saving. */ function ill_corporate_forms_node_presave(\Drupal\node\NodeInterface $node): void { - if ($node->bundle() !== 'ill_institution_request') { - return; + if ($node->bundle() === 'ill_institution_request') { + _ill_corporate_forms_presave_request($node); + } + elseif ($node->bundle() === 'ill_request_tracking') { + _ill_corporate_forms_presave_tracking($node); } +} +/** + * Presave logic for ill_institution_request nodes. + * + * Sets the title to the Borrowing Library name. + */ +function _ill_corporate_forms_presave_request(\Drupal\node\NodeInterface $node): void { $partner_nid = $node->get('field_ill_partner_organization')->target_id; if ($partner_nid) { $partner_node = \Drupal::entityTypeManager()->getStorage('node')->load($partner_nid); @@ -140,6 +164,33 @@ function ill_corporate_forms_node_presave(\Drupal\node\NodeInterface $node): voi $node->setTitle('ILL Request'); } +/** + * Presave logic for ill_request_tracking nodes. + * + * Auto-generates the title from the referenced request and sets + * the last_modified_by field to the current user. + */ +function _ill_corporate_forms_presave_tracking(\Drupal\node\NodeInterface $node): void { + // Auto-generate title from the referenced request. + $request_nid = $node->get('field_ill_request_reference')->target_id; + if ($request_nid) { + $request_node = \Drupal::entityTypeManager()->getStorage('node')->load($request_nid); + if ($request_node) { + $node->setTitle('Tracking: ' . $request_node->getTitle()); + } + else { + $node->setTitle('Tracking: Request #' . $request_nid); + } + } + else { + $node->setTitle('ILL Request Tracking'); + } + + // Set last modified by to the current user. + $current_user_id = \Drupal::currentUser()->id(); + $node->set('field_ill_last_modified_by', $current_user_id); +} + /** * Validates that the entered institution code matches the Borrowing Library's library code. */