Browse Source

added item title field and some validation for emails and phone numbers

main
Paul Pound 2 weeks ago
parent
commit
89dd54b767
  1. 59
      config/install/core.entity_form_display.node.ill_institution_request.default.yml
  2. 58
      config/install/core.entity_view_display.node.ill_institution_request.default.yml
  3. 21
      config/install/field.field.node.ill_institution_request.field_ill_item_title.yml
  4. 21
      config/install/field.field.node.ill_institution_request.field_ill_request_type.yml
  5. 21
      config/install/field.field.node.ill_institution_request.field_ill_system_request_number.yml
  6. 23
      config/install/field.storage.node.field_ill_item_title.yml
  7. 26
      config/install/field.storage.node.field_ill_request_type.yml
  8. 23
      config/install/field.storage.node.field_ill_system_request_number.yml
  9. 277
      config/install/views.view.ill_institution_requests.yml
  10. 83
      ill_corporate_forms.module

59
config/install/core.entity_form_display.node.ill_institution_request.default.yml

@ -14,6 +14,7 @@ dependencies:
- field.field.node.ill_institution_request.field_ill_isbn - field.field.node.ill_institution_request.field_ill_isbn
- field.field.node.ill_institution_request.field_ill_issn - field.field.node.ill_institution_request.field_ill_issn
- field.field.node.ill_institution_request.field_ill_issue - field.field.node.ill_institution_request.field_ill_issue
- field.field.node.ill_institution_request.field_ill_item_title
- field.field.node.ill_institution_request.field_ill_item_type - field.field.node.ill_institution_request.field_ill_item_type
- field.field.node.ill_institution_request.field_ill_journal_title - field.field.node.ill_institution_request.field_ill_journal_title
- field.field.node.ill_institution_request.field_ill_pages - field.field.node.ill_institution_request.field_ill_pages
@ -21,7 +22,9 @@ dependencies:
- field.field.node.ill_institution_request.field_ill_publication_date - field.field.node.ill_institution_request.field_ill_publication_date
- field.field.node.ill_institution_request.field_ill_publisher - field.field.node.ill_institution_request.field_ill_publisher
- field.field.node.ill_institution_request.field_ill_req_email - field.field.node.ill_institution_request.field_ill_req_email
- field.field.node.ill_institution_request.field_ill_request_type
- field.field.node.ill_institution_request.field_ill_source_of_information - field.field.node.ill_institution_request.field_ill_source_of_information
- field.field.node.ill_institution_request.field_ill_system_request_number
- field.field.node.ill_institution_request.field_ill_volume - field.field.node.ill_institution_request.field_ill_volume
- node.type.ill_institution_request - node.type.ill_institution_request
module: module:
@ -49,6 +52,12 @@ content:
size: 60 size: 60
placeholder: '' placeholder: ''
third_party_settings: {} third_party_settings: {}
field_ill_request_type:
type: options_buttons
weight: 4
region: content
settings: {}
third_party_settings: {}
field_ill_req_email: field_ill_req_email:
type: email_default type: email_default
weight: 12 weight: 12
@ -63,7 +72,7 @@ content:
region: content region: content
settings: {} settings: {}
third_party_settings: {} third_party_settings: {}
field_ill_author_editor: field_ill_item_title:
type: string_textfield type: string_textfield
weight: 14 weight: 14
region: content region: content
@ -71,7 +80,7 @@ content:
size: 60 size: 60
placeholder: '' placeholder: ''
third_party_settings: {} third_party_settings: {}
field_ill_isbn: field_ill_author_editor:
type: string_textfield type: string_textfield
weight: 15 weight: 15
region: content region: content
@ -79,7 +88,7 @@ content:
size: 60 size: 60
placeholder: '' placeholder: ''
third_party_settings: {} third_party_settings: {}
field_ill_publication_date: field_ill_isbn:
type: string_textfield type: string_textfield
weight: 16 weight: 16
region: content region: content
@ -87,7 +96,7 @@ content:
size: 60 size: 60
placeholder: '' placeholder: ''
third_party_settings: {} third_party_settings: {}
field_ill_edition: field_ill_publication_date:
type: string_textfield type: string_textfield
weight: 17 weight: 17
region: content region: content
@ -95,7 +104,7 @@ content:
size: 60 size: 60
placeholder: '' placeholder: ''
third_party_settings: {} third_party_settings: {}
field_ill_publisher: field_ill_edition:
type: string_textfield type: string_textfield
weight: 18 weight: 18
region: content region: content
@ -103,7 +112,7 @@ content:
size: 60 size: 60
placeholder: '' placeholder: ''
third_party_settings: {} third_party_settings: {}
field_ill_journal_title: field_ill_publisher:
type: string_textfield type: string_textfield
weight: 19 weight: 19
region: content region: content
@ -111,7 +120,7 @@ content:
size: 60 size: 60
placeholder: '' placeholder: ''
third_party_settings: {} third_party_settings: {}
field_ill_article_title: field_ill_journal_title:
type: string_textfield type: string_textfield
weight: 20 weight: 20
region: content region: content
@ -119,7 +128,7 @@ content:
size: 60 size: 60
placeholder: '' placeholder: ''
third_party_settings: {} third_party_settings: {}
field_ill_article_author: field_ill_article_title:
type: string_textfield type: string_textfield
weight: 21 weight: 21
region: content region: content
@ -127,7 +136,7 @@ content:
size: 60 size: 60
placeholder: '' placeholder: ''
third_party_settings: {} third_party_settings: {}
field_ill_volume: field_ill_article_author:
type: string_textfield type: string_textfield
weight: 22 weight: 22
region: content region: content
@ -135,7 +144,7 @@ content:
size: 60 size: 60
placeholder: '' placeholder: ''
third_party_settings: {} third_party_settings: {}
field_ill_issue: field_ill_volume:
type: string_textfield type: string_textfield
weight: 23 weight: 23
region: content region: content
@ -143,7 +152,7 @@ content:
size: 60 size: 60
placeholder: '' placeholder: ''
third_party_settings: {} third_party_settings: {}
field_ill_issn: field_ill_issue:
type: string_textfield type: string_textfield
weight: 24 weight: 24
region: content region: content
@ -151,7 +160,7 @@ content:
size: 60 size: 60
placeholder: '' placeholder: ''
third_party_settings: {} third_party_settings: {}
field_ill_pages: field_ill_issn:
type: string_textfield type: string_textfield
weight: 25 weight: 25
region: content region: content
@ -159,7 +168,7 @@ content:
size: 60 size: 60
placeholder: '' placeholder: ''
third_party_settings: {} third_party_settings: {}
field_ill_chapter_title: field_ill_pages:
type: string_textfield type: string_textfield
weight: 26 weight: 26
region: content region: content
@ -167,7 +176,7 @@ content:
size: 60 size: 60
placeholder: '' placeholder: ''
third_party_settings: {} third_party_settings: {}
field_ill_chapter_author: field_ill_chapter_title:
type: string_textfield type: string_textfield
weight: 27 weight: 27
region: content region: content
@ -175,7 +184,7 @@ content:
size: 60 size: 60
placeholder: '' placeholder: ''
third_party_settings: {} third_party_settings: {}
field_ill_source_of_information: field_ill_chapter_author:
type: string_textfield type: string_textfield
weight: 28 weight: 28
region: content region: content
@ -183,9 +192,25 @@ content:
size: 60 size: 60
placeholder: '' placeholder: ''
third_party_settings: {} third_party_settings: {}
field_ill_system_request_number:
type: string_textfield
weight: 29
region: content
settings:
size: 60
placeholder: ''
third_party_settings: {}
field_ill_source_of_information:
type: string_textfield
weight: 30
region: content
settings:
size: 60
placeholder: ''
third_party_settings: {}
field_ill_additional_notes: field_ill_additional_notes:
type: text_textarea type: text_textarea
weight: 29 weight: 31
region: content region: content
settings: settings:
rows: 5 rows: 5
@ -193,7 +218,7 @@ content:
third_party_settings: {} third_party_settings: {}
field_ill_copyright_agreement: field_ill_copyright_agreement:
type: boolean_checkbox type: boolean_checkbox
weight: 30 weight: 32
region: content region: content
settings: settings:
display_label: true display_label: true

58
config/install/core.entity_view_display.node.ill_institution_request.default.yml

@ -14,6 +14,7 @@ dependencies:
- field.field.node.ill_institution_request.field_ill_isbn - field.field.node.ill_institution_request.field_ill_isbn
- field.field.node.ill_institution_request.field_ill_issn - field.field.node.ill_institution_request.field_ill_issn
- field.field.node.ill_institution_request.field_ill_issue - field.field.node.ill_institution_request.field_ill_issue
- field.field.node.ill_institution_request.field_ill_item_title
- field.field.node.ill_institution_request.field_ill_item_type - field.field.node.ill_institution_request.field_ill_item_type
- field.field.node.ill_institution_request.field_ill_journal_title - field.field.node.ill_institution_request.field_ill_journal_title
- field.field.node.ill_institution_request.field_ill_pages - field.field.node.ill_institution_request.field_ill_pages
@ -21,7 +22,9 @@ dependencies:
- field.field.node.ill_institution_request.field_ill_publication_date - field.field.node.ill_institution_request.field_ill_publication_date
- field.field.node.ill_institution_request.field_ill_publisher - field.field.node.ill_institution_request.field_ill_publisher
- field.field.node.ill_institution_request.field_ill_req_email - field.field.node.ill_institution_request.field_ill_req_email
- field.field.node.ill_institution_request.field_ill_request_type
- field.field.node.ill_institution_request.field_ill_source_of_information - field.field.node.ill_institution_request.field_ill_source_of_information
- field.field.node.ill_institution_request.field_ill_system_request_number
- field.field.node.ill_institution_request.field_ill_volume - field.field.node.ill_institution_request.field_ill_volume
- node.type.ill_institution_request - node.type.ill_institution_request
module: module:
@ -49,6 +52,13 @@ content:
label: above label: above
settings: {} settings: {}
third_party_settings: {} third_party_settings: {}
field_ill_request_type:
type: list_default
weight: 4
region: content
label: above
settings: {}
third_party_settings: {}
field_ill_req_email: field_ill_req_email:
type: email_mailto type: email_mailto
weight: 12 weight: 12
@ -63,121 +73,135 @@ content:
label: above label: above
settings: {} settings: {}
third_party_settings: {} third_party_settings: {}
field_ill_author_editor: field_ill_item_title:
type: string type: string
weight: 14 weight: 14
region: content region: content
label: above label: above
settings: {} settings: {}
third_party_settings: {} third_party_settings: {}
field_ill_isbn: field_ill_author_editor:
type: string type: string
weight: 15 weight: 15
region: content region: content
label: above label: above
settings: {} settings: {}
third_party_settings: {} third_party_settings: {}
field_ill_publication_date: field_ill_isbn:
type: string type: string
weight: 16 weight: 16
region: content region: content
label: above label: above
settings: {} settings: {}
third_party_settings: {} third_party_settings: {}
field_ill_edition: field_ill_publication_date:
type: string type: string
weight: 17 weight: 17
region: content region: content
label: above label: above
settings: {} settings: {}
third_party_settings: {} third_party_settings: {}
field_ill_publisher: field_ill_edition:
type: string type: string
weight: 18 weight: 18
region: content region: content
label: above label: above
settings: {} settings: {}
third_party_settings: {} third_party_settings: {}
field_ill_journal_title: field_ill_publisher:
type: string type: string
weight: 19 weight: 19
region: content region: content
label: above label: above
settings: {} settings: {}
third_party_settings: {} third_party_settings: {}
field_ill_article_title: field_ill_journal_title:
type: string type: string
weight: 20 weight: 20
region: content region: content
label: above label: above
settings: {} settings: {}
third_party_settings: {} third_party_settings: {}
field_ill_article_author: field_ill_article_title:
type: string type: string
weight: 21 weight: 21
region: content region: content
label: above label: above
settings: {} settings: {}
third_party_settings: {} third_party_settings: {}
field_ill_volume: field_ill_article_author:
type: string type: string
weight: 22 weight: 22
region: content region: content
label: above label: above
settings: {} settings: {}
third_party_settings: {} third_party_settings: {}
field_ill_issue: field_ill_volume:
type: string type: string
weight: 23 weight: 23
region: content region: content
label: above label: above
settings: {} settings: {}
third_party_settings: {} third_party_settings: {}
field_ill_issn: field_ill_issue:
type: string type: string
weight: 24 weight: 24
region: content region: content
label: above label: above
settings: {} settings: {}
third_party_settings: {} third_party_settings: {}
field_ill_pages: field_ill_issn:
type: string type: string
weight: 25 weight: 25
region: content region: content
label: above label: above
settings: {} settings: {}
third_party_settings: {} third_party_settings: {}
field_ill_chapter_title: field_ill_pages:
type: string type: string
weight: 26 weight: 26
region: content region: content
label: above label: above
settings: {} settings: {}
third_party_settings: {} third_party_settings: {}
field_ill_chapter_author: field_ill_chapter_title:
type: string type: string
weight: 27 weight: 27
region: content region: content
label: above label: above
settings: {} settings: {}
third_party_settings: {} third_party_settings: {}
field_ill_source_of_information: field_ill_chapter_author:
type: string type: string
weight: 28 weight: 28
region: content region: content
label: above label: above
settings: {} settings: {}
third_party_settings: {} third_party_settings: {}
field_ill_system_request_number:
type: string
weight: 29
region: content
label: above
settings: {}
third_party_settings: {}
field_ill_source_of_information:
type: string
weight: 30
region: content
label: above
settings: {}
third_party_settings: {}
field_ill_additional_notes: field_ill_additional_notes:
type: text_default type: text_default
weight: 29 weight: 31
region: content region: content
label: above label: above
settings: {} settings: {}
third_party_settings: {} third_party_settings: {}
field_ill_copyright_agreement: field_ill_copyright_agreement:
type: boolean type: boolean
weight: 30 weight: 32
region: content region: content
label: above label: above
settings: {} settings: {}

21
config/install/field.field.node.ill_institution_request.field_ill_item_title.yml

@ -0,0 +1,21 @@
langcode: en
status: true
dependencies:
config:
- field.storage.node.field_ill_item_title
- node.type.ill_institution_request
enforced:
module:
- ill_corporate_forms
id: node.ill_institution_request.field_ill_item_title
field_name: field_ill_item_title
entity_type: node
bundle: ill_institution_request
label: 'Item Title'
description: ''
required: false
translatable: false
default_value: {}
default_value_callback: ''
settings: {}
field_type: string

21
config/install/field.field.node.ill_institution_request.field_ill_request_type.yml

@ -0,0 +1,21 @@
langcode: en
status: true
dependencies:
config:
- field.storage.node.field_ill_request_type
- node.type.ill_institution_request
enforced:
module:
- ill_corporate_forms
id: node.ill_institution_request.field_ill_request_type
field_name: field_ill_request_type
entity_type: node
bundle: ill_institution_request
label: 'I am requesting a:'
description: ''
required: true
translatable: false
default_value: {}
default_value_callback: ''
settings: {}
field_type: list_string

21
config/install/field.field.node.ill_institution_request.field_ill_system_request_number.yml

@ -0,0 +1,21 @@
langcode: en
status: true
dependencies:
config:
- field.storage.node.field_ill_system_request_number
- node.type.ill_institution_request
enforced:
module:
- ill_corporate_forms
id: node.ill_institution_request.field_ill_system_request_number
field_name: field_ill_system_request_number
entity_type: node
bundle: ill_institution_request
label: 'Your System Request Number'
description: ''
required: false
translatable: false
default_value: {}
default_value_callback: ''
settings: {}
field_type: string

23
config/install/field.storage.node.field_ill_item_title.yml

@ -0,0 +1,23 @@
langcode: en
status: true
dependencies:
module:
- node
enforced:
module:
- ill_corporate_forms
id: node.field_ill_item_title
field_name: field_ill_item_title
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

26
config/install/field.storage.node.field_ill_request_type.yml

@ -0,0 +1,26 @@
langcode: en
status: true
dependencies:
module:
- node
- options
enforced:
module:
- ill_corporate_forms
id: node.field_ill_request_type
field_name: field_ill_request_type
entity_type: node
type: list_string
settings:
allowed_values:
- value: loan
label: Loan
- value: copy
label: Copy
module: options
locked: false
cardinality: 1
translatable: true
indexes: {}
persist_with_no_fields: false
custom_storage: false

23
config/install/field.storage.node.field_ill_system_request_number.yml

@ -0,0 +1,23 @@
langcode: en
status: true
dependencies:
module:
- node
enforced:
module:
- ill_corporate_forms
id: node.field_ill_system_request_number
field_name: field_ill_system_request_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

277
config/install/views.view.ill_institution_requests.yml

@ -2,6 +2,9 @@ langcode: en
status: true status: true
dependencies: dependencies:
config: config:
- field.storage.node.field_ill_article_title
- field.storage.node.field_ill_chapter_title
- field.storage.node.field_ill_item_title
- field.storage.node.field_ill_email - field.storage.node.field_ill_email
- field.storage.node.field_ill_item_type - field.storage.node.field_ill_item_type
- field.storage.node.field_ill_partner_organization - field.storage.node.field_ill_partner_organization
@ -41,7 +44,7 @@ display:
entity_field: title entity_field: title
plugin_id: field plugin_id: field
label: Title label: Title
exclude: false exclude: true
alter: alter:
alter_text: false alter_text: false
text: '' text: ''
@ -220,6 +223,69 @@ display:
multi_type: separator multi_type: separator
separator: ', ' separator: ', '
field_api_classes: false field_api_classes: false
field_ill_item_title:
id: field_ill_item_title
table: node__field_ill_item_title
field: field_ill_item_title
relationship: none
group_type: group
admin_label: ''
plugin_id: field
label: 'Item Title'
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
created: created:
id: created id: created
table: node_field_data table: node_field_data
@ -412,6 +478,183 @@ display:
multi_type: separator multi_type: separator
separator: ', ' separator: ', '
field_api_classes: false field_api_classes: false
field_ill_article_title:
id: field_ill_article_title
table: node__field_ill_article_title
field: field_ill_article_title
relationship: none
group_type: group
admin_label: ''
plugin_id: field
label: 'Article Title'
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_chapter_title:
id: field_ill_chapter_title
table: node__field_ill_chapter_title
field: field_ill_chapter_title
relationship: none
group_type: group
admin_label: ''
plugin_id: field
label: 'Chapter Title'
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
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: pager:
type: full type: full
options: options:
@ -652,9 +895,13 @@ display:
title: title title: title
field_ill_partner_organization: field_ill_partner_organization field_ill_partner_organization: field_ill_partner_organization
field_ill_item_type: field_ill_item_type field_ill_item_type: field_ill_item_type
field_ill_item_title: field_ill_item_title
created: created created: created
field_ill_email: field_ill_email field_ill_email: field_ill_email
field_ill_contact_phone: field_ill_contact_phone field_ill_contact_phone: field_ill_contact_phone
field_ill_article_title: field_ill_article_title
field_ill_chapter_title: field_ill_chapter_title
view_node: view_node
default: created default: created
info: info:
title: title:
@ -678,6 +925,13 @@ display:
separator: '' separator: ''
empty_column: false empty_column: false
responsive: '' responsive: ''
field_ill_item_title:
sortable: true
default_sort_order: asc
align: ''
separator: ''
empty_column: false
responsive: ''
created: created:
sortable: true sortable: true
default_sort_order: desc default_sort_order: desc
@ -699,6 +953,27 @@ display:
separator: '' separator: ''
empty_column: false empty_column: false
responsive: '' responsive: ''
field_ill_article_title:
sortable: true
default_sort_order: asc
align: ''
separator: ''
empty_column: false
responsive: ''
field_ill_chapter_title:
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 override: true
sticky: false sticky: false
summary: '' summary: ''

83
ill_corporate_forms.module

@ -14,6 +14,7 @@ function ill_corporate_forms_form_node_ill_institution_request_form_alter(array
_ill_corporate_forms_add_item_type_states($form); _ill_corporate_forms_add_item_type_states($form);
$form['#validate'][] = '_ill_corporate_forms_validate_partner_email'; $form['#validate'][] = '_ill_corporate_forms_validate_partner_email';
$form['#validate'][] = '_ill_corporate_forms_validate_institution_code'; $form['#validate'][] = '_ill_corporate_forms_validate_institution_code';
$form['#validate'][] = '_ill_corporate_forms_validate_request_emails';
// Hide the title field; presave hook will populate it. // Hide the title field; presave hook will populate it.
$form['title']['#access'] = FALSE; $form['title']['#access'] = FALSE;
@ -26,11 +27,28 @@ function ill_corporate_forms_form_node_ill_institution_request_edit_form_alter(a
_ill_corporate_forms_add_item_type_states($form); _ill_corporate_forms_add_item_type_states($form);
$form['#validate'][] = '_ill_corporate_forms_validate_partner_email'; $form['#validate'][] = '_ill_corporate_forms_validate_partner_email';
$form['#validate'][] = '_ill_corporate_forms_validate_institution_code'; $form['#validate'][] = '_ill_corporate_forms_validate_institution_code';
$form['#validate'][] = '_ill_corporate_forms_validate_request_emails';
// Hide the title field; presave hook will populate it. // Hide the title field; presave hook will populate it.
$form['title']['#access'] = FALSE; $form['title']['#access'] = FALSE;
} }
/**
* Implements hook_form_FORM_ID_alter() for the ill_institution node form.
*/
function ill_corporate_forms_form_node_ill_institution_form_alter(array &$form, FormStateInterface $form_state, string $form_id): void {
$form['#validate'][] = '_ill_corporate_forms_validate_institution_emails';
$form['#validate'][] = '_ill_corporate_forms_validate_institution_phone';
}
/**
* Implements hook_form_FORM_ID_alter() for the ill_institution edit form.
*/
function ill_corporate_forms_form_node_ill_institution_edit_form_alter(array &$form, FormStateInterface $form_state, string $form_id): void {
$form['#validate'][] = '_ill_corporate_forms_validate_institution_emails';
$form['#validate'][] = '_ill_corporate_forms_validate_institution_phone';
}
/** /**
* Adds #states for item-type conditional fields on the request form. * Adds #states for item-type conditional fields on the request form.
* *
@ -42,6 +60,7 @@ function _ill_corporate_forms_add_item_type_states(array &$form): void {
// Book/Video/Thesis fields: visible when item_type is "book" OR "book_chapter". // Book/Video/Thesis fields: visible when item_type is "book" OR "book_chapter".
$book_fields = [ $book_fields = [
'field_ill_item_title',
'field_ill_author_editor', 'field_ill_author_editor',
'field_ill_isbn', 'field_ill_isbn',
'field_ill_publication_date', 'field_ill_publication_date',
@ -201,3 +220,67 @@ function _ill_corporate_forms_validate_partner_email(array &$form, FormStateInte
} }
} }
/**
* Extracts a string value from a form state field value.
*
* @param mixed $field_value
* The raw value from $form_state->getValue().
*
* @return string
* The extracted string value, or empty string if not found.
*/
function _ill_corporate_forms_extract_field_value($field_value): string {
if (is_array($field_value) && isset($field_value[0]['value'])) {
return (string) $field_value[0]['value'];
}
if (is_string($field_value)) {
return $field_value;
}
return '';
}
/**
* Validates email format for the ill_institution_request form.
*/
function _ill_corporate_forms_validate_request_emails(array &$form, FormStateInterface $form_state): void {
$email = _ill_corporate_forms_extract_field_value($form_state->getValue('field_ill_req_email'));
if (!empty($email) && !filter_var($email, FILTER_VALIDATE_EMAIL)) {
$form_state->setErrorByName('field_ill_req_email',
t('The email address "@email" is not valid. Please enter a valid email address (e.g., name@example.com).', ['@email' => $email]));
}
}
/**
* Validates email format for the ill_institution form.
*/
function _ill_corporate_forms_validate_institution_emails(array &$form, FormStateInterface $form_state): void {
$fields = [
'field_ill_email' => 'Email Address',
'field_ill_contact_email' => 'Contact Email Address',
];
foreach ($fields as $field_name => $label) {
$email = _ill_corporate_forms_extract_field_value($form_state->getValue($field_name));
if (!empty($email) && !filter_var($email, FILTER_VALIDATE_EMAIL)) {
$form_state->setErrorByName($field_name,
t('The @label "@email" is not valid. Please enter a valid email address (e.g., name@example.com).', [
'@label' => $label,
'@email' => $email,
]));
}
}
}
/**
* Validates phone number format for the ill_institution form.
*
* Requires the format ddd-ddd-dddd (e.g., 555-123-4567).
*/
function _ill_corporate_forms_validate_institution_phone(array &$form, FormStateInterface $form_state): void {
$phone = _ill_corporate_forms_extract_field_value($form_state->getValue('field_ill_contact_phone'));
if (!empty($phone) && !preg_match('/^\d{3}-\d{3}-\d{4}$/', $phone)) {
$form_state->setErrorByName('field_ill_contact_phone',
t('The phone number "@phone" is not in the correct format. Please enter the phone number as ddd-ddd-dddd (e.g., 555-123-4567).', ['@phone' => $phone]));
}
}

Loading…
Cancel
Save