templates/includes/common/js-config.html.twig line 1

Open in your IDE?
  1. {% set contactUrl = (portal_url is defined and portal_url is not empty) ? portal_url ~ 'portal-contact-us' | trans : baseUrl ~ path('contact') %}
  2. {% if custom_feedback_url_redirect_list is defined and custom_feedback_url_redirect_list is not empty and app.request.locale in custom_feedback_url_redirect_list|keys %}
  3. {% set contactUrl = (portal_url is defined and portal_url is not empty) ? portal_url ~ custom_feedback_url_redirect_list[app.request.locale] : custom_feedback_url_redirect_list[app.request.locale] %}
  4. {% endif %}
  5. window.oConfig = {
  6. subjectsInformationZou: '{{ getSubjectsInformationFormZou(true)|raw }}',
  7. subjectsClaimZou: '{{ getSubjectsClaimFormZou(true)|raw }}',
  8. baseUrl: {% if isPdfDownloaded is defined and isPdfDownloaded == true %}'{{ wkhtmltopdf_host }}'{% else %}'{{ baseUrl }}'{% endif %},
  9. locale: '{{ app.request.get('_locale') }}',
  10. networkId: '{{ network_id }}',
  11. networkTimezone: '{{ networkTimezone }}',
  12. deviceType: '{{ deviceType is defined ? deviceType : 'desktop' }}',
  13. deviceOS: '{{ deviceOS is defined ? deviceOS : 'unknown' }}',
  14. networkTimezone: '{{ networkTimezone }}',
  15. {% if external is defined %}external: {{ external == true ? 1 : 0 }},{% endif %}
  16. {% if fromSEO is defined %}fromSEO: {{ fromSEO == true ? 1 : 0 }},{% endif %}
  17. {% if fromWidget is defined %}fromWidget: {{ fromWidget == true ? 1 : 0}},{% endif %}
  18. {% if sim_module is defined %}simModule: {{ sim_module == true ? 1 : 0}},{% endif %}
  19. {% if ticketing_module is defined %}ticketingModule: {{ ticketing_module == true ? 1 : 0}},{% endif %}
  20. {% if widget_module is defined %}widgetModule: {{ widget_module == true ? 1 : 0}},{% endif %}
  21. refererBaseDir: '{{ asset('./') }}',
  22. homeUrl: '/',
  23. outdatedBrowserUrl: '{{ path('outdated_browser') }}',
  24. defaultColor: '#666',
  25. brandColor: '{{ brand_color }}',
  26. hideNavLabelsBreakpoint: {{ hide_nav_labels_breakpoint }},
  27. maxDate: '{%if maxDate is defined %}{{ maxDate }}{%else%}{%endif%}',
  28. enableIsochrones: '{{ enable_isochrones }}',
  29. linesRedirectToSchedules: '{{ lines_redirect_to_schedules }}',
  30. useLatencyInPlacesSearch: {{ use_latency_in_places_search ? 'true' : 'false' }},
  31. faviconUrl: '{{ favicon_base_url() }}',
  32. boundariesUrl: '{{ boundaries_url() }}',
  33. events: {
  34. resultsLoaded: 'is.results.loaded'
  35. },
  36. trans: {
  37. line: '{{ 'journey.line'|trans }}',
  38. departure_stop: '{{ 'booking.transport.departure_stoparea_placeholder'|trans }}',
  39. arrival_stop: '{{ 'booking.transport.arrival_stoparea_placeholder'|trans }}',
  40. no_destination_stoparea: '{{ 'booking.no_destination_stoparea'|trans }}',
  41. journey_not_reservable: '{{ 'booking.journey_not_reservable'|trans }}',
  42. booking_date_unavailable: '{{ 'booking.date.unavailable'|trans }}',
  43. validate_btn: '{{ 'booking.transport.validate'|trans }}',
  44. validate_in_progress_btn: '{{ 'booking.transport.validate_in_progress'|trans }}',
  45. unknown_remaining_seats: '{{ 'booking.transport.unknown_remaining_seats'|trans }}',
  46. remaining_seat: '{{ 'booking.transport.remaining_seat'|trans|raw }}',
  47. remaining_seats: '{{ 'booking.transport.remaining_seats'|trans|raw }}',
  48. amount_error: '{{ 'ticketing.amount_to_topup_error'|trans }}',
  49. and: '{{ 'schedule.and'|trans }}',
  50. modes: {
  51. bus: '{{ 'mode.bus'|trans }}',
  52. transport: '{{ 'mode.transport'|trans }}',
  53. airport: '{{ 'mode.airport'|trans }}',
  54. walk: '{{ 'mode.walk'|trans }}',
  55. metro: '{{ 'mode.metro'|trans }}',
  56. tram: '{{ 'mode.tram'|trans }}',
  57. coach: '{{ 'mode.coach'|trans }}',
  58. bike: '{{ 'mode.bike'|trans }}',
  59. bikepark: '{{ 'mode.bikepark'|trans }}',
  60. bikesharing: '{{ 'mode.bikesharing'|trans }}',
  61. car: '{{ 'mode.car'|trans }}',
  62. train: '{{ 'mode.train'|trans }}',
  63. railshuttle: '{{ 'mode.railshuttle'|trans }}',
  64. rapidtransit: '{{ 'mode.rapidtransit'|trans }}',
  65. train_rapidtransit: '{{ 'mode.train_rapidtransit'|trans }}',
  66. shuttle: '{{ 'mode.shuttle'|trans }}',
  67. parkandride: '{{ 'mode.parkandride'|trans }}',
  68. park: '{{ 'mode.park'|trans }}',
  69. airpark: '{{ 'mode.airpark'|trans }}',
  70. flight: '{{ 'mode.flight'|trans }}',
  71. ridesharing: '{{ 'mode.ridesharing'|trans }}',
  72. ridesharing_external: '{{ 'mode.ridesharing_external'|trans }}',
  73. ridesharingad: '{{ 'mode.ridesharingad'|trans }}',
  74. bikesharingstation: '{{ 'mode.bikesharingstation'|trans }}',
  75. carrental: '{{ 'mode.carrental'|trans }}',
  76. carrentalcheckin: '{{ 'mode.carrentalcheckin'|trans }}',
  77. carrentalcheckout: '{{ 'mode.carrentalcheckout'|trans }}',
  78. ridesharingcheckin: '{{ 'mode.ridesharingcheckin'|trans }}',
  79. ridesharingcheckout: '{{ 'mode.ridesharingcheckout'|trans }}'
  80. },
  81. pendingSearch: '{{ 'journey.pending_search'|trans }}',
  82. back: '{{ 'nav.back'|trans }}',
  83. datetimeChosenValue: '{{ 'date.datetime_chosen_value'|trans }}',
  84. dateChosenValue: '{{ 'date.date_chosen_value'|trans }}',
  85. timeChosenValue: '{{ 'date.time_chosen_value'|trans }}',
  86. selectYear: '{{ 'date.select_year'|trans }}',
  87. selectMonth: '{{ 'date.select_month'|trans }}',
  88. selectDay: '{{ 'date.select_day'|trans }}',
  89. selectHour: '{{ 'date.select_hour'|trans }}',
  90. selectMinute: '{{ 'date.select_minute'|trans }}',
  91. months: {
  92. january: '{{ 'date.months.january'|trans }}',
  93. february: '{{ 'date.months.february'|trans }}',
  94. march: '{{ 'date.months.march'|trans }}',
  95. april: '{{ 'date.months.april'|trans }}',
  96. may: '{{ 'date.months.may'|trans }}',
  97. june: '{{ 'date.months.june'|trans }}',
  98. july: '{{ 'date.months.july'|trans }}',
  99. august: '{{ 'date.months.august'|trans }}',
  100. september: '{{ 'date.months.september'|trans }}',
  101. october: '{{ 'date.months.october'|trans }}',
  102. november: '{{ 'date.months.november'|trans }}',
  103. december: '{{ 'date.months.december'|trans }}'
  104. },
  105. autocomplete: {
  106. searchLoading: '{{ 'autocomplete.search_loading'|trans }}',
  107. defaultNotice: '{{ 'autocomplete.default_notice'|trans }}',
  108. selectedValue: '{{ 'autocomplete.selected_value'|trans }}',
  109. noSuggestion: "{{ 'autocomplete.no_suggestions_new_format'|trans({ 'contactUrl': contactUrl })|raw|escape('js') }}",
  110. noExactSuggestion: '{{ 'autocomplete.no_exact_suggestion_new_format'|trans({ 'contactUrl': contactUrl })|raw|escape('js') }}',
  111. suggestionsFound: '{{ 'autocomplete.suggestions_found'|trans }}',
  112. resetLabel: '{{ 'autocomplete.reset'|trans }}',
  113. checkLabel: '{{ 'autocomplete.check'|trans }}',
  114. resultsFound: '{{ 'autocomplete.found_results'|trans }}',
  115. noSuggestionSelected: '{{ 'autocomplete.no_suggestion_selected'|trans }}',
  116. notice: '{{ 'autocomplete.notice'|trans }}',
  117. my_position: '{{ 'my_position'|trans }}'
  118. },
  119. loader: {
  120. search: '{{ 'loader.search'|trans }}',
  121. journeySearch: '{{ 'loader.journey_search'|trans }}',
  122. localitySearch: '{{ 'loader.locality_search'|trans }}',
  123. stopareaSearch: '{{ 'loader.stoparea_search'|trans }}',
  124. lineSearch: '{{ 'loader.line_search'|trans }}',
  125. stoppointSearch: '{{ 'loader.stoppoint_search'|trans }}'
  126. },
  127. error: {
  128. ticketing_download: '{{ 'ticketing.download_error' | trans }}',
  129. journey_same_address: '{{ 'journey.same_address' | trans }}',
  130. select_payment_card: '{{ 'payment.tokens.error.select_payment_card' | trans }}',
  131. outward_return_dates_error: '{{ 'outward_return_dates_error' | trans }}'
  132. },
  133. direction: '{{ 'schedule.direction' | trans }}',
  134. ticketing: {
  135. payment: {
  136. success: '{{ 'ticketing.payment.operator.success' | trans }}',
  137. failure: '{{ 'ticketing.payment.operator.failure' | trans }}',
  138. error_select: '{{ 'ticketing.payment.operator.error_select' | trans }}'
  139. }
  140. },
  141. forms: {
  142. agreeTerms: "{{ 'messagesErrors.forms.agreeTerms' | trans }}",
  143. selectAddress: "{{ 'messagesErrors.forms.selectAddress' | trans }}",
  144. captcha: "{{ 'messagesErrors.forms.captcha' | trans }}",
  145. error: "{{ 'get.data.error.message' | trans }}"
  146. },
  147. loading: '{{ 'ticketing.loading' | trans }}',
  148. crop_empty: '{{ 'ticketing.order.crop_empty' | trans }}'
  149. },
  150. switchMapMobile: '{{switch_map_mobile is defined ? switch_map_mobile }}',
  151. enableHurryTraveler: '{{enable_hurry_traveler is defined ? enable_hurry_traveler }}',
  152. limitPlacesResults: '{{ limit_places_results is defined ? limit_places_results }}'
  153. };
  154. var journeyConfig = null,
  155. ticketingConfig = null,
  156. schedulesConfig = null,
  157. disruptionConfig = null,
  158. mapConfig = null,
  159. accountConfig = null,
  160. newsConfig = null,
  161. alertingConfig = null,
  162. widgetConfig;
  163. journeyConfig = {
  164. placeListPath: oConfig.baseUrl + '{{ path('place.list') }}',
  165. journeyListPath: oConfig.baseUrl + '{{ path('journey.list') }}',
  166. journeyFarePath: oConfig.baseUrl + '{{ path('journey.fare') }}',
  167. placeFavoritePostPath: oConfig.baseUrl + '{{ path('place.favorite.post') }}',
  168. placeFavoriteDeletePath: oConfig.baseUrl + '{{ path('place.favorite.post') }}',
  169. journeySchedulePath: oConfig.baseUrl + '{{ path('journey.schedule') }}',
  170. contactUrl: '{{ contactUrl }}',
  171. transitPassListPath: '{{ path('transitpass.list') }}',
  172. transitPassPostPath: '{{ path('transitpass.post') }}',
  173. isTransitPassEnabled: {% if isTransitPassEnabled is defined and true == isTransitPassEnabled%}1{% else %}0{% endif %},
  174. sendLogUrl: oConfig.baseUrl + '{{ path('sendlog') }}'
  175. };
  176. disruptionConfig = {
  177. disruptionPath: oConfig.baseUrl + '{{ path('homepage.traffic') }}',
  178. linesAndPoiPath: oConfig.baseUrl + '{{ path('homepage.linesandpoi') }}'
  179. };
  180. alertingConfig = {
  181. alertingCreateSubscriptionsPath: oConfig.baseUrl + '{{ path('alerting.create.subscription') }}',
  182. alertingDeleteSubscriptionsPath: oConfig.baseUrl + '{{ path('alerting.delete.subscription') }}'
  183. };
  184. maasConfig = {
  185. libeloCheckPasswordUrl: '{{ url('bikesharing.check_password', {'bikeSharingType':'libelo'}) }}',
  186. libeloValidateGiftCertificate: '{{ url('bikesharing.validate_gift_certificate', {'bikeSharingType':'libelo'}) }}'
  187. };
  188. schedulesConfig = {
  189. schedulesPath: oConfig.baseUrl + '{{ path('schedule') }}',
  190. lineDirectionListPath: oConfig.baseUrl + '{{ path('line.direction.list') }}',
  191. lineSchedulesPath: oConfig.baseUrl + '{{ path('line.schedule.list.generic') }}',
  192. stopareaSchedulesPath: oConfig.baseUrl + '{{ path('stoparea.schedule.list.generic') }}',
  193. lineSchedulesTodPath: oConfig.baseUrl + '{{ path('line.schedule.tod_list.generic') }}',
  194. localityLinesPath: oConfig.baseUrl + '{{ path('line.locality.list.generic') }}',
  195. getStopPointSchedules: oConfig.baseUrl + '{{ path('stoppoint.schedule.list.generic') }}',
  196. scheduleListPath: oConfig.baseUrl + '{{ path('schedule.list') }}',
  197. bookingStopAreasListPath: oConfig.baseUrl + '{{ path('booking.stoparea.list') }}',
  198. bookingStopAreasDestinationListPath: oConfig.baseUrl + '{{ path('booking.stoparea.destination') }}',
  199. bookingStopAreasTimeSheetsListPath: oConfig.baseUrl + '{{ path('booking.stoparea.timesheets') }}',
  200. createLineStoppointDirectionSchedulePath: oConfig.baseUrl + '{{ path('schedule.favorite.line_stoppoint_direction.post') }}',
  201. scheduleFavoriteListPath: oConfig.baseUrl + '{{ path('schedule.favorite.list') }}',
  202. scheduleFavoriteDeletePath: oConfig.baseUrl + '{{ path('schedule.favorite.post') }}',
  203. scheduleFavoriteLinelistPath: oConfig.baseUrl + '{{ path('schedule.favorite.line.list') }}',
  204. scheduleFavoriteLinePostPath: oConfig.baseUrl + '{{ path('schedule.favorite.line.post') }}',
  205. scheduleFavoriteLineDeletePath: oConfig.baseUrl + '{{ path('schedule.favorite.line.post') }}',
  206. displayAllLinesOnEmptyInputFocus: {{ (app.session is defined and app.session.get('layoutScheduleLine')) ? 'true' : 'false' }}
  207. };
  208. mapConfig = {
  209. zoomDelta: 0,
  210. maxZoom: {{ default_max_zoom }},
  211. minZoom: {{ default_min_zoom }},
  212. geoserver: '{{ geoserver_url }}',
  213. defaultTileLayer: '{{ default_tile_layer }}',
  214. vectorTiles: '{{ vector_tiles }}',
  215. vectorStyle: '{{ vector_style }}',
  216. defaultLatLon: {{ (customLatLon is defined and customLatLon is not empty) ? customLatLon : ((default_latlon is defined and default_latlon is not empty) ? default_latlon : "``") }},
  217. defaultZoom: {{ (customZoom is defined and customZoom is not empty) ? customZoom : default_zoom }},
  218. defaultPoiZoom: {{ default_poi_zoom }},
  219. stoppointUrl: oConfig.baseUrl + '/{{ app.request.getLocale() }}/map/stop',
  220. addressUrl: oConfig.baseUrl + '/{{ app.request.getLocale() }}/map/address',
  221. tramUrl: oConfig.baseUrl + '/{{ app.request.getLocale() }}/map/stop',
  222. aerialliftUrl: oConfig.baseUrl + '/{{ app.request.getLocale() }}/map/stop',
  223. metroUrl: oConfig.baseUrl + '/{{ app.request.getLocale() }}/map/stop',
  224. busUrl: oConfig.baseUrl + '/{{ app.request.getLocale() }}/map/stop',
  225. coachUrl: oConfig.baseUrl + '/{{ app.request.getLocale() }}/map/stop',
  226. trainUrl: oConfig.baseUrl + '/{{ app.request.getLocale() }}/map/stop',
  227. parkUrl: oConfig.baseUrl + '/{{ app.request.getLocale() }}/map/park',
  228. markersUrl: oConfig.baseUrl + '{{ path('map.markers') }}',
  229. checkCustomIconUrl: oConfig.baseUrl + '{{ path('map.checkCustomIcon') }}',
  230. linesShapeUrl: oConfig.baseUrl + '{{ path('map.linesShape') }}',
  231. getAllLinesUrl: oConfig.baseUrl + '{{ path('homepage.getAllLines') }}',
  232. getLinesBySubnetworkUrl: oConfig.baseUrl + '{{ path('homepage.getLinesBySubnetwork') }}',
  233. isochronesUrl: oConfig.baseUrl + '{{ path('map.isochrones') }}',
  234. parkandrideUrl: oConfig.baseUrl + '/{{ app.request.getLocale() }}/carte/parkandrides',
  235. bikesharingstationUrl: oConfig.baseUrl + '/{{ app.request.attributes.get('_locale') }}/carte/bikesharingstation',
  236. carsharingstationUrl: oConfig.baseUrl + '/{{ app.request.getLocale() }}/carte/carsharingstation',
  237. securebikeparkUrl: oConfig.baseUrl + '/{{ app.request.getLocale() }}/carte/securebikepark',
  238. bikeparkUrl: oConfig.baseUrl + '/{{ app.request.getLocale() }}/carte/bikepark',
  239. chargingstationUrl: oConfig.baseUrl + '/{{ app.request.getLocale() }}/carte/chargingstation',
  240. bikerentalagencyUrl: oConfig.baseUrl + '/{{ app.request.getLocale() }}/carte/bikerentalagency',
  241. ridesharingparkUrl: oConfig.baseUrl + '/{{ app.request.getLocale() }}/map/rideSharingPark',
  242. pointofsaleUrl: oConfig.baseUrl + '/{{ app.request.getLocale() }}/carte/pointdeventes',
  243. pointofinterestUrl: oConfig.baseUrl + '/{{ app.request.getLocale() }}/map/pointofinterest',
  244. taxistationUrl: oConfig.baseUrl + '/{{ app.request.getLocale() }}/map/taxistation',
  245. vehicleUrl: oConfig.baseUrl + '{{ path('map.vehicle') }}',
  246. stopAreaUrl: oConfig.baseUrl + '/{{ app.request.getLocale() }}/map/stopArea',
  247. lineByStopPointUrl: oConfig.baseUrl + '{{ path('map.lineByStopPoint') }}',
  248. getRideSharingParksUrl: oConfig.baseUrl + '{{ path('map.ridesharingparks') }}',
  249. userPosition: {
  250. latitude: '',
  251. longitude: ''
  252. },
  253. networkPosition: {
  254. latitude: {{ (network_lat is defined and network_lat is not empty) ? network_lat : "''" }},
  255. longitude: {{ (network_lon is defined and network_lon is not empty) ? network_lon : "''" }},
  256. },
  257. widgetPosition: {
  258. latitude: {{ (islat is defined and islat is not empty) ? islat : "''" }},
  259. longitude: {{ (islon is defined and islon is not empty) ? islon : "''" }}
  260. },
  261. operators: {% if operators is defined %}{{ operators | raw }}{% else %}''{% endif %},
  262. icons: {{ icons | json_encode | raw }},
  263. assetsBucketUrl: '{{ cdn_public_url ~ cdn_public_name ~ '/' }}'
  264. };
  265. {% if referer is not defined %}
  266. {% set referer = '' %}
  267. {% endif %}
  268. accountConfig = {
  269. putAccountAddress: '{{ path('account.global.informations') }}',
  270. addAddress: '{{ path('account.global.add_address') }}',
  271. deleteAddress: '{{ path('account.global.delete_address') }}',
  272. saveAddress: '{{ path('account.global.save_address') }}',
  273. homeUserAccountUrl : '{{ path('account') }}',
  274. loginUrl: '{{ absolute_url(path('user_login', {isModal: 'true'})) }}',
  275. resetPasswordUrl: '{{ absolute_url(path('user_reset_password')) }}',
  276. referer: '{{ referer }}',
  277. updateAccountImagePath: oConfig.baseUrl + '{{ path('account.image') }}',
  278. loginMode: '{{ login_mode }}',
  279. isLoggedIn: {{ is_granted('IS_AUTHENTICATED_REMEMBERED') ? 'true' : 'false' }},
  280. {% if userData is defined %}
  281. userMail: '{% if userData.email is defined %}{{ userData.email }}{% endif %}',
  282. userFirstName: '{% if userData.firstname is defined %}{{ userData.firstname }}{% endif %}',
  283. userPhone: '{% if userData.phone is defined %}{{ userData.phone }}{% endif %}'
  284. {% endif %}
  285. };
  286. {% set widgetParamsProvided = (widgetParams is defined and widgetParams is not empty) ? true : false %}
  287. widgetConfig = {
  288. isWidget: {% if isWidget is defined and isWidget is same as(true) %}true{% else %}false{% endif %},
  289. widgetRequestReferer: '{% if requestReferer is defined and requestReferer is not empty %}{{ requestReferer | raw }}{% endif %}',
  290. isRedirection: {% if isRedirection is defined and isRedirection is same as(true) %}true{% else %}false{% endif %},
  291. isInternal: {% if isInternal is defined and isInternal is same as(true) %}true{% else %}false{% endif %},
  292. isSplit: {% if isSplit is defined and isSplit is same as(false) %}false{% else %}true{% endif %},
  293. widgetTarget: '{% if widgetTarget is defined %}{{ widgetTarget }}{% endif %}',
  294. isPartner: '{% if isPartner is defined %}{{ isPartner }}{% endif %}',
  295. istoken: '{% if istoken is defined %}{{ istoken }}{% endif %}',
  296. isfid: "{% if isfid is defined %}{{ isfid | raw }}{% endif %}",
  297. isfv: "{% if isfv is defined %}{{ isfv | raw }}{% endif %}",
  298. istid: "{% if istid is defined %}{{ istid | raw }}{% endif %}",
  299. istv: "{% if istv is defined %}{{ istv | raw }}{% endif %}",
  300. isflat: "{% if isflat is defined %}{{ isflat }}{% endif %}",
  301. isflon: "{% if isflon is defined %}{{ isflon }}{% endif %}",
  302. istlat: "{% if istlat is defined %}{{ istlat }}{% endif %}",
  303. istlon: "{% if istlon is defined %}{{ istlon }}{% endif %}",
  304. islid: '{% if islid is defined %}{{ islid }}{% endif %}',
  305. isdir: '{% if isdir is defined %}{{ isdir }}{% endif %}',
  306. issaid: '{% if issaid is defined %}{{ issaid }}{% endif %}',
  307. issav: '{% if issav is defined %}{{ issav }}{% endif %}',
  308. islocid: '{% if islocid is defined %}{{ islocid }}{% endif %}',
  309. isspid: '{% if isspid is defined %}{{ isspid }}{% endif %}',
  310. issubnet: '{% if issubnet is defined %}{{ issubnet }}{% endif %}',
  311. ismode: '{% if ismode is defined %}{{ ismode }}{% endif %}',
  312. islsn: '{% if islsn is defined %}{{ islsn }}{% endif %}',
  313. issubnetworks: '{% if issubnetworks is defined %}{{ issubnetworks }}{% endif %}',
  314. widgetParams: {
  315. css: {{ ((isWidget is not defined or (isWidget is defined and isWidget is not same as(true))) and (widgetParamsProvided and widgetParams['css'] is defined and not widgetParams['css'])) ? 'false' : 'true' }},
  316. autocompleteModal: {{ network_id == 22 ? 'true' : 'false' }}
  317. },
  318. {% if widgetType is defined and widgetType is not empty %}
  319. widgetType: '{{ widgetType }}',
  320. {% endif %}
  321. };
  322. window.i18n = {
  323. showMenu: "{{ 'nav.show_menu' | trans }}",
  324. hideMenu: "{{ 'nav.hide_menu' | trans }}",
  325. datetimeFormat: "{{ 'date.datetimeFormat' | trans }}",
  326. dateFormat: "{{ 'date.dateFormat' | trans }}",
  327. displayedDateFormat: "{{ 'date.displayedDateFormat' | trans }}",
  328. labelDateFormat: "{{ 'date.labelDateFormat' | trans }}",
  329. timeFormat: "{{ 'date.timeFormat' | trans }}",
  330. displayedTimeFormat: "{{ 'date.displayedTimeFormat' | trans }}",
  331. prevDateButtonLabel: "{{ 'date.prevDateButtonLabel' | trans }}",
  332. nextDateButtonLabel: "{{ 'date.nextDateButtonLabel' | trans }}",
  333. prevTimeButtonLabel: "{{ 'date.prevTimeButtonLabel' | trans }}",
  334. nextTimeButtonLabel: "{{ 'date.nextTimeButtonLabel' | trans }}",
  335. departureTime: "{{ 'date.departureTime' | trans }}",
  336. close: "{{ 'close' | trans }}",
  337. leaveFrom: "{{ 'map.context-menu.start' | trans }}",
  338. goTo: "{{ 'map.context-menu.arrival' | trans }}",
  339. centerHere: "{{ 'map.context-menu.center-here' | trans }}",
  340. accessTime: "{{ 'isochrones.access_time' | trans }}",
  341. address: "{{ 'isochrones.address' | trans }}",
  342. zoomIn: '{{ 'map.context-menu.zoom-in' | trans }}',
  343. zoomOut: '{{ 'map.context-menu.zoom-out' | trans }}',
  344. start: '{{ 'journey.departure' | trans | lower }}',
  345. arrival: '{{ 'journey.arrival' | trans | lower }}',
  346. stage_placeholder: '{{ 'journey.stage_placeholder' | trans }}',
  347. from : '{{ 'from' | trans | capitalize }}',
  348. deleteAccountSuccess: '{{ 'user.account_delete.success' | trans }}',
  349. label: {
  350. dateNotAvailable: "{{ 'schedule.label.date_not_available' | trans }}"
  351. },
  352. popup: {
  353. leave: "{{ 'map.popup.leave' | trans }}",
  354. goTo: "{{ 'map.popup.go-to' | trans }}",
  355. stepVia: "{{ 'map.popup.step-via' | trans }}",
  356. streetView: "{{ 'map.popup.street-view' | trans }}",
  357. favorite: "{{ 'map.popup.favorite' | trans }}"
  358. },
  359. messagesErrors: {
  360. errorInternetConnection: "{{ 'messagesErrors.errorInternetConnection' | trans }}",
  361. refreshBrowser: "{{ 'messagesErrors.refreshBrowser' | trans }}",
  362. errorServer: "{{ 'messagesErrors.errorServer' | trans }}",
  363. itineraryNotAvailable: "{{ 'itinerary.not_available' | trans }}",
  364. tryLater: "{{ 'try_later' | trans }}",
  365. emptyVia: "{{ 'messagesErrors.place.empty.via' | trans }}",
  366. emptySchedule: "{{ 'messagesErrors.schedule.empty.emptySchedule' | trans }}",
  367. invalidSchedule: "{{ 'messagesErrors.schedule.invalid.invalidSchedule' | trans }}",
  368. emptyModes: "{{ 'messagesErrors.place.empty.modes' | trans }}",
  369. emptyDeparture: "{{ 'messagesErrors.place.empty.from' | trans }}",
  370. emptyArrival: "{{ 'messagesErrors.place.empty.to' | trans }}",
  371. emptyDepartureArrival: "{{ 'messagesErrors.place.empty.emptyDepartureAndArrival' | trans}}",
  372. invalidDeparture: "{{ 'messagesErrors.place.invalid.departure' | trans }}",
  373. invalidArrival: "{{ 'messagesErrors.place.invalid.arrival' | trans }}",
  374. invalidVia: "{{ 'messagesErrors.place.invalid.via' | trans }}",
  375. emptyUsername: "{{ 'messagesErrors.userAccount.emptyUsername' | trans }}",
  376. emptyPassword: "{{ 'messagesErrors.userAccount.emptyPassword' | trans }}",
  377. wrongUsername: "{{ 'messagesErrors.userAccount.wrongUsername' | trans }}",
  378. infoPassword: "{{ 'subscription.password_min_characters' | trans }}",
  379. Email: "{{ 'messagesErrors.userAccount.emptyEmail' | trans }}",
  380. emptyCode: "{{ 'messagesErrors.userAccount.emptyCode' | trans }}",
  381. emptyFirstname: "{{ 'messagesErrors.userAccount.emptyFirstname' | trans }}",
  382. emptyLastname: "{{ 'messagesErrors.userAccount.emptyLastname' | trans }}",
  383. emptyPassword: "{{ 'messagesErrors.userAccount.emptyPassword' | trans }}",
  384. emptyPasswordConfirm: "{{ 'messagesErrors.userAccount.emptyPasswordConfirm' | trans }}",
  385. wrongPasswordAndConfirm: "{{ 'subscription.wrong_passwords' | trans }}",
  386. helpMessageItinerary: "{{ 'messagesError.place.chooseFromList' | trans}}",
  387. errorOccured: "{{ 'error.occured' | trans }}"
  388. },
  389. positive_elevation: "{{ 'positive_elevation' | trans }} ",
  390. distance_km: "{{ 'distance_km' | trans }} ",
  391. altitude_m: "{{ 'altitude_m' | trans }} ",
  392. geolocation_not_supported_by_browser: "{{ 'geolocation_not_supported_by_browser' | trans }} ",
  393. favoriteAddButton: "{{ 'place.favorite.action.add' | trans }}",
  394. favoriteEditButton: "{{ 'place.favorite.action.edit' | trans }}",
  395. favorite: {
  396. addModalLabel: "{{ 'place.favorite.add_modal.label' | trans }}",
  397. addModalValidate: "{{ 'place.favorite.add_modal.validate' | trans }}",
  398. editModalLabel: "{{ 'place.favorite.edit_modal.label' | trans }}",
  399. deleteConfirm: "{{ 'place.favorite.delete_confirm' | trans }}",
  400. deleteLabel: "{{ 'place.favorite.delete_label' | trans }}",
  401. deleteValidate: "{{ 'place.favorite.delete_validate' | trans }}",
  402. picto: {
  403. 'home': "{{ 'place.favorite.picto.home' | trans }}",
  404. 'work': "{{ 'place.favorite.picto.work' | trans }}",
  405. 'unset': "{{ 'place.favorite.picto.unset' | trans }}"
  406. },
  407. editModalTitle: {
  408. 'home': "{{ 'place.favorite.edit_modal.homeTitle' | trans }}",
  409. 'work': "{{ 'place.favorite.edit_modal.workTitle' | trans }}"
  410. },
  411. editModalSave: "{{ 'place.favorite.edit_modal.save' | trans }}",
  412. editModalUpdate: "{{ 'place.favorite.edit_modal.update' | trans }}",
  413. editModalCancel: "{{ 'place.favorite.edit_modal.cancel' | trans }}",
  414. editModalPlaceholder: "{{ 'place.favorite.edit_modal.placeholder' | trans }}",
  415. subscribeAlert: "{{ 'place.favorite.action.subscribe_alert' | trans }}",
  416. unsubscribeAlert: "{{ 'place.favorite.action.unsubscribe_alert' | trans }}",
  417. subscribeAlertSuccess: "{{ 'place.favorite.info.favorite_success' | trans}}",
  418. subscribeAlertError: "{{ 'place.favorite.info.favorite_error' | trans}}",
  419. unsubscribeAlertSuccess: "{{ 'place.favorite.info.unsubscribe_favorite_success' | trans}}",
  420. unsubscribeAlertError: "{{ 'place.favorite.info.unsubscribe_favorite_error' | trans}}",
  421. scheduleSubscribeAlertSuccess: "{{ 'schedule.favorite.info.favorite_success' | trans}}",
  422. scheduleSubscribeAlertError: "{{ 'schedule.favorite.info.favorite_error' | trans}}",
  423. scheduleUnsubscribeAlertSuccess: "{{ 'schedule.favorite.info.unsubscribe_favorite_success' | trans}}",
  424. scheduleUnsubscribeAlertError: "{{ 'schedule.favorite.info.unsubscribe_favorite_error' | trans}}",
  425. noResultMessage: "{{ 'place.favorite.no_result_message' | trans}}",
  426. schedule: {
  427. addModalLabel: "{{ 'schedule.favorite.add_modal' | trans }}",
  428. deleteConfirm: "{{ 'schedule.favorite.delete_confirm' | trans }}",
  429. linePlaceholder: "{{ 'schedule.favorite.inputs.line.placeholder' | trans }}",
  430. directionPlaceholder: "{{ 'schedule.favorite.inputs.direction.placeholder' | trans }}",
  431. stoppointPlaceholder: "{{ 'schedule.favorite.inputs.stoppoint.placeholder' | trans }}",
  432. lineLabel: "{{ 'schedule.favorite.inputs.line.label' | trans }}",
  433. directionLabel: "{{ 'schedule.favorite.inputs.direction.label' | trans }}",
  434. stoppointLabel: "{{ 'schedule.favorite.inputs.stoppoint.label' | trans }}",
  435. addModalSave: "{{ 'schedule.favorite.action.add' | trans }}",
  436. addModalCancel: "{{ 'schedule.favorite.action.cancel' | trans }}",
  437. addNewButton: "{{ 'schedule.favorite.add_new_button' | trans }}",
  438. noResultMessage: "{{ 'schedule.favorite.no_result_message' | trans }}"
  439. }
  440. },
  441. schedules: {
  442. modalInputLabel: '{{ 'widgets_tabs.schedules' | trans }}',
  443. nextDepartures: '{{ 'schedule.next_departures' | trans }}',
  444. stopAreaLines: '{{ 'schedule.lines_in_this_stoparea' | trans }}',
  445. direction: '{{ 'schedule.direction' | trans }}',
  446. add_to_favorites: "{{ 'schedule.add_to_favorites' | trans }}",
  447. remove_from_favorites: "{{ 'schedule.remove_from_favorites' | trans }}"
  448. },
  449. poi: {
  450. totalPark: '{{ 'poi.totalPark' | trans }}',
  451. covered: '{{ 'poi.covered' | trans }}',
  452. notCovered: '{{ 'poi.notCovered' | trans }}',
  453. network: '{{ 'poi.network' | trans }}',
  454. availableParks: "{{ 'journey.available_parks' | trans | raw }}",
  455. bikesAvailable: "{{ 'journey.available_bikes' | trans | raw }}",
  456. bikeChance: "{{ 'journey.available_bikes_chance' | trans | raw }}",
  457. standChance: "{{ 'journey.available_stands_chance' | trans | raw }}",
  458. capacity: '{{ 'journey.park_capacity' | trans | raw }}',
  459. bikepark: '{{ 'poi.bikepark' | trans}}',
  460. bikerentalagency: '{{ 'poi.bikerentalagency' | trans }}',
  461. plateNumber: '{{ 'journey.freefloatingvehiclecheckin.plate_number' | trans }}',
  462. parkAndRide: ' {{ 'PARKANDRIDE' | trans }}',
  463. ridesharingpark: '{{ 'mode.ridesharingpark' | trans }}',
  464. carsharingstation: ' {{ 'place.favorite.type.carsharingstation' | trans }}',
  465. parking: ' {{ 'poi.parking' | trans }}',
  466. securebikepark: ' {{ 'mode.securebikepark' | trans }}',
  467. taxistation: ' {{ 'poi.taxistation' | trans }}',
  468. chargingstation: ' {{ 'poi.chargingstation' | trans }}',
  469. bikesharingstation: '{{ 'mode.bikesharingstation'|trans }}',
  470. parkandride: '{{ 'mode.parkandride'|trans }}'
  471. },
  472. alt: {
  473. park: '{{ 'poi.alt.park' | trans }}',
  474. parkandride: '{{ 'poi.alt.parkandride' | trans }}',
  475. bikesharingstation: '{{ 'poi.alt.bikesharingstation' | trans }}',
  476. bikepark: '{{ 'poi.alt.bikepark' | trans }}',
  477. chargingstation: '{{ 'poi.alt.chargingstation' | trans }}',
  478. freefloatingvehiclecheckin: '{{ 'poi.alt.freefloatingvehiclecheckin' | trans }}'
  479. },
  480. disruption: {
  481. network: '{{ 'traffic_infos.network' | trans}}'
  482. },
  483. addToCalendar: {
  484. addToMyCalendar: '{{ 'user.add_to_my_calendar'|trans }}',
  485. journey: {
  486. title: '{{ 'journey.add_to_calendar.title'|trans }}',
  487. desc: {
  488. departure: '{{ 'journey.add_to_calendar.desc.departure'|trans }}',
  489. arrival: '{{ 'journey.add_to_calendar.desc.arrival'|trans }}',
  490. from: '{{ 'journey.add_to_calendar.desc.from'|trans|raw }}',
  491. to: '{{ 'journey.add_to_calendar.desc.to'|trans|raw }}'
  492. }
  493. }
  494. },
  495. travellerProfile: {
  496. noSubscription: '{{ 'journey.traveller_profile.no_subscriptions'|trans }}',
  497. emptySubscriptionListError: '{{ 'journey.traveller_profile.subscriptions_modal.error.empty_subscriptions_list'|trans }}',
  498. mySubscriptions: '{{ 'journey.traveller_profile.my_subscriptions'|trans }}',
  499. publicTransportsTitle: '{{ 'journey.traveller_profile.subscriptions_modal.public_transports.title'|trans }}',
  500. publicTransportsSubtitle: '{{ 'journey.traveller_profile.subscriptions_modal.public_transports.subtitle'|trans }}',
  501. othersModesTitle: '{{ 'journey.traveller_profile.subscriptions_modal.others_modes.title'|trans }}',
  502. othersModesSubtitle: '{{ 'journey.traveller_profile.subscriptions_modal.others_modes.subtitle'|trans }}',
  503. saveAndLeave: '{{ 'journey.traveller_profile.subscriptions_modal.save_and_leave'|trans }}',
  504. continue: '{{ 'journey.traveller_profile.subscriptions_modal.continue'|trans }}',
  505. back: '{{ 'journey.traveller_profile.subscriptions_modal.back'|trans }}',
  506. leave: '{{ 'journey.traveller_profile.subscriptions_modal.leave'|trans }}',
  507. i_understood: '{{ 'journey.traveller_profile.subscriptions_infos_modal.i_understood'|trans }}',
  508. configurationRecordingError: '{{ 'journey.traveller_profile.subscriptions_modal.error.configuration_recording_failed'|trans }}',
  509. configurationSavedTitle: '{{ 'journey.traveller_profile.subscriptions_modal.configuration_saved'|trans }}',
  510. configurationSavedMessage: '{{ 'journey.traveller_profile.subscriptions_modal.configuration_saved_message'|trans }}'
  511. },
  512. ticketing: {
  513. refundConfirmationTitle: '{{ 'ticketing.account.etickets.refund.modal.success.title' | trans }}',
  514. arrival_city: '{{ 'ticketing.zou_etudes.informations_form.journey.arrival_city.label' | trans }}',
  515. departure_city: '{{ 'ticketing.zou_etudes.informations_form.journey.departure_city.label' | trans }}',
  516. arrival_station: '{{ 'ticketing.zou_etudes.informations_form.journey.arrival_station.label' | trans }}',
  517. departure_station: '{{ 'ticketing.zou_etudes.informations_form.journey.departure_station.label' | trans }}',
  518. choose: '{{ 'ticketing.filters.choose' | trans }}'
  519. },
  520. meta: {
  521. appTitle: "{{ 'app_title'| trans | raw }}",
  522. journeyTitle: "{{ 'meta.journey.title' | trans | raw }}",
  523. journeyDescription: "{{ 'meta.journey.description' | trans | raw }}",
  524. journeyKeywords: "{{ 'meta.home.keywords' | trans | raw }}",
  525. scheduleTitle: "{{ 'meta.schedule.schedule.title_new_format' | trans | raw}}",
  526. scheduleDescription: "{{ 'meta.schedule.line-schedules.description_new_format' | trans | raw }}",
  527. scheduleKeywords: "{{ 'meta.schedule.keywords' | trans | raw }}",
  528. scheduleText: "{{ 'meta.schedule.schedule.keyword'| trans }}",
  529. disruptionTitle: "{{ 'meta.disruption.title' | trans | raw }}",
  530. disruptionDescription: "{{ 'meta.disruption.description' | trans | raw }}",
  531. disruptionKeywords: "{{ 'meta.disruption.keywords' | trans | raw }}",
  532. disruptionText: "{{ 'disruptions.line'| trans }}",
  533. mapTitle: "{{ 'meta.map.title' | trans | raw }}",
  534. mapDescription: "{{ 'meta.map.description' | trans | raw }}",
  535. mapKeywords: "{{ 'meta.map.keywords' | trans | raw }}",
  536. scheduleText: "{{ 'meta.schedule.schedule.keyword'| trans }}"
  537. }
  538. };
  539. var extend = function(out) {
  540. out = out || {};
  541. for (var i = 1; i < arguments.length; i++) {
  542. var obj = arguments[i];
  543. if (!obj) {
  544. continue;
  545. }
  546. for (var key in obj) {
  547. if (obj.hasOwnProperty(key)) {
  548. out[key] = obj[key];
  549. }
  550. }
  551. }
  552. return out;
  553. };
  554. {#{% if isWidget is defined and isWidget %}#}
  555. extend(window.oConfig, window.oConfig, newsConfig, journeyConfig, ticketingConfig, schedulesConfig, alertingConfig, maasConfig, disruptionConfig, mapConfig, accountConfig, widgetConfig);
  556. {#{% endif %}#}