fixed institutional logo handling
This commit is contained in:
		
							parent
							
								
									c97a2ff02b
								
							
						
					
					
						commit
						00d7a91a43
					
				
					 8 changed files with 100 additions and 20 deletions
				
			
		|  | @ -45,6 +45,7 @@ import org.springframework.web.bind.annotation.RequestMapping; | ||||||
| import org.springframework.web.bind.annotation.RestController; | import org.springframework.web.bind.annotation.RestController; | ||||||
| import org.springframework.web.filter.CharacterEncodingFilter; | import org.springframework.web.filter.CharacterEncodingFilter; | ||||||
| 
 | 
 | ||||||
|  | import ch.ethz.seb.sebserver.gbl.api.API; | ||||||
| import ch.ethz.seb.sebserver.gbl.profile.DevGuiProfile; | import ch.ethz.seb.sebserver.gbl.profile.DevGuiProfile; | ||||||
| import ch.ethz.seb.sebserver.gbl.profile.DevWebServiceProfile; | import ch.ethz.seb.sebserver.gbl.profile.DevWebServiceProfile; | ||||||
| import ch.ethz.seb.sebserver.gbl.profile.GuiProfile; | import ch.ethz.seb.sebserver.gbl.profile.GuiProfile; | ||||||
|  | @ -67,6 +68,8 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter implements E | ||||||
|     private String guiRedirect; |     private String guiRedirect; | ||||||
|     @Value("${sebserver.webservice.api.exam.endpoint.discovery}") |     @Value("${sebserver.webservice.api.exam.endpoint.discovery}") | ||||||
|     private String examAPIDiscoveryEndpoint; |     private String examAPIDiscoveryEndpoint; | ||||||
|  |     @Value("${sebserver.webservice.api.admin.endpoint}") | ||||||
|  |     private String adminAPIEndpoint; | ||||||
| 
 | 
 | ||||||
|     /** Spring bean name of user password encoder */ |     /** Spring bean name of user password encoder */ | ||||||
|     public static final String USER_PASSWORD_ENCODER_BEAN_NAME = "userPasswordEncoder"; |     public static final String USER_PASSWORD_ENCODER_BEAN_NAME = "userPasswordEncoder"; | ||||||
|  | @ -101,6 +104,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter implements E | ||||||
|                 .ignoring() |                 .ignoring() | ||||||
|                 .antMatchers("/error") |                 .antMatchers("/error") | ||||||
|                 .antMatchers(this.examAPIDiscoveryEndpoint) |                 .antMatchers(this.examAPIDiscoveryEndpoint) | ||||||
|  |                 .antMatchers(this.adminAPIEndpoint + API.INFO_ENDPOINT + API.LOGO_PATH_SEGMENT + "/**") | ||||||
|                 .and(); |                 .and(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -9,6 +9,7 @@ | ||||||
| package ch.ethz.seb.sebserver.gui; | package ch.ethz.seb.sebserver.gui; | ||||||
| 
 | 
 | ||||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||||
|  | import org.springframework.beans.factory.annotation.Value; | ||||||
| import org.springframework.context.annotation.Configuration; | import org.springframework.context.annotation.Configuration; | ||||||
| import org.springframework.core.annotation.Order; | import org.springframework.core.annotation.Order; | ||||||
| import org.springframework.security.config.annotation.web.builders.HttpSecurity; | import org.springframework.security.config.annotation.web.builders.HttpSecurity; | ||||||
|  | @ -30,12 +31,15 @@ public class GuiWebsecurityConfig extends WebSecurityConfigurerAdapter { | ||||||
|     @Autowired |     @Autowired | ||||||
|     private InstitutionalAuthenticationEntryPoint institutionalAuthenticationEntryPoint; |     private InstitutionalAuthenticationEntryPoint institutionalAuthenticationEntryPoint; | ||||||
| 
 | 
 | ||||||
|  |     @Value("${sebserver.gui.entrypoint:/gui}") | ||||||
|  |     private String guiEntryPoint; | ||||||
|  | 
 | ||||||
|     /** Gui-service related public URLS from spring web security perspective */ |     /** Gui-service related public URLS from spring web security perspective */ | ||||||
|     public static final RequestMatcher PUBLIC_URLS = new OrRequestMatcher( |     public static final RequestMatcher PUBLIC_URLS = new OrRequestMatcher( | ||||||
|             // OAuth entry-points |             // OAuth entry-points | ||||||
|             new AntPathRequestMatcher(API.OAUTH_REVOKE_TOKEN_ENDPOINT), |             new AntPathRequestMatcher(API.OAUTH_REVOKE_TOKEN_ENDPOINT), | ||||||
|             // GUI entry-point |             // GUI entry-point | ||||||
|             new AntPathRequestMatcher("/gui"), | //            new AntPathRequestMatcher(guiEntryPoint), | ||||||
|             // RAP/RWT resources has to be accessible |             // RAP/RWT resources has to be accessible | ||||||
|             new AntPathRequestMatcher("/rwt-resources/**"), |             new AntPathRequestMatcher("/rwt-resources/**"), | ||||||
|             // project specific static resources |             // project specific static resources | ||||||
|  | @ -47,7 +51,8 @@ public class GuiWebsecurityConfig extends WebSecurityConfigurerAdapter { | ||||||
|     public void configure(final WebSecurity web) { |     public void configure(final WebSecurity web) { | ||||||
|         web |         web | ||||||
|                 .ignoring() |                 .ignoring() | ||||||
|                 .requestMatchers(PUBLIC_URLS); |                 .requestMatchers(PUBLIC_URLS) | ||||||
|  |                 .antMatchers(this.guiEntryPoint); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|  |  | ||||||
|  | @ -65,21 +65,25 @@ final class InstitutionalAuthenticationEntryPoint implements AuthenticationEntry | ||||||
| 
 | 
 | ||||||
|         final String logoImageBase64 = requestLogoImage(requestURI); |         final String logoImageBase64 = requestLogoImage(requestURI); | ||||||
|         if (StringUtils.isNotBlank(logoImageBase64)) { |         if (StringUtils.isNotBlank(logoImageBase64)) { | ||||||
|             // forward |  | ||||||
|             request.getSession().setAttribute(API.PARAM_LOGO_IMAGE, logoImageBase64); |             request.getSession().setAttribute(API.PARAM_LOGO_IMAGE, logoImageBase64); | ||||||
|             final RequestDispatcher dispatcher = request.getServletContext() |  | ||||||
|                     .getRequestDispatcher(this.guiEntryPoint); |  | ||||||
|             dispatcher.forward(request, response); |  | ||||||
|             // redirect |  | ||||||
|         } else { |         } else { | ||||||
|             request.getSession().removeAttribute(API.PARAM_LOGO_IMAGE); |             request.getSession().removeAttribute(API.PARAM_LOGO_IMAGE); | ||||||
|             response.setStatus(HttpStatus.UNAUTHORIZED.value()); |             response.setStatus(HttpStatus.UNAUTHORIZED.value()); | ||||||
|             response.sendRedirect(this.guiEntryPoint); |  | ||||||
|         } |         } | ||||||
|  | 
 | ||||||
|  |         final RequestDispatcher dispatcher = request.getServletContext() | ||||||
|  |                 .getRequestDispatcher(this.guiEntryPoint); | ||||||
|  |         dispatcher.forward(request, response); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     private String requestLogoImage(final String requestURI) { |     private String requestLogoImage(final String requestURI) { | ||||||
|         log.debug("Trying to verify insitution from requested entrypoint url: {}", requestURI); |         log.debug("Trying to verify insitution from requested entrypoint url: {}", requestURI); | ||||||
|  | 
 | ||||||
|  |         final String instPrefix = requestURI.replaceAll("/", ""); | ||||||
|  |         if (StringUtils.isBlank(instPrefix)) { | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|         try { |         try { | ||||||
| 
 | 
 | ||||||
|             final RestTemplate restTemplate = new RestTemplate(); |             final RestTemplate restTemplate = new RestTemplate(); | ||||||
|  | @ -93,7 +97,7 @@ final class InstitutionalAuthenticationEntryPoint implements AuthenticationEntry | ||||||
|                             HttpMethod.GET, |                             HttpMethod.GET, | ||||||
|                             HttpEntity.EMPTY, |                             HttpEntity.EMPTY, | ||||||
|                             String.class, |                             String.class, | ||||||
|                             requestURI.replaceAll("/", "")); |                             instPrefix); | ||||||
| 
 | 
 | ||||||
|             if (exchange.getStatusCodeValue() == HttpStatus.OK.value()) { |             if (exchange.getStatusCodeValue() == HttpStatus.OK.value()) { | ||||||
|                 return exchange.getBody(); |                 return exchange.getBody(); | ||||||
|  |  | ||||||
|  | @ -27,6 +27,7 @@ import ch.ethz.seb.sebserver.gui.service.i18n.LocTextKey; | ||||||
| import ch.ethz.seb.sebserver.gui.service.page.PageContext; | import ch.ethz.seb.sebserver.gui.service.page.PageContext; | ||||||
| import ch.ethz.seb.sebserver.gui.service.page.PageService; | import ch.ethz.seb.sebserver.gui.service.page.PageService; | ||||||
| import ch.ethz.seb.sebserver.gui.service.page.TemplateComposer; | import ch.ethz.seb.sebserver.gui.service.page.TemplateComposer; | ||||||
|  | import ch.ethz.seb.sebserver.gui.service.page.impl.DefaultPageLayout; | ||||||
| import ch.ethz.seb.sebserver.gui.service.page.impl.PageUtils; | import ch.ethz.seb.sebserver.gui.service.page.impl.PageUtils; | ||||||
| import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.RestService; | import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.RestService; | ||||||
| import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.institution.ActivateInstitution; | import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.institution.ActivateInstitution; | ||||||
|  | @ -129,7 +130,9 @@ public class InstitutionForm implements TemplateComposer { | ||||||
|                 .addField(FormBuilder.imageUpload( |                 .addField(FormBuilder.imageUpload( | ||||||
|                         Domain.INSTITUTION.ATTR_LOGO_IMAGE, |                         Domain.INSTITUTION.ATTR_LOGO_IMAGE, | ||||||
|                         FORM_LOGO_IMAGE_TEXT_KEY, |                         FORM_LOGO_IMAGE_TEXT_KEY, | ||||||
|                         institution.logoImage)) |                         institution.logoImage) | ||||||
|  |                         .withMaxWidth(DefaultPageLayout.LOGO_IMAGE_MAX_WIDTH) | ||||||
|  |                         .withMaxHeight(DefaultPageLayout.LOGO_IMAGE_MAX_HEIGHT)) | ||||||
|                 .buildFor((isNew) |                 .buildFor((isNew) | ||||||
|                         ? this.restService.getRestCall(NewInstitution.class) |                         ? this.restService.getRestCall(NewInstitution.class) | ||||||
|                         : this.restService.getRestCall(SaveInstitution.class)); |                         : this.restService.getRestCall(SaveInstitution.class)); | ||||||
|  |  | ||||||
|  | @ -18,10 +18,23 @@ import ch.ethz.seb.sebserver.gui.widget.ImageUpload; | ||||||
| 
 | 
 | ||||||
| public final class ImageUploadFieldBuilder extends FieldBuilder<String> { | public final class ImageUploadFieldBuilder extends FieldBuilder<String> { | ||||||
| 
 | 
 | ||||||
|  |     private int maxWidth = 100; | ||||||
|  |     private int maxHeight = 100; | ||||||
|  | 
 | ||||||
|     ImageUploadFieldBuilder(final String name, final LocTextKey label, final String value) { |     ImageUploadFieldBuilder(final String name, final LocTextKey label, final String value) { | ||||||
|         super(name, label, value); |         super(name, label, value); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     public ImageUploadFieldBuilder withMaxWidth(final int width) { | ||||||
|  |         this.maxWidth = width; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public ImageUploadFieldBuilder withMaxHeight(final int height) { | ||||||
|  |         this.maxHeight = height; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     @Override |     @Override | ||||||
|     void build(final FormBuilder builder) { |     void build(final FormBuilder builder) { | ||||||
| 
 | 
 | ||||||
|  | @ -35,7 +48,9 @@ public final class ImageUploadFieldBuilder extends FieldBuilder<String> { | ||||||
|         final ImageUpload imageUpload = builder.widgetFactory.imageUploadLocalized( |         final ImageUpload imageUpload = builder.widgetFactory.imageUploadLocalized( | ||||||
|                 fieldGrid, |                 fieldGrid, | ||||||
|                 new LocTextKey("sebserver.overall.upload"), |                 new LocTextKey("sebserver.overall.upload"), | ||||||
|                 builder.readonly || this.readonly); |                 builder.readonly || this.readonly, | ||||||
|  |                 this.maxWidth, | ||||||
|  |                 this.maxHeight); | ||||||
|         final GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, false); |         final GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, false); | ||||||
|         imageUpload.setLayoutData(gridData); |         imageUpload.setLayoutData(gridData); | ||||||
|         imageUpload.setImageBase64(this.value); |         imageUpload.setImageBase64(this.value); | ||||||
|  |  | ||||||
|  | @ -17,11 +17,14 @@ import org.apache.commons.lang3.StringUtils; | ||||||
| import org.eclipse.rap.rwt.RWT; | import org.eclipse.rap.rwt.RWT; | ||||||
| import org.eclipse.swt.SWT; | import org.eclipse.swt.SWT; | ||||||
| import org.eclipse.swt.graphics.Image; | import org.eclipse.swt.graphics.Image; | ||||||
|  | import org.eclipse.swt.graphics.ImageData; | ||||||
|  | import org.eclipse.swt.graphics.Rectangle; | ||||||
| import org.eclipse.swt.layout.GridData; | import org.eclipse.swt.layout.GridData; | ||||||
| import org.eclipse.swt.layout.GridLayout; | import org.eclipse.swt.layout.GridLayout; | ||||||
| import org.eclipse.swt.layout.RowLayout; | import org.eclipse.swt.layout.RowLayout; | ||||||
| import org.eclipse.swt.widgets.Button; | import org.eclipse.swt.widgets.Button; | ||||||
| import org.eclipse.swt.widgets.Composite; | import org.eclipse.swt.widgets.Composite; | ||||||
|  | import org.eclipse.swt.widgets.Display; | ||||||
| import org.eclipse.swt.widgets.Label; | import org.eclipse.swt.widgets.Label; | ||||||
| import org.eclipse.swt.widgets.MessageBox; | import org.eclipse.swt.widgets.MessageBox; | ||||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||||
|  | @ -49,6 +52,9 @@ public class DefaultPageLayout implements TemplateComposer { | ||||||
| 
 | 
 | ||||||
|     private static final Logger log = LoggerFactory.getLogger(DefaultPageLayout.class); |     private static final Logger log = LoggerFactory.getLogger(DefaultPageLayout.class); | ||||||
| 
 | 
 | ||||||
|  |     public static final int LOGO_IMAGE_MAX_WIDTH = 400; | ||||||
|  |     public static final int LOGO_IMAGE_MAX_HEIGHT = 80; | ||||||
|  | 
 | ||||||
|     private final WidgetFactory widgetFactory; |     private final WidgetFactory widgetFactory; | ||||||
|     private final PolyglotPageService polyglotPageService; |     private final PolyglotPageService polyglotPageService; | ||||||
|     private final AuthorizationContextHolder authorizationContextHolder; |     private final AuthorizationContextHolder authorizationContextHolder; | ||||||
|  | @ -155,9 +161,9 @@ public class DefaultPageLayout implements TemplateComposer { | ||||||
| 
 | 
 | ||||||
|         final Composite logo = new Composite(logoBar, SWT.NONE); |         final Composite logo = new Composite(logoBar, SWT.NONE); | ||||||
|         final GridData logoCell = new GridData(SWT.LEFT, SWT.CENTER, true, true); |         final GridData logoCell = new GridData(SWT.LEFT, SWT.CENTER, true, true); | ||||||
|         logoCell.minimumHeight = 80; |         logoCell.minimumHeight = LOGO_IMAGE_MAX_HEIGHT; | ||||||
|         logoCell.heightHint = 80; |         logoCell.heightHint = LOGO_IMAGE_MAX_HEIGHT; | ||||||
|         logoCell.minimumWidth = 400; |         logoCell.minimumWidth = LOGO_IMAGE_MAX_WIDTH; | ||||||
|         logoCell.horizontalIndent = 50; |         logoCell.horizontalIndent = 50; | ||||||
|         logo.setLayoutData(logoCell); |         logo.setLayoutData(logoCell); | ||||||
| 
 | 
 | ||||||
|  | @ -283,8 +289,19 @@ public class DefaultPageLayout implements TemplateComposer { | ||||||
|                     new ByteArrayInputStream(imageBase64.getBytes(StandardCharsets.UTF_8)), |                     new ByteArrayInputStream(imageBase64.getBytes(StandardCharsets.UTF_8)), | ||||||
|                     false); |                     false); | ||||||
| 
 | 
 | ||||||
|  |             final Display display = pageContext.getShell().getDisplay(); | ||||||
|  |             final Image image = new Image(display, input); | ||||||
|  |             final Rectangle imageBounds = image.getBounds(); | ||||||
|  |             final int width = (imageBounds.width > LOGO_IMAGE_MAX_WIDTH) | ||||||
|  |                     ? LOGO_IMAGE_MAX_WIDTH | ||||||
|  |                     : imageBounds.width; | ||||||
|  |             final int height = (imageBounds.height > LOGO_IMAGE_MAX_HEIGHT) | ||||||
|  |                     ? LOGO_IMAGE_MAX_HEIGHT | ||||||
|  |                     : imageBounds.height; | ||||||
|  |             final ImageData imageData = image.getImageData().scaledTo(width, height); | ||||||
|  | 
 | ||||||
|             logo.setData(RWT.CUSTOM_VARIANT, "bgLogoNoImage"); |             logo.setData(RWT.CUSTOM_VARIANT, "bgLogoNoImage"); | ||||||
|             logo.setBackgroundImage(new Image(pageContext.getShell().getDisplay(), input)); |             logo.setBackgroundImage(new Image(display, imageData)); | ||||||
| 
 | 
 | ||||||
|         } catch (final Exception e) { |         } catch (final Exception e) { | ||||||
|             log.warn("Get institutional logo failed: {}", e.getMessage()); |             log.warn("Get institutional logo failed: {}", e.getMessage()); | ||||||
|  |  | ||||||
|  | @ -32,6 +32,7 @@ import org.eclipse.swt.events.SelectionAdapter; | ||||||
| import org.eclipse.swt.events.SelectionEvent; | import org.eclipse.swt.events.SelectionEvent; | ||||||
| import org.eclipse.swt.graphics.Image; | import org.eclipse.swt.graphics.Image; | ||||||
| import org.eclipse.swt.graphics.ImageData; | import org.eclipse.swt.graphics.ImageData; | ||||||
|  | import org.eclipse.swt.graphics.Rectangle; | ||||||
| import org.eclipse.swt.layout.GridData; | import org.eclipse.swt.layout.GridData; | ||||||
| import org.eclipse.swt.layout.GridLayout; | import org.eclipse.swt.layout.GridLayout; | ||||||
| import org.eclipse.swt.widgets.Composite; | import org.eclipse.swt.widgets.Composite; | ||||||
|  | @ -54,6 +55,9 @@ public final class ImageUpload extends Composite { | ||||||
| 
 | 
 | ||||||
|     private final Composite imageCanvas; |     private final Composite imageCanvas; | ||||||
|     private final FileUpload fileUpload; |     private final FileUpload fileUpload; | ||||||
|  |     private final int maxWidth; | ||||||
|  |     private final int maxHeight; | ||||||
|  | 
 | ||||||
|     private Consumer<String> errorHandler; |     private Consumer<String> errorHandler; | ||||||
|     private String imageBase64 = null; |     private String imageBase64 = null; | ||||||
|     private boolean loadNewImage = false; |     private boolean loadNewImage = false; | ||||||
|  | @ -63,12 +67,16 @@ public final class ImageUpload extends Composite { | ||||||
|             final Composite parent, |             final Composite parent, | ||||||
|             final ServerPushService serverPushService, |             final ServerPushService serverPushService, | ||||||
|             final I18nSupport i18nSupport, |             final I18nSupport i18nSupport, | ||||||
|             final boolean readonly) { |             final boolean readonly, | ||||||
|  |             final int maxWidth, | ||||||
|  |             final int maxHeight) { | ||||||
| 
 | 
 | ||||||
|         super(parent, SWT.NONE); |         super(parent, SWT.NONE); | ||||||
|         super.setLayout(new GridLayout(1, false)); |         super.setLayout(new GridLayout(1, false)); | ||||||
| 
 | 
 | ||||||
|         this.serverPushService = serverPushService; |         this.serverPushService = serverPushService; | ||||||
|  |         this.maxWidth = maxWidth; | ||||||
|  |         this.maxHeight = maxHeight; | ||||||
| 
 | 
 | ||||||
|         if (!readonly) { |         if (!readonly) { | ||||||
|             this.fileUpload = new FileUpload(this, SWT.NONE); |             this.fileUpload = new FileUpload(this, SWT.NONE); | ||||||
|  | @ -189,8 +197,14 @@ public final class ImageUpload extends Composite { | ||||||
|         imageUpload.imageCanvas.setData(RWT.CUSTOM_VARIANT, "bgLogoNoImage"); |         imageUpload.imageCanvas.setData(RWT.CUSTOM_VARIANT, "bgLogoNoImage"); | ||||||
| 
 | 
 | ||||||
|         final Image image = new Image(imageUpload.imageCanvas.getDisplay(), input); |         final Image image = new Image(imageUpload.imageCanvas.getDisplay(), input); | ||||||
|         final ImageData imageData = image.getImageData().scaledTo(200, 100); |         final Rectangle imageBounds = image.getBounds(); | ||||||
| 
 |         final int width = (imageBounds.width > imageUpload.maxWidth) | ||||||
|  |                 ? imageUpload.maxWidth | ||||||
|  |                 : imageBounds.width; | ||||||
|  |         final int height = (imageBounds.height > imageUpload.maxHeight) | ||||||
|  |                 ? imageUpload.maxHeight | ||||||
|  |                 : imageBounds.height; | ||||||
|  |         final ImageData imageData = image.getImageData().scaledTo(width, height); | ||||||
|         imageUpload.imageCanvas.setBackgroundImage(new Image(imageUpload.imageCanvas.getDisplay(), imageData)); |         imageUpload.imageCanvas.setBackgroundImage(new Image(imageUpload.imageCanvas.getDisplay(), imageData)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -48,6 +48,7 @@ import ch.ethz.seb.sebserver.gui.service.i18n.I18nSupport; | ||||||
| import ch.ethz.seb.sebserver.gui.service.i18n.LocTextKey; | import ch.ethz.seb.sebserver.gui.service.i18n.LocTextKey; | ||||||
| import ch.ethz.seb.sebserver.gui.service.i18n.PolyglotPageService; | import ch.ethz.seb.sebserver.gui.service.i18n.PolyglotPageService; | ||||||
| import ch.ethz.seb.sebserver.gui.service.page.PageService; | import ch.ethz.seb.sebserver.gui.service.page.PageService; | ||||||
|  | import ch.ethz.seb.sebserver.gui.service.page.impl.DefaultPageLayout; | ||||||
| import ch.ethz.seb.sebserver.gui.service.push.ServerPushService; | import ch.ethz.seb.sebserver.gui.service.push.ServerPushService; | ||||||
| 
 | 
 | ||||||
| @Lazy | @Lazy | ||||||
|  | @ -584,16 +585,33 @@ public class WidgetFactory { | ||||||
|         return thresholdList; |         return thresholdList; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public ImageUpload imageUploadLocalized( |     public ImageUpload logoImageUploadLocalized( | ||||||
|             final Composite parent, |             final Composite parent, | ||||||
|             final LocTextKey locTextKey, |             final LocTextKey locTextKey, | ||||||
|             final boolean readonly) { |             final boolean readonly) { | ||||||
| 
 | 
 | ||||||
|  |         return imageUploadLocalized( | ||||||
|  |                 parent, | ||||||
|  |                 locTextKey, | ||||||
|  |                 readonly, | ||||||
|  |                 DefaultPageLayout.LOGO_IMAGE_MAX_WIDTH, | ||||||
|  |                 DefaultPageLayout.LOGO_IMAGE_MAX_HEIGHT); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public ImageUpload imageUploadLocalized( | ||||||
|  |             final Composite parent, | ||||||
|  |             final LocTextKey locTextKey, | ||||||
|  |             final boolean readonly, | ||||||
|  |             final int maxWidth, | ||||||
|  |             final int maxHeight) { | ||||||
|  | 
 | ||||||
|         final ImageUpload imageUpload = new ImageUpload( |         final ImageUpload imageUpload = new ImageUpload( | ||||||
|                 parent, |                 parent, | ||||||
|                 this.serverPushService, |                 this.serverPushService, | ||||||
|                 this.i18nSupport, |                 this.i18nSupport, | ||||||
|                 readonly); |                 readonly, | ||||||
|  |                 maxWidth, | ||||||
|  |                 maxHeight); | ||||||
| 
 | 
 | ||||||
|         this.polyglotPageService.injectI18n(imageUpload, locTextKey); |         this.polyglotPageService.injectI18n(imageUpload, locTextKey); | ||||||
|         return imageUpload; |         return imageUpload; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 anhefti
						anhefti