GroupDetails.java
package sk.iway.iwcm.doc;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import org.apache.commons.beanutils.BeanUtils;
import sk.iway.iwcm.*;
import sk.iway.iwcm.common.DocTools;
import sk.iway.iwcm.system.datatable.DataTableColumnType;
import sk.iway.iwcm.system.datatable.annotations.DataTableColumn;
import sk.iway.iwcm.system.datatable.annotations.DataTableColumnEditor;
import sk.iway.iwcm.system.datatable.annotations.DataTableColumnEditorAttr;
import sk.iway.iwcm.system.datatable.annotations.DataTableColumnNested;
import sk.iway.iwcm.tags.JSEscapeTag;
import sk.iway.iwcm.users.UsersDB;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.validation.constraints.NotBlank;
import java.util.List;
import java.util.StringTokenizer;
/**
* drzi zaznam z tabulky Groups
*
*@Title Interway Content Management
*@Company Interway s.r.o. (www.interway.sk)
*@Copyright Interway s.r.o. (c) 2001-2002
*@author $Author: jeeff $
*@version $Revision: 1.9 $
*@created $Date: 2004/03/15 21:34:42 $
*@modified $Date: 2004/03/15 21:34:42 $
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public class GroupDetails implements Cloneable, DocGroupInterface
{
@DataTableColumn(
inputType = DataTableColumnType.ID,
title= "[[#{components.editor.rest.id}]]",
data = "groupId",
name = "id"
)
private int groupId;
@DataTableColumn(
inputType = DataTableColumnType.OPEN_EDITOR,
title = "[[#{editor.directory_name}]]",
editor = {
@DataTableColumnEditor(
type = "text",
tab = "basic",
attr = {
@DataTableColumnEditorAttr(key = "data-dt-validation", value = "true"),
@DataTableColumnEditorAttr(key = "data-dt-escape-slash", value = "true")
}
)
}
)
@NotBlank
private String groupName;
@DataTableColumn(
inputType = DataTableColumnType.TEXT,
title = "[[#{webpages.editor.titleForMenu}]]",
visible = false,
editor = {
@DataTableColumnEditor(
type = "text",
tab = "basic",
attr = {
@DataTableColumnEditorAttr(key = "data-dt-field-hr", value = "after"),
@DataTableColumnEditorAttr(key = "data-dt-validation", value = "true"),
@DataTableColumnEditorAttr(key = "data-dt-escape-slash", value = "true")
})
}
)
@NotBlank
private String navbarName = "";
@DataTableColumn(
renderFormat = "dt-format-text",
title = "[[#{components.groupEdit.url_info}]]",
className = "DTE_Field_Has_Checkbox",
visible = true,
editor = {
@DataTableColumnEditor(
type = "text",
tab = "basic"
)
}
)
private String urlDirName;
@DataTableColumn(
renderFormat = "dt-format-text",
title = "[[#{groupedit.domain}]]",
className = "DTE_Field_Has_Checkbox",
visible = false,
perms = "multiDomain",
editor = {
@DataTableColumnEditor(
type = "text",
tab = "basic"
)
}
)
private String domainName = null;
private int defaultDocId = 0;
@DataTableColumn(
renderFormat = "dt-format-select",
title = "[[#{groupedit.folder_public_availability}]]",
className = "DTE_Field_Has_Checkbox",
visible = false,
editor = {
@DataTableColumnEditor(
type = "select",
tab = "basic",
attr = {
@DataTableColumnEditorAttr(key = "data-dt-field-hr", value = "before")
}
)
}
)
private boolean internal = false;
@DataTableColumn(
inputType = DataTableColumnType.NUMBER,
title = "[[#{editor.sort_order}]]",
tab = "menu",
visible = true,
editor = {
@DataTableColumnEditor(
message = "[[#{groupedit.displayOrderHint}]]"
)
}
)
private int sortPriority;
@DataTableColumn(
renderFormat = "dt-format-select",
title = "[[#{groupedit.template}]]",
className = "DTE_Field_Has_Checkbox",
visible = true,
editor = {
@DataTableColumnEditor(
type = "select",
tab = "template"
)
}
)
private int tempId;
@DataTableColumn(
renderFormat = "dt-format-checkbox",
title = "[[#{}]]",
visible = false,
editor = {
@DataTableColumnEditor(
type = "checkbox",
tab = "template",
message = "[[#{groupedit.force_the_use_of_group_template.tooltip}]]",
attr = {
@DataTableColumnEditorAttr(key = "data-dt-field-hr", value = "after")
},
options = {
@DataTableColumnEditorAttr(key = "groupedit.force_the_use_of_group_template", value = "true")
}
)
}
)
private boolean forceTheUseOfGroupTemplate = false;
@DataTableColumn(
renderFormat = "dt-format-select",
title = "[[#{groupedit.language}]]",
className = "DTE_Field_Has_Checkbox",
visible = false,
editor = {
@DataTableColumnEditor(
type = "select",
tab = "template"
)
}
)
private String lng = "";
@DataTableColumn(
renderFormat = "dt-format-select",
title = "[[#{groupedit.new_page_template}]]",
className = "DTE_Field_Has_Checkbox",
visible = false,
editor = {
@DataTableColumnEditor(
type = "select",
tab = "template"
)
}
)
private int newPageDocIdTemplate = 0;
@DataTableColumn(
renderFormat = "dt-format-textarea",
title = "[[#{groupedit.htmlHead}]]",
visible = false,
editor = {
@DataTableColumnEditor(
type = "textarea",
tab = "template",
attr = {
@DataTableColumnEditorAttr(key = "data-dt-field-hr", value = "before")
}
)
}
)
private String htmlHead = "";
@DataTableColumn(
renderFormat = "dt-format-text",
title = "[[#{groupedit.field_a}]]",
visible = false,
editor = {
@DataTableColumnEditor(
type = "text",
label = "[[#{groupedit.field_a}]]",
tab = "fields"
)
}
)
private String fieldA = "";
@DataTableColumn(
renderFormat = "dt-format-text",
title = "[[#{groupedit.field_b}]]",
visible = false,
editor = {
@DataTableColumnEditor(
type = "text",
label = "[[#{groupedit.field_b}]]",
tab = "fields"
)
}
)
private String fieldB = "";
@DataTableColumn(
renderFormat = "dt-format-text",
title = "[[#{groupedit.field_c}]]",
visible = false,
editor = {
@DataTableColumnEditor(
type = "text",
label = "[[#{groupedit.field_c}]]",
tab = "fields"
)
}
)
private String fieldC = "";
@DataTableColumn(
renderFormat = "dt-format-text",
title = "[[#{groupedit.field_d}]]",
visible = false,
editor = {
@DataTableColumnEditor(
type = "text",
label = "[[#{groupedit.field_d}]]",
tab = "fields"
)
}
)
private String fieldD = "";
@DataTableColumn(
inputType = DataTableColumnType.SELECT,
tab = "menu",
title = "editor.menu_type_menu",
className = "DTE_Field_Has_Checkbox",
sortAfter = "editorFields.forcePriorityRecalculation",
hidden = true,
editor = {
@DataTableColumnEditor(
attr = {
@DataTableColumnEditorAttr(key = "data-dt-field-hr", value = "before"),
@DataTableColumnEditorAttr(key = "data-dt-field-headline", value = "editor.menu_type_notlogged")
}
)
}
)
private int menuType = 1;
@DataTableColumn(
inputType = DataTableColumnType.SELECT,
tab = "menu",
title = "editor.menu_type_navbar",
className = "DTE_Field_Has_Checkbox",
hidden = true
)
private Integer showInNavbar;
@DataTableColumn(
inputType = DataTableColumnType.SELECT,
tab = "menu",
title = "editor.menu_type_site_map",
className = "DTE_Field_Has_Checkbox",
hidden = true
)
private Integer showInSitemap;
@DataTableColumn(
inputType = DataTableColumnType.SELECT,
tab = "menu",
title = "editor.menu_type_menu",
className = "DTE_Field_Has_Checkbox",
hidden = true,
editor = {
@DataTableColumnEditor(
attr = {
@DataTableColumnEditorAttr(key = "data-dt-field-headline", value = "editor.menu_type_logged"),
}
)
}
)
private int loggedMenuType = -1;
@DataTableColumn(
inputType = DataTableColumnType.SELECT,
tab = "menu",
title = "[[#{editor.menu_type_navbar}]]",
className = "DTE_Field_Has_Checkbox",
hidden = true
)
private Integer loggedShowInNavbar;
@DataTableColumn(
inputType = DataTableColumnType.SELECT,
tab = "menu",
title = "[[#{editor.menu_type_site_map}]]",
className = "DTE_Field_Has_Checkbox",
hidden = true
)
private Integer loggedShowInSitemap;
private String passwordProtected;
private int parentGroupId = 0;
private String navbar = "";
@DataTableColumn(
inputType = DataTableColumnType.TEXT,
title = "sync.path",
hiddenEditor = true,
visible = false
)
private String fullPath;
public static final int MENU_TYPE_HIDDEN = 0;
public static final int MENU_TYPE_NORMAL = 1;
public static final int MENU_TYPE_ONLYDEFAULT = 2;
public static final int MENU_TYPE_NOSUB = 3;
private int syncId;
private int syncStatus;
private int logonPageDocId;
private String installName = null;
private int linkGroupId;
private boolean hiddenInAdmin = false;
@DataTableColumnNested
private GroupEditorField editorFields = null;
public GroupDetails()
{
//empty constructor
}
/**
* Konstruktor z cesty, napr. /Jet portal 4/Úvodná stránka
* Pouziva sa pri importe a inych operaciach kde dostaneme cestu k adresaru
* @param path
*/
public GroupDetails(String path)
{
this(GroupsDB.getInstance().getCreateGroup(path));
}
/**
* skopiruje do seba skupinu copyFrom
* @param copyFrom
*/
public GroupDetails(GroupDetails copyFrom)
{
try
{
if (copyFrom != null) BeanUtils.copyProperties(this, copyFrom);
}
catch (Exception ex)
{
Logger.error(GroupDetails.class, ex);
}
}
public boolean isAvailableForUser(Identity user)
{
if (Tools.isEmpty(getPasswordProtected()))
{
return(true);
}
if (user == null) return(false);
StringTokenizer st = new StringTokenizer(getPasswordProtected(), ",");
int id;
while (st.hasMoreTokens())
{
id = Tools.getIntValue(st.nextToken(), -1);
if (id > 0 && user.isInUserGroup(id))
{
return(true);
}
}
return(false);
}
public boolean isAvailableForUserGroup(int userGroupId)
{
if (Tools.isEmpty(getPasswordProtected()))
{
return(true);
}
StringTokenizer st = new StringTokenizer(getPasswordProtected(), ",");
int id;
while (st.hasMoreTokens())
{
id = Tools.getIntValue(st.nextToken(), -1);
if (id == userGroupId)
{
return(true);
}
}
return(false);
}
/**
* Gets the groupId attribute of the GroupDetails object
*
*@return The groupId value
*/
public int getGroupId()
{
return groupId;
}
/**
* Sets the groupId attribute of the GroupDetails object
*
*@param newGroupId The new groupId value
*/
public void setGroupId(int newGroupId)
{
groupId = newGroupId;
}
/**
* Nastavenie ID podla long hodnoty, potrebne pre DT/duplikovanie
* @param id
*/
public void setGroupId(Long id)
{
if (id == null) groupId = -1;
else groupId = (int)id.longValue();
}
/**
* Sets the groupName attribute of the GroupDetails object
*
*@param newGroupName The new groupName value
*/
public void setGroupName(String newGroupName)
{
groupName = GroupsDB.sanitizeGroupName(newGroupName, false);
}
/**
* Gets the groupName attribute of the GroupDetails object
*
*@return The groupName value
*/
public String getGroupName()
{
if (groupName==null) groupName = "";
return groupName;
}
/**
* Gets the groupNameShort attribute of the GroupDetails object
*
*@return The groupNameShort value
*/
public String getGroupNameShort()
{
String ret = getGroupNameJS();
if (parentGroupId!=0 && groupName.length() > 200)
{
//skracujeme len podadresare, nie parent!
ret = ret.substring(0, 200) + "...";
}
if (defaultDocId>0 || navbar.indexOf("<a")!=-1)
{
return(ret);
}
return("!"+ret);
}
public String getGroupNameShortNoJS()
{
String ret = getGroupName();
if (parentGroupId!=0 && groupName.length() > 200)
{
//skracujeme len podadresare, nie parent!
ret = ret.substring(0, 19) + "...";
}
if (defaultDocId>0 || navbar.indexOf("<a")!=-1)
{
return(ret);
}
return("!"+ret);
}
public String getGroupNameJS()
{
return(JSEscapeTag.jsEscape(groupName));
}
/**
* Vrati string s ID aj Menom grupy, prvych 15 znakov je ID, potom je meno
*
*@return The groupIdName value
*/
public String getGroupIdName()
{
String ret = groupId + " ";
ret = ret.substring(0, 15) + fullPath;
if (ret.indexOf('\'')!=-1)
{
ret = Tools.replace(ret, "'", " ");
}
if (ret.indexOf('\"')!=-1)
{
ret = Tools.replace(ret, "\"", " ");
}
return (ret);
}
/**
* Sets the internal attribute of the GroupDetails object
*
*@param newInternal The new internal value
*/
public void setInternal(boolean newInternal)
{
internal = newInternal;
}
/**
* Gets the internal attribute of the GroupDetails object
*
*@return The internal value
*/
public boolean isInternal()
{
return internal;
}
/**
* Sets the parentGroupId attribute of the GroupDetails object
*
*@param newParentGroupId The new parentGroupId value
*/
public void setParentGroupId(int newParentGroupId)
{
parentGroupId = newParentGroupId;
}
/**
* Gets the parentGroupId attribute of the GroupDetails object
*
*@return The parentGroupId value
*/
public int getParentGroupId()
{
return parentGroupId;
}
/**
* Sets the navbar attribute of the GroupDetails object
*
*@param navbar The new navbar value
*/
public void setNavbar(String navbar)
{
this.navbarName = navbar;
this.navbar = navbar;
}
/**
* Gets the navbar attribute of the GroupDetails object
*
*@return The navbar value
*/
public String getNavbar()
{
if (navbar == null || navbar.length()<1)
{
navbar = getGroupName();
}
if (defaultDocId > 0 && navbar.length() > 1 && (navbar.indexOf("<a") < 0 || navbar.toLowerCase().indexOf("<aparam") >= 0))
{
DocDB docDB = DocDB.getInstance();
//odstrani <aparam>
String text = navbar.replaceAll("(?i)<aparam.*>","");
return("<a href='"+docDB.getDocLink(defaultDocId)+"'>" + text + "</a>");
}
else
{
return(navbar);
}
}
/**
* Gets the navbarName attribute of the GroupDetails object
*
*@return The navbarName value
*/
public String getNavbarName()
{
if (Tools.isNotEmpty(navbarName))
{
//Logger.println(this,"navbarname="+navbarName);
return (navbarName);
}
//Logger.println(this,"groupName="+groupName);
return groupName;
}
public void setNavbarName(String navbarName)
{
this.navbarName = navbarName;
}
/**
* Vrati navbarName bez APARAM atributu (al je zadane)
* @return
*/
public String getNavbarNameNoAparam()
{
String name = getNavbarName();
return name.replaceAll("(?i)<aparam.*>","");
}
/**
* Sets the defaultDocId attribute of the GroupDetails object
*
*@param newDefaultDocId The new defaultDocId value
*/
public void setDefaultDocId(int newDefaultDocId)
{
defaultDocId = newDefaultDocId;
//set navbar
if (defaultDocId > 0 && navbar != null && navbar.length() > 1 && navbar.indexOf("<a") < 0)
{
DocDB docDB = DocDB.getInstance();
navbar = "<a href='" + docDB.getDocLink(defaultDocId) + "'>" + navbar + "</a>";
}
}
/**
* Toto potrebujem na skonstruovanie DocDB (aby sa mi nevolala rekurzivne getInstance())
* @param defaultDocId
*/
public void setDefaultDocIdNoNavbar(int defaultDocId)
{
this.defaultDocId = defaultDocId;
}
/**
* Gets the defaultDocId attribute of the GroupDetails object
*
*@return The defaultDocId value
*/
public int getDefaultDocId()
{
return defaultDocId;
}
/**
* Vrati objekt hlavna stranka adresara
* @return
*/
@JsonIgnore
public DocDetails getDefaultDoc() {
return DocDB.getInstance().getDoc(defaultDocId);
}
/**
* Vrati virtualnu cestu defaultnej stranky adresara
* @return
*/
public String getVirtualPath()
{
return DocDB.getInstance().getDocLink(defaultDocId);
}
/**
* Sets the tempId attribute of the GroupDetails object
*
*@param newTempId The new tempId value
*/
public void setTempId(int newTempId)
{
tempId = newTempId;
}
/**
* Gets the tempId attribute of the GroupDetails object
*
*@return The tempId value
*/
public int getTempId()
{
return tempId;
}
/**
* Cela cesta ku grupe, napr. /iwcm/produkty/hlasove
*
*@param fullPath The new fullPath value
*/
public void setFullPath(String fullPath)
{
this.fullPath = fullPath;
}
/**
* Gets the fullPath attribute of the GroupDetails object
*
*@return The fullPath value
*/
public String getFullPath()
{
return fullPath;
}
public String getParentFullPath()
{
if (fullPath == null) {
return null;
}
int i = fullPath.lastIndexOf('/');
if (i > 0)
{
return(fullPath.substring(0, i));
}
if (i == 0 && fullPath.length()>1) return("/");
return(null);
}
/**
* Sets the sortPriority attribute of the GroupDetails object
*
*@param sortPriority The new sortPriority value
*/
public void setSortPriority(int sortPriority)
{
this.sortPriority = sortPriority;
}
/**
* Gets the sortPriority attribute of the GroupDetails object
*
*@return The sortPriority value
*/
public int getSortPriority()
{
return sortPriority;
}
/**
* Sets the passwordProtected attribute of the GroupDetails object
*
*@param passwordProtected The new passwordProtected value
*/
public void setPasswordProtected(String passwordProtected)
{
if (Tools.isEmpty(passwordProtected) || ",".equals(passwordProtected))
{
this.passwordProtected = null;
}
else this.passwordProtected = passwordProtected;
}
/**
* Prida adresar do zadanej skupiny pouzivatelov (s overenim, ci tam uz nie je)
* @param userGroupId
*/
public void addToUserGroup(int userGroupId)
{
String ret = getPasswordProtected();
if(!isAvailableForUserGroup(userGroupId)) {
ret += ","+userGroupId;
} else if (Tools.isEmpty(ret)) {
// bugfix v pripade ak adresar nema ziadne pouzivatelske skupiny predchadzajuci if bude vzdy false
ret = ret + "," + userGroupId;
}
if(ret.startsWith(",")) ret = ret.substring(1);
setPasswordProtected(ret);
}
/**
* Gets the passwordProtected attribute of the GroupDetails object
*
*@return The passwordProtected value
*/
public String getPasswordProtected()
{
return passwordProtected;
}
public String getUrlDirName()
{
if (urlDirName == null || urlDirName.length()<1)
{
urlDirName = getNavbarNameNoAparam();
urlDirName = DB.internationalToEnglish(urlDirName).toLowerCase();
urlDirName = DocTools.removeCharsDir(urlDirName, true).toLowerCase();
if ("slovensky".equals(urlDirName)) {
urlDirName = "sk";
sortPriority = 10;
}
else if ("cesky".equals(urlDirName)) {
urlDirName = "cz";
sortPriority = 20;
}
else if ("english".equals(urlDirName)) {
urlDirName = "en";
sortPriority = 30;
}
else if ("deutsch".equals(urlDirName)) {
urlDirName = "de";
sortPriority = 40;
}
}
return urlDirName;
}
public void setUrlDirName(String urlDirName)
{
this.urlDirName = urlDirName;
}
/**
* @return Returns the syncId.
*/
public int getSyncId()
{
return syncId;
}
/**
* @param syncId The syncId to set.
*/
public void setSyncId(int syncId)
{
this.syncId = syncId;
}
/**
* @return Returns the syncStatus.
*/
public int getSyncStatus()
{
return syncStatus;
}
/**
* @param syncStatus The syncStatus to set.
*/
public void setSyncStatus(int syncStatus)
{
this.syncStatus = syncStatus;
}
/**
* @return Returns the htmlHead.
*/
public String getHtmlHead()
{
return htmlHead;
}
/**
* @param htmlHead The htmlHead to set.
*/
public void setHtmlHead(String htmlHead)
{
this.htmlHead = htmlHead;
}
/**
* @return Returns the logonPageDocId.
*/
public int getLogonPageDocId()
{
return logonPageDocId;
}
/**
* @param logonPageDocId The logonPageDocId to set.
*/
public void setLogonPageDocId(int logonPageDocId)
{
this.logonPageDocId = logonPageDocId;
}
public String getDomainName()
{
return domainName;
}
public void setDomainName(String domainName)
{
//domainName should be always lowercase
if (domainName != null) domainName = domainName.toLowerCase();
this.domainName = domainName;
}
public String getFieldA()
{
return fieldA;
}
public void setFieldA(String fieldA)
{
this.fieldA = fieldA;
}
public String getFieldB()
{
return fieldB;
}
public void setFieldB(String fieldB)
{
this.fieldB = fieldB;
}
public String getFieldC()
{
return fieldC;
}
public void setFieldC(String fieldC)
{
this.fieldC = fieldC;
}
public String getFieldD()
{
return fieldD;
}
public void setFieldD(String fieldD)
{
this.fieldD = fieldD;
}
public String getInstallName()
{
return installName;
}
public void setInstallName(String installName)
{
this.installName = installName;
}
public int getNewPageDocIdTemplate()
{
return newPageDocIdTemplate;
}
public void setNewPageDocIdTemplate(int newPageDocIdTemplate)
{
this.newPageDocIdTemplate = newPageDocIdTemplate;
}
public int getLinkGroupId()
{
return linkGroupId;
}
public void setLinkGroupId(int linkGroupId)
{
this.linkGroupId = linkGroupId;
}
public String getLng()
{
return lng;
}
public void setLng(String lng)
{
this.lng = lng;
}
public boolean isHiddenInAdmin()
{
return hiddenInAdmin;
}
public void setHiddenInAdmin(boolean hiddenInAdmin)
{
this.hiddenInAdmin = hiddenInAdmin;
}
@JsonIgnore
public List<DocDetails> getDocuments()
{
return DocDB.getInstance().getDocByGroup(groupId);
}
public static GroupDetails getById(int id)
{
return GroupsDB.getInstance().getGroup(id);
}
@Override
public Object clone() throws CloneNotSupportedException
{
return super.clone();
}
@Override
public String toString()
{
return fullPath+", ID => "+getGroupId();
}
public boolean isForceTheUseOfGroupTemplate() {
return forceTheUseOfGroupTemplate;
}
public void setForceTheUseOfGroupTemplate(boolean forceTheUseOfGroupTemplate) {
this.forceTheUseOfGroupTemplate = forceTheUseOfGroupTemplate;
}
public GroupEditorField getEditorFields() {
return editorFields;
}
public void setEditorFields(GroupEditorField editorFields) {
this.editorFields = editorFields;
}
// ** Pridane atributy do DB ** // ticket 54205
//Not logged user
public int getMenuType() {
return menuType;
}
public void setMenuType(int menuType) {
this.menuType = menuType;
}
public Integer getShowInNavbar() {
return showInNavbar;
}
public void setShowInNavbar(Integer showInNavbar) {
this.showInNavbar = showInNavbar;
}
public Integer getShowInSitemap() {
return showInSitemap;
}
public void setShowInSitemap(Integer showInSitemap) {
this.showInSitemap = showInSitemap;
}
//Logged user
public int getLoggedMenuType() {
return loggedMenuType;
}
public void setLoggedMenuType(int loggedMenuType) {
this.loggedMenuType = loggedMenuType;
}
public Integer getLoggedShowInNavbar() {
return loggedShowInNavbar;
}
public void setLoggedShowInNavbar(Integer loggedShowInNavbar) {
this.loggedShowInNavbar = loggedShowInNavbar;
}
public Integer getLoggedShowInSitemap() {
return loggedShowInSitemap;
}
public void setLoggedShowInSitemap(Integer loggedShowInSitemap) {
this.loggedShowInSitemap = loggedShowInSitemap;
}
/**
* Vrati sposob zobrazenia (GroupDetails.MENU_TYPE_XXX) v navigacnom menu (automaticky detekuje, ci je prihlaseny pouzivatel, alebo nie)
* @param session
* @return
*/
public int getMenuType(HttpSession session) {
if (session != null && session.getAttribute("menuDisabledGroup"+getGroupId())!=null) return GroupDetails.MENU_TYPE_HIDDEN;
if (loggedMenuType < 0 || session == null) return(menuType);
Identity user = (Identity)session.getAttribute(Constants.USER_KEY);
if (user == null) return(menuType);
//skontroluj, ci je user v niektorej z tychto skupin
if (isAvailableForUser(user))
{
//Logger.debug(GroupDetails.class, this.getGroupIdName()+" logged:"+loggedMenuType);
return(loggedMenuType);
}
//Logger.debug(GroupDetails.class, this.getGroupIdName()+" final return:"+menuType);
return(menuType);
}
/**
* Vrati sposob zobrazenia (GroupDetails.MENU_TYPE_XXX) navigacnej listy (automaticky detekuje, ci je prihlaseny pouzivatel, alebo nie)
* @param session
* @return
*/
public int getShowInNavbar(HttpSession session) {
Identity user = UsersDB.getCurrentUser(session);
//Not logged
if(user == null || loggedShowInNavbar == null) {
//0 - same as menu
if(showInNavbar == null) return getMenuType(session);
return showInNavbar.intValue();
}
return loggedShowInNavbar.intValue();
}
/**
* Vrati sposob zobrazenia (GroupDetails.MENU_TYPE_XXX) v mape stranok (automaticky detekuje, ci je prihlaseny pouzivatel, alebo nie)
* @param request
* @return
*/
public int getShowInSitemap(HttpServletRequest request) {
if (request != null) return getShowInSitemap(request.getSession());
return getShowInSitemap((HttpSession)null);
}
/**
* Vrati sposob zobrazenia (GroupDetails.MENU_TYPE_XXX) v mape stranok (automaticky detekuje, ci je prihlaseny pouzivatel, alebo nie)
* @param session
* @return
*/
public int getShowInSitemap(HttpSession session) {
Identity user = UsersDB.getCurrentUser(session);
//Not logged
if(user == null || loggedShowInSitemap == null) {
//0 - same as menu
if(showInSitemap == null) return getMenuType(session);
return showInSitemap.intValue();
}
return loggedShowInSitemap.intValue();
}
}