From f74a1fcaf414eb1f7c60413396d08e70b98948df Mon Sep 17 00:00:00 2001 From: rob_k Date: Thu, 19 Jul 2007 04:17:32 +0000 Subject: [PATCH] Corrects bug 1748285 and 1738952 in the HTML Client --- base/src/org/compiere/util/WebDoc.java | 5 +- .../servlet/org/compiere/www/WFilter.java | 77 ++++++++++----- .../servlet/org/compiere/www/WLookup.java | 98 +++++++++++++++---- .../servlet/org/compiere/www/WWindow.java | 4 +- .../servlet/org/compiere/www/WebField.java | 4 +- serverApps/src/web/WEB-INF/web.xml | 33 +------ serverApps/src/web/css/window.css | 15 +++ serverApps/src/web/index.html | 1 - serverApps/src/web/js/window.js | 83 ++++++++++------ 9 files changed, 210 insertions(+), 110 deletions(-) diff --git a/base/src/org/compiere/util/WebDoc.java b/base/src/org/compiere/util/WebDoc.java index 5e57039c61..7c3efc8352 100644 --- a/base/src/org/compiere/util/WebDoc.java +++ b/base/src/org/compiere/util/WebDoc.java @@ -64,7 +64,7 @@ public class WebDoc { WebDoc doc = create (title); doc.getHead().addElement(new script((Element)null, "/adempiere/js/window.js")); - doc.getHead().addElement(new script((Element)null, "/adempiere/js/Calendar-setup.js")); + //doc.getHead().addElement(new script((Element)null, "/adempiere/js/Calendar-setup.js")); doc.getHead().addElement(new script((Element)null, "/adempiere/js/calendar.js")); doc.getHead().addElement(new script((Element)null, "/adempiere/js/table.js")); doc.getHead().addElement(new script((Element)null, "/adempiere/lang/calendar-en.js")); @@ -74,6 +74,7 @@ public class WebDoc doc.getHead().addElement(new link("/adempiere/css/calendar-blue.css", link.REL_STYLESHEET, link.TYPE_CSS)); doc.setClasses ("popupTable", "popupHeader"); doc.getTable().setCellSpacing(0); + return doc; } // createPopup @@ -87,7 +88,7 @@ public class WebDoc WebDoc doc = create (title); doc.getHead().addElement(new script((Element)null, "/adempiere/js/window.js")); - doc.getHead().addElement(new script((Element)null, "/adempiere/js/Calendar-setup.js")); + //doc.getHead().addElement(new script((Element)null, "/adempiere/js/Calendar-setup.js")); doc.getHead().addElement(new script((Element)null, "/adempiere/js/calendar.js")); doc.getHead().addElement(new script((Element)null, "/adempiere/js/table.js")); doc.getHead().addElement(new script((Element)null, "/adempiere/lang/calendar-en.js")); diff --git a/serverApps/src/main/servlet/org/compiere/www/WFilter.java b/serverApps/src/main/servlet/org/compiere/www/WFilter.java index 786185b846..84119f575b 100644 --- a/serverApps/src/main/servlet/org/compiere/www/WFilter.java +++ b/serverApps/src/main/servlet/org/compiere/www/WFilter.java @@ -100,11 +100,11 @@ public final class WFilter implements javax.servlet.Filter throws IOException, ServletException { WebSessionCtx wctx = WebSessionCtx.get((HttpServletRequest)request); - if (wctx == null) { - if (m_filterConfig != null) { - String login_page = m_filterConfig.getInitParameter("LoginServlet"); + /**if (wctx == null) { + if (m_filterConfig != null) { + String login_page = m_filterConfig.getInitParameter("LoginServlet"); if (login_page != null && !"".equals(login_page)) { - m_filterConfig.getServletContext().getRequestDispatcher(login_page).forward(request, response); + m_filterConfig.getServletContext().getRequestDispatcher("/WLogin").forward(request, response); return; } } @@ -113,15 +113,22 @@ public final class WFilter implements javax.servlet.Filter String sessionID = wctx.ctx.getProperty("#AD_Session_ID"); if (sessionID == null) { - if (m_filterConfig != null) { + if (m_filterConfig != null) { String login_page = m_filterConfig.getInitParameter("LoginServlet"); if (login_page != null && !"".equals(login_page)) { - m_filterConfig.getServletContext().getRequestDispatcher(login_page).forward(request, response); - return; + RequestDispatcher rd=request.getRequestDispatcher("/WLogin"); + rd.forward(request, response); + return; } } throw new ServletException("Unauthorized access, unable to forward to login page"); - } + } **/ + + String sessionID = wctx.ctx.getProperty("#AD_Session_ID"); + + if (sessionID == null) { + //log.info("Still no session id"); + } // Get URI String uri = ""; @@ -130,16 +137,39 @@ public final class WFilter implements javax.servlet.Filter HttpServletRequest req = (HttpServletRequest)request; uri = req.getRequestURI(); } - + + + boolean pass = true; // Ignore static content boolean check = true; - if (!uri.startsWith(WebEnv.DIR_BASE) // not requesting /adempiere/... + if (sessionID == null) + if(uri.endsWith("index.html") + || uri.endsWith("cmd.html") + || uri.endsWith("menu.html") + || uri.endsWith("menu.js") + || uri.endsWith("window.html") + || uri.endsWith("Logo.gif") + || uri.endsWith("standard.js") + || uri.endsWith("standard.css") + || uri.endsWith("calendar-blue.css") + || uri.endsWith("table.css") + || uri.endsWith("table.js") + || uri.endsWith("calendar.js") + //|| uri.endsWith("calendar-setup.js") + || uri.endsWith("calendar-en.js") + || uri.endsWith("window.css") + || uri.endsWith("window.js") + || uri.endsWith("WLogin")) + ; + else + pass = false; + else if (!uri.startsWith(WebEnv.DIR_BASE) // not requesting /adempiere/... || uri.endsWith(".gif") || uri.endsWith(".jpg") || uri.endsWith(".png") || uri.endsWith(".html") || uri.endsWith(".css") || uri.endsWith(".js")) - check = false; - // - boolean pass = true; + check = false; + else + ; // We need to check StringBuffer sb = new StringBuffer ("| Parameters"); @@ -178,17 +208,19 @@ public final class WFilter implements javax.servlet.Filter chain.doFilter(request, response); else { - log.warning("Rejected " + uri); - String msg = "Error: Access Rejected"; - WebDoc doc = WebDoc.create (msg); + //log.warning("Rejected " + uri); + //String msg = "Error: Access Rejected"; + //WebDoc doc = WebDoc.create (msg); // Body - body b = doc.getBody(); - b.addElement(new p(uri, AlignType.CENTER)); + //body b = doc.getBody(); + //b.addElement(new p(uri, AlignType.CENTER)); // fini - response.setContentType("text/html"); - PrintWriter out = new PrintWriter (response.getOutputStream()); - doc.output(out); - out.close(); + //response.setContentType("text/html"); + //PrintWriter out = new PrintWriter (response.getOutputStream()); + //doc.output(out); + //out.close(); + RequestDispatcher rd=request.getRequestDispatcher("/index.html"); + rd.forward(request, response); } // Post @@ -198,6 +230,7 @@ public final class WFilter implements javax.servlet.Filter myTime = System.currentTimeMillis() - myTime; log.info("End " + uri + "| " + (m_timing ? String.valueOf(myTime) : null)); } + } // doFilter diff --git a/serverApps/src/main/servlet/org/compiere/www/WLookup.java b/serverApps/src/main/servlet/org/compiere/www/WLookup.java index 1566d197a2..3b339cf053 100644 --- a/serverApps/src/main/servlet/org/compiere/www/WLookup.java +++ b/serverApps/src/main/servlet/org/compiere/www/WLookup.java @@ -57,6 +57,7 @@ public class WLookup extends HttpServlet /** The Data List */ protected volatile ArrayList p_data = new ArrayList(); + private static final int MAX_LINES = 5; private StringBuffer HeaderSelect = null; @@ -99,11 +100,15 @@ public class WLookup extends HttpServlet } // Get Mandatory Parameters - String columnName = WebUtil.getParameter (request, "ColumnName"); - + String columnName = WebUtil.getParameter (request, "ColumnName"); //Lookup called from a process //Modified by Rob Klein 4/29/07 - int AD_Process_ID = WebUtil.getParameterAsInt(request, "AD_Process_ID"); + int AD_Process_ID = WebUtil.getParameterAsInt(request, "AD_Process_ID"); + //Lookup modified to include paging + //Modified by Rob Klein 07/07/07 + int page = WebUtil.getParameterAsInt(request, "page"); + log.info("This is the page on original call"+page); + if (AD_Process_ID > 0) { @@ -145,14 +150,38 @@ public class WLookup extends HttpServlet String script = targetBase + "F.value='';" + targetBase + "D.value='';closePopup();"; button.setOnClick(script); // +// Next Page + String textbtn = "Next Page"; + if (wsc.ctx != null) + text = Msg.getMsg (wsc.ctx, "Next Page"); + input nextpgbtn = new input(input.TYPE_BUTTON, textbtn, " "+text); + int nextpage = (page+1); + nextpgbtn.setOnClick("startLookup('" + columnName + "', "+AD_Process_ID+", "+nextpage+");return false;"); + nextpgbtn.setID(text); + nextpgbtn.setClass("nextpgbtn"); + + //Previous Page + textbtn = "Prior Page"; + if (wsc.ctx != null) + text = Msg.getMsg (wsc.ctx, "Prior Page"); + input prevpgbtn = new input(input.TYPE_BUTTON, textbtn, " "+text); + int prevpage = (page == 1) ? 1 : page-1; + prevpgbtn.setOnClick("startLookup('" + columnName + "', "+AD_Process_ID+", "+prevpage+");return false;"); + prevpgbtn.setID(text); + prevpgbtn.setClass("prevpgbtn"); doc.getTable().addElement(new tr() - .addElement(fillTable(wsc, para.getColumnName(), para.getAD_Reference_Value_ID(), request.getRequestURI(),targetBase,false)) + .addElement(fillTable(wsc, para.getColumnName(), para.getAD_Reference_Value_ID(), request.getRequestURI(),targetBase,false, page)) + .addElement(nextpgbtn) + .addElement(prevpgbtn) .addElement(button)); - // + + + doc.addPopupClose(wsc.ctx); - // log.trace(log.l6_Database, doc.toString()); - WebUtil.createResponse (request, response, this, null, doc, false); + + WebUtil.createResponse (request, response, this, null, doc, false); + } //Lookup called from a window else{ @@ -184,7 +213,6 @@ public class WLookup extends HttpServlet boolean hasCallout = mField.getCallout().length() > 0; // Reset -// Reset String text = "Reset"; if (wsc.ctx != null) text = Msg.getMsg (wsc.ctx, "Reset"); @@ -196,14 +224,36 @@ public class WLookup extends HttpServlet if (hasDependents || hasCallout) script += "startUpdate(" + targetBase + "F);"; restbtn.setOnClick(script); - // + + //Next Page + String textbtn = "Next Page"; + if (wsc.ctx != null) + text = Msg.getMsg (wsc.ctx, "Next Page"); + input nextpgbtn = new input(input.TYPE_BUTTON, textbtn, " "+text); + int nextpage = (page+1); + nextpgbtn.setOnClick("startLookup('" + columnName + "', "+AD_Process_ID+", "+nextpage+");return false;"); + nextpgbtn.setID(text); + nextpgbtn.setClass("nextpgbtn"); + + //Previous Page + textbtn = "Prior Page"; + if (wsc.ctx != null) + text = Msg.getMsg (wsc.ctx, "Prior Page"); + input prevpgbtn = new input(input.TYPE_BUTTON, textbtn, " "+text); + int prevpage = (page == 1) ? 1 : page-1; + prevpgbtn.setOnClick("startLookup('" + columnName + "', "+AD_Process_ID+", "+prevpage+");return false;"); + prevpgbtn.setID(text); + prevpgbtn.setClass("prevpgbtn"); + doc.getTable().addElement(new tr() - .addElement(fillTable(wsc, mField.getColumnName(), mField.getAD_Reference_Value_ID(), request.getRequestURI(),targetBase, hasDependents || hasCallout)) - .addElement(restbtn)); - // + .addElement(fillTable(wsc, mField.getColumnName(), mField.getAD_Reference_Value_ID(), request.getRequestURI(),targetBase, hasDependents || hasCallout, page)) + .addElement(nextpgbtn) + .addElement(prevpgbtn)); + //.addElement(restbtn)); + doc.addPopupClose(ws.ctx); - // log.trace(log.l6_Database, doc.toString()); + WebUtil.createResponse (request, response, this, null, doc, false); } } // doGet @@ -234,7 +284,7 @@ public class WLookup extends HttpServlet * @return Table with selection */ private table fillTable (WebSessionCtx wsc, String columnName, int fieldRefId, - String action,String targetBase, boolean addStart) + String action,String targetBase, boolean addStart, int page) { /** if (mField.getColumnName().equals("C_BPartner_ID")) @@ -263,7 +313,7 @@ public class WLookup extends HttpServlet table.addElement(""); // Fillout rows - table = fillTable_Lookup_Rows(wsc, columnName, fieldRefId, table, targetBase, true, true, true, false); + table = fillTable_Lookup_Rows(wsc, columnName, fieldRefId, table, targetBase, true, true, true, false, page); table.addElement(""); // Restore @@ -281,7 +331,7 @@ public class WLookup extends HttpServlet */ private table fillTable_Lookup_Rows (WebSessionCtx wsc, String columnName, int fieldRefId, table table1, String targetBase, boolean mandatory, boolean onlyValidated, boolean onlyActive, - boolean temporary) + boolean temporary, int page) { ArrayList list = new ArrayList(); StringBuffer sqlSelect = null; @@ -391,12 +441,19 @@ public class WLookup extends HttpServlet } try - { - PreparedStatement pstmt = DB.prepareStatement(sqlSelect.toString(), null); - pstmt.setInt(1, Env.getAD_Client_ID(wsc.ctx)); + { + + PreparedStatement pstmt = DB.prepareStatement(sqlSelect.toString(), + ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY, null); + + pstmt.setInt(1, Env.getAD_Client_ID(wsc.ctx)); ResultSet rs = pstmt.executeQuery(); + log.info("This is the page number "+page); + log.info("This is the MAX_LINES "+MAX_LINES); + rs.absolute(((page-1)*MAX_LINES)+1); - while (rs.next()){ + for (int j= 1; j<= MAX_LINES; j++){ + if(rs.next()){ StringBuffer name = new StringBuffer (""); for (int i = 2; i <= size; i++) { @@ -443,6 +500,7 @@ public class WLookup extends HttpServlet } table1.addElement(line); } + } rs.close(); pstmt.close(); diff --git a/serverApps/src/main/servlet/org/compiere/www/WWindow.java b/serverApps/src/main/servlet/org/compiere/www/WWindow.java index 94148317f8..948730c6c3 100644 --- a/serverApps/src/main/servlet/org/compiere/www/WWindow.java +++ b/serverApps/src/main/servlet/org/compiere/www/WWindow.java @@ -80,6 +80,7 @@ public class WWindow extends HttpServlet protected static final String FORM_NAME = "WForm"; //Modified by Rob Klein 4/29/07 + protected static String sectionNameOld = null; /** Hidden Parameter Command - Button */ @@ -902,8 +903,7 @@ public class WWindow extends HttpServlet table.setCellSpacing(1); tr line = new tr(); // First Column - //Modified by Rob Klein 4/29/07 - //line.addElement(new th().addElement(" ")); + //Modified by Rob Klein 4/29/07 line.addElement(new th().addElement(" ")); // Tab not displayed if (!ws.curTab.isDisplayed()) diff --git a/serverApps/src/main/servlet/org/compiere/www/WebField.java b/serverApps/src/main/servlet/org/compiere/www/WebField.java index 2e0ac6764e..196fea50fd 100644 --- a/serverApps/src/main/servlet/org/compiere/www/WebField.java +++ b/serverApps/src/main/servlet/org/compiere/www/WebField.java @@ -464,10 +464,10 @@ public class WebField button.setOnClick("startLocation('" + m_columnName + "');return false;"); else if (m_displayType == DisplayType.Account) //modified by rob klein 4/29/07 - button.setOnClick("startLookup('" + m_columnName + "', "+m_processID+");return false;"); + button.setOnClick("startLookup('" + m_columnName + "', "+m_processID+", 1);return false;"); else //modified by rob klein 4/29/07 - button.setOnClick("startLookup('" + m_columnName + "', "+m_processID+");return false;"); + button.setOnClick("startLookup('" + m_columnName + "', "+m_processID+", 1);return false;"); //Start Popup Menu //Add by Rob Klein 6/6/2007 diff --git a/serverApps/src/web/WEB-INF/web.xml b/serverApps/src/web/WEB-INF/web.xml index d0f5eb474a..028b58ea73 100644 --- a/serverApps/src/web/WEB-INF/web.xml +++ b/serverApps/src/web/WEB-INF/web.xml @@ -1,31 +1,4 @@ - - + Timing Y - - - LoginServlet - /WLogin diff --git a/serverApps/src/web/css/window.css b/serverApps/src/web/css/window.css index c707a8268b..738b5664f3 100644 --- a/serverApps/src/web/css/window.css +++ b/serverApps/src/web/css/window.css @@ -99,6 +99,21 @@ td { background:url(/adempiere/images/Delete16.gif) no-repeat left; background-color:#ffffff; } +.nextpgbtn { + cursor:pointer; + margin-top:5px; + border:outset 2px #ccc; + background:url(/adempiere/images/Next16.gif) no-repeat left; + background-color:#ffffff; +} +.prevpgbtn { + cursor:pointer; + margin-top:5px; + border:outset 2px #ccc; + background:url(/adempiere/images/Previous16.gif) no-repeat left; + background-color:#ffffff; +} + .Cerror { background: #FF4A4A; } diff --git a/serverApps/src/web/index.html b/serverApps/src/web/index.html index 1570b2eeb9..59b77e6201 100644 --- a/serverApps/src/web/index.html +++ b/serverApps/src/web/index.html @@ -2,7 +2,6 @@ ADempiere ERP+CRM Reach Client -