diff --git a/packages/manager/apps/web/client/app/components/hosting-domain-offers/constants.js b/packages/manager/apps/web/client/app/components/hosting-domain-offers/constants.js index 6ddec4623374..625a28e929a4 100644 --- a/packages/manager/apps/web/client/app/components/hosting-domain-offers/constants.js +++ b/packages/manager/apps/web/client/app/components/hosting-domain-offers/constants.js @@ -15,6 +15,18 @@ export const CATEGORIES_MAP = { 'hosting-performance-4': 'PERFORMANCE', }; +export const OFFERS_MAP = { + 'hosting-free-100M': 'Free hosting', + 'hosting-starter': 'STARTER', + 'hosting-perso': 'PERSO', + 'hosting-startup': 'STARTUP', + 'hosting-pro': 'PRO', + 'hosting-performance-1': 'PERFORMANCE', + 'hosting-agence': 'AGENCY', + 'hosting-agence-plus': 'AGENCY PLUS', + 'hosting-agence-max': 'AGENCY MAX', +}; + export const CLOUDWEB_OFFER = ['cloudweb1', 'cloudweb2', 'cloudweb3']; export const CLOUDWEB_VERSION_MAP = { @@ -47,6 +59,18 @@ export const NEW_OFFERS_PLAN_CODES = { PERFORMANCE_4: 'hosting-performance-4', }; +export const OFFERS_PLAN_CODES = { + FREE_100M: 'hosting-free-100M', + STARTER: 'hosting-starter', + PERSO: 'hosting-perso', + STARTUP: 'hosting-startup', + PRO: 'hosting-pro', + PERFORMANCE_1: 'hosting-performance-1', + AGENCY: 'hosting-agence', + AGENCY_PLUS: 'hosting-agence-plus', + AGENCY_MAX: 'hosting-agence-max', +}; + export const WEB_CLOUD_DB_VALUES = '512MB RAM - 8GB'; export default { diff --git a/packages/manager/apps/web/client/app/components/hosting-domain-offers/controller.js b/packages/manager/apps/web/client/app/components/hosting-domain-offers/controller.js index 8533b3f2e7d0..1bd06a91a770 100644 --- a/packages/manager/apps/web/client/app/components/hosting-domain-offers/controller.js +++ b/packages/manager/apps/web/client/app/components/hosting-domain-offers/controller.js @@ -6,6 +6,7 @@ import { NEW_OFFERS_END_DATE, BADGES, NEW_OFFERS_PLAN_CODES, + OFFERS_PLAN_CODES, CATEGORIES_MAP, VERSION_MAP, CLOUDWEB_OFFER, @@ -15,10 +16,174 @@ import { export default class WebComponentsHostingDomainOffersController { /* @ngInject */ - constructor($translate, $filter) { + constructor($translate, $filter, ovhFeatureFlipping) { this.$translate = $translate; + this.ovhFeatureFlipping = ovhFeatureFlipping; const bytes = $filter('bytes'); + this.OFFERS = { + FREE_100M: { + TECHNICALS: [ + { prefix: 'sites', values: [1] }, + { prefix: 'disk', values: ['100 Mo SSD'] }, + { prefix: 'emailStorage', values: [1, '5 Go'] }, + ], + SELECTORS: { + FREE_100M: { + planCode: OFFERS_PLAN_CODES.FREE_100M, + }, + }, + }, + STARTER: { + TECHNICALS: [ + { prefix: 'sites', values: [1] }, + { prefix: 'nddFree', values: [1] }, + { prefix: 'emailStorage', values: [2, '5 Go'] }, + { prefix: 'disk', values: ['1 Go SSD'] }, + { prefix: 'cms', values: [] }, + ], + SELECTORS: { + STARTER: { + planCode: OFFERS_PLAN_CODES.STARTER, + }, + }, + }, + PERSO: { + TECHNICALS: [ + { prefix: 'sites', values: [5] }, + { prefix: 'nddFree', values: [1] }, + { prefix: 'emailStorage', values: [10, '5 Go'] }, + { prefix: 'disk', values: ['100 Go SSD'] }, + { prefix: 'cms', values: [] }, + ], + SELECTORS: { + PERSO: { + planCode: OFFERS_PLAN_CODES.PERSO, + }, + }, + }, + STARTUP: { + TECHNICALS: [ + { prefix: 'vcores', values: ['< 1'] }, + { prefix: 'ram', values: ['< 1 Go'] }, + { prefix: 'backupIncluded', values: [] }, + { prefix: 'uptime', values: ['99,9%'] }, + { prefix: 'disk', values: ['100 Go SSD'] }, + { prefix: 'sites', values: [5] }, + { prefix: 'emailStorage', values: [10, '5 Go'] }, + { prefix: 'dbs', values: [5, '1 Go'] }, + { prefix: 'nddFree', values: [1] }, + ], + SELECTORS: { + STARTUP: { + planCode: OFFERS_PLAN_CODES.STARTUP, + }, + }, + }, + PRO: { + TECHNICALS: [ + { prefix: 'vcores', values: [1] }, + { prefix: 'ram', values: ['2 Go'] }, + { prefix: 'backupIncluded', values: [] }, + { prefix: 'uptime', values: ['99,9%'] }, + { prefix: 'disk', values: ['250 Go SSD'] }, + { prefix: 'sites', values: [100] }, + { prefix: 'emailStorage', values: [100, '5 Go'] }, + { prefix: 'dbs', values: [10, '2 Go'] }, + { prefix: 'nddFree', values: [1] }, + { prefix: 'cdn', values: [] }, + ], + SELECTORS: { + PRO: { + planCode: OFFERS_PLAN_CODES.PRO, + }, + }, + }, + PERFORMANCE: { + TECHNICALS: [ + { prefix: 'vcores', values: [2] }, + { prefix: 'ram', values: ['4 Go'] }, + { prefix: 'backupIncluded', values: [] }, + { prefix: 'uptime', values: ['99,9%'] }, + { prefix: 'disk', values: ['500 Go'] }, + { prefix: 'sites', values: [150] }, + { prefix: 'emailStorage', values: [1000, '5 Go'] }, + { prefix: 'dbs', values: [20, '2 Go'] }, + { prefix: 'webcloudDb', values: [] }, + { prefix: 'nddFree', values: [1] }, + { prefix: 'cdn', values: [] }, + ], + SELECTORS: { + PERFORMANCE_1: { + planCode: OFFERS_PLAN_CODES.PERFORMANCE_1, + }, + }, + }, + AGENCE: { + TECHNICALS: [ + { prefix: 'sites', values: [200] }, + { prefix: 'disk', values: ['500 Go SSD'] }, + { prefix: 'ram', values: ['8 Go'] }, + { prefix: 'vcores', values: [6] }, + { prefix: 'backupIncluded', values: [] }, + { prefix: 'uptime', values: ['99,9%'] }, + { prefix: 'userManagement', values: [] }, + { prefix: 'emailStorage', values: [1000, '5 Go'] }, + { prefix: 'dbs', values: [30, '2 Go'] }, + { prefix: 'webcloudDb', values: [] }, + { prefix: 'cdn', values: [] }, + { prefix: 'git', values: [] }, + ], + SELECTORS: { + AGENCE: { + planCode: OFFERS_PLAN_CODES.AGENCY, + }, + }, + }, + AGENCE_PLUS: { + TECHNICALS: [ + { prefix: 'sites', values: [500] }, + { prefix: 'disk', values: ['700 Go SSD'] }, + { prefix: 'ram', values: ['12 Go'] }, + { prefix: 'vcores', values: [10] }, + { prefix: 'backupIncluded', values: [] }, + { prefix: 'uptime', values: ['99,9%'] }, + { prefix: 'userManagement', values: [] }, + { prefix: 'emailStorage', values: [1000, '5 Go'] }, + { prefix: 'dbs', values: [40, '2 Go'] }, + { prefix: 'webcloudDb', values: [] }, + { prefix: 'cdn', values: [] }, + { prefix: 'git', values: [] }, + ], + SELECTORS: { + AGENCE_PLUS: { + planCode: OFFERS_PLAN_CODES.AGENCY_PLUS, + }, + }, + }, + AGENCE_MAX: { + TECHNICALS: [ + { prefix: 'sites', values: [3000] }, + { prefix: 'disk', values: ['1 To SSD'] }, + { prefix: 'ram', values: ['16 Go'] }, + { prefix: 'vcores', values: [14] }, + { prefix: 'backupIncluded', values: [] }, + { prefix: 'uptime', values: ['99,9%'] }, + { prefix: 'userManagement', values: [] }, + { prefix: 'emailStorage', values: [1000, '5 Go'] }, + { prefix: 'dbs', values: [50, '2 Go'] }, + { prefix: 'webcloudDb', values: [] }, + { prefix: 'cdn', values: [] }, + { prefix: 'git', values: [] }, + ], + SELECTORS: { + AGENCE_MAX: { + planCode: OFFERS_PLAN_CODES.AGENCY_MAX, + }, + }, + }, + }; + this.NEW_OFFERS = { PERSO: { TECHNICALS: [ @@ -89,7 +254,19 @@ export default class WebComponentsHostingDomainOffersController { } $onInit() { - this.groupedOffers = this.buildOffersGroup(); + return this.ovhFeatureFlipping + .checkFeatureAvailability(['web-hosting:change-offer']) + .then((featureAvailability) => { + this.useNewOffers = featureAvailability.isFeatureAvailable( + 'web-hosting:change-offer', + ); + }) + .catch(() => { + this.useNewOffers = false; + }) + .finally(() => { + this.groupedOffers = this.buildOffersGroup(); + }); } static buildBadgeModel(type, className) { @@ -193,7 +370,8 @@ export default class WebComponentsHostingDomainOffersController { } getNewOffer(offerCategory) { - return this.NEW_OFFERS[offerCategory.toUpperCase()]; + const offers = this.useNewOffers ? this.OFFERS : this.NEW_OFFERS; + return offers[offerCategory.toUpperCase()]; } getOfferTechnicalsInfo(offerCategory) { @@ -202,10 +380,13 @@ export default class WebComponentsHostingDomainOffersController { let serviceDatas = values[1]; if (prefix === 'services' && !serviceDatas) serviceDatas = WEB_CLOUD_DB_VALUES; - return this.$translate.instant( - `web_components_hosting_domain_offers_offer_${offerCategory}_technicals_${prefix}`, - { value1: values[0], value2: serviceDatas }, - ); + const key = this.useNewOffers + ? `web_components_hosting_domain_offers_${prefix}` + : `web_components_hosting_domain_offers_offer_${offerCategory}_technicals_${prefix}`; + return this.$translate.instant(key, { + value1: values[0], + value2: serviceDatas, + }); }, ); } diff --git a/packages/manager/apps/web/client/app/components/hosting-domain-offers/translations/Messages_fr_FR.json b/packages/manager/apps/web/client/app/components/hosting-domain-offers/translations/Messages_fr_FR.json index c20eeeeb53f5..4ab6b8381e8c 100644 --- a/packages/manager/apps/web/client/app/components/hosting-domain-offers/translations/Messages_fr_FR.json +++ b/packages/manager/apps/web/client/app/components/hosting-domain-offers/translations/Messages_fr_FR.json @@ -32,5 +32,19 @@ "web_components_hosting_domain_offers_offer_badge_current": "Offre actuelle", "web_components_hosting_domain_offers_offer_select_version_placeholder": "Choisir une version", "web_components_hosting_domain_offers_offer_select_version_performance": "{{coreNumber}} vCores, {{ramSize}} RAM", - "web_components_hosting_domain_offers_offer_price": "{{priceValue}} HT/mois" + "web_components_hosting_domain_offers_offer_price": "{{priceValue}} HT/mois", + "web_components_hosting_domain_offers_sites": "{{value1}} Sites", + "web_components_hosting_domain_offers_disk": "{{value1}}", + "web_components_hosting_domain_offers_emailStorage": "{{value1}} mails {{value2}}", + "web_components_hosting_domain_offers_cms": "CMS 1clic", + "web_components_hosting_domain_offers_nddFree": "{{value1}} ndd free", + "web_components_hosting_domain_offers_vcores": "{{value1}} vCore", + "web_components_hosting_domain_offers_ram": "{{value1}} de RAM", + "web_components_hosting_domain_offers_backupIncluded": "Backup inclus", + "web_components_hosting_domain_offers_uptime": "Uptime {{value1}}", + "web_components_hosting_domain_offers_dbs": "{{value1}} db {{value2}}", + "web_components_hosting_domain_offers_webcloudDb": "WebCloud DB", + "web_components_hosting_domain_offers_cdn": "CDN", + "web_components_hosting_domain_offers_git": "GIT", + "web_components_hosting_domain_offers_userManagement": "Gestion user" } diff --git a/packages/manager/apps/web/client/app/hosting/dashboard/hosting.controller.js b/packages/manager/apps/web/client/app/hosting/dashboard/hosting.controller.js index ed5b0909d9a9..b86099c3b41b 100644 --- a/packages/manager/apps/web/client/app/hosting/dashboard/hosting.controller.js +++ b/packages/manager/apps/web/client/app/hosting/dashboard/hosting.controller.js @@ -71,6 +71,7 @@ export default class { user, userStatisticsLink, userLogsLink, + isChangeOfferFeatureAvailable, isWebsiteFeatureAvailable, isOslToLdpFeatureAvailable, HOSTING_STATUS, @@ -140,6 +141,7 @@ export default class { this.user = user; this.userStatisticsLink = userStatisticsLink; this.userLogsLink = userLogsLink; + this.isChangeOfferFeatureAvailable = isChangeOfferFeatureAvailable; this.isOslToLdpFeatureAvailable = isOslToLdpFeatureAvailable; this.DOMAIN_ORDER_URL = DOMAIN_ORDER_URL; this.HOSTING_ORDER_URL = HOSTING_ORDER_URL; diff --git a/packages/manager/apps/web/client/app/hosting/dashboard/hosting.html b/packages/manager/apps/web/client/app/hosting/dashboard/hosting.html index a63d71d8a18f..ffca1a956459 100644 --- a/packages/manager/apps/web/client/app/hosting/dashboard/hosting.html +++ b/packages/manager/apps/web/client/app/hosting/dashboard/hosting.html @@ -180,6 +180,20 @@

data-ovh-alert-hide-remove-button class="mt-4" > + + + + + { configurationSelected: true, }); }, + isChangeOfferFeatureAvailable: /* @ngInject */ (ovhFeatureFlipping) => + ovhFeatureFlipping + .checkFeatureAvailability('web-hosting:change-offer') + .then((featureAvailability) => + featureAvailability.isFeatureAvailable('web-hosting:change-offer'), + ) + .catch(() => false), isLocalSeoAvailable: /* @ngInject */ (availableOptions) => availableOptions.find(({ family }) => family === LOCAL_SEO_FAMILY), diff --git a/packages/manager/apps/web/client/app/hosting/dashboard/translations/Messages_de_DE.json b/packages/manager/apps/web/client/app/hosting/dashboard/translations/Messages_de_DE.json index 724cdc52d38b..95701ff5cca4 100644 --- a/packages/manager/apps/web/client/app/hosting/dashboard/translations/Messages_de_DE.json +++ b/packages/manager/apps/web/client/app/hosting/dashboard/translations/Messages_de_DE.json @@ -1,4 +1,6 @@ { + "hosting_change_offer_banner": "Our web hosting plans are evolving from June 1, 2026. Discover the improvements and new features included.", + "hosting_change_offer_banner_link": "Learn more", "hosting_change_offer_for_service": "Der Dienst ist für dieses Angebot nicht verfügbar.", "hosting_change_offer_for_service_offer": "Dieser Dienst ist für das {{offer}} Angebot nicht verfügbar.", "hosting_common_password_conditions": "Bitte beachten Sie, dass das Passwort nach folgenden Regeln vergeben werden muss:
- mindestens {{t0}} Zeichen
- höchstens {{t1}} Zeichen
- mindestens ein Großbuchstabe
- mindestens ein Kleinbuchstabe
- mindestens eine Zahl
- ausschließlich Zahlen und Buchstaben", @@ -1127,6 +1129,16 @@ "hosting_order_upgrade_start_time_summary_today": "Update geplant für heute um {{time}}.", "hosting_order_upgrade_start_time_summary_tomorrow": "Update geplant für morgen um {{time}}.", "hosting_order_upgrade_no_contract": "Keine neuen Verträge zur Validierung vorhanden", + "hosting_order_upgrade_summary_empty": "Your cart is empty", + "hosting_order_upgrade_summary_product": "Web Hosting", + "hosting_order_upgrade_summary_product_lower": "web hosting", + "hosting_order_upgrade_summary_duration": "Duration", + "hosting_order_upgrade_summary_duration_value": "12 months", + "hosting_order_upgrade_summary_options": "Options", + "hosting_order_upgrade_summary_included": "Included", + "hosting_order_upgrade_summary_total": "Total", + "hosting_order_upgrade_summary_vat_period": "ex. VAT/12 months", + "hosting_order_upgrade_summary_cta": "Continue order", "hosting_migrate_my_ovh_org_success": "Die Migration Ihrer ovh.org-Domain wurde registriert. Sobald sie abgeschlossen ist, erhalten Sie eine E-Mail.", "hosting_migrate_my_ovh_org_error": "Bei der Migration Ihrer OVH Domain ist ein Fehler aufgetreten.", "hosting_tab_DATABASES_configuration_order_title_button_public": "Eine Datenbank bestellen", diff --git a/packages/manager/apps/web/client/app/hosting/dashboard/translations/Messages_en_GB.json b/packages/manager/apps/web/client/app/hosting/dashboard/translations/Messages_en_GB.json index d21582dc7641..974a3de1ac47 100644 --- a/packages/manager/apps/web/client/app/hosting/dashboard/translations/Messages_en_GB.json +++ b/packages/manager/apps/web/client/app/hosting/dashboard/translations/Messages_en_GB.json @@ -1,4 +1,6 @@ { + "hosting_change_offer_banner": "Our web hosting plans are evolving from June 1, 2026. Discover the improvements and new features included.", + "hosting_change_offer_banner_link": "Learn more", "hosting_change_offer_for_service": "This service is not available for this solution.", "hosting_change_offer_for_service_offer": "This service is not accessible for the {{offer}} solution.", "hosting_common_password_conditions": "Please note that the password must meet the following criteria:
- Minimum {{t0}} characters
- Maximum {{t1}} characters
- At least one capital letter
- At least one lower-case letter
- At least one number
- Must only contain letters and numbers", @@ -1127,6 +1129,16 @@ "hosting_order_upgrade_start_time_summary_today": "Update scheduled at {{time}} today.", "hosting_order_upgrade_start_time_summary_tomorrow": "Update scheduled at {{time}} tomorrow.", "hosting_order_upgrade_no_contract": "No new contracts to validate", + "hosting_order_upgrade_summary_empty": "Your cart is empty", + "hosting_order_upgrade_summary_product": "Web Hosting", + "hosting_order_upgrade_summary_product_lower": "web hosting", + "hosting_order_upgrade_summary_duration": "Duration", + "hosting_order_upgrade_summary_duration_value": "12 months", + "hosting_order_upgrade_summary_options": "Options", + "hosting_order_upgrade_summary_included": "Included", + "hosting_order_upgrade_summary_total": "Total", + "hosting_order_upgrade_summary_vat_period": "ex. VAT/12 months", + "hosting_order_upgrade_summary_cta": "Continue order", "hosting_migrate_my_ovh_org_success": "Your ovh.org domain migration has been processed. You will receive an email when it is complete.", "hosting_migrate_my_ovh_org_error": "An error has occurred migrating your ovh.org domain. ", "hosting_tab_DATABASES_configuration_order_title_button_public": "Order a database", diff --git a/packages/manager/apps/web/client/app/hosting/dashboard/translations/Messages_es_ES.json b/packages/manager/apps/web/client/app/hosting/dashboard/translations/Messages_es_ES.json index d22a89ec7f52..b48b316a9639 100644 --- a/packages/manager/apps/web/client/app/hosting/dashboard/translations/Messages_es_ES.json +++ b/packages/manager/apps/web/client/app/hosting/dashboard/translations/Messages_es_ES.json @@ -1,4 +1,6 @@ { + "hosting_change_offer_banner": "Our web hosting plans are evolving from June 1, 2026. Discover the improvements and new features included.", + "hosting_change_offer_banner_link": "Learn more", "hosting_change_offer_for_service": "El servicio no está disponible para este producto.", "hosting_change_offer_for_service_offer": "Este servicio no está disponible para la solución {{offer}}.", "hosting_common_password_conditions": "Atención: La contraseña debe cumplir los siguientes criterios:
- mínimo {{t0}} caracteres
- máximo {{t1}} caracteres
- al menos una letra mayúscula
- al menos una letra minúscula
- al menos una cifra
- debe estar compuesto únicamente por cifras y letras", @@ -1117,6 +1119,16 @@ "hosting_order_upgrade_start_time_summary_today": "Actualización prevista a las {{time}} hoy.", "hosting_order_upgrade_start_time_summary_tomorrow": "Actualización prevista a las {{time}} mañana.", "hosting_order_upgrade_no_contract": "No hay ningún contrato pendiente de validación.", + "hosting_order_upgrade_summary_empty": "Your cart is empty", + "hosting_order_upgrade_summary_product": "Web Hosting", + "hosting_order_upgrade_summary_product_lower": "web hosting", + "hosting_order_upgrade_summary_duration": "Duration", + "hosting_order_upgrade_summary_duration_value": "12 months", + "hosting_order_upgrade_summary_options": "Options", + "hosting_order_upgrade_summary_included": "Included", + "hosting_order_upgrade_summary_total": "Total", + "hosting_order_upgrade_summary_vat_period": "ex. VAT/12 months", + "hosting_order_upgrade_summary_cta": "Continue order", "hosting_migrate_my_ovh_org_success": "Hemos recibido la solicitud de migración de su dominio .ovh.org. Recibirá una notificación por correo electrónico cuando haya finalizado.", "hosting_migrate_my_ovh_org_error": "Se ha producido un error al migrar su dominio .ovh.org.", "hosting_tab_DATABASES_configuration_order_title_button_public": "Contratar una base de datos", diff --git a/packages/manager/apps/web/client/app/hosting/dashboard/translations/Messages_fr_CA.json b/packages/manager/apps/web/client/app/hosting/dashboard/translations/Messages_fr_CA.json index cc8c5a68a33d..f29e8f858345 100644 --- a/packages/manager/apps/web/client/app/hosting/dashboard/translations/Messages_fr_CA.json +++ b/packages/manager/apps/web/client/app/hosting/dashboard/translations/Messages_fr_CA.json @@ -1,4 +1,6 @@ { + "hosting_change_offer_banner": "Nos offres d'hébergement web évoluent à partir du 1er juin 2026. Découvrez les améliorations et les nouveautés incluses.", + "hosting_change_offer_banner_link": "En savoir plus", "hosting_change_offer_for_service": "Ce service n'est pas accessible pour cette offre.", "hosting_change_offer_for_service_offer": "Ce service n'est pas accessible pour l'offre {{offer}}.", "hosting_common_password_conditions": "Attention, le mot de passe doit respecter les conditions suivantes :
- Minimum {{t0}} caractères
- Maximum {{t1}} caractères
- Au moins une lettre majuscule
- Au moins une lettre minuscule
- Au moins un chiffre
- Doit être composé uniquement de chiffres et de lettres", @@ -1146,6 +1148,16 @@ "hosting_order_upgrade_start_time_summary_today": "Mise à jour prévue à {{time}} aujourd'hui.", "hosting_order_upgrade_start_time_summary_tomorrow": "Mise à jour prévue à {{time}} demain.", "hosting_order_upgrade_no_contract": "Pas de nouveaux contrats à valider", + "hosting_order_upgrade_summary_empty": "Votre panier est vide", + "hosting_order_upgrade_summary_product": "Hébergement Web", + "hosting_order_upgrade_summary_product_lower": "hébergement web", + "hosting_order_upgrade_summary_duration": "Durée", + "hosting_order_upgrade_summary_duration_value": "12 mois", + "hosting_order_upgrade_summary_options": "Options", + "hosting_order_upgrade_summary_included": "Inclus", + "hosting_order_upgrade_summary_total": "Total", + "hosting_order_upgrade_summary_vat_period": "HT/12 mois", + "hosting_order_upgrade_summary_cta": "Continuer la commande", "hosting_migrate_my_ovh_org_success": "La migration de votre domaine ovh.org a bien été prise en compte. Vous recevrez un e-mail lorsqu'elle sera terminée.", "hosting_migrate_my_ovh_org_error": "Une erreur est survenue lors de la migration de votre domaine ovh.org.", "hosting_tab_DATABASES_configuration_order_title_button_public": "Commander une base de données", diff --git a/packages/manager/apps/web/client/app/hosting/dashboard/translations/Messages_fr_FR.json b/packages/manager/apps/web/client/app/hosting/dashboard/translations/Messages_fr_FR.json index cc8c5a68a33d..f29e8f858345 100644 --- a/packages/manager/apps/web/client/app/hosting/dashboard/translations/Messages_fr_FR.json +++ b/packages/manager/apps/web/client/app/hosting/dashboard/translations/Messages_fr_FR.json @@ -1,4 +1,6 @@ { + "hosting_change_offer_banner": "Nos offres d'hébergement web évoluent à partir du 1er juin 2026. Découvrez les améliorations et les nouveautés incluses.", + "hosting_change_offer_banner_link": "En savoir plus", "hosting_change_offer_for_service": "Ce service n'est pas accessible pour cette offre.", "hosting_change_offer_for_service_offer": "Ce service n'est pas accessible pour l'offre {{offer}}.", "hosting_common_password_conditions": "Attention, le mot de passe doit respecter les conditions suivantes :
- Minimum {{t0}} caractères
- Maximum {{t1}} caractères
- Au moins une lettre majuscule
- Au moins une lettre minuscule
- Au moins un chiffre
- Doit être composé uniquement de chiffres et de lettres", @@ -1146,6 +1148,16 @@ "hosting_order_upgrade_start_time_summary_today": "Mise à jour prévue à {{time}} aujourd'hui.", "hosting_order_upgrade_start_time_summary_tomorrow": "Mise à jour prévue à {{time}} demain.", "hosting_order_upgrade_no_contract": "Pas de nouveaux contrats à valider", + "hosting_order_upgrade_summary_empty": "Votre panier est vide", + "hosting_order_upgrade_summary_product": "Hébergement Web", + "hosting_order_upgrade_summary_product_lower": "hébergement web", + "hosting_order_upgrade_summary_duration": "Durée", + "hosting_order_upgrade_summary_duration_value": "12 mois", + "hosting_order_upgrade_summary_options": "Options", + "hosting_order_upgrade_summary_included": "Inclus", + "hosting_order_upgrade_summary_total": "Total", + "hosting_order_upgrade_summary_vat_period": "HT/12 mois", + "hosting_order_upgrade_summary_cta": "Continuer la commande", "hosting_migrate_my_ovh_org_success": "La migration de votre domaine ovh.org a bien été prise en compte. Vous recevrez un e-mail lorsqu'elle sera terminée.", "hosting_migrate_my_ovh_org_error": "Une erreur est survenue lors de la migration de votre domaine ovh.org.", "hosting_tab_DATABASES_configuration_order_title_button_public": "Commander une base de données", diff --git a/packages/manager/apps/web/client/app/hosting/dashboard/translations/Messages_it_IT.json b/packages/manager/apps/web/client/app/hosting/dashboard/translations/Messages_it_IT.json index 834ecc336f26..6cb7c4d670fa 100644 --- a/packages/manager/apps/web/client/app/hosting/dashboard/translations/Messages_it_IT.json +++ b/packages/manager/apps/web/client/app/hosting/dashboard/translations/Messages_it_IT.json @@ -1,4 +1,6 @@ { + "hosting_change_offer_banner": "Our web hosting plans are evolving from June 1, 2026. Discover the improvements and new features included.", + "hosting_change_offer_banner_link": "Learn more", "hosting_change_offer_for_service": "Questo servizio non è disponibile per questa offerta. ", "hosting_change_offer_for_service_offer": "Questo servizio non è disponibile per la soluzione {{offer}}.", "hosting_common_password_conditions": "Attenzione, la password deve rispettare queste condizioni:
- minimo {{t0}} caratteri
- massimo {{t1}} caratteri
- Almeno una lettera maiuscola
- Almeno una lettera minuscola
- Almeno una cifra
- Deve essere composto esclusivamente da cifre e lettere", @@ -1127,6 +1129,16 @@ "hosting_order_upgrade_start_time_summary_today": "Aggiornamento pianificato oggi alle {{time}}.", "hosting_order_upgrade_start_time_summary_tomorrow": "Aggiornamento pianificato domani alle {{time}}.", "hosting_order_upgrade_no_contract": "Nessun nuovo contratto da convalidare", + "hosting_order_upgrade_summary_empty": "Your cart is empty", + "hosting_order_upgrade_summary_product": "Web Hosting", + "hosting_order_upgrade_summary_product_lower": "web hosting", + "hosting_order_upgrade_summary_duration": "Duration", + "hosting_order_upgrade_summary_duration_value": "12 months", + "hosting_order_upgrade_summary_options": "Options", + "hosting_order_upgrade_summary_included": "Included", + "hosting_order_upgrade_summary_total": "Total", + "hosting_order_upgrade_summary_vat_period": "ex. VAT/12 months", + "hosting_order_upgrade_summary_cta": "Continue order", "hosting_migrate_my_ovh_org_success": "La migrazione del tuo dominio ovh.org è stata presa in carico. Una volta completata, riceverai un'email.", "hosting_migrate_my_ovh_org_error": "Si è verificato un errore durante la migrazione del tuo dominio ovh.org.", "hosting_tab_DATABASES_configuration_order_title_button_public": "Ordinare un database", diff --git a/packages/manager/apps/web/client/app/hosting/dashboard/translations/Messages_pl_PL.json b/packages/manager/apps/web/client/app/hosting/dashboard/translations/Messages_pl_PL.json index 9758ea97dfff..7da4ca34087a 100644 --- a/packages/manager/apps/web/client/app/hosting/dashboard/translations/Messages_pl_PL.json +++ b/packages/manager/apps/web/client/app/hosting/dashboard/translations/Messages_pl_PL.json @@ -1,4 +1,6 @@ { + "hosting_change_offer_banner": "Our web hosting plans are evolving from June 1, 2026. Discover the improvements and new features included.", + "hosting_change_offer_banner_link": "Learn more", "hosting_change_offer_for_service": "Ta usługa nie jest dostępna dla tej oferty.", "hosting_change_offer_for_service_offer": "Ta usługa nie jest dostępna w ramach oferty {{offer}}.", "hosting_common_password_conditions": "Uwaga: hasło musi spełniać następujące warunki:
- Minimalna liczba znaków: {{t0}}
- Maksymalna liczba znaków: {{t1}}
- Przynajmniej jedna wielka litera
- Przynajmniej jedna mała litera
- Przynajmniej jedna cyfra
- Może zawierać wyłącznie cyfry i litery", @@ -1127,6 +1129,16 @@ "hosting_order_upgrade_start_time_summary_today": "Aktualizacja przewidziana dzisiaj o {{time}}.", "hosting_order_upgrade_start_time_summary_tomorrow": "Aktualizacja przewidziana jutro o {{time}}.", "hosting_order_upgrade_no_contract": "Brak nowych regulaminów do zatwierdzenia", + "hosting_order_upgrade_summary_empty": "Your cart is empty", + "hosting_order_upgrade_summary_product": "Web Hosting", + "hosting_order_upgrade_summary_product_lower": "web hosting", + "hosting_order_upgrade_summary_duration": "Duration", + "hosting_order_upgrade_summary_duration_value": "12 months", + "hosting_order_upgrade_summary_options": "Options", + "hosting_order_upgrade_summary_included": "Included", + "hosting_order_upgrade_summary_total": "Total", + "hosting_order_upgrade_summary_vat_period": "ex. VAT/12 months", + "hosting_order_upgrade_summary_cta": "Continue order", "hosting_migrate_my_ovh_org_success": "Migracja Twojej domeny ovh.org została zarejestrowana. Po zakończeniu operacji otrzymasz e-mail.", "hosting_migrate_my_ovh_org_error": "Wystąpił błąd podczas migracji Twojego konta ovh.org.", "hosting_tab_DATABASES_configuration_order_title_button_public": "Zamów bazę danych", diff --git a/packages/manager/apps/web/client/app/hosting/dashboard/translations/Messages_pt_PT.json b/packages/manager/apps/web/client/app/hosting/dashboard/translations/Messages_pt_PT.json index f9da5cda617e..f1cb0ba2da6b 100644 --- a/packages/manager/apps/web/client/app/hosting/dashboard/translations/Messages_pt_PT.json +++ b/packages/manager/apps/web/client/app/hosting/dashboard/translations/Messages_pt_PT.json @@ -1,4 +1,6 @@ { + "hosting_change_offer_banner": "Our web hosting plans are evolving from June 1, 2026. Discover the improvements and new features included.", + "hosting_change_offer_banner_link": "Learn more", "hosting_change_offer_for_service": "Este serviço não está disponível para esta oferta.", "hosting_change_offer_for_service_offer": "Este serviço não está disponível para a oferta {{offer}}.", "hosting_common_password_conditions": "Tenha em conta que a palavra-passe deve respeitar as seguintes condições:
- Mínimo de {{t0}} caracteres
- Máximo de {{t1}} caracteres
- Pelo menos uma letra maiúscula
- Pelo menos uma letra minúscula
- Pelo menos um número
- Deve ser composto unicamente por números e letras.", @@ -1117,6 +1119,16 @@ "hosting_order_upgrade_start_time_summary_today": "Atualização prevista para hoje, às {{time}}.", "hosting_order_upgrade_start_time_summary_tomorrow": "Atualização prevista para amanhã, às {{time}}.", "hosting_order_upgrade_no_contract": "Sem novos contratos por validar", + "hosting_order_upgrade_summary_empty": "Your cart is empty", + "hosting_order_upgrade_summary_product": "Web Hosting", + "hosting_order_upgrade_summary_product_lower": "web hosting", + "hosting_order_upgrade_summary_duration": "Duration", + "hosting_order_upgrade_summary_duration_value": "12 months", + "hosting_order_upgrade_summary_options": "Options", + "hosting_order_upgrade_summary_included": "Included", + "hosting_order_upgrade_summary_total": "Total", + "hosting_order_upgrade_summary_vat_period": "ex. VAT/12 months", + "hosting_order_upgrade_summary_cta": "Continue order", "hosting_migrate_my_ovh_org_success": "A migração do seu domínio ovh.org foi registada com êxito. Receberá um e-mail assim que a operação estiver concluída.", "hosting_migrate_my_ovh_org_error": "Ocorreu um erro aquando da migração do seu domínio ovh.org.", "hosting_tab_DATABASES_configuration_order_title_button_public": "Encomendar uma base de dados", diff --git a/packages/manager/apps/web/client/app/hosting/general-informations/GENERAL_INFORMATIONS.controller.js b/packages/manager/apps/web/client/app/hosting/general-informations/GENERAL_INFORMATIONS.controller.js index 7c30fb987797..a84510fd7f5a 100644 --- a/packages/manager/apps/web/client/app/hosting/general-informations/GENERAL_INFORMATIONS.controller.js +++ b/packages/manager/apps/web/client/app/hosting/general-informations/GENERAL_INFORMATIONS.controller.js @@ -8,7 +8,7 @@ import { LANGUAGES_VERSIONS_GUIDE_URL, } from './general-informations.constants'; import { HOSTING_CDN_ORDER_CDN_VERSION_V1 } from '../cdn/order/hosting-cdn-order.constant'; -import { NEW_OFFERS_NAME } from '../hosting.constants'; +import { OFFERS_NAME, NEW_OFFERS_NAME } from '../hosting.constants'; export default class HostingGeneralInformationsCtrl { /* @ngInject */ @@ -33,6 +33,7 @@ export default class HostingGeneralInformationsCtrl { HostingLocalSeo, HostingRuntimes, hostingSSLCertificate, + isChangeOfferFeatureAvailable, OvhApiScreenshot, user, ) { @@ -56,6 +57,7 @@ export default class HostingGeneralInformationsCtrl { this.HostingLocalSeo = HostingLocalSeo; this.HostingRuntimes = HostingRuntimes; this.hostingSSLCertificate = hostingSSLCertificate; + this.isChangeOfferFeatureAvailable = isChangeOfferFeatureAvailable; this.OvhApiScreenshot = OvhApiScreenshot; this.user = user; this.Domain = Domain; @@ -375,6 +377,12 @@ export default class HostingGeneralInformationsCtrl { } getOfferName(offer) { + if (this.isChangeOfferFeatureAvailable) { + const offerName = OFFERS_NAME[offer]; + return this.$translate.instant( + offerName || `hosting_dashboard_service_offer_${offer}`, + ); + } const offerPrefix = NEW_OFFERS_NAME[offer]; const translateKey = offerPrefix ? `hostings_offer_${offerPrefix}` diff --git a/packages/manager/apps/web/client/app/hosting/general-informations/general-informations.routing.js b/packages/manager/apps/web/client/app/hosting/general-informations/general-informations.routing.js index 68e24b71b2bb..efdde47ad763 100644 --- a/packages/manager/apps/web/client/app/hosting/general-informations/general-informations.routing.js +++ b/packages/manager/apps/web/client/app/hosting/general-informations/general-informations.routing.js @@ -7,6 +7,14 @@ export default /* @ngInject */ ($stateProvider) => { controllerAs: '$ctrl', template, resolve: { + isChangeOfferFeatureAvailable: /* @ngInject */ (ovhFeatureFlipping) => + ovhFeatureFlipping + .checkFeatureAvailability('web-hosting:change-offer') + .then((featureAvailability) => { + return featureAvailability.isFeatureAvailable( + 'web-hosting:change-offer', + ); + }), breadcrumb: () => null, }, }); diff --git a/packages/manager/apps/web/client/app/hosting/hosting.constants.js b/packages/manager/apps/web/client/app/hosting/hosting.constants.js index 33a4ebc25524..a4240c39163a 100644 --- a/packages/manager/apps/web/client/app/hosting/hosting.constants.js +++ b/packages/manager/apps/web/client/app/hosting/hosting.constants.js @@ -7,6 +7,18 @@ export const NEW_OFFERS_NAME = { PERFORMANCE_4: 'performance_4', }; +export const OFFERS_NAME = { + HOSTING_FREE_100_M: 'hosting-free-100M', + HOSTING_STARTER: 'hosting-starter', + HOSTING_PERSO: 'hosting-perso', + HOSTING_STARTUP: 'hosting-startup', + HOSTING_PRO: 'hosting-pro', + HOSTING_PERFORMANCE_1: 'hosting-performance-1', + HOSTING_AGENCY: 'hosting-agence', + HOSTING_AGENCY_PLUS: 'hosting-agence-plus', + HOSTING_AGENCY_MAX: 'hosting-agence-max', +}; + export const OFFERS_UNELIGIBLE_FOR_MODULE = [ 'START_10_M', 'HOSTING_FREE_100_M', diff --git a/packages/manager/apps/web/client/app/hosting/module/MODULE.html b/packages/manager/apps/web/client/app/hosting/module/MODULE.html index 5540aa0054f8..6d5520858aff 100644 --- a/packages/manager/apps/web/client/app/hosting/module/MODULE.html +++ b/packages/manager/apps/web/client/app/hosting/module/MODULE.html @@ -25,7 +25,7 @@

+
+ + + + + + Consultez la page de maintenance poursuivre la progression des travaux.", "hosting_guides_general_information": "Informations générales", "hosting_datagrid_description": "Créez votre projet web en quelques minutes. Publiez votre blog, votre site internet professionnel ou votre boutique en ligne avec nos hébergements évolutifs taillés pour tous vos projets.",