IDEMPIERE-1315 Hide/Disable ActiveWorkflow and Personal Lock buttons
This commit is contained in:
parent
97663971b5
commit
716f1d0066
|
@ -56,7 +56,7 @@ public class GridFieldVO implements Serializable
|
|||
public static String getSQL (Properties ctx)
|
||||
{
|
||||
// IsActive is part of View
|
||||
MRole role = MRole.getDefault(ctx, true);
|
||||
MRole role = MRole.getDefault(ctx, false);
|
||||
String advancedFilter=" AND IsAdvancedField='N' ";
|
||||
StringBuilder sql;
|
||||
if (!Env.isBaseLanguage(ctx, "AD_Tab")){
|
||||
|
|
|
@ -370,7 +370,7 @@ public class GridTabVO implements Evaluatee, Serializable
|
|||
+ " AND ce.AD_Field_ID IS NULL "
|
||||
+ " AND ce.ASP_Status = 'H')"; // Hide
|
||||
// View only returns IsActive='Y'
|
||||
MRole role = MRole.getDefault(ctx, true);
|
||||
MRole role = MRole.getDefault(ctx, false);
|
||||
String advancedFilter=" AND IsAdvancedTab='N' ";
|
||||
StringBuilder sql;
|
||||
if (!Env.isBaseLanguage(ctx, "AD_Window")) {
|
||||
|
|
|
@ -61,7 +61,7 @@ public final class MRole extends X_AD_Role
|
|||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -1135628544466487086L;
|
||||
private static final long serialVersionUID = 3608297024439006903L;
|
||||
|
||||
/**
|
||||
* Get Default (Client) Role
|
||||
|
@ -3148,4 +3148,23 @@ public final class MRole extends X_AD_Role
|
|||
return retValue;
|
||||
}
|
||||
|
||||
private Boolean m_canAccess_Info_Product = null;
|
||||
|
||||
public boolean canAccess_Info_Product() {
|
||||
if (m_canAccess_Info_Product == null) {
|
||||
String sql = ""
|
||||
+ "SELECT COUNT(*) "
|
||||
+ "FROM AD_InfoWindow iw "
|
||||
+ " JOIN AD_InfoWindow_Access iwa "
|
||||
+ " ON ( iwa.AD_InfoWindow_ID = iw.AD_InfoWindow_ID ) "
|
||||
+ "WHERE AD_Table_ID = ? "
|
||||
+ " AND iw.IsActive = 'Y' "
|
||||
+ " AND iwa.IsActive = 'Y' "
|
||||
+ " AND iwa.AD_Role_ID = ?";
|
||||
int cnt = DB.getSQLValueEx(null, sql, I_M_Product.Table_ID, getAD_Role_ID());
|
||||
m_canAccess_Info_Product = new Boolean(cnt > 0);
|
||||
}
|
||||
return m_canAccess_Info_Product.booleanValue();
|
||||
}
|
||||
|
||||
} // MRole
|
||||
|
|
|
@ -39,6 +39,7 @@ import org.compiere.model.GridTab;
|
|||
import org.compiere.model.MRole;
|
||||
import org.compiere.model.MToolBarButton;
|
||||
import org.compiere.util.CLogger;
|
||||
import org.compiere.util.DB;
|
||||
import org.compiere.util.Env;
|
||||
import org.compiere.util.Msg;
|
||||
import org.compiere.util.Util;
|
||||
|
@ -70,7 +71,7 @@ public class ADWindowToolbar extends FToolbar implements EventListener<Event>
|
|||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 3390505814516682801L;
|
||||
private static final long serialVersionUID = -367141745573893540L;
|
||||
|
||||
public static final String BTNPREFIX = "Btn";
|
||||
|
||||
|
@ -118,7 +119,7 @@ public class ADWindowToolbar extends FToolbar implements EventListener<Event>
|
|||
// Elaine 2008/12/04
|
||||
/** Show Personal Lock */
|
||||
public boolean isPersonalLock = MRole.getDefault().isPersonalLock();
|
||||
private boolean isAllowProductInfo = MRole.getDefault().isAllow_Info_Product();
|
||||
private boolean isAllowProductInfo = MRole.getDefault().canAccess_Info_Product();
|
||||
|
||||
private int windowNo = 0;
|
||||
|
||||
|
@ -176,13 +177,19 @@ public class ADWindowToolbar extends FToolbar implements EventListener<Event>
|
|||
btnArchive = createButton("Archive", "Archive", "Archive");
|
||||
btnPrint = createButton("Print", "Print", "Print");
|
||||
btnPrint.setTooltiptext(btnPrint.getTooltiptext()+ " Alt+P");
|
||||
btnLock = createButton("Lock", "Lock", "Lock"); // Elaine 2008/12/04
|
||||
btnLock.setVisible(isPersonalLock);
|
||||
if (isPersonalLock) {
|
||||
btnLock = createButton("Lock", "Lock", "Lock"); // Elaine 2008/12/04
|
||||
btnLock.setDisabled(!isPersonalLock); // Elaine 2008/12/04
|
||||
btnLock.setVisible(isPersonalLock);
|
||||
}
|
||||
btnZoomAcross = createButton("ZoomAcross", "ZoomAcross", "ZoomAcross");
|
||||
btnActiveWorkflows = createButton("ActiveWorkflows", "WorkFlow", "WorkFlow");
|
||||
btnRequests = createButton("Requests", "Request", "Request");
|
||||
btnProductInfo = createButton("ProductInfo", "Product", "InfoProduct");
|
||||
btnProductInfo.setVisible(isAllowProductInfo);
|
||||
if (isAllowProductInfo) {
|
||||
btnProductInfo = createButton("ProductInfo", "Product", "InfoProduct");
|
||||
btnProductInfo.setDisabled(!isAllowProductInfo); // Elaine 2008/07/22
|
||||
btnProductInfo.setVisible(isAllowProductInfo);
|
||||
}
|
||||
|
||||
btnCustomize= createButton("Customize", "Customize", "Customize");
|
||||
btnCustomize.setDisabled(false);
|
||||
|
@ -199,9 +206,7 @@ public class ADWindowToolbar extends FToolbar implements EventListener<Event>
|
|||
|
||||
btnActiveWorkflows.setDisabled(false); // Elaine 2008/07/17
|
||||
btnRequests.setDisabled(false); // Elaine 2008/07/22
|
||||
btnProductInfo.setDisabled(!isAllowProductInfo); // Elaine 2008/07/22
|
||||
btnArchive.setDisabled(false); // Elaine 2008/07/28
|
||||
btnLock.setDisabled(!isPersonalLock); // Elaine 2008/12/04
|
||||
|
||||
if (MRole.getDefault().isCanExport())
|
||||
{
|
||||
|
@ -594,9 +599,22 @@ public class ADWindowToolbar extends FToolbar implements EventListener<Event>
|
|||
} // All restrictions
|
||||
|
||||
dynamicDisplay();
|
||||
// If no workflow set for the table => disable btnWorkflow
|
||||
if (!btnActiveWorkflows.isDisabled()) {
|
||||
GridTab gridTab = adwindow.getADWindowContent().getActiveGridTab();
|
||||
if (gridTab != null)
|
||||
btnActiveWorkflows.setDisabled(!hasWorkflow(gridTab));
|
||||
}
|
||||
ToolBarMenuRestictionLoaded = true;
|
||||
}
|
||||
|
||||
/** btnActiveWorkflow should be disabled when table has not workflow defined */
|
||||
boolean hasWorkflow(GridTab gridTab)
|
||||
{
|
||||
String sql = "SELECT COUNT(*) FROM AD_Workflow WHERE IsActive='Y' AND AD_Table_ID=? AND AD_Client_ID IN (0,?)";
|
||||
return (DB.getSQLValueEx(null, sql, gridTab.getAD_Table_ID(), Env.getAD_Client_ID(Env.getCtx())) > 0);
|
||||
}
|
||||
|
||||
private void loadCustomButton(int AD_Window_ID) {
|
||||
MToolBarButton[] mToolbarButtons = MToolBarButton.getOfWindow(AD_Window_ID, null);
|
||||
if (mToolbarButtons != null && mToolbarButtons.length > 0) {
|
||||
|
|
Loading…
Reference in New Issue