mirror of
https://gitee.com/jmix/cuba.git
synced 2024-12-03 03:38:33 +08:00
Merge from trunk 10701
This commit is contained in:
parent
5bc17c2546
commit
66b4526e12
@ -10253,8 +10253,8 @@ try {
|
||||
<section id="folders_pane">
|
||||
<title>Панель папок</title>
|
||||
<para>Панель папок предназначена для быстрого доступа пользователя к часто используемой информации. Она представляет собой скрываемую панель в левой части главного окна приложения, в которой располагается иерархическая структура, нажатие на элементы которой (папки) приводит к отображению соответствующих экранов системы с определенными параметрами.</para>
|
||||
<para id="">На момент написания данного руководства панель папок реализована только для <link linkend="app_tiers">Web Client</link>. </para>
|
||||
<para id="">Платформа поддерживает три вида папок: <firstterm>папки приложения</firstterm>, <firstterm>папки поиска</firstterm> и <firstterm>наборы</firstterm> записей. Папки приложения отображаются в верхней части панели в отдельной иерархии, папки поиска и наборы - в нижней части панели в совместной иерархии. <itemizedlist>
|
||||
<para>На момент написания данного руководства панель папок реализована только для <link linkend="app_tiers">Web Client</link>. </para>
|
||||
<para>Платформа поддерживает три вида папок: <firstterm>папки приложения</firstterm>, <firstterm>папки поиска</firstterm> и <firstterm>наборы</firstterm> записей. Папки приложения отображаются в верхней части панели в отдельной иерархии, папки поиска и наборы - в нижней части панели в совместной иерархии. <itemizedlist>
|
||||
<listitem>
|
||||
<para>Папки приложения:<itemizedlist>
|
||||
<listitem>
|
||||
|
@ -18,6 +18,7 @@ import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.util.ResourceUtils;
|
||||
import org.springframework.web.context.WebApplicationContext;
|
||||
import org.springframework.web.servlet.DispatcherServlet;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
@ -125,9 +126,17 @@ public class RemotingServlet extends DispatcherServlet {
|
||||
remoteClientInfo.setPort(request.getRemotePort());
|
||||
|
||||
RemoteClientInfo.set(remoteClientInfo);
|
||||
try {
|
||||
super.doService(request, response);
|
||||
} finally {
|
||||
RemoteClientInfo.clear();
|
||||
}
|
||||
}
|
||||
|
||||
super.doService(request, response);
|
||||
|
||||
RemoteClientInfo.clear();
|
||||
@Override
|
||||
protected ModelAndView processHandlerException(HttpServletRequest request, HttpServletResponse response,
|
||||
Object handler, Exception ex) throws Exception {
|
||||
log.error("Error processing request", ex);
|
||||
return super.processHandlerException(request, response, handler, ex);
|
||||
}
|
||||
}
|
@ -10,7 +10,7 @@ import com.haulmont.chile.core.model.Instance;
|
||||
import com.haulmont.chile.core.model.MetaProperty;
|
||||
import com.haulmont.cuba.core.entity.Entity;
|
||||
import com.haulmont.cuba.core.global.AppBeans;
|
||||
import com.haulmont.cuba.core.global.MessageProvider;
|
||||
import com.haulmont.cuba.core.global.Messages;
|
||||
import com.haulmont.cuba.gui.WindowManager;
|
||||
import com.haulmont.cuba.gui.components.AbstractAction;
|
||||
import com.haulmont.cuba.gui.components.*;
|
||||
@ -73,7 +73,7 @@ public class DesktopTokenList extends DesktopAbstractField<DesktopTokenList.Toke
|
||||
impl = new TokenListImpl();
|
||||
|
||||
addButton = new DesktopButton();
|
||||
addButton.setCaption(MessageProvider.getMessage(TokenList.class, "actions.Add"));
|
||||
addButton.setCaption(AppBeans.get(Messages.class).getMessage(TokenList.class, "actions.Add"));
|
||||
|
||||
lookupPickerField = new DesktopLookupPickerField();
|
||||
|
||||
@ -242,7 +242,6 @@ public class DesktopTokenList extends DesktopAbstractField<DesktopTokenList.Toke
|
||||
@Override
|
||||
public void setMultiSelect(boolean multiselect) {
|
||||
this.multiselect = multiselect;
|
||||
lookupPickerField.setMultiSelect(multiselect);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,12 +1,7 @@
|
||||
/*
|
||||
* Copyright (c) 2008 Haulmont Technology Ltd. All Rights Reserved.
|
||||
* Copyright (c) 2013 Haulmont Technology Ltd. All Rights Reserved.
|
||||
* Haulmont Technology proprietary and confidential.
|
||||
* Use is subject to license terms.
|
||||
|
||||
* Author: Konstantin Krivopustov
|
||||
* Created: 26.12.2008 9:53:52
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
package com.haulmont.cuba.core.global;
|
||||
|
||||
@ -18,7 +13,10 @@ import java.util.Set;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
/**
|
||||
* Implementation of {@link QueryTransformer} based on regular expressions
|
||||
* Implementation of {@link QueryTransformer} based on regular expressions.
|
||||
*
|
||||
* @author krivopustov
|
||||
* @version $Id$
|
||||
*/
|
||||
public class QueryTransformerRegex extends QueryParserRegex implements QueryTransformer
|
||||
{
|
||||
@ -47,7 +45,7 @@ public class QueryTransformerRegex extends QueryParserRegex implements QueryTran
|
||||
else
|
||||
sb.append(" where ");
|
||||
|
||||
if (where.indexOf(ALIAS_PLACEHOLDER) >= 0) {
|
||||
if (where.contains(ALIAS_PLACEHOLDER)) {
|
||||
// replace ALIAS_PLACEHOLDER
|
||||
sb.append(where);
|
||||
int idx;
|
||||
@ -143,7 +141,13 @@ public class QueryTransformerRegex extends QueryParserRegex implements QueryTran
|
||||
if (!StringUtils.isBlank(join)) {
|
||||
buffer.insert(insertPos, " ");
|
||||
insertPos++;
|
||||
int joinLen = insertReplacingAlias(buffer, insertPos, join, alias);
|
||||
int joinLen;
|
||||
if (join.contains(ALIAS_PLACEHOLDER)) {
|
||||
joinLen = join.length();
|
||||
buffer.insert(insertPos, join);
|
||||
} else {
|
||||
joinLen = insertReplacingAlias(buffer, insertPos, join, alias);
|
||||
}
|
||||
insertPos += joinLen;
|
||||
|
||||
Matcher paramMatcher = PARAM_PATTERN.matcher(join);
|
||||
|
@ -95,9 +95,10 @@ public class RuntimePropsDatasourceImpl
|
||||
valuesContext.setView("_local");
|
||||
List<CategoryAttribute> attributes = dataSupplier.loadList(attributesContext);
|
||||
|
||||
Map<String, Object> variables = new HashMap<String, Object>();
|
||||
Map<String, CategoryAttributeValue> categoryValues = new HashMap<String, CategoryAttributeValue>();
|
||||
Map<String, Object> variables = new HashMap<>();
|
||||
Map<String, CategoryAttributeValue> categoryValues = new HashMap<>();
|
||||
|
||||
TimeSource timeSource = AppBeans.get(TimeSource.NAME);
|
||||
for (CategoryAttribute attribute : attributes) {
|
||||
CategoryAttributeValue attrValue = getValue(attribute, entityValues);
|
||||
Object value;
|
||||
@ -111,7 +112,7 @@ public class RuntimePropsDatasourceImpl
|
||||
attrValue.setDoubleValue(attribute.getDefaultDouble());
|
||||
attrValue.setBooleanValue(attribute.getDefaultBoolean());
|
||||
attrValue.setDateValue(BooleanUtils.isTrue(attribute.getDefaultDateIsCurrent()) ?
|
||||
TimeProvider.currentTimestamp() : attribute.getDefaultDate());
|
||||
timeSource.currentTimestamp() : attribute.getDefaultDate());
|
||||
attrValue.setEntityValue(attribute.getDefaultEntityId());
|
||||
value = parseValue(attribute, attrValue);
|
||||
itemToUpdate.add(attrValue);
|
||||
@ -163,7 +164,8 @@ public class RuntimePropsDatasourceImpl
|
||||
String.format("Can't find property '%s' in datasource '%s'", property, this.getId()));
|
||||
}
|
||||
DsBuilder builder = new DsBuilder(getDsContext());
|
||||
builder.reset().setMetaClass(MetadataProvider.getSession().getClass(SetValueEntity.class)).setId(id).setViewName("_minimal").setSoftDeletion(false);
|
||||
builder.reset().setMetaClass(metadata.getSession().getClass(SetValueEntity.class)).setId(id)
|
||||
.setViewName("_minimal").setSoftDeletion(false);
|
||||
|
||||
final CollectionDatasource datasource;
|
||||
|
||||
@ -182,7 +184,7 @@ public class RuntimePropsDatasourceImpl
|
||||
private List<SetValueEntity> getOptions(CategoryAttribute attribute, SetValueEntity attributeValue) {
|
||||
String enumeration = attribute.getEnumeration();
|
||||
String[] values = StringUtils.split(enumeration, ',');
|
||||
List<SetValueEntity> options = new LinkedList<SetValueEntity>();
|
||||
List<SetValueEntity> options = new LinkedList<>();
|
||||
for (String value : values) {
|
||||
String trimmedValue = StringUtils.trimToNull(value);
|
||||
if (trimmedValue != null) {
|
||||
@ -268,7 +270,7 @@ public class RuntimePropsDatasourceImpl
|
||||
try {
|
||||
Class clazz = Class.forName(entityType);
|
||||
LoadContext entitiesContext = new LoadContext(clazz);
|
||||
String entityClassName = MetadataProvider.getSession().getClass(clazz).getName();
|
||||
String entityClassName = metadata.getSession().getClassNN(clazz).getName();
|
||||
LoadContext.Query query = entitiesContext.setQueryString("select a from " + entityClassName + " a where a.id =:e");
|
||||
query.addParameter("e", uuid);
|
||||
entitiesContext.setView("_local");
|
||||
@ -339,7 +341,7 @@ public class RuntimePropsDatasourceImpl
|
||||
}
|
||||
|
||||
public View getView() {
|
||||
return view;
|
||||
return null; // null is correct
|
||||
}
|
||||
|
||||
public void initialized() {
|
||||
@ -391,7 +393,7 @@ public class RuntimePropsDatasourceImpl
|
||||
LoadContext categoryContext = new LoadContext(Category.class);
|
||||
LoadContext.Query query = categoryContext.setQueryString(
|
||||
"select c from sys$Category c where c.isDefault = true and c.entityType=:type ");
|
||||
query.addParameter("type", MetadataProvider.getSession().getClass(entity.getClass()).getName());
|
||||
query.addParameter("type", metadata.getSession().getClassNN(entity.getClass()).getName());
|
||||
categoryContext.setView("_minimal");
|
||||
List<Category> categories = dataSupplier.loadList(categoryContext);
|
||||
if (!categories.isEmpty())
|
||||
|
@ -263,7 +263,6 @@ public class WebTokenList /*extends WebAbstractField<WebTokenList.TokenListImpl>
|
||||
@Override
|
||||
public void setMultiSelect(boolean multiselect) {
|
||||
this.multiselect = multiselect;
|
||||
lookupPickerField.setMultiSelect(multiselect);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Loading…
Reference in New Issue
Block a user