################################################################################ # TSL-LIBRARY: EMOS_FRM_WEB_Lib ################################################################################ # Copyright (C) 2000 EMOS Computer Consulting GmbH # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # For further information please contact: # # Dean Rajovic # EMOS Computer Consulting GmbH # Oskar-Messter-Straße 25 # 85737 Ismaning # Germany # tel.: +49 89 608 765-0 # mailto:drajovic@emos.de # http://www.emos.de ################################################################################ # $Revision: 1.4 $ # $Author: drajovic $ # $Date: 2005/01/23 19:31:51 $ # $Archive: /MERCURY/TSL_PROJECTS/EMOS_GPL/FRM/emos_frm_web_lib/script $ # $NoKeywords: $ ################################################################################ #**# #* This library extends the functionality of EMOS_FRM_GUI_Lib with web #* functionality. #* It provides "wrappers" for most frequently used "web" functions such #* as web_image_click(), etc. #*/ #** #* A standard "wrapper" for web_image_click() function. #* You may use the function in two ways. #* 1.) If you specify the <object>, then the value from the data table is #* evaluated. If the value resambles to Yes, the <object> is "pressed". #* 2.) If you do not provide the <object> parameter, then the value from the #* data table is used as the name of the object to be "pressed". #* The second alternative is an elegant way of pressing on OK, Cancel and #* similar buttons. #* <p>FRM-GUI-TYPE: #* navigation (read-only) #* <p>TEST DATA FORMAT: #* String containing either Y/YES/ON (or german equivalent J/JA/ON) or #* the logical name of the image to be clicked. #* <p>SET-MODE: #* The function reads the value from the data table and uses it as a parameter #* to a native web_image_click() function according to aforementioned description. #* <p>CHK-MODE: #* Not supported for type: navigation! #* There is nothing to be checked with web_image_click(). #* Behaves the same as the SET-mode! #* <p>GEN-MODE: #* Not supported for type: navigation! #* Ignores the cell (i.e. skips the cell). #* #* @param table (in) table name #* @param test (in) test name (column) #* @param object (in) (optional) GUI-object where actions are to be performed #* @param x (in) (optional) x-coordinate relative to upper left corner #* @param y (in) (optional) y-coordinate relative to upper left corner #* @return #* E_OK: operation successful #* !E_OK: operation failed #*/ public function FRM_web_image_click ( in table, in test, in object, in x, in y ) { auto rc; wrlog_prim_start(); switch ( FRM_get_mode( table ) ) { case FRM_SET_MODE: case FRM_CHK_MODE: rc = FRM_SET_web_image_click( table, test, object, x, y ); break; case FRM_GEN_MODE: rc = FRM_GEN_web_image_click( table, test, object ); break; default: rc = E_FRM_ILLEGAL_MODE; } wrlog_prim_stop( rc ); return (rc==E_FRM_SKIP ? E_OK : rc); } #------------------------------------------------------------------------------- # FUNCTION: FRM_SET_web_image_click #------------------------------------------------------------------------------- static function FRM_SET_web_image_click ( in table, in test, in object, in x, in y ) { auto val; auto rc = FRM_get_next( table, test, val ); if ( rc != E_OK ) return rc; FRM_log_frm_info( table, test, val ); # if <object> not defined,then use <val> as object and just press if( object == "" ) { FRM_log_obj_info( val ); return FRM_rc2( web_image_click( val, x*1, y*1 ), val ); } # else of <object> defined, then pres only if <val> == "ja" or "on" switch ( tolower( val ) ) { case "j": case "ja": case "y": case "yes": case "on": break; default: return E_OK; } FRM_log_obj_info( object ); return FRM_rc2( web_image_click( object, x*1, y*1 ), object ); } #------------------------------------------------------------------------------- # FUNCTION: FRM_GEN_web_image_click #------------------------------------------------------------------------------- static function FRM_GEN_web_image_click ( in table, in test, in object ) { FRM_skip( table ); } #** #* A standard "wrapper" for web_link_click() function. #* You may use the function in two ways. #* 1.) If you specify the <object>, then the value from the data table is #* evaluated. If the value resambles to Yes, the <object> is "clicked". #* 2.) If you do not provide the <object> parameter, then the value from the #* data table is used as the name of the object to be "clicked". #* The second alternative is an elegant way of clicking on OK, Cancel and #* similar buttons. #* <p>FRM-GUI-TYPE: #* navigation (read-only) #* <p>TEST DATA FORMAT: #* String containing either Y/YES/ON (or german equivalent J/JA/ON) or #* the logical name of the link to be clicked. #* <p>SET-MODE: #* The function reads the value from the data table and uses it as a parameter #* to a native web_link_click() function according to aforementioned description. #* <p>CHK-MODE: #* Not supported for type: navigation! #* There is nothing to be checked with web_image_click(). #* Behaves the same as the SET-mode! #* <p>GEN-MODE: #* Not supported for type: navigation! #* Ignores the cell (i.e. skips the cell). #* #* @param table (in) table name #* @param test (in) test name (column) #* @param object (in) (optional) GUI-object where actions are to be performed #* @return #* E_OK: operation successful #* !E_OK: operation failed #*/ public function FRM_web_link_click ( in table, in test, in object ) { auto rc; wrlog_prim_start(); switch ( FRM_get_mode( table ) ) { case FRM_SET_MODE: case FRM_CHK_MODE: rc = FRM_SET_web_link_click( table, test, object ); break; case FRM_GEN_MODE: rc = FRM_GEN_web_link_click( table, test, object ); break; default: rc = E_FRM_ILLEGAL_MODE; } wrlog_prim_stop( rc ); return (rc==E_FRM_SKIP ? E_OK : rc); } #------------------------------------------------------------------------------- # FUNCTION: FRM_SET_web_link_click # changed to allow location: x # Change: !!RN Quickhack to allow addition physical parameters #------------------------------------------------------------------------------- static function FRM_SET_web_link_click ( in table, in test, in object ) { auto val; auto len; auto obj; auto rc = FRM_get_next( table, test, val ); if ( rc != E_OK ) return rc; FRM_log_frm_info( table, test, val ); # if <object> not defined,then use <val> as object and just press if( object == "" ) { len=length( val ); if( substr( val, len, 1 ) == "}" ) { # here we have multiple identical links in one page ( i.e. eMail # it is asumed that this ends with location: x } # "{class: object,MSW_class: html_text_link,html_name: eMail,location: 0 }" obj = "{class: object, MSW_class: html_text_link, html_name: " & val; FRM_log_obj_info( obj ); return FRM_rc2( web_link_click( obj ), obj ); } else { obj = "{class: object, MSW_class: html_text_link, html_name: \"" & val & "\"}"; FRM_log_obj_info( obj ); return FRM_rc2( web_link_click( obj ), obj ); } } # else of <object> defined, then pres only if <val> == "ja" or "on" switch ( tolower( val ) ) { case "j": case "ja": case "y": case "yes": case "on": break; default: return E_OK; } FRM_log_obj_info( object ); return FRM_rc2( web_link_click( object ), object ); } #------------------------------------------------------------------------------- # FUNCTION: FRM_GEN_web_link_click #------------------------------------------------------------------------------- static function FRM_GEN_web_link_click ( in table, in test, in object ) { FRM_skip( table ); } ################################################################################ # TSL-LIBRARY: EMOS_FRM_WEB_Lib ################################################################################