Commit 2528830b by Tuomas Riihimäki

Add pagecontent localisation

1 parent 57236b3f
......@@ -32,7 +32,7 @@ public class BootstrapBean implements BootstrapBeanLocal {
dbUpdates.add(new String[] { "ALTER TABLE tournaments ADD COLUMN max_participants integer NOT NULL DEFAULT 0" });
dbUpdates.add(new String[] { "ALTER TABLE tournament_participants ADD COLUMN tournament integer NOT NULL REFERENCES tournaments(id)" });
dbUpdates.add(new String[] { "DELETE FROM application_permissions WHERE application = 'MAP' and permission = 'RELEASE_PLACE'" });
// dbUpdates.add(new String[] { "ALTER TABLE users ALTER COLUMN birthday TYPE date" });
dbUpdates.add(new String[] { "ALTER TABLE site_page_content ADD COLUMN locale varchar(10)" });
}
@EJB
......
......@@ -165,6 +165,8 @@ public class MenuBean implements MenuBeanLocal {
adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/foodwaveProducts"), UserPermission.VIEW_ALL).setVisible(false);
adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/showTakePicture"), UserPermission.VIEW_ALL).setVisible(false);
adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/editAccountevent"), UserPermission.VIEW_ALL).setVisible(false);
MenuNavigation adminroles = adminuser.addPage(null, null);
adminroles.setKey("subnavi.roles");
adminroles.addPage(menuitemfacade.findOrCreate("/role/list"), UserPermission.READ_ROLES);
......
......@@ -323,8 +323,7 @@ public class PlaceBean implements PlaceBeanLocal {
freePlace.setProduct(prod);
freePlace.setProvidesRole(prod.getProvides());
placeFacade.create(freePlace);
} else if (prod.getPlaces() != null)
{
} else if (prod.getPlaces() != null) {
for (Place p : prod.getPlaces()) {
if (!p.isTaken()) {
freePlace = p;
......@@ -511,14 +510,14 @@ public class PlaceBean implements PlaceBeanLocal {
}
return place;
}
@Override
@RolesAllowed(MapPermission.S_MANAGE_MAPS)
public List<GroupMembership> matchGroupMembershipsByInviteToken(String token) {
List<GroupMembership> gms = gmemfacade.matchByToken(token);
return gms;
}
@Override
public GroupMembership findGroupMembershipsByToken(String token) {
return gmemfacade.findByToken(token);
......
......@@ -3,6 +3,7 @@ package fi.codecrew.moya.beans;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import javax.annotation.security.DeclareRoles;
import javax.annotation.security.PermitAll;
......@@ -106,21 +107,20 @@ public class SitePageBean implements SitePageBeanLocal {
@Override
@PermitAll
public List<PageContent> findContentsForUser(Integer id) {
return getContentsForPage(sitepagefacade.find(id));
public List<PageContent> findContentsForUser(Integer id, Locale locale) {
return getContentsForPage(sitepagefacade.find(id), locale);
}
private List<PageContent> getContentsForPage(SitePage page)
private List<PageContent> getContentsForPage(SitePage page, Locale locale)
{
List<Role> roles = userbean.localFindUsersRoles(permbean.getCurrentUser());
List<PageContent> ret = null;
if (page != null && page.getAllowedRoles() != null)
{
if (page != null && page.getAllowedRoles() != null) {
for (Role r : page.getAllowedRoles()) {
if (roles.contains(r)) {
logger.debug("Has role for page {}, role {}", page, r);
ret = sitepagefacade.findContents(page, new Date());
ret = sitepagefacade.findContents(page, new Date(), locale);
break;
}
}
......@@ -129,9 +129,9 @@ public class SitePageBean implements SitePageBeanLocal {
}
@Override
public List<PageContent> findContentsForUser(String name) {
public List<PageContent> findContentsForUser(String name, Locale locale) {
SitePage page = sitepagefacade.find(name);
return getContentsForPage(page);
return getContentsForPage(page, locale);
}
@Override
......
package fi.codecrew.moya.facade;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import javax.ejb.EJB;
import javax.ejb.Stateless;
......@@ -12,20 +15,24 @@ import javax.persistence.criteria.Path;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import fi.codecrew.moya.model.PageContent_;
import fi.codecrew.moya.model.Role_;
import fi.codecrew.moya.model.SitePage_;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.PageContent;
import fi.codecrew.moya.model.PageContent_;
import fi.codecrew.moya.model.Role;
import fi.codecrew.moya.model.Role_;
import fi.codecrew.moya.model.SitePage;
import fi.codecrew.moya.model.SitePage_;
@Stateless
public class SitePageFacade extends IntegerPkGenericFacade<SitePage> {
@EJB
private EventBeanLocal eventbean;
private static final Logger logger = LoggerFactory.getLogger(SitePageFacade.class);
public SitePageFacade() {
......@@ -102,7 +109,10 @@ public class SitePageFacade extends IntegerPkGenericFacade<SitePage> {
}
public List<PageContent> findContents(SitePage page, Date now) {
public List<PageContent> findContents(SitePage page, Date now, Locale locale) {
logger.info("Getting pageContents for locale {}", locale);
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<PageContent> cq = cb.createQuery(PageContent.class);
Root<PageContent> root = cq.from(PageContent.class);
......@@ -115,9 +125,24 @@ public class SitePageFacade extends IntegerPkGenericFacade<SitePage> {
cb.or(cb.isNull(publishpath), cb.greaterThan(publishpath, now)),
cb.or(cb.isNull(expirepath), cb.lessThan(expirepath, now))
);
return getEm().createQuery(cq).getResultList();
cq.orderBy(cb.desc(root.get(PageContent_.sort)));
ArrayList<PageContent> ret = new ArrayList<>(getEm().createQuery(cq).getResultList());
if (locale != null) {
final String localeLang = locale.getLanguage();
for (Iterator<PageContent> contIter = ret.iterator(); contIter.hasNext();) {
PageContent content = contIter.next();
// Show only if language equals or is null
Locale contLocale = content.getLocaleObject();
if (contLocale != null && !localeLang.equals(contLocale.getLanguage())) {
logger.info("Removing content with lang {} (comparing to {}) ", contLocale, locale);
contIter.remove();
}
}
}
return ret;
}
public SitePage find(String name) {
......
package fi.codecrew.moya.beans;
import java.util.List;
import java.util.Locale;
import javax.ejb.Local;
......@@ -24,9 +25,9 @@ public interface SitePageBeanLocal {
SitePage find(Integer id);
List<PageContent> findContentsForUser(Integer id);
List<PageContent> findContentsForUser(Integer id, Locale locale);
List<PageContent> findContentsForUser(String name);
List<PageContent> findContentsForUser(String name, Locale locale);
SitePage findSitename(String managedPage);
......
package fi.codecrew.moya.model;
import java.util.Date;
import java.util.Locale;
import javax.persistence.Column;
import javax.persistence.Entity;
......@@ -37,6 +38,25 @@ public class PageContent extends GenericEntity {
@Temporal(TemporalType.TIMESTAMP)
private Date expire;
@Column(length = 10)
private String locale;
public Locale getLocaleObject() {
Locale ret = null;
if (locale != null) {
ret = Locale.forLanguageTag(locale);
}
return ret;
}
public void setLocaleObject(Locale locale) {
String loc = null;
if (locale != null) {
loc = locale.toLanguageTag();
}
this.locale = loc;
}
public PageContent() {
super();
}
......@@ -86,4 +106,12 @@ public class PageContent extends GenericEntity {
this.expire = expire;
}
public String getLocale() {
return locale;
}
public void setLocale(String locale) {
this.locale = locale;
}
}
......@@ -16,9 +16,7 @@
<!-- Vector VE (VENEZUELA, BOLIVARIAN REPUBLIC OF) -->
<locale-config>
<default-locale>fi_FI</default-locale>
<supported-locale>fi_fi_XII</supported-locale>
<supported-locale>en_ST_v7</supported-locale>
<supported-locale>en_ST_nine</supported-locale>
<supported-locale>en_UK</supported-locale>
</locale-config>
</application>
......@@ -44,35 +42,35 @@
<!-- </navigation-case> -->
<!-- </navigation-rule> -->
<!-- <navigation-rule> -->
<!-- <from-view-id>*</from-view-id> -->
<!-- <navigation-case> -->
<!-- <from-outcome>shopToUser</from-outcome> -->
<!-- <to-view-id>/shop/shopToUser</to-view-id> -->
<!-- <redirect /> -->
<!-- </navigation-case> -->
<!-- <navigation-case> -->
<!-- <from-outcome>logoutDone</from-outcome> -->
<!-- <to-view-id>/auth/logoutResponse</to-view-id> -->
<!-- <redirect /> -->
<!-- </navigation-case> -->
<!-- <navigation-rule> -->
<!-- <from-view-id>*</from-view-id> -->
<!-- <navigation-case> -->
<!-- <from-outcome>shopToUser</from-outcome> -->
<!-- <to-view-id>/shop/shopToUser</to-view-id> -->
<!-- <redirect /> -->
<!-- </navigation-case> -->
<!-- <navigation-case> -->
<!-- <from-outcome>logoutDone</from-outcome> -->
<!-- <to-view-id>/auth/logoutResponse</to-view-id> -->
<!-- <redirect /> -->
<!-- </navigation-case> -->
<!-- <navigation-case> -->
<!-- <from-outcome>redirBillList</from-outcome> -->
<!-- <to-view-id>/bill/list</to-view-id> -->
<!-- <redirect /> -->
<!-- </navigation-case> -->
<!-- </navigation-rule> -->
<!-- <navigation-case> -->
<!-- <from-outcome>redirBillList</from-outcome> -->
<!-- <to-view-id>/bill/list</to-view-id> -->
<!-- <redirect /> -->
<!-- </navigation-case> -->
<!-- </navigation-rule> -->
<!-- <navigation-rule> -->
<!-- <from-view-id>/news/editNews</from-view-id> -->
<!-- <navigation-case> -->
<!-- <from-outcome>news/listAll</from-outcome> -->
<!-- <to-view-id>/news/listAll</to-view-id> -->
<!-- <redirect /> -->
<!-- </navigation-case> -->
<!-- </navigation-rule> -->
<!-- <navigation-rule> -->
<!-- <from-view-id>/news/editNews</from-view-id> -->
<!-- <navigation-case> -->
<!-- <from-outcome>news/listAll</from-outcome> -->
<!-- <to-view-id>/news/listAll</to-view-id> -->
<!-- <redirect /> -->
<!-- </navigation-case> -->
<!-- </navigation-rule> -->
<!-- </navigation-rule> -->
......
......@@ -37,8 +37,28 @@
</div>
</ui:fragment>
<ui:repeat rendered="#{!empty sitePageView.sitepage.contents}" value="#{sitePageView.sitepage.contents}" var="cont">
<div>
<ui:repeat id="contentRepeat" rendered="#{!empty sitePageView.sitepage.contents}" value="#{sitePageView.sitepage.contents}" var="cont">
<div style="border-width: 1px; border-style: solid; margin: 1em 0 0 0; padding: 0.5em;">
<h:panelGrid columns="2">
<h:outputLabel value="#{i18n['sitepage.content.locale']}: " for="locale" />
<h:selectOneMenu id="locale" value="#{cont.localeObject}" converter="#{localeConverter}">
<f:selectItem itemValue="null" itemLabel="#{i18n['sitepage.content.showToAll']}" />
<f:selectItems value="#{localeSelectorView.availableLocales}" var="loc" itemValue="#{loc.locale}" itemLabel="#{loc.locale.displayName}" />
</h:selectOneMenu>
<h:outputLabel for="sort" value="#{i18n['sitepage.content.sort']}" />
<h:inputText id="sort" value="#{cont.sort}">
<f:convertNumber integerOnly="true" />
</h:inputText>
<h:outputLabel for="publish" value="#{i18n['sitepage.content.publish']}" />
<p:calendar id="publish" value="#{cont.publish}" pattern="#{sessionHandler.datetimeFormat}"/>
<h:outputLabel for="expire" value="#{i18n['sitepage.content.expire']}" />
<p:calendar id="expire" value="#{cont.publish}" pattern="#{sessionHandler.datetimeFormat}"/>
</h:panelGrid>
<p:editor value="#{cont.content}" />
</div>
</ui:repeat>
......
......@@ -35,12 +35,22 @@
<h:body>
<script type="text/javascript">
$( document ).ready(function() {
<ui:repeat value="#{localeSelectorView.availableLocales}" var="loc" varStatus="idx">
$(".languageSelector .ui-button:eq(#{idx.index})").css("background", "url('#{request.contextPath}/resources/icons/flags/#{loc.locale.language}.png') no-repeat").css("width", "16px").css("height", "11px").css("padding", "0").css("margin-right", "5px").css("border-radius", "0")
</ui:repeat>
$(".languageSelector .ui-button-text").text("");
});
$(document)
.ready(
function() {
<ui:repeat value="#{localeSelectorView.availableLocales}" var="loc" varStatus="idx">
$(
".languageSelector .ui-button:eq(#{idx.index})")
.css(
"background",
"url('#{request.contextPath}/resources/icons/flags/#{loc.locale.language}.png') no-repeat")
.css("width", "16px").css("height",
"11px").css("padding", "0")
.css("margin-right", "5px").css(
"border-radius", "0")
</ui:repeat>
$(".languageSelector .ui-button-text").text("");
});
</script>
<!--[if lt IE 7]>
<p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
......@@ -65,12 +75,22 @@
</h:link>
</div>
<div id="header_center" class="flex1">
<div>
<h:form id="selectLanguage">
<p:selectOneButton id="langselect" styleClass="languageSelector" value="#{sessionStore.locale}" onchange="this.form.submit()" converter="#{localeConverter}">
<f:selectItems value="#{localeSelectorView.availableLocales}" var="loc" itemValue="#{loc.locale}" itemLabel="#{loc.locale.displayName}" />
</p:selectOneButton>
</h:form>
</div>
<ui:fragment rendered="#{layoutView.canManageContent}">
<div>
<h:form>
<h:outputLabel for="manageBtn" value="#{i18n['content.showContentEditLinks']}" />
<h:selectBooleanCheckbox value="#{sessionStore.manageContentLinks}" onclick="this.form.submit()" />
</h:form>
</div>
</ui:fragment>
<h:form id="selectLanguage">
<p:selectOneButton id="langselect" styleClass="languageSelector" value="#{sessionStore.locale}" onchange="this.form.submit()" converter="#{localeConverter}">
<f:selectItems value="#{localeSelectorView.availableLocales}" var="loc" itemValue="#{loc.locale}" itemLabel="#{loc.locale.displayName}" />
</p:selectOneButton>
</h:form>
</div>
<div id="header_right">
<a href="http://www.codecrew.fi"><img src="#{request.contextPath}/resources/templates/template1/img/moya_logo.png" /> </a>
......
......@@ -5,6 +5,7 @@ import java.util.Locale;
import javax.ejb.EJB;
import javax.enterprise.context.SessionScoped;
import javax.faces.context.FacesContext;
import javax.inject.Named;
import org.slf4j.Logger;
......@@ -17,11 +18,12 @@ import fi.codecrew.moya.beans.EventBeanLocal;
public class SessionStore implements Serializable {
private static final long serialVersionUID = 594517648650107916L;
private static final Locale DEFAULT_LOCALE = Locale.forLanguageTag("fi_FI");
private static final Locale DEFAULT_LOCALE = new Locale("fi");
@EJB
private EventBeanLocal eventbean;
private Locale locale;
private boolean manageContentLinks = false;
private static final Logger logger = LoggerFactory.getLogger(SessionStore.class);
......@@ -38,10 +40,10 @@ public class SessionStore implements Serializable {
logger.warn("Error setting locale from current event for {}", retStr);
ret = null;
}
}
if (ret == null) {
ret = DEFAULT_LOCALE;
}
if (ret == null) {
ret = DEFAULT_LOCALE;
}
locale = ret;
}
......@@ -51,6 +53,15 @@ public class SessionStore implements Serializable {
public void setLocale(Locale locale)
{
this.locale = locale;
FacesContext.getCurrentInstance().getViewRoot().setLocale(locale);
}
public boolean isManageContentLinks() {
return manageContentLinks;
}
public void setManageContentLinks(boolean manageContentLinks) {
this.manageContentLinks = manageContentLinks;
}
}
......@@ -223,8 +223,8 @@ resetMail.username = Username
resetmailSent.body = Email has been sent containing a link where you can change the password.
resetmailSent.header = Email sent
submenu.NotImplementedYet = Not implemented
submenu.frontpage = Frontpage
submenu.NotImplementedYet = Not implemented
submenu.frontpage = Frontpage
subnavi.cards = \u0009\u0009
......
......@@ -222,6 +222,8 @@ compofile.download = Download
compofile.download.header = Download file
compofile.upload = Upload file
content.showContentEditLinks = Show content edit links
discount.active = Active
discount.amountMax = Max amount
discount.amountMin = Min amount
......@@ -881,12 +883,17 @@ sidebar.users = Users
sidebar.utils.flushCache = Flush Cache
sidebar.utils.testdata = Testdata
sitepage.addContent = Add content block
sitepage.create = Create
sitepage.edit = Edit
sitepage.name = Page name
sitepage.roles = Visible for roles
sitepage.save = Save
sitepage.addContent = Add content block
sitepage.content.expire = Expire time
sitepage.content.locale = Show for language
sitepage.content.publish = Publish time
sitepage.content.showToAll = All languages
sitepage.content.sort = Sorting number
sitepage.create = Create
sitepage.edit = Edit
sitepage.name = Page name
sitepage.roles = Visible for roles
sitepage.save = Save
sitepagelist.header = Site pages
......
......@@ -224,6 +224,8 @@ compofile.download = lataa
compofile.download.header = Lataa tiedosto
compofile.upload = L\u00E4het\u00E4 tiedosto
content.showContentEditLinks = N\u00E4yt\u00E4 sis\u00E4ll\u00F6nmuokkauslinkit
discount.active = Aktiivinen
discount.amountMax = Enimm\u00E4ism\u00E4\u00E4r\u00E4
discount.amountMin = V\u00E4himm\u00E4ism\u00E4\u00E4r\u00E4
......@@ -863,12 +865,17 @@ sidebar.users = K\u00E4ytt\u00E4j\u00E4t
sidebar.utils.flushCache = Flush Cache
sidebar.utils.testdata = Testdata
sitepage.addContent = Lis\u00E4\u00E4 sis\u00E4lt\u00F6laatikko
sitepage.create = Luo uusi
sitepage.edit = Muokkaa
sitepage.name = Sivun nimi
sitepage.roles = N\u00E4ytet\u00E4\u00E4n rooleille
sitepage.save = Tallenna
sitepage.addContent = Lis\u00E4\u00E4 sis\u00E4lt\u00F6laatikko
sitepage.content.expire = Vanhenemisaika
sitepage.content.locale = N\u00E4yt\u00E4 kielell\u00E4
sitepage.content.publish = Julkaisuaika
sitepage.content.showToAll = Kaikki kielet
sitepage.content.sort = J\u00E4rjestysluku
sitepage.create = Luo uusi
sitepage.edit = Muokkaa
sitepage.name = Sivun nimi
sitepage.roles = N\u00E4ytet\u00E4\u00E4n rooleille
sitepage.save = Tallenna
sitepagelist.header = Sivuston sis\u00E4ll\u00F6t
......
......@@ -5,6 +5,7 @@ import javax.enterprise.context.RequestScoped;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
......@@ -36,4 +37,23 @@ public class ReaderRestView {
{
return new ReaderEventRestRoot(ReaderEventRestPojo.parse(readerbean.getLastReaderEvents()));
}
// @GET
// @Path("/RfidEvent/{reader}/{tagId}")
// public void createRfidEvent(@PathParam("reader") String reader, @PathParam("tagId") String tagId) {
//
// }
@GET
@Path("/EventRole/{reader}/{roleid}")
public void eventRole(@PathParam("reader") String reader, @PathParam("roleid") String roleId) {
}
@GET
@Path("/EventCard/{reader}/{cardid}")
public void eventCard(@PathParam("reader") String reader, @PathParam("cardid") String cardId) {
}
}
......@@ -3,8 +3,8 @@ package fi.codecrew.moya.web;
import java.util.Locale;
public enum ValidLocale {
FINNISH(new Locale("fi", "FI")),
ENGLISH(new Locale("en", "US"));
FINNISH(new Locale("fi")),
ENGLISH(new Locale("en"));
private final Locale locale;
......
......@@ -4,9 +4,11 @@ import java.util.List;
import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.inject.Named;
import fi.codecrew.moya.beans.SitePageBeanLocal;
import fi.codecrew.moya.handler.SessionStore;
import fi.codecrew.moya.model.PageContent;
import fi.codecrew.moya.web.cdiview.GenericCDIView;
......@@ -18,6 +20,8 @@ public class PageOutputView extends GenericCDIView {
@EJB
private transient SitePageBeanLocal pagebean;
@Inject
private SessionStore store;
private Integer id;
private String name;
......@@ -28,6 +32,7 @@ public class PageOutputView extends GenericCDIView {
{
name = "/frontpage";
initView();
}
public void initView(String name)
......@@ -38,13 +43,12 @@ public class PageOutputView extends GenericCDIView {
public void initView() {
if (name == null || name.isEmpty()) {
setContents(pagebean.findContentsForUser(id));
setContents(pagebean.findContentsForUser(id, store.getLocale()));
} else {
setContents(pagebean.findContentsForUser(name));
setContents(pagebean.findContentsForUser(name, store.getLocale()));
}
if (!requirePermissions(contents != null && !contents.isEmpty()))
{
if (!requirePermissions(contents != null && !contents.isEmpty())) {
contents = null;
}
}
......@@ -65,4 +69,12 @@ public class PageOutputView extends GenericCDIView {
this.contents = contents;
}
public SessionStore getStore() {
return store;
}
public void setStore(SessionStore store) {
this.store = store;
}
}
......@@ -21,6 +21,7 @@ import fi.codecrew.moya.beans.MenuBeanLocal;
import fi.codecrew.moya.beans.PermissionBeanLocal;
import fi.codecrew.moya.beans.SitePageBeanLocal;
import fi.codecrew.moya.handler.NavigationHandler;
import fi.codecrew.moya.handler.SessionStore;
import fi.codecrew.moya.model.MenuNavigation;
import fi.codecrew.moya.model.PageContent;
import fi.codecrew.moya.web.helper.LayoutView;
......@@ -37,6 +38,8 @@ public class MenuView {
@Inject
private transient LayoutView layoutview;
@Inject
private transient SessionStore sessionstore;
@Inject
private transient FacesContext context;
......@@ -63,7 +66,7 @@ public class MenuView {
logger.debug("Getting pagecontent for key {}. Matches: {}", key, contents.containsKey(key));
if (!contents.containsKey(key)) {
contents.put(key, pagebean.findContentsForUser(key));
contents.put(key, pagebean.findContentsForUser(key, sessionstore.getLocale()));
}
return contents.get(key);
}
......@@ -253,4 +256,12 @@ public class MenuView {
this.menuChange = menuChange;
}
public SessionStore getSessionstore() {
return sessionstore;
}
public void setSessionstore(SessionStore sessionstore) {
this.sessionstore = sessionstore;
}
}
......@@ -91,8 +91,9 @@ public class PrimeMenuView extends GenericCDIView {
{
menuModel = new DefaultMenuModel();
MenuNavigation selectedTop = layoutview.getSelectedTopmenu();
if(selectedTop == null) return null;
if (selectedTop == null)
return null;
for (MenuNavigation m : selectedTop.getChildren()) {
if (m.getItem() != null && m.getChildren().isEmpty()) {
DefaultMenuItem menuitem = mkMenuitem(m);
......@@ -108,10 +109,7 @@ public class PrimeMenuView extends GenericCDIView {
}
// logger.info("Initialized menumodel for user {} with {} entries" )
} else {
logger.info("Not initializing menumodel with {} entries for user {}", menuModel.getElements().size());
}
return menuModel;
}
......
......@@ -18,7 +18,7 @@ public class LocaleConverter implements Converter {
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
Locale ret = null;
if (value != null) {
if (value != null && !value.isEmpty() && !"null".equals(value)) {
try {
ret = Locale.forLanguageTag(value);
} catch (Throwable t) {
......@@ -31,7 +31,7 @@ public class LocaleConverter implements Converter {
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
String ret = null;
String ret = "null";
if (value != null && value instanceof Locale) {
Locale loc = (Locale) value;
ret = loc.toLanguageTag();
......
......@@ -24,6 +24,7 @@ import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.beans.MenuBeanLocal;
import fi.codecrew.moya.beans.PermissionBeanLocal;
import fi.codecrew.moya.enums.apps.ContentPermission;
import fi.codecrew.moya.handler.SessionStore;
import fi.codecrew.moya.model.LanEventProperty;
import fi.codecrew.moya.model.LanEventPropertyKey;
import fi.codecrew.moya.model.MenuNavigation;
......@@ -42,7 +43,8 @@ public class LayoutView {
private transient PermissionBeanLocal permbean;
private StreamedContent headerimage;
private String headertext;
@Inject
private SessionStore sessionStore;
@EJB
private transient MenuBeanLocal menubean;
......@@ -52,8 +54,11 @@ public class LayoutView {
logger.info("Initialized layoutView");
}
public boolean isManageContent()
{
public boolean isManageContent() {
return sessionStore.isManageContentLinks() && permbean.hasPermission(ContentPermission.MANAGE_PAGES);
}
public boolean isCanManageContent() {
return permbean.hasPermission(ContentPermission.MANAGE_PAGES);
}
......@@ -241,4 +246,12 @@ public class LayoutView {
return value;
}
public SessionStore getSessionStore() {
return sessionStore;
}
public void setSessionStore(SessionStore sessionStore) {
this.sessionStore = sessionStore;
}
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!