Skip to content

Commit 974fcc1

Browse files
authored
Merge pull request #75 from ist-dresden/feature/allsites
Display all sites in site manager if requested, not only of the users tenant
2 parents 67fe325 + 516662b commit 974fcc1

File tree

6 files changed

+58
-4
lines changed

6 files changed

+58
-4
lines changed

commons/bundle/src/main/java/com/composum/pages/commons/model/Sites.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010

1111
public class Sites extends AbstractModel {
1212

13+
public static final String PARAM_ALLSITES = "allSites";
14+
1315
private transient Map<String, String> tenants;
1416
private transient Collection<Site> sites;
1517
private transient Collection<Site> templates;
@@ -37,7 +39,11 @@ public Map<String, String> getTenantOptions() {
3739

3840
public Collection<Site> getSites() {
3941
if (sites == null) {
40-
sites = getSiteManager().getSites(context);
42+
if (Boolean.TRUE.equals(Boolean.valueOf(getContext().getRequest().getParameter(PARAM_ALLSITES)))) {
43+
sites = getSiteManager().getAllSites(context);
44+
} else {
45+
sites = getSiteManager().getSites(context);
46+
}
4147
}
4248
return sites;
4349
}

commons/bundle/src/main/java/com/composum/pages/commons/service/PagesSiteManager.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,12 @@ public Collection<Site> getSites(@Nonnull final BeanContext context) {
242242
return sites;
243243
}
244244

245+
@NotNull
246+
@Override
247+
public Collection<Site> getAllSites(@NotNull BeanContext context) {
248+
return getSites(context, getContentRoot(context.getResolver()), ResourceFilter.ALL);
249+
}
250+
245251
@Override
246252
public Collection<Site> getSiteTemplates(@Nonnull BeanContext context, String tenant) {
247253
UniqueSiteList result = new UniqueSiteList();

commons/bundle/src/main/java/com/composum/pages/commons/service/SiteManager.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,18 @@ default Site createBean(@Nonnull BeanContext context, @Nonnull Resource resource
138138
@Nonnull
139139
Collection<Site> getSites(@Nonnull BeanContext context, @Nullable Resource searchRoot, @Nonnull ResourceFilter filter);
140140

141+
142+
/**
143+
* Determines all sites readable for the user, no matter what tenant.
144+
*
145+
* @param context the current request context
146+
* @return the collection of all sites readable for the user
147+
*/
148+
@Nonnull
149+
default Collection<Site> getAllSites(@Nonnull BeanContext context) {
150+
return getSites(context);
151+
}
152+
141153
/**
142154
* Determines all usable site templates in the context of a specific tenant.
143155
* This implementation uses the resolvers search path to find all site resources in a tenants application context.

stage/package/src/main/content/jcr_root/libs/composum/pages/stage/edit/css/dialogs.scss

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,18 @@
250250
}
251251
}
252252
}
253+
254+
&_label_allsites {
255+
display: flex;
256+
align-items: center;
257+
margin-left: $bootstrap-spacing-h;
258+
259+
span {
260+
padding-top: 2px;
261+
margin-left: 10px;
262+
}
263+
}
264+
253265
}
254266
}
255267

@@ -356,4 +368,4 @@
356368
vertical-align: center;
357369
}
358370
}
359-
}
371+
}

stage/package/src/main/content/jcr_root/libs/composum/pages/stage/edit/default/site/dialog/manage/manage.jsp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
<%@page session="false" pageEncoding="utf-8" %>
22
<%@taglib prefix="cpp" uri="http://sling.composum.com/cppl/1.0" %>
33
<%@taglib prefix="cpn" uri="http://sling.composum.com/cpnl/1.0" %>
4+
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
45
<cpp:defineFrameObjects/>
56
<cpp:editDialog var="sites" type="com.composum.pages.commons.model.Sites" selector="custom" title="Manage Sites">
7+
<%--@elvariable id="sites" type="com.composum.pages.commons.model.Sites"--%>
68
<div class="modal-header ${dialogCssBase}_header">
79
<button type="button" class="${dialogCssBase}_button-close fa fa-close"
810
data-dismiss="modal" aria-label="Close"></button>
@@ -32,6 +34,13 @@
3234
<button type="button" class="${dialogCssBase}_button-clone ${dialogCssBase}_button btn btn-default has-icon"
3335
data-dismiss="modal" title="${cpn:i18n(slingRequest,'Clone Site')}"><i
3436
class="${dialogCssBase}_icon fa fa-clone"></i>${cpn:i18n(slingRequest,'Clone')}</button>
37+
<c:if test="${sites.tenantSupport}">
38+
<label class="${dialogCssBase}_label_allsites tools-title"
39+
title="${cpn:i18n(slingRequest,'Also show sites that are readable even if they do not belong to your tenant(s).')}">
40+
<input type="checkbox" class="${dialogCssBase}_checkbox_allsites"/>
41+
<span class="title-text">${cpn:i18n(slingRequest,'All Sites')}</span>
42+
</label>
43+
</c:if>
3544
<div class="${dialogCssBase}_hints"></div>
3645
<button type="button" class="${dialogCssBase}_button-cancel ${dialogCssBase}_button btn btn-default"
3746
data-dismiss="modal">${cpn:i18n(slingRequest,'Close')}</button>

stage/package/src/main/content/jcr_root/libs/composum/pages/stage/edit/js/dialogs.js

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@
119119
_submitButton: '_button-submit',
120120
_prevButton: '_button-prev',
121121
_nextButton: '_button-next',
122+
_allsitesCheckbox: '_checkbox_allsites',
122123
site: {
123124
base: 'composum-pages-stage-site',
124125
_tile: '_tile'
@@ -1140,6 +1141,7 @@
11401141
this.submitForm(_.bind(function (result) {
11411142
pages.trigger('dialog.site.create', pages.const.event.site.created,
11421143
[new pages.Reference(result.name, result.path)]);
1144+
pages.trigger('dialog.site.create', pages.const.event.site.select, [result.path]);
11431145
}, this));
11441146
}
11451147
});
@@ -1175,8 +1177,9 @@
11751177

11761178
doSubmit: function () {
11771179
this.submitForm(_.bind(function (result) {
1178-
pages.trigger('dialog.site.create', pages.const.event.site.created,
1180+
pages.trigger('dialog.site.clone', pages.const.event.site.created,
11791181
[new pages.Reference(result.name, result.path)]);
1182+
pages.trigger('dialog.site.clone', pages.const.event.site.select, [result.path]);
11801183
}, this));
11811184
}
11821185
});
@@ -1199,6 +1202,8 @@
11991202
this.$('.' + c.base + c._removeButton).click(_.bind(this.onDelete, this));
12001203
this.$('.' + c.base + c._openButton).click(_.bind(this.onOpen, this));
12011204
this.$('.' + c.base + c._cloneButton).click(_.bind(this.onClone, this));
1205+
this.$allsitesCheckbox = this.$('.' + c.base + c._allsitesCheckbox);
1206+
this.$allsitesCheckbox.bind('change', _.bind(this.reloadContent, this));
12021207
this.initContent();
12031208
var id = '.SiteManager';
12041209
var e = pages.const.event;
@@ -1214,7 +1219,11 @@
12141219
},
12151220

12161221
reloadContent: function () {
1217-
core.ajaxGet(dialogs.const.edit.url.sites.list, {}, _.bind(function (content) {
1222+
let url = dialogs.const.edit.url.sites.list;
1223+
if (this.$allsitesCheckbox.is(':checked')) {
1224+
url = url + "?allSites=true";
1225+
}
1226+
core.ajaxGet(url, {}, _.bind(function (content) {
12181227
this.$list.html(content);
12191228
this.initContent();
12201229
}, this));

0 commit comments

Comments
 (0)