Skip to content

Commit 2aec934

Browse files
committed
Merge pull request #26 in TSI/web-application-java from feature/TSI-2174 to develop
* commit '510af742da37b9b1a645312e068b8d8c2afd74f6': TSI-2174 removed inline z-index and set css class (TSI-1711)
2 parents 4ed7117 + 510af74 commit 2aec934

File tree

3 files changed

+108
-4
lines changed

3 files changed

+108
-4
lines changed

dxa-framework/dxa-common-impl/src/main/java/com/sdl/webapp/common/impl/taglib/xpm/XpmButtonTag.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
public class XpmButtonTag extends XpmMarkupTag {
1414
private RegionModel region;
1515

16+
private String cssClass;
17+
1618
private boolean isInclude() {
1719
return this.region.getXpmMetadata().get(RegionModelImpl.INCLUDED_FROM_PAGE_ID_XPM_METADATA_KEY) == null;
1820
}
@@ -27,8 +29,7 @@ protected HtmlNode generateXpmMarkup() {
2729
String title = "Go Back";
2830
String editUrl = "javascript:history.back()";
2931
return HtmlBuilders.div()
30-
.withClass("xpm-button")
31-
.withAttribute("style", "z-index:1")
32+
.withClass("xpm-button " + cssClass)
3233
.withNode(HtmlBuilders.a(editUrl)
3334
.withClass("fa-stack fa-lg")
3435
.withTitle(title)
@@ -44,8 +45,7 @@ protected HtmlNode generateXpmMarkup() {
4445
String editUrl = ApplicationContextHolder.getContext().getBean(WebRequestContext.class).getLocalization().localizePath(
4546
this.region.getXpmMetadata().get(RegionModelImpl.INCLUDED_FROM_PAGE_FILE_NAME_XPM_METADATA_KEY).toString());
4647
return HtmlBuilders.div()
47-
.withClass("xpm-button")
48-
.withAttribute("style", "z-index:1")
48+
.withClass("xpm-button " + cssClass)
4949
.withNode(HtmlBuilders.a(editUrl)
5050
.withClass("fa-stack fa-lg")
5151
.withTitle(title)

dxa-framework/dxa-common-impl/src/main/resources/META-INF/resources/WEB-INF/xpm.tld

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@
1818
<rtexprvalue>true</rtexprvalue>
1919
<type>com.sdl.webapp.common.api.model.RegionModel</type>
2020
</attribute>
21+
<attribute>
22+
<name>cssClass</name>
23+
<required>false</required>
24+
<rtexprvalue>true</rtexprvalue>
25+
</attribute>
2126
</tag>
2227

2328
<tag>
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
package com.sdl.webapp.common.impl.taglib.xpm;
2+
3+
import com.sdl.webapp.common.api.WebRequestContext;
4+
import com.sdl.webapp.common.api.localization.Localization;
5+
import com.sdl.webapp.common.api.model.RegionModel;
6+
import com.sdl.webapp.common.api.model.region.RegionModelImpl;
7+
import com.sdl.webapp.common.markup.html.HtmlNode;
8+
import com.sdl.webapp.common.util.ApplicationContextHolder;
9+
import org.junit.Test;
10+
import org.junit.runner.RunWith;
11+
import org.springframework.context.annotation.Bean;
12+
import org.springframework.context.annotation.Configuration;
13+
import org.springframework.test.context.ActiveProfiles;
14+
import org.springframework.test.context.ContextConfiguration;
15+
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
16+
import org.springframework.test.context.support.AnnotationConfigContextLoader;
17+
18+
import java.util.HashMap;
19+
20+
import static org.junit.Assert.assertEquals;
21+
import static org.mockito.Matchers.anyString;
22+
import static org.mockito.Mockito.doReturn;
23+
import static org.mockito.Mockito.mock;
24+
import static org.mockito.Mockito.when;
25+
26+
@RunWith(SpringJUnit4ClassRunner.class)
27+
@ContextConfiguration(loader = AnnotationConfigContextLoader.class)
28+
@ActiveProfiles("test")
29+
public class XpmButtonTagTest {
30+
31+
@Test
32+
public void shouldGenerateXpmButtonHtmlForNonInclude() {
33+
//given
34+
RegionModel region = mock(RegionModel.class);
35+
doReturn(new HashMap<String, Object>() {{
36+
put(RegionModelImpl.INCLUDED_FROM_PAGE_TITLE_XPM_METADATA_KEY, "INCLUDED_FROM_PAGE_TITLE_XPM_METADATA_KEY");
37+
put(RegionModelImpl.INCLUDED_FROM_PAGE_FILE_NAME_XPM_METADATA_KEY, "INCLUDED_FROM_PAGE_FILE_NAME_XPM_METADATA_KEY");
38+
put(RegionModelImpl.INCLUDED_FROM_PAGE_ID_XPM_METADATA_KEY, "INCLUDED_FROM_PAGE_ID_XPM_METADATA_KEY");
39+
}}).when(region).getXpmMetadata();
40+
41+
XpmButtonTag tag = new XpmButtonTag();
42+
tag.setRegion(region);
43+
tag.setCssClass("cssClass");
44+
45+
//when
46+
HtmlNode markup = tag.generateXpmMarkup();
47+
48+
//then
49+
assertEquals("<div class=\"xpm-button cssClass\">" +
50+
"<a href=\"localized-path\" class=\"fa-stack fa-lg\" title=\"Edit INCLUDED_FROM_PAGE_TITLE_XPM_METADATA_KEY\">" +
51+
"<i class=\"fa fa-square fa-stack-2x\"></i>" +
52+
"<i class=\"fa fa-pencil fa-inverse fa-stack-1x\"></i>" +
53+
"</a>" +
54+
"</div>", markup.renderHtml());
55+
}
56+
57+
58+
@Test
59+
public void shouldGenerateXpmButtonHtmlForInclude() {
60+
//given
61+
RegionModel region = mock(RegionModel.class);
62+
doReturn(new HashMap<String, Object>()).when(region).getXpmMetadata();
63+
64+
XpmButtonTag tag = new XpmButtonTag();
65+
tag.setRegion(region);
66+
tag.setCssClass("cssClass");
67+
68+
//when
69+
HtmlNode markup = tag.generateXpmMarkup();
70+
71+
//then
72+
assertEquals("<div class=\"xpm-button cssClass\">" +
73+
"<a href=\"javascript:history.back()\" class=\"fa-stack fa-lg\" title=\"Go Back\">" +
74+
"<i class=\"fa fa-square fa-stack-2x\"></i>" +
75+
"<i class=\"fa fa-arrow-left fa-inverse fa-stack-1x\"></i>" +
76+
"</a>" +
77+
"</div>", markup.renderHtml());
78+
}
79+
80+
@Configuration
81+
public static class SpringConfigurationContext {
82+
83+
@Bean
84+
public ApplicationContextHolder applicationContextHolder() {
85+
return new ApplicationContextHolder();
86+
}
87+
88+
@Bean
89+
public WebRequestContext webRequestContext() {
90+
Localization localization = mock(Localization.class);
91+
when(localization.localizePath(anyString())).thenReturn("localized-path");
92+
93+
WebRequestContext mock = mock(WebRequestContext.class);
94+
when(mock.getLocalization()).thenReturn(localization);
95+
return mock;
96+
}
97+
}
98+
99+
}

0 commit comments

Comments
 (0)