From c1fe12cdb7681622aa4e2a36d1d172cf4de82cc7 Mon Sep 17 00:00:00 2001 From: HOHL Date: Wed, 5 Feb 2025 15:02:03 +0100 Subject: [PATCH] REMOVE ASAP -> APPOINTMENT 3.0.9 UPGRADE : Add fix for templates and labels --- .../resources/appointment_messages.properties | 651 +++++++++++++++ .../appointment_messages_en.properties | 651 +++++++++++++++ .../appointment/appointment_commons.html | 768 ++++++++++++++++++ .../slots/manage_annual_calendar.html | 195 +++++ .../slots/manage_specific_week.html | 134 +++ .../slots/manage_typical_week.html | 324 ++++++++ 6 files changed, 2723 insertions(+) create mode 100644 citelibre-rendezvous/webapp/WEB-INF/conf/override/classes/fr/paris/lutece/plugins/appointment/resources/appointment_messages.properties create mode 100644 citelibre-rendezvous/webapp/WEB-INF/conf/override/classes/fr/paris/lutece/plugins/appointment/resources/appointment_messages_en.properties create mode 100644 citelibre-rendezvous/webapp/WEB-INF/templates/admin/plugins/appointment/appointment_commons.html create mode 100644 citelibre-rendezvous/webapp/WEB-INF/templates/admin/plugins/appointment/slots/manage_annual_calendar.html create mode 100644 citelibre-rendezvous/webapp/WEB-INF/templates/admin/plugins/appointment/slots/manage_specific_week.html create mode 100644 citelibre-rendezvous/webapp/WEB-INF/templates/admin/plugins/appointment/slots/manage_typical_week.html diff --git a/citelibre-rendezvous/webapp/WEB-INF/conf/override/classes/fr/paris/lutece/plugins/appointment/resources/appointment_messages.properties b/citelibre-rendezvous/webapp/WEB-INF/conf/override/classes/fr/paris/lutece/plugins/appointment/resources/appointment_messages.properties new file mode 100644 index 0000000..1ff369b --- /dev/null +++ b/citelibre-rendezvous/webapp/WEB-INF/conf/override/classes/fr/paris/lutece/plugins/appointment/resources/appointment_messages.properties @@ -0,0 +1,651 @@ +BoOverbooking.help=Allow overbooking when making appointments using the BO form +BoOverbooking=Allow overbooking on BO side +Cancel=Cancel +CancelAppointment=Cancel appointment +Display=Display +Email=Email +FirstName=First Name +From=From +LastName=Last Name +Loading=Loading appointments +ManageAppointmentForm.description=Manage appointments +ManageAppointmentForm.name=Manage appointments +OpenFriday=Open on Friday +OpenMonday=Open on Monday +OpenSaturday=Open on Saturday +OpenSunday=Open on Sunday +OpenThursday=Open on Thursday +OpenTuesday=Open on Tuesday +OpenWednesday=Open on Wednesday +PhoneNumber=Phone Number +Save=Save +Status=Status +The=The +Title=Title +To=To +actions.label=Actions +adminFeature.ManageAppointmentForm.description=Appointment management +adminFeature.ManageAppointmentForm.name=Manage appointments +adminFeature.manageCalendarTemplates.name=Manage calendar templates +adminFeature.manageCategories.description=Manage Categories +adminFeature.manageCategories.name=Categories Management +adminFeature.manageComment.description=Comments and Notification Management +adminFeature.manageComment.name=Comments and Notification Management +annual.calendar.pageTitle=Annual View +annual.label.daySpecifity=Days with specificities +anonymization.form.help=Form ID +appointment.message.error.nbplacestotake.toobig=The number of places your entered is too big. +appointment.name.create=Make new appointment +appointment.name=Appointment +appointmentApp.calendar=Calendar +appointmentApp.choiceOfDate=Choice of date +appointmentApp.confirmation=Confirmation +appointmentApp.defaultTitle=Request an appointment +appointmentApp.enteringInformation=Entering information +appointmentApp.infos=Enable/Disable all appointments +appointmentApp.next=Next +appointmentApp.nextDay=Next day +appointmentApp.nextWeek=Next week +appointmentApp.prev=Previous +appointmentApp.previousDay=Previous day +appointmentApp.previousWeek=Previous week +appointmentApp.recap.title=Summary +appointmentApp.validation.title=Validation of input +appointmentApp.validation=Validation of input +appointmentApp.validationText=Please check that the information entered is correct and click on validate +appointmentCalendar.labelChooseDate=Choose a date +appointmentCalendar.labelLegendSlotAvaiable=Available +appointmentCalendar.labelLegendSlotNotAvaiable=Not available +appointmentForm.name=Appointment request form +assign.typicalWeek.defaultTitle=Assign Typical Week +buttonAdd=Add a category +calendarTemplate.labelDescriptionBlank=The description of the template must not be empty +calendarTemplate.labelDescriptionSize=The description of the template must not exceed 255 characters +calendarTemplate.labelTemplatePathBlank=Please choose a file for the template +calendarTemplate.labelTitleBlank=The title of the template must not be empty +cancelAppointment.labelRefAppointment=Appointment reference +cancelAppointment.labelTimeAppointment=Appointment time +cancelAppointment.pageTitle=I want to cancel this appointment +clearAddress=Clear address +columnAdmin=Assigned administrator +columnEmail=Email +columnFirstName=First Name +columnFormCategory=Category +columnFormTitle=Form +columnId=Id +columnLabel=Label +columnLabelNbMaxAppointments=Maximum number of allowed appointments +columnLastName=Last Name +columnName=Login +columnNbBookedSeats=Seats +columnNumberOfBookedseatsPerAppointment=Number of booked seats +columnPhoneNumber=Phone Number +columnState=State +comment.name=Comment +confirmRemoveAppointment=Are you sure you want to delete this appointment? +confirmRemoveCategory=Are you sure you want to delete this category? +confirmRemoveMassAppointment=Are you sure you want to delete these appointments? +confirmRemoveWeekDefinition=Are you sure you want to delete this week definition? +copyEntry.title=Copy of question {0} +createAppointmentForm.LabelWeekType=Definition of the first week type +createAppointmentForm.accesscontrol.label.help=Select the access control associated with the form +createAppointmentForm.accesscontrol.label=Access control +createAppointmentForm.label.BoOverbooking.help=Allow overbooking when making appointments on the BO side +createAppointmentForm.label.BoOverbooking=Allow overbooking on the BO side +createAppointmentForm.labelActiveAuthentication=Enable authentication +createAppointmentForm.labelAnonymizable.genattField=Anonymizable +createAppointmentForm.labelAnonymizable=Anonymize user information (name, first name, and email) +createAppointmentForm.labelAnonymizePattern.help=%f Form ID, %g Random GUID, %n Random number +createAppointmentForm.labelAnonymizePattern=Anonymization pattern +createAppointmentForm.labelAppointmentTitlesAsked=Number of people involved +createAppointmentForm.labelCalendarTemplate=Calendar template +createAppointmentForm.labelCapacityPerSlot.help=Maximum theoretical capacity per time slot (value >= 1) +createAppointmentForm.labelCapacityPerSlot=Maximum Theoretical Capacity per Slot +createAppointmentForm.labelCategory=Form Category +createAppointmentForm.labelColor=Week Color +createAppointmentForm.labelDateEndValidity.help=Format DD/MM/YYYY. The form will be unavailable after this date +createAppointmentForm.labelDateEndValidity=End date of form validity +createAppointmentForm.labelDateStartValidity.help=Format DD/MM/YYYY. The form will be unavailable before this date +createAppointmentForm.labelDateStartValidity=Start date of form validity +createAppointmentForm.labelDescriptionRule=Week Description +createAppointmentForm.labelDurationAppointments.help=In minutes. Pay attention to the duration of opening slots. For example, if you have 20-minute slots with a daily schedule from 9am to 7:30pm, the system cannot create the last slot and blocks the opening. +createAppointmentForm.labelDurationAppointments=Average duration of appointments +createAppointmentForm.labelEnableCaptcha=Enable Captcha +createAppointmentForm.labelEnableMandatoryEmail=Enable mandatory email entry +createAppointmentForm.labelIconForm=Add an icon to the form +createAppointmentForm.labelMaxCapacityPerSlot.help=Maximum number of people for a slot +createAppointmentForm.labelMaxCapacityPerSlot=Maximum capacity per slot +createAppointmentForm.labelMaxPeoplePerAppointment.help=Maximum number of bookable seats for the same person for the same slot +createAppointmentForm.labelMaxPeoplePerAppointment=Maximum number of bookable seats +createAppointmentForm.labelMinTimeBeforeAppointment.help=In hours. Minimum time between the current time and the proposed time of the first slot (without taking into account opening hours; 0: no constraint) +createAppointmentForm.labelMinTimeBeforeAppointment=Minimum time before making an appointment +createAppointmentForm.labelName=Week Name +createAppointmentForm.labelNbDaysBeforeNewAppointment.help=In days. Defines the minimum number of days for a user before making another appointment (0: no constraint) +createAppointmentForm.labelNbDaysBeforeNewAppointment=Minimum duration between two appointments (in number of days) +createAppointmentForm.labelNbDaysForMaxAppointments.help=Indicate in number of days the period over which the user can make the n appointments previously specified. (0: no constraint) +createAppointmentForm.labelNbDaysForMaxAppointments=Period +createAppointmentForm.labelNbMaxAppointments.help=Indicate the maximum number of appointments that a user is allowed to make in a given period (period to be defined below) (0: no constraint) +createAppointmentForm.labelNbMaxAppointments=Maximum number of allowed appointments in a given period +createAppointmentForm.labelNumberOfBookedseatsPerAppointment=Number of seats to book +createAppointmentForm.labelReference.help=Indicates a reference prefix for appointments (Leave blank for no reference) +createAppointmentForm.labelReference=Appointment Reference +createAppointmentForm.labelRole=User Role +createAppointmentForm.labelTimeEnd.help=Daily schedule for the end of appointments (HH:MM). The end time should not be earlier than the start time. +createAppointmentForm.labelTimeEnd=End Time for Appointments +createAppointmentForm.labelTimeStart.help=Daily schedule for the start of appointments (HH:MM) +createAppointmentForm.labelTimeStart=Start Time for Appointments +createAppointmentForm.labelTitle=Form Title +createAppointmentForm.labelTitleDaysOpen=Opening Days +createAppointmentForm.labelWorkflow=Workflow +createAppointmentForm.labelWorkgroup=Workgroup +createAppointmentForm.title=Create an appointment form +createCategory.label=Category label +createCategory.labelNbMaxAppointments.help=Maximum number of authorized appointments (0: no constraint) +createCategory.labelNbMaxAppointments=Maximum number of authorized appointments +createEntry.buttonApplyAndManageResponse=Save and manage responses +createEntry.buttonApplyAndManageVerification=Save and manage verifications +createEntry.labelAttributeName=Session attribute +createEntry.labelAttributeNameComment=Name of the session attribute to retrieve (e.g. FORM_ID_DEMAND, FORM_USER_GUID...) +createEntry.labelCSSClass=CSS classes +createEntry.labelCSSClassComment=The CSS classes of the field must be separated by a space +createEntry.labelConfirmField=Confirmation field for input +createEntry.labelConfirmFieldTitle=Confirmation field title +createEntry.labelExportBinary=Export binaries +createEntry.labelExportBinaryComment=Check this box if you want to have binaries in the exports of the form responses. +createEntry.labelExportBinaryWarning=Exporting binaries can slow down the export operations of the form responses. +createEntry.labelFileMaxSize=Maximum file size (in bytes) +createEntry.labelHeight=Height of the text area +createEntry.labelHelpMessage=Help +createEntry.labelHelpMessageComment=If text is entered, a help icon will appear on the screen. By clicking on it, the user can view this text. +createEntry.labelHelpSqlQuery=Query structure: SELECT column_numeric_id, column_text FROM table +createEntry.labelMandatory=Mandatory +createEntry.labelMandatoryCheckBoxHelp=All checkboxes must be checked +createEntry.labelMandatoryCommentForEntryTypeSession=Check this box if you want to display the form only if there is a value in this session attribute. +createEntry.labelMandatoryErrorMessage=Error message if no value is entered +createEntry.labelMandatoryErrorMessageHelp=Leave blank to display the default error message. +createEntry.labelMaxFiles=Maximum number of files +createEntry.labelMaxSizeEnter=Maximum length of entered text +createEntry.labelOnlyDisplayInBack=Display this field only in the back office +createEntry.labelPrefix=Prefix +createEntry.labelPrefixComment=Numbering prefix +createEntry.labelPresentation=Presentation model +createEntry.labelSqlQuery=SQL query +createEntry.labelThumbnailHeight=Maximum thumbnail height +createEntry.labelThumbnailWidth=Maximum thumbnail width +createEntry.labelTitleComment=Statement of the question asked +createEntry.labelType=Question type +createEntry.labelUniqueField=Test the uniqueness of the response +createEntry.labelUseRichText=Use a rich text editor +createEntry.labelUseRichTextComment=Check to add a BBCode editor +createEntry.labelWidth=Text box length +createEntry.manageField.buttonInsert=Create a response +createEntry.manageField.buttonItemsPerPage=Modify +createEntry.manageField.labelFieldNumber=Number of responses +createEntry.manageField.labelItemsPerPage=Number of lines per page +createEntry.manageField.rowConditionalQuestion=Conditional questions +createEntry.manageField.rowDefaultValue=default value +createEntry.manageField.rowOrder=Order +createEntry.manageField.rowValue=value +createEntry.manageField.title=Response list +createEntry.manageField.titleCopy=Copy +createEntry.manageField.titleDisable=Disable +createEntry.manageField.titleEnable=Enable +createEntry.manageRegularExpression.labelInsertComment=The selected regular expressions will be used to control user input. Example: When asking for the respondent's email address, a check on the presence of @ can be performed by selecting the appropriate regular expression. +createEntry.manageRegularExpression.rowTitle=Rule name +createEntry.manageRegularExpression.rowValidExemple=Valid example +createEntry.manageRegularExpression.title=List of used checks +createEntry.selectPresentationInLine=In line +createEntry.selectPresentationNotInLine=In column +createEntry.titleComment=Creating a comment for the form +createEntry.titleQuestion=Creating a question for the form +createField.labelNoDisplayTitle=Do not display the response title +createField.title=Create a response to the question +createForm=Create an appointment form +createModifyCalendarTemplate.infoTemplateCreated=The template has been created successfully +createModifyCalendarTemplate.infoTemplateUpdated=The template has been successfully updated +createModifyCalendarTemplate.labelTemplatePath=HTML file of the template +createModifyCalendarTemplate.pageTitleModify=Modify a template +create_comment.labelComment.help=Comment +create_comment.labelComment=Comment +create_comment.labelEndingValidityDate.help=End date of comment validity +create_comment.labelEndingValidityDate=To +create_comment.labelEndingValidityTime=at +create_comment.labelIdForm.help=Form identifier +create_comment.labelIdForm=Identifier +create_comment.labelMailingList.help=Mailing list to notify +create_comment.labelMailingList=Notification list +create_comment.labelNoNotification=No notification +create_comment.labelStartingValidityDate.help=Start date of comment validity +create_comment.labelStartingValidityDate=From +create_comment.labelStartingValidityTime=at +create_comment.pageTitle=Add a comment +create_comment.title=Create a comment +create_comment_label=Content +daemon.slotDaemon.description=Slot deletion daemon in memory whose slot start date is less than the current date +daemon.slotDaemon.name=Slot deletion daemon in memory whose slot start date is less than the current date +dashboard.formList=Appointment forms list +dateAppointment.title=Date of the appointment +defaultValue.name=Default value +delete.title=Delete +description=Appointment request management +displayAppointmentForm.labelReset=Reset +displayAppointmentForm.labelValidate=Validate +displayAppointmentForm.labelValidateAndChangeDate=Validate and change the appointment date +endingDateOfSearch=To +error.appointmentform.endingValidityDateBeforeNow=The end date of validity entered has passed. Please modify it before activating the form. +error.appointmentform.noStartingValidityDate=You must enter a start date of validity before activating the form +export.async.message=Your request is being processed. The file will be available on the 'My File Requests' screen in a few minutes. +export.file.description=Excel File +export.modal.button.ko=Cancel +export.modal.button.ok=OK +export.modal.title=Select fields to export +formAddress=Form address +formList=Appointment form list +formMessages.defaultFieldConfirmationEmailHelp=Help for the email confirmation field +formMessages.defaultFieldConfirmationEmailTitle=Confirm your email +help.formAddress=Form Address Help +info.advancedparameters.removed=Advanced parameters removed +info.advancedparameters.updated=Advanced parameters modified +info.appointment.created=The appointment has been successfully created +info.appointment.emailerror=The maximum number of appointments for this email has been reached +info.appointment.removed=Appointment(s) removed +info.appointment.updated=The appointment has been successfully updated +info.appointmentFormMessages.updated=Form messages modified +info.appointmentform.closingDayImport=Closing days imported +info.appointmentform.created=Appointment form created +info.appointmentform.removed=Appointment form removed +info.appointmentform.updated=Form modified +info.category.created=Category created +info.category.removed=Category removed +info.category.updated=Category modified +info.comment.created=Comment created +info.comment.error=Please check the entered fields +info.comment.removed=Comment deleted +info.comment.rights=You do not have the required rights +info.comment.updated=Comment updated +info.globalparameters.updated=Global parameters modified +insert=Add +isMultislotAppointment.help=This option allows taking appointments for a group of people spread over multiple slots. Warning! This choice is irreversible once the form is created. +isMultislotAppointment=Enable taking appointments on multiple slots +label.addComment=Add comments +label.addressDescription=Form Address Description +label.changeAppointmentStatus=Approve/cancel an appointment +label.changeState=Activate/deactivate an appointment form +label.createAppointment=Create an appointment +label.deleteAppointment=Delete an appointment +label.deleteForm=Delete an appointment form +label.deleteMassAppointment=Delete appointments +label.OpenFriday=Open on Friday +label.OpenMonday=Open on Monday +label.OpenSaturday=Open on Saturday +label.OpenSunday=Open on Sunday +label.OpenThursday=Open on Thursday +label.OpenTuesday=Open on Tuesday +label.OpenWednesday=Open on Wednesday +label.addressDescription=Description form address +label.clearAddress=Delete the address +label.displayOnPortlet.help=Check to display the form on the portlet +label.displayOnPortlet=Display the form on the portlet +label.displayTitleFo.help=Check to display the form title in the Front Office +label.displayTitleFo=Display the title in Front Office +label.exportMassAppointment=Export result +label.moderateComment=Moderate comments +label.modifyAdvancedSettingForm=Modify advanced settings of a form +label.modifyForm=Modify an appointment form +label.formAddress=Appointment location +label.insert=Add +label.isMultislotAppointment.help=Allow the creation of appointments for several people on consecutive slots. Warning ! Can't be changed after from creation. +label.isMultislotAppointment=Activate multi-slot appointments +label.labelNbConsecutiveSlots=Number of consecutive slots (1 per person) +label.nbConsecutiveSlots.help=Set the maximum number of places (value >= 1) +label.nbConsecutiveSlots=Number places to take for consecutive slots. +label.nbWeeksToDisplay.help=Number of weeks to display to users (including the current week) +label.nbWeeksToDisplay=Number of weeks +label.overbooking=Allow overbooking +label.viewAppointment=View an appointment +label.viewForm=View an appointment form +label=Category label +labelAddTemplate=Create a template +labelCancel=Cancel +labelCancelAppointment=Cancel appointment +labelDescription=Description +labelModifyAppointment=Modify appointment +labelModifyDateAppointment=Modify appointment date +labelNbConsecutiveSlots=Number of consecutive slots (1 per person) +labelNbMaxAppointments.help=Indicate the maximum number of appointments a user is allowed to make (0: no constraint) +labelNbMaxAppointments=Maximum number of allowed appointments +labelNbPlaces=Number of people +labelPeople=people +labelReport=Report +labelSearch=Search +labelTemplatePathSize=The title of the template must not exceed 255 characters +labelValidate=Validate +labelValidateAppointment=Approve appointment +labelViewAppointment=View appointment +labelDisplay=Display +labelEmail=Email +labelFirstName=First Name +labelFrom=from +labelLastName=Last Name +labelLoading=Loading appointments +labelPhoneNumber=Phone Number +labelReport= Report +labelSave=Save +labelStatus=Status +labelTemplatePathSize=The title of the template must not be more than 255 characters +labelThe=The +labelTitle=Title +labelTo=to +manage.appointmentforms.title=Manage Appointment Forms +manageAppointmentCalendar.pageTitle=Appointment management by calendar +manageAppointmentForms.Copy=Duplicate of +manageAppointmentForms.buttonAdd=Create a form +manageAppointmentForms.labelConfig=Config +manageAppointmentForms.labelCopy=Duplicate +manageAppointmentForms.labelDisable=Disable +manageAppointmentForms.labelEnable=Enable +manageAppointmentForms.labelManageAppointments=Manage Appointments +manageAppointmentForms.labelModifyMessages=Messages +manageAppointmentForms.labelManageAppointments=Appointments management +manageAppointmentForms.labelModifyMessages=Edit messages +manageAppointmentForms.labelPlanning=Planning +manageAppointments.columnAdmin=Administrator +manageAppointments.columnDateAppointmentTaken=Taken on: +manageAppointments.columnEmail=Email +manageAppointments.columnFirstName=First Name +manageAppointments.columnFormCategory=Category +manageAppointments.columnFormTitle=Form Title +manageAppointments.columnLastName=Last Name +manageAppointments.columnName=Login +manageAppointments.columnNbBookedSeats=Places +manageAppointments.columnNumberOfBookedseatsPerAppointment=Number of booked places +manageAppointments.columnPhoneNumber=Phone Number +manageAppointments.columnState=Status +manageAppointments.endingDateOfSearch=To +manageAppointments.labelModifyAppointment=Edit appointment +manageAppointments.labelModifyDateAppointment=Modify the date of the appointment +manageAppointments.labelSearch=Search +manageAppointments.labelValidateAppointment=Confirm the appointment +manageAppointments.labelViewAppointment=View appointment +manageAppointments.nbMaxAppointmentsForExport=To much appointments to export. Please refine the search +manageAppointments.pageTitle=Appointment management by filter +manageAppointments.reference=reference +manageAppointments.startingDateOfSearch=From +manageCalendarSlots.chooseThisSlot=Choose this slot +manageCalendarSlots.labelAddAppointment=Book this slot +manageCalendarSlots.labelClosed=Closed +manageCalendarSlots.labelEdit=Ongoing reservation +manageCalendarSlots.labelEditFull=No space available at the moment +manageCalendarSlots.labelFriday=Friday +manageCalendarSlots.labelFull=Full +manageCalendarSlots.labelMonday=Monday +manageCalendarSlots.labelSaturday=Saturday +manageCalendarSlots.labelSunday=Sunday +manageCalendarSlots.labelThursday=Thursday +manageCalendarSlots.labelTuesday=Tuesday +manageCalendarSlots.labelWednesday=Wednesday +manageCalendarTemplates.labelTemplatePath=Template path +manageCalendarTemplates.name=Manage calendar templates +manageCategories.description=Category manager +manageCategories.name=Manage categories +manageComment.description=Manage comments and notifications +manageComment.name=Manage comments and notifications +manageHolidays.labelClosinglabelFormatFile=Format: .xlsx +manageHolidays.labelImport=Import closing days +manage_comments.buttonAdd=Add a comment +manage_comments.columnEndingValidityDate=To +manage_comments.columnIdForm=Form +manage_comments.columnStartingValidityDate=From +manage_comments.columnUserCreator=User +manage_comments.pageTitle=Manage comments +manage_comments.title=List of Comments +message.appointmentForm.placesMax=You can book as many places as you want +message.cantRemove.activate.form=You cannot delete this form. You must first deactivate it. +message.cantRemove.form=You cannot delete this form. You must first delete the appointments associated with this form +message.cantRemoveEntry.resourceAttached=You cannot delete this field. You must first delete the associated appointments to this form +message.cantRemoveEntry=You cannot delete this field: {0} +message.categoryIsAffected.errorRemoveCategory=The category cannot be removed, one or more forms are affected by this category. +message.confirmRemoveAppointmentForm=Are you sure you want to delete this appointment form? +message.confirmRemoveComment=Are you sure you want to delete this comment? +message.confirmRemoveEntry=Are you sure you want to delete this field? +message.confirmRemoveField=Are you sure you want to delete this question? +message.confirmRemoveMassAppointment=Are you sure you want to delete these appointments ? +message.confirmRemoveWeekDefinition=Are you sure you want to delete these parameters for this date ? +message.error.MaxAppointmentPeriode=You have exceeded the maximum number of appointments for this period +message.error.appointment.edit.expired.time=The duration of the appointment creation/modification has expired. Please try again. +message.error.appointmentOnSlot=The slots affected by this modification contain appointments. Please delete the appointments for this slot(s) before making any modifications. +message.error.canNotCancelPassedAppointment=You can no longer cancel this appointment +message.error.closingDayErrorImport=Error importing the file +message.error.canNotCancelPassedAppointment=You can't cancel this appointment +message.error.closingDayErrorImport=Error Importing File +message.error.confirmEmail=The confirmation email is not valid +message.error.dateAppointment=The date is not valid +message.error.dateStartAfterTimeEnd=The end date of validity must not be earlier than the start date of validity +message.error.durationAppointmentDayNotMultipleForm=Be careful with the duration of the opening slots. For example, if you have slots of 20 minutes with a day from 9am to 7:30pm, the system cannot create the last slot and blocks the opening +message.error.errorModification=Oops! You cannot apply a week to dates prior to today +message.error.fieldValue=The value field must not contain special characters or spaces +message.error.formatDaysBeforeAppointment=The "Minimum appointment delay" field must be a valid integer +message.error.formatDaysBeforeAppointmentMiddleSuperior=The "Average appointment duration" field must be less than the bounded start and end dates. +message.error.lastWeekDefinition=You cannot delete the only definition of the typical week. You can possibly modify the parameters by applying the same validity date. +message.error.multiSlot.numberOfSeatsBookedAndConcurrentAppointments=The maximum number of bookable seats must be equal to 1 because the option to make appointments on multiple slots is enabled. +message.error.nbDaysBetweenTwoAppointments=Enabling email entry is mandatory when the minimum duration between two appointments is defined. +message.error.nbMaxAppointmentsPerUser=Enabling email entry is mandatory when the maximum number of allowed appointments for a given period is defined. +message.error.nbplacestotake.toobig=The number of places you entered is too large. +message.error.noAppointmentFormSelected=Please select an appointment form. +message.error.noAppointmentWithThisReference=No appointment with this reference +message.error.noWorkingDayChecked=At least one day must be open +message.error.numberOfSeatsBookedAndConcurrentAppointments=The maximum number of reserved seats must be less than or equal to the number of concurrent appointments. +message.error.openSlots=Appointments are already booked for the days you want to close. The following closed days are not imported: {0} +message.error.parsing.json=Error parsing data +message.error.refreshDays.modifyFormHasAppointments=Appointments are associated with the upcoming weeks of this form. Please delete these appointments before modifying the form. +message.error.removeWeek.date.passed=You cannot delete this week, it is applied in the past. +message.error.removeWeek=Error when removing the week +message.error.report.appointment=You cannot reschedule this appointment, it is no longer valid. +message.error.rule.assigned=Please unassign the calendar week before deletion! +message.error.slotCanNotEndAfterDayOrForm=A slot cannot end after the closing time of the form's day +message.error.slotFull=The selected slot is no longer available. Please choose another one. +message.error.startDateEmpty=Please enter a start date for the modifications. +message.error.timeStartAfterTimeEnd=The end time must not be earlier than the start time +message.error.unknownRef=The entered reference does not match any appointment +message.error.week.assigned.past=You cannot edit this week, it is applied in the past. +message.info.alreadyCancelled=This appointment has already been cancelled +message.labelStatusNotValidated=Not validated +message.labelStatusReserved=Reserved +message.labelStatusUnreserved=Not reserved +message.mandatory.entry=This field is mandatory. +model.entity.appointmentform.attribute.calendarTemplateId=Calendar template +model.entity.appointmentform.attribute.capacityPerSlot=Maximum theoretical capacity per time slot +model.entity.appointmentform.attribute.dateEndValidity=End date of validity +model.entity.appointmentform.attribute.dateStartValidity=Start date of validity +model.entity.appointmentform.attribute.dateTaken=Date of appointment +model.entity.appointmentform.attribute.durationAppointments=Appointment duration +model.entity.appointmentform.attribute.hourTaken=Time of appointment +model.entity.appointmentform.attribute.idForm=Identifier +model.entity.appointmentform.attribute.isActive=Active +model.entity.appointmentform.attribute.maxCapacityPerSlot=Number of simultaneous appointments +model.entity.appointmentform.attribute.maxPeoplePerAppointment=Maximum number of reserved seats +model.entity.appointmentform.attribute.nbConsecutiveSlots=Multiple time slots +model.entity.appointmentform.attribute.nbWeeksToDisplay=Number of weeks to display to users +model.entity.appointmentform.attribute.timeEnd=End time +model.entity.appointmentform.attribute.timeStart=Start time +modify.category.title=Edit category +modifyAppointmentForm.deleteIcon=Delete the icon from the front office form +modifyAppointmentForm.helpCancelUploadIcon=Cancel file upload +modifyAppointmentForm.helpDateMin=Format DD/MM/YYYY. The modifications will only take effect from this date +modifyAppointmentForm.helpFormatIcon=Format jpeg, png .. +modifyAppointmentForm.labelInsertEntry=Insert a field +modifyAppointmentForm.listDateOfModification=Parameter modification date +modifyAppointmentForm.select=Select +modifyAppointmentForm.selectAll=Select all +modifyAppointmentForm.startDate=From +modifyAppointmentForm.startEditForm=Date of modifications +modifyAppointmentForm.title=Edit Appointment Form +modifyAppointmentForm.titleAlterablesParameters=General Parameters +modifyAppointmentForm.titleStructuralsParameters=Advanced Parameters +modifyAppointmentFormEntries.pageTitle=Appointment Form +modifyAppointmentFormMessages.labelCalendarDescription=Calendar help text +modifyAppointmentFormMessages.labelCalendarFullLabel=Label indicating that a slot is full +modifyAppointmentFormMessages.labelCalendarReserveLabel=Label indicating that a slot is open for reservation +modifyAppointmentFormMessages.labelCalendarTitle=Calendar title in Front Office +modifyAppointmentFormMessages.labelFieldEmailConfirmation=Confirmation email title +modifyAppointmentFormMessages.labelFieldEmailConfirmationHelp=Help for the "confirmation email" field in Front Office +modifyAppointmentFormMessages.labelFieldEmailHelp=Help for the "email" field in Front Office +modifyAppointmentFormMessages.labelFieldEmailTitle=Title of the "email" field in Front Office +modifyAppointmentFormMessages.labelFieldFirstNameHelp=Help for the "first name" field in Front Office +modifyAppointmentFormMessages.labelFieldFirstNameTitle=Title of the "first name" field in Front Office +modifyAppointmentFormMessages.labelFieldLastNameHelp=Help for the "last name" field in Front Office +modifyAppointmentFormMessages.labelFieldLastNameTitle=Title of the "last name" field in Front Office +modifyAppointmentFormMessages.labelLabelButtonRedirection=Label of the redirection button +modifyAppointmentFormMessages.labelNoAvailableSlot=Text to display to the user when no slots are available +modifyAppointmentFormMessages.labelTextAppointmentCanceled=Text to display to the user after canceling an appointment +modifyAppointmentFormMessages.labelTextAppointmentCreated=Text to display to the user after creating an appointment +modifyAppointmentFormMessages.labelTextAppointmentCreatedHelp=In the appointment creation text, you can use the following variables: +modifyAppointmentFormMessages.labelUrlRedirectAfterCreation=URL to redirect to after creating an appointment +modifyAppointmentFormMessages.pageTitle=Modify form messages +modifyCalendarMultiSlots.messageSurbooking=Warning, non-canceled appointments are attached to the slots you have modified. There will be overbooking on the slots {0} +modifyCalendarSlots.errorDayHasAppointment=It is impossible to modify the end time of a slot associated with a day that has at least one appointment. Please delete this or these appointments before continuing. +modifyCalendarSlots.errorTimeEndBeforeTimeStart=The end time of a slot must be after its start time +modifyCalendarSlots.errorWeekIsOpenFo=The week is open on the FO calendar! Please disable the form to edit this week. +modifyCalendarSlots.messageOverload=(*) Slots marked with an asterisk are specific to this week +modifyCalendarSlots.messageSlotUpdated=The slot has been successfully modified +modifyCalendarSlots.messageSurbooking=Warning, non-canceled appointments are attached to the slot you have modified. There will be overbooking on this slot +modifyCalendarSlots.messageValidatedAppointmentsImpacted=Warning, non-canceled appointments are attached to the slot you have modified. Remember to cancel them +modifyCalendarSlots.pageTitle=Modify a slot +modifyCalendarSlots.warningModifiyingEndingTime=Warning, modifying the end time of a slot will automatically reset all following slots for that day +modifyEntry.buttonApply=Apply +modifyEntry.titleComment=Modifying a comment for the form +modifyEntry.titleGroup=Modifying a group for the form +modifyEntry.titleQuestion=Modifying a question for the form +modifyField.address=Address +modifyField.manageConditionalQuestion.rowConditionalQuestion=Associated conditional questions +modifyField.manageConditionalQuestion.title=List of conditional questions +modifyField.manageConditionalQuestion.titleGoOut=Exit +modifyField.title=Modify a response to the question +modifySlot.helpModifyEndSlot=If you change the end time of the slot to a time that is not a multiple of the usual slot time, select below the option chosen for the following slots +modifySlot.labelCapacityChange=Capacity change +modifySlot.labelClose=Close +modifySlot.labelDate=Slot date +modifySlot.labelMaxCapacityForThisSlot=Maximum capacity for this slot +modifySlot.labelNewCapacity=New capacity +modifySlot.labelNoValue=Do not modify +modifySlot.labelOpen=Open +modifySlot.labelOpenHelp=Choose whether you want to open, close, or do nothing for the selected slot(s). +modifySlot.labelSlotStatus=Status of the slot(s) +modifySlot.notShiftSlot=Do not shift the following slots. +modifySlot.shiftSlot=Shift the following slots from the specified end time. +modify_comment.labelEndingValidityDate.help=End date of comment validity +modify_comment.labelEndingValidityDate=To +modify_comment.labelEndingValidityTime=at +modify_comment.labelStartingValidityDate.help=Start date of comment validity +modify_comment.labelStartingValidityDate=From +modify_comment.labelStartingValidityTime=at +modify_comment.pageTitle=Modify a comment +move.name=Move +moveAll.name=Move all +moveDown.title=Move down +moveUp.title=Move up +myAppointments.labelAppointmentFormTitle=Type of appointment +myAppointments.labelDateAppointment=Date +myAppointments.labelTime=Time +myAppointments.name=My appointments +name=Appointment +nbConsecutiveSlots.help=Enter the maximum number of places (value >= 1) +nbConsecutiveSlots=Number of places for consecutive slots +pageTitle=Manage appointments by calendar +pageTitle=Manage appointments by filter +pageTitle=Task form +pageTitle=View appointment +nbPlacesToTakeForm.labelNbPlaces=Number of people +nbPlacesToTakeForm.labelPeople=People +nbPlacesToTakeForm.labelValidate=Validate +permission.label.addComment=Create Comments +permission.label.changeAppointmentStatus=Validate or Cancel an appointment +permission.label.changeState=Activate/Deactivate a form +permission.label.createAppointment=Create an appointment +permission.label.createForm=Create an appointment form +permission.label.deleteAppointment=Delete an appointment +permission.label.deleteForm=Delete a form +permission.label.deleteMassAppointment=Delete appointments +permission.label.exportMassAppointment=Export results +permission.label.moderateComment=Moderate Comments +permission.label.modifyAdvancedSettingForm=Edit the advanced settings of a form +permission.label.modifyForm=Edit a form +permission.label.viewAppointment=View an appointment +permission.label.viewForm=View a form +plugin.description=Manage appointment requests +portlet.appointmentFormListPortlet.name=List of appointment request forms +provider=City Hall of Paris +reference=Reference +portlet.appointmentFormListPortlet.name=List of Appointment Request Forms +regularExpression.label=Verification rule +removeCalendarTemplate.confirmRemoveTemplate=Do you really want to delete this template? +removeCalendarTemplate.infoTemplateRemoved=The template has been successfully deleted +site_properties.description=Number of places for multiple time slots +site_properties.name=Number of places +site_property.nbplaces.help=Enter the maximum number of places +site_property.nbplaces=Enter the maximum number of places +specificDay.pageTitle=Day view +specificWeek.pageTitle=Specific week +startingDateOfSearch=From +taskFormWorkflow.pageTitle=Task form +task_notify_appointment_comment_config.label_comment=The Comment +task_notify_appointment_comment_config.label_creation_date=Comment creation date +task_notify_appointment_comment_config.label_creator_user_name=Name of the user who created the comment +task_notify_appointment_comment_config.label_date_end_validity=End date of comment validity +task_notify_appointment_comment_config.label_date_start_validity=Start date of comment validity +task_notify_appointment_comment_config.label_form_id=Form ID +task_notify_appointment_comment_config.label_form_titlet=Form Title +task_notify_appointment_comment_config.label_message=Email Content +task_notify_appointment_comment_config.label_sender_name=Email Sender Name +task_notify_appointment_comment_config.label_subject=Email Subject +task_notify_appointment_comment_config.label_time_end_validityt=End time of comment validity +task_notify_appointment_comment_config.label_time_start_validity=Start time of comment validity +task_notify_appointment_comment_config.title=Notification Message Configuration +title=Appointment date +title=Create a category +title=Modify a category +type.name=Type +typicalWeek.buttonLabelCreate=Create typical week +typicalWeek.pageTitle=Typical week +validation.appointment.Email.email=Please enter a valid email address +validation.appointment.Email.notEmpty=Please enter an email address +validation.appointment.Email.size=Email address must be less than 255 characters +validation.appointment.EmailConfirmation.email=Please enter a confirmation email address +validation.appointment.FirstName.NoSpecialCharacter=The first name must not contain special characters +validation.appointment.FirstName.notEmpty=Please enter a first name +validation.appointment.FirstName.size=First name must contain less than 255 characters +validation.appointment.Icon.notEmpty=Please add an icon for the form +validation.appointment.LastName.NoSpecialCharacter=The last name must not contain special characters +validation.appointment.LastName.notEmpty=Please enter a last name +validation.appointment.LastName.size=Last name must contain less than 255 characters +validation.appointment.NbBookedSeat.error=There are not enough available seats for your request. Please choose another time slot. +validation.appointment.NbBookedSeat.notEmpty=Number of seats must not be empty. +validation.appointment.NbBookedSeat.notNumberFormat=The number of seats must be an integer. +validation.appointment.NbMaxAppointmentsOnAPeriod.error=The maximum number of allowed appointments has been reached for this period +validation.appointment.NbMaxAppointmentsOnCategory.error=The maximum number of allowed appointments has been reached! To make another appointment, please cancel one of your following appointments: {0} +validation.appointment.NbMinDaysBetweenTwoAppointments.error=You cannot make an appointment on this date. The number of days since your last appointment is not sufficient. +validation.appointment.formNoMoreValid=The form is no longer valid +validation.appointment.formNotActive=The form is not active +validation.appointment.noAvailableSlot=No available time slot +validation.appointment.noStartingValidityDate=The form has no starting validity date +validation.appointmentform.Description.notEmpty=The Description field must not be empty. +validation.appointmentform.NbWeeksToDisplay.notEmpty=The Number of weeks to display field must be at least one. +validation.appointmentform.Title.notEmpty=The Title field must not be empty. +validation.appointmentform.Title.size=The Title field must not contain more than 255 characters. +validation.appointmentform.fromTimeSeizure.notEmpty=The Form seizure duration field must not be empty. +validation.week.color.notEmpty=Please choose a color +validation.week.color.size=The color must contain less than 255 characters +validation.week.description.notEmpty=Please enter a description +validation.week.description.size=The description must contain less than 255 characters +validation.week.name.notEmpty=Please enter a name +validation.week.name.size=The name must contain less than 255 characters +value.name=Value +viewAppointment.pageTitle=Visualization of an appointment +viewAppointmentFormMessages.labelAppointmentTakenBy=Appointment taken by +viewAppointmentFormMessages.labelAppointmentUser=in front-office +viewAppointmentFormMessages.labelAppointmentUserBO=in back-office by +week.toApplay=Applied Week: +wf.action.success=Success +xpage.form.noValue=No value +xpage.formList.labelFormList=List of forms +xpage.formList.noForm=No form is currently enabled \ No newline at end of file diff --git a/citelibre-rendezvous/webapp/WEB-INF/conf/override/classes/fr/paris/lutece/plugins/appointment/resources/appointment_messages_en.properties b/citelibre-rendezvous/webapp/WEB-INF/conf/override/classes/fr/paris/lutece/plugins/appointment/resources/appointment_messages_en.properties new file mode 100644 index 0000000..1ff369b --- /dev/null +++ b/citelibre-rendezvous/webapp/WEB-INF/conf/override/classes/fr/paris/lutece/plugins/appointment/resources/appointment_messages_en.properties @@ -0,0 +1,651 @@ +BoOverbooking.help=Allow overbooking when making appointments using the BO form +BoOverbooking=Allow overbooking on BO side +Cancel=Cancel +CancelAppointment=Cancel appointment +Display=Display +Email=Email +FirstName=First Name +From=From +LastName=Last Name +Loading=Loading appointments +ManageAppointmentForm.description=Manage appointments +ManageAppointmentForm.name=Manage appointments +OpenFriday=Open on Friday +OpenMonday=Open on Monday +OpenSaturday=Open on Saturday +OpenSunday=Open on Sunday +OpenThursday=Open on Thursday +OpenTuesday=Open on Tuesday +OpenWednesday=Open on Wednesday +PhoneNumber=Phone Number +Save=Save +Status=Status +The=The +Title=Title +To=To +actions.label=Actions +adminFeature.ManageAppointmentForm.description=Appointment management +adminFeature.ManageAppointmentForm.name=Manage appointments +adminFeature.manageCalendarTemplates.name=Manage calendar templates +adminFeature.manageCategories.description=Manage Categories +adminFeature.manageCategories.name=Categories Management +adminFeature.manageComment.description=Comments and Notification Management +adminFeature.manageComment.name=Comments and Notification Management +annual.calendar.pageTitle=Annual View +annual.label.daySpecifity=Days with specificities +anonymization.form.help=Form ID +appointment.message.error.nbplacestotake.toobig=The number of places your entered is too big. +appointment.name.create=Make new appointment +appointment.name=Appointment +appointmentApp.calendar=Calendar +appointmentApp.choiceOfDate=Choice of date +appointmentApp.confirmation=Confirmation +appointmentApp.defaultTitle=Request an appointment +appointmentApp.enteringInformation=Entering information +appointmentApp.infos=Enable/Disable all appointments +appointmentApp.next=Next +appointmentApp.nextDay=Next day +appointmentApp.nextWeek=Next week +appointmentApp.prev=Previous +appointmentApp.previousDay=Previous day +appointmentApp.previousWeek=Previous week +appointmentApp.recap.title=Summary +appointmentApp.validation.title=Validation of input +appointmentApp.validation=Validation of input +appointmentApp.validationText=Please check that the information entered is correct and click on validate +appointmentCalendar.labelChooseDate=Choose a date +appointmentCalendar.labelLegendSlotAvaiable=Available +appointmentCalendar.labelLegendSlotNotAvaiable=Not available +appointmentForm.name=Appointment request form +assign.typicalWeek.defaultTitle=Assign Typical Week +buttonAdd=Add a category +calendarTemplate.labelDescriptionBlank=The description of the template must not be empty +calendarTemplate.labelDescriptionSize=The description of the template must not exceed 255 characters +calendarTemplate.labelTemplatePathBlank=Please choose a file for the template +calendarTemplate.labelTitleBlank=The title of the template must not be empty +cancelAppointment.labelRefAppointment=Appointment reference +cancelAppointment.labelTimeAppointment=Appointment time +cancelAppointment.pageTitle=I want to cancel this appointment +clearAddress=Clear address +columnAdmin=Assigned administrator +columnEmail=Email +columnFirstName=First Name +columnFormCategory=Category +columnFormTitle=Form +columnId=Id +columnLabel=Label +columnLabelNbMaxAppointments=Maximum number of allowed appointments +columnLastName=Last Name +columnName=Login +columnNbBookedSeats=Seats +columnNumberOfBookedseatsPerAppointment=Number of booked seats +columnPhoneNumber=Phone Number +columnState=State +comment.name=Comment +confirmRemoveAppointment=Are you sure you want to delete this appointment? +confirmRemoveCategory=Are you sure you want to delete this category? +confirmRemoveMassAppointment=Are you sure you want to delete these appointments? +confirmRemoveWeekDefinition=Are you sure you want to delete this week definition? +copyEntry.title=Copy of question {0} +createAppointmentForm.LabelWeekType=Definition of the first week type +createAppointmentForm.accesscontrol.label.help=Select the access control associated with the form +createAppointmentForm.accesscontrol.label=Access control +createAppointmentForm.label.BoOverbooking.help=Allow overbooking when making appointments on the BO side +createAppointmentForm.label.BoOverbooking=Allow overbooking on the BO side +createAppointmentForm.labelActiveAuthentication=Enable authentication +createAppointmentForm.labelAnonymizable.genattField=Anonymizable +createAppointmentForm.labelAnonymizable=Anonymize user information (name, first name, and email) +createAppointmentForm.labelAnonymizePattern.help=%f Form ID, %g Random GUID, %n Random number +createAppointmentForm.labelAnonymizePattern=Anonymization pattern +createAppointmentForm.labelAppointmentTitlesAsked=Number of people involved +createAppointmentForm.labelCalendarTemplate=Calendar template +createAppointmentForm.labelCapacityPerSlot.help=Maximum theoretical capacity per time slot (value >= 1) +createAppointmentForm.labelCapacityPerSlot=Maximum Theoretical Capacity per Slot +createAppointmentForm.labelCategory=Form Category +createAppointmentForm.labelColor=Week Color +createAppointmentForm.labelDateEndValidity.help=Format DD/MM/YYYY. The form will be unavailable after this date +createAppointmentForm.labelDateEndValidity=End date of form validity +createAppointmentForm.labelDateStartValidity.help=Format DD/MM/YYYY. The form will be unavailable before this date +createAppointmentForm.labelDateStartValidity=Start date of form validity +createAppointmentForm.labelDescriptionRule=Week Description +createAppointmentForm.labelDurationAppointments.help=In minutes. Pay attention to the duration of opening slots. For example, if you have 20-minute slots with a daily schedule from 9am to 7:30pm, the system cannot create the last slot and blocks the opening. +createAppointmentForm.labelDurationAppointments=Average duration of appointments +createAppointmentForm.labelEnableCaptcha=Enable Captcha +createAppointmentForm.labelEnableMandatoryEmail=Enable mandatory email entry +createAppointmentForm.labelIconForm=Add an icon to the form +createAppointmentForm.labelMaxCapacityPerSlot.help=Maximum number of people for a slot +createAppointmentForm.labelMaxCapacityPerSlot=Maximum capacity per slot +createAppointmentForm.labelMaxPeoplePerAppointment.help=Maximum number of bookable seats for the same person for the same slot +createAppointmentForm.labelMaxPeoplePerAppointment=Maximum number of bookable seats +createAppointmentForm.labelMinTimeBeforeAppointment.help=In hours. Minimum time between the current time and the proposed time of the first slot (without taking into account opening hours; 0: no constraint) +createAppointmentForm.labelMinTimeBeforeAppointment=Minimum time before making an appointment +createAppointmentForm.labelName=Week Name +createAppointmentForm.labelNbDaysBeforeNewAppointment.help=In days. Defines the minimum number of days for a user before making another appointment (0: no constraint) +createAppointmentForm.labelNbDaysBeforeNewAppointment=Minimum duration between two appointments (in number of days) +createAppointmentForm.labelNbDaysForMaxAppointments.help=Indicate in number of days the period over which the user can make the n appointments previously specified. (0: no constraint) +createAppointmentForm.labelNbDaysForMaxAppointments=Period +createAppointmentForm.labelNbMaxAppointments.help=Indicate the maximum number of appointments that a user is allowed to make in a given period (period to be defined below) (0: no constraint) +createAppointmentForm.labelNbMaxAppointments=Maximum number of allowed appointments in a given period +createAppointmentForm.labelNumberOfBookedseatsPerAppointment=Number of seats to book +createAppointmentForm.labelReference.help=Indicates a reference prefix for appointments (Leave blank for no reference) +createAppointmentForm.labelReference=Appointment Reference +createAppointmentForm.labelRole=User Role +createAppointmentForm.labelTimeEnd.help=Daily schedule for the end of appointments (HH:MM). The end time should not be earlier than the start time. +createAppointmentForm.labelTimeEnd=End Time for Appointments +createAppointmentForm.labelTimeStart.help=Daily schedule for the start of appointments (HH:MM) +createAppointmentForm.labelTimeStart=Start Time for Appointments +createAppointmentForm.labelTitle=Form Title +createAppointmentForm.labelTitleDaysOpen=Opening Days +createAppointmentForm.labelWorkflow=Workflow +createAppointmentForm.labelWorkgroup=Workgroup +createAppointmentForm.title=Create an appointment form +createCategory.label=Category label +createCategory.labelNbMaxAppointments.help=Maximum number of authorized appointments (0: no constraint) +createCategory.labelNbMaxAppointments=Maximum number of authorized appointments +createEntry.buttonApplyAndManageResponse=Save and manage responses +createEntry.buttonApplyAndManageVerification=Save and manage verifications +createEntry.labelAttributeName=Session attribute +createEntry.labelAttributeNameComment=Name of the session attribute to retrieve (e.g. FORM_ID_DEMAND, FORM_USER_GUID...) +createEntry.labelCSSClass=CSS classes +createEntry.labelCSSClassComment=The CSS classes of the field must be separated by a space +createEntry.labelConfirmField=Confirmation field for input +createEntry.labelConfirmFieldTitle=Confirmation field title +createEntry.labelExportBinary=Export binaries +createEntry.labelExportBinaryComment=Check this box if you want to have binaries in the exports of the form responses. +createEntry.labelExportBinaryWarning=Exporting binaries can slow down the export operations of the form responses. +createEntry.labelFileMaxSize=Maximum file size (in bytes) +createEntry.labelHeight=Height of the text area +createEntry.labelHelpMessage=Help +createEntry.labelHelpMessageComment=If text is entered, a help icon will appear on the screen. By clicking on it, the user can view this text. +createEntry.labelHelpSqlQuery=Query structure: SELECT column_numeric_id, column_text FROM table +createEntry.labelMandatory=Mandatory +createEntry.labelMandatoryCheckBoxHelp=All checkboxes must be checked +createEntry.labelMandatoryCommentForEntryTypeSession=Check this box if you want to display the form only if there is a value in this session attribute. +createEntry.labelMandatoryErrorMessage=Error message if no value is entered +createEntry.labelMandatoryErrorMessageHelp=Leave blank to display the default error message. +createEntry.labelMaxFiles=Maximum number of files +createEntry.labelMaxSizeEnter=Maximum length of entered text +createEntry.labelOnlyDisplayInBack=Display this field only in the back office +createEntry.labelPrefix=Prefix +createEntry.labelPrefixComment=Numbering prefix +createEntry.labelPresentation=Presentation model +createEntry.labelSqlQuery=SQL query +createEntry.labelThumbnailHeight=Maximum thumbnail height +createEntry.labelThumbnailWidth=Maximum thumbnail width +createEntry.labelTitleComment=Statement of the question asked +createEntry.labelType=Question type +createEntry.labelUniqueField=Test the uniqueness of the response +createEntry.labelUseRichText=Use a rich text editor +createEntry.labelUseRichTextComment=Check to add a BBCode editor +createEntry.labelWidth=Text box length +createEntry.manageField.buttonInsert=Create a response +createEntry.manageField.buttonItemsPerPage=Modify +createEntry.manageField.labelFieldNumber=Number of responses +createEntry.manageField.labelItemsPerPage=Number of lines per page +createEntry.manageField.rowConditionalQuestion=Conditional questions +createEntry.manageField.rowDefaultValue=default value +createEntry.manageField.rowOrder=Order +createEntry.manageField.rowValue=value +createEntry.manageField.title=Response list +createEntry.manageField.titleCopy=Copy +createEntry.manageField.titleDisable=Disable +createEntry.manageField.titleEnable=Enable +createEntry.manageRegularExpression.labelInsertComment=The selected regular expressions will be used to control user input. Example: When asking for the respondent's email address, a check on the presence of @ can be performed by selecting the appropriate regular expression. +createEntry.manageRegularExpression.rowTitle=Rule name +createEntry.manageRegularExpression.rowValidExemple=Valid example +createEntry.manageRegularExpression.title=List of used checks +createEntry.selectPresentationInLine=In line +createEntry.selectPresentationNotInLine=In column +createEntry.titleComment=Creating a comment for the form +createEntry.titleQuestion=Creating a question for the form +createField.labelNoDisplayTitle=Do not display the response title +createField.title=Create a response to the question +createForm=Create an appointment form +createModifyCalendarTemplate.infoTemplateCreated=The template has been created successfully +createModifyCalendarTemplate.infoTemplateUpdated=The template has been successfully updated +createModifyCalendarTemplate.labelTemplatePath=HTML file of the template +createModifyCalendarTemplate.pageTitleModify=Modify a template +create_comment.labelComment.help=Comment +create_comment.labelComment=Comment +create_comment.labelEndingValidityDate.help=End date of comment validity +create_comment.labelEndingValidityDate=To +create_comment.labelEndingValidityTime=at +create_comment.labelIdForm.help=Form identifier +create_comment.labelIdForm=Identifier +create_comment.labelMailingList.help=Mailing list to notify +create_comment.labelMailingList=Notification list +create_comment.labelNoNotification=No notification +create_comment.labelStartingValidityDate.help=Start date of comment validity +create_comment.labelStartingValidityDate=From +create_comment.labelStartingValidityTime=at +create_comment.pageTitle=Add a comment +create_comment.title=Create a comment +create_comment_label=Content +daemon.slotDaemon.description=Slot deletion daemon in memory whose slot start date is less than the current date +daemon.slotDaemon.name=Slot deletion daemon in memory whose slot start date is less than the current date +dashboard.formList=Appointment forms list +dateAppointment.title=Date of the appointment +defaultValue.name=Default value +delete.title=Delete +description=Appointment request management +displayAppointmentForm.labelReset=Reset +displayAppointmentForm.labelValidate=Validate +displayAppointmentForm.labelValidateAndChangeDate=Validate and change the appointment date +endingDateOfSearch=To +error.appointmentform.endingValidityDateBeforeNow=The end date of validity entered has passed. Please modify it before activating the form. +error.appointmentform.noStartingValidityDate=You must enter a start date of validity before activating the form +export.async.message=Your request is being processed. The file will be available on the 'My File Requests' screen in a few minutes. +export.file.description=Excel File +export.modal.button.ko=Cancel +export.modal.button.ok=OK +export.modal.title=Select fields to export +formAddress=Form address +formList=Appointment form list +formMessages.defaultFieldConfirmationEmailHelp=Help for the email confirmation field +formMessages.defaultFieldConfirmationEmailTitle=Confirm your email +help.formAddress=Form Address Help +info.advancedparameters.removed=Advanced parameters removed +info.advancedparameters.updated=Advanced parameters modified +info.appointment.created=The appointment has been successfully created +info.appointment.emailerror=The maximum number of appointments for this email has been reached +info.appointment.removed=Appointment(s) removed +info.appointment.updated=The appointment has been successfully updated +info.appointmentFormMessages.updated=Form messages modified +info.appointmentform.closingDayImport=Closing days imported +info.appointmentform.created=Appointment form created +info.appointmentform.removed=Appointment form removed +info.appointmentform.updated=Form modified +info.category.created=Category created +info.category.removed=Category removed +info.category.updated=Category modified +info.comment.created=Comment created +info.comment.error=Please check the entered fields +info.comment.removed=Comment deleted +info.comment.rights=You do not have the required rights +info.comment.updated=Comment updated +info.globalparameters.updated=Global parameters modified +insert=Add +isMultislotAppointment.help=This option allows taking appointments for a group of people spread over multiple slots. Warning! This choice is irreversible once the form is created. +isMultislotAppointment=Enable taking appointments on multiple slots +label.addComment=Add comments +label.addressDescription=Form Address Description +label.changeAppointmentStatus=Approve/cancel an appointment +label.changeState=Activate/deactivate an appointment form +label.createAppointment=Create an appointment +label.deleteAppointment=Delete an appointment +label.deleteForm=Delete an appointment form +label.deleteMassAppointment=Delete appointments +label.OpenFriday=Open on Friday +label.OpenMonday=Open on Monday +label.OpenSaturday=Open on Saturday +label.OpenSunday=Open on Sunday +label.OpenThursday=Open on Thursday +label.OpenTuesday=Open on Tuesday +label.OpenWednesday=Open on Wednesday +label.addressDescription=Description form address +label.clearAddress=Delete the address +label.displayOnPortlet.help=Check to display the form on the portlet +label.displayOnPortlet=Display the form on the portlet +label.displayTitleFo.help=Check to display the form title in the Front Office +label.displayTitleFo=Display the title in Front Office +label.exportMassAppointment=Export result +label.moderateComment=Moderate comments +label.modifyAdvancedSettingForm=Modify advanced settings of a form +label.modifyForm=Modify an appointment form +label.formAddress=Appointment location +label.insert=Add +label.isMultislotAppointment.help=Allow the creation of appointments for several people on consecutive slots. Warning ! Can't be changed after from creation. +label.isMultislotAppointment=Activate multi-slot appointments +label.labelNbConsecutiveSlots=Number of consecutive slots (1 per person) +label.nbConsecutiveSlots.help=Set the maximum number of places (value >= 1) +label.nbConsecutiveSlots=Number places to take for consecutive slots. +label.nbWeeksToDisplay.help=Number of weeks to display to users (including the current week) +label.nbWeeksToDisplay=Number of weeks +label.overbooking=Allow overbooking +label.viewAppointment=View an appointment +label.viewForm=View an appointment form +label=Category label +labelAddTemplate=Create a template +labelCancel=Cancel +labelCancelAppointment=Cancel appointment +labelDescription=Description +labelModifyAppointment=Modify appointment +labelModifyDateAppointment=Modify appointment date +labelNbConsecutiveSlots=Number of consecutive slots (1 per person) +labelNbMaxAppointments.help=Indicate the maximum number of appointments a user is allowed to make (0: no constraint) +labelNbMaxAppointments=Maximum number of allowed appointments +labelNbPlaces=Number of people +labelPeople=people +labelReport=Report +labelSearch=Search +labelTemplatePathSize=The title of the template must not exceed 255 characters +labelValidate=Validate +labelValidateAppointment=Approve appointment +labelViewAppointment=View appointment +labelDisplay=Display +labelEmail=Email +labelFirstName=First Name +labelFrom=from +labelLastName=Last Name +labelLoading=Loading appointments +labelPhoneNumber=Phone Number +labelReport= Report +labelSave=Save +labelStatus=Status +labelTemplatePathSize=The title of the template must not be more than 255 characters +labelThe=The +labelTitle=Title +labelTo=to +manage.appointmentforms.title=Manage Appointment Forms +manageAppointmentCalendar.pageTitle=Appointment management by calendar +manageAppointmentForms.Copy=Duplicate of +manageAppointmentForms.buttonAdd=Create a form +manageAppointmentForms.labelConfig=Config +manageAppointmentForms.labelCopy=Duplicate +manageAppointmentForms.labelDisable=Disable +manageAppointmentForms.labelEnable=Enable +manageAppointmentForms.labelManageAppointments=Manage Appointments +manageAppointmentForms.labelModifyMessages=Messages +manageAppointmentForms.labelManageAppointments=Appointments management +manageAppointmentForms.labelModifyMessages=Edit messages +manageAppointmentForms.labelPlanning=Planning +manageAppointments.columnAdmin=Administrator +manageAppointments.columnDateAppointmentTaken=Taken on: +manageAppointments.columnEmail=Email +manageAppointments.columnFirstName=First Name +manageAppointments.columnFormCategory=Category +manageAppointments.columnFormTitle=Form Title +manageAppointments.columnLastName=Last Name +manageAppointments.columnName=Login +manageAppointments.columnNbBookedSeats=Places +manageAppointments.columnNumberOfBookedseatsPerAppointment=Number of booked places +manageAppointments.columnPhoneNumber=Phone Number +manageAppointments.columnState=Status +manageAppointments.endingDateOfSearch=To +manageAppointments.labelModifyAppointment=Edit appointment +manageAppointments.labelModifyDateAppointment=Modify the date of the appointment +manageAppointments.labelSearch=Search +manageAppointments.labelValidateAppointment=Confirm the appointment +manageAppointments.labelViewAppointment=View appointment +manageAppointments.nbMaxAppointmentsForExport=To much appointments to export. Please refine the search +manageAppointments.pageTitle=Appointment management by filter +manageAppointments.reference=reference +manageAppointments.startingDateOfSearch=From +manageCalendarSlots.chooseThisSlot=Choose this slot +manageCalendarSlots.labelAddAppointment=Book this slot +manageCalendarSlots.labelClosed=Closed +manageCalendarSlots.labelEdit=Ongoing reservation +manageCalendarSlots.labelEditFull=No space available at the moment +manageCalendarSlots.labelFriday=Friday +manageCalendarSlots.labelFull=Full +manageCalendarSlots.labelMonday=Monday +manageCalendarSlots.labelSaturday=Saturday +manageCalendarSlots.labelSunday=Sunday +manageCalendarSlots.labelThursday=Thursday +manageCalendarSlots.labelTuesday=Tuesday +manageCalendarSlots.labelWednesday=Wednesday +manageCalendarTemplates.labelTemplatePath=Template path +manageCalendarTemplates.name=Manage calendar templates +manageCategories.description=Category manager +manageCategories.name=Manage categories +manageComment.description=Manage comments and notifications +manageComment.name=Manage comments and notifications +manageHolidays.labelClosinglabelFormatFile=Format: .xlsx +manageHolidays.labelImport=Import closing days +manage_comments.buttonAdd=Add a comment +manage_comments.columnEndingValidityDate=To +manage_comments.columnIdForm=Form +manage_comments.columnStartingValidityDate=From +manage_comments.columnUserCreator=User +manage_comments.pageTitle=Manage comments +manage_comments.title=List of Comments +message.appointmentForm.placesMax=You can book as many places as you want +message.cantRemove.activate.form=You cannot delete this form. You must first deactivate it. +message.cantRemove.form=You cannot delete this form. You must first delete the appointments associated with this form +message.cantRemoveEntry.resourceAttached=You cannot delete this field. You must first delete the associated appointments to this form +message.cantRemoveEntry=You cannot delete this field: {0} +message.categoryIsAffected.errorRemoveCategory=The category cannot be removed, one or more forms are affected by this category. +message.confirmRemoveAppointmentForm=Are you sure you want to delete this appointment form? +message.confirmRemoveComment=Are you sure you want to delete this comment? +message.confirmRemoveEntry=Are you sure you want to delete this field? +message.confirmRemoveField=Are you sure you want to delete this question? +message.confirmRemoveMassAppointment=Are you sure you want to delete these appointments ? +message.confirmRemoveWeekDefinition=Are you sure you want to delete these parameters for this date ? +message.error.MaxAppointmentPeriode=You have exceeded the maximum number of appointments for this period +message.error.appointment.edit.expired.time=The duration of the appointment creation/modification has expired. Please try again. +message.error.appointmentOnSlot=The slots affected by this modification contain appointments. Please delete the appointments for this slot(s) before making any modifications. +message.error.canNotCancelPassedAppointment=You can no longer cancel this appointment +message.error.closingDayErrorImport=Error importing the file +message.error.canNotCancelPassedAppointment=You can't cancel this appointment +message.error.closingDayErrorImport=Error Importing File +message.error.confirmEmail=The confirmation email is not valid +message.error.dateAppointment=The date is not valid +message.error.dateStartAfterTimeEnd=The end date of validity must not be earlier than the start date of validity +message.error.durationAppointmentDayNotMultipleForm=Be careful with the duration of the opening slots. For example, if you have slots of 20 minutes with a day from 9am to 7:30pm, the system cannot create the last slot and blocks the opening +message.error.errorModification=Oops! You cannot apply a week to dates prior to today +message.error.fieldValue=The value field must not contain special characters or spaces +message.error.formatDaysBeforeAppointment=The "Minimum appointment delay" field must be a valid integer +message.error.formatDaysBeforeAppointmentMiddleSuperior=The "Average appointment duration" field must be less than the bounded start and end dates. +message.error.lastWeekDefinition=You cannot delete the only definition of the typical week. You can possibly modify the parameters by applying the same validity date. +message.error.multiSlot.numberOfSeatsBookedAndConcurrentAppointments=The maximum number of bookable seats must be equal to 1 because the option to make appointments on multiple slots is enabled. +message.error.nbDaysBetweenTwoAppointments=Enabling email entry is mandatory when the minimum duration between two appointments is defined. +message.error.nbMaxAppointmentsPerUser=Enabling email entry is mandatory when the maximum number of allowed appointments for a given period is defined. +message.error.nbplacestotake.toobig=The number of places you entered is too large. +message.error.noAppointmentFormSelected=Please select an appointment form. +message.error.noAppointmentWithThisReference=No appointment with this reference +message.error.noWorkingDayChecked=At least one day must be open +message.error.numberOfSeatsBookedAndConcurrentAppointments=The maximum number of reserved seats must be less than or equal to the number of concurrent appointments. +message.error.openSlots=Appointments are already booked for the days you want to close. The following closed days are not imported: {0} +message.error.parsing.json=Error parsing data +message.error.refreshDays.modifyFormHasAppointments=Appointments are associated with the upcoming weeks of this form. Please delete these appointments before modifying the form. +message.error.removeWeek.date.passed=You cannot delete this week, it is applied in the past. +message.error.removeWeek=Error when removing the week +message.error.report.appointment=You cannot reschedule this appointment, it is no longer valid. +message.error.rule.assigned=Please unassign the calendar week before deletion! +message.error.slotCanNotEndAfterDayOrForm=A slot cannot end after the closing time of the form's day +message.error.slotFull=The selected slot is no longer available. Please choose another one. +message.error.startDateEmpty=Please enter a start date for the modifications. +message.error.timeStartAfterTimeEnd=The end time must not be earlier than the start time +message.error.unknownRef=The entered reference does not match any appointment +message.error.week.assigned.past=You cannot edit this week, it is applied in the past. +message.info.alreadyCancelled=This appointment has already been cancelled +message.labelStatusNotValidated=Not validated +message.labelStatusReserved=Reserved +message.labelStatusUnreserved=Not reserved +message.mandatory.entry=This field is mandatory. +model.entity.appointmentform.attribute.calendarTemplateId=Calendar template +model.entity.appointmentform.attribute.capacityPerSlot=Maximum theoretical capacity per time slot +model.entity.appointmentform.attribute.dateEndValidity=End date of validity +model.entity.appointmentform.attribute.dateStartValidity=Start date of validity +model.entity.appointmentform.attribute.dateTaken=Date of appointment +model.entity.appointmentform.attribute.durationAppointments=Appointment duration +model.entity.appointmentform.attribute.hourTaken=Time of appointment +model.entity.appointmentform.attribute.idForm=Identifier +model.entity.appointmentform.attribute.isActive=Active +model.entity.appointmentform.attribute.maxCapacityPerSlot=Number of simultaneous appointments +model.entity.appointmentform.attribute.maxPeoplePerAppointment=Maximum number of reserved seats +model.entity.appointmentform.attribute.nbConsecutiveSlots=Multiple time slots +model.entity.appointmentform.attribute.nbWeeksToDisplay=Number of weeks to display to users +model.entity.appointmentform.attribute.timeEnd=End time +model.entity.appointmentform.attribute.timeStart=Start time +modify.category.title=Edit category +modifyAppointmentForm.deleteIcon=Delete the icon from the front office form +modifyAppointmentForm.helpCancelUploadIcon=Cancel file upload +modifyAppointmentForm.helpDateMin=Format DD/MM/YYYY. The modifications will only take effect from this date +modifyAppointmentForm.helpFormatIcon=Format jpeg, png .. +modifyAppointmentForm.labelInsertEntry=Insert a field +modifyAppointmentForm.listDateOfModification=Parameter modification date +modifyAppointmentForm.select=Select +modifyAppointmentForm.selectAll=Select all +modifyAppointmentForm.startDate=From +modifyAppointmentForm.startEditForm=Date of modifications +modifyAppointmentForm.title=Edit Appointment Form +modifyAppointmentForm.titleAlterablesParameters=General Parameters +modifyAppointmentForm.titleStructuralsParameters=Advanced Parameters +modifyAppointmentFormEntries.pageTitle=Appointment Form +modifyAppointmentFormMessages.labelCalendarDescription=Calendar help text +modifyAppointmentFormMessages.labelCalendarFullLabel=Label indicating that a slot is full +modifyAppointmentFormMessages.labelCalendarReserveLabel=Label indicating that a slot is open for reservation +modifyAppointmentFormMessages.labelCalendarTitle=Calendar title in Front Office +modifyAppointmentFormMessages.labelFieldEmailConfirmation=Confirmation email title +modifyAppointmentFormMessages.labelFieldEmailConfirmationHelp=Help for the "confirmation email" field in Front Office +modifyAppointmentFormMessages.labelFieldEmailHelp=Help for the "email" field in Front Office +modifyAppointmentFormMessages.labelFieldEmailTitle=Title of the "email" field in Front Office +modifyAppointmentFormMessages.labelFieldFirstNameHelp=Help for the "first name" field in Front Office +modifyAppointmentFormMessages.labelFieldFirstNameTitle=Title of the "first name" field in Front Office +modifyAppointmentFormMessages.labelFieldLastNameHelp=Help for the "last name" field in Front Office +modifyAppointmentFormMessages.labelFieldLastNameTitle=Title of the "last name" field in Front Office +modifyAppointmentFormMessages.labelLabelButtonRedirection=Label of the redirection button +modifyAppointmentFormMessages.labelNoAvailableSlot=Text to display to the user when no slots are available +modifyAppointmentFormMessages.labelTextAppointmentCanceled=Text to display to the user after canceling an appointment +modifyAppointmentFormMessages.labelTextAppointmentCreated=Text to display to the user after creating an appointment +modifyAppointmentFormMessages.labelTextAppointmentCreatedHelp=In the appointment creation text, you can use the following variables: +modifyAppointmentFormMessages.labelUrlRedirectAfterCreation=URL to redirect to after creating an appointment +modifyAppointmentFormMessages.pageTitle=Modify form messages +modifyCalendarMultiSlots.messageSurbooking=Warning, non-canceled appointments are attached to the slots you have modified. There will be overbooking on the slots {0} +modifyCalendarSlots.errorDayHasAppointment=It is impossible to modify the end time of a slot associated with a day that has at least one appointment. Please delete this or these appointments before continuing. +modifyCalendarSlots.errorTimeEndBeforeTimeStart=The end time of a slot must be after its start time +modifyCalendarSlots.errorWeekIsOpenFo=The week is open on the FO calendar! Please disable the form to edit this week. +modifyCalendarSlots.messageOverload=(*) Slots marked with an asterisk are specific to this week +modifyCalendarSlots.messageSlotUpdated=The slot has been successfully modified +modifyCalendarSlots.messageSurbooking=Warning, non-canceled appointments are attached to the slot you have modified. There will be overbooking on this slot +modifyCalendarSlots.messageValidatedAppointmentsImpacted=Warning, non-canceled appointments are attached to the slot you have modified. Remember to cancel them +modifyCalendarSlots.pageTitle=Modify a slot +modifyCalendarSlots.warningModifiyingEndingTime=Warning, modifying the end time of a slot will automatically reset all following slots for that day +modifyEntry.buttonApply=Apply +modifyEntry.titleComment=Modifying a comment for the form +modifyEntry.titleGroup=Modifying a group for the form +modifyEntry.titleQuestion=Modifying a question for the form +modifyField.address=Address +modifyField.manageConditionalQuestion.rowConditionalQuestion=Associated conditional questions +modifyField.manageConditionalQuestion.title=List of conditional questions +modifyField.manageConditionalQuestion.titleGoOut=Exit +modifyField.title=Modify a response to the question +modifySlot.helpModifyEndSlot=If you change the end time of the slot to a time that is not a multiple of the usual slot time, select below the option chosen for the following slots +modifySlot.labelCapacityChange=Capacity change +modifySlot.labelClose=Close +modifySlot.labelDate=Slot date +modifySlot.labelMaxCapacityForThisSlot=Maximum capacity for this slot +modifySlot.labelNewCapacity=New capacity +modifySlot.labelNoValue=Do not modify +modifySlot.labelOpen=Open +modifySlot.labelOpenHelp=Choose whether you want to open, close, or do nothing for the selected slot(s). +modifySlot.labelSlotStatus=Status of the slot(s) +modifySlot.notShiftSlot=Do not shift the following slots. +modifySlot.shiftSlot=Shift the following slots from the specified end time. +modify_comment.labelEndingValidityDate.help=End date of comment validity +modify_comment.labelEndingValidityDate=To +modify_comment.labelEndingValidityTime=at +modify_comment.labelStartingValidityDate.help=Start date of comment validity +modify_comment.labelStartingValidityDate=From +modify_comment.labelStartingValidityTime=at +modify_comment.pageTitle=Modify a comment +move.name=Move +moveAll.name=Move all +moveDown.title=Move down +moveUp.title=Move up +myAppointments.labelAppointmentFormTitle=Type of appointment +myAppointments.labelDateAppointment=Date +myAppointments.labelTime=Time +myAppointments.name=My appointments +name=Appointment +nbConsecutiveSlots.help=Enter the maximum number of places (value >= 1) +nbConsecutiveSlots=Number of places for consecutive slots +pageTitle=Manage appointments by calendar +pageTitle=Manage appointments by filter +pageTitle=Task form +pageTitle=View appointment +nbPlacesToTakeForm.labelNbPlaces=Number of people +nbPlacesToTakeForm.labelPeople=People +nbPlacesToTakeForm.labelValidate=Validate +permission.label.addComment=Create Comments +permission.label.changeAppointmentStatus=Validate or Cancel an appointment +permission.label.changeState=Activate/Deactivate a form +permission.label.createAppointment=Create an appointment +permission.label.createForm=Create an appointment form +permission.label.deleteAppointment=Delete an appointment +permission.label.deleteForm=Delete a form +permission.label.deleteMassAppointment=Delete appointments +permission.label.exportMassAppointment=Export results +permission.label.moderateComment=Moderate Comments +permission.label.modifyAdvancedSettingForm=Edit the advanced settings of a form +permission.label.modifyForm=Edit a form +permission.label.viewAppointment=View an appointment +permission.label.viewForm=View a form +plugin.description=Manage appointment requests +portlet.appointmentFormListPortlet.name=List of appointment request forms +provider=City Hall of Paris +reference=Reference +portlet.appointmentFormListPortlet.name=List of Appointment Request Forms +regularExpression.label=Verification rule +removeCalendarTemplate.confirmRemoveTemplate=Do you really want to delete this template? +removeCalendarTemplate.infoTemplateRemoved=The template has been successfully deleted +site_properties.description=Number of places for multiple time slots +site_properties.name=Number of places +site_property.nbplaces.help=Enter the maximum number of places +site_property.nbplaces=Enter the maximum number of places +specificDay.pageTitle=Day view +specificWeek.pageTitle=Specific week +startingDateOfSearch=From +taskFormWorkflow.pageTitle=Task form +task_notify_appointment_comment_config.label_comment=The Comment +task_notify_appointment_comment_config.label_creation_date=Comment creation date +task_notify_appointment_comment_config.label_creator_user_name=Name of the user who created the comment +task_notify_appointment_comment_config.label_date_end_validity=End date of comment validity +task_notify_appointment_comment_config.label_date_start_validity=Start date of comment validity +task_notify_appointment_comment_config.label_form_id=Form ID +task_notify_appointment_comment_config.label_form_titlet=Form Title +task_notify_appointment_comment_config.label_message=Email Content +task_notify_appointment_comment_config.label_sender_name=Email Sender Name +task_notify_appointment_comment_config.label_subject=Email Subject +task_notify_appointment_comment_config.label_time_end_validityt=End time of comment validity +task_notify_appointment_comment_config.label_time_start_validity=Start time of comment validity +task_notify_appointment_comment_config.title=Notification Message Configuration +title=Appointment date +title=Create a category +title=Modify a category +type.name=Type +typicalWeek.buttonLabelCreate=Create typical week +typicalWeek.pageTitle=Typical week +validation.appointment.Email.email=Please enter a valid email address +validation.appointment.Email.notEmpty=Please enter an email address +validation.appointment.Email.size=Email address must be less than 255 characters +validation.appointment.EmailConfirmation.email=Please enter a confirmation email address +validation.appointment.FirstName.NoSpecialCharacter=The first name must not contain special characters +validation.appointment.FirstName.notEmpty=Please enter a first name +validation.appointment.FirstName.size=First name must contain less than 255 characters +validation.appointment.Icon.notEmpty=Please add an icon for the form +validation.appointment.LastName.NoSpecialCharacter=The last name must not contain special characters +validation.appointment.LastName.notEmpty=Please enter a last name +validation.appointment.LastName.size=Last name must contain less than 255 characters +validation.appointment.NbBookedSeat.error=There are not enough available seats for your request. Please choose another time slot. +validation.appointment.NbBookedSeat.notEmpty=Number of seats must not be empty. +validation.appointment.NbBookedSeat.notNumberFormat=The number of seats must be an integer. +validation.appointment.NbMaxAppointmentsOnAPeriod.error=The maximum number of allowed appointments has been reached for this period +validation.appointment.NbMaxAppointmentsOnCategory.error=The maximum number of allowed appointments has been reached! To make another appointment, please cancel one of your following appointments: {0} +validation.appointment.NbMinDaysBetweenTwoAppointments.error=You cannot make an appointment on this date. The number of days since your last appointment is not sufficient. +validation.appointment.formNoMoreValid=The form is no longer valid +validation.appointment.formNotActive=The form is not active +validation.appointment.noAvailableSlot=No available time slot +validation.appointment.noStartingValidityDate=The form has no starting validity date +validation.appointmentform.Description.notEmpty=The Description field must not be empty. +validation.appointmentform.NbWeeksToDisplay.notEmpty=The Number of weeks to display field must be at least one. +validation.appointmentform.Title.notEmpty=The Title field must not be empty. +validation.appointmentform.Title.size=The Title field must not contain more than 255 characters. +validation.appointmentform.fromTimeSeizure.notEmpty=The Form seizure duration field must not be empty. +validation.week.color.notEmpty=Please choose a color +validation.week.color.size=The color must contain less than 255 characters +validation.week.description.notEmpty=Please enter a description +validation.week.description.size=The description must contain less than 255 characters +validation.week.name.notEmpty=Please enter a name +validation.week.name.size=The name must contain less than 255 characters +value.name=Value +viewAppointment.pageTitle=Visualization of an appointment +viewAppointmentFormMessages.labelAppointmentTakenBy=Appointment taken by +viewAppointmentFormMessages.labelAppointmentUser=in front-office +viewAppointmentFormMessages.labelAppointmentUserBO=in back-office by +week.toApplay=Applied Week: +wf.action.success=Success +xpage.form.noValue=No value +xpage.formList.labelFormList=List of forms +xpage.formList.noForm=No form is currently enabled \ No newline at end of file diff --git a/citelibre-rendezvous/webapp/WEB-INF/templates/admin/plugins/appointment/appointment_commons.html b/citelibre-rendezvous/webapp/WEB-INF/templates/admin/plugins/appointment/appointment_commons.html new file mode 100644 index 0000000..a1474b6 --- /dev/null +++ b/citelibre-rendezvous/webapp/WEB-INF/templates/admin/plugins/appointment/appointment_commons.html @@ -0,0 +1,768 @@ +<#macro commonsAppJS > + + + + + + + +<#-- --> + + + + + + + + + + + +<#macro headerTitle form=form > +/* Add Form title */ +document.querySelector('#feature-title').innerHTML = '#i18n{appointment.adminFeature.ManageAppointmentForm.name} ${form.title!?js_string}'; + +<#-- +-- Check if the checkbox must be checked or not +-- @param code the checkbox code +-- @param referecenlist the default values list +-- @return the String 'checked="checked" if the checkbox must be checked, an empty String otherwise +--> +<#function getChecked code reference_list> +<#if reference_list?has_content> +<#list reference_list as reference_item> + <#if reference_item.code = code> + <#if reference_item.checked><#return "checked='checked'"><#else><#return ""> + + + +<#return ""> + +<#-- +-- Get the value of the parameter +-- @param code the code of the parameter +-- @param referecenlist the default values list +-- @return the value of the parameter +--> +<#function getName code reference_list> + <#if reference_list?has_content> + <#list reference_list as reference_item> + <#if reference_item.code = code> + <#return reference_item.name> + + + + <#return ""> + +<#-- +-- Get the field from a given title +-- @param entry the entry +-- @param fieldTitle the title +-- @return the field +--> +<#function getField entry fieldTitle> + <#if entry.fields?? && entry.fields?has_content> + <#list entry.fields as field> + <#if field?? && field.title?? && field.title == fieldTitle> + <#return field> + + + + +<#-- +-- Get the field value from a given entry and a given title +-- @param entry the entry +-- @param fieldTitle the title +-- @return the field +--> +<#function getFieldValue entry fieldTitle> + <#if getField( entry, fieldTitle )??> + <#assign field = getField( entry, fieldTitle )> + <#return field.value> + + <#return ""> + +<#-- +-- Get the max files value of an entry +-- @param entry the entry +-- @return the number of max authorized uploaded files +--> +<#function getMaxFiles entry> + <#assign fieldMaxFiles = getFieldValueByCode( entry, "max_files" )> + <#if fieldMaxFiles?? && fieldMaxFiles != ""> + <#return fieldMaxFiles> + + <#return "1"> + +<#-- +-- Get the max size an uploaded file is authorized to have +-- @param entry the entry +-- @return the max size +--> +<#function getFileMaxSize entry> + <#assign fieldFileMaxSize = getFieldValueByCode( entry, "file_max_size" )> + <#if fieldFileMaxSize?? && fieldFileMaxSize != ""> + <#return fieldFileMaxSize> + <#else> + <#if getField( entry, "option" )??> + <#assign fieldFileMaxSize = getFieldValueByCode( entry, "option" )> + <#return fieldFileMaxSize.width> + + + <#return "5242880"> + +<#-- +-- Check if the given entry must export the binary +-- @param entry the entry +-- @return true if it must export the binaries, false otherwise +--> +<#function exportBinary entry> + <#assign field = getFieldValue( entry, "export_binary" ) /> + <#if field?? && field = "true"> + <#return true /> + + <#return false /> + +<#-- +-- Get the field value from a given entry and a given title +-- @param entry the entry +-- @param fieldTitle the title +-- @return the field +--> +<#function getFieldValueByCode entry fieldCode> + <#if getFieldByCode( entry, fieldCode )??> + <#assign field = getFieldByCode( entry, fieldCode )> + <#return field.value> + + <#return ""> + +<#-- +-- Get the field from a given code +-- @param entry the entry +-- @param fieldCode the code +-- @return the field +--> +<#function getFieldByCode entry fieldCode> + <#if entry.fields?? && entry.fields?has_content> + <#list entry.fields as field> + <#if field?? && field.code?? && field.code == fieldCode> + <#return field> + + + + +<#macro getCommentModal modalId modalTitle idComment idStartingDate idEndingDate idStartingTime idEndingTime action idForm mailingList locale=locale> +<#switch modalId> +<#case 'modify-comment'> + <#assign startDateLabel='#i18n{appointment.modify_comment.labelStartingValidityDate}'> + <#assign startTimeLabel='#i18n{appointment.modify_comment.labelStartingValidityTime}'> + <#assign endDateLabel='#i18n{appointment.modify_comment.labelEndingValidityDate}'> + <#assign endDateHelp='#i18n{appointment.modify_comment.labelEndingValidityDate}'> + <#assign endTimeLabel='#i18n{appointment.modify_comment.labelEndingValidityTime}'> +<#break> +<#default> + <#assign startDateLabel='#i18n{appointment.create_comment.labelStartingValidityDate}'> + <#assign startTimeLabel='#i18n{appointment.create_comment.labelStartingValidityTime}'> + <#assign endDateLabel='#i18n{appointment.create_comment.labelEndingValidityDate}'> + <#assign endDateHelp='#i18n{appointment.create_comment.labelEndingValidityDate}'> + <#assign endTimeLabel='#i18n{appointment.create_comment.labelEndingValidityTime}'> + +<@modal id=modalId > + <@modalHeader modalTitle=modalTitle /> + <@modalBody> + <@tform action='jsp/admin/plugins/appointment/Comments.jsp' id='commentUpdate'> + <@input type='hidden' name='id_form' value='${idForm!}' /> + <@input type='hidden' name='id_comment' id='id_comment' /> + <@formGroup labelFor='comment' labelKey='#i18n{appointment.comment.name}' helpKey='#i18n{appointment.comment.name}' mandatory=true rows=2> + <@input type='textarea' name='comment' id=idComment richtext=true /> + + <@formGroup labelFor='startingValidityDate' labelKey=startDateLabel mandatory=true rows=2> + <@inputGroup class='date' id='${idStartingDate}Group'> + <@input type='text' name='startingValidityDate' id=idStartingDate /> + <@inputGroupItem type='text'> + <@icon style='calendar' /> + + + + <@formGroup labelFor='startingValidityTime' labelKey=startTimeLabel rows=2> + <@inputGroup id='${idStartingTime}Group' class='date'> + <@input type='text' name='startingValidityTime' id=idStartingTime value='00:00' /> + <@inputGroupItem type='text' > + <@icon style='clock' /> + + + + <@formGroup labelFor=idEndingDate labelKey=endDateLabel mandatory=true rows=2> + <@inputGroup class='date' id='${idEndingDate}Group'> + <@input type='text' name='endingValidityDate' id=idEndingDate /> + <@inputGroupItem type='text'> + <@icon style='calendar' /> + + + + <@formGroup labelFor='endingValidityTime' labelKey=endTimeLabel rows=2> + <@inputGroup class='date' id='${idEndingTime}Group'> + <@input type='text' name='endingValidityTime' id=idEndingTime value='00:00' /> + <@inputGroupItem type='text'> + <@icon style='clock' /> + + + + <@formGroup labelFor='idMailingList' labelKey='#i18n{appointment.create_comment.labelMailingList}' helpKey='#i18n{appointment.create_comment.labelMailingList.help}' mandatory=false rows=2> + <#assign default='-1'> + <@select name="idMailingList" size='sm'> + <@option value='-1' label='#i18n{appointment.create_comment.labelNoNotification}' /> + <#list mailing_list as item> + <#assign isSelected><#if default=item.code>true<#else>false + <#assign label><#if !item.name?has_content>label="${i18n("portal.util.labelEmpty")}"<#else>${item.name} + <@option value=item.code label=label selected=isSelected?boolean /> + + + + <@formGroup rows=2> + <@btnGroup> + <@button type='submit' name='action_${action}' buttonIcon='save' title='#i18n{portal.util.labelValidate}' /> + <@button type='submit' id='commentDelete' name='action_confirmRemoveComment' buttonIcon='trash' title='#i18n{portal.util.labelDelete}' color='danger' /> + <@button type='button' params='data-bs-dismiss="modal"' title='#i18n{portal.util.labelCancel}' buttonIcon='times' color='default' /> + + + + + + + +<#macro btnComment > +<#if permission_add_comment?boolean> + <@button id='toggle-add-comment' style='none' color='info mt-2 me-1' title='#i18n{appointment.create_comment.pageTitle}' hideTitle=[''] params='data-bs-toggle="modal" data-bs-target="#commentModal"' > + <@iconStack class='fa-xs'> + <@icon prefix='' style='far fa-comment fa-stack-2x' /> + <@icon prefix='' style='fas fa-plus fa-stack-1x' /> + + + + +<#macro tabsComment tab> +<@tabList id='${tab}-tab' params=' style="margin-top:15px"'> + <#if tab='comment'><#assign active = true /><#else><#assign active = false /> + <@tabLink href='jsp/admin/plugins/appointment/Comments.jsp?view=manageComment' title='#i18n{appointment.manage_comments.title}' active=active /> + <#if tab='notif'><#assign active = true /><#else><#assign active = false /> + <@tabLink href='jsp/admin/plugins/appointment/NotificationCommentConfig.jsp?view=notificationConfig' title='#i18n{appointment.task_notify_appointment_comment_config.title}' active=active /> + + +<#macro appointmentTabList tab form tabcontext> +<#if tabcontext='slot'> + <#if tab="typicalWeek"><#assign active = true /><#else><#assign active = false /> + <@tabLink href='jsp/admin/plugins/appointment/ManageAppointmentSlots.jsp?view=manageTypicalWeek&id_form=${form.idForm}&context=slot' title='#i18n{appointment.typicalWeek.pageTitle}' active=active /> + <#if tab="specificWeek"><#assign active = true /><#else><#assign active = false /> + <@tabLink href='jsp/admin/plugins/appointment/ManageSpecificWeek.jsp?view=manageSpecificWeek&id_form=${form.idForm}&context=slot' title='#i18n{appointment.specificWeek.pageTitle}' active=active /> + <#if tab="year"><#assign active = true /><#else><#assign active = false /> + <@tabLink href='jsp/admin/plugins/appointment/ManageAnnualCalendar.jsp?view=manageAnnualCalendar&id_form=${form.idForm}&context=slot' title='#i18n{appointment.annual.calendar.pageTitle}' active=active /> + <#if tab="day"><#assign active = true /><#else><#assign active = false /> + <#if isDeskInstalled?? && isDeskInstalled><@tabLink href='jsp/admin/plugins/appointment/modules/desk/ManageAppointmentDesks.jsp?plugin_name=appointment-desk&id_form=${form.idForm}&context=slot' title='#i18n{appointment.specificDay.pageTitle}' active=active /> +<#elseif tabcontext='app'> + <#if tab="calendar"><#assign active = true /><#else><#assign active = false /> + <@tabLink href='jsp/admin/plugins/appointment/ManageAppointments.jsp?view=viewCalendarManageAppointment&id_form=${form.idForm}&context=app' title='#i18n{appointment.manageAppointmentCalendar.pageTitle}' active=active /> + <#if tab="filter"><#assign active = true /><#else><#assign active = false /> + <@tabLink href='jsp/admin/plugins/appointment/ManageAppointments.jsp?view=manageAppointments&id_form=${form.idForm}&context=app' title='#i18n{appointment.manageAppointments.pageTitle}' active=active /> + <#if tab='day'><#assign active = true /><#else><#assign active = false /> + <#if isDeskInstalled?? && isDeskInstalled><@tabLink href='jsp/admin/plugins/appointment/modules/desk/ManageAppointmentDesks.jsp?plugin_name=appointment-desk&id_form=${form.idForm}&context=app' title='#i18n{appointment.specificDay.pageTitle}' active=active /> +<#else> + <#assign tabparams='data-menu="slot"'> + <#if isDeskInstalled?? && isDeskInstalled><@tabLink href='jsp/admin/plugins/appointment/modules/desk/ManageAppointmentDesks.jsp?plugin_name=appointment-desk&id_form=${form.idForm}&context=slot' title='#i18n{appointment.specificDay.pageTitle}' active=true params=tabparams /> + <#assign active = false /> + <@tabLink href='jsp/admin/plugins/appointment/ManageSpecificWeek.jsp?view=manageSpecificWeek&id_form=${form.idForm}&context=slot' title='#i18n{appointment.specificWeek.pageTitle}' active=active params=tabparams/> + <@tabLink href='jsp/admin/plugins/appointment/ManageAnnualCalendar.jsp?view=manageAnnualCalendar&id_form=${form.idForm}&context=slot' title='#i18n{appointment.annual.calendar.pageTitle}' active=active params=tabparams/> + <@tabLink href='jsp/admin/plugins/appointment/ManageAppointmentSlots.jsp?view=manageTypicalWeek&id_form=${form.idForm}&context=slot' title='#i18n{appointment.typicalWeek.pageTitle}' active=active params=tabparams/> + <#assign tabparams='data-menu="app"'> + <#assign active = false /> + <@tabLink href='jsp/admin/plugins/appointment/ManageAppointments.jsp?view=viewCalendarManageAppointment&id_form=${form.idForm}&context=app' title='#i18n{appointment.manageAppointmentCalendar.pageTitle}' active=active params=tabparams/> + <@tabLink href='jsp/admin/plugins/appointment/ManageAppointments.jsp?view=manageAppointments&id_form=${form.idForm}&context=app' title='#i18n{appointment.manageAppointments.pageTitle}' active=active params=tabparams/> + <#if isDeskInstalled?? && isDeskInstalled><@tabLink href='jsp/admin/plugins/appointment/modules/desk/ManageAppointmentDesks.jsp?plugin_name=appointment-desk&id_form=${form.idForm}&context=app' title='#i18n{appointment.specificDay.pageTitle}' active=true params=tabparams/> + + +<#macro appointmentTabs tab form context > +<@commonsAppJS /> +<@row id='${tab}-tab'> + <@columns> + <@tabs params=' style="margin-top:15px"'> + <@tabList> + <@appointmentTabList tab form context /> + + <@tabContent id='${tab}-content'> + <@messages errors=errors warnings=warnings infos=infos /> + <#nested> + <#if formCalendarErrors??> +
+ <#else> + <#if !tab?contains("filter")> + <#if !tab?contains("typicalWeek")> +
+ <@btnComment /> +
+ + + <#if tab !='typicalWeek' && tab !='year' && tab !='day' && tab !='filter'> +
+
+ #i18n{appointment.labelLoading}... + +
+
+ + + + + + + + +<#macro commentModal update=false > +<#if update> + var formValues = JSON.parse( $(this).attr( 'data-json' ) ); + localStorage.setItem( 'commentContext', moment(formValues.comment_start).format('DD/MM/YYYY') ); + tinyMCE.activeEditor.setContent( formValues.comment_text ); + $( '#modify-comment input[name="id_comment"]' ).val( formValues.id_comment.slice(1) ); + $( '#modify-comment input[name="startingValidityDate"]' ).val( moment(formValues.comment_start).format('DD/MM/YYYY') ); + $( '#modify-comment input[name="endingValidityDate"]' ).val( moment(formValues.comment_end).format('DD/MM/YYYY') ); + $( '#modify-comment input[name="startingValidityTime"]' ).val( formValues.comment_start_time ); + $( '#modify-comment input[name="endingValidityTime"]' ).val( formValues.comment_end_time ); + +// const commentModal = new bootstrap.Modal( document.getElementById('modify-comment') ) +const commentModal = bootstrap.Modal.getOrCreateInstance('#modify-comment'); +commentModal.toggle(); + +<#macro getComments comments_list> +<#list comments_list as comment_event> +<#compress> +<#assign comment_title>${comment_event.comment?replace('\n', '')?replace('\r', '')?replace('\rn', '')?replace('\'', ''')?replace('\\', '\')} + +{ + "title" : "${comment_title?json_string}", + "start" : "${comment_event.startingValidityDate}T${comment_event.startingValidityTime!}", + "end" : "${comment_event.calendarAllDaySlotEnd}T${comment_event.endingValidityTime!}", + "validity_end" : "${comment_event.endingValidityDate}", + "start_time" : "${comment_event.startingValidityTime!}", + "end_time" : "${comment_event.endingValidityTime!}", + "id" : "C${comment_event.id}", + "creator_name" : "${comment_event.userLastName!''} ${comment_event.userFirstName!''}", + "creator_user" : "${comment_event.creatorUserName!''}", + "creation_date" : "${comment_event.creationDate?date.xs!''}", + "type" : "comment", + "allDay" : true, +}, +<#assign aDateTime = .now> +<#if comment_event.startingValidityTime?? && comment_event.endingValidityTime??> + <#if ( comment_event.startingValidityTime != '00:00' && comment_event.endingValidityTime != '00:00' )> + { + "start" : "${comment_event.startingValidityDate}T${comment_event.startingValidityTime!}", + "end" : "${comment_event.endingValidityDate}T${comment_event.endingValidityTime!}", + "type" : "hour_comment", + "backgroundColor" : 'rgb(233, 250, 0 )', + "className" : ["comment-${comment_event.id!}"], + "rendering" : "background", + "allDay" : false, + }, + + + + +<#macro fullCalendarScript selectable=true isSpecific=false isTypical=false showComments=true locale=locale> +$( function(){ + var calendar = $('#calendar'); + calendar.fullCalendar({ + <#if !showComments>allDaySlot: false, + displayEventTime: false, + buttonText : { + prev : '#i18n{appointment.appointmentApp.previousWeek}', + next : '#i18n{appointment.appointmentApp.nextWeek}', + }, + height: 'parent', + themeSystem: 'jquery-ui', + navLinks: true, + navLinkDayClick: function( date, jsEvent ) { + location.href = eventUrl + 'manageAppointments&id_form=' + idForm + '&starting_date_time=' + date.format() + 'T00:00&ending_date_time=' + date.format() + 'T23:59'; + }, + defaultDate: defaultDate, + nowIndicator: true, + defaultView: 'agendaWeek', + locale: '${locale}', + editable: false, + <#if !isTypical> + customButtons: { + datePicker: { + text: '#i18n{appointment.appointmentCalendar.labelChooseDate}', + click: function () { + var $btnCustom = $('.fc-datePicker-button' ); // name of custom button in the generated code + $btnCustom.after(''); + $( '#hiddenDate' ).datepicker({ + showOn: "button", + language:'${locale}', + autoclose: true, + orientation: "bottom" + }); + var $btnDatepicker = $( '.ui-datepicker-trigger' ); // name of the generated datepicker UI + //Below are required for manipulating dynamically created datepicker on custom button click + $( '#hiddenDate' ).focus().hide(); + $btnDatepicker.trigger( 'click' ); //dynamically generated button for datepicker when clicked on input textbox + $btnDatepicker.hide(); + $btnDatepicker.remove(); + $( 'input.datepicker' ).not( ':first' ).remove();//dynamically appended every time on custom button click + $( '#hiddenDate' ).change(function () { + calendar.fullCalendar( 'gotoDate', moment($("#hiddenDate").val(),'DD-MM-YYYY')); + }); + } + } + }, + + header: <#if isTypical>false<#else>{left: 'prev',center: 'today, datePicker, title',right: 'next'}, + <#if isTypical>columnFormat : 'dddd',<#else>columnHeaderHtml: function(mom) { return mom.format('dddd') + '
' + mom.format('LL'); }, + slotLabelFormat: 'H:mm', + slotLabelInterval: slotDuration, + slotDuration: slotDuration, + <#if selectable> + selectable: true, + selectHelper: true, + select: function( startDate, endDate ) { + var selIdx=0, selData='', evData=''; + var selected=$('.fc-event-container .fc-time-grid-event.fc-v-event.fc-event.fc-start.fc-end.fc-custom.ui-selectee'); + selected.each( function( ){ + var evt='{' + $(this).data('event') + '}'; + const event = JSON.parse( evt ); + if( moment( event.startingDateTime ).isSameOrAfter( startDate.format() ) && moment( event.endingDateTime ).isSameOrBefore( endDate.format() ) ){ + selData += JSON.stringify( event ) + ',' ; + selIdx++; + } + }) ; + if ( selIdx > 1 ){ + evtData='['+ selData.slice(0, -1) + ']'; + const evt = JSON.parse(evtData); + <#if isTypical>$('#timeSlotData')<#else>$('#slotsData').val(evtData); + $('#date_of_display_multi').val( moment(evt[0].startingDateTime).format('YYYY-MM-DD') ); + const updatePlanningMultiSlotModal = new bootstrap.Modal('#updatePlanningMultiSlot') + updatePlanningMultiSlotModal.toggle() + } else { + evtData=selData.slice(0, -1) ; + const evt = JSON.parse(evtData); + <#if isTypical>$('#timeSlotData')<#else>$('#slotData').val( '['+evtData+']' ); + const isOpen = JSON.parse( evt.isOpen ) + $('#is_open').prop( "checked", isOpen ); + $('#maxCapacity').val( evt.maxCapacity ); + $('#dtSlot .modal-title').append( moment(evt.startingDateTime).format('DD/MM/YYYY') ); + $('#date_of_display_slot').val( moment(evt.startingDateTime).format('YYYY-MM-DD') ); + $('#timeStart').text( evt.startingTime ); + $('#timeEnd').val( evt.endingTime ); + const updatePlanningModal = new bootstrap.Modal('#updatePlanningSlot') + updatePlanningModal.toggle() + } + }, + + minTime: minTime, + maxTime: maxTime, + businessHours: { + start: minTime, + end: maxTime, + dow: dow + }, + eventClick: function( calEvent, jsEvent, view ){ + <#if showComments> + // Comments + var isCommentModerator=${permission_moderate_comment}; + if( calEvent.type == "comment" && ( calEvent.creator_user === '${permission_access_code}' || isCommentModerator ) ){ + <@commentModal update=true /> + } else if( calEvent.type == "appointment" ) { + location.href = calEvent.manageUrl; + } + <#else> + // Typical week + location.href = eventUrl + calEvent.id; + + }, + events: events, + <#if !isTypical> + viewRender: function(view, element) { + var minDate = moment(startingDateOfDisplay); + var maxDate = moment(endingDateOfDisplay); + // Past + if (minDate >= view.start && minDate <= view.end || view.end <= minDate) { + $( '.fc-prev-button' ).prop('disabled', true); + $( '.fc-prev-button' ).addClass('fc-state-disabled'); + } else { + $( '.fc-prev-button' ).removeClass('fc-state-disabled'); + $( '.fc-prev-button' ).prop('disabled', false); + } + // Future + if (maxDate >= view.start && maxDate <= view.end || maxDate <= view.start) { + $( '.fc-next-button' ).prop('disabled', true); + $( '.fc-next-button' ).addClass('fc-state-disabled'); + } else { + $( '.fc-next-button' ).removeClass('fc-state-disabled'); + $( '.fc-next-button' ).prop('disabled', false); + } + }, + + eventAfterAllRender: function( view ) { + if( document.getElementById('loader') != undefined ){ document.getElementById('loader').remove() }; + sessionStorage.setItem( 'appCurrentDate', moment(view.start).format('DD/MM/YYYY') ); + $('.fc-event').css('cursor', 'pointer'); + <#if !isTypical> + $('.fc-next-button').attr('class', 'fc-next-button btn btn-primary btn-sm'); + $('.fc-prev-button').attr('class', 'fc-prev-button btn btn-primary btn-sm'); + $('.fc-today-button').attr('class', 'fc-today-button btn btn-primary btn-sm'); + $('.fc-datePicker-button').attr('class', 'fc-datePicker-button btn btn-primary btn-sm'); + + $('.open-AddBookDialog').click( function( e ) { + e.preventDefault(); + $('#starting_date_time').val($(this).data('starting_date_time')); + var dt = $(this).data('starting_date_time'); + $('#starting_date_time_span').val( moment(dt).format('DD/MM/YYYY hh:mm') ); + const addbookModal = new bootstrap.Modal( '#addBookModalDialog' ) + addbookModal.toggle(); + return false; + }); + <#if showComments> + // Set comments + $( '.fc-view.fc-agendaWeek-view.fc-agenda-view .fc-body .ui-widget-content .fc-day-grid .fc-bg .fc-axis.ui-widget-content' ).html( '' ); + $( '#toggle-add-comment' ).clone().appendTo( '.fc-body .ui-widget-content .fc-day-grid .fc-content-skeleton .fc-axis:first' ); + $( '.fc-body .ui-widget-content .fc-day-grid .fc-content-skeleton .fc-axis:first' ).css('position', 'relative'); + var tgc = $( '#toggle-add-comment' ).find('body'); + tgc.click(function(ev) { + <@commentModal /> + }); + var firstBgColor; + // Highlight comment from bg + $( '.fc-bgevent' ).hover(function(){ + firstBgColor = $( this ).css( "background-color" ); + $( this ).css('background-color', 'orange' ); + var classSel = $(this).attr('class'), bgColor=$(this).css('background-color'), + commentSel = classSel.split(' '), + c = '#' + commentSel[0].replace('-','-C'); + $( c ).css('background-color', 'orange' ); + $( c ).css('color', '#fff' ); + return false; + }, function(){ + $( this ).css('background-color', firstBgColor ); + var classSel = $(this).attr('class'), + commentSel = classSel.split(' '), + c = '#' + commentSel[0].replace('-','-C'); + $( c ).css('background-color', firstBgColor ); + $( c ).css('color', '#000' ); + }); + // Show comment popover + $('.fc-bgevent').click(function(e){ + var classSel = $(this).attr('class'), + commentSel = classSel.split(' '), + c = '#' + commentSel[0].replace('-','-C'); + const popover = bootstrap.Popover.getOrCreateInstance( c ) + popover.toggle(); + return false; + }); + + <#if isSpecific || isTypical > + /* Event selection if specific */ + var eventIdx=0, eventData='',evtData=''; + $( ".fc-content-skeleton" )<#if isSpecific>.not(":has(.comments)").not(":has(.btn-comments)").selectable({ + filter: ".fc-time-grid-event.fc-v-event", + selecting: function( event, ui ) { + eventIdx++; + }, + unselecting: function( event, ui ) { + eventIdx--; + }, + stop: function() { + $( '.ui-selected', this ).each( function( index ) { + index++; + <#if isSpecific> + if ( eventIdx > 1 ){ + eventData += '{' + $(this).data('event') + '},' ; + const events = JSON.stringify( eventData ); + evtData='['+eventData.slice(0, -1)+']' + const evt = JSON.parse(evtData); + $('#slotsData').val( evtData); + $('#date_of_display_multi').val( moment(evt[0].startingDateTime).format('YYYY-MM-DD') ); + const updatePlanningMultiSlotModal = bootstrap.Modal.getOrCreateInstance('#updatePlanningMultiSlot') + updatePlanningMultiSlotModal.toggle() + } else { + eventData ='{' + $(this).data('event') + '}'; + const events = JSON.stringify(eventData); + evtData= '['+eventData+']'; + $('#slotData').val( evtData ); + const evt = JSON.parse(eventData); + const isOpen = JSON.parse( evt.isOpen ) + $('#is_open').prop( "checked", isOpen ); + $('#maxCapacity').val( evt.maxCapacity ); + $('#dtSlot .modal-title').append( moment(evt.startingDateTime).format('DD/MM/YYYY') ); + $('#date_of_display_slot').val( moment(evt.startingDateTime).format('YYYY-MM-DD') ); + $('#timeStart').text( evt.startingTime ); + $('#timeEnd').val( evt.endingTime ); + const updatePlanningSlotModal = bootstrap.Modal.getOrCreateInstance('#updatePlanningSlot') + updatePlanningSlotModal.toggle() + } + + <#if isTypical> + if ( eventIdx > 1 ){ + eventData += '{' + $(this).data('event') + '},' ; + const events = JSON.stringify( eventData ); + evtData='['+eventData.slice(0, -1)+']' + $('#timeSlotData').val( evtData ); + const updatePlanningMultiSlotModal = bootstrap.Modal.getOrCreateInstance('#updatePlanningMultiSlot') + updatePlanningMultiSlotModal.toggle() + } else { + eventData ='{' + $(this).data('event') + '}'; + const evt = JSON.parse(eventData); + const isOpen = JSON.parse( evt.isOpen ) + $('#timeIsOpen').prop( "checked", isOpen ); + $('#idTimeSlot').val( evt.idTimeSlot ); + $('#idWorkingDay').val( evt.idWorkingDay ); + $('#maxCapacity').val( evt.maxCapacity ); + $('#date_of_display_slotmaxCapacity').val( evt.maxCapacity ); + $('#timeStart').text( evt.startingTime ); + $('#timeEnd').val( evt.endingTime ); + const updatePlanningSlotModal = bootstrap.Modal.getOrCreateInstance('#updatePlanningSlot') + updatePlanningSlotModal.toggle() + } + + }); + eventData=''; + } + + }); + + + }, + eventRender: function( event, element, view ) { + var $title = element.find( '.fc-title' ), createSlot='', labelEventDate=''; + $(element).addClass( event.customClass ); + if ( event.customStyle !='' ){ + $(element).css( 'background', event.customStyle ); + } + $title.html( $title.text() ); + if( event.type !== 'comment' ){ + <#if isSpecific> + $(element).attr( 'data-event', '"idSlot":"' + event.id +'","startingDateTime":"' + event.start.toISOString()+ '","startingTime":"' + event.start.format('HH:mm') + '","endingDateTime":"' + event.end.toISOString() + '","endingTime":"' + event.end.format('HH:mm')+ '","isOpen":"' + event.isOpen + '","idForm":"' + event.idForm +'","date":"' + event.date + '","isSpecific":"' + event.isSpecific + '","maxCapacity":"' + event.maxCapacity + '"' ); + + <#if isTypical> + $(element).attr( 'data-event', '"idTimeSlot":"' + event.id +'","startingDateTime":"' + event.start.toISOString()+ '","startingTime":"' + event.start.format('HH:mm') + '","endingDateTime":"' + event.end.toISOString() + '","endingTime":"' + event.end.format('HH:mm')+ '","isOpen":"' + event.isOpen + '","idForm":"' + event.idForm +'","maxCapacity":"' + event.maxCapacity + '"' ); + + } + var json = { "container": "body", "placement" : "bottom", "html" : true, "trigger" : "hover" }; + <#if showComments> + if( event.type == 'comment' ){ + $(element).addClass('comments').attr( 'id', 'comment-' + event.id ).attr( 'data-json', '{"id_comment":"' + event.id + '", "comment_text":"' + event.title.replace(/"/g,'\\"') + '", "comment_start":"' + event.start.format('YYYY-MM-DD') + '", "comment_start_time":"' + event.start_time + '", "comment_end":"' + event.validity_end + '", "comment_end_time\":"' + event.end_time + '"}' ); + /* Add comment render */ + labelEventDate=setLabelComment( event, '${locale}' ); + var creator = event.creator_name.trim() !== '' ? event.creator_name : event.creator_user; + json.content = '

' + labelEventDate +'

Créé par ' + creator + ' le ' + event.creation_date + '


'+ event.title + '

' ; + var dateDebut='', dateFin=''; + if ( ! ( event.start_time == null || event.start_time == undefined || event.start_time == '00:00' ) ){ + if( event.start.format('DDMM') != moment(event.validity_end).format('DDMM') ){ + dateDebut=event.start.format('ddd DD/MM à '); + dateFin=moment(event.validity_end).format('ddd DD/MM à ') + } + var fcTitle = element.find('.fc-title p'); + fcTitle.prepend( dateDebut + event.start_time + '/' + dateFin + event.end_time + ' ' ); + } else { + $(element).addClass('allday'); + } + } else { + if( event.id != undefined || event.id != undefined ){ + json.content = "

" + event.start.format('HH:mm') + " - " + event.end.format('HH:mm')+"

"; + } + } + <#else> + if( event.id != undefined || event.id != undefined ){ + json.content = "

" + event.start.format('HH:mm') + " - " + event.end.format('HH:mm')+"

"; + } + + const popover = new bootstrap.Popover( element.context, json ) + } + }); + /* If comment creation set currentDate from "commentContext" localstorage */ + const dtCurrent=localStorage.getItem('commentContext'); + if( dtCurrent !='' && dtCurrent != null ){ + localStorage.removeItem( 'commentContext' ); + calendar.fullCalendar( 'gotoDate', moment(dtCurrent,'DD-MM-YYYY')); + } + <#nested> +}); + diff --git a/citelibre-rendezvous/webapp/WEB-INF/templates/admin/plugins/appointment/slots/manage_annual_calendar.html b/citelibre-rendezvous/webapp/WEB-INF/templates/admin/plugins/appointment/slots/manage_annual_calendar.html new file mode 100644 index 0000000..63cdeff --- /dev/null +++ b/citelibre-rendezvous/webapp/WEB-INF/templates/admin/plugins/appointment/slots/manage_annual_calendar.html @@ -0,0 +1,195 @@ + + +<@appointmentTabs tab='year' form=appointmentform context='slot'> + <@row> + <@columns sm=10> + <@div id="calendar"> + + <@columns sm=2> + <@p params=' style="border-bottom: 1px solid #000;margin-bottom: 15px; padding:15px 0"'> + <@span params='style="border-radius: 50%;background-color:#DDD;width: 20px;height: 20px;display: inline-block;vertical-align: middle;"'> #i18n{appointment.annual.label.daySpecifity} + + <@ul class="list-unstyled"> + <#list listReservationRule as rule> + <@li class='py-2'> + <@aButton color='link btn-outline-default justify-content-start w-75' href='jsp/admin/plugins/appointment/ManageAppointmentSlots.jsp?view=manageTypicalWeek&id_form=${id_form}&id_reservation_rule=${rule.idReservationRule}'> + <@icon prefix='fas fa-' style='circle me-2' params=' style="color:${rule.color!};"' /> ${rule.name} + + + + + + + +<@div id="context-menu"> +<@modal id='event-modal' size='md' > + <@modalHeader modalTitle='#i18n{appointment.assign.typicalWeek.defaultTitle}' /> + <@modalBody> + <@tform id='form-validate' action='jsp/admin/plugins/appointment/ManageAnnualCalendar.jsp' params='enctype="multipart/form-data"'> + <@input type='hidden' name='action' value='doAssignWeek' /> + <@input type='hidden' name='id_form' value='${id_form}' /> + <@input type='hidden' name='id_week_definition' value='' /> + <@formGroup labelFor='date_of_apply' labelKey='#i18n{appointment.manageAppointments.startingDateOfSearch}' rows=2> + <@inputGroup> + <@input type='text' name='date_of_apply' id='date_of_apply' value="" /> + <@inputGroupItem type='text'> + <@icon style='calendar' /> + + + + <@formGroup labelFor='endingDate' labelKey='#i18n{appointment.manageAppointments.endingDateOfSearch}' rows=2> + <@inputGroup> + <@input type='text' name='ending_date_of_apply' id='ending_date_of_apply' value="" /> + <@inputGroupItem type='text'> + <@icon style='calendar' /> + + + + <@formGroup labelFor='type' labelKey='#i18n{appointment.week.toApplay}' rows=2> + <@select name='id_reservation_rule' id='id_reservation_rule'> + <#list listReservationRule as rule> + <@option value=rule.idReservationRule label=rule.name /> + + + + <@formGroup rows=2> + <@button type='submit' name='save' id='save' buttonIcon='check' title='#i18n{appointment.labelSave}' /> + <@button type='submit' name='delete' id='delete' title='#i18n{portal.util.labelDelete}' buttonIcon='trash' color='danger' /> + <@button type='button' params='data-bs-dismiss="modal"' title='#i18n{portal.util.labelCancel}' buttonIcon='times' color='default' /> + + + + + + + + + + + diff --git a/citelibre-rendezvous/webapp/WEB-INF/templates/admin/plugins/appointment/slots/manage_specific_week.html b/citelibre-rendezvous/webapp/WEB-INF/templates/admin/plugins/appointment/slots/manage_specific_week.html new file mode 100644 index 0000000..466e809 --- /dev/null +++ b/citelibre-rendezvous/webapp/WEB-INF/templates/admin/plugins/appointment/slots/manage_specific_week.html @@ -0,0 +1,134 @@ +<@appointmentTabs tab='specificWeek' form=appointmentform context='slot'/> + +<@getCommentModal 'commentModal' '#i18n{appointment.create_comment.pageTitle}' "comment" "startingValidityDate" "endingValidityDate" "idStartingTime" "idEndingTime" "doAddComment" id_form mailing_list /> + +<@getCommentModal 'modify-comment' '#i18n{appointment.modify_comment.pageTitle}' "comment" "modifyStartingValidityDate" "modifyEndingValidityDate" "idModifyStartingTime" "idModifyEndingTime" "doModifyComment" id_form mailing_list /> + +<@modal id='updatePlanningSlot' params='data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1"'> + <@modalBody> + <@tform action='jsp/admin/plugins/appointment/ManageSpecificWeek.jsp'> + <@input type='hidden' name='action' value='doModifyListSlot' /> + <@input type='hidden' name='id_form' value='${appointmentform.idForm}' /> + <@input type='hidden' id='slotData' name='slotsData' value='' /> + <@input type='hidden' id='idWorkingDay' name='workingDay' value='' /> + <@input type='hidden' id='capacity' name='capacity' value='new_cap' /> + <@input type='hidden' id='date_of_display_slot' name='date_of_display' value='${date_of_display}' /> + <@formGroup labelKey='#i18n{appointment.modifySlot.labelDate}' rows=2> + <@staticText id="dtSlot"> + + <@formGroup labelFor='is_open' labelKey='#i18n{appointment.modifySlot.labelOpen}' helpKey='#i18n{appointment.modifySlot.labelOpenHelp}' rows=2> + <@checkBox name='is_open' id='is_open' value='true' checked=true /> + + <@formGroup labelFor='maxCapacity' labelKey='#i18n{appointment.modifySlot.labelMaxCapacityForThisSlot}' mandatory=true rows=2> + <@input type='number' id='maxCapacity' name='max_capacity' value='' min=0 max=99 maxlength=3 /> + + <@formGroup labelKey='#i18n{appointment.model.entity.appointmentform.attribute.timeStart}' rows=2> + <@staticText id='timeStart'> + + <@formGroup labelFor='timeEnd' labelKey='#i18n{appointment.model.entity.appointmentform.attribute.timeEnd}' helpKey='#i18n{appointment.modifySlot.helpModifyEndSlot}' mandatory=true rows=2> + <@inputGroup> + <@input type='text' name='ending_time' id='timeEnd' value='' /> + <@inputGroupItem type='text'> + <@icon style='clock' /> + + + + <@formGroup labelFor='shift_slot' rows=2> + <@radioButton labelFor='shift_slot_false' labelKey='#i18n{appointment.modifySlot.notShiftSlot}' name='shift_slot' id='shift_slot_false' checked=true value='false' /> + <@radioButton labelFor='shift_slot_true' labelKey='#i18n{appointment.modifySlot.shiftSlot}' name='shift_slot' id='shift_slot_true' value='true' /> + + <@formGroup rows=2> + <@button type='submit' buttonIcon='check' name='modify' id='modify' title='#i18n{portal.util.labelModify}' /> + <@button color='secondary' title='#i18n{portal.util.labelCancel}' params=' data-bs-dismiss="modal" aria-label="#i18n{portal.util.labelCancel}"' /> + + + + +<@modal id='updatePlanningMultiSlot' params='data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1"'> + <@modalBody> + <@tform action="jsp/admin/plugins/appointment/ManageSpecificWeek.jsp"> + <@input type='hidden' name='action' value='doModifyListSlot' /> + <@input type='hidden' name='id_form' value='${appointmentform.idForm}' /> + <@input type='hidden' id='slotsData' name='slotsData' value='' /> + <@input type='hidden' id='date_of_display_multi' name='date_of_display' value='${date_of_display}' /> + <@formGroup labelKey='#i18n{appointment.modifySlot.labelSlotStatus}' helpKey='#i18n{appointment.modifySlot.labelOpenHelp}' rows=2> + <@radioButton orientation='inline' labelFor='shift_slot_open' id='shift_slot_open' labelKey='#i18n{appointment.modifySlot.labelOpen}' name='is_open' value='true' /> + <@radioButton orientation='inline' labelFor='shift_slot_close' id='shift_slot_close' labelKey='#i18n{appointment.modifySlot.labelClose}' name='is_open' value='false' /> + <@radioButton orientation='inline' labelFor='shift_slot_null' id='shift_slot_null' labelKey='#i18n{appointment.modifySlot.labelNoValue}' name='is_open' value='' checked=true /> + + <@formGroup labelFor='shift_slot' rows=2> + <@radioButton labelFor='var_cap' labelKey='#i18n{appointment.modifySlot.labelCapacityChange}' name='capacity' id='var_cap' checked=true value='var_cap' /> + <@radioButton labelFor='new_cap' labelKey='Nouvelle capacité' name='capacity' id='new_cap' value='new_cap' /> + <@input type='number' id='newCapacity' name='max_capacity' value='0' min=-99 max=99 /> + + <@formGroup rows=2> + <@button type='submit' color='primary' title='#i18n{portal.util.labelValidate}' /> + <@button color='secondary' title='#i18n{portal.util.labelCancel}' params=' data-bs-dismiss="modal" aria-label="#i18n{portal.util.labelCancel}"' /> + + + + + + + + +<#include "/admin/util/editor/editor.html" /> +<@initEditor type='comment' /> \ No newline at end of file diff --git a/citelibre-rendezvous/webapp/WEB-INF/templates/admin/plugins/appointment/slots/manage_typical_week.html b/citelibre-rendezvous/webapp/WEB-INF/templates/admin/plugins/appointment/slots/manage_typical_week.html new file mode 100644 index 0000000..bad7f98 --- /dev/null +++ b/citelibre-rendezvous/webapp/WEB-INF/templates/admin/plugins/appointment/slots/manage_typical_week.html @@ -0,0 +1,324 @@ +<@appointmentTabs tab='typicalWeek' form=appointmentform context='slot'> +<@row> + <@columns md=3> + <@tform class='mb-3' action='jsp/admin/plugins/appointment/ManageAppointmentSlots.jsp' params='enctype="multipart/form-data"' > + <@input type='hidden' name='id_form' value='${appointmentform.idForm}' /> + <@input type='hidden' name='view_manageTypicalWeek' value='' /> + <@button type='submit' id='btn-new-typicalweek' buttonIcon='plus' title='#i18n{appointment.typicalWeek.buttonLabelCreate}' /> + + <#if listReservationRule??> + <#assign active=false > + <#assign idx=0 > + <@listGroup> + <#list listReservationRule as item> + <#if id_reservation_rule?number=item.idReservationRule?number><#assign active=true ><#else><#assign active=false > + <@listGroupItem class='d-flex align-items-center justify-content-between' active=active> + <@icon style='circle-filled' params=' style="color:${item.color!};"' /> + <@link href='jsp/admin/plugins/appointment/ManageAppointmentSlots.jsp?view=manageTypicalWeek&id_form=${appointmentform.idForm}&id_reservation_rule=${item.idReservationRule}' label='${item.name}' class='w-100 p-3' /> + <#if active=true> + <@tform type='inline' action='jsp/admin/plugins/appointment/ManageAppointmentSlots.jsp?view=manageTypicalWeek' id='listOfDates' params=' enctype="multipart/form-data" style="margin-top:-2px"'> + <@input type='hidden' name='id_form' value='${appointmentform.idForm}' /> + <@input type='hidden' name='id_reservation_rule' value='${item.idReservationRule}' /> + <@btnGroup> + <@button type='button' hideTitle=['all'] class='btn-editappsearch' buttonIcon='edit' title='#i18n{portal.util.labelModify}' /> + <@button type='submit' name='action_confirmRemoveParameter' title='#i18n{portal.util.labelDelete}' hideTitle=['all'] buttonIcon='trash' color='danger' /> + <@button type='submit' name='action_copyTypicalWeek' title='#i18n{appointment.manageAppointmentForms.labelCopy}' hideTitle=['all'] buttonIcon='copy' /> + + + <#else> + <@span> + + + <#assign idx++ > + + + + + <@columns md=9> + + <@div id="appointment_search"> + <#if id_reservation_rule != 0 > + <@tform action='jsp/admin/plugins/appointment/ManageAppointmentSlots.jsp' params='enctype="multipart/form-data"' boxed=true class='mb-3'> + <@input type='hidden' id='is_multislot_appointment' name='is_multislot_appointment' value='${appointmentform.isMultislotAppointment?then("true", "false")}'/> + <@input type='hidden' id='bo_overbooking' name='bo_overbooking' value='${appointmentform.boOverbooking?then("true", "false")}'/> + <@fieldSet legend='#i18n{appointment.modifyAppointmentForm.titleAlterablesParameters}'> + <@formGroup labelFor='name' labelKey='#i18n{appointment.createAppointmentForm.labelName}' mandatory=true> + <@input type='text' name='name' id='name' value='${appointmentform.name!\'\'}' maxlength=50 /> + + <@formGroup labelFor='descriptionRule' labelKey='#i18n{appointment.createAppointmentForm.labelDescriptionRule}' mandatory=true> + <@input type='textarea' name='description_rule' id='description_rule' maxlength=255 >${appointmentform.descriptionRule!} + + <#if !appointmentform.isMultislotAppointment > + <@formGroup labelFor='max_people_per_appointment' mandatory=true labelKey='#i18n{appointment.createAppointmentForm.labelMaxPeoplePerAppointment}' helpKey='#i18n{appointment.createAppointmentForm.labelMaxPeoplePerAppointment.help}' mandatory=true> + <@input type='number' name='max_people_per_appointment' id='max_people_per_appointment' value=appointmentform.maxPeoplePerAppointment!'' maxlength=3 /> + + + + <@formGroup labelFor='color' labelKey='#i18n{appointment.createAppointmentForm.labelColor}' mandatory=true> + <@input type='color' id='color' name='color' value=appointmentform.color!'#3769D9' /> + + <@formGroup> + <@button type='submit' name='action_modifyGlobalParameters' title='#i18n{portal.util.labelModify}' buttonIcon='check' /> + <@aButton href='jsp/admin/plugins/appointment/ManageAppointmentSlots.jsp?view=manageTypicalWeek&id_form=${appointmentform.idForm}&id_reservation_rule=${id_reservation_rule}' buttonIcon='times' title='#i18n{portal.util.labelCancel}' color='btn-default' /> + + + + + <#if canUpdateAdvancedParam > + <@tform action='jsp/admin/plugins/appointment/ManageAppointmentSlots.jsp' params='enctype="multipart/form-data"'> + <@input type='hidden' name='id_form' value='${appointmentform.idForm}' /> + <@input type='hidden' id='bo_overbooking' name='bo_overbooking' value='${appointmentform.boOverbooking?then("true", "false")}'/> + <@input type='hidden' id='is_multislot_appointment' name='is_multislot_appointment' value='${appointmentform.isMultislotAppointment?then("true", "false")}'/> + <@input type='hidden' id='enableMandatoryEmail' name='enableMandatoryEmail' value='${appointmentform.enableMandatoryEmail?then("true", "false")}'/> + <@fieldSet legend='#i18n{appointment.modifyAppointmentForm.titleStructuralsParameters}'> + <#if id_reservation_rule == 0 > + <@formGroup labelFor='name' labelKey='#i18n{appointment.createAppointmentForm.labelName}' mandatory=true> + <@input type='text' name='name' id='name' value='${appointmentform.name!\'\'}' maxlength=50 /> + + <@formGroup labelFor='descriptionRule' labelKey='#i18n{appointment.createAppointmentForm.labelDescriptionRule}' mandatory=true> + <@input type='textarea' name='description_rule' id='description_rule' maxlength=255 >${appointmentform.descriptionRule!} + + <#if !appointmentform.isMultislotAppointment > + <@formGroup labelFor='max_people_per_appointment' mandatory=true labelKey='#i18n{appointment.createAppointmentForm.labelMaxPeoplePerAppointment}' helpKey='#i18n{appointment.createAppointmentForm.labelMaxPeoplePerAppointment.help}' mandatory=true> + <@input type='number' name='max_people_per_appointment' id='max_people_per_appointment' value=appointmentform.maxPeoplePerAppointment!'' maxlength=3 /> + + + <@formGroup labelFor='color' labelKey='#i18n{appointment.createAppointmentForm.labelColor}' mandatory=true> + <@input type='color' id='color' name='color' value=appointmentform.color!'#3769D9' /> + + + <@formGroup labelFor='max_capacity_per_slot' labelKey='#i18n{appointment.createAppointmentForm.labelMaxCapacityPerSlot}' helpKey='#i18n{appointment.createAppointmentForm.labelMaxCapacityPerSlot.help}' mandatory=true> + <@input type='number' name='max_capacity_per_slot' id='max_capacity_per_slot' value=appointmentform.maxCapacityPerSlot!'' maxlength=3 /> + + <@formGroup labelFor='time_start' labelKey='#i18n{appointment.createAppointmentForm.labelTimeStart}' helpKey='#i18n{appointment.createAppointmentForm.labelTimeStart.help}' mandatory=true> + <@inputGroup> + <@inputGroupItem type='text'> + <@icon style='clock' /> + + <@input type='text' name='time_start' id='time_start' value=appointmentform.timeStart!'' /> + + + <@formGroup labelFor='time_end' labelKey='#i18n{appointment.createAppointmentForm.labelTimeEnd}' helpKey='#i18n{appointment.createAppointmentForm.labelTimeEnd.help}' mandatory=true> + <@inputGroup> + <@inputGroupItem type='text'> + <@icon style='clock' /> + + <@input type='text' name='time_end' id='time_end' value=appointmentform.timeEnd!'' /> + + + <@formGroup labelFor='duration_appointments' labelKey='#i18n{appointment.createAppointmentForm.labelDurationAppointments}' helpKey='#i18n{appointment.createAppointmentForm.labelDurationAppointments.help}' mandatory=true> + <@input type='number' name='duration_appointments' id='duration_appointments' value=appointmentform.durationAppointments!'' maxlength=3 /> + + <@formGroup labelFor='is_open_monday'> + <@checkBox labelFor='is_open_monday' labelKey='#i18n{appointment.label.OpenMonday}' name='is_open_monday' id='is_open_monday' value='true' checked=appointmentform.isOpenMonday!false /> + + <@formGroup labelFor='is_open_tuesday'> + <@checkBox labelFor='is_open_tuesday' labelKey='#i18n{appointment.label.OpenTuesday}' name='is_open_tuesday' id='is_open_tuesday' value='true' checked=appointmentform.isOpenTuesday!false /> + + <@formGroup labelFor='is_open_wednesday'> + <@checkBox labelFor='is_open_wednesday' labelKey='#i18n{appointment.label.OpenWednesday}' name='is_open_wednesday' id='is_open_wednesday' value='true' checked=appointmentform.isOpenWednesday!false /> + + <@formGroup labelFor='is_open_thursday'> + <@checkBox labelFor='is_open_thursday' labelKey='#i18n{appointment.label.OpenThursday}' name='is_open_thursday' id='is_open_thursday' value='true' checked=appointmentform.isOpenThursday!false /> + + <@formGroup labelFor='is_open_friday'> + <@checkBox labelFor='is_open_friday' labelKey='#i18n{appointment.label.OpenFriday}' name='is_open_friday' id='is_open_friday' value='true' checked=appointmentform.isOpenFriday!false /> + + <@formGroup labelFor='is_open_saturday'> + <@checkBox labelFor='is_open_saturday' labelKey='#i18n{appointment.label.OpenSaturday}' name='is_open_saturday' id='is_open_saturday' value='true' checked=appointmentform.isOpenSaturday!false /> + + <@formGroup labelFor='is_open_sunday'> + <@checkBox labelFor='is_open_sunday' labelKey='#i18n{appointment.label.OpenSunday}' name='is_open_sunday' id='is_open_sunday' value='true' checked=appointmentform.isOpenSunday!false /> + + + <@formGroup> + <#if id_reservation_rule != 0 > + <@input type='hidden' name='action_modifyAdvancedParameters' value='' /> + <@button type='submit' title='#i18n{portal.util.labelModify}' buttonIcon='check' /> + <#else> + <@input type='hidden' name='action_createTypicalWeek' value='' /> + <@button type='submit' title='#i18n{portal.util.labelCreate}' buttonIcon='check' /> + + <@input type='hidden' name='view_manageAppointmentForms' value='' /> + <@aButton href='jsp/admin/plugins/appointment/ManageAppointmentSlots.jsp?view=manageTypicalWeek&id_form=${appointmentform.idForm}&id_reservation_rule=${id_reservation_rule}' buttonIcon='times' title='#i18n{portal.util.labelCancel}' color='btn-default' /> + + + + + <@div id="calendar"> + + + +<@modal id='updatePlanningSlot' params='data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1"'> + <@modalBody> + <@tform action='jsp/admin/plugins/appointment/ManageAppointmentSlots.jsp'> + <@messages errors=errors infos=infos/> + <@input type="hidden" name="action" value="doModifyTimeSlot" /> + <@input type="hidden" id="idTimeSlot" name="id_time_slot" value="" /> + <@input type="hidden" id="idWorkingDay" name="id_working_day" value="" /> + <@input type="hidden" id="timeForm" name="id_form" value="${appointmentform.idForm}" /> + <@input type="hidden" name="id_reservation_rule" value="${id_reservation_rule}" /> + <@formGroup labelFor='timeIsOpen9' labelKey='#i18n{appointment.modifySlot.labelOpen}' helpKey='#i18n{appointment.modifySlot.labelOpenHelp}' rows=2> + <@checkBox name='is_open' id='timeIsOpen' value='true' /> + + <@formGroup labelFor='maxCapacity' labelKey='#i18n{appointment.modifySlot.labelMaxCapacityForThisSlot}' mandatory=true rows=2> + <@input type='number' name='max_capacity' id='maxCapacity' value='' min=0 max=99 maxlength=3 /> + + <@formGroup labelKey='#i18n{appointment.model.entity.appointmentform.attribute.timeStart}' rows=2> + <@staticText id='timeStart'> + + <@formGroup labelFor='timeEnd' labelKey='#i18n{appointment.model.entity.appointmentform.attribute.timeEnd}' helpKey='#i18n{appointment.modifySlot.helpModifyEndSlot}' mandatory=true rows=2> + <@inputGroup> + <@input type='text' id='timeEnd' name='ending_time' value='' /> + <@inputGroupItem type='text'> + <@icon style='clock-o' /> + + + + <@formGroup labelFor='shift_slot' rows=2> + <@radioButton labelFor='shift_slotok' labelKey='#i18n{appointment.modifySlot.notShiftSlot}' id='shift_slotok' name='shift_slot' value='false' checked=true /> + <@radioButton labelFor='shift_slotnok' labelKey='#i18n{appointment.modifySlot.shiftSlot}' id='shift_slotnok' name='shift_slot' value='true' /> + + <@formGroup rows=2> + <@button type='submit' title='#i18n{portal.util.labelModify}' buttonIcon='check' /> + <@aButton href='jsp/admin/plugins/appointment/ManageAppointmentSlots.jsp?view=manageTypicalWeek&id_form=${appointmentform.idForm}&id_reservation_rule=${id_reservation_rule}' buttonIcon='times' title='#i18n{portal.util.labelCancel}' color='btn-default' /> + + + + +<@modal id='updatePlanningMultiSlot' params='data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1"'> + <@modalBody> + <@tform action="jsp/admin/plugins/appointment/ManageAppointmentSlots.jsp"> + <@input type="hidden" name="action" value="doModifyListTimeSlot" /> + <@input type="hidden" id="timeForm" name="id_form" value="${appointmentform.idForm}" /> + <@input type="hidden" name="id_reservation_rule" value="${id_reservation_rule}" /> + <@input type="hidden" id="timeSlotData" name="timeSlotData" value="" /> + <@formGroup labelKey='#i18n{appointment.modifySlot.labelSlotStatus}' helpKey='#i18n{appointment.modifySlot.labelOpenHelp}' rows=2> + <@radioButton orientation='inline' labelFor='shift_slot_open' id='shift_slot_open' labelKey='#i18n{appointment.modifySlot.labelOpen}' name='is_open' value='true' /> + <@radioButton orientation='inline' labelFor='shift_slot_close' id='shift_slot_close' labelKey='#i18n{appointment.modifySlot.labelClose}' name='is_open' value='false' /> + <@radioButton orientation='inline' labelFor='shift_slot_null' id='shift_slot_null' labelKey='#i18n{appointment.modifySlot.labelNoValue}' name='is_open' value='' checked=true /> + + <@formGroup rows=2> + <@radioButton labelFor='var_cap' labelKey='#i18n{appointment.modifySlot.labelCapacityChange}' name='capacity' id='var_cap' checked=true value='var_cap' /> + <@radioButton labelFor='new_cap' labelKey='Nouvelle capacité' name='capacity' id='new_cap' value='new_cap' /> + <@input type='number' id='newCapacity' name='max_capacity' value='0' min=-99 max=99 /> + + <@formGroup rows=2> + <@button type='submit' color='primary' title='#i18n{portal.util.labelValidate}' /> + <@button color='secondary' title='#i18n{portal.util.labelCancel}' params='data-bs-dismiss="modal" aria-label="#i18n{portal.util.labelCancel}"' /> + + + + +<@getDatePickerBootstrap idField="date_of_modification" language=language /> + + + +<#include "/admin/util/editor/editor.html" /> +<@initEditor type='comment' /> \ No newline at end of file