diff --git a/LICENSE b/LICENSE index 6290a73505..db83a0b1ff 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (C) 2014 Crown Copyright (Department for Business, Energy & Industrial Strategy) & Bit Zesty +Copyright (C) 2014 Crown Copyright (Department for Business and Trade) & Bit Zesty Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in diff --git a/app/assets/javascripts/ckeditor/plugins/wordcount/plugin.js b/app/assets/javascripts/ckeditor/plugins/wordcount/plugin.js index 79c4632820..911036acee 100644 --- a/app/assets/javascripts/ckeditor/plugins/wordcount/plugin.js +++ b/app/assets/javascripts/ckeditor/plugins/wordcount/plugin.js @@ -293,52 +293,6 @@ CKEDITOR.plugins.add("wordcount", { return true; } - //If the limit is already over, allow the deletion of characters/words. Otherwise, - //the user would have to delete at one go the number of offending characters - var deltaWord = wordCount - lastWordCount; - var deltaChar = charCount - lastCharCount; - - lastWordCount = wordCount; - lastCharCount = charCount; - - if (lastWordCount == -1) { - lastWordCount = wordCount; - } - if (lastCharCount == -1) { - lastCharCount = charCount; - } - - // Check for word limit and/or char limit - if ((config.maxWordCount > -1 && wordCount > maxWordCountWithBuffer(config.maxWordCount) && deltaWord > 0) || - (config.maxCharCount > -1 && charCount > config.maxCharCount && deltaChar > 0)) { - - limitReached(editorInstance, limitReachedNotified); - } else if ((config.maxWordCount == -1 || wordCount <= maxWordCountWithBuffer(config.maxWordCount)) && - (config.maxCharCount == -1 || charCount <= config.maxCharCount)) { - - limitRestored(editorInstance); - } else { - snapShot = editorInstance.getSnapshot(); - } - - // Fire Custom Events - if (config.charCountGreaterThanMaxLengthEvent && config.charCountLessThanMaxLengthEvent) { - if (charCount > config.maxCharCount && config.maxCharCount > -1) { - config.charCountGreaterThanMaxLengthEvent(charCount, config.maxCharCount); - } else { - config.charCountLessThanMaxLengthEvent(charCount, config.maxCharCount); - } - } - - if (config.wordCountGreaterThanMaxLengthEvent && config.wordCountLessThanMaxLengthEvent) { - if (wordCount > maxWordCountWithBuffer(config.maxWordCount) && config.maxWordCount > -1) { - config.wordCountGreaterThanMaxLengthEvent(wordCount, config.maxWordCount); - - } else { - config.wordCountLessThanMaxLengthEvent(wordCount, config.maxWordCount); - } - } - return true; } @@ -381,53 +335,6 @@ CKEDITOR.plugins.add("wordcount", { updateCounter(event.editor); }, editor, null, 100); - editor.on("paste", function(event) { - if (config.maxWordCount > 0 || config.maxCharCount > 0) { - - // Check if pasted content is above the limits - var wordCount = -1, - charCount = -1, - text = event.editor.getData() + event.data.dataValue; - - - if (config.showCharCount) { - charCount = countCharacters(text, event.editor); - } - - if (config.showWordCount) { - wordCount = countWords(text); - } - - - // Instantiate the notification when needed and only have one instance - if(notification === null) { - notification = new CKEDITOR.plugins.notification(event.editor, { - message: event.editor.lang.wordcount.pasteWarning, - type: 'warning', - duration: config.pasteWarningDuration - }); - } - - if (config.maxCharCount > 0 && charCount > config.maxCharCount && config.hardLimit) { - if(!notification.isVisible()) { - notification.show(); - } - event.cancel(); - } - - if (config.maxWordCount > 0 && wordCount > maxWordCountWithBuffer(config.maxWordCount) && config.hardLimit) { - if(!notification.isVisible()) { - notification.show(); - } - event.cancel(); - } - } - }, editor, null, 100); - - editor.on("afterPaste", function (event) { - updateCounter(event.editor); - }, editor, null, 100); - editor.on("blur", function () { if (intervalId) { window.clearInterval(intervalId); diff --git a/app/assets/javascripts/frontend/form-validation.js.coffee b/app/assets/javascripts/frontend/form-validation.js.coffee index f74d764e99..28f2874999 100644 --- a/app/assets/javascripts/frontend/form-validation.js.coffee +++ b/app/assets/javascripts/frontend/form-validation.js.coffee @@ -138,11 +138,31 @@ window.FormValidation = return question.find("input[type='checkbox']").filter(":checked").length validateWordLimit: (question) -> - wordLimit = $(question.context).attr("data-word-max") - wordCount = $(question.context).val().split(" ").length - if wordCount > wordLimit - @logThis(question, "validateWordLimit", "Word limit exceeded") - @addErrorMessage(question, "Exceeded #{wordLimit} word limit.") + questionRef = question.attr("data-question_ref") + textarea = question.find("textarea") + wordLimit = textarea.attr("data-word-max") + wordLimitWithBuffer = 0 + if wordLimit > 15 + wordLimitWithBuffer = parseInt(wordLimit * 1.1); + else + wordLimitWithBuffer = wordLimit; + + editorInstance = CKEDITOR.instances[textarea.attr("id")] + if editorInstance? + editorContent = editorInstance.getData() + normalizedContent = editorContent + .replace(/<[^>]*>/g, ' ') # Remove HTML tags + .replace(/ /g, ' ') # Replace non-breaking spaces + .replace(/\s+/g, ' ') # Replace multiple spaces with single space + .trim() + wordCount = normalizedContent.split(' ').length + + if wordCount > wordLimitWithBuffer + @logThis(question, "validateWordLimit", "Word limit of #{wordLimit} exceeded. Word count at #{wordCount}.") + if wordLimit > 15 + @addErrorMessage(question, "Question #{questionRef} has a word limit of #{wordLimit}. Your answer has to be #{wordLimitWithBuffer} words or less (as we allow 10% leeway).") + else + @addErrorMessage(question, "Question #{questionRef} has a word limit of #{wordLimit}. Your answer has to be #{wordLimitWithBuffer} words or less.") validateSubfieldWordLimit: (question) -> wordLimit = $(question.context).attr("data-word-max") diff --git a/app/assets/javascripts/frontend/vat_returns_upload.js.coffee b/app/assets/javascripts/frontend/vat_returns_upload.js.coffee index fb70364da4..86f0066b84 100644 --- a/app/assets/javascripts/frontend/vat_returns_upload.js.coffee +++ b/app/assets/javascripts/frontend/vat_returns_upload.js.coffee @@ -1,5 +1,12 @@ window.VatReturnsUpload = init: -> + list = $('.vat-returns-wrapper .js-uploaded-list') + parent = list.closest('div.js-upload-wrapper') + max = parent.data('max-attachments') + govuk_button = $('.upload-file-btn') + + updateUploadListVisiblity(list, govuk_button, max) + $('.js-vat-returns-upload').each (idx, el) -> VatReturnsUpload.fileupload_init(el) @@ -14,8 +21,10 @@ window.VatReturnsUpload = $el = $(el) parent = $el.closest('div.js-upload-wrapper') + max = parent.data('max-attachments') list = parent.find('.js-uploaded-list') form = parent.find('form.vat-returns-upload-form') + govuk_button = $('.upload-file-btn') progress_all = (e, data) -> # TODO @@ -60,6 +69,8 @@ window.VatReturnsUpload = list.find(".li-figures-upload").removeClass("govuk-!-display-none") $(".js-vat-returns-status-message").remove() + updateUploadListVisiblity(list, govuk_button, max) + failed = (error_message) -> parent.find(".govuk-error-message").html(error_message) list.addClass("govuk-!-display-none") @@ -91,3 +102,17 @@ window.VatReturnsUpload = send: upload_started always: success_or_error ) + +updateUploadListVisiblity = (list, button, max) -> + list_elements = list.find("li").not('.dummy') + count = list_elements.length + wrapper = button.closest('div.js-upload-wrapper') + + if count > 0 + list.removeClass("hide") + + if !max || count < max + button.removeClass("hide") + + else + button.addClass("hide") diff --git a/app/decorators/form_answer_decorator.rb b/app/decorators/form_answer_decorator.rb index d6249ea6df..2af88ea826 100644 --- a/app/decorators/form_answer_decorator.rb +++ b/app/decorators/form_answer_decorator.rb @@ -336,6 +336,10 @@ def website_url document["website_url"] end + def social_media_links + document["social_media_links"] + end + def head_of_business_title document["head_of_business_title"] || document["head__of_bussines_title"] end diff --git a/app/decorators/user_decorator.rb b/app/decorators/user_decorator.rb index 5e24381992..5ba0c9a75a 100644 --- a/app/decorators/user_decorator.rb +++ b/app/decorators/user_decorator.rb @@ -34,13 +34,17 @@ def role end def role_name - case object.role.to_s.humanize - when "Account admin" - "Admin and collaborator" - when "Regular" - "Collaborator only" + if account.owner == self + "Account owner" else - object.role.to_s.humanize + case role.to_s.humanize + when "Account admin" + "Admin and collaborator" + when "Regular" + "Collaborator only" + else + role.to_s.humanize + end end end diff --git a/app/models/reports/admin_report.rb b/app/models/reports/admin_report.rb index 9565d3e5a0..91d8013182 100644 --- a/app/models/reports/admin_report.rb +++ b/app/models/reports/admin_report.rb @@ -61,6 +61,8 @@ def csv_filename "#{category}_award#{sub_type}_#{id}_#{time}.csv" when "reception-buckingham-palace" "royal-reception-guest-list.csv" + when "registered-users" + "users-of-started-applications.csv" end end diff --git a/app/models/reports/case_index_report.rb b/app/models/reports/case_index_report.rb index e42825c794..638cab5b07 100644 --- a/app/models/reports/case_index_report.rb +++ b/app/models/reports/case_index_report.rb @@ -64,7 +64,7 @@ def scoped_collection scope = @year.form_answers .shortlisted .where(award_type: @category) - .order(:sic_code) + .order(Arel.sql("form_answers.document #>> '{sic_code}', form_answers.company_or_nominee_name")) if @category == "trade" years_mode_query = (@years_mode.to_s == "3") ? "3 to 5" : "6 plus" diff --git a/app/models/reports/form_answer.rb b/app/models/reports/form_answer.rb index 0930b00db7..12e53d73f5 100644 --- a/app/models/reports/form_answer.rb +++ b/app/models/reports/form_answer.rb @@ -79,7 +79,7 @@ def ac_received if po_sd_provided_actual_figures? "N/A - provided actual figures" else - bool obj.audit_certificate.present? + bool(obj.audit_certificate.present? || obj.shortlisted_documents_submitted?) end end @@ -87,7 +87,7 @@ def ac_checked if po_sd_provided_actual_figures? "N/A" else - bool obj.audit_certificate.try(:reviewed?) + bool(obj.audit_certificate.try(:reviewed?) || obj.shortlisted_documents_wrapper&.reviewed?) end end diff --git a/app/pdf_generators/case_summary_pdfs/base.rb b/app/pdf_generators/case_summary_pdfs/base.rb index b981e29a25..4b65055da7 100644 --- a/app/pdf_generators/case_summary_pdfs/base.rb +++ b/app/pdf_generators/case_summary_pdfs/base.rb @@ -44,7 +44,7 @@ def set_form_answers .group("form_answers.id") .having("count(assessor_assignments) > 0") .where("assessor_assignments.submitted_at IS NOT NULL AND assessor_assignments.position IN (3,4)") - .order(Arel.sql("form_answers.award_year_id, form_answers.document #>> '{sic_code}'")) + .order(Arel.sql("form_answers.award_year_id, form_answers.document #>> '{sic_code}', form_answers.company_or_nominee_name")) .group("form_answers.id") .where("form_answers.award_year_id =?", award_year.id) diff --git a/app/pdf_generators/case_summary_pdfs/general/data_pointer.rb b/app/pdf_generators/case_summary_pdfs/general/data_pointer.rb index f2e02e0943..6fa2e6e904 100644 --- a/app/pdf_generators/case_summary_pdfs/general/data_pointer.rb +++ b/app/pdf_generators/case_summary_pdfs/general/data_pointer.rb @@ -8,6 +8,7 @@ module CaseSummaryPdfs::General::DataPointer AVERAGE_COLOR = "DAA520" NEGATIVE_COLOR = "FF0000" NEUTRAL_COLOR = "ECECEC" + LINK_REGEXP = /((?:https?:\/\/|www\d{0,3}[.]|[a-z0-9.-]+[.][a-z]{2,4}\/)(?:[^\s()<>`!{}:;'"\[\]]*))/im def undefined_value FeedbackPdfs::Pointer::UNDEFINED_VALUE @@ -55,6 +56,16 @@ def current_awards end end + def website_url + matches = LINK_REGEXP.match(form_answer.decorate.website_url) + matches ? matches[0] : "" + end + + def social_media_links + text = form_answer.decorate.social_media_links + text ? text.scan(LINK_REGEXP).flatten.map { |v| v.sub(/^https?:\/\/(www.)?/, "") } : [] + end + def case_summaries_table_headers [ [ diff --git a/app/pdf_generators/case_summary_pdfs/general/draw_elements.rb b/app/pdf_generators/case_summary_pdfs/general/draw_elements.rb index 69f9772212..8b0132d94f 100644 --- a/app/pdf_generators/case_summary_pdfs/general/draw_elements.rb +++ b/app/pdf_generators/case_summary_pdfs/general/draw_elements.rb @@ -13,23 +13,37 @@ def sic_code_offset end end + def social_media_links_offset + @_social_media_links_offset ||= case social_media_links.size + when 0..1 then 0 + when 2..3 then -2.5.mm + when 4..6 then -5.mm + else -7.5.mm + end + end + def main_header render_official_sensitive(105, 137.5) render_logo(695, 127.5) render_urn(0, 127) render_applicant(0, 119.5) - unless form_answer.promotion? + if form_answer.promotion? + render_website_address(offset: 15.mm) + render_social_media_links(offset: 15.mm) + else render_organization_type render_sic_code + render_website_address(offset: sic_code_offset) + render_social_media_links(offset: sic_code_offset) if (form_answer.development? || form_answer.mobility?) && form_answer.award_year.year >= 2020 # type and sub category Qs are missing for SD2020+, so need to move up - render_current_awards(offset: ONE_LINE_OFFSET + sic_code_offset) + render_current_awards(offset: ONE_LINE_OFFSET + sic_code_offset + social_media_links_offset) else - render_type(offset: sic_code_offset) - render_current_awards(offset: sic_code_offset) - render_sub_category(0, y_coord("sub_category") + sic_code_offset.to_i) + render_type(offset: sic_code_offset + social_media_links_offset) + render_current_awards(offset: sic_code_offset + social_media_links_offset) + render_sub_category(0, y_coord("sub_category") + sic_code_offset.to_i + (social_media_links_offset / 3)) # No idea why division by 3 is needed but it seems to work and offset the text properly end end @@ -38,15 +52,15 @@ def main_header end def render_organization_type - pdf_doc.text_box "Organisation Type: #{organisation_type}", header_text_properties.merge( + pdf_doc.text_box "Organisation Type: #{organisation_type}", description_list_properties.merge( at: [0.mm, 112.mm + default_offset], ) end def render_type(offset: 0.mm) - pdf_doc.text_box "Type: #{application_type}", - header_text_properties.merge( - at: [0.mm, 97.mm + default_offset + offset], + pdf_doc.text_box "Type: #{application_type}", + description_list_properties.merge( + at: [0.mm, 82.mm + default_offset + offset], width: 272.mm, ) end @@ -66,20 +80,44 @@ def y_coord(mode) application_type_answer.size > 0 case application_type_answer.size when 1 - [79, 71, 75] + [64, 56, 90] # [79, 71, 75] <~ ORIGINAL VALUES when 2 - [74, 67, 81] + [59, 52, 96] # [74, 67, 81] <~ ORIGINAL VALUES when 3 - [69, 62, 85] + [54, 47, 100] # [69, 62, 85] <~ ORIGINAL VALUES end else - [89, 81, 65] + [74, 66, 80] # [89, 81, 65] <~ ORIGINAL VALUES end[mode_number] end def render_sic_code - pdf_doc.text_box "SIC code: #{sic_code}", - header_text_properties.merge(width: 272.mm, at: [0.mm, 104.5.mm + default_offset]) + pdf_doc.text_box "SIC code: #{sic_code}", + description_list_properties.merge(width: 272.mm, at: [0.mm, 104.5.mm + default_offset]) + end + + def render_website_address(offset: 0) + pdf_doc.formatted_text_box( + [ + { text: "Website address: ", styles: [:bold], **description_list_properties }, + { text: website_url, link: website_url, styles: [:underline], color: "035DA5", **description_list_properties }, + ], + at: [0.mm, 97.mm + default_offset + offset], + width: 272.mm, + ) + end + + def render_social_media_links(offset: 0) + pdf_doc.formatted_text_box( + [ + { text: "Links to social media accounts: ", styles: [:bold], **description_list_properties }, + { text: social_media_links.join(", "), **description_list_properties }, + ], + at: [0.mm, 89.5.mm + default_offset + offset], + width: 272.mm, + ) + + pdf_doc.move_down(social_media_links_offset.abs) end def render_current_awards(offset: 0) @@ -88,8 +126,8 @@ def render_current_awards(offset: 0) awards.each_with_index do |awards_line, index| if index == 0 - pdf_doc.text_box "Current Awards: #{awards_line}", - header_text_properties.merge(width: 650.mm, at: [0.mm, y_coord("awards").mm + default_offset + offset]) + pdf_doc.text_box "Current Awards: #{awards_line}", + description_list_properties.merge(width: 650.mm, at: [0.mm, y_coord("awards").mm + default_offset + offset]) else pdf_doc.text_box awards_line.to_s, header_text_properties.merge(width: 650.mm, at: [0.mm, y_coord("awards").mm + default_offset + offset - index * ONE_LINE_OFFSET]) diff --git a/app/pdf_generators/pdf_audit_certificates/general/shared_elements.rb b/app/pdf_generators/pdf_audit_certificates/general/shared_elements.rb index bcc73427e6..25a669f52d 100644 --- a/app/pdf_generators/pdf_audit_certificates/general/shared_elements.rb +++ b/app/pdf_generators/pdf_audit_certificates/general/shared_elements.rb @@ -17,7 +17,7 @@ def render_certificate_info end def render_recipients_info - render_text_line("To: The Kings Award’s Office, The Department for Business, Energy & Industrial Strategy", 1, inline_format: true) + render_text_line("To: The Kings Award's Office, The Department for Business and Trade", 1, inline_format: true) end def render_company_info diff --git a/app/pdf_generators/qae_pdf_forms/general/draw_elements.rb b/app/pdf_generators/qae_pdf_forms/general/draw_elements.rb index eeba908b85..0ffe5cba92 100644 --- a/app/pdf_generators/qae_pdf_forms/general/draw_elements.rb +++ b/app/pdf_generators/qae_pdf_forms/general/draw_elements.rb @@ -153,16 +153,31 @@ def render_guidance_block render_text(block_2) + render_text("Copying answers from a document into online application forms", size: 14, style: :bold) + render_text("If you want to copy your answers from a text document like Microsoft Word into an online application form, please paste text without formatting for it to appear correctly. You can do so in one of three ways:") + + block_3 = %( + 1. Remove formatting when pasting + #{bullet} Use the shortcut Ctrl+Shift+V (Windows) or Command+Shift+V (Mac) to paste text without formatting. + 2. First remove formatting in Microsoft Word + #{bullet} Option 1: Select the text and press Ctrl+Shift+N (Windows) or Command+Shift+N (Mac). + #{bullet} Option 2: Select the text and click the ‘Clear Formatting’ button on the Home tab. + 3. Use an online tool + #{bullet} Use an online tool to remove formatting, such as https://www.striphtml.com/. + ) + + render_text(block_3) + render_text("Use of web-based AI and editing tools in King's Awards applications:", size: 14, style: :bold) render_text("We recognise that web-based AI and editing tools can greatly assist writing and editing and can help improve grammar and overall style. There may be issues to consider when entering information and generating text via web-based AI and online editing tools. We have included more guidance online in the 'Useful Application Info' section.") render_text("Need help?", size: 14, style: :bold) - block_3 = %(If you need digital assistance with filling in the form or have any questions, please feel free to get in touch with us: + block_4 = %(If you need digital assistance with filling in the form or have any questions, please feel free to get in touch with us: By calling 020 4551 0081 Or emailing kingsawards@businessandtrade.gov.uk) - render_text(block_3) + render_text(block_4) end def render_logo diff --git a/app/pdf_generators/shared_pdf_helpers/draw_elements.rb b/app/pdf_generators/shared_pdf_helpers/draw_elements.rb index 013247dfeb..e804d68f77 100644 --- a/app/pdf_generators/shared_pdf_helpers/draw_elements.rb +++ b/app/pdf_generators/shared_pdf_helpers/draw_elements.rb @@ -16,18 +16,18 @@ def render_logo(x_coord, y_coord) end def render_urn(x_coord, y_coord) - pdf_doc.text_box "KA Ref: #{form_answer.urn}", - header_text_properties.merge(at: [x_coord.mm, y_coord.mm + DEFAULT_OFFSET]) + pdf_doc.text_box "KA Ref: #{form_answer.urn}", + description_list_properties.merge(at: [x_coord.mm, y_coord.mm + DEFAULT_OFFSET]) end def render_applicant(x_coord, y_coord) - pdf_doc.text_box "Applicant: #{form_answer.decorate.company_nominee_or_application_name}", - header_text_properties.merge(at: [x_coord.mm, y_coord.mm + DEFAULT_OFFSET]) + pdf_doc.text_box "Applicant: #{form_answer.decorate.company_nominee_or_application_name}", + description_list_properties.merge(at: [x_coord.mm, y_coord.mm + DEFAULT_OFFSET]) end def render_sub_category(x_coord, y_coord) - pdf_doc.text_box "Sub-category: #{sub_category}", - header_text_properties.merge(at: [x_coord.mm, y_coord.mm + DEFAULT_OFFSET]) + pdf_doc.text_box "Sub-category: #{sub_category}", + description_list_properties.merge(at: [x_coord.mm, y_coord.mm + DEFAULT_OFFSET]) end def render_award_general_information(x_coord, y_coord) @@ -88,4 +88,8 @@ def header_text_properties style: :bold, } end + + def description_list_properties + header_text_properties.merge(style: :normal, inline_format: true) + end end diff --git a/app/search/form_answer_search.rb b/app/search/form_answer_search.rb index 1146dadc89..d27ec2e6ed 100644 --- a/app/search/form_answer_search.rb +++ b/app/search/form_answer_search.rb @@ -36,7 +36,7 @@ def sort_by_applied_before(scoped_results, desc = false) end def sort_by_sic_code(scoped_results, desc = false) - scoped_results.order(Arel.sql("(form_answers.document #>> '{sic_code}') #{sort_order(desc)}")) + scoped_results.order(Arel.sql("(form_answers.document #>> '{sic_code}') #{sort_order(desc)}, form_answers.company_or_nominee_name #{sort_order(desc)}")) end def sort_by_primary_assessor_name(scoped_results, desc = false) diff --git a/app/search/user_search.rb b/app/search/user_search.rb index 90fbf82cb3..160ee0b64a 100644 --- a/app/search/user_search.rb +++ b/app/search/user_search.rb @@ -1,10 +1,5 @@ class UserSearch < Search - DEFAULT_SEARCH = { - sort: "full_name", - search_filter: { - role: User.role.values, - }, - } + DEFAULT_SEARCH = { sort: "full_name" } include FullNameSort end diff --git a/app/views/account/collaborators/_item.html.slim b/app/views/account/collaborators/_item.html.slim index 48e5df34eb..d3550b5d40 100644 --- a/app/views/account/collaborators/_item.html.slim +++ b/app/views/account/collaborators/_item.html.slim @@ -1,4 +1,4 @@ -li.list-group-item id=dom_id(collaborator) aria-label="#{role = collaborator == account_owner ? "Account owner" : collaborator.role_name} summary" +li.list-group-item id=dom_id(collaborator) aria-label="#{role = collaborator.role_name} summary" h3.collaborator__name.govuk-heading-s = collaborator.full_name_with_status p.collaborator__jobtitle.govuk-body diff --git a/app/views/account_mailers/notify_shortlisted_mailer/notify_po_sd.text.erb b/app/views/account_mailers/notify_shortlisted_mailer/notify_po_sd.text.erb index 4bbc3dd8d3..71d973d4cf 100644 --- a/app/views/account_mailers/notify_shortlisted_mailer/notify_po_sd.text.erb +++ b/app/views/account_mailers/notify_shortlisted_mailer/notify_po_sd.text.erb @@ -13,7 +13,7 @@ Please follow the steps below: 1. Log into your King's Awards for Enterprise dashboard and follow the steps to upload any latest financial statements and VAT returns by following the “Provide the latest financial information” link here: <%= users_form_answer_audit_certificate_url(@form_answer) %> - 2. Check how the estimated figures you provided in section C of your application form compare with the actuals. If you do not have access to your application, you can download it from the King's Award for Enterprise account dashboard. + 2. Check how the estimated figures you provided in section D of your application form compare with the actuals. If you do not have access to your application, you can download it from the King's Award for Enterprise account dashboard. 3. You will have to submit a separate variance explanation document if: a) any of the actual figures have decreased by 10% or more. If this is the case, please explain the reason(s) for the difference. b) the actuals include losses which were not previously stated on your application form. If this is the case, please explain the reasons for the losses and how your business remains financially viable. diff --git a/app/views/account_mailers/notify_shortlisted_mailer/preview/notify_po_sd.html.slim b/app/views/account_mailers/notify_shortlisted_mailer/preview/notify_po_sd.html.slim index 8eaae4f31d..5536977d56 100644 --- a/app/views/account_mailers/notify_shortlisted_mailer/preview/notify_po_sd.html.slim +++ b/app/views/account_mailers/notify_shortlisted_mailer/preview/notify_po_sd.html.slim @@ -23,7 +23,7 @@ p style="font-size: 19px; line-height: 1.315789474; margin: 0 0 30px 0;" = link_to(users_form_answer_audit_certificate_url(@form_answer), users_form_answer_audit_certificate_url(@form_answer)) p style="font-size: 19px; line-height: 1.315789474; margin: 0 0 30px 0;" - | 2. Check how the estimated figures you provided in section C of your application form compare with the actuals. If you do not have access to your application, you can download it from the King's Award for Enterprise account dashboard. + | 2. Check how the estimated figures you provided in section D of your application form compare with the actuals. If you do not have access to your application, you can download it from the King's Award for Enterprise account dashboard. p style="font-size: 19px; line-height: 1.315789474; margin: 0 0 30px 0;" | 3. You will have to submit a separate variance explanation document if: br diff --git a/app/views/accounts/_form_contact_settings.html.slim b/app/views/accounts/_form_contact_settings.html.slim index 3f481f6621..4dc90c5d73 100644 --- a/app/views/accounts/_form_contact_settings.html.slim +++ b/app/views/accounts/_form_contact_settings.html.slim @@ -15,7 +15,7 @@ = f.input :subscribed_to_emails, checkbox: true, label: "I am happy to be contacted about King's Awards for Enterprise issues not related to my application (for example, request to act as a case study, newsletters, other information).", wrapper_class: "selectable" - = f.input :agree_being_contacted_by_department_of_business, label: "I am happy to be contacted by the Department for Business, Energy and Industrial Strategy.", wrapper_class: "selectable" + = f.input :agree_being_contacted_by_department_of_business, label: "I am happy to be contacted by the Department for Business and Trade.", wrapper_class: "selectable" = f.input :agree_sharing_of_details_with_lieutenancies, checkbox: true, label: "I am happy for my and my organisation's name, contact details and application status to be shared with Lieutenancies so that they can contact us to assist as appropriate.

The King's Awards Office works closely with Lord-Lieutenants. They are His Majesty’s representatives in each lieutenancy area of the United Kingdom. The Lord-Lieutenants present the Awards, promote them locally and offer support to companies and organisations.
".html_safe, wrapper_class: "selectable" p.govuk-body diff --git a/app/views/accounts/useful_information.html.slim b/app/views/accounts/useful_information.html.slim index 38ce5746e6..ef681b1bd9 100644 --- a/app/views/accounts/useful_information.html.slim +++ b/app/views/accounts/useful_information.html.slim @@ -32,7 +32,7 @@ h2.govuk-heading-l Due Diligence Checks - p.govuk-body If your application is shortlisted, the Department for Business, Energy & Industrial Strategy will undertake due diligence checks with other Government Departments and Agencies using your organisation's name, company/charity registration number and address. + p.govuk-body If your application is shortlisted, the Department for Business and Trade will undertake due diligence checks with other Government Departments and Agencies using your organisation's name, company/charity registration number and address. details class='govuk-details govuk-!-margin-top-3 govuk-!-margin-bottom-0' data-module="govuk-details" summary.govuk-details__summary @@ -46,7 +46,7 @@ li Companies House li Competition and Markets Authority li Crown Commercial Service - li Department for Business, Energy and Industrial Strategy + li Department for Business and Trade li Department for Communities and Local Government li Department for Culture, Media & Sport li Department for Education @@ -97,7 +97,10 @@ li Environmental pollution; li Failure to fully comply with administrative filing requirements as stipulated by any government department or agency. - p.govuk-body Further information can be found on the application form. Please be aware - firms have previously failed this part of the process for as little as a few hundred pounds so it really is worth checking with your finance team. - p.govuk-body You can download a Memorandum of Understanding between the Department for Business, Energy & Industrial Strategy and HMRC regarding due diligence checks made. p.govuk-body - .download-link.govuk-link = link_to('Download the Memorandum of Understanding', 'https://s3.eu-west-2.amazonaws.com/www.queens-awards-enterprise.service.gov.uk/memorandum_of_understanding_2023.pdf', target: "_blank") + | Also, please check the + =< link_to('risk rating matrix', 'https://www.gov.uk/government/publications/sharing-hmrc-information-to-assist-the-kings-award-for-enterprise-committees-recommendations/memorandum-of-understanding-accessing-hmrc-information-to-assist-the-kings-award-for-enterprise-committees-to-make-recommendations-about-awards-to-u--4#annex-c--risk-rating-matrix', class: 'govuk-link', target: "_blank") + | in the HRMC's + =< link_to('Memorandum of Understanding', 'https://www.gov.uk/government/publications/sharing-hmrc-information-to-assist-the-kings-award-for-enterprise-committees-recommendations/memorandum-of-understanding-accessing-hmrc-information-to-assist-the-kings-award-for-enterprise-committees-to-make-recommendations-about-awards-to-u--4', class: 'govuk-link', target: "_blank") + | (created to assist the King's Award for Enterprise Committee in making recommendations about awards to UK companies). + p.govuk-body Further information can be found on the application form. Please be aware - firms have previously failed this part of the process for as little as a few hundred pounds so it really is worth checking with your finance team. diff --git a/app/views/admin/dashboard/downloads/_csv_reports.html.slim b/app/views/admin/dashboard/downloads/_csv_reports.html.slim index c1fedfbd35..55c2ad727c 100644 --- a/app/views/admin/dashboard/downloads/_csv_reports.html.slim +++ b/app/views/admin/dashboard/downloads/_csv_reports.html.slim @@ -3,11 +3,11 @@ h2 ul.download-list li.download-item p.download-item__title - ' Registered users entry + ' Users of started applications / p.download-item__description ' Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo - = link_to "Download", admin_report_path("registered-users", format: :csv, year: @award_year.year), class: "download-link", aria: { label: "Download Registered users entry" } + = link_to "Download", admin_report_path("registered-users", format: :csv, year: @award_year.year), class: "download-link", aria: { label: "Download Users of started applications" } li.download-item diff --git a/app/views/admin/users/_fields_contact_preferences.html.slim b/app/views/admin/users/_fields_contact_preferences.html.slim index 62a2dc604d..620e81d5e2 100644 --- a/app/views/admin/users/_fields_contact_preferences.html.slim +++ b/app/views/admin/users/_fields_contact_preferences.html.slim @@ -17,7 +17,7 @@ = f.input :subscribed_to_emails, checkbox: true, label: "I am happy to be contacted about King's Awards for Enterprise issues not related to my application (case study, newsletters so on).", wrapper_class: "selectable" - = f.input :agree_being_contacted_by_department_of_business, label: "I am happy to be contacted by the Department for Business, Energy and Industrial Strategy.", wrapper_class: "selectable" + = f.input :agree_being_contacted_by_department_of_business, label: "I am happy to be contacted by the Department for Business and Trade.", wrapper_class: "selectable" = f.input :agree_sharing_of_details_with_lieutenancies, label: "I am happy for my and my organisation's name, contact details and application status to be shared with Lieutenancies so that they can contact us to assist as appropriate.", wrapper_class: "selectable" diff --git a/app/views/admin/users/_list.html.slim b/app/views/admin/users/_list.html.slim index bc8dd411fd..36a875e661 100644 --- a/app/views/admin/users/_list.html.slim +++ b/app/views/admin/users/_list.html.slim @@ -9,32 +9,8 @@ = sort_link f, 'Email', @search, :email th.sortable = sort_link f, 'Company', @search, :company_name - th.filter - - role_names = { "account_admin" => "Admin and collaborator", "regular" => "Collaborator only" } - = f.simple_fields_for [:filters, @search.filters] do |f| - - role_collection = User.role.options.map{ |role| [role_names[role[1]], role[1]] } - = f.input :role, collection: role_collection, label: false, input_html: {multiple: true, class: 'if-js-hide', aria: { label: "Search applications" } } - = f.submit "Filter", class: "if-js-hide" - label.if-js-hide Ctrl + left click for multi select - .dropdown.if-no-js-hide - button.btn.btn-default.dropdown-toggle type="button" data-toggle="dropdown" aria-expanded="true" - ' Role: - span.text-filter - ' All - span.caret - ul.dropdown-menu role="menu" - li.checkbox role="menuitem" - label data-value="select_all" - input type="checkbox" - span.label-contents - em Select all - li.divider - - User.role.options.each do |role| - li.checkbox role="menuitem" - label data-value=role[1] - input type="checkbox" - span.label-contents - = role_names[role[1]] + th + ' Role th.sortable = sort_link f, 'Signed in on', @search, :last_sign_in_at th.sortable diff --git a/app/views/content_only/_guidance_on_copying_text.html.slim b/app/views/content_only/_guidance_on_copying_text.html.slim new file mode 100644 index 0000000000..4c167c8ea6 --- /dev/null +++ b/app/views/content_only/_guidance_on_copying_text.html.slim @@ -0,0 +1,18 @@ +h3.govuk-heading-m Copying answers from a document into online application forms +p.govuk-body + | If you want to copy your answers from a text document like Microsoft Word into an online application form, please paste text without formatting for it to appear correctly. You can do so in one of three ways: + +ol.govuk-list.govuk-list--number + li + strong Remove formatting when pasting + ul.govuk-list.govuk-list--bullet + li Use the shortcut Ctrl+Shift+V (Windows) or Command+Shift+V (Mac) to paste text without formatting. + li + strong First remove formatting in Microsoft Word + ul.govuk-list.govuk-list--bullet + li Option 1: Select the text and press Ctrl+Shift+N (Windows) or Command+Shift+N (Mac). + li Option 2: Select the text and click the ‘Clear Formatting’ button on the Home tab. + li + strong Use an online tool + ul.govuk-list.govuk-list--bullet + li Use an online tool to remove formatting, such as https://www.striphtml.com/. diff --git a/app/views/content_only/award_info_development.html.slim b/app/views/content_only/award_info_development.html.slim index 83015e5d13..c19fb765ae 100644 --- a/app/views/content_only/award_info_development.html.slim +++ b/app/views/content_only/award_info_development.html.slim @@ -79,6 +79,8 @@ h1.govuk-heading-xl li You may need to get your accountant to help with section D - allow sufficient time for that. li Section C requires longer text responses - start planning these as soon as you can. + = render partial: "content_only/guidance_on_copying_text" + h3.govuk-heading-m Use of web-based AI and editing tools in King's Awards applications: p.govuk-body | We recognise that the use of web-based AI and editing tools can greatly assist writing and editing and can help improve grammar and overall style. There may be issues to consider when entering information and generating text via a web-based AI and online editing tools. diff --git a/app/views/content_only/award_info_innovation.html.slim b/app/views/content_only/award_info_innovation.html.slim index 981782c06c..e3ab0df6f7 100644 --- a/app/views/content_only/award_info_innovation.html.slim +++ b/app/views/content_only/award_info_innovation.html.slim @@ -78,6 +78,8 @@ h1.govuk-heading-xl li You may need to get your accountant to help with section D - allow sufficient time for that. li Sections C and E require longer text responses - start planning these as soon as you can. + = render partial: "content_only/guidance_on_copying_text" + h3.govuk-heading-m Use of web-based AI and editing tools in King's Awards applications: p.govuk-body | We recognise that the use of web-based AI and editing tools can greatly assist writing and editing and can help improve grammar and overall style. There may be issues to consider when entering information and generating text via a web-based AI and online editing tools. diff --git a/app/views/content_only/award_info_mobility.html.slim b/app/views/content_only/award_info_mobility.html.slim index 132ecf226a..db5317cb93 100644 --- a/app/views/content_only/award_info_mobility.html.slim +++ b/app/views/content_only/award_info_mobility.html.slim @@ -76,6 +76,8 @@ h1.govuk-heading-xl li You may need to get your accountant to help with section D - allow sufficient time for that. li Sections C and E require longer text responses - start planning these as soon as you can. + = render partial: "content_only/guidance_on_copying_text" + h3.govuk-heading-m Use of web-based AI and editing tools in King's Awards applications: p.govuk-body | We recognise that the use of web-based AI and editing tools can greatly assist writing and editing and can help improve grammar and overall style. There may be issues to consider when entering information and generating text via a web-based AI and online editing tools. diff --git a/app/views/content_only/award_info_trade.html.slim b/app/views/content_only/award_info_trade.html.slim index c6c542b3a7..7d48a61f81 100644 --- a/app/views/content_only/award_info_trade.html.slim +++ b/app/views/content_only/award_info_trade.html.slim @@ -81,6 +81,8 @@ h1.govuk-heading-xl li You may need to get your accountant to help with section D - allow sufficient time for that. li Sections C and E require longer text responses - start planning these as soon as you can. + = render partial: "content_only/guidance_on_copying_text" + h3.govuk-heading-m Use of web-based AI and editing tools in King's Awards applications: p.govuk-body | We recognise that the use of web-based AI and editing tools can greatly assist writing and editing and can help improve grammar and overall style. There may be issues to consider when entering information and generating text via a web-based AI and online editing tools. diff --git a/app/views/content_only/post_submission/_shortlisted_advanced_info.html.slim b/app/views/content_only/post_submission/_shortlisted_advanced_info.html.slim index e109009224..e6397db948 100644 --- a/app/views/content_only/post_submission/_shortlisted_advanced_info.html.slim +++ b/app/views/content_only/post_submission/_shortlisted_advanced_info.html.slim @@ -57,7 +57,7 @@ details.govuk-details data-module="govuk-details" li | Upload any latest financial statements and VAT returns by following the “Provide the latest financial information” link, which you can find next to each shortlisted application, which is listed below the instructions on this page. li - | Check how the estimated figures you provided in section C of your application form compare with the actuals. (If you do not have your filled-in application form handy, you can find it next to the shortlisted application, which is listed below the instructions on this page) + | Check how the estimated figures you provided in section D of your application form compare with the actuals. (If you do not have your filled-in application form handy, you can find it next to the shortlisted application, which is listed below the instructions on this page) li | You will have to create and submit a separate variance explanation document (via the “Provide the latest financial information” link), if: ul.govuk-list.no-bullet diff --git a/app/views/content_only/privacy.html.slim b/app/views/content_only/privacy.html.slim index f53d495094..923fda3fcb 100644 --- a/app/views/content_only/privacy.html.slim +++ b/app/views/content_only/privacy.html.slim @@ -10,7 +10,7 @@ h1.govuk-heading-xl ' This statement covers the services provided by The King's Awards Application website: = link_to request.base_url, root_path - p.govuk-body The Data Controller for this website is The King's Awards Office, which is part of the Department for Business, Energy and Industrial Strategy. The site is managed by The King's Awards Office, which is part of the Department for Business, Energy and Industrial Strategy + p.govuk-body The Data Controller for this website is The King's Awards Office, which is part of the Department for Business and Trade. The site is managed by The King's Awards Office, which is part of the Department for Business and Trade. br @@ -28,7 +28,7 @@ h1.govuk-heading-xl p.govuk-body ' Data Protection Officer br - ' Department for Business, Energy and Industrial Strategy + ' Department for Business and Trade br ' 1 Victoria Street, br diff --git a/app/views/users/figures_and_vat_returns/_vat_returns.html.slim b/app/views/users/figures_and_vat_returns/_vat_returns.html.slim index fdf930a7fd..7bfa7b54a8 100644 --- a/app/views/users/figures_and_vat_returns/_vat_returns.html.slim +++ b/app/views/users/figures_and_vat_returns/_vat_returns.html.slim @@ -4,7 +4,7 @@ = render "file_upload_details" -.js-upload-wrapper +.js-upload-wrapper data-max-attachments=5 ul.js-uploaded-list.no-bullets.list-group.list-add class=("govuk-!-display-none" unless figures_form.vat_returns_files.any?) - figures_form.vat_returns_files.each do |vat_returns_file| li.list-group-item.file @@ -22,7 +22,7 @@ .govuk-error-message .clear - span.govuk-button.govuk-button--secondary role="button" + span.govuk-button.govuk-button--secondary.upload-file-btn role="button" span Upload a file = f.input :attachment, as: :file, diff --git a/app/views/users/figures_and_vat_returns/show.html.slim b/app/views/users/figures_and_vat_returns/show.html.slim index 85cc9dbdac..0b5aaebfae 100644 --- a/app/views/users/figures_and_vat_returns/show.html.slim +++ b/app/views/users/figures_and_vat_returns/show.html.slim @@ -16,7 +16,7 @@ header.page-header.group class=('page-header-wider govuk-!-margin-bottom-0') ol.govuk-list.govuk-list--number li Upload any latest financial statements and VAT returns (in the “Latest financial statements and VAT returns” section on this page). li - | Check how the estimated figures you provided in section C of your application form compare with the actuals. (If you do not have your filled-in application form handy, please + | Check how the estimated figures you provided in section D of your application form compare with the actuals. (If you do not have your filled-in application form handy, please =< link_to("download your application form", users_form_answer_url(@form_answer, format: :pdf)) | .) li diff --git a/app/views/users/shortlisted_reminder_mailer/notify.text.erb b/app/views/users/shortlisted_reminder_mailer/notify.text.erb index bb2939ff26..70bacadd40 100644 --- a/app/views/users/shortlisted_reminder_mailer/notify.text.erb +++ b/app/views/users/shortlisted_reminder_mailer/notify.text.erb @@ -16,7 +16,7 @@ If you do not submit the required latest financial information before the deadli 1. Log into your King's Awards for Enterprise dashboard and follow the steps to upload any latest financial statements and VAT returns by following the “Provide the latest financial information” link here: <%= users_form_answer_figures_and_vat_returns_url(@form_answer) %> - 2. Check how the estimated figures you provided in section C of your application form compare with the actuals. If you do not have access to your application, you can download it from the King's Award for Enterprise account dashboard. + 2. Check how the estimated figures you provided in section D of your application form compare with the actuals. If you do not have access to your application, you can download it from the King's Award for Enterprise account dashboard. 3. You will have to submit a separate variance explanation document if: a) any of the actual figures have decreased by 10% or more. If this is the case, please explain the reasons for the difference. b) the actuals include losses which were not previously stated on your application form. If this is the case, please explain the reasons for the losses and how your business remains financially viable. diff --git a/app/views/users/shortlisted_reminder_mailer/preview/notify.html.slim b/app/views/users/shortlisted_reminder_mailer/preview/notify.html.slim index a4343fb28c..8ca7ab55ec 100644 --- a/app/views/users/shortlisted_reminder_mailer/preview/notify.html.slim +++ b/app/views/users/shortlisted_reminder_mailer/preview/notify.html.slim @@ -31,7 +31,7 @@ p style="font-size: 19px; line-height: 1.315789474; margin: 0 0 30px 0;" = link_to(users_form_answer_audit_certificate_url(@form_answer), users_form_answer_audit_certificate_url(@form_answer)) p style="font-size: 19px; line-height: 1.315789474; margin: 0 0 30px 0;" - | 2. Check how the estimated figures you provided in section C of your application form compare with the actuals. If you do not have access to your application, you can download it from the King's Award for Enterprise account dashboard. + | 2. Check how the estimated figures you provided in section D of your application form compare with the actuals. If you do not have access to your application, you can download it from the King's Award for Enterprise account dashboard. p style="font-size: 19px; line-height: 1.315789474; margin: 0 0 30px 0;" | 3. You will have to submit a separate variance explanation document if: diff --git a/forms/award_years/v2025/innovation/innovation_step1.rb b/forms/award_years/v2025/innovation/innovation_step1.rb index a7bb2dce12..c031c14674 100644 --- a/forms/award_years/v2025/innovation/innovation_step1.rb +++ b/forms/award_years/v2025/innovation/innovation_step1.rb @@ -184,7 +184,7 @@ def innovation_step1 textarea :major_issues_overcome, "Please explain any major issues that you have overcome in recent years and the remedial steps you have taken." do ref "A 2.2" - classes "sub-question" + classes "sub-question text-words-max" required context %(

For example, what steps did you take following a major Health and Safety incident.

diff --git a/forms/award_years/v2025/innovation/innovation_step2.rb b/forms/award_years/v2025/innovation/innovation_step2.rb index 0c7c6a44da..42e649da43 100644 --- a/forms/award_years/v2025/innovation/innovation_step2.rb +++ b/forms/award_years/v2025/innovation/innovation_step2.rb @@ -40,7 +40,7 @@ def innovation_step2 end textarea :invoicing_unit_relations, "Explain your relationship with the invoicing unit and the arrangements made." do - classes "sub-question" + classes "sub-question text-words-max" sub_ref "B 2.1" required conditional :principal_business, :no @@ -347,7 +347,7 @@ def innovation_step2 end textarea :other_awards_desc, "List the awards you have won in the past." do - classes "sub-question" + classes "sub-question text-words-max" sub_ref "B 13.1" required context "

If you can't fit all of your awards below, then choose those you're most proud of.

" diff --git a/forms/award_years/v2025/innovation/innovation_step3.rb b/forms/award_years/v2025/innovation/innovation_step3.rb index 6fa436ae33..ee941cbc4c 100644 --- a/forms/award_years/v2025/innovation/innovation_step3.rb +++ b/forms/award_years/v2025/innovation/innovation_step3.rb @@ -36,7 +36,7 @@ def innovation_step3 textarea :innovation_desc_short, "Provide a one-line description of your innovative product, service, business model or process." do sub_section :innovation_background_header - classes "sub-question word-max-strict" + classes "sub-question word-max-strict text-words-max" sub_ref "C 1.2" required context %( @@ -105,7 +105,7 @@ def innovation_step3 textarea :innovation_hold_existing_patent_details, "Provide a link to your published patent document. If you do not have a patent, please explain the reasons why not." do sub_section :innovation_background_header - classes "sub-question word-max-strict" + classes "sub-question word-max-strict text-words-max" sub_ref "C 1.4.1" required context %( @@ -133,7 +133,7 @@ def innovation_step3 textarea :innovation_other_countries_it_was_developed, "Describe in what other countries and, if applicable, by what parties it was developed." do sub_section :innovation_background_header - classes "sub-question word-max-strict" + classes "sub-question word-max-strict text-words-max" sub_ref "C 1.5.1" required conditional :innovation_conceived_and_developed, :no @@ -161,7 +161,7 @@ def innovation_step3 textarea :innovation_contributors, "Please enter their names." do sub_section :innovation_background_header - classes "sub-question word-max-strict" + classes "sub-question word-max-strict text-words-max" sub_ref "C 1.6.1" required conditional :innovation_joint_contributors, :yes @@ -184,7 +184,7 @@ def innovation_step3 textarea :innovation_external_contributors, "Name any external organisations or individuals that contributed to your innovation and explain their contributions." do sub_section :innovation_background_header - classes "sub-question word-max-strict" + classes "sub-question word-max-strict text-words-max" sub_ref "C 1.7.1" required conditional :innovation_any_contributors, :yes @@ -215,7 +215,7 @@ def innovation_step3 textarea :innovation_contributors_why_organisations, "Explain why external organisations or individuals that contributed to your innovation are not all aware of this application." do sub_section :innovation_background_header - classes "sub-question word-max-strict" + classes "sub-question word-max-strict text-words-max" sub_ref "C 1.7.3" required conditional :innovation_any_contributors, :yes @@ -234,7 +234,7 @@ def innovation_step3 textarea :innovation_license_terms, "Briefly describe the licensing arrangement." do sub_section :innovation_background_header - classes "sub-question word-max-strict" + classes "sub-question word-max-strict text-words-max" sub_ref "C 1.8.1" required conditional :innovation_under_license, :yes @@ -278,7 +278,7 @@ def innovation_step3 textarea :innovation_context, "Describe the market conditions that led to the creation of your innovation and how you identified a gap in the market." do sub_section :innovation_timeline_header - classes "sub-question word-max-strict" + classes "sub-question word-max-strict text-words-max" sub_ref "C 2.3" required context %( @@ -292,7 +292,7 @@ def innovation_step3 textarea :innovation_desc_long, "Describe your innovation and why it is innovative." do sub_section :innovation_timeline_header - classes "sub-question word-max-strict" + classes "sub-question word-max-strict text-words-max" sub_ref "C 2.4" required context %( @@ -343,7 +343,7 @@ def innovation_step3 textarea :innovation_selection_details, "How did you select this innovation as the one to satisfy the gap in the market?" do sub_section :innovation_timeline_header - classes "sub-question word-max-strict" + classes "sub-question word-max-strict text-words-max" sub_ref "C 2.5" required context %( @@ -357,7 +357,7 @@ def innovation_step3 textarea :innovation_overcomes_issues, "Describe any challenges you encountered in developing your innovation and how you overcame them." do sub_section :innovation_timeline_header - classes "sub-question word-max-strict" + classes "sub-question word-max-strict text-words-max" sub_ref "C 2.6" required context %( @@ -371,7 +371,7 @@ def innovation_step3 textarea :innovation_strategies, "Explain the market opportunities and what strategies you used to penetrate the market." do sub_section :innovation_timeline_header - classes "sub-question word-max-strict" + classes "sub-question word-max-strict text-words-max" sub_ref "C 2.7" required context %( @@ -385,7 +385,7 @@ def innovation_step3 textarea :innovation_competitors, "Who offers products, services or business models that compete with yours?" do sub_section :innovation_timeline_header - classes "sub-question word-max-strict" + classes "sub-question word-max-strict text-words-max" sub_ref "C 2.8" required context %( @@ -399,7 +399,7 @@ def innovation_step3 textarea :innovation_protect_market_position_details, "How might you protect the market position you have created?" do sub_section :innovation_timeline_header - classes "sub-question word-max-strict" + classes "sub-question word-max-strict text-words-max" sub_ref "C 2.9" required context %( @@ -413,7 +413,7 @@ def innovation_step3 textarea :innovation_additional_comments, "Additional comments (optional)" do sub_section :innovation_timeline_header - classes "sub-question word-max-strict" + classes "sub-question word-max-strict text-words-max" sub_ref "C 2.10" context %(

@@ -451,7 +451,7 @@ def innovation_step3 textarea :innovation_befits_details_business, "How has the innovation added value to your business?" do sub_section :innovation_value_add_header - classes "sub-question word-max-strict" + classes "sub-question word-max-strict text-words-max" sub_ref "C 3.1" required context %( @@ -506,7 +506,7 @@ def innovation_step3 textarea :innovation_befits_details_customers, "Does the innovation benefit your customers, and if so, how?" do sub_section :innovation_value_add_header - classes "sub-question word-max-strict" + classes "sub-question word-max-strict text-words-max" sub_ref "C 3.2" required context %( @@ -552,7 +552,7 @@ def innovation_step3 textarea :beyond_your_immediate_customers, "Beyond your immediate customers, does the innovation benefit others, and if so, how and to whom?" do sub_section :innovation_value_add_header - classes "sub-question word-max-strict" + classes "sub-question word-max-strict text-words-max" sub_ref "C 3.3" required context %( diff --git a/forms/award_years/v2025/innovation/innovation_step4.rb b/forms/award_years/v2025/innovation/innovation_step4.rb index ff5f4178c2..61da144c7d 100644 --- a/forms/award_years/v2025/innovation/innovation_step4.rb +++ b/forms/award_years/v2025/innovation/innovation_step4.rb @@ -55,7 +55,7 @@ def innovation_step4 end textarea :adjustments_explanation, "Explain adjustments to figures." do - classes "sub-question" + classes "sub-question text-words-max" sub_ref "D 2.2" required rows 2 @@ -72,7 +72,7 @@ def innovation_step4 end textarea :financial_year_date_changed_explaination, "Explain why your year-end date changed." do - classes "sub-question" + classes "sub-question text-words-max" sub_ref "D 2.3" required rows 1 @@ -203,7 +203,7 @@ def innovation_step4 end textarea :drops_in_turnover, "Explain any losses, drops in the total turnover, export sales, total net assets or reductions in net profit." do - classes "sub-question" + classes "sub-question text-words-max" sub_ref "D 4.6" required rows 3 @@ -219,7 +219,7 @@ def innovation_step4 end textarea :drops_explain_how_your_business_is_financially_viable, "Explain how your business is financially viable in terms of cash flow, cash generated, and investment received." do - classes "sub-question" + classes "sub-question text-words-max" sub_ref "D 4.7" required context %( @@ -235,7 +235,7 @@ def innovation_step4 end textarea :investments_details, "Enter details of all your investments in the innovation. Include all investments made both during and before your entry period. Also, include the years in which they were made." do - classes "sub-question" + classes "sub-question text-words-max" sub_ref "D 4.8" required rows 3 @@ -248,7 +248,7 @@ def innovation_step4 end textarea :roi_details, "Please provide calculations on how you have recovered or will recover the investments outlined in question D4.8. How long did it take or will it take to recover the investments?" do - classes "sub-question" + classes "sub-question text-words-max" sub_ref "D 4.9" required rows 3 @@ -372,7 +372,7 @@ def innovation_step4 end textarea :drops_in_sales, "Explain any drop in sales or the number of units sold (if applicable)." do - classes "sub-question" + classes "sub-question text-words-max" sub_ref "D 6.5" section :innovation_financials rows 2 @@ -400,7 +400,7 @@ def innovation_step4 end textarea :avg_unit_price_desc, "Explain your unit selling prices or contract values, highlighting any changes over the above periods (if applicable)." do - classes "sub-question" + classes "sub-question text-words-max" sub_ref "D 6.7" section :innovation_financials rows 2 @@ -425,7 +425,7 @@ def innovation_step4 end textarea :costs_change_desc, "Explain your direct unit or contract costs, highlighting any changes over the above periods (if applicable)." do - classes "sub-question" + classes "sub-question text-words-max" sub_ref "D 6.9" section :innovation_financials rows 2 @@ -439,6 +439,7 @@ def innovation_step4 textarea :innovation_performance, "Describe how, when, and to what extent the innovation has improved the commercial performance of your business." do ref "D 7" + classes "text-words-max" required context %(

@@ -476,6 +477,7 @@ def innovation_step4 textarea :covid_impact_details, "Explain how your business has been responding to the economic uncertainty experienced nationally and globally in recent years." do ref "D 8" + classes "text-words-max" required context %(