From 99eec90ec3b685e41045e7d5c05afa593864ff67 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= <roland@mxchange.org> Date: Thu, 24 Aug 2017 22:56:39 +0200 Subject: [PATCH] Please cherry-pick: - got rid of CSS class 'clear' in favour of pseudo class ::after which does the same thing with much lesser HTML code - very nice thing! MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Roland Häder <roland@mxchange.org> --- .../user_personal_title_table_row.tpl | 2 - .../user_profile_mode_table_row.tpl | 2 - web/WEB-INF/templates/admin/admin_footer.tpl | 2 - .../admin_form_business_basic_data.tpl | 20 ------ .../admin/contact/admin_form_contact_data.tpl | 28 -------- .../admin/country/admin_form_country_data.tpl | 12 ---- .../admin/fax/admin_form_add_contact_fax.tpl | 4 -- .../admin/fax/admin_form_fax_data.tpl | 4 -- .../admin_form_add_contact_landline.tpl | 4 -- .../landline/admin_form_landline_data.tpl | 4 -- .../admin/mobile/admin_form_mobile_data.tpl | 18 ++---- .../admin_form_mobile_provider.tpl | 14 +--- .../admin/user/admin_form_user_data.tpl | 14 +--- web/WEB-INF/templates/base.tpl | 4 +- .../templates/contact/form_contact_data.tpl | 64 ++++++------------- .../guest_email_address_repeat_fields.tpl | 4 -- web/WEB-INF/templates/guest/guest_footer.tpl | 2 - .../templates/guest/guest_privacy_terms.tpl | 16 ++--- .../templates/guest/user/guest_login_form.tpl | 23 +++---- .../register/guest_form_register_page1.tpl | 6 -- .../register/guest_form_register_single.tpl | 14 ++-- ...ser_change_email_address_repeat_fields.tpl | 4 -- .../user/user_enter_current_password.tpl | 8 +-- .../templates/login/user/user_footer.tpl | 2 - web/admin/user/admin_user_delete.xhtml | 2 - web/admin/user/admin_user_list.xhtml | 2 - web/guest/user/user_lost_password.xhtml | 4 -- .../css/{cssLayout.css => layout.css} | 18 ++++-- .../login_user_change_email_address.xhtml | 2 - web/user/login_user_change_password.xhtml | 5 +- 30 files changed, 71 insertions(+), 237 deletions(-) rename web/resources/css/{cssLayout.css => layout.css} (97%) diff --git a/web/WEB-INF/resources/tags/table_rows/user_personal_title_table_row.tpl b/web/WEB-INF/resources/tags/table_rows/user_personal_title_table_row.tpl index 4a462acb..3609e807 100644 --- a/web/WEB-INF/resources/tags/table_rows/user_personal_title_table_row.tpl +++ b/web/WEB-INF/resources/tags/table_rows/user_personal_title_table_row.tpl @@ -20,8 +20,6 @@ <f:selectItems value="#{genderController.selectableGenders}" var="personalTitle" itemValue="#{personalTitle}" itemLabel="#{msg[personalTitle.messageKey]}" /> </h:selectOneMenu> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> diff --git a/web/WEB-INF/resources/tags/table_rows/user_profile_mode_table_row.tpl b/web/WEB-INF/resources/tags/table_rows/user_profile_mode_table_row.tpl index 132e28db..c94a6087 100644 --- a/web/WEB-INF/resources/tags/table_rows/user_profile_mode_table_row.tpl +++ b/web/WEB-INF/resources/tags/table_rows/user_profile_mode_table_row.tpl @@ -21,8 +21,6 @@ <f:selectItems value="#{profileModeController.allProfileModes}" var="mode" itemValue="#{mode}" itemLabel="#{msg[mode.messageKey]}" /> </h:selectOneMenu> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> diff --git a/web/WEB-INF/templates/admin/admin_footer.tpl b/web/WEB-INF/templates/admin/admin_footer.tpl index e8c6756d..b569c98d 100644 --- a/web/WEB-INF/templates/admin/admin_footer.tpl +++ b/web/WEB-INF/templates/admin/admin_footer.tpl @@ -9,6 +9,4 @@ <li><h:link outcome="index" value="#{msg.LINK_ADMIN_FOOTER_TO_WEBPAGE}" /></li> </ul> </div> - - <div class="clear"></div> </ui:composition> diff --git a/web/WEB-INF/templates/admin/business_basic_data/admin_form_business_basic_data.tpl b/web/WEB-INF/templates/admin/business_basic_data/admin_form_business_basic_data.tpl index e7719225..28542ff6 100644 --- a/web/WEB-INF/templates/admin/business_basic_data/admin_form_business_basic_data.tpl +++ b/web/WEB-INF/templates/admin/business_basic_data/admin_form_business_basic_data.tpl @@ -19,8 +19,6 @@ <div class="table_right_medium"> <h:inputText styleClass="input" id="companyName" size="30" maxlength="200" required="true" requiredMessage="#{msg.ADMIN_BUSINESS_DATA_COMPANY_NAME_REQUIRED}" value="#{adminBusinessDataController.companyName}" /> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> @@ -38,8 +36,6 @@ <f:attribute name="allowEmptyEmail" value="true" /> </h:inputText> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> @@ -54,8 +50,6 @@ <div class="table_right_medium"> <h:outputText styleClass="warnings" value="#{msg.ADMIN_BUSINESS_DATA_UPLOAD_LOGO_UNFINISHED}" /> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> @@ -70,8 +64,6 @@ <div class="table_right_medium"> <h:inputText styleClass="input" id="companyTaxNumber" size="30" maxlength="200" value="#{adminBusinessDataController.companyTaxNumber}" /> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> @@ -86,8 +78,6 @@ <div class="table_right_medium"> <h:inputText styleClass="input" id="companyWebsiteUrl" size="30" maxlength="200" value="#{adminBusinessDataController.companyWebsiteUrl}" /> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> @@ -106,8 +96,6 @@ <f:selectItems value="#{userController.allUsers()}" var="companyUserOwner" itemValue="#{companyUserOwner}" itemLabel="#{companyUserOwner.userContact.contactFirstName} #{companyUserOwner.userContact.contactFamilyName} (#{companyUserOwner.userName})" /> </h:selectOneMenu> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> @@ -126,8 +114,6 @@ <f:selectItems value="#{companyHeadquartersController.allCompanyHeadquarters()}" var="companyHeadQuarters" itemValue="#{companyHeadQuarters}" itemLabel="#{companyHeadQuarters.foo}" /> </h:selectOneMenu> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> @@ -154,8 +140,6 @@ <f:validator for="landLineNumber" validatorId="PhoneNumberValidator" /> </h:inputText> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="table_row" layout="block"> @@ -178,8 +162,6 @@ <f:validator for="faxNumber" validatorId="PhoneNumberValidator" /> </h:inputText> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="table_row" layout="block"> @@ -190,8 +172,6 @@ <div class="table_right_medium"> <h:inputTextarea styleClass="input" id="companyComments" rows="7" cols="25" value="#{adminBusinessDataController.companyComments}" /> </div> - - <div class="clear"></div> </h:panelGroup> </fieldset> </h:panelGroup> diff --git a/web/WEB-INF/templates/admin/contact/admin_form_contact_data.tpl b/web/WEB-INF/templates/admin/contact/admin_form_contact_data.tpl index da4a550e..f9c13e4d 100644 --- a/web/WEB-INF/templates/admin/contact/admin_form_contact_data.tpl +++ b/web/WEB-INF/templates/admin/contact/admin_form_contact_data.tpl @@ -25,8 +25,6 @@ <div class="table_right_medium"> <h:inputText styleClass="input" id="firstName" size="10" maxlength="255" value="#{adminContactController.firstName}" /> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> @@ -41,8 +39,6 @@ <div class="table_right_medium"> <h:inputText styleClass="input" id="title" size="5" maxlength="255" value="#{adminContactController.academicTitle}" /> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> @@ -57,8 +53,6 @@ <div class="table_right_medium"> <h:inputText styleClass="input" id="familyName" size="10" maxlength="255" value="#{adminContactController.familyName}" /> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> @@ -73,8 +67,6 @@ <div class="table_right_medium"> <h:inputText styleClass="input" id="street" size="20" maxlength="255" value="#{adminContactController.street}" /> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> @@ -91,8 +83,6 @@ <f:validateLongRange for="houseNumber" minimum="1" maximum="500" /> </h:inputText> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> @@ -107,8 +97,6 @@ <div class="table_right_medium"> <h:inputText styleClass="input" id="houseNumberExtension" size="2" maxlength="2" value="#{adminContactController.houseNumberExtension}" /> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> @@ -125,8 +113,6 @@ <f:validateLongRange for="zipCode" minimum="1" maximum="99999" /> </h:inputText> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> @@ -141,8 +127,6 @@ <div class="table_right_medium"> <h:inputText styleClass="input" id="city" size="10" maxlength="255" value="#{adminContactController.city}" /> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> @@ -161,8 +145,6 @@ <f:selectItems value="#{countryController.allCountries()}" var="country" itemValue="#{country}" itemLabel="#{country.countryCode} (#{msg[country.countryI18nKey]})" /> </h:selectOneMenu> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> @@ -189,8 +171,6 @@ <f:validator for="landLineNumber" validatorId="PhoneNumberValidator" /> </h:inputText> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="table_row" layout="block"> @@ -213,8 +193,6 @@ <f:validator for="faxNumber" validatorId="PhoneNumberValidator" /> </h:inputText> </div> - - <div class="clear"></div> </h:panelGroup> <widgets:outputMobileNumberTableRow targetController="#{adminContactController}" labelMessage="#{msg.ADMIN_PERSONAL_DATA_MOBILE_NUMBER}" /> @@ -230,8 +208,6 @@ <f:attribute name="allowEmptyEmail" value="#{allowEmptyRequiredData}" rendered="#{not empty allowEmptyRequiredData}" /> </h:inputText> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> @@ -248,8 +224,6 @@ <f:convertDateTime pattern="#{msg.BIRTHDAY_PATTERN}" /> </h:inputText> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> @@ -264,8 +238,6 @@ <div class="table_right_medium"> <h:inputTextarea id="contactComment" styleClass="input" value="#{adminContactController.comment}" rows="7" cols="25" /> </div> - - <div class="clear"></div> </h:panelGroup> </fieldset> </h:panelGroup> diff --git a/web/WEB-INF/templates/admin/country/admin_form_country_data.tpl b/web/WEB-INF/templates/admin/country/admin_form_country_data.tpl index cbed24ae..da440128 100644 --- a/web/WEB-INF/templates/admin/country/admin_form_country_data.tpl +++ b/web/WEB-INF/templates/admin/country/admin_form_country_data.tpl @@ -25,8 +25,6 @@ <f:validator validatorId="AbroadDialValidator" /> </h:inputText> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> @@ -45,8 +43,6 @@ <h:outputText styleClass="small notice" value="#{msg.ADMIN_ENTER_COUNTRY_CODE_EXAMPLE}" /> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> @@ -63,8 +59,6 @@ <f:validateRegex for="countryI18nKey" pattern="[A-Z_]{2,}" /> </h:inputText> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> @@ -82,8 +76,6 @@ <f:selectItem itemValue="false" itemLabel="#{msg.CHOICE_NO}" /> </h:selectOneListbox> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> @@ -100,8 +92,6 @@ <f:validateLongRange for="countryExternalDialPrefix" minimum="0" maximum="99" /> </h:inputText> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> @@ -120,8 +110,6 @@ <h:outputText styleClass="small notice" value="#{msg.ADMIN_ENTER_COUNTRY_PHONE_CODE_EXAMPLE}" /> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> diff --git a/web/WEB-INF/templates/admin/fax/admin_form_add_contact_fax.tpl b/web/WEB-INF/templates/admin/fax/admin_form_add_contact_fax.tpl index f40395f3..f7c8841e 100644 --- a/web/WEB-INF/templates/admin/fax/admin_form_add_contact_fax.tpl +++ b/web/WEB-INF/templates/admin/fax/admin_form_add_contact_fax.tpl @@ -30,8 +30,6 @@ <f:selectItems value="#{adminPhoneController.allNonLinkedFaxNumbers()}" var="faxNumber" itemValue="#{faxNumber}" itemLabel="#{faxNumber.phoneCountry.countryExternalDialPrefix} (#{faxNumber.phoneAreaCode}) #{faxNumber.phoneNumber}" /> </h:selectOneMenu> </div> - - <div class="clear"></div> </h:panelGroup> <div class="para"> @@ -48,8 +46,6 @@ <ui:param name="targetController" value="#{adminContactPhoneController}" /> </ui:include> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> diff --git a/web/WEB-INF/templates/admin/fax/admin_form_fax_data.tpl b/web/WEB-INF/templates/admin/fax/admin_form_fax_data.tpl index ab6654f4..2355ffaf 100644 --- a/web/WEB-INF/templates/admin/fax/admin_form_fax_data.tpl +++ b/web/WEB-INF/templates/admin/fax/admin_form_fax_data.tpl @@ -22,8 +22,6 @@ <div class="table_right_medium"> <h:outputText id="faxNumberId" value="#{beanHelper.faxNumber.phoneId}" /> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="table_row" layout="block"> @@ -36,8 +34,6 @@ <ui:param name="targetController" value="#{adminPhoneController}" /> </ui:include> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> diff --git a/web/WEB-INF/templates/admin/landline/admin_form_add_contact_landline.tpl b/web/WEB-INF/templates/admin/landline/admin_form_add_contact_landline.tpl index 1c131bdb..6b866a07 100644 --- a/web/WEB-INF/templates/admin/landline/admin_form_add_contact_landline.tpl +++ b/web/WEB-INF/templates/admin/landline/admin_form_add_contact_landline.tpl @@ -30,8 +30,6 @@ <f:selectItems value="#{adminPhoneController.allNonLinkedLandLineNumbers()}" var="landlineNumber" itemValue="#{landlineNumber}" itemLabel="#{landlineNumber.phoneCountry.countryExternalDialPrefix} (#{landlineNumber.phoneAreaCode}) #{landlineNumber.phoneNumber}" /> </h:selectOneMenu> </div> - - <div class="clear"></div> </h:panelGroup> <div class="para"> @@ -48,8 +46,6 @@ <ui:param name="targetController" value="#{adminPhoneController}" /> </ui:include> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> diff --git a/web/WEB-INF/templates/admin/landline/admin_form_landline_data.tpl b/web/WEB-INF/templates/admin/landline/admin_form_landline_data.tpl index c6047b4e..cdf89951 100644 --- a/web/WEB-INF/templates/admin/landline/admin_form_landline_data.tpl +++ b/web/WEB-INF/templates/admin/landline/admin_form_landline_data.tpl @@ -22,8 +22,6 @@ <div class="table_right_medium"> <h:outputText id="landLineNumberId" value="#{beanHelper.landLineNumber.phoneId}" /> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="table_row" layout="block"> @@ -36,8 +34,6 @@ <ui:param name="targetController" value="#{adminPhoneController}" /> </ui:include> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> diff --git a/web/WEB-INF/templates/admin/mobile/admin_form_mobile_data.tpl b/web/WEB-INF/templates/admin/mobile/admin_form_mobile_data.tpl index 625f4ff7..0b5f36a2 100644 --- a/web/WEB-INF/templates/admin/mobile/admin_form_mobile_data.tpl +++ b/web/WEB-INF/templates/admin/mobile/admin_form_mobile_data.tpl @@ -22,8 +22,6 @@ <div class="table_right_medium"> <h:outputText id="mobileNumberId" value="#{beanHelper.mobileNumber.phoneId}" /> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="table_row" layout="block"> @@ -38,12 +36,10 @@ <f:selectItems value="#{mobileProviderController.allMobileProviders()}" var="mobileProvider" itemValue="#{mobileProvider}" itemLabel="#{mobileProvider.providerCountry.countryExternalDialPrefix}#{mobileProvider.providerDialPrefix} (#{mobileProvider.providerName})" /> </h:selectOneMenu> </div> + </h:panelGroup> - <div class="clear"></div> - - <h:panelGroup styleClass="error_container" layout="block"> - <h:message for="mobileProvider" errorClass="errors" fatalClass="errors" warnClass="errors" /> - </h:panelGroup> + <h:panelGroup styleClass="error_container" layout="block"> + <h:message for="mobileProvider" errorClass="errors" fatalClass="errors" warnClass="errors" /> </h:panelGroup> <h:panelGroup styleClass="table_row" layout="block"> @@ -56,12 +52,10 @@ <f:validator for="mobileNumber" validatorId="PhoneNumberValidator" /> </h:inputText> </div> + </h:panelGroup> - <div class="clear"></div> - - <h:panelGroup styleClass="error_container" layout="block"> - <h:message for="mobileNumber" errorClass="errors" fatalClass="errors" warnClass="errors" /> - </h:panelGroup> + <h:panelGroup styleClass="error_container" layout="block"> + <h:message for="mobileNumber" errorClass="errors" fatalClass="errors" warnClass="errors" /> </h:panelGroup> </fieldset> </h:panelGroup> diff --git a/web/WEB-INF/templates/admin/mobile_provider/admin_form_mobile_provider.tpl b/web/WEB-INF/templates/admin/mobile_provider/admin_form_mobile_provider.tpl index 46a68868..00d1cf0e 100644 --- a/web/WEB-INF/templates/admin/mobile_provider/admin_form_mobile_provider.tpl +++ b/web/WEB-INF/templates/admin/mobile_provider/admin_form_mobile_provider.tpl @@ -25,12 +25,10 @@ <f:validateLongRange for="providerDialPrefix" minimum="0" maximum="9999" /> </h:inputText> </div> + </h:panelGroup> - <div class="clear"></div> - - <h:panelGroup styleClass="error_container" layout="block"> - <h:message for="providerDialPrefix" errorClass="errors" fatalClass="errors" warnClass="errors" /> - </h:panelGroup> + <h:panelGroup styleClass="error_container" layout="block"> + <h:message for="providerDialPrefix" errorClass="errors" fatalClass="errors" warnClass="errors" /> </h:panelGroup> <h:panelGroup styleClass="table_row" layout="block"> @@ -43,8 +41,6 @@ <h:outputText styleClass="small notice" value="#{msg.ADMIN_ENTER_MOBILE_PROVIDER_PATTERN_EXAMPLE}" /> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="table_row" layout="block"> @@ -55,8 +51,6 @@ <div class="table_right_medium"> <h:inputText styleClass="input" id="providerName" size="20" maxlength="100" value="#{adminMobileProviderController.providerName}" required="true" /> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="table_row" layout="block"> @@ -70,8 +64,6 @@ <f:selectItems value="#{countryController.allCountries()}" var="country" itemValue="#{country}" itemLabel="#{country.countryCode} (#{msg[country.countryI18nKey]})" /> </h:selectOneMenu> </div> - - <div class="clear"></div> </h:panelGroup> </fieldset> </h:panelGroup> diff --git a/web/WEB-INF/templates/admin/user/admin_form_user_data.tpl b/web/WEB-INF/templates/admin/user/admin_form_user_data.tpl index 4d533c4c..a2c3dab3 100644 --- a/web/WEB-INF/templates/admin/user/admin_form_user_data.tpl +++ b/web/WEB-INF/templates/admin/user/admin_form_user_data.tpl @@ -22,12 +22,8 @@ <div class="table_right_medium"> <h:inputText styleClass="input" id="userName" size="20" maxlength="255" value="#{adminUserController.userName}" required="true" /> </div> - - <div class="clear"></div> </h:panelGroup> - <div class="para"></div> - <h:panelGroup styleClass="table_row" layout="block"> <div class="table_left_medium"> <h:outputLabel for="userPassword" value="#{msg.ADMIN_USER_DATA_ENTER_PASSWORD}" /> @@ -36,8 +32,6 @@ <div class="table_right_medium"> <h:inputSecret styleClass="input" id="userPassword" size="10" maxlength="255" value="#{adminUserController.userPassword}" /> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="table_row" layout="block"> @@ -48,8 +42,6 @@ <div class="table_right_medium"> <h:inputSecret styleClass="input" id="userPasswordRepeat" size="10" maxlength="255" value="#{adminUserController.userPasswordRepeat}" /> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="table_row" layout="block" rendered="#{featureController.isFeatureEnabled('user_must_change_password')}"> @@ -60,11 +52,9 @@ <div class="table_right_medium"> <h:selectBooleanCheckbox styleClass="checkbox" id="userMustChangePassword" value="#{adminUserController.userMustChangePassword}" /> </div> - - <div class="clear"></div> </h:panelGroup> - <div class="para notice"> + <h:panelGroup styleClass="para notice" layout="block"> <ul> <li><h:outputText value="#{msg.ADMIN_USER_DATA_USER_NAME_NOTICE}" /></li> @@ -73,7 +63,7 @@ <h:outputText value="#{msg.ADMIN_USER_DATA_PASSWORD_ADD_NOTICE}" rendered="#{mode == 'add'}" /> </li> </ul> - </div> + </h:panelGroup> </fieldset> </h:panelGroup> </ui:composition> diff --git a/web/WEB-INF/templates/base.tpl b/web/WEB-INF/templates/base.tpl index 3ea18220..a2d46cd3 100644 --- a/web/WEB-INF/templates/base.tpl +++ b/web/WEB-INF/templates/base.tpl @@ -15,7 +15,7 @@ <f:loadBundle var="msg" basename="org.mxchange.localization.bundle" /> <h:outputStylesheet name="/css/default.css" /> - <h:outputStylesheet name="/css/cssLayout.css" /> + <h:outputStylesheet name="/css/layout.css" /> <title> <h:outputText value="JFinancials" /> @@ -63,8 +63,6 @@ </ui:insert> </div> </h:panelGroup> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup id="page_footer" layout="block"> diff --git a/web/WEB-INF/templates/contact/form_contact_data.tpl b/web/WEB-INF/templates/contact/form_contact_data.tpl index 78580ad6..a42ec3d0 100644 --- a/web/WEB-INF/templates/contact/form_contact_data.tpl +++ b/web/WEB-INF/templates/contact/form_contact_data.tpl @@ -29,12 +29,10 @@ <f:validator validatorId="NameValidator" /> </h:inputText> </div> + </h:panelGroup> - <div class="clear"></div> - - <h:panelGroup styleClass="error_container" layout="block"> - <h:message for="firstName" errorClass="errors" fatalClass="errors" warnClass="errors" /> - </h:panelGroup> + <h:panelGroup styleClass="error_container" layout="block"> + <h:message for="firstName" errorClass="errors" fatalClass="errors" warnClass="errors" /> </h:panelGroup> <h:panelGroup styleClass="table_row" layout="block"> @@ -47,12 +45,10 @@ <f:validator for="familyName" validatorId="NameValidator" /> </h:inputText> </div> + </h:panelGroup> - <div class="clear"></div> - - <h:panelGroup styleClass="error_container" layout="block"> - <h:message for="familyName" errorClass="errors" fatalClass="errors" warnClass="errors" /> - </h:panelGroup> + <h:panelGroup styleClass="error_container" layout="block"> + <h:message for="familyName" errorClass="errors" fatalClass="errors" warnClass="errors" /> </h:panelGroup> <h:panelGroup styleClass="table_row" layout="block"> @@ -65,12 +61,10 @@ <f:validator validatorId="NameValidator" /> </h:inputText> </div> + </h:panelGroup> - <div class="clear"></div> - - <h:panelGroup styleClass="error_container" layout="block"> - <h:message for="street" errorClass="errors" fatalClass="errors" warnClass="errors" /> - </h:panelGroup> + <h:panelGroup styleClass="error_container" layout="block"> + <h:message for="street" errorClass="errors" fatalClass="errors" warnClass="errors" /> </h:panelGroup> <h:panelGroup styleClass="table_row" layout="block"> @@ -83,12 +77,10 @@ <f:validateLongRange for="houseNumber" minimum="1" maximum="500" /> </h:inputText> </div> + </h:panelGroup> - <div class="clear"></div> - - <h:panelGroup styleClass="error_container" layout="block"> - <h:message for="houseNumber" errorClass="errors" fatalClass="errors" warnClass="errors" /> - </h:panelGroup> + <h:panelGroup styleClass="error_container" layout="block"> + <h:message for="houseNumber" errorClass="errors" fatalClass="errors" warnClass="errors" /> </h:panelGroup> <h:panelGroup styleClass="table_row" layout="block"> @@ -99,12 +91,10 @@ <div class="table_right_medium"> <h:inputText styleClass="input" id="houseNumberExtension" size="2" maxlength="2" value="#{contactController.houseNumberExtension}" /> </div> + </h:panelGroup> - <div class="clear"></div> - - <h:panelGroup styleClass="error_container" layout="block"> - <h:message for="houseNumberExtension" errorClass="errors" fatalClass="errors" warnClass="errors" /> - </h:panelGroup> + <h:panelGroup styleClass="error_container" layout="block"> + <h:message for="houseNumberExtension" errorClass="errors" fatalClass="errors" warnClass="errors" /> </h:panelGroup> <h:panelGroup styleClass="table_row" layout="block"> @@ -117,12 +107,10 @@ <f:validateLongRange minimum="1" maximum="99999" /> </h:inputText> </div> + </h:panelGroup> - <div class="clear"></div> - - <h:panelGroup styleClass="error_container" layout="block"> - <h:message for="zipCode" errorClass="errors" fatalClass="errors" warnClass="errors" /> - </h:panelGroup> + <h:panelGroup styleClass="error_container" layout="block"> + <h:message for="zipCode" errorClass="errors" fatalClass="errors" warnClass="errors" /> </h:panelGroup> <h:panelGroup styleClass="table_row" layout="block"> @@ -135,13 +123,11 @@ <f:validator validatorId="NameValidator" /> </h:inputText> </div> - - <div class="clear"></div> + </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> <h:message for="city" errorClass="errors" fatalClass="errors" warnClass="errors" /> </h:panelGroup> - </h:panelGroup> <h:panelGroup styleClass="table_row" layout="block"> <div class="table_left_medium"> @@ -153,13 +139,11 @@ <f:convertDateTime pattern="#{msg.BIRTHDAY_PATTERN}" /> </h:inputText> </div> - - <div class="clear"></div> + </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> <h:message for="birthday" errorClass="errors" fatalClass="errors" warnClass="errors" /> </h:panelGroup> - </h:panelGroup> <h:panelGroup styleClass="table_row" layout="block"> <div class="table_left_medium"> @@ -173,13 +157,11 @@ <f:selectItems value="#{countryController.allCountries()}" var="country" itemValue="#{country}" itemLabel="#{country.countryCode} (#{msg[country.countryI18nKey]})" /> </h:selectOneMenu> </div> - - <div class="clear"></div> + </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> <h:message for="country" errorClass="errors" fatalClass="errors" warnClass="errors" /> </h:panelGroup> - </h:panelGroup> <h:panelGroup styleClass="table_row" layout="block"> <div class="table_left_medium"> @@ -201,8 +183,6 @@ <f:validator validatorId="PhoneNumberValidator" /> </h:inputText> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> @@ -233,8 +213,6 @@ <f:validator for="faxNumber" validatorId="PhoneNumberValidator" /> </h:inputText> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> diff --git a/web/WEB-INF/templates/guest/guest_email_address_repeat_fields.tpl b/web/WEB-INF/templates/guest/guest_email_address_repeat_fields.tpl index 0f512b25..d930846f 100644 --- a/web/WEB-INF/templates/guest/guest_email_address_repeat_fields.tpl +++ b/web/WEB-INF/templates/guest/guest_email_address_repeat_fields.tpl @@ -16,8 +16,6 @@ <f:validator validatorId="EmailAddressValidator" /> </h:inputText> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> @@ -32,8 +30,6 @@ <div class="table_right_medium"> <h:inputText styleClass="input" id="emailAddressRepeat" size="20" maxlength="255" value="#{contactController.emailAddressRepeat}" required="true" requiredMessage="#{msg.EMAIL_ADDRESS_REPEAT_NOT_ENTERED}" /> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> diff --git a/web/WEB-INF/templates/guest/guest_footer.tpl b/web/WEB-INF/templates/guest/guest_footer.tpl index 77b56d5c..13f1a363 100644 --- a/web/WEB-INF/templates/guest/guest_footer.tpl +++ b/web/WEB-INF/templates/guest/guest_footer.tpl @@ -38,6 +38,4 @@ <li class="footer_copyright">Copyright (c) 2016, 2017 Roland Häder</li> </ul> </div> - - <div class="clear"></div> </ui:composition> diff --git a/web/WEB-INF/templates/guest/guest_privacy_terms.tpl b/web/WEB-INF/templates/guest/guest_privacy_terms.tpl index 0e81ece2..bb86d274 100644 --- a/web/WEB-INF/templates/guest/guest_privacy_terms.tpl +++ b/web/WEB-INF/templates/guest/guest_privacy_terms.tpl @@ -25,12 +25,10 @@ <h:link outcome="privacy" target="_blank" value="#{msg.LINK_GUEST_PRIVACY_STATEMENTS}" /> <h:outputText value="#{msg.GUEST_AGREE_READ_PRIVACY_STATEMENT_2}" /> </div> + </h:panelGroup> - <div class="clear"></div> - - <h:panelGroup styleClass="error_container" layout="block"> - <h:message for="privacy" errorClass="errors" warnClass="warnings" fatalClass="errors" /> - </h:panelGroup> + <h:panelGroup styleClass="error_container" layout="block"> + <h:message for="privacy" errorClass="errors" warnClass="warnings" fatalClass="errors" /> </h:panelGroup> <h:panelGroup styleClass="table_row" layout="block"> @@ -47,12 +45,10 @@ <h:link outcome="terms" target="_blank" value="#{msg.LINK_GUEST_TERMS_CONDITIONS}" /> <h:outputText value="#{msg.GUEST_AGREE_READ_TERMS_CONDITIONS_2}" /> </div> + </h:panelGroup> - <div class="clear"></div> - - <h:panelGroup styleClass="error_container" layout="block"> - <h:message for="terms" errorClass="errors" warnClass="warnings" fatalClass="errors" /> - </h:panelGroup> + <h:panelGroup styleClass="error_container" layout="block"> + <h:message for="terms" errorClass="errors" warnClass="warnings" fatalClass="errors" /> </h:panelGroup> </fieldset> </h:panelGroup> diff --git a/web/WEB-INF/templates/guest/user/guest_login_form.tpl b/web/WEB-INF/templates/guest/user/guest_login_form.tpl index 74f86eeb..10aee0b6 100644 --- a/web/WEB-INF/templates/guest/user/guest_login_form.tpl +++ b/web/WEB-INF/templates/guest/user/guest_login_form.tpl @@ -4,8 +4,9 @@ xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://xmlns.jcp.org/jsf/facelets"> - <div id="user_login_content"> - <h:form id="form_user_login" rendered="#{featureController.isFeatureEnabled('user_login_require_user_name')}"> + + <h:panelGroup id="user_login_content" layout="block" rendered="#{featureController.isFeatureEnabled('user_login_require_user_name')}"> + <h:form id="form_user_login"> <h:panelGroup styleClass="table" layout="block"> <div class="table_header"> <h:outputText value="#{msg.GUEST_ENTER_USER_LOGIN_DATA_TITLE}" /> @@ -24,12 +25,10 @@ <div class="table_right"> <h:inputText styleClass="input" id="userName" value="#{userController.userName}" size="10" maxlength="20" required="true" requiredMessage="#{msg.LOGIN_NO_USER_NAME_MESSAGE}" /> </div> + </h:panelGroup> - <div class="clear"></div> - - <h:panelGroup styleClass="error_container" layout="block"> - <h:message for="userName" errorClass="errors" fatalClass="errors" warnClass="errors" /> - </h:panelGroup> + <h:panelGroup styleClass="error_container" layout="block"> + <h:message for="userName" errorClass="errors" fatalClass="errors" warnClass="errors" /> </h:panelGroup> <h:panelGroup styleClass="table_row" layout="block"> @@ -40,12 +39,10 @@ <div class="table_right"> <h:inputSecret styleClass="input" id="userPassword" value="#{userController.userPassword}" size="10" maxlength="255" required="true" requiredMessage="#{msg.LOGIN_NO_PASSWORD_MESSAGE}" /> </div> + </h:panelGroup> - <div class="clear"></div> - - <h:panelGroup styleClass="error_container" layout="block"> - <h:message for="userPassword" errorClass="errors" fatalClass="errors" warnClass="errors" /> - </h:panelGroup> + <h:panelGroup styleClass="error_container" layout="block"> + <h:message for="userPassword" errorClass="errors" fatalClass="errors" warnClass="errors" /> </h:panelGroup> </fieldset> @@ -59,5 +56,5 @@ <h:panelGroup styleClass="error_container" layout="block" rendered="#{not featureController.isFeatureEnabled('user_login_require_user_name')}"> <h:outputText styleClass="errors" value="#{msg.ERROR_GUEST_USER_NAME_REQUIRED_DISABLED}" /> </h:panelGroup> - </div> + </h:panelGroup> </ui:composition> diff --git a/web/WEB-INF/templates/guest/user/register/guest_form_register_page1.tpl b/web/WEB-INF/templates/guest/user/register/guest_form_register_page1.tpl index e7f92540..36eea09e 100644 --- a/web/WEB-INF/templates/guest/user/register/guest_form_register_page1.tpl +++ b/web/WEB-INF/templates/guest/user/register/guest_form_register_page1.tpl @@ -26,8 +26,6 @@ <div class="table_right_medium"> <h:inputText styleClass="input" id="userName" size="20" maxlength="255" value="#{userController.userName}" required="true" requiredMessage="#{msg.GUEST_REGISTRATION_USER_NAME_NOT_ENTERED}" /> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> @@ -48,8 +46,6 @@ <div class="table_right_medium"> <h:inputSecret styleClass="input" id="userPassword" size="10" maxlength="255" value="#{userController.userPassword}" required="#{not featureController.isFeatureEnabled('allow_user_registration_empty_password')}" requiredMessage="#{msg.GUEST_REGISTRATION_PASSWORD_NOT_ENTERED}" /> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> @@ -64,8 +60,6 @@ <div class="table_right_medium"> <h:inputSecret styleClass="input" id="userPasswordRepeat" size="10" maxlength="255" value="#{userController.userPasswordRepeat}" required="#{not featureController.isFeatureEnabled('allow_user_registration_empty_password')}" requiredMessage="#{msg.GUEST_REGISTRATION_PASSWORD_REPEAT_NOT_ENTERED}" /> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> diff --git a/web/WEB-INF/templates/guest/user/register/guest_form_register_single.tpl b/web/WEB-INF/templates/guest/user/register/guest_form_register_single.tpl index 98f822df..a3c7829d 100644 --- a/web/WEB-INF/templates/guest/user/register/guest_form_register_single.tpl +++ b/web/WEB-INF/templates/guest/user/register/guest_form_register_single.tpl @@ -28,12 +28,10 @@ <div class="table_right"> <h:inputText styleClass="input" id="userName" size="20" maxlength="255" value="#{userController.userName}" required="true" requiredMessage="#{msg.GUEST_REGISTRATION_USER_NAME_NOT_ENTERED}" /> </div> + </h:panelGroup> - <div class="clear"></div> - - <h:panelGroup styleClass="error_container" layout="block"> - <h:message for="userName" errorClass="errors" fatalClass="errors" warnClass="errors" /> - </h:panelGroup> + <h:panelGroup styleClass="error_container" layout="block"> + <h:message for="userName" errorClass="errors" fatalClass="errors" warnClass="errors" /> </h:panelGroup> </ui:fragment> @@ -50,8 +48,6 @@ <div class="table_right"> <h:inputSecret styleClass="input" id="userPassword" size="10" maxlength="255" value="#{userController.userPassword}" /> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> @@ -66,8 +62,6 @@ <div class="table_right"> <h:inputSecret styleClass="input" id="userPasswordRepeat" size="10" maxlength="255" value="#{userController.userPasswordRepeat}" /> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> @@ -77,9 +71,11 @@ <div class="para notice"> <ul> <li><h:outputText value="#{msg.GUEST_REGISTRATION_USER_NAME_NOTICE}" /></li> + <ui:fragment rendered="#{featureController.isFeatureEnabled('allow_user_registration_empty_password')}"> <li><h:outputText value="#{msg.GUEST_REGISTRATION_USER_PASSWORDS_EMPTY_ALLOWED}" /></li> </ui:fragment> + <ui:fragment rendered="#{not featureController.isFeatureEnabled('allow_user_registration_empty_password')}"> <li><h:outputText value="#{msg.GUEST_REGISTRATION_USER_PASSWORDS_EMPTY_NOT_ALLOWED}" /></li> </ui:fragment> diff --git a/web/WEB-INF/templates/login/user/user_change_email_address_repeat_fields.tpl b/web/WEB-INF/templates/login/user/user_change_email_address_repeat_fields.tpl index ee216c37..31e7b088 100644 --- a/web/WEB-INF/templates/login/user/user_change_email_address_repeat_fields.tpl +++ b/web/WEB-INF/templates/login/user/user_change_email_address_repeat_fields.tpl @@ -16,8 +16,6 @@ <f:validator validatorId="EmailAddressValidator" /> </h:inputText> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> @@ -32,8 +30,6 @@ <div class="table_right"> <h:inputText class="input" id="emailAddressRepeat" size="20" maxlength="255" value="#{userEmailChangeController.emailAddressRepeat}" required="true" requiredMessage="#{msg.EMAIL_ADDRESS_REPEAT_NOT_ENTERED}" /> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> diff --git a/web/WEB-INF/templates/login/user/user_enter_current_password.tpl b/web/WEB-INF/templates/login/user/user_enter_current_password.tpl index 97a4e7c9..c94c5fb8 100644 --- a/web/WEB-INF/templates/login/user/user_enter_current_password.tpl +++ b/web/WEB-INF/templates/login/user/user_enter_current_password.tpl @@ -21,12 +21,10 @@ <!-- <f:validator for="currentPassword" validatorId="FinancialsUserPasswordValidator" /> //--> </h:inputSecret> </div> + </h:panelGroup> - <div class="clear"></div> - - <h:panelGroup styleClass="error_container" layout="block"> - <h:message for="currentPassword" errorClass="errors" fatalClass="errors" warnClass="errors" /> - </h:panelGroup> + <h:panelGroup styleClass="error_container" layout="block"> + <h:message for="currentPassword" errorClass="errors" fatalClass="errors" warnClass="errors" /> </h:panelGroup> </fieldset> </h:panelGroup> diff --git a/web/WEB-INF/templates/login/user/user_footer.tpl b/web/WEB-INF/templates/login/user/user_footer.tpl index d31305de..5682983c 100644 --- a/web/WEB-INF/templates/login/user/user_footer.tpl +++ b/web/WEB-INF/templates/login/user/user_footer.tpl @@ -32,6 +32,4 @@ <li class="footer_copyright">Copyright (c) 2016, 2017 Roland Häder</li> </ul> </div> - - <div class="clear"></div> </ui:composition> diff --git a/web/admin/user/admin_user_delete.xhtml b/web/admin/user/admin_user_delete.xhtml index 51f5b414..c6afca17 100644 --- a/web/admin/user/admin_user_delete.xhtml +++ b/web/admin/user/admin_user_delete.xhtml @@ -47,8 +47,6 @@ <div class="table_right75_medium"> <h:inputTextarea id="userDeleteReason" styleClass="input" value="#{adminUserController.userDeleteReason}" rows="8" cols="45" /> </div> - - <div class="clear"></div> </h:panelGroup> <div class="table_footer"> diff --git a/web/admin/user/admin_user_list.xhtml b/web/admin/user/admin_user_list.xhtml index ae93f79f..fda0cf09 100644 --- a/web/admin/user/admin_user_list.xhtml +++ b/web/admin/user/admin_user_list.xhtml @@ -113,8 +113,6 @@ <f:selectItems value="#{contactController.selectableContacts()}" var="contact" itemValue="#{contact}" itemLabel="#{contact.contactId}: #{msg[contact.contactPersonalTitle.messageKey]} #{contact.contactFirstName} #{contact.contactFamilyName}" /> </h:selectOneMenu> </div> - - <div class="clear"></div> </h:panelGroup> </fieldset> </h:panelGroup> diff --git a/web/guest/user/user_lost_password.xhtml b/web/guest/user/user_lost_password.xhtml index 0896b864..47d3c460 100644 --- a/web/guest/user/user_lost_password.xhtml +++ b/web/guest/user/user_lost_password.xhtml @@ -36,8 +36,6 @@ <div class="table_right"> <h:inputText styleClass="input" id="id" size="10" maxlength="20" value="#{passwordRecoveryController.userId}" /> </div> - - <div class="clear"></div> </h:panelGroup> <div class="table_header"> @@ -52,8 +50,6 @@ <div class="table_right"> <h:inputText styleClass="input" id="email" size="20" maxlength="255" value="#{passwordRecoveryController.emailAddress}" /> </div> - - <div class="clear"></div> </h:panelGroup> </fieldset> diff --git a/web/resources/css/cssLayout.css b/web/resources/css/layout.css similarity index 97% rename from web/resources/css/cssLayout.css rename to web/resources/css/layout.css index c20b7886..5e557987 100644 --- a/web/resources/css/cssLayout.css +++ b/web/resources/css/layout.css @@ -49,6 +49,10 @@ div, table { margin-left: 190px; } +#menu_content::after { + clear: both; +} + .table_footer { margin: 2px; } @@ -92,6 +96,10 @@ table, .table, .table_medium { margin: 2px; } +.table_row::after { + clear: both; +} + .table_left { width: 250px; min-height: 20px; @@ -141,11 +149,7 @@ table, .table, .table_medium { } .para { - padding: 5px 5px 5px 5px; -} - -.clear { - clear: both; + padding: 5px; } ul.footer_nav, ul.mini_nav { @@ -363,3 +367,7 @@ input:hover, textarea:hover, select:hover, option:hover { padding-left: 4px; padding-right: 4px; } + +.footer::after { + clear: both; +} diff --git a/web/user/login_user_change_email_address.xhtml b/web/user/login_user_change_email_address.xhtml index 03674f1c..fedd9d48 100644 --- a/web/user/login_user_change_email_address.xhtml +++ b/web/user/login_user_change_email_address.xhtml @@ -36,8 +36,6 @@ <div class="table_right"> <h:outputText value="#{contactController.emailAddress}" /> </div> - - <div class="clear"></div> </h:panelGroup> <ui:include src="/WEB-INF/templates/login/user/user_change_email_address_repeat_fields.tpl" /> diff --git a/web/user/login_user_change_password.xhtml b/web/user/login_user_change_password.xhtml index 98003d1f..9d641961 100644 --- a/web/user/login_user_change_password.xhtml +++ b/web/user/login_user_change_password.xhtml @@ -37,8 +37,6 @@ <div class="table_right"> <h:inputSecret styleClass="input" id="userPassword" size="10" maxlength="255" value="#{userPasswordController.userPassword}" required="true" requiredMessage="#{msg.USER_NEW_PASSWORD_REQUIRED}" /> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> @@ -53,8 +51,6 @@ <div class="table_right"> <h:inputSecret styleClass="input" id="userPasswordRepeat" size="10" maxlength="255" value="#{userPasswordController.userPasswordRepeat}" required="true" requiredMessage="#{msg.USER_NEW_PASSWORD_REPEAT_REQUIRED}" /> </div> - - <div class="clear"></div> </h:panelGroup> <h:panelGroup styleClass="error_container" layout="block"> @@ -62,6 +58,7 @@ </h:panelGroup> </fieldset> + <!-- @TODO Get rid of this ugly class=para abuse --> <div class="para"></div> <ui:include src="/WEB-INF/templates/login/user/user_enter_current_password.tpl" /> -- 2.39.5