📄 wmenu.java
字号:
+ " AND o.AD_Org_ID=?" // #3
+ " AND ur.AD_Role_ID=?" // #4
+ " AND ur.AD_User_ID=u.AD_User_ID"
+ " AND (o.AD_Client_ID = 0 OR o.AD_Client_ID=c.AD_Client_ID)"
+ " AND c.AD_Client_ID IN (SELECT AD_Client_ID FROM AD_Role_OrgAccess ca WHERE ca.AD_Role_ID=ur.AD_Role_ID)"
+ " AND o.AD_Org_ID IN (SELECT AD_Org_ID FROM AD_Role_OrgAccess ca WHERE ca.AD_Role_ID=ur.AD_Role_ID)";
try
{
PreparedStatement pstmt = DB.prepareStatement(sql, null);
pstmt.setInt(1, AD_User_ID);
pstmt.setInt(2, AD_Client_ID);
pstmt.setInt(3, AD_Org_ID);
pstmt.setInt(4, AD_Role_ID);
ResultSet rs = pstmt.executeQuery();
if (rs.next())
loginInfo = rs.getString(1);
rs.close();
pstmt.close();
}
catch (SQLException e)
{
log.log(Level.SEVERE, sql, e);
}
// not verified
if (loginInfo == null)
return null;
// Set Preferences
KeyNamePair org = new KeyNamePair(AD_Org_ID, String.valueOf(AD_Org_ID));
KeyNamePair wh = null;
if (M_Warehouse_ID > 0)
wh = new KeyNamePair(M_Warehouse_ID, String.valueOf(M_Warehouse_ID));
//
Timestamp date = null;
String printer = null;
Login login = new Login(ctx);
login.loadPreferences(org, wh, date, printer);
// Don't Show Acct/Trl Tabs on HTML UI
Env.setContext(ctx, "#ShowAcct", "N");
Env.setContext(ctx, "#ShowTrl", "N");
//
return loginInfo;
} // checkLogin
/**
* Create Menu Page
* @param request request
* @param wsc context
* @param AD_Role_ID role
* @return document
*/
private WebDoc createPage (HttpServletRequest request,
WebSessionCtx wsc, int AD_Role_ID)
{
// Document
String windowTitle = Msg.getMsg(wsc.ctx, "Menu");
WebDoc doc = WebDoc.create (windowTitle);
head head = doc.getHead();
// Target
head.addElement(new base().setTarget(WebEnv.TARGET_WINDOW));
// Specific Menu Script/Stylesheet
head.addElement(new link(WebEnv.getBaseDirectory("menu.css"), link.REL_STYLESHEET, link.TYPE_CSS));
head.addElement(new script((Element)null, WebEnv.getBaseDirectory("menu.js")));
// Scripts
String statusMessage = Msg.getMsg(wsc.ctx, "SelectMenuItem");
String scriptTxt = "top.document.title='" + windowTitle + " - " + wsc.loginInfo + "'; "
+ "var defaultStatus='" + statusMessage + "';";
head.addElement(new script(scriptTxt));
// Body
body body = doc.getBody();
body.setTitle(statusMessage);
// Clear Window Frame
body.addElement(WebUtil.getClearFrame(WebEnv.TARGET_WINDOW));
// Header
table table = doc.getTable();
doc.setClasses ("menuTable", "menuHeader");
doc.getTopLeft().addElement(new cite(wsc.loginInfo));
// Load Menu Structure ----------------------
int AD_Tree_ID = DB.getSQLValue(null,
"SELECT COALESCE(r.AD_Tree_Menu_ID, ci.AD_Tree_Menu_ID)"
+ "FROM AD_ClientInfo ci"
+ " INNER JOIN AD_Role r ON (ci.AD_Client_ID=r.AD_Client_ID) "
+ "WHERE AD_Role_ID=?", AD_Role_ID);
if (AD_Tree_ID <= 0)
AD_Tree_ID = 10; // Menu
log.fine("doPost - AD_Tree_ID=" + AD_Tree_ID + " - " + Env.getAD_Language(wsc.ctx));
MTree tree = new MTree (wsc.ctx, AD_Tree_ID, false, false, null); // Language set in WLogin
// Trim tree
MTreeNode root = tree.getRoot();
Enumeration en = root.preorderEnumeration();
while (en.hasMoreElements())
{
MTreeNode nd = (MTreeNode)en.nextElement();
if (nd.isTask()
|| nd.isWorkbench()
|| nd.isWorkFlow()
|| nd.getNode_ID() == 383 // Reset Cache - kills the server
)
{
MTreeNode parent = (MTreeNode)nd.getParent();
parent.remove(nd);
}
}
tree.trimTree();
// Print tree
StringBuffer buf = new StringBuffer();
en = root.preorderEnumeration();
int oldLevel = 0;
while (en.hasMoreElements())
{
MTreeNode nd = (MTreeNode)en.nextElement();
// Level
int level = nd.getLevel(); // 0 == root
if (level == 0)
continue;
//
while (oldLevel < level)
{
if (level == 1)
buf.append("<ul id=\"main\">\n"); // start first level
else
buf.append("<ul style=\"display:none\">\n");// start next level
oldLevel++;
}
while (oldLevel > level)
{
oldLevel--;
if (oldLevel == 1)
buf.append("</ul>\n"); // finish last level
else
buf.append("</ul></li>\n"); // finish next level
}
// Print Node
buf.append(printNode(nd, wsc.ctx));
}
// Final
while (oldLevel > 0)
{
oldLevel--;
if (oldLevel == 1)
buf.append("</ul>\n"); // finish last level
else
buf.append("</ul></li>\n"); // finish next level
}
td td = new td().setColSpan(2).setNoWrap(true);
td.setClass("menuCenter");
td.addElement(buf.toString());
table.addElement(new tr().addElement(td));
// Exit Info
td = new td().setColSpan(2);
td.setClass("menuFooter");
String url = request.getRequestURI() + "?Exit=true";
td.addElement(new a(url, Msg.getMsg(wsc.ctx, "Exit")));
table.addElement(new tr().addElement(td));
//
// System.out.println(doc);
return doc;
} // createPage
/**
* Print Menu Item
* @param node node
*/
private StringBuffer printNode (MTreeNode node, Properties ctx)
{
StringBuffer sb = new StringBuffer();
// Leaf
if (!node.isSummary())
{
/**
* <li id="menuXXXXX"><a href="...." onMouseOver="status='Menu Description';return true;">Menu Entry</a></li>
*/
String cssClassName = "";
String servletName = "";
if (node.isWindow())
{
cssClassName = "menuWindow";
servletName = "WWindow";
}
else if (node.isForm())
{
cssClassName = "menuWindow";
servletName = "WForm";
}
else if (node.isReport())
{
cssClassName = "menuReport";
servletName = "WProcess";
}
else if (node.isProcess())
{
cssClassName = "menuProcess";
servletName = "WProcess";
}
else if (node.isWorkFlow())
{
cssClassName = "menuWorkflow";
servletName = "WWorkflow";
}
else if (node.isTask())
{
cssClassName = "menuProcess";
servletName = "WTask";
}
else
servletName = "WError";
String name = node.getName().replace('\'',' ').replace('"',' ');
String description = node.getDescription().replace('\'',' ').replace('"',' ');
//
sb.append("<li class=\"" + cssClassName
+ "\" id=\"" + node.getNode_ID() // debug
+ "\"><a href=\"");
// Get URL
boolean standardURL = true;
if (node.isForm())
{
MForm form = new MForm (ctx, node.getNode_ID(), null);
if (form.getJSPURL() != null && form.getJSPURL().length() > 0)
{
sb.append(form.getJSPURL());
standardURL = false;
}
}
if (standardURL) // url = /appl/servletName?AD_Menu_ID=x
{
sb.append(WebEnv.getBaseDirectory(servletName))
.append("?AD_Menu_ID=")
.append(node.getNode_ID());
}
// remaining a tag
sb.append("\" onMouseOver=\"status='" + description
+ "';\" onClick=\"showLoadingWindow('" + WebEnv.getBaseDirectory("") + "')\">")
.append(name) // language set in MTree.getNodeDetails based on ctx
.append("</a></li>\n");
}
else
{
/**
* <li class="foldHeader" onClick="changeMenu(this)">MenuEntry
* <ul style="display:none">
* ....
* </ul></li>
*/
String name = node.getName().replace('\'',' ').replace('"',' ');
sb.append("\n<li class=\"menuSummary\""
+ " id=\"" + node.getNode_ID() // debug
+ "\" onClick=\"changeMenu(event);\">") // summary node
.append(name)
.append("\n");
}
return sb;
} // printNode
} // WMenu
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -