use of org.broadleafcommerce.common.locale.domain.Locale in project BroadleafCommerce by BroadleafCommerce.
the class StructuredContentServiceImpl method lookupStructuredContentItemsByType.
@Override
public List<StructuredContentDTO> lookupStructuredContentItemsByType(StructuredContentType contentType, Locale locale, Integer count, Map<String, Object> ruleDTOs, boolean secure) {
List<StructuredContentDTO> contentDTOList = null;
Locale languageOnlyLocale = findLanguageOnlyLocale(locale);
BroadleafRequestContext context = BroadleafRequestContext.getBroadleafRequestContext();
Long site = (context.getNonPersistentSite() != null) ? context.getNonPersistentSite().getId() : null;
String cacheKey = buildTypeKeyWithSecure(context.getSandBox(), site, languageOnlyLocale, contentType.getName(), secure);
if (context.isProductionSandBox()) {
contentDTOList = getStructuredContentListFromCache(cacheKey);
}
if (contentDTOList == null) {
List<StructuredContent> contentList = structuredContentDao.findActiveStructuredContentByType(contentType, locale, languageOnlyLocale);
contentDTOList = buildStructuredContentDTOList(contentList, secure);
if (context.isProductionSandBox()) {
addStructuredContentListToCache(cacheKey, contentDTOList);
}
}
return evaluateAndPriortizeContent(contentDTOList, count, ruleDTOs);
}
use of org.broadleafcommerce.common.locale.domain.Locale in project BroadleafCommerce by BroadleafCommerce.
the class StructuredContentServiceImpl method lookupStructuredContentItemsByName.
@Override
public List<StructuredContentDTO> lookupStructuredContentItemsByName(StructuredContentType contentType, String contentName, Locale locale, Integer count, Map<String, Object> ruleDTOs, boolean secure) {
List<StructuredContentDTO> contentDTOList = null;
Locale languageOnlyLocale = findLanguageOnlyLocale(locale);
BroadleafRequestContext context = BroadleafRequestContext.getBroadleafRequestContext();
Long site = (context.getNonPersistentSite() != null) ? context.getNonPersistentSite().getId() : null;
String cacheKey = buildNameKey(context.getSandBox(), site, languageOnlyLocale, contentType.getName(), contentName, secure);
if (context.isProductionSandBox()) {
contentDTOList = getStructuredContentListFromCache(cacheKey);
}
if (contentDTOList == null) {
List<StructuredContent> productionContentList = structuredContentDao.findActiveStructuredContentByNameAndType(contentType, contentName, locale, languageOnlyLocale);
contentDTOList = buildStructuredContentDTOList(productionContentList, secure);
if (context.isProductionSandBox()) {
addStructuredContentListToCache(cacheKey, contentDTOList);
}
}
return evaluateAndPriortizeContent(contentDTOList, count, ruleDTOs);
}
use of org.broadleafcommerce.common.locale.domain.Locale in project BroadleafCommerce by BroadleafCommerce.
the class BroadleafCurrencyResolverImpl method resolveCurrency.
@Override
public BroadleafRequestedCurrencyDto resolveCurrency(WebRequest request) {
BroadleafCurrency desiredCurrency = null;
// 1) Check request for currency
desiredCurrency = (BroadleafCurrency) request.getAttribute(CURRENCY_VAR, WebRequest.SCOPE_REQUEST);
// 2) Check for a request parameter
if (desiredCurrency == null && BLCRequestUtils.getURLorHeaderParameter(request, CURRENCY_CODE_PARAM) != null) {
String currencyCode = BLCRequestUtils.getURLorHeaderParameter(request, CURRENCY_CODE_PARAM);
desiredCurrency = broadleafCurrencyService.findCurrencyByCode(currencyCode);
if (LOG.isTraceEnabled()) {
LOG.trace("Attempt to find currency by param " + currencyCode + " resulted in " + desiredCurrency);
}
}
// 3) Check session for currency
if (desiredCurrency == null && BLCRequestUtils.isOKtoUseSession(request)) {
desiredCurrency = (BroadleafCurrency) request.getAttribute(CURRENCY_VAR, WebRequest.SCOPE_GLOBAL_SESSION);
}
// 4) Check locale for currency
if (desiredCurrency == null) {
Locale locale = (Locale) request.getAttribute(BroadleafLocaleResolverImpl.LOCALE_VAR, WebRequest.SCOPE_REQUEST);
if (locale != null) {
desiredCurrency = locale.getDefaultCurrency();
}
}
// 5) Lookup default currency from DB
BroadleafCurrency defaultCurrency = broadleafCurrencyService.findDefaultBroadleafCurrency();
if (desiredCurrency == null) {
desiredCurrency = defaultCurrency;
}
// For an out-of-box installation, only one currency is supported, so even though we have a
// desired currency, we may not have any prices that support it.
BroadleafCurrency currencyToUse = defaultCurrency;
if (BLCRequestUtils.isOKtoUseSession(request)) {
request.setAttribute(CURRENCY_VAR, currencyToUse, WebRequest.SCOPE_GLOBAL_SESSION);
}
BroadleafRequestedCurrencyDto dto = new BroadleafRequestedCurrencyDto(currencyToUse, desiredCurrency);
return dto;
}
use of org.broadleafcommerce.common.locale.domain.Locale in project BroadleafCommerce by BroadleafCommerce.
the class BroadleafRequestProcessor method process.
@Override
public void process(WebRequest request) {
BroadleafRequestContext brc = new BroadleafRequestContext();
brc.getAdditionalProperties().putAll(entityExtensionManagers);
Site site = siteResolver.resolveSite(request);
brc.setNonPersistentSite(site);
brc.setWebRequest(request);
if (site == null) {
brc.setIgnoreSite(true);
}
brc.setAdmin(false);
if (siteStrictValidateProductionChanges) {
brc.setValidateProductionChangesState(ValidateProductionChangesState.SITE);
} else {
brc.setValidateProductionChangesState(ValidateProductionChangesState.UNDEFINED);
}
BroadleafRequestContext.setBroadleafRequestContext(brc);
Locale locale = localeResolver.resolveLocale(request);
brc.setLocale(locale);
TimeZone timeZone = broadleafTimeZoneResolver.resolveTimeZone(request);
BroadleafRequestedCurrencyDto currencyDto = currencyResolver.resolveCurrency(request);
// Assumes BroadleafProcess
RequestDTO requestDTO = (RequestDTO) request.getAttribute(REQUEST_DTO_PARAM_NAME, WebRequest.SCOPE_REQUEST);
if (requestDTO == null) {
requestDTO = new RequestDTOImpl(request);
}
SandBox currentSandbox = sandboxResolver.resolveSandBox(request, site);
// When a user elects to switch his sandbox, we want to invalidate the current session. We'll then redirect the
// user to the current URL so that the configured filters trigger again appropriately.
Boolean reprocessRequest = (Boolean) request.getAttribute(BroadleafRequestProcessor.REPROCESS_PARAM_NAME, WebRequest.SCOPE_REQUEST);
if (reprocessRequest != null && reprocessRequest) {
LOG.debug("Reprocessing request");
if (request instanceof ServletWebRequest) {
HttpServletRequest hsr = ((ServletWebRequest) request).getRequest();
clearBroadleafSessionAttrs(request);
StringBuffer url = hsr.getRequestURL();
HttpServletResponse response = ((ServletWebRequest) request).getResponse();
try {
if (!isUrlValid(url.toString())) {
LOG.error("SECURITY FAILURE Bad redirect location: " + StringUtil.sanitize(url.toString()));
response.sendError(403);
return;
}
String sandboxId = hsr.getParameter(SANDBOX_ID_PARAM);
if (isSandboxIdValid(sandboxId)) {
String queryString = "?" + SANDBOX_ID_PARAM + "=" + sandboxId;
url.append(queryString);
}
response.sendRedirect(url.toString());
} catch (IOException e) {
throw new RuntimeException(e);
}
throw new HaltFilterChainException("Reprocess required, redirecting user");
}
}
if (!siteDisableSandboxPreview && currentSandbox != null) {
SandBoxContext previewSandBoxContext = new SandBoxContext();
previewSandBoxContext.setSandBoxId(currentSandbox.getId());
previewSandBoxContext.setPreviewMode(true);
SandBoxContext.setSandBoxContext(previewSandBoxContext);
}
if (currencyDto != null) {
brc.setBroadleafCurrency(currencyDto.getCurrencyToUse());
brc.setRequestedBroadleafCurrency(currencyDto.getRequestedCurrency());
}
// is used in a different session that it was initiated in. see QA#2576
if (currentSandbox != null && currentSandbox.getChildSandBoxes() != null) {
currentSandbox.getChildSandBoxes().size();
}
brc.setSandBox(currentSandbox);
brc.setDeployBehavior(deployBehaviorUtil.isProductionSandBoxMode() ? DeployBehavior.CLONE_PARENT : DeployBehavior.OVERWRITE_PARENT);
// Note that this must happen after the request context is set up as resolving a theme is dependent on site
Theme theme = themeResolver.resolveTheme(request);
brc.setTheme(theme);
brc.setMessageSource(messageSource);
brc.setTimeZone(timeZone);
brc.setRequestDTO(requestDTO);
Map<String, Object> ruleMap = (Map<String, Object>) request.getAttribute("blRuleMap", WebRequest.SCOPE_REQUEST);
if (ruleMap == null) {
LOG.trace("Creating ruleMap and adding in Locale.");
ruleMap = new HashMap<String, Object>();
request.setAttribute("blRuleMap", ruleMap, WebRequest.SCOPE_REQUEST);
} else {
LOG.trace("Using pre-existing ruleMap - added by non standard BLC process.");
}
ruleMap.put("locale", locale);
String adminUserId = request.getParameter(BroadleafRequestFilter.ADMIN_USER_ID_PARAM_NAME);
if (StringUtils.isNotBlank(adminUserId)) {
// TODO: Add token logic to secure the admin user id
brc.setAdminUserId(Long.parseLong(adminUserId));
}
}
use of org.broadleafcommerce.common.locale.domain.Locale in project BroadleafCommerce by BroadleafCommerce.
the class TranslationFormBuilderServiceImpl method getLocaleField.
protected ComboField getLocaleField(String value) {
ComboField f = new ComboField();
f.setName("localeCode");
f.setFriendlyName("Translation_localeCode");
f.setFieldType(SupportedFieldType.EXPLICIT_ENUMERATION.toString());
f.setOrder(0);
if (StringUtils.isNotBlank(value)) {
f.setValue(value);
}
List<Locale> locales = localeService.findAllLocales();
Map<String, String> localeMap = new HashMap<String, String>();
for (Locale l : locales) {
localeMap.put(l.getLocaleCode(), l.getFriendlyName());
}
f.setOptions(localeMap);
return f;
}
Aggregations