diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e5d5c8f6fb5a91f14b059a96b7a2ab9c260ea1d..bc365940e5a9b23c15cbc52f2be5d80276b42d38 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Added academic periods and levels to job offers. @toberhuber - Added filtering by academic periods. @toberhuber +- Aria labels to all buttons/links used as buttons. @toberhuber - Show salary scale on search people page @dsavvidi - Add academic period filters to application exports @toberhuber - Add support for multiple program selection when exporting applications @toberhuber @@ -32,6 +33,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed ### Fixed +- Made all text dynamic instead of hard-coded. @toberhuber - Exporting contract requests now has batches. @rwbackx - Toggling state now saved on Job Offers Page for Students @dsavvidi - Retracting a contract request gave a constraint violation exception @dsavvidi diff --git a/src/main/resources/email/html/application_offered.html b/src/main/resources/email/html/application_offered.html index 2cff7fe167715e2615f5956cf48b1228ca94de35..f9be7e12201a874f0c708f2d419ff4e008b62835 100644 --- a/src/main/resources/email/html/application_offered.html +++ b/src/main/resources/email/html/application_offered.html @@ -26,21 +26,19 @@ <body> <div> - <!-- <div>--> - <!-- <h1 style="color: #00a6d6; font-size: 2em" th:text="#{general.app_name}"></h1>--> - <!-- </div>--> <div style="width: 100%; background-color: #00a8db"> <a th:href="#{general.app_url}" style="text-decoration: none"> <img th:src="|#{general.app_url}/img/tudelft_logo.png|" style="height: 40px; padding-left: 0.2em" /> - <span style="color: white; font-size: 40px">| TAM</span> + <span + style="color: white; font-size: 40px" + th:text="#{email.applicationName}"></span> </a> </div> <div> <div style="padding: 0.5em 0"> - <!-- <h2 th:text="#{email.application.offered.title(${position})}"></h2>--> <p th:text="#{email.greeting(${name})}"></p> <p th:text="#{email.application.offered.message(${position}, ${course}, ${year})}"></p> diff --git a/src/main/resources/email/html/application_rejected.html b/src/main/resources/email/html/application_rejected.html index 1f2482bcde87dec3d2b78db944a91c102051d96c..b21660248e59396645bbb45996596c0ca17d5cf2 100644 --- a/src/main/resources/email/html/application_rejected.html +++ b/src/main/resources/email/html/application_rejected.html @@ -26,21 +26,19 @@ <body> <div> - <!-- <div>--> - <!-- <h1 style="color: #00a6d6; font-size: 2em" th:text="#{general.app_name}"></h1>--> - <!-- </div>--> <div style="width: 100%; background-color: #00a8db"> <a th:href="#{general.app_url}" style="text-decoration: none"> <img th:src="|#{general.app_url}/img/tudelft_logo.png|" style="height: 40px; padding-left: 0.2em" /> - <span style="color: white; font-size: 40px">| TAM</span> + <span + style="color: white; font-size: 40px" + th:text="#{email.applicationName}"></span> </a> </div> <div> <div style="padding: 0.5em 0"> - <!-- <h2 th:text="#{email.application.rejected.title}"></h2>--> <p th:text="#{email.greeting(${name})}"></p> <br /> <p diff --git a/src/main/resources/email/html/application_submitted.html b/src/main/resources/email/html/application_submitted.html index 60e88b9f49edc5485eee65f61ba4a8495d42ae3d..0e7e6fd3487e59a6ca344ed58562ecbe6e7e2bc1 100644 --- a/src/main/resources/email/html/application_submitted.html +++ b/src/main/resources/email/html/application_submitted.html @@ -26,21 +26,19 @@ <body> <div> - <!-- <div>--> - <!-- <h1 style="color: #00a6d6; font-size: 2em" th:text="#{general.app_name}"></h1>--> - <!-- </div>--> <div style="width: 100%; background-color: #00a8db"> <a th:href="#{general.app_url}" style="text-decoration: none"> <img th:src="|#{general.app_url}/img/tudelft_logo.png|" style="height: 40px; padding-left: 0.2em" /> - <span style="color: white; font-size: 40px">| TAM</span> + <span + style="color: white; font-size: 40px" + th:text="#{email.applicationName}"></span> </a> </div> <div> <div style="padding: 0.5em 0"> - <!-- <h2 th:text="#{email.application.submitted.title}"></h2>--> <p th:text="#{email.greeting(${name})}"></p> <p th:text="#{email.application.submitted.message(${position}, ${course}, ${year})}"></p> diff --git a/src/main/resources/email/html/declaration_approved.html b/src/main/resources/email/html/declaration_approved.html index 4e01c3aa4b49053443133795a1e92cccdc135a1d..df4823a86d0ef5c33e2ab0a8ba680a7d55a64a09 100644 --- a/src/main/resources/email/html/declaration_approved.html +++ b/src/main/resources/email/html/declaration_approved.html @@ -26,21 +26,19 @@ <body> <div> - <!-- <div>--> - <!-- <h1 style="color: #00a6d6; font-size: 2em" th:text="#{general.app_name}"></h1>--> - <!-- </div>--> <div style="width: 100%; background-color: #00a8db"> <a th:href="#{general.app_url}" style="text-decoration: none"> <img th:src="|#{general.app_url}/img/tudelft_logo.png|" style="height: 40px; padding-left: 0.2em" /> - <span style="color: white; font-size: 40px">| TAM</span> + <span + style="color: white; font-size: 40px" + th:text="#{email.applicationName}"></span> </a> </div> <div> <div style="padding: 0.5em 0"> - <!-- <h2 th:text="#{email.declaration.approved.title}"></h2>--> <p th:text="#{email.greeting(${name})}"></p> <p th:text="#{email.declaration.approved.message(${hours}, ${extraWork}, ${course}, ${year})}"></p> diff --git a/src/main/resources/email/html/declaration_rejected.html b/src/main/resources/email/html/declaration_rejected.html index a0bc173e6b19c4242db5e8b940b66359b6516d19..07edb04d0e8a62a97f60d315c8289b14eed123e1 100644 --- a/src/main/resources/email/html/declaration_rejected.html +++ b/src/main/resources/email/html/declaration_rejected.html @@ -26,21 +26,19 @@ <body> <div> - <!-- <div>--> - <!-- <h1 style="color: #00a6d6; font-size: 2em" th:text="#{general.app_name}"></h1>--> - <!-- </div>--> <div style="width: 100%; background-color: #00a8db"> <a th:href="#{general.app_url}" style="text-decoration: none"> <img th:src="|#{general.app_url}/img/tudelft_logo.png|" style="height: 40px; padding-left: 0.2em" /> - <span style="color: white; font-size: 40px">| TAM</span> + <span + style="color: white; font-size: 40px" + th:text="#{email.applicationName}"></span> </a> </div> <div> <div style="padding: 0.5em 0"> - <!-- <h2 th:text="#{email.declaration.rejected.title}"></h2>--> <p th:text="#{email.greeting(${name})}"></p> <p th:text="#{email.declaration.rejected.message(${hours}, ${extraWork}, ${course}, ${year})}"></p> diff --git a/src/main/resources/messages.properties b/src/main/resources/messages.properties index 6f30e5d6f2c824cd37ee9f492a8b3ad04ee7eea7..15b15137668929b414c963107861da506d15cbd5 100644 --- a/src/main/resources/messages.properties +++ b/src/main/resources/messages.properties @@ -15,12 +15,26 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see <https://www.gnu.org/licenses/>. # + +# General general.app_name = TAM +general.app_name.long = Teaching Assistant Management general.app_url = https://ta.ewi.tudelft.nl general.help_url = https://eip.pages.ewi.tudelft.nl/labrador/tam/tam -general.login = Log in general.privacy_statement = Privacy Statement general.error = Oops! Something went wrong :( +general.description = Description +general.date = Date +general.name = Name +general.name.enter = Enter Name... +general.actions = Actions +general.help = Need help? +general.loadingPlaceholder = Content goes here. +general.username = Username +general.password = Password +# General Actions +general.login = Log in +general.logout = Logout general.cancel = Cancel general.create = Create general.save = Save @@ -28,11 +42,6 @@ general.saveChanges = Save Changes general.submit = Submit general.yes = Yes general.no = No -general.actions = Actions -general.name = Name -general.name.enter = Enter Name... -general.description = Description -general.date = Date general.send = Send general.add = Add general.approve = Approve @@ -49,9 +58,35 @@ general.edit = Edit general.download = Download general.downloadTemplate = Download Template general.filter = Filter +general.viewPerson.ariaLabel = View the following person: {0} +general.expand = Expand Accordion +general.selectAll = Select All +# General Pagination +general.pagination = Pagination +general.pagination.previousPage = Previous Page +general.pagination.nextPage = Next Page +general.pagination.ellipsis = Ellipsis +general.pagination.page = Page + +# Homepage General +homepage.welcome = Welcome to TAM! To log in, click the button in the top right. +homepage.students = Students +homepage.students.message = As a student, you can sign up to become a teaching assistant and indicate your availability and willingness to assist courses. When your eligibility is approved you can be selected to assist a course. +homepage.teachers = Course Staff +homepage.teachers.message = As a lecturer, you can register your course and indicate the need for teaching assistants. An overview of interested students is provided, using which you can send job offers to the selected candidates. +homepage.why = Why become a TA? +homepage.why.one = You meet other excellent students from other years, studies, and specialties. +homepage.why.two = Working as a TA shows future employers that: +homepage.why.two.one = You have an even better understanding of the material, allowing you to explain material to others. +homepage.why.two.two = You are comfortable communicating with people. +homepage.why.three = You get the opportunity to network with staff from TU Delft, helping you find future projects (like a bachelor or master thesis, PhD, etc.). +homepage.why.four = You have a flexible work schedule that you can adapt to fit with your own study program. +homepage.why.five = You receive an hourly financial compensation for your work (see flexdelft.nl for more information). +# Course General course = Course +# Edition General edition = Edition edition.create = Create Edition edition.previous = Previous Editions @@ -65,26 +100,34 @@ edition.endDate = End Date edition.endDate.enter = Enter end date... (dd-mm-yyyy HH:mm) edition.endDate.tooltip = Enter a date after the last resit for this edition. edition.name.tooltip = Enter only the 'edition' part of the name, e.g. '23/24 Q1' -edition.enrollability = Enrollment Policy +edition.empty = No job offers or extra work created. +# Edition Enrollability +edition.enrollability = Enrolment Policy edition.enrollability.open = Open edition.enrollability.open_to_program = Open to Program edition.enrollability.closed = Closed (Manual Import) +# Profile General profile = Your Profile +profile.short = Profile +# Profile Training profile.training = TA Training profile.training.complete = Completed profile.training.complete.number = {0} Training(s) Completed profile.training.complete.none = No trainings completed yet, you should get an invitation to one as soon as you've been hired for your first TA position! profile.training.details = TA Training Details profile.training.details.action = View Training Details +# Profile PayScale profile.payscale = Payscale profile.payscale.update = Request higher payscale profile.undetermined = Not Determined +# Profile Polo profile.polo = Polo profile.polo.update = Change polo preference profile.polo.size = Polo Size profile.polo.gender = Polo Gender profile.polo.edit = Edit Polo Preferences +# Profile Notifications profile.notifications = Notifications profile.notifications.update = Change notification preferences profile.notifications.emailOn = Emails Enabled @@ -92,9 +135,11 @@ profile.notifications.emailOff = Emails Disabled profile.notifications.edit = Edit Notification Preferences profile.notifications.email = Email Notifications profile.notifications.frequency = Email Frequency +# Profile Experience profile.experience = Experience (as known to TAM) profile.noExperience = No previous recorded TA experience. (This person might have been a TA before, but TAM does not know about it.) +# Job Offer General jobOffer = Job Offer jobOffer.many = Job Offers jobOffer.search = Course / Position ... @@ -147,29 +192,53 @@ jobOffer.import.info.editionCreate.columnOrder = Cohort Name, Program Name, Edit jobOffer.import.missingEditions = Missing Editions jobOffer.import.missingEditions.desc = Some of the editions you are trying to create job offers for do not exist yet. Select the editions you wish to create below. jobOffer.deadline = Deadline For Applying -jobOffer.draft = Make Draft jobOffer.deadline.none = No Deadline jobOffer.deadline.closed = Closed jobOffer.date.enter = Enter a deadline... -jobOffer.name.enter = Enter a name (eg: TA, Mentor, ...) +jobOffer.name.enter = Enter a name (e.g.: TA, Mentor, ...) jobOffer.username.enter = Enter the exact username... jobOffer.studentNumber.enter = Enter the exact student number... jobOffer.studentName.enter = Enter the student's name... (CaSe SenSitIve) -jobOffer.description.enter = Enter a description (eg: TA, Mentor, ...) +jobOffer.description.enter = Enter a description (e.g.: TA, Mentor, ...) jobOffer.descriptionMessage = Job Information jobOffer.descriptionMessage.view = View Job Information jobOffer.descriptionMessage.enter = A message that a student sees before applying... (markdown supported) jobOffer.hiringMessage = Hiring Message jobOffer.hiringMessage.blank = Currently no hiring message configured. jobOffer.hiringMessage.enter = An optional message that a student will see after receiving the offer... +jobOffer.hiringMessage.edit = Edit Hiring Message +jobOffer.hiringMessage.add = Add Hiring Message +jobOffer.hiringMessage.view = View hiring message jobOffer.rejectMessage = Rejection Message jobOffer.rejectMessage.enter = An optional message that a rejected student will see... jobOffer.rejectMessage.view = View rejection message jobOffer.rejectMessage.alert = Rejection message has not been altered or is empty! -jobOffer.hiringMessage.edit = Edit Hiring Message -jobOffer.hiringMessage.add = Add Hiring Message -jobOffer.hiringMessage.view = View hiring message jobOffer.details = Job Offer Details +jobOffer.empty = No Open Job Offers +jobOffer.empty.description = There are currently no open job offers. Come back later to see if there is something new. +jobOffer.before = TAed Before +jobOffer.queueFeedback = Queue Feedback +jobOffer.queueFeedback.view = View feedback +jobOffer.selectProgram = Select a programme to view job offers. +jobOffer.viewDetails = View offer +jobOffer.response = Response +jobOffer.requireResponse = Require response to job information +jobOffer.responseRequired = This job offer requires a response to the above information. +jobOffer.providesInformation = This job offer provides the following information: +jobOffer.providesNoInformation = This job offer provides no additional information. +jobOffer.noResults.description = No job offers matching your search found. +jobOffer.messages = Messages +jobOffer.information Job Information +# Job Offer Import +jobOffer.import = Import Job Offers +jobOffer.import.successful = Successfully imported {0} job offer(s). +jobOffer.import.info = Import bulk job offers via a CSV file. The first line is considered as headers and will not be read. Each job offer should be a separate row, with the following columns in this order: +jobOffer.import.info.columnOrder = Edition Name, Course Code, Job Offer Description, Contract Name, Contract Start Date, Contract End Date, Contract Baan Code, Max Hours, Job Information, Require Response to Job Information (yes/no), Hiring Message, Rejection Message, Application Deadline +jobOffer.import.info.editionCreate = If you want to create non-existing/new editions, add the following columns in this order: +jobOffer.import.info.editionCreate.columnOrder = Cohort Name, Program Name, Edition Start Date, Edition End Date +jobOffer.import.missingEditions = Missing Editions +jobOffer.import.missingEditions.desc = Some of the editions you are trying to create job offers for do not exist yet. Select the editions you wish to create below. +# Job Offer Actions jobOffer.edit = Edit Job Offer jobOffer.closeDeadline = Close New Applications jobOffer.closeDeadline.desc = Are you sure you want to close new applications? No other people will be able to apply to this job offer anymore. @@ -181,14 +250,36 @@ jobOffer.rejectAll.desc = Are you sure you want to reject all open applications? jobOffer.rejectSelected.desc = Are you sure you want to reject all selected applications? jobOffer.addOffer = Offer Positions jobOffer.addOffer.desc = Search for student(s) using their NetID, student number, or name, with each separate student on a new line. -jobOffer.addOffer.notFound = No students matching this query found. Try checking the capitalization since the search is CaSe SenSitIve. +jobOffer.addOffer.notFound = No students matching this query found. Try checking the capitalisation since the search is CaSe SenSitIve. jobOffer.addOffer.confirm = Confirm Offering to All jobOffer.addOffer.confirm.desc = Are you sure you would like to offer a position to the following people: -jobOffer.empty = No Open Job Offers jobOffer.hide = Hide Offer jobOffer.hide.info = This job offer is hidden. It cannot be seen by students. If this job offer should not be hidden, you can make it visible by pressing 'Publish Offer' below. jobOffer.show = Publish Offer -jobOffer.empty.description = There are currently no open job offers. Come back later to see if there is something new. +jobOffer.apply = Apply +jobOffer.accept = Accept +jobOffer.reject = Reject +jobOffer.promote = Promote +jobOffer.promote.confirm = Confirm Promotion +jobOffer.promote.confirm.desc = Are you sure you would like to promote the following people: +jobOffer.demote = Demote +jobOffer.demote.confirm = Confirm Demote +jobOffer.demote.confirm.desc = Are you sure you would like to demote the following people: +jobOffer.reject.confirm = Confirm Rejection +jobOffer.reject.confirm.desc = Are you sure you would like to reject the following people: +jobOffer.offer = Send Offer +jobOffer.offer.confirm = Confirm Offer +jobOffer.offer.confirm.desc = Are you sure you would like to offer a position to the following people: +jobOffer.offerToAll = Send Offer to All +jobOffer.offerToSelected = Send Offers to Selected +jobOffer.retract = Retract +jobOffer.retract.confirm = Confirm Retraction +jobOffer.retract.confirm.desc = Are you sure you would like to retract your application for the following positions: +jobOffer.add = New Job Offer +jobOffer.draft = Make Draft +jobOffer.includeJobOffer = Include Job Offer +jobOffer.viewJobOffersFor = View job offers for: +# Job Offer Export jobOffer.export = Export Applications jobOffer.export.FlexDelft = FlexDelft Export jobOffer.export.updatedSince = Updated Since @@ -227,6 +318,7 @@ jobOffer.academicLevel.MASTER2 = Master 2 jobOffer.academicLevel.MINOR = Minor jobOffer.academicLevel.OTHER = Other +# Application General application.all = All Applications application.my = My Applications application.many = Applications @@ -235,24 +327,30 @@ application.applied = Applied application.empty = Currently no applications. Try applying to some positions. application.empty.staff = Currently no applications to review. application.search = Course / Position / Status … +application.search.ariaLabel = Search course, status, or position +# Application Manager application.manager.search = Person / Status … application.number.submitted = # of applications application.number.offered = # of offers application.number.accepted = # of accepted +# Application Status application.status.open = Open application.status.submitted = Applied application.status.offered = Offered application.status.accepted = Accepted application.status.rejected = Rejected +# Application Response application.content = Response application.noContent = No response application.enterContent = Enter response application.viewContent = View response +# Role General role = Role role.ta = TA role.head_ta = Head TA +# Extra Work General extraWork = Contract Request extraWork.many = Contract Requests extraWork.description = Work Description @@ -273,23 +371,22 @@ extraWork.reason = Explanation of Hours Worked extraWork.reason.short = Explanation extraWork.reason.view = View Explanation extraWork.status = Status -extraWork.retract = Retract -extraWork.retract.confirm = Confirm Retraction -extraWork.retract.confirm.desc = Are you sure you would like to retract your contract requests for the following extra work: extraWork.search = Course / Position ... +extraWork.deadline = Deadline For Contract Requests +extraWork.deadline.none = No Deadline +extraWork.deadline.closed = Closed +extraWork.date.enter = Enter a deadline... +extraWork.description.enter = Enter a description (e.g.: Grading, Oral checks, …) +extraWork.details = Extra Work Details extraWork.empty = No Contract Requests Available extraWork.empty.description = There is currently no open extra work. Come back later to see if there is something new. extraWork.add = New Extra Work +# Extra Work Imports extraWork.import = Import Extra Work extraWork.import.info = Import bulk extra work via a file (CSV, XLSX). The first line is considered as headers and will not be read. Each extra work offer should be a separate row, with the following columns in this order: extraWork.import.info.columnOrder = Edition Name, Course Code, Work Name, Contract Name, Contract Baan Code, Max Hours, Contract Request Deadline extraWork.import.info.downloadTemplate = Download Template -extraWork.deadline = Deadline For Contract Requests -extraWork.deadline.none = No Deadline -extraWork.deadline.closed = Closed -extraWork.date.enter = Enter a deadline... -extraWork.description.enter = Enter a description (eg: Grading, Oral checks, …) -extraWork.details = Extra Work Details +# Extra Work Actions extraWork.edit = Edit Extra Work extraWork.approve = Approve extraWork.approve.confirm = Confirm Approval @@ -303,9 +400,14 @@ extraWork.rejectAll = Reject All Open Contract Requests extraWork.rejectAll.desc = Are you sure you want to reject all contract requests? All contract requests that have not been approved yet, will be rejected. extraWork.approveAll = Approve All Open Contract Requests extraWork.approveAll.desc = Are you sure you want to approve all contract requests? All contract requests that have not been approved or rejected, will be approved. +extraWork.retract = Retract +extraWork.retract.confirm = Confirm Retraction +extraWork.retract.confirm.desc = Are you sure you would like to retract your contract requests for the following extra work: +# Extra Work Exports extraWork.export = Export Contract Requests extraWork.export.FlexDelft = FlexDelft Export +# Declaration General declaration.all = All Contract Requests declaration.my = My Contract Requests declaration.many = Contract Requests @@ -316,15 +418,18 @@ declaration.empty.staff = Currently no submitted contract requests to review. declaration.search = Course / Description / Status … declaration.manager.search = Person / Status … declaration.number.submitted = # of contract requests +# Declaration Hours declaration.hours.submitted = total declared time declaration.hours.accepted = total approved time declaration.hours.worked = Time Worked declaration.hours.reason = Explanation of Hours Worked declaration.hours.reason.short = Explanation +# Declaration Errors declaration.error.zeroTime = You cannot declare a time of 00:00. declaration.error.remainingTime = Time declared must not be greater than time remaining. declaration.error.reason = Please provide an explanation for your declared hours. It should be between 10 - 140 characters. +# Status Job Offer status.jobOffer.submitted = Submitted status.jobOffer.rejected_by_student = Offer Rejected status.jobOffer.rejected_by_teacher = Rejected @@ -332,22 +437,26 @@ status.jobOffer.offered = Offered status.jobOffer.accepted = Accepted status.jobOffer.promoted = Promoted +# Status Extra Work status.extraWork.submitted = Submitted status.extraWork.rejected_by_student = Retracted status.extraWork.rejected_by_teacher = Rejected status.extraWork.accepted = Approved +# Manager General manager.portal = Manager Portal manager.empty = Currently no managed courses. manager.managed = Managed Courses manager.coordinator = Coordinating Courses +# Person General person.select = Select person.name = Full Name person.username = NetID person.number = Student Number person.email = Email Address +# Profile Raise Requests profile.raiseRequest.create = Edit Pay Scale profile.raiseRequest.info = You can submit a request for a change in your pay scale, choose the new pay scale and \ provide proof you are eligible for the corresponding pay scale. To get the proof to download the pdf file with your \ @@ -365,8 +474,12 @@ profile.raiseRequest.open.text = The raise request is being processed by the sta profile.raiseRequest.retract = Retract profile.raiseRequest.fileProof = File Proof +# Raise Requests General raiseRequest.view = View proof +raiseRequest.error = Cannot display PDF. +raiseRequest.error.alternative = Download Instead. +# PayScale General payscale = PayScale payscale.requests = Raise Requests payscale.pending = Pending Raise Requests @@ -376,9 +489,10 @@ payscale.current = Current PayScale payscale.requested = Requested PayScale payscale.proof = Proof payscale.download = Download +# PayScale Import payscale.import = Bulk Import payscale.import.desc = Search for student(s) using their NetID, student number, or name, with each separate student on a new line. -payscale.import.notFound = No students matching this query found. Try checking the capitalization since the search is CaSe SenSitIve. +payscale.import.notFound = No students matching this query found. Try checking the capitalisation since the search is CaSe SenSitIve. payscale.import.search.people = NetID(s) / Student Number(s) / Name(s) ... payscale.import.search.people.label = Search for Students: payscale.import.all = Import All PayScales @@ -390,6 +504,7 @@ payscale.import.conflict.lower = New PayScale Lower payscale.import.conflict.overwrite = Overwrite payscale.import.conflict.ignore = Ignore Conflicts & Close +# Training Types training.type.name = Created Training Types training.type.name.label = Name of Training training.type.name.enter = Enter the name of the new training type... @@ -397,16 +512,18 @@ training.type.create = Create a New Training Type training.type.edit = Edit Training Type training.type.remove = Delete Training Type training.type.remove.desc = Are you sure you would like to delete "{0}"? This will also delete all records of which students have already completed this training. +# Training General training.name.long = TA Training training.name = Training training.datePassed = Date of Completion +# Training Import training.import = Import TA Training training.import.file = Import TA Training from File training.import.file.info = Import bulk training via a file (CSV, XLSX). Each training approval should be a separate row, with the following columns in this order: training.import.file.info.columnOrder = Assistant Student Number, Training Type, Date of Completion (DD-MM-YYYY) training.import.file.successful = Successfully imported {0} training approval(s). training.import.desc = Search for student(s) using their NetID, student number, or name, with each separate student on a new line. -training.import.notFound = No students matching this query found. Try checking the capitalization since the search is CaSe SenSitIve. +training.import.notFound = No students matching this query found. Try checking the capitalisation since the search is CaSe SenSitIve. training.import.search.people = NetID(s) / Student Number(s) / Name(s) ... training.import.search.people.label = Search for Students training.import.all = Import Training for All @@ -417,26 +534,30 @@ training.import.trainingType = Type of Training (Applied to All) training.import.trainingType.enter = Select the type of training for all students... training.import.success.title = Successfully Imported Training training.import.success.desc = Successfully imported training for student(s)! +training.import.error = Error(s) at line +training.import.warning = Warning(s) at line +# Coordinator General coordinator = Coordinator coordinators = Coordinators coordinator.manage = Manage Programmes coordinator.program = Programme coordinator.search = Programme... +coordinator.search.ariaLabel = Coordinator Program Search coordinator.empty = Sadly, you are not a coordinator for any programmes (yet?) coordinator.enterUsernames = Enter the NetIDs of the TA coordinators -# Training +# Coordinator Training coordinator.training = TA Training coordinator.training.empty = No TA trainings have been created. Try adding one! -# Defaults +# Coordinator Defaults coordinator.defaults = Programme Defaults coordinator.defaults.general = General -# Defaults - General +# Coordinator Defaults - General coordinator.defaults.coordinatorContractName = Coordinator Contract Name coordinator.defaults.coordinatorContractName.enter = Enter the coordinator name for contracts... coordinator.defaults.coordinatorContractEmail = Coordinator Contract Email coordinator.defaults.coordinatorContractEmail.enter = Enter the coordinator's email for contracts... -# Defaults - Job Offers / Extra Work +# Coordinator Defaults - Job Offers / Extra Work coordinator.defaults.contractName = Contract Name coordinator.defaults.contractBaan = Baan Code coordinator.defaults.contractStartDate = Contract Start Date @@ -446,13 +567,16 @@ coordinator.defaults.declarationDeadline = Contract Request Deadline coordinator.defaults.description = Job Information coordinator.defaults.hiringMessage = Hiring Message coordinator.defaults.rejectMessage = Rejection Message +coordinator.defaults.advertiseTo = Advertise to +# Emails General +email.applicationName = | TAM email.greeting = Dear {0}, email.closing = Best Regards, email.closing.person = TAM email.notificationPreferences = To change your email notification preferences, please visit email.notificationPreferences.here = here. -email.application.submitted.title = Application Successfully Submitted! +# Emails Applications email.application.submitted.message = Thank you for applying for the {0} position in the {1} ({2}) course! We have received your application in good order. email.application.offered.title = Action Required: Offered {0} Position! email.application.offered.message = You have been offered the {0} position in the {1} ({2}) course! Please accept or reject the offer as soon as possible. @@ -472,9 +596,11 @@ email.application.rejected.message = Thanks for applying as a {0} for {1} ({2}). \n \n Thank you for your interest, and we hope to see you again in the next application round! \ \n \n Best regards,\n {3}. email.application.rejected.rejectionMessage = The following message was provided by the course staff: +# Emails Declarations email.declaration.rejected.title = Contract Request Rejected email.declaration.rejected.message = Sadly, your contract request of {0} hours for {1} in the {2} ({3}) course was rejected. For more information, please contact the course staff. email.declaration.approved.title = Contract Request Approved email.declaration.approved.message = Your contract request of {0} hours for {1} in the {2} ({3}) course was approved! You will be able to declare these hours in FlexDelft soon. For more information, please contact the course staff. -search.people = Search people \ No newline at end of file +# Searching +search.people = Search people diff --git a/src/main/resources/templates/application/all.html b/src/main/resources/templates/application/all.html index 5fc1db6b78b0c5b5f11f3fd1b814b39b3b66315b..3dc6b953b2c6f8af2bbd6978c098317eb441040d 100644 --- a/src/main/resources/templates/application/all.html +++ b/src/main/resources/templates/application/all.html @@ -126,6 +126,7 @@ <button type="submit" class="button" + th:aria-label="#{jobOffer.export.FlexDelft}" th:text="#{jobOffer.export.FlexDelft}"></button> </div> </form> @@ -160,7 +161,9 @@ type="submit" class="button" data-style="outlined" - th:text="#{jobOffer.export}"></button> + th:aria-label="#{jobOffer.export}" + th:href="@{/application/export}" + th:text="#{jobOffer.export}"></a> </div> </form> diff --git a/src/main/resources/templates/application/view_many.html b/src/main/resources/templates/application/view_many.html index 639c2c51b2feed72242be0933923621b076e1f86..06fce353e6ca31a921dd0363edaafb1ed1f150d0 100644 --- a/src/main/resources/templates/application/view_many.html +++ b/src/main/resources/templates/application/view_many.html @@ -46,12 +46,14 @@ id="offers-tab" role="tab" aria-selected="false" + th:aria-label="#{jobOffer.many}" th:href="@{/job-offer/open}" th:text="#{jobOffer.many}"></a> <a id="applications-tab" role="tab" aria-selected="true" + th:aria-label="#{application.my}" th:href="@{/application/my}" th:text="#{application.my}"></a> </div> @@ -61,11 +63,14 @@ <input name="q" class="search_field" - aria-label="Search course, status, or position" + th:aria-label="#{application.search.ariaLabel}" type="search" th:value="${param.q}" th:placeholder="#{application.search}" /> - <button type="submit" class="fa-solid fa-search"></button> + <button + type="submit" + class="fa-solid fa-search" + th:aria-label="#{general.search}"></button> </form> </div> @@ -99,12 +104,14 @@ class="button p-min" data-style="outlined" th:data-dialog="|view-hiring-message-overlay-${app.jobOfferId}|" + th:aria-label="#{jobOffer.hiringMessage.view}" th:text="#{jobOffer.hiringMessage.view}"></button> <button th:if="${status == 'REJECTED_BY_TEACHER' && !(offer.rejectMessage == null || offer.rejectMessage.isEmpty())}" class="button p-min" data-style="outlined" th:data-dialog="|view-reject-message-overlay-${app.jobOfferId}|" + th:aria-label="#{jobOffer.rejectMessage.view}" th:text="#{jobOffer.rejectMessage.view}"></button> <form th:id="${'acceptForm' + app.jobOfferId}" @@ -121,6 +128,7 @@ type="submit" class="button p-min" data-type="accept" + th:aria-label="#{jobOffer.accept}" th:text="#{jobOffer.accept}"></button> </form> <div th:unless="${app.status.handled()}"> @@ -128,6 +136,7 @@ type="submit" class="button p-min" data-type="error" + th:aria-label="#{|${(status == 'OFFERED') ? 'jobOffer.reject' : 'jobOffer.retract'}|}" th:text="#{|${(status == 'OFFERED') ? 'jobOffer.reject' : 'jobOffer.retract'}|}" th:data-dialog="|confirm-retract-my-app-page-${app.jobOfferId}-overlay|"></button> <div diff --git a/src/main/resources/templates/application/view_response.html b/src/main/resources/templates/application/view_response.html index a64da78b00497a05cb5f98a56c299d847d18a8af..f07b2e693b93ab59389472f9aeab5ac66d95dd05 100644 --- a/src/main/resources/templates/application/view_response.html +++ b/src/main/resources/templates/application/view_response.html @@ -41,6 +41,7 @@ type="button" class="button p-less" data-cancel + th:aria-label="#{general.close}" th:text="#{general.close}"></button> </div> </div> diff --git a/src/main/resources/templates/container.html b/src/main/resources/templates/container.html index 794772e4e0b4194db737d6ee88654b109d9db9cc..b7f7a88eade41c786060a7be0712ac4d6c428f77 100644 --- a/src/main/resources/templates/container.html +++ b/src/main/resources/templates/container.html @@ -30,7 +30,7 @@ </header> <div class="content-wrapper"> <div class="content"> - <main layout:fragment="content">Content goes here.</main> + <main layout:fragment="content" th:text="#{general.loadingPlaceholder}"></main> </div> </div> <footer class="footer-wrapper"> diff --git a/src/main/resources/templates/coordinator/confirm_training_type_removal.html b/src/main/resources/templates/coordinator/confirm_training_type_removal.html index a12595c9b120553808c3270729bec8fcf80c8655..f5b9d1b86111af8223ae542e77afecf201e1d8e1 100644 --- a/src/main/resources/templates/coordinator/confirm_training_type_removal.html +++ b/src/main/resources/templates/coordinator/confirm_training_type_removal.html @@ -44,12 +44,14 @@ type="button" class="button p-less" data-style="outlined" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> <button type="submit" class="button p-less" data-type="error" + th:aria-label="#{general.yes}" th:text="#{general.yes}" th:form="|remove-training-type-${type.getId()}-form|"></button> </div> diff --git a/src/main/resources/templates/coordinator/create_training_type.html b/src/main/resources/templates/coordinator/create_training_type.html index a35119508a2eacaabea3964a725a6971bd788c78..629a0bd4a506c7f6d504581f6c32507ef864abc5 100644 --- a/src/main/resources/templates/coordinator/create_training_type.html +++ b/src/main/resources/templates/coordinator/create_training_type.html @@ -53,11 +53,13 @@ type="button" class="button p-less" data-style="outlined" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> <button type="submit" class="button p-less" + th:aria-label="#{general.submit}" th:text="#{general.submit}"></button> </div> </form> diff --git a/src/main/resources/templates/coordinator/defaults.html b/src/main/resources/templates/coordinator/defaults.html index fd3ef4abcccd7be476aea4c88d61f97a89d607ca..3ff0f88122941ca0ef20158ee7e87d3114f75751 100644 --- a/src/main/resources/templates/coordinator/defaults.html +++ b/src/main/resources/templates/coordinator/defaults.html @@ -44,6 +44,7 @@ type="submit" class="button" th:form="patch-form" + th:aria-label="#{general.saveChanges}" th:text="#{general.saveChanges}"></button> </div> @@ -241,7 +242,10 @@ class="textfield" /> </div> <div class="flex vertical gap-5 align-start"> - <h3 id="advertise-to" class="font-400">Advertise to</h3> + <h3 + id="advertise-to" + class="font-400" + th:text="#{coordinator.defaults.advertiseTo}"></h3> <div id="add-ad-div" class="flex gap-3" @@ -262,6 +266,7 @@ id="add-ad" class="button p-less" data-style="outlined" + th:aria-label="#{general.add}" th:text="#{general.add}" disabled></button> </div> @@ -272,6 +277,7 @@ class="button p-min" data-style="outlined" disabled + th:aria-label="#{general.remove}" th:text="#{general.remove}"></button> </li> <li th:each="program : ${advertised}" class="flex align-center gap-5 p-3"> @@ -280,6 +286,7 @@ class="button p-min" data-style="outlined" data-type="error" + th:aria-label="#{general.remove}" th:text="#{general.remove}" th:data-remove-ad="${program.id}"></button> </li> diff --git a/src/main/resources/templates/coordinator/edit_training_type.html b/src/main/resources/templates/coordinator/edit_training_type.html index aad753cd36199321019db503b23bd73ae2310f64..cef155ea0837d0b05322110c46a0de9e5301e7b9 100644 --- a/src/main/resources/templates/coordinator/edit_training_type.html +++ b/src/main/resources/templates/coordinator/edit_training_type.html @@ -57,11 +57,13 @@ type="button" class="button p-less" data-style="outlined" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> <button type="submit" class="button p-less" + th:aria-label="#{general.save}" th:text="#{general.save}" th:form="|edit-training-type-${type.getId()}-form|"></button> </div> diff --git a/src/main/resources/templates/coordinator/manage.html b/src/main/resources/templates/coordinator/manage.html index f067ac72a934a27ed199d540c086f6aa35b83298..26a715df33809802f4e379fd23a7e7af4b6ea577 100644 --- a/src/main/resources/templates/coordinator/manage.html +++ b/src/main/resources/templates/coordinator/manage.html @@ -35,11 +35,14 @@ <form class="search"> <input name="q" - aria-label="Coordinator Program Search" + th:aria-label="#{coordinator.search.ariaLabel}" type="search" th:value="${param.q}" th:placeholder="#{coordinator.search}" /> - <button class="fa-solid fa-search" type="submit"></button> + <button + class="fa-solid fa-search" + type="submit" + th:aria-label="#{general.search}"></button> </form> </div> @@ -55,17 +58,20 @@ class="button grow" data-style="outlined" th:href="@{|/coordinator/training/${program.id}|}" + th:aria-label="|#{general.manage} #{training.name.long}|" th:text="|#{general.manage} #{training.name.long}|"></a> <a class="button grow" data-style="outlined" th:href="@{|/coordinator/defaults/${program.id}|}" + th:aria-label="|#{general.manage} #{coordinator.defaults}|" th:text="|#{general.manage} #{coordinator.defaults}|"></a> <button th:if="${@authorisationService.canEditCoordinatorsForProgram(program.id)}" class="button grow" data-style="outlined" th:data-dialog="|edit-coordinators-${program.id}-overlay|" + th:aria-label="|#{general.manage} #{coordinators}|" th:text="|#{general.manage} #{coordinators}|"></button> </div> <th:block th:replace="~{coordinator/manage_coordinators :: overlay}"></th:block> diff --git a/src/main/resources/templates/coordinator/manage_coordinators.html b/src/main/resources/templates/coordinator/manage_coordinators.html index 4f929ceecf0d6ac8a8a147bb5ef7f6dfd89c320b..975d5dbeada1fd559061c459833941570c28c31a 100644 --- a/src/main/resources/templates/coordinator/manage_coordinators.html +++ b/src/main/resources/templates/coordinator/manage_coordinators.html @@ -48,9 +48,14 @@ class="button p-less" data-type="error" data-style="outlined" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> - <button type="submit" class="button p-less" th:text="#{general.edit}"></button> + <button + type="submit" + class="button p-less" + th:text="#{general.edit}" + th:aria-label="#{general.edit}"></button> </div> </form> </dialog> diff --git a/src/main/resources/templates/coordinator/training.html b/src/main/resources/templates/coordinator/training.html index 313e904c8525f4f3c07adcd66d8f975f710139cc..dda835e9a7aff7d5904bce3ef0c2331be88a89a9 100644 --- a/src/main/resources/templates/coordinator/training.html +++ b/src/main/resources/templates/coordinator/training.html @@ -36,14 +36,14 @@ <div class="banner" data-type="error" th:each="err : ${importErrors}"> <span class="banner__icon fa-solid fa-circle-exclamation"></span> <p - th:text="|Error(s) at line ${err.key}: ${#strings.listJoin(err.value.![message], ',')}|"></p> + th:text="|#{training.import.error} ${err.key}: ${#strings.listJoin(err.value.![message], ',')}|"></p> </div> </th:block> <th:block th:if="${importWarnings != null && !importWarnings.isEmpty()}"> <div class="banner" data-type="warning" th:each="warning : ${importWarnings}"> <span class="banner__icon fa-solid fa-warning"></span> <p - th:text="|Warning(s) at line ${warning.key}: ${#strings.listJoin(warning.value.![message], ',')}|"></p> + th:text="|#{training.import.warning} ${warning.key}: ${#strings.listJoin(warning.value.![message], ',')}|"></p> </div> </th:block> <th:block th:if="${successfulImportSize != null && successfulImportSize > 0}"> @@ -58,12 +58,14 @@ <div class="flex gap-3 | sm:grid sm:col-2"> <button class="button" + th:aria-label="#{training.import}" th:text="#{training.import}" data-dialog="import-training-overlay"></button> <button class="button" - th:text="#{training.import.file}" + th:aria-label="#{training.import.csv}" + th:text="#{training.import.csv}" data-dialog="import-training-csv-overlay"></button> </div> @@ -74,6 +76,7 @@ <div class="flex justify-end"> <button class="button p-min" + th:aria-label="#{training.create}" th:text="#{training.type.create}" data-dialog="create-training-type-overlay"></button> </div> @@ -87,12 +90,14 @@ class="button p-min" data-style="outlined" th:data-dialog="|edit-training-type-${type.getId()}-overlay|" + th:aria-label="#{general.edit}" th:text="#{general.edit}"></button> <button class="button p-min" data-style="outlined" data-type="error" th:data-dialog="|remove-training-type-${type.getId()}-overlay|" + th:aria-label="#{general.remove}" th:text="#{general.remove}"></button> </div> </td> diff --git a/src/main/resources/templates/declaration/all.html b/src/main/resources/templates/declaration/all.html index dec66e58dd152a2e9e5152981c7be5141fa8f6c7..7447756a75a34e00cc529b88568e34a5a0d2f1df 100644 --- a/src/main/resources/templates/declaration/all.html +++ b/src/main/resources/templates/declaration/all.html @@ -146,6 +146,7 @@ class="link" target="_blank" th:href="@{|/profile/${dec.getPerson().getId()}|}" + th:aria-label="#{general.viewPerson.ariaLabel(${@personCacheManager.getOrThrow(dec.getPerson().getId()).displayName})}" th:text="${@personCacheManager.getOrThrow(dec.getPerson().getId()).displayName}"></a> </td> <td @@ -160,6 +161,7 @@ class="button p-min" data-style="outlined" th:data-dialog="|view-declaration-reason-overlay-${dec.id}|" + th:aria-label="#{extraWork.reason.view}" th:text="#{extraWork.reason.view}"></a> </td> <td th:text="#{|status.extraWork.${#strings.toLowerCase(dec.status)}|}"></td> diff --git a/src/main/resources/templates/declaration/view_reason.html b/src/main/resources/templates/declaration/view_reason.html index 6d9a0a7bb11d02358f21f76a114c0c56798bf552..be83e2478ef08bea48f39f6735e8117d5ee94fd7 100644 --- a/src/main/resources/templates/declaration/view_reason.html +++ b/src/main/resources/templates/declaration/view_reason.html @@ -37,6 +37,7 @@ <button type="button" class="button p-less" + th:aria-label="#{general.close}" th:text="#{general.close}" data-cancel></button> </div> diff --git a/src/main/resources/templates/edition/create.html b/src/main/resources/templates/edition/create.html index 6cb1b4a432955e107d3ca22ac01e41ceb2f2344d..d89efea160f8107720ffa9c4e5be8a2cde277136 100644 --- a/src/main/resources/templates/edition/create.html +++ b/src/main/resources/templates/edition/create.html @@ -112,11 +112,13 @@ class="button p-less" data-type="error" data-style="outlined" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> <button type="submit" class="button p-less" + th:aria-label="#{general.create}" th:text="#{general.create}"></button> </div> </form> diff --git a/src/main/resources/templates/extra_work/confirm_approve.html b/src/main/resources/templates/extra_work/confirm_approve.html index 943aa9a17e18786ad6f570171956e700357085d7..28b6146f0df32ffa0dc86fd06d444e421f4159ba 100644 --- a/src/main/resources/templates/extra_work/confirm_approve.html +++ b/src/main/resources/templates/extra_work/confirm_approve.html @@ -37,9 +37,14 @@ type="button" class="button p-less" data-style="outlined" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> - <button type="submit" class="button p-less" th:text="#{general.yes}"></button> + <button + type="submit" + class="button p-less" + th:aria-label="#{general.yes}" + th:text="#{general.yes}"></button> </div> </form> </dialog> diff --git a/src/main/resources/templates/extra_work/confirm_approve_dec.html b/src/main/resources/templates/extra_work/confirm_approve_dec.html index a41e3b814c95f3c0a547e037e7c40dbc922b5e05..af3901f563dba419714155cae1fa2e9d9dd98d92 100644 --- a/src/main/resources/templates/extra_work/confirm_approve_dec.html +++ b/src/main/resources/templates/extra_work/confirm_approve_dec.html @@ -47,12 +47,14 @@ type="button" class="button p-less" data-style="outlined" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> <button type="submit" class="button p-less" data-type="accept" + th:aria-label="#{general.yes}" th:text="#{general.yes}"></button> </div> </form> diff --git a/src/main/resources/templates/extra_work/confirm_close.html b/src/main/resources/templates/extra_work/confirm_close.html index 95ad99aaa3ee5c6e4e90392366cf73a4580f320a..733c4f78916310db09b5d1ec39f284e4abe28a8f 100644 --- a/src/main/resources/templates/extra_work/confirm_close.html +++ b/src/main/resources/templates/extra_work/confirm_close.html @@ -37,12 +37,14 @@ type="button" class="button p-less" data-style="outlined" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> <button type="submit" class="button p-less" data-type="error" + th:aria-label="#{general.yes}" th:text="#{general.yes}"></button> </div> </form> diff --git a/src/main/resources/templates/extra_work/confirm_reject.html b/src/main/resources/templates/extra_work/confirm_reject.html index 725524c4628d75eb5851ce4d9540478336126764..f3a988ea9c976de24c5cbe9e6a30c0f338609288 100644 --- a/src/main/resources/templates/extra_work/confirm_reject.html +++ b/src/main/resources/templates/extra_work/confirm_reject.html @@ -38,11 +38,13 @@ class="button p-less" data-style="outlined" data-cancel + th:aria-label="#{general.cancel}" th:text="#{general.cancel}"></button> <button type="submit" class="button p-less" data-type="error" + th:aria-label="#{general.yes}" th:text="#{general.yes}"></button> </div> </form> diff --git a/src/main/resources/templates/extra_work/confirm_reject_dec.html b/src/main/resources/templates/extra_work/confirm_reject_dec.html index 36b818fbd313c4fd4892572ef47222050b6be835..250439b18f7d5acf2c3cc57979b83a90e1261d03 100644 --- a/src/main/resources/templates/extra_work/confirm_reject_dec.html +++ b/src/main/resources/templates/extra_work/confirm_reject_dec.html @@ -47,12 +47,14 @@ type="button" class="button p-less" data-style="outlined" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> <button type="submit" class="button p-less" data-type="error" + th:aria-label="#{general.yes}" th:text="#{general.yes}"></button> </div> </form> diff --git a/src/main/resources/templates/extra_work/confirm_retract_dec.html b/src/main/resources/templates/extra_work/confirm_retract_dec.html index f080b482fc1a733c9bfb592ead6d8e066364ab42..30a6c9de5b9ec7e068a7851482a7f1905e5b9694 100644 --- a/src/main/resources/templates/extra_work/confirm_retract_dec.html +++ b/src/main/resources/templates/extra_work/confirm_retract_dec.html @@ -47,12 +47,14 @@ type="button" class="button p-less" data-style="outlined" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> <button type="submit" class="button p-less" data-type="error" + th:aria-label="#{general.yes}" th:text="#{general.yes}"></button> </div> </form> diff --git a/src/main/resources/templates/extra_work/create.html b/src/main/resources/templates/extra_work/create.html index c27f7e9c3355603dc85a982a6a3020a4b2553449..db63a819726438bada0a9545de25ff52ed9c1a94 100644 --- a/src/main/resources/templates/extra_work/create.html +++ b/src/main/resources/templates/extra_work/create.html @@ -125,9 +125,14 @@ class="button p-less" data-type="error" data-style="outlined" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> - <button type="submit" class="button p-less" th:text="#{general.save}"></button> + <button + type="submit" + class="button p-less" + th:aria-label="#{general.save}" + th:text="#{general.save}"></button> </div> </form> </dialog> diff --git a/src/main/resources/templates/extra_work/edit.html b/src/main/resources/templates/extra_work/edit.html index 34fec6cd43681bfe68bff23d1446ccae7a6221a4..f07a36a5979cd106970cbe77da07eb0f1bf66a2c 100644 --- a/src/main/resources/templates/extra_work/edit.html +++ b/src/main/resources/templates/extra_work/edit.html @@ -105,9 +105,14 @@ type="button" class="button p-less" data-style="outlined" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> - <button type="submit" class="button p-less" th:text="#{general.save}"></button> + <button + type="submit" + class="button p-less" + th:aria-label="#{general.save}" + th:text="#{general.save}"></button> </div> </form> </dialog> diff --git a/src/main/resources/templates/extra_work/import.html b/src/main/resources/templates/extra_work/import.html index a15e54081349dc541db3b0b362025b8e1b983ad3..8b11cde0e294f9df655470899cca8d6d2bdea109 100644 --- a/src/main/resources/templates/extra_work/import.html +++ b/src/main/resources/templates/extra_work/import.html @@ -47,6 +47,7 @@ <a id="templateDownload" class="button" + th:aria-label="#{general.download}" th:text="#{general.download}" th:href="@{/extra-work/import/template}"></a> </div> @@ -62,9 +63,14 @@ class="button p-less" data-style="outlined" data-type="error" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> - <button type="submit" class="button p-less" th:text="#{general.save}"></button> + <button + type="submit" + class="button p-less" + th:aria-label="#{general.save}" + th:text="#{general.save}"></button> </div> </form> </dialog> diff --git a/src/main/resources/templates/extra_work/new_declaration.html b/src/main/resources/templates/extra_work/new_declaration.html index 0c45cadfaffb6ac1adcc43a90c407ce35757352d..cfec993968a79611b5045aef916f5be62055bde5 100644 --- a/src/main/resources/templates/extra_work/new_declaration.html +++ b/src/main/resources/templates/extra_work/new_declaration.html @@ -96,11 +96,13 @@ type="button" class="button p-less" data-style="outlined" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> <button type="button" class="button p-less" + th:aria-label="#{general.send}" th:text="#{general.send}" onclick="declarationSubmit()"></button> </div> diff --git a/src/main/resources/templates/extra_work/view_many.html b/src/main/resources/templates/extra_work/view_many.html index a43578a73a7cb047cd9c924793543c017f59cf5e..8857b3a163cc4111af9f108f6d9cd48ef1d8b841 100644 --- a/src/main/resources/templates/extra_work/view_many.html +++ b/src/main/resources/templates/extra_work/view_many.html @@ -35,12 +35,14 @@ role="tab" aria-controls="work" th:aria-selected="${tab != 'declarations'}" + th:aria-label="#{extraWork.many}" th:text="#{extraWork.many}"></button> <button id="declarations-tab" role="tab" aria-controls="declarations" th:aria-selected="${tab == 'declarations'}" + th:aria-label="#{declaration.my}" th:text="#{declaration.my}"></button> </div> @@ -49,11 +51,14 @@ <input name="q" class="search_field" - aria-label="Global search" + th:aria-label="#{general.search}" type="search" th:value="${param.q}" th:placeholder="#{extraWork.search}" /> - <button class="fa-solid fa-search" type="submit"></button> + <button + class="fa-solid fa-search" + th:aria-label="#{general.search}" + type="submit"></button> </form> <div class="flex vertical" th:unless="${editions.isEmpty()}"> @@ -68,6 +73,7 @@ <button class="fa-solid fa-chevron-down" aria-expanded="true" + th:aria-label="#{general.expand}" th:aria-controls="|edition-${edition.id}|"></button> </div> </td> @@ -88,6 +94,7 @@ <button class="button p-min" data-style="outlined" + th:aria-label="#{declaration.new}" th:text="#{declaration.new}" th:onclick="'newDeclarationOverlay(' + ${work.id} + ')'"></button> </div> @@ -114,11 +121,14 @@ <input name="q" class="search_field" - aria-label="search" + th:aria-label="#{general.search}" type="search" th:value="${param.q}" th:placeholder="#{declaration.search}" /> - <button class="fa-solid fa-search" type="submit"></button> + <button + class="fa-solid fa-search" + th:aria-label="#{general.search}" + type="submit"></button> </form> <div class="flex vertical"> @@ -145,6 +155,7 @@ class="button p-min" data-style="outlined" th:data-dialog="|view-declaration-reason-overlay-${dec.id}|" + th:aria-label="#{extraWork.reason.view}" th:text="#{extraWork.reason.view}"></button> </td> <td @@ -157,6 +168,7 @@ class="button p-min" data-style="outlined" data-type="error" + th:aria-label="#{extraWork.retract}" th:text="#{extraWork.retract}" th:data-dialog="|confirm-retract-dec-${dec.id}-overlay|"></button> <div diff --git a/src/main/resources/templates/extra_work/view_one.html b/src/main/resources/templates/extra_work/view_one.html index 6559c28bdcaea9879241f3256feba8dfce80c3cb..1f9d27fc11dc061b0c784fc528700f4b9c937377 100644 --- a/src/main/resources/templates/extra_work/view_one.html +++ b/src/main/resources/templates/extra_work/view_one.html @@ -46,6 +46,7 @@ <div class="flex gap-3 wrap"> <button class="button" + th:aria-label="#{extraWork.edit}" th:text="#{extraWork.edit}" data-style="outlined" data-dialog="edit-extra-work-overlay"></button> @@ -53,6 +54,7 @@ class="button" data-style="outlined" data-type="error" + th:aria-label="#{extraWork.closeDeadline}" th:text="#{extraWork.closeDeadline}" data-dialog="confirm-close-overlay"></button> </div> @@ -140,11 +142,14 @@ <form class="search"> <input name="q" - aria-label="Declaration search" + th:aria-label="#{general.search}" type="search" th:value="${param.q}" th:placeholder="#{declaration.manager.search}" /> - <button class="fa-solid fa-search" type="submit"></button> + <button + class="fa-solid fa-search" + th:aria-label="#{general.search}" + type="submit"></button> </form> </div> @@ -152,12 +157,21 @@ <button class="button" data-style="outlined" + th:aria-label="#{extraWork.approveAll}" th:text="#{extraWork.approveAll}" data-dialog="confirm-approve-overlay"></button> + <a + class="button" + data-style="outlined" + th:aria-label="#{extraWork.export}" + th:text="#{extraWork.export}" + target="_blank" + th:href="@{|/extra-work/${work.id}/export|}"></a> <button class="button" data-style="outlined" data-type="error" + th:aria-label="#{extraWork.rejectAll}" th:text="#{extraWork.rejectAll}" data-dialog="confirm-reject-overlay"></button> </div> @@ -206,6 +220,7 @@ class="link" target="_blank" th:href="@{|/profile/${dec.personId}|}" + th:aria-label="|#{general.viewPerson.ariaLabel(${dec.person.displayName})}|" th:text="${dec.person.displayName}"></a> </td> <td th:text="${dec.person.number}"></td> @@ -215,6 +230,7 @@ class="button p-min" data-style="outlined" th:data-dialog="|view-declaration-reason-overlay-${dec.id}|" + th:aria-label="#{extraWork.reason.view}" th:text="#{extraWork.reason.view}"></button> </td> <td @@ -226,6 +242,7 @@ type="submit" class="button p-min" data-type="accept" + th:aria-label="#{extraWork.approve}" th:text="#{extraWork.approve}" th:data-dialog="|confirm-approve-dec-${dec.id}-overlay|"></button> <div @@ -238,6 +255,7 @@ type="submit" class="button p-min" data-type="error" + th:aria-label="#{extraWork.reject}" th:text="#{extraWork.reject}" th:data-dialog="|confirm-reject-dec-${dec.id}-overlay|"></button> <div th:replace="~{extra_work/confirm_reject_dec :: overlay}"></div> diff --git a/src/main/resources/templates/footer.html b/src/main/resources/templates/footer.html index 92a64771ab4f8450d9648dea42f1ac74451e5f1c..767ffde7238b4e7d3b3948d226d7f8486188aa01 100644 --- a/src/main/resources/templates/footer.html +++ b/src/main/resources/templates/footer.html @@ -26,10 +26,15 @@ <img th:src="@{/img/tudelft_logo_dark.png}" height="24px" alt="TU Delft" /> <div class="flex gap-7"> - <a class="link" th:href="@{/privacy}" th:text="#{general.privacy_statement}"></a> + <a + class="link" + th:href="@{/privacy}" + th:aria-label="#{general.privacy_statement}" + th:text="#{general.privacy_statement}"></a> <a class="link" th:href="#{general.help_url}" + th:aria-label="#{general.help}" th:text="#{general.help}" target="_blank"></a> </div> diff --git a/src/main/resources/templates/header.html b/src/main/resources/templates/header.html index 23613bdb4cf9760f2c1fdf06a38d16c34f621de1..17733d4e8dbc8d0701b07922b687d1fbedcf8204 100644 --- a/src/main/resources/templates/header.html +++ b/src/main/resources/templates/header.html @@ -23,8 +23,8 @@ xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"> <body> <div class="header" layout:fragment="header"> - <a th:href="@{/}" class="header__title"> - <span>TAM</span> + <a th:href="@{/}" class="header__title" th:aria-label="#{general.app_name}"> + <span th:text="#{general.app_name}"></span> </a> <nav @@ -33,32 +33,63 @@ aria-label="header"> <ul> <li th:if="${@authorisationService.isCoordinatorOfAny()}"> - <a th:href="@{/coordinator/manage}" th:text="#{coordinator.manage}"></a> + <a + th:href="@{/coordinator/manage}" + th:aria-label="#{coordinator.manage}" + th:text="#{coordinator.manage}"></a> </li> <li th:if="${@authorisationService.canEditPayScale()}"> - <a th:href="@{/raise-request/all}" th:text="#{payscale.requests}"></a> + <a + th:href="@{/raise-request/all}" + th:aria-label="#{payscale.requests}" + th:text="#{payscale.requests}"></a> </li> <li th:if="${@authorisationService.isCoordinatorOfAny()}"> - <a th:href="@{/application/all}" th:text="#{application.all}"></a> + <a + th:href="@{/application/all}" + th:aria-label="#{application.all}" + th:text="#{application.all}"></a> </li> <li th:if="${@authorisationService.isCoordinatorOfAny()}"> - <a th:href="@{/declaration/all}" th:text="#{declaration.all}"></a> + <a + th:href="@{/declaration/all}" + th:aria-label="#{declaration.all}" + th:text="#{declaration.all}"></a> </li> <li th:if="${@authorisationService.isManagerOfAny()}"> - <a th:href="@{/job-offer/manage}" th:text="#{manager.portal}"></a> + <a + th:href="@{/job-offer/manage}" + th:aria-label="#{manager.portal}" + th:text="#{manager.portal}"></a> </li> <li th:if="${@authorisationService.isCoordinatorOfAny()}"> - <a th:href="@{/person/search}" th:text="#{search.people}"></a> + <a + th:href="@{/person/search}" + th:aria-label="#{search.people}" + th:text="#{search.people}"></a> </li> <th:block th:unless="${@authorisationService.isStaff()}"> - <li><a th:href="@{/job-offer/open}" th:text="#{jobOffer.many}"></a></li> - <li><a th:href="@{/extra-work/open}" th:text="#{extraWork.many}"></a></li> + <li> + <a + th:href="@{/job-offer/open}" + th:aria-label="#{jobOffer.many}" + th:text="#{jobOffer.many}"></a> + </li> + <li> + <a + th:href="@{/extra-work/open}" + th:aria-label="#{extraWork.many}" + th:text="#{extraWork.many}"></a> + </li> </th:block> </ul> </nav> <div class="header__user" th:unless="${@authorisationService.isAuthenticated()}"> - <a th:href="@{/login}">Log in</a> + <a + th:href="@{/login}" + th:text="#{general.login}" + th:aria-label="#{general.login}"></a> </div> <div class="user-menu menu-wrapper" th:if="${@authorisationService.isAuthenticated()}"> @@ -67,9 +98,18 @@ <span class="fa-solid fa-chevron-down"></span> </button> <ul id="user-menu" class="menu" aria-expanded="false" role="list"> - <li><a th:href="@{/profile}">Profile</a></li> <li> - <form th:action="@{/logout}" method="post"><button>Log out</button></form> + <a + th:href="@{/profile}" + th:text="#{profile.short}" + th:aria-label="#{profile.short}"></a> + </li> + <li> + <form th:action="@{/logout}" method="post"> + <button + th:text="#{general.logout}" + th:aria-label="#{general.logout}"></button> + </form> </li> </ul> </div> diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index d417c92ea81fcb48eb508552f69cd95b62dd4538..af2dd4a082fe0bdba346c251ec3a6ec2e3ed6715 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -29,55 +29,29 @@ <body> <main layout:fragment="content"> - <h1 class="font-800">Teaching Assistant Management</h1> + <h1 class="font-800" th:text="#{general.app_name.long}"></h1> - <h2 class="font-500 mb-5"> - Welcome to TAM! To log in, click the button in the top right. - </h2> + <h2 class="font-500 mb-5" th:text="#{homepage.welcome}"></h2> <div class="grid col-2 md:col-1"> <div> - <h2 class="font-400 fw-500">Students</h2> - <p class="mb-5"> - As a student, you can sign up to become a teaching assistant and indicate - your availability and willingness to assist courses. When your eligibility - is approved you can be selected to assist a course. - </p> - <h2 class="font-400 fw-500">Course Staff</h2> - <p> - As a lecturer, you can register your course and indicate the need for - teaching assistants. An overview of interested students is provided, using - which you can send job offers to the selected candidates. - </p> + <h2 class="font-400 fw-500" th:text="#{homepage.students}"></h2> + <p class="mb-5" th:text="#{homepage.students.message}"></p> + <h2 class="font-400 fw-500" th:text="#{homepage.teachers}"></h2> + <p th:text="#{homepage.teachers.message}"></p> </div> <div> - <h2 class="font-400 fw-500">Why become a TA?</h2> + <h2 class="font-400 fw-500" th:text="#{homepage.why}"></h2> <ol class="list"> - <li> - You meet other excellent students from other years, studies, and - specialties. - </li> - <li>Working as a TA shows future employers that:</li> + <li th:text="#{homepage.why.one}"></li> + <li th:text="#{homepage.why.two}"></li> <ul class="list"> - <li> - You have an even better understanding of the material, allowing you - to explain material to others. - </li> - <li>You are comfortable communicating with people</li> + <li th:text="#{homepage.why.two.one}"></li> + <li th:text="#{homepage.why.two.two}"></li> </ul> - <li> - You get the opportunity to network with staff from TU Delft, helping you - find future projects (like a bachelor or master thesis, PhD, etc.). - </li> - <li> - You have a flexible work schedule that you can adapt to fit with your - own study program. - </li> - <li> - You receive an hourly financial compensation for your work (see - <a class="link" href="https://flexdelft.nl">flexdelft.nl</a> - for more information). - </li> + <li th:text="#{homepage.why.three}"></li> + <li th:text="#{homepage.why.four}"></li> + <li th:text="#{homepage.why.five}"></li> </ol> </div> </div> diff --git a/src/main/resources/templates/job_offer/add_offer.html b/src/main/resources/templates/job_offer/add_offer.html index cfabf4a5f722023193691dd87e58d6e5844b7d3d..6d18c0d42a2ceb3a5db290a9150c18f7da44b5a2 100644 --- a/src/main/resources/templates/job_offer/add_offer.html +++ b/src/main/resources/templates/job_offer/add_offer.html @@ -70,6 +70,7 @@ type="submit" class="button p-min" data-style="outlined" + th:aria-label="#{jobOffer.offerToAll}" th:text="#{jobOffer.offerToAll}" data-dialog="confirm-offer-all-app-overlay"></button> </div> @@ -85,6 +86,7 @@ class="link" target="_blank" th:href="@{|/profile/${student.getId()}|}" + th:aria-label="|#{general.viewPerson.ariaLabel(${student.getDisplayName()})}|" th:text="${student.getDisplayName()}"></a> </td> <td th:text="${student.getUsername()}"></td> @@ -93,6 +95,7 @@ <button type="submit" class="button p-min" + th:aria-label="#{jobOffer.offer}" th:text="#{jobOffer.offer}" th:data-dialog="|confirm-offer-app-${student.id}-overlay|"></button> </div> @@ -114,6 +117,7 @@ type="button" class="button p-less" data-style="outlined" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> <button @@ -121,6 +125,7 @@ type="submit" th:data-style="${specificOfferCandidates == null ? null : 'outlined'}" class="button p-less" + th:aria-label="#{general.search}" th:text="#{general.search}"></button> </div> </div> diff --git a/src/main/resources/templates/job_offer/apply.html b/src/main/resources/templates/job_offer/apply.html index 0991634ecb1bdc1cdf9c26fc3e77b3b25c66a0d4..e3a12b6f99241046acce1106c6d9885aa8b3c1ab 100644 --- a/src/main/resources/templates/job_offer/apply.html +++ b/src/main/resources/templates/job_offer/apply.html @@ -72,12 +72,14 @@ type="button" class="button p-less" th:data-style="${app.exists()} ? 'filled' : 'outlined'" + th:aria-label="#{general.close}" th:text="#{general.close}" data-cancel></button> <button th:unless="${app.exists()}" type="submit" class="button p-less" + th:aria-label="#{jobOffer.apply}" th:text="#{jobOffer.apply}"></button> </div> </form> diff --git a/src/main/resources/templates/job_offer/confirm_close.html b/src/main/resources/templates/job_offer/confirm_close.html index a454d4e711e09785c66b497143cb78ce6aab8218..fb51008de9a4fe4aba518934e378403d10f32bbc 100644 --- a/src/main/resources/templates/job_offer/confirm_close.html +++ b/src/main/resources/templates/job_offer/confirm_close.html @@ -37,12 +37,14 @@ type="button" class="button p-less" data-style="outlined" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> <button type="submit" class="button p-less" data-type="error" + th:aria-label="#{general.yes}" th:text="#{general.yes}"></button> </div> </form> diff --git a/src/main/resources/templates/job_offer/confirm_demote_app.html b/src/main/resources/templates/job_offer/confirm_demote_app.html index 443128bb9a0f766791ee1a086ee7a4ed6d5abf1a..e53d585c27d798dde12590e092e9c60866da8fbc 100644 --- a/src/main/resources/templates/job_offer/confirm_demote_app.html +++ b/src/main/resources/templates/job_offer/confirm_demote_app.html @@ -44,12 +44,14 @@ type="button" class="button p-less" data-style="outlined" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> <button type="submit" class="button p-less" data-type="error" + th:aria-label="#{general.yes}" th:text="#{general.yes}"></button> </div> </form> diff --git a/src/main/resources/templates/job_offer/confirm_offer_all_app.html b/src/main/resources/templates/job_offer/confirm_offer_all_app.html index 59f879bdc9241140c4eefa9f434294167f813c8a..f1d55c068460b3e04d04e2af4e57b5e739feea09 100644 --- a/src/main/resources/templates/job_offer/confirm_offer_all_app.html +++ b/src/main/resources/templates/job_offer/confirm_offer_all_app.html @@ -54,9 +54,14 @@ type="button" class="button p-less" data-style="outlined" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> - <button type="submit" class="button p-less" th:text="#{general.yes}"></button> + <button + type="submit" + class="button p-less" + th:aria-label="#{general.yes}" + th:text="#{general.yes}"></button> </div> </form> </dialog> diff --git a/src/main/resources/templates/job_offer/confirm_offer_app.html b/src/main/resources/templates/job_offer/confirm_offer_app.html index d5ee031144a230bbe600a7042388aed1e30c5e2e..b7898966e4641eb59dd7acccefe832fdae8c8479 100644 --- a/src/main/resources/templates/job_offer/confirm_offer_app.html +++ b/src/main/resources/templates/job_offer/confirm_offer_app.html @@ -44,9 +44,14 @@ type="button" class="button p-less" data-style="outlined" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> - <button type="submit" class="button p-less" th:text="#{general.yes}"></button> + <button + type="submit" + class="button p-less" + th:aria-label="#{general.yes}" + th:text="#{general.yes}"></button> </div> </form> </dialog> diff --git a/src/main/resources/templates/job_offer/confirm_promote_app.html b/src/main/resources/templates/job_offer/confirm_promote_app.html index e7e546edbad831805580da2846c306cc980a2489..7af6fd81a8d89bc3ff4ea70fd8ea8683a28cbb45 100644 --- a/src/main/resources/templates/job_offer/confirm_promote_app.html +++ b/src/main/resources/templates/job_offer/confirm_promote_app.html @@ -44,9 +44,14 @@ type="button" class="button p-less" data-style="outlined" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> - <button type="submit" class="button p-less" th:text="#{general.yes}"></button> + <button + type="submit" + class="button p-less" + th:aria-label="#{general.yes}" + th:text="#{general.yes}"></button> </div> </form> </dialog> diff --git a/src/main/resources/templates/job_offer/confirm_reject.html b/src/main/resources/templates/job_offer/confirm_reject.html index b19428f1f888b5bcb6c87188547cf090060c8e29..b26696eb7fd837e411f671dcbb7cae4955b113b3 100644 --- a/src/main/resources/templates/job_offer/confirm_reject.html +++ b/src/main/resources/templates/job_offer/confirm_reject.html @@ -42,12 +42,14 @@ type="button" class="button p-less" data-style="outlined" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> <button type="submit" class="button p-less" data-type="error" + th:aria-label="#{general.yes}" th:text="#{general.yes}"></button> </div> </form> diff --git a/src/main/resources/templates/job_offer/confirm_reject_app.html b/src/main/resources/templates/job_offer/confirm_reject_app.html index c6db84466dbc45b204dda2be2a4d8ee7b1929604..65522cca7118e90da5e99b62ab26d69b6955ae3f 100644 --- a/src/main/resources/templates/job_offer/confirm_reject_app.html +++ b/src/main/resources/templates/job_offer/confirm_reject_app.html @@ -49,12 +49,14 @@ type="button" class="button p-less" data-style="outlined" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> <button type="submit" class="button p-less" data-type="error" + th:aria-label="#{general.yes}" th:text="#{general.yes}"></button> </div> </form> diff --git a/src/main/resources/templates/job_offer/confirm_reject_selected.html b/src/main/resources/templates/job_offer/confirm_reject_selected.html index 2fc083b8d3a47d91da771697007ed5e8b9166449..c3a53eb736b8314b3b4937d5b4bad88c27c05133 100644 --- a/src/main/resources/templates/job_offer/confirm_reject_selected.html +++ b/src/main/resources/templates/job_offer/confirm_reject_selected.html @@ -59,9 +59,14 @@ type="button" class="button p-less" data-style="outlined" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> - <button type="submit" class="button p-less" th:text="#{general.yes}"></button> + <button + type="submit" + class="button p-less" + th:aria-label="#{general.yes}" + th:text="#{general.yes}"></button> </div> </form> </dialog> diff --git a/src/main/resources/templates/job_offer/confirm_retract_app.html b/src/main/resources/templates/job_offer/confirm_retract_app.html index c52f0f3aca731a20eeb78fbde71454623be99250..e3d245a1f66978e2939631d17ea271d789d4db98 100644 --- a/src/main/resources/templates/job_offer/confirm_retract_app.html +++ b/src/main/resources/templates/job_offer/confirm_retract_app.html @@ -53,12 +53,14 @@ <button type="button" class="button p-less" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> <button type="submit" class="button p-less" data-type="error" + th:aria-label="#{general.yes}" th:text="#{general.yes}"></button> </div> </form> diff --git a/src/main/resources/templates/job_offer/confirm_retract_my_app_page.html b/src/main/resources/templates/job_offer/confirm_retract_my_app_page.html index 452e93bacc985c6db1a15accce44ba87acb704ca..03c6f5107feae156b344a22ac45517a76f7b31fa 100644 --- a/src/main/resources/templates/job_offer/confirm_retract_my_app_page.html +++ b/src/main/resources/templates/job_offer/confirm_retract_my_app_page.html @@ -50,12 +50,14 @@ type="button" class="button p-less" data-style="outlined" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> <button type="submit" class="button p-less" data-type="error" + th:aria-label="#{general.yes}" th:text="#{general.yes}"></button> </div> </form> diff --git a/src/main/resources/templates/job_offer/create.html b/src/main/resources/templates/job_offer/create.html index f5b73e28fefc266e4c9bb5973732f1981503c3a3..6fd4897f197a845494960a1eba3b5a929c379e83 100644 --- a/src/main/resources/templates/job_offer/create.html +++ b/src/main/resources/templates/job_offer/create.html @@ -162,9 +162,14 @@ class="button p-less" data-type="error" data-style="outlined" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> - <button type="submit" class="button p-less" th:text="#{general.save}"></button> + <button + type="submit" + class="button p-less" + th:aria-label="#{general.save}" + th:text="#{general.save}"></button> </div> </form> </dialog> diff --git a/src/main/resources/templates/job_offer/edit.html b/src/main/resources/templates/job_offer/edit.html index b602af2e9bd938f321a76667f531ed5e2211ae72..d18cb9f0a85d92a0fa94bf4acbe917b7ad19f458 100644 --- a/src/main/resources/templates/job_offer/edit.html +++ b/src/main/resources/templates/job_offer/edit.html @@ -131,7 +131,7 @@ </div> <input id="deadline" - aria-label="Deadline for applying" + th:aria-label="#{jobOffer.deadline}" th:name="deadline" th:placeholder="#{jobOffer.date.enter}" th:value="${offer.deadline}" @@ -145,9 +145,14 @@ type="button" class="button p-less" data-style="outlined" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> - <button type="submit" class="button p-less" th:text="#{general.save}"></button> + <button + type="submit" + class="button p-less" + th:aria-label="#{general.save}" + th:text="#{general.save}"></button> </div> </form> </dialog> diff --git a/src/main/resources/templates/job_offer/import.html b/src/main/resources/templates/job_offer/import.html index 7c7b4acab1baacff15ecc7085de409036661f8aa..4036b026fdfec16be2d90e936e545d62e3385d96 100644 --- a/src/main/resources/templates/job_offer/import.html +++ b/src/main/resources/templates/job_offer/import.html @@ -52,6 +52,7 @@ <a id="templateDownload" class="button" + th:aria-label="#{general.download}" th:text="#{general.download}" th:href="@{/job-offer/import/template}"></a> </div> @@ -67,9 +68,14 @@ class="button p-less" data-style="outlined" data-type="error" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> - <button type="submit" class="button p-less" th:text="#{general.save}"></button> + <button + type="submit" + class="button p-less" + th:aria-label="#{general.save}" + th:text="#{general.save}"></button> </div> </form> </dialog> diff --git a/src/main/resources/templates/job_offer/manage.html b/src/main/resources/templates/job_offer/manage.html index f08740c6715f19a26a8cc3a3b2f6fe0d66d4352c..82ba5cbffcd484f31868c7ba8476cb3a2ae40da9 100644 --- a/src/main/resources/templates/job_offer/manage.html +++ b/src/main/resources/templates/job_offer/manage.html @@ -34,14 +34,14 @@ <div class="banner" data-type="error" th:each="err : ${importErrors}"> <span class="banner__icon fa-solid fa-circle-exclamation"></span> <p - th:text="|Error(s) at line ${err.key}: ${#strings.listJoin(err.value.![message], ',')}|"></p> + th:text="|#{training.import.error} ${err.key}: ${#strings.listJoin(err.value.![message], ',')}|"></p> </div> </th:block> <th:block th:if="${importWarnings != null && !importWarnings.isEmpty()}"> <div class="banner" data-type="warning" th:each="warning : ${importWarnings}"> <span class="banner__icon fa-solid fa-warning"></span> <p - th:text="|Warning(s) at line ${warning.key}: ${#strings.listJoin(warning.value.![message], ',')}|"></p> + th:text="|#{training.import.warning} ${warning.key}: ${#strings.listJoin(warning.value.![message], ',')}|"></p> </div> </th:block> <th:block th:if="${successfulImportSize != null && successfulImportSize > 0}"> @@ -58,11 +58,14 @@ <form class="search"> <input name="q" - aria-label="Search for job offers" + th:aria-label="#{general.search}" type="search" th:value="${param.q}" th:placeholder="#{jobOffer.search}" /> - <button class="fa-solid fa-search" type="submit"></button> + <button + class="fa-solid fa-search" + th:aria-label="#{general.search}" + type="submit"></button> </form> </div> @@ -75,18 +78,21 @@ data-style="outlined" th:if="${@authorisationService.isManagerOfAny()}" data-dialog="new-edition-overlay" + th:aria-label="#{edition.create}" th:text="#{edition.create}"></button> <button class="button" data-style="outlined" th:if="${@authorisationService.isCoordinatorOfAny()}" data-dialog="import-job-offer-overlay" + th:aria-label="#{jobOffer.import}" th:text="#{jobOffer.import}"></button> <button class="button" data-style="outlined" th:if="${@authorisationService.isCoordinatorOfAny()}" data-dialog="import-extra-work-overlay" + th:aria-label="#{extraWork.import}" th:text="#{extraWork.import}"></button> </div> @@ -107,11 +113,13 @@ role="tab" th:aria-selected="${#request.requestURI.matches('.*/manage[^/]*')}" th:href="@{/job-offer/manage}" + th:aria-label="#{manager.managed}" th:text="#{manager.managed}"></a> <a role="tab" th:aria-selected="${#request.requestURI.matches('.*/manage/all.*')}" th:href="@{/job-offer/manage/all}" + th:aria-label="#{manager.coordinator}" th:text="#{manager.coordinator}"></a> </div> @@ -137,6 +145,7 @@ data-style="outlined" th:onclick="'newOfferOverlay(\'job-offer\', '+${edition.id}+')'" data-dialog="new-job-offer-overlay" + th:aria-label="#{general.add}" th:text="#{general.add}"></button> </div> @@ -147,6 +156,7 @@ <a class="link" th:href="@{|/job-offer/${offer.id}|}" + th:aria-label="${offer.name}" th:text="${offer.name}"></a> <div> <span @@ -172,6 +182,7 @@ data-style="outlined" th:onclick="'newOfferOverlay(\'extra-work\', '+${edition.id}+')'" data-dialog="new-extra-work-overlay" + th:aria-label="#{general.add}" th:text="#{general.add}"></button> </div> @@ -182,6 +193,7 @@ <a class="link" th:href="@{|/extra-work/${work.id}|}" + th:aria-label="${work.name}" th:text="${work.name}"></a> <div th:if="${@declarationService.getNumberOfUnhandledHours(work.id)} > 0" @@ -222,12 +234,14 @@ data-style="outlined" data-dialog="new-extra-work-overlay" th:onclick="'newOfferOverlay(\'extra-work\', '+${edition.id}+')'" + th:aria-label="|#{general.add} #{extraWork.many}|" th:text="|#{general.add} #{extraWork.many}|"></button> <button class="button p-min" data-style="outlined" data-dialog="new-job-offer-overlay" th:onclick="'newOfferOverlay(\'job-offer\', '+${edition.id}+')'" + th:aria-label="|#{general.add} #{jobOffer}|" th:text="|#{general.add} #{jobOffer}|"></button> </div> </td> @@ -266,6 +280,7 @@ <a class="link" th:href="@{|/job-offer/${offer.id}|}" + th:aria-label="|#{jobOffer}: ${offer.name}|" th:text="|#{jobOffer}: ${offer.name}|"></a> </td> </tr> @@ -289,12 +304,13 @@ <a class="link" th:href="@{|/extra-work/${work.id}|}" + th:aria-label="|#{extraWork.many}: ${work.name}|" th:text="|#{extraWork.many}: ${work.name}|"></a> </td> </tr> <tr th:if="${edition.offers.isEmpty() && edition.work.isEmpty()}"> - <td colspan="4">No job offers or extra work created.</td> + <td colspan="4" th:text="#{edition.empty}"></td> </tr> </tbody> <div th:replace="~{job_offer/default_container :: defaultContainer}"></div> diff --git a/src/main/resources/templates/job_offer/missing_editions.html b/src/main/resources/templates/job_offer/missing_editions.html index ff5b61d952379cf216b83b4cb374ec2adabfcee9..62a0f53d4b704ba61f2c2700033e01b5b75786ac 100644 --- a/src/main/resources/templates/job_offer/missing_editions.html +++ b/src/main/resources/templates/job_offer/missing_editions.html @@ -42,7 +42,10 @@ <thead class="table__header"> <tr> <th class="fit-content"> - <input aria-label="Select all" id="select-all" type="checkbox" /> + <input + th:aria-label="#{general.selectAll}" + id="select-all" + type="checkbox" /> </th> <th th:text="#{general.name}"></th> <th th:text="#{edition.course}"></th> @@ -57,7 +60,7 @@ th:with="offers = ${errs.![#this.jobOffer()]}, courseCode = ${errs[0].courseCode()}"> <td> <input - aria-label="Include job offer" + th:aria-label="#{jobOffer.includeJobOffer}" name="include" th:value="${iter.index}" type="checkbox" /> @@ -115,11 +118,13 @@ type="button" class="button p-less" data-style="outlined" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> <button type="submit" class="button p-less" + th:aria-label="#{general.create}" th:text="#{general.create}"></button> </div> </form> diff --git a/src/main/resources/templates/job_offer/view_hiring_message.html b/src/main/resources/templates/job_offer/view_hiring_message.html index 215eea01f113ff61059e8ddd8c8d376a52de0fbb..28bc764c586e88ee40c44eb4355d60cdcaed78e8 100644 --- a/src/main/resources/templates/job_offer/view_hiring_message.html +++ b/src/main/resources/templates/job_offer/view_hiring_message.html @@ -38,6 +38,7 @@ type="button" class="button p-less" data-cancel + th:aria-label="#{general.close}" th:text="#{general.close}"></button> </div> </div> diff --git a/src/main/resources/templates/job_offer/view_many.html b/src/main/resources/templates/job_offer/view_many.html index 0f47c13795fb94b2d9f87d0ef43ad9ae87c90cab..fc0f061612da73a831f26c188abf8c3d3b463ab9 100644 --- a/src/main/resources/templates/job_offer/view_many.html +++ b/src/main/resources/templates/job_offer/view_many.html @@ -36,12 +36,14 @@ role="tab" aria-selected="true" th:href="@{/job-offer/open}" + th:aria-label="#{jobOffer.many}" th:text="#{jobOffer.many}"></a> <a id="applications-tab" role="tab" aria-selected="false" th:href="@{/application/my}" + th:aria-label="#{application.my}" th:text="#{application.my}"></a> </div> @@ -68,11 +70,14 @@ <input name="q" id="job-offer-search" - aria-label="Search job offers" + th:aria-label="#{general.search}" type="search" th:value="${param.q}" th:placeholder="#{jobOffer.search}" /> - <button class="fa-solid fa-search" type="submit"></button> + <button + class="fa-solid fa-search" + th:aria-label="#{general.search}" + type="submit"></button> </form> </div> @@ -165,6 +170,7 @@ class="button p-min" data-style="outlined" th:data-dialog="|apply-${offer.id}-overlay|" + th:aria-label="#{jobOffer.viewDetails}" th:text="#{jobOffer.viewDetails}"></button> <th:block th:replace="~{job_offer/apply :: overlay}"></th:block> @@ -174,12 +180,14 @@ class="button p-min" data-style="outlined" th:data-dialog="|view-hiring-message-overlay-${offer.id}|" + th:aria-label="#{jobOffer.hiringMessage.view}" th:text="#{jobOffer.hiringMessage.view}"></button> <button th:if="${app.exists() && status == 'REJECTED_BY_TEACHER' && !(offer.rejectMessage == null || offer.rejectMessage.isEmpty())}" class="button p-min" data-style="outlined" th:data-dialog="|view-reject-message-overlay-${offer.id}|" + th:aria-label="#{jobOffer.rejectMessage.view}" th:text="#{jobOffer.rejectMessage.view}"></button> <form th:if="${status == 'OFFERED'}" @@ -202,7 +210,9 @@ class="button p-min" data-type="accept"> <span class="fa-solid fa-check"></span> - <span th:text="#{jobOffer.accept}"></span> + <span + th:text="#{jobOffer.accept}" + th:aria-label="#{jobOffer.accept}"></span> </button> <button th:data-dialog="|confirm-retract-app-${offer.id}|" @@ -212,9 +222,11 @@ <span class="fa-solid fa-xmark"></span> <span th:if="${status == 'OFFERED'}" + th:aria-label="#{jobOffer.reject}" th:text="#{jobOffer.reject}"></span> <span th:unless="${status == 'OFFERED'}" + th:aria-label="#{jobOffer.retract}" th:text="#{jobOffer.retract}"></span> </button> </form> @@ -225,7 +237,9 @@ data-style="outlined" data-type="error"> <span class="fa-solid fa-xmark"></span> - <span th:text="#{jobOffer.retract}"></span> + <span + th:aria-label="#{jobOffer.retract}" + th:text="#{jobOffer.retract}"></span> </button> </div> <th:block th:unless="${app.status.handled()}"> diff --git a/src/main/resources/templates/job_offer/view_one.html b/src/main/resources/templates/job_offer/view_one.html index 1dcf9754e376637d973824dea2e8e4624a4bfa3a..107ae629e5c062a26d159dba7c6bba0618724caa 100644 --- a/src/main/resources/templates/job_offer/view_one.html +++ b/src/main/resources/templates/job_offer/view_one.html @@ -49,12 +49,14 @@ <button class="button" data-style="outlined" + th:aria-label="#{jobOffer.edit}" th:text="#{jobOffer.edit}" data-dialog="edit-job-offer-overlay"></button> <button class="button" data-style="outlined" data-type="error" + th:aria-label="#{jobOffer.closeDeadline}" th:text="#{jobOffer.closeDeadline}" data-dialog="confirm-close-overlay"></button> <form @@ -66,6 +68,7 @@ class="button" data-style="outlined" th:form="toggle-hidden" + th:aria-label="${offer.hidden} ? #{jobOffer.show} : #{jobOffer.hide}" th:text="${offer.hidden} ? #{jobOffer.show} : #{jobOffer.hide}"></button> </div> @@ -131,29 +134,29 @@ </div> <div class="surface"> - <h2 class="underlined font-500 mb-5">Messages</h2> + <h2 class="underlined font-500 mb-5" th:text="#{jobOffer.messages}"></h2> <div class="tabs mb-3" role="tablist"> <button role="tab" id="job-information-tab" aria-selected="true" - aria-controls="job-information"> - Job information - </button> + th:aria-label="#{jobOffer.information}" + th:text="#{jobOffer.information}" + aria-controls="job-information"></button> <button role="tab" id="hiring-message-tab" aria-selected="false" - aria-controls="hiring-message"> - Hiring message - </button> + th:aria-label="#{jobOffer.hiringMessage}" + th:text="#{jobOffer.hiringMessage}" + aria-controls="hiring-message"></button> <button role="tab" id="rejection-message-tab" aria-selected="false" - aria-controls="rejection-message"> - Rejection message - </button> + th:aria-label="#{jobOffer.rejectMessage}" + th:text="#{jobOffer.rejectMessage}" + aria-controls="rejection-message"></button> </div> <div id="job-information" aria-labelledby="job-information-tab"> @@ -166,9 +169,12 @@ th:unless="${offer.description}" th:text="#{jobOffer.description.none}"></p> <div> - <button id="edit-information-button" class="button"> + <button + id="edit-information-button" + class="button" + th:aria-label="#{general.edit}"> <span class="fa-solid fa-pencil"></span> - <span>Edit</span> + <span th:text="#{general.edit}"></span> </button> </div> </div> @@ -180,11 +186,11 @@ <textarea class="textfield" data-style="variant" - placeholder="Enter job information" + th:placeholder="#{jobOffer.description.enter}" th:text="${offer.description}" rows="4" name="description" - aria-label="Job information" + th:aria-label="${offer.description}" id="description" required></textarea> <div> @@ -202,13 +208,14 @@ id="cancel-edit-information-button" type="button" class="button" + th:aria-label="#{general.cancel}" data-style="outlined"> <span class="fa-solid fa-xmark"></span> - <span>Cancel</span> + <span th:text="#{general.cancel}"></span> </button> - <button type="submit" class="button"> + <button type="submit" class="button" th:aria-label="#{general.save}"> <span class="fa-solid fa-save"></span> - <span>Save</span> + <span th:text="#{general.save}"></span> </button> </div> </form> @@ -306,13 +313,13 @@ class="textfield" data-style="variant" name="hiringMessage" - placeholder="Enter hiring message" + th:placeholder="#{jobOffer.hiringMessage.enter}" th:text="${offer.hiringMessage}" rows="4"></textarea> <div> - <button class="button"> + <button class="button" th:aria-label="#{general.save}"> <span class="fa-solid fa-save"></span> - <span>Save</span> + <span th:text="#{general.save}"></span> </button> </div> </form> @@ -327,13 +334,13 @@ class="textfield" data-style="variant" name="rejectMessage" - placeholder="Enter rejection message" + th:placeholder="#{jobOffer.rejectMessage.enter}" th:text="${offer.rejectMessage}" rows="4"></textarea> <div> - <button class="button"> + <button class="button" th:aria-label="#{general.save}"> <span class="fa-solid fa-save"></span> - <span>Save</span> + <span th:text="#{general.save}"></span> </button> </div> </form> @@ -363,11 +370,14 @@ <input name="q" class="search_field" - aria-label="Application search" + th:aria-label="#{general.search}" type="search" th:value="${param.q}" th:placeholder="#{application.manager.search}" /> - <button class="fa-solid fa-search" type="submit"></button> + <button + class="fa-solid fa-search" + th:aria-label="#{general.search}" + type="submit"></button> </form> </div> @@ -375,17 +385,27 @@ <button class="button" data-style="outlined" + th:aria-label="#{jobOffer.selectAll}" th:text="#{jobOffer.selectAll}" id="select-all-button"></button> + <a + class="button" + data-style="outlined" + th:aria-label="#{jobOffer.export}" + th:text="#{jobOffer.export}" + target="_blank" + th:href="@{|/job-offer/${offer.id}/export|}"></a> <button class="button" data-style="outlined" + th:aria-label="#{jobOffer.addOffer}" th:text="#{jobOffer.addOffer}" data-dialog="add-offer-overlay"></button> <button class="button" data-style="outlined" data-type="error" + th:aria-label="#{jobOffer.rejectAll}" th:text="#{jobOffer.rejectAll}" data-dialog="confirm-reject-overlay"></button> </div> @@ -478,6 +498,7 @@ type="submit" class="button p-min" data-style="outlined" + th:aria-label="#{jobOffer.offerToSelected}" th:text="#{jobOffer.offerToSelected}" disabled></button> <button @@ -487,6 +508,7 @@ class="button p-min" data-type="error" data-style="outlined" + th:aria-label="#{jobOffer.rejectSelectedButton}" th:text="#{jobOffer.rejectSelectedButton}" disabled></button> <th:block @@ -513,6 +535,7 @@ class="link" target="_blank" th:href="@{|/profile/${app.personId}|}" + th:aria-label="|#{general.viewPerson.ariaLabel(${app.person.displayName})}|" th:text="${app.person.displayName}"></a> <span th:if="${headTA}" class="chip" th:text="#{role.head_ta}"></span> </div> @@ -525,6 +548,7 @@ class="button p-min" data-style="outlined" th:data-dialog="|view-response-${app.personId}|" + th:aria-label="#{application.viewContent}" th:text="#{application.viewContent}"></button> <span th:if="${app.content == null}" @@ -537,6 +561,7 @@ <a class="link" target="_blank" + th:aria-label="#{jobOffer.queueFeedback.view}" th:text="#{jobOffer.queueFeedback.view}" th:href="|${@environment.getProperty('tam.queue-url')}/feedback/${app.personId}|"></a> </td> @@ -549,6 +574,7 @@ type="submit" class="button p-min" data-type="accept" + th:aria-label="#{jobOffer.offer}" th:text="#{jobOffer.offer}" th:data-dialog="|confirm-offer-app-${app.personId}-overlay|"></button> <div th:replace="~{job_offer/confirm_offer_app :: overlay}"></div> @@ -560,6 +586,7 @@ type="submit" class="button p-min" data-type="accept" + th:aria-label="#{jobOffer.promote}" th:text="#{jobOffer.promote}" th:data-dialog="|confirm-promote-app-${app.personId}-overlay|"></button> <div th:replace="~{job_offer/confirm_promote_app :: overlay}"></div> @@ -568,6 +595,7 @@ <button class="button p-min" data-type="error" + th:aria-label="#{jobOffer.demote}" th:text="#{jobOffer.demote}" th:data-dialog="|confirm-demote-app-${app.personId}-overlay|"></button> <div th:replace="~{job_offer/confirm_demote_app :: overlay}"></div> @@ -578,6 +606,7 @@ <button class="button p-min" data-type="error" + th:aria-label="#{jobOffer.reject}" th:text="#{jobOffer.reject}" th:data-dialog="|confirm-reject-app-${app.personId}-overlay|"></button> <div th:replace="~{job_offer/confirm_reject_app :: overlay}"></div> diff --git a/src/main/resources/templates/job_offer/view_reject_message.html b/src/main/resources/templates/job_offer/view_reject_message.html index d66d000aeb896a67639b3c8fd337ad6ed736457e..4d3167169143020c47c825724501968632384019 100644 --- a/src/main/resources/templates/job_offer/view_reject_message.html +++ b/src/main/resources/templates/job_offer/view_reject_message.html @@ -37,6 +37,7 @@ <button type="button" class="button p-less" + th:aria-label="#{general.close}" th:text="#{general.close}" data-cancel></button> </div> diff --git a/src/main/resources/templates/login.html b/src/main/resources/templates/login.html index 75140a2c97f3bee73a23fdd21ade0348f7273b77..fd41ce3790ca031e9d6145c9a1c8ca434bac01fe 100644 --- a/src/main/resources/templates/login.html +++ b/src/main/resources/templates/login.html @@ -33,13 +33,17 @@ <div class="grid gap-3" style="grid-template-columns: 5rem 15rem; align-items: center"> - <label for="username">Username</label> + <label for="username" th:text="#{general.username}"></label> <input type="text" class="textfield" id="username" name="username" /> - <label for="password">Password</label> + <label for="password" th:text="#{general.password}"></label> <input type="password" class="textfield" id="password" name="password" /> </div> - <button class="button" type="submit" th:text="#{general.login}"></button> + <button + class="button" + type="submit" + th:text="#{general.login}" + th:aria-label="#{general.login}"></button> </form> </main> </body> diff --git a/src/main/resources/templates/pagination.html b/src/main/resources/templates/pagination.html index 2796d937bee470c999317db220b73c1377946b36..ea76be34132d876b15c6a161b04656e11c9c1f52 100644 --- a/src/main/resources/templates/pagination.html +++ b/src/main/resources/templates/pagination.html @@ -23,7 +23,7 @@ xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"> <nav - aria-label="Pagination" + th:aria-label="#{general.pagination}" class="pagination" layout:fragment="pagination(page, size)" th:data-page="${page.number}" @@ -33,15 +33,15 @@ <li th:data-disabled="${page.isFirst()}"> <button th:if="${page.isFirst()}" - aria-disabled="true" + th:aria-disabled="true" disabled - aria-label="Previous Page"> + th:aria-label="#{general.pagination.previousPage}"> « </button> <button th:unless="${page.isFirst()}" th:data-page="${page.number - 1}" - aria-label="Previous Page"> + th:aria-label="#{general.pagination.previousPage}"> « </button> </li> @@ -57,11 +57,11 @@ aria-current="page" aria-disabled="true" disabled - th:aria-label="|Page ${pageNumber + 1}|"></button> + th:aria-label="|#{general.pagination.page} ${pageNumber + 1}|"></button> <button th:unless="${pageNumber == page.number}" th:text="${pageNumber + 1}" - th:aria-label="|Page ${pageNumber + 1}|" + th:aria-label="|#{general.pagination.page} ${pageNumber + 1}|" th:data-page="${pageNumber}"></button> </li> </th:block> @@ -71,7 +71,12 @@ <!-- Triple Dots --> <th:block th:if="${page.number > size - 1}"> <li> - <button aria-disabled="true" disabled aria-label="Ellipsis">…</button> + <button + aria-disabled="true" + disabled + th:aria-label="#{general.pagination.ellipsis}"> + … + </button> </li> </th:block> @@ -86,11 +91,11 @@ aria-current="page" aria-disabled="true" disabled - th:aria-label="|Page ${pageNumber + 1}|"></button> + th:aria-label="|#{general.pagination.page} ${pageNumber + 1}|"></button> <button th:unless="${pageNumber == page.number}" th:text="${pageNumber + 1}" - th:aria-label="|Page ${pageNumber + 1}|" + th:aria-label="|#{general.pagination.page} ${pageNumber + 1}|" th:data-page="${pageNumber}"></button> </li> </th:block> @@ -99,7 +104,12 @@ <!-- Triple Dots --> <th:block th:if="${page.number + size <= page.totalPages - 1}"> <li> - <button aria-disabled="true" disabled aria-label="Ellipsis">…</button> + <button + aria-disabled="true" + disabled + th:aria-label="#{general.pagination.ellipsis}"> + … + </button> </li> </th:block> </th:block> @@ -110,13 +120,13 @@ th:if="${page.isLast()}" aria-disabled="true" disabled - aria-label="Next Page"> + th:aria-label="#{general.pagination.nextPage}"> » </button> <button th:unless="${page.isLast()}" th:data-page="${page.number + 1}" - aria-label="Next Page"> + th:aria-label="#{general.pagination.nextPage}"> » </button> </li> diff --git a/src/main/resources/templates/person/search.html b/src/main/resources/templates/person/search.html index 669ea0b3adeeb7a0cb1ec1724f29164313c2d865..6e1ef9505e7f7496768df2be1a2d271ec8beba70 100644 --- a/src/main/resources/templates/person/search.html +++ b/src/main/resources/templates/person/search.html @@ -37,11 +37,14 @@ <input name="q" class="search_field" - aria-label="Student search" + th:aria-label="#{general.search}" type="search" th:value="${param.q}" th:placeholder="#{payscale.student_search}" /> - <button class="fa-solid fa-search" type="submit"></button> + <button + class="fa-solid fa-search" + th:aria-label="#{general.search}" + type="submit"></button> </form> </div> </div> @@ -64,6 +67,7 @@ target="_blank" th:href="@{|/profile/${person.getKey().id}|}" th:text="${person.getKey().displayName}"></a> + th:aria-label="|#{general.viewPerson.ariaLabel(${person.getKey().displayName})}|" </div> </td> <td th:text="${person.getKey().number}"></td> @@ -74,6 +78,7 @@ <a class="link" target="_blank" + th:aria-label="#{jobOffer.queueFeedback.view}" th:text="#{jobOffer.queueFeedback.view}" th:href="|${@environment.getProperty('tam.queue-url')}/feedback/${person.getKey().id}|"></a> </td> diff --git a/src/main/resources/templates/profile/create_raise_request.html b/src/main/resources/templates/profile/create_raise_request.html index 41fc492027af9251b81fbf2788f77db452af0374..3beaa00aa8391fc4ea1d700008f66ca2cf5e63fc 100644 --- a/src/main/resources/templates/profile/create_raise_request.html +++ b/src/main/resources/templates/profile/create_raise_request.html @@ -70,11 +70,13 @@ type="button" class="button p-less" data-style="outlined" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> <button type="submit" class="button p-less" + th:aria-label="#{general.submit}" th:text="#{general.submit}"></button> </div> </form> @@ -95,11 +97,13 @@ type="button" class="button p-less" data-style="outlined" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> <button type="submit" class="button p-less" + th:aria-label="#{profile.raiseRequest.retract}" th:text="#{profile.raiseRequest.retract}"></button> </div> </form> diff --git a/src/main/resources/templates/profile/edit_notifications.html b/src/main/resources/templates/profile/edit_notifications.html index 4fb0b4eb25cc5aa71bb43965d2f277f329dab0e4..b6f607cd39c3178c790299860bcdb897d5c4f7eb 100644 --- a/src/main/resources/templates/profile/edit_notifications.html +++ b/src/main/resources/templates/profile/edit_notifications.html @@ -65,9 +65,14 @@ type="button" class="button p-less" data-style="outlined" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> - <button type="submit" class="button p-less" th:text="#{general.save}"></button> + <button + type="submit" + class="button p-less" + th:aria-label="#{general.save}" + th:text="#{general.save}"></button> </div> </form> </dialog> diff --git a/src/main/resources/templates/profile/edit_polo.html b/src/main/resources/templates/profile/edit_polo.html index 883ae667df66df1d39c95ed6a3c12c052cb1691e..efc915132e6dccdaef92702bdf492d58db4be6c8 100644 --- a/src/main/resources/templates/profile/edit_polo.html +++ b/src/main/resources/templates/profile/edit_polo.html @@ -62,9 +62,14 @@ type="button" class="button p-less" data-style="outlined" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> - <button type="submit" class="button p-less" th:text="#{general.save}"></button> + <button + type="submit" + class="button p-less" + th:aria-label="#{general.save}" + th:text="#{general.save}"></button> </div> </form> </dialog> diff --git a/src/main/resources/templates/profile/view.html b/src/main/resources/templates/profile/view.html index f5580a1d9f7823685dff6fd9a857573d577fcd8b..f8548b310fab3d06c2f6ddebe9b710cbcf068721 100644 --- a/src/main/resources/templates/profile/view.html +++ b/src/main/resources/templates/profile/view.html @@ -43,6 +43,7 @@ <button class="button" data-style="outlined" + th:aria-label="#{profile.polo.update}" th:text="#{profile.polo.update}" data-dialog="edit-polo-overlay"></button> </div> @@ -58,6 +59,7 @@ <button class="button" data-style="outlined" + th:aria-label="#{profile.training.details.action}" th:text="#{profile.training.details.action}" data-dialog="view-training-details-overlay"></button> </div> @@ -71,6 +73,7 @@ <button class="button" data-style="outlined" + th:aria-label="#{profile.notifications.update}" th:text="#{profile.notifications.update}" data-dialog="edit-email-notifications-overlay"></button> </div> @@ -85,6 +88,7 @@ <button class="button" data-style="outlined" + th:aria-label="#{profile.payscale.update}" th:text="#{profile.payscale.update}" data-dialog="create-raise-request-overlay" th:unless="${profile.payScale.equals(T(nl.tudelft.tam.enums.PayScale).SA4)}"></button> @@ -113,6 +117,7 @@ <a class="button" data-style="outlined" + th:aria-label="|#{payscale.download} #{profile.raiseRequest.fileProof}|" th:text="|#{payscale.download} #{profile.raiseRequest.fileProof}|" th:href="@{|/raise-request/${openRaiseRequest.id}/proof|}"></a> </div> diff --git a/src/main/resources/templates/profile/view_training_details.html b/src/main/resources/templates/profile/view_training_details.html index 72d90c8201de9027fb4aff90fda14aedf8cc4b1e..83a0c8fbe9e0212ee6d2be6090cf33244f20f8f7 100644 --- a/src/main/resources/templates/profile/view_training_details.html +++ b/src/main/resources/templates/profile/view_training_details.html @@ -55,6 +55,7 @@ <button type="button" class="button p-less" + th:aria-label="#{general.close}" th:text="#{general.close}" data-cancel></button> </div> diff --git a/src/main/resources/templates/raise_request/import.html b/src/main/resources/templates/raise_request/import.html index 299efbbad5379c74a7b655040e54a74b80e1029c..2ecbbb2fe1838a33532c39bbe1843bba8f77e750 100644 --- a/src/main/resources/templates/raise_request/import.html +++ b/src/main/resources/templates/raise_request/import.html @@ -111,6 +111,7 @@ th:form="import-all" type="submit" class="button p-min" + th:aria-label="#{payscale.import.all}" th:text="#{payscale.import.all}"></button> </td> </tr> @@ -120,6 +121,7 @@ class="link" target="_blank" th:href="@{|/profile/${student.getKey().getId()}|}" + th:aria-label="|#{general.viewPerson.ariaLabel(${student.getKey().getDisplayName()})}|" th:text="${student.getKey().getDisplayName()}"></a> </td> <td th:text="${student.getKey().getUsername()}"></td> @@ -135,6 +137,7 @@ class="button p-min" data-style="outlined" th:form="|form-${student.getKey().getId()}|" + th:aria-label="#{payscale.import.approve}" th:text="#{payscale.import.approve}"></button> </form> </div> @@ -154,6 +157,7 @@ type="button" class="button p-less" data-style="outlined" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> <button @@ -161,6 +165,7 @@ type="submit" class="button p-less" th:data-style="${foundPeople == null ? null : 'outlined'}" + th:aria-label="#{general.search}" th:text="#{general.search}"></button> </div> </div> diff --git a/src/main/resources/templates/raise_request/import_results.html b/src/main/resources/templates/raise_request/import_results.html index 2a149df6a55da00109f7a50062e9ca7c3d872e81..b8b2fa449479001510eaabd6789a969cd5680459 100644 --- a/src/main/resources/templates/raise_request/import_results.html +++ b/src/main/resources/templates/raise_request/import_results.html @@ -55,6 +55,7 @@ class="button p-min" data-style="outlined" th:form="|form-${student.getKey().getId()}|" + th:aria-label="#{payscale.import.conflict.overwrite}" th:text="#{payscale.import.conflict.overwrite}"></button> </form> </div> @@ -71,6 +72,7 @@ type="button" class="button p-less" data-type="error" + th:aria-label="#{payscale.import.conflict.ignore}" th:text="#{payscale.import.conflict.ignore}" data-cancel></button> </div> diff --git a/src/main/resources/templates/raise_request/submitted.html b/src/main/resources/templates/raise_request/submitted.html index fa3b86571492d7d1bc6784356620c5f2236c0070..710af4c237f3b6a9ad9d788a797f11854407df1c 100644 --- a/src/main/resources/templates/raise_request/submitted.html +++ b/src/main/resources/templates/raise_request/submitted.html @@ -35,17 +35,21 @@ <form class="search"> <input name="q" - aria-label="Student search" + th:aria-label="#{general.search}" type="search" th:value="${param.q}" th:placeholder="#{payscale.student_search}" /> - <button class="fa-solid fa-search" type="submit"></button> + <button + class="fa-solid fa-search" + th:aria-label="#{general.search}" + type="submit"></button> </form> </div> <div> <button class="button" + th:aria-label="#{payscale.import}" th:text="#{payscale.import}" data-dialog="import-overlay"></button> </div> @@ -65,6 +69,7 @@ class="link" target="_blank" th:href="@{|/profile/${request.person.id}|}" + th:aria-label="|#{general.viewPerson.ariaLabel(${request.person.displayName})}|" th:text="${request.person.displayName}"></a> </td> <td th:text="${request.person.number}"></td> @@ -73,6 +78,7 @@ <td> <button th:data-dialog="|request-${request.id}-overlay|" + th:aria-label="#{raiseRequest.view}" th:text="#{raiseRequest.view}" class="button p-min"></button> </td> @@ -85,6 +91,7 @@ type="submit" class="button p-min" data-style="outlined" + th:aria-label="#{general.approve}" th:text="#{general.approve}"></button> </form> <form @@ -95,6 +102,7 @@ class="button p-min" data-style="outlined" data-type="error" + th:aria-label="#{general.reject}" th:text="#{general.reject}"></button> </form> </div> diff --git a/src/main/resources/templates/raise_request/view.html b/src/main/resources/templates/raise_request/view.html index 472735c2951ff7eae85a78c1a38bb77ef59a2479..db868c13369fdcb3bdd8fcfaf5ee60aac748c8bd 100644 --- a/src/main/resources/templates/raise_request/view.html +++ b/src/main/resources/templates/raise_request/view.html @@ -44,10 +44,12 @@ height="500px" style="min-width: 75vw; min-height: calc(90vh - 12rem)"> <div class="flex vertical"> - <p>Cannot display PDF.</p> - <a th:href="@{/raise-request/{id}/proof(id=${request.id})}" class="button"> - Download instead - </a> + <p th:text="#{raiseRequest.error}"></p> + <a + th:href="@{/raise-request/{id}/proof(id=${request.id})}" + class="button" + th:aria-label="#{raiseRequest.error.alternative}" + th:text="#{raiseRequest.error.alternative}"></a> </div> </object> @@ -57,6 +59,7 @@ type="submit" class="button p-less" data-type="error" + th:aria-label="#{general.reject}" th:text="#{general.reject}"></button> </form> <form th:action="@{|/raise-request/approve/${request.id}|}" method="post"> @@ -64,6 +67,7 @@ type="submit" class="button p-less" data-type="accept" + th:aria-label="#{general.approve}" th:text="#{general.approve}"></button> </form> </div> diff --git a/src/main/resources/templates/training_approval/import.html b/src/main/resources/templates/training_approval/import.html index b4827c2c49a1a59a72972779198d84cc7a261a91..a032d0a3adc4f386ac72295b091960f86fc4252e 100644 --- a/src/main/resources/templates/training_approval/import.html +++ b/src/main/resources/templates/training_approval/import.html @@ -131,6 +131,7 @@ th:form="import-training-all" type="submit" class="button p-min" + th:aria-label="#{training.import.all}" th:text="#{training.import.all}"></button> </div> </td> @@ -141,6 +142,7 @@ class="link" target="_blank" th:href="@{|/profile/${student.getKey().getId()}|}" + th:aria-label="|#{general.viewPerson.ariaLabel(${student.getKey().getDisplayName()})}|" th:text="${student.getKey().getDisplayName()}"></a> </td> <td th:text="${student.getKey().getUsername()}"></td> @@ -160,6 +162,7 @@ class="button p-min" data-style="outlined" th:form="|form-${student.getKey().getId()}|" + th:aria-label="#{training.import.specific}" th:text="#{training.import.specific}"></button> </form> </td> @@ -178,6 +181,7 @@ type="button" class="button p-less" data-style="outlined" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel=""></button> <button @@ -185,6 +189,7 @@ type="submit" class="button p-less" th:data-style="${foundPeople == null ? null : 'outlined'}" + th:aria-label="#{general.search}" th:text="#{general.search}"></button> </div> </div> diff --git a/src/main/resources/templates/training_approval/import_csv.html b/src/main/resources/templates/training_approval/import_csv.html index a2bbb69733ffd2c33505f44657d7cdbb5a83db30..07a77887b6634d974f065cf91cbce28fe906dd04 100644 --- a/src/main/resources/templates/training_approval/import_csv.html +++ b/src/main/resources/templates/training_approval/import_csv.html @@ -49,6 +49,7 @@ <a id="templateDownload" class="button" + th:aria-label="#{general.download}" th:text="#{general.download}" th:href="@{/training-approval/import/template}"></a> </div> @@ -64,9 +65,14 @@ class="button p-less" data-style="outlined" data-type="error" + th:aria-label="#{general.cancel}" th:text="#{general.cancel}" data-cancel></button> - <button type="submit" class="button p-less" th:text="#{general.save}"></button> + <button + type="submit" + class="button p-less" + th:aria-label="#{general.save}" + th:text="#{general.save}"></button> </div> </form> </dialog> diff --git a/src/main/resources/templates/training_approval/import_results.html b/src/main/resources/templates/training_approval/import_results.html index 89b40de585898d8a96ca5717f928b24962daa6e2..bac7c14a01f73fe500b84cdef0b4736cbc0fe54b 100644 --- a/src/main/resources/templates/training_approval/import_results.html +++ b/src/main/resources/templates/training_approval/import_results.html @@ -38,6 +38,7 @@ <button type="button" class="button p-less" + th:aria-label="#{general.close}" th:text="#{general.close}" data-cancel></button> </div>