PxPlus User Forum

Twitter Twitter Twitter

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - PxPlus

Pages: [1] 2 3 ... 5
FAQs / Google is not allowing to sign-in via Embedded Browsers
« on: May 06, 2020, 02:31:34 PM »
In April of 2019 Google for security purposes started preventing embedded browsers from being able to sign into Google accounts (source: https://support.google.com/accounts/answer/7675428?co=GENIE.Platform%3DDesktop&hl=en). Google is doing this to combat a form of phishing, known as “man in the middle” (MITM) which can be done through embedded browsers to steal users information.

This Google decision affects both the PxPlus *BROWSER embedded chromium browser object/control (https://manual.pvxplus.com/?utilities/browser.htm) and the Shell.Explorer embedded browser COM control (https://manual.pvxplus.com/?NOMADS%20Graphical%20Application/Creating%20Panel%20Controls/COM%20Control/COM%20Control.htm). If you use an embedded browser control in your application the embedded browser will not be able to be used to sign in to any Google account. This affects all versions of PxPlus because the change is on the Google sign-in process side not in the application or embedded browser control.

If you need your application to bring the user to a Google service you can still have your PxPlus application launch the default system web browser and direct it to the Google service.
    SYSTEM_HELP url$

Google still allows standard system web browsers like Chrome, Firefox, Safari, and Edge to log into Google accounts it is only restricting embedded browsers from doing so.

Using the system web browser means the user will be taken away from your application and is a less integrated solution but it is more secure. If you need a more integrated solution that meets Google security standards your application will need to transition to using oAuth2 to login to Google accounts and the Google APIs to interact with the Google services. PxPlus provides an object *obj/oauth2 that can be used to help with the oAuth2 login process.

Thin Client/WindX / Re: pxp 1600 and Windx Licensing
« on: May 15, 2019, 05:50:33 PM »
What type of connection are you using?

We just tried both a Simple CS and a SSH (to Centos 6) with the plug in and had no problem.

General Announcements / Announcing PxPlus 2019
« on: May 15, 2019, 05:47:36 PM »
We are pleased to inform you that PxPlus 2019 (v16) is available for download.

About This Release

This new release consists of numerous new features, customer suggested enhancements, and usability improvements, as well as a number of corrections and minor changes.

What's New Highlights

  • A utility to Generate Android and iOS Apps for your iNomads application or other Web-based content.
  • Panel Creation Wizard for generating file maintenance and inquiry panels using the Data Dictionary and Data Classes
  • Enabled the built-in Windows Spell Checker for Multi-Lines
  • Extended Class Validation and Display options for dynamic Multi-Line Data Classes for validating against a data file and displaying selected data
  • "Plus" Charts with full integration for Windows, iNomads, PDF, HTML and Image files and the ability to create Smart Charts
  • Industry standard Data Encryption using AES and Hashing algorithm
  • Let's Encrypt SSL/TLS Certificate support for EZWeb and EZWeb as a Service
  • Updated to the new TinyMCE HTML Editor and new modern Layouts
  • Database Conversion Utility for migrating a standard data file to a database table (ADO, DB2, OCI, ODB, MYSQL)
  • Save and recall shareable run-time Query Profiles

Watch our short video showcasing some the key features in PxPlus 2019


For a complete overview of new features in this release, see the What’s New section.
To download the software for PxPlus 2019, go to our Download Center.
For additional technical information, see our Documentation website.

Tips and Techniques / How does SVN work?
« on: April 09, 2019, 01:22:09 PM »
Generally how our SVN interface works is that each programmer works from their own desktop, each of which contains a copy of the SVN library generally refereed to as their sandbox.  The programs and Nomads panels in the sandbox are maintained in text form.

When they edit a program and issue a SAVE command (from command line or via any of the editors), the system not only updates the application code (compiled version of the program) but also the text version of the program in the sandbox.  Same holds true for PxPlus Nomads panels the system updates not only the screen library but also the text mode sandbox where each panel is maintained as a separate text file in a sub-directory whose name matches that of the screen library.

When the programmer is happy that his/her changes are clean and they want to commit these they use TortoiseSVN to commit the changes source files from their sandbox to the SVN server/repository.  This is done using a secure SSH connection using Putty.

On a regular basis programmers should 'Update' their sandbox from the SVN server.  This update process will update the files in their sandbox with the current committed versions.  Should the program be working on the same programs and as such their sandbox version have changes they have made, the system will attempt to merge the SVN repository version with their changes.

Should the system find that the there is a conflict between changes the program has made and the repository version, it will flag the file and request that the user either manually merge the changes or accept the SVN repository version or their own.  This rarely happens as a conflict would only occur if the program changed the same line.

The biggest advantage that using SVN provides is that each programmer can work independently and generally not have to worry about 'locking' programs or panels.  Also since each programmer has their own copy of the software they can work remotely without the need to be only constantly.  They only need to connect to the server when committing changes or updating the workstation.

Further details on how to setup: https://manual.pvxplus.com/PXPLUS/PxPlus%20Version%20Control%20System%20Using%20TortoiseSVN/Introduction.htm

Programming / PxPlus 2018 Update 1 now available
« on: November 02, 2018, 12:01:25 PM »
PxPlus 2018 Update 1 is now available for download and includes the following enhancements and a variety of minor fixes.

  • Added the ability to drag/move Buttons to a new position.
  • Added a new option for Buttons, Check Boxes and Radio Buttons that places a bitmap centered and scaled to fill the button and overlays the bitmap with centered text if present.
  • Added support for the inclusion of expressions in the TBL( ) validation rule for a data dictionary table.
  • Enhanced the PxPlus Google Maps interface to allow the inclusion of a Google API Key which Google now requires.

Language / Re: html character translation from forum to outlook
« on: August 15, 2018, 03:42:40 PM »
By digest do you mean the daily/weekly email digests as per your setting on your board profile or the RSS feed?

If the RSS feed, I have checked the contents of the feed and it is correct and displays properly on OUtlook 2010, FireFox and Thunderbird.  If this is what you are referring to the issue is likely with Outlook 2016. This may be the problem you are having -- mind you there doesn't appear to be a solution:

FAQs / How can I fix "Unable to locate SSL library" on Linux
« on: July 27, 2018, 01:44:06 PM »
On occasion PxPlus is unable to locate the openssl libraries on Linux systems.  This is generally caused by the fact that the openssl libraries have not been properly installed or updated.

When this happens, if you attempt to open a SSL/TLS connection to another computer you will get the following message:

  • Error #13: File access mode invalid
    Last IO to [tcp]......;secure, channel nn
    Unable to locate SSL library (ssleay or libssl) (err/ret=2/2)

This message indicates that the libraries used by SSL (libssl.so and libcrypto.so) are not in the correct location and thus cannot be loaded into PxPlus.

You can determine the location in which the libraries should be found by using the Linux ldd command against the pxplus you installed. 

Below is the output for both the 32 and 64 bits pxplus installs from a Centos system:

  • 32 Bit ldd output

    root@vm-centos-7 pxplus32]# ldd pxplus
    linux-gate.so.1 => (0xf7769000)
    libdl.so.2 => /lib/libdl.so.2 (0xf774a000)
    libm.so.6 => /lib/libm.so.6 (0xf7708000)
    libnsl.so.1 => /lib/libnsl.so.1 (0xf76ee000)
    libc.so.6 => /lib/libc.so.6 (0xf7531000)
    /lib/ld-linux.so.2 (0xf776a000)

  • 64 bit ldd output

    root@vm-centos-7 pxplus64]# ldd pxplus
    linux-vdso.so.1 => (0x00007ffefb18c000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007f1ae4c05000)
    libm.so.6 => /lib64/libm.so.6 (0x00007f1ae4903000)
    libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f1ae46e9000)
    libc.so.6 => /lib64/libc.so.6 (0x00007f1ae4327000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f1ae4e23000)
Generally on Linux the 32 bit systems the libraries are in /lib whereas on a 64 bit install the libraries can be found in /lib64.  These libraries normally will have links for libssl.so and libcrypto.so which point to the current version of the libraries.  The links should have been setup during the initial openssl install and may be changed during software updates, however sometimes these links get broken or are not setup properly.

On our Linux systems here the .so files point to the current version of libssl (1.0.1e in this case):

  • [root@vm-centos-7 pxplus64]# ls -l /lib/libssl.so
    lrwxrwxrwx. 1 root root 16 May 31 2016 /lib/libssl.so -> libssl.so.1.0.1e

  • [root@vm-centos-7 pxplus64]# ls -l /lib64/libssl.so
    lrwxrwxrwx. 1 root root 16 May 31 2016 /lib64/libssl.so -> libssl.so.1.0.1e

To resolve the problem with PxPlus not being able to find the SSL libraries you need to locate the proper openssl libraries on your system and create the required symbolic links for libssl.so and libcrypto.so using the Linux ln command.  (Make sure you make the link symbolic and not a hard link)

NOTE: There is usually a libcrypt.so (missing 'o') in the library directories.  This is NOT part of the openssl libraries and should not be touched.

FAQs / How to change color used when printing 'SB' on Windows
« on: July 20, 2018, 10:43:37 AM »
Over the last few years Windows has changed the brightness of the gray color it uses on buttons and windows.  By default, the Windows gray colors are used by PxPlus to define the Light and Dark gray colors so that windows and controls created in PxPlus match the colors used by Windows.  These gray colors are also used by the system when displaying Black or White text with the 'SB' (Set Background) mnemonic enabled -- Dark gray for Black text, Light gray for White text.

Unfortunately in recent years these colors have become paler than they used to be making Light gray (#15) almost pure white which causes a problem when displaying white text with the 'SB' mnemonic.  This is especially problematic if you are running text mode applications and have changed the display to use a black background with white text.

There are two solutions to address this situation:

  • The easiest solution is to simply change the Light Gray to be a bit darker.  This can be done using the following command

    SETDEV (0) SET "Color15" TO "#A0A0A0"

    This sets the color of Light Gray (color index 15) to a slightly darker color (Red, Green and Blue all set at 160/255).  Unfortunately this solution does have its drawbacks as it changes Light Gray everywhere so that PxPlus windows with a light gray backgrounds will no longer match the Windows color scheme.

  • The alternate solution is to define a new color index to use for White text with 'SB'.  PxPlus has 15 standard colors (0-15) but for this you be required to define a new color, such as Color16, then change the Video Palette index table for White with the SB enabled to use this color.  The Video Palette index table consists or a series of six 8 byte color index values as bytes which identify the actual color index to use.  Each 8-byte entry has a 1-byte color index for the colors Black, Red, Green, Yellow, Blue, Magenta, Cyan and White in that order.

    The second 8 byte table defines the colors to use when 'SB' is active.  Since White is color number 8 you need to change byte 16, second table eighth byte, to CHR(16).  For more information on the Video Palette please see this web page

    Here is the code you will need to do this:

    SETDEV (0) SET "Color16" TO "#A0A0A0"
    X$(16,1) = CHR(16)

    If running WindX setting video palette needs to be done on the workstation and not on the server, thus the first solution is often much easier to implement in this environment.
Once the colors have been changed you need for Windows to refresh your page otherwise you will only get the new color on areas on the screen that are being updated.

NOTE: This FAQ is for use with Windows and not normal terminals which will use the escape sequence in the *dev driver programs.

FAQs / Why does my menu not appear in iNomads
« on: July 16, 2018, 02:40:19 PM »
With PxPlus 2016 iNomads we transitioned the menu bar from the standard menu bar line that used to appear below the title bar to a triple horizontal bar ('hamburger' icon) Menu icon which will appear on the left side of the title bar.   Clicking this Menu Icon will bring up the panel menu.  This form of menu selection is more common when using Web based applications as it saves screen space for smaller devices.

The use of the Menu Icon is enabled by default, but can be disabled on the "Layout" tab of your iNomads template configuration.

Tips and Techniques / Improving Image load times when using iNomads
« on: July 12, 2018, 11:22:24 AM »
When using iNomads and displaying an image the system normally will place a copy of the image in the sessions temporary working directory from which it will be loaded by the generated HTML.  In cases where you have many primarily static images (such as a product image library) copying the image to the temporary directory may add unnecessary overhead.

There is a way to setup iNomads to avoid this processing load by supplying a lookup file for image path names.  Defining this file can be done in the iNomads System Configuration -> Pathnames tabs.  There, on the application server, you can specific the path name to a file which will be used to map the image paths you use in the program to actual URLs which will be used in the generated HTML.

Simply create a file whose primary key is the image path name as is used by the program and in the first field put what you want inserted in the src=xxxxx clause in the generated pages. 

The file is only needed on the server running the application as this replacement is done by the iNomads object.  Using this lookup file will allow you to place your images in a location directly accessible by URL, will eliminate the need to copy the images to the temporary directory, and will improve overall system performance as the workstation browsers will be able to cache the images locally.

Image files whose path names are not the lookup file will use the existing standard process.

Note about Windows
If your application takes advantage of the fact the the Windows file system is case insensitive, the primary key used for the file will also need to be defined as case insensitive.  To do this instead of using an external key for the lookup file, make the primary key as the second field on the file, case insensitive (option "U" or "L") and load the file accordingly.

Back slashes, if used, are converted automatically to forward slashes both for the key field (the path name) and in the URL.

FAQs / How can I spawn a process when using WindX and SSH
« on: July 12, 2018, 10:14:05 AM »
Because SSH effectively requires a user to log on to the Unix/Linux system, spawning a session when you are connected using SSH requires some special settings.
This would also be required when using the report viewer *viewer* as it spawns a process.

Basically you have two choices -- both of which are controlled by setting the global variable %PXPLUS_HOST$ prior calling *windx.utl;spawn.

  • You can run *plus/cs/host in the background on your server and set %PXPLUS_HOST$ to your servers IP address - semi-colon, port number (e.g. ";4093"). This will cause *windx.utl to connect to the CS host, have it spawn a task, and then connect to it.
    Note: The spawned task will run under whatever userid *plus/cs/host was launched under.
  • You can set %PXPLUS_HOST$ to an asterisk (*) followed by the same host address, semi-colon, and port. In this case you don't need to run *plus/cs//host as your application itself will spawn the process and connect to it. This will preserve the userid and other environmental settings in the spawned process.
The challenge is to make sure the host address you use is the host address as seen by the workstation.  For example if your host server is connected to the internet using a router and the workstation will be coming in from outside, then the IP address will need to be the external address and not internal address.

Note: In both cases you will need to make sure whatever port you use is accessible from the workstation and not blocked by a firewall.

If you are looking to have different words with different hyperlinks in text, here is an easy way to do it:

This can be done using HTML and the *browser control.

Here is a sample non-Nomads program:

Code: [Select]
0010 DEF OBJECT h,@(1,1,40,10)="*browser"
0020 GOSUB Build_html
0030 h'document'write(html$)
0040 INPUT *
0050 END
0060 Build_html:
0070 LET html$="<html><body>"
0080 LET html$+="This is for <a href='https://forum.pvxplus.com' target='_blank'>forum</a>"
0090 LET html$+=" and this is for <a href='http://www.pvxplus.com' target='_blank'>pvxplus</a>"
0100 LET html$+="</body><html>"

To do this when using Nomads, create a COM control and select the Chromium browser then in the Post Create logic issue the object'Document'Write(...) method to load the HTML. If desired you can also have the browser control load the HTML from a file and use the Navigate2 method to display the text.

Now if you want to do something similar, but instead of true hyperlinks you want your application to be able to detect what the user clicked on and take some action, you can do something similar.

First off you need to create an object that will intercept the hyperlinks when clicked by the user.  Below is a object you can use:

Code: [Select]
! Menu event processor object
  def class "urlclick" create required
  property eventName$ ! Save area for the last click event
  local svTrigger
  function BEFORENAVIGATE2(*)BEFORE for event "BeforeNavigate2"
  end def
  enter oBrowser,ctlTrigger
  on event from oBrowser process _OBJ
  enter *,U,*,*,*,*,C,err=*next
  def object U
  if lcs(arg(U$,1,":"))="click" \
   then eventName$=arg(U$,2,":"),C=1;
        preinput svTrigger
  drop object U
  return 1

Save the above in urlclick.pvc.  This object will be called whenever a hyperlink is clicked and should that hyperlink contain "click:xxxxx" it will cancel the request (c=1) and save the click information.

Now try the following program:

Code: [Select]
  print 'CS',"Press F4 to Quit"
  button 10,@(0,0,1,1)="",opt="W"
  def object h,@(30,1,40,10)="[lcl]*browser"
  clicker=new("[lcl]urlclick",h,10) ! Set trigger
  gosub Build_html
  while 1
  input *
  if ctl=4 \
   then break
  if ctl=10 \
   then print "You selected ",clicker'eventName$
  html$="<html><body style='font-family: calbri, arial;'>"
  html$+="This is for <a href='click:forum'>forum</a>"
  html$+=" and this is for <a href='click:pvxplus'>pvxplus</a>"
  html$+=" and this is for external  <a href='http://www.pvxplus.com' target='_blank'>pvxplus site</a>"

This type of logic can also be used in Nomads by creating a dummy button (hidden if desired) and assigning logic to read and process the eventName$ based on the button being triggered.

Note: If using WindX you need to place the object file (urlclick.pvc) on the workstation.

Tips and Techniques / Interfacing with the Unix/Linux spooler
« on: July 03, 2018, 06:30:16 PM »
While on Windows system you can directly open *WINPRT* to send data to the windows spooler, on Unix/Linux systems there is no such built in mechanism.

You can however setup a PxPlus 'LINK' file which will provide a similar functionality.  A LINK file is basically just a small file that resides on your system that contains the name of file your really want to open and the name of a device driver you want to be run immediately after opening the file and before returning to the application.  These LINK files can be created using the *UCL utility which will ask for the name of the real file to open and the device driver.

To create a LINK file to the Unix/Linux spooler first create a device driver which will be invoked when the file is opened.  A device driver for the spooler would look something like this:

Code: [Select]
! SPOOLEDHP - Unix spooler driver for HP laser compatible printer
Title$ = OPT(LFO) ! Get title from OPT= in the open
if Title$="" Title$="Report for "+WHO ! Default report title
CLOSE (X) ! Close dummy file
OPEN (X) ">lp -s -dP015 -t '"+title$+"' 1>/dev/null 2>/dev/null"
RUN "*dev/hp_laser"

Save this driver as "*dev/spooledhp".

Now create a Link file using *UCL with a targte pathname of /dev/null and specifying this driver.

When you subsequently open the link file, the system will temporarily open /dev/null then internally CALL"*dev/spooledhp"

The logic shown above will close the connection to /dev/null, and re-open it as a pipe to the system spooler.  The program also also includes the ability for you to specify OPT="Title" in your OPEN directive to set the title of the report to be passed to the system spooler.  If no OPT= is on the OPEN directive, the title of "Report for username" will be used. 

For Example, assuming you created the LINK file of printer_1:

  • OPEN (1,OPT="Product Report") "printer_1"
This would output a report with a title of Product Report to printer P015 using the Unix/Linux spooler.

Note: The value -dP015 in the command line shown in the code is specifying the printer name as P015.  You will need to change this to suit your system.  Also note the program ultimately runs *dev/hplaser which is a PxPlus supplied driver for HP compatible printers.

Tips and Techniques / How to add web users to an existing application
« on: June 29, 2018, 12:11:22 PM »
The most common way to web enable a graphical PxPlus applications is to add iNomads package.  The iNomads package can be added to any PxPlus Professional or E-Commerce license.

However, sometimes you may want to provide web access to your application for only a select few users, even though you may be running with a base PxPlus license.  This can be accomplished by purchasing a separate Wayfarer license for the number of concurrent Web users you want to support and it is often less expensive than adding the iNomads package to an existing license.

Wayfarer licenses are designed to provide the equivalent of a PxPlus Professional license with the added benefit of being able to run either the EZWeb server or Apache interface.

Installing a stand-alone Wayfarer license on the same system as your application resides is a fairly easy process.

Windows Setup:

  • Create a new directory on the system into which you will install the Wayfarer system, such as:
    • C:\Wayfarer

  • Since Windows does not allow multiple copies of the same installed program on the PC, you will need to use a ZIP file to do the install.  Download the Windows ZIP file from our download site and unzip this into the sub-directory:
    • C:\Wayfarer\PxPlus 20xx [\b]

  • Register the installation using the program pxpwactv.exe found in the install directory to enter the  activation key provided with your order, then launch pxplus.exe to complete the process and Register Online.

  • From the Windows Explorer, create a shortcut to pxplus.exe. 
    Modify the shortcut to append the command line arguments -bkg and *ezweb/server to the command as in:
    • "C:\Wayfarer\PxPlus 20xx\pxplus.exe" -bkg "*ezweb/server"

    You should now be able to launch this shortcut and access iNomads from the browser.

If desired you can install the EZWeb server as a service on your windows system by running "*ezweb/install" from the pxplus command line.

Unix/Linux Setup:

  • Create a new directory on the system into which you will install the Wayfarer system, such as:
    • /usr/wayfarer

  • Download the Linux/Unix tar file from our download site and install (un-tar) this into the directory.

  • Register the installation using the program pxpreg found in the install directory to enter the  activation key provided with your order, then launch pxplus to complete the process and Register Online.

  • Create a shell script to run pxplus as follows:
    • /usr/wayfarer/pxplus -bkg "*ezweb/server"  >/dev/null </dev/null &

You should now be able to launch this shell script or add it to your system start up.

You may need to adjust your firewall settings in order to allow access to the EZWeb server. 
Add -arg portno to the end of the command used to launch EZWeb to specify a different port, if desired.

Using the Forum / RSS Feed options
« on: June 25, 2018, 11:52:07 AM »
This forum provides a RSS feed that can be used to obtain a number of different outputs about the forum with the most common being the most recent posts.  The link to the feed itself is https://forum1.pvxplus.com/index.php?action=.xml;type=rss and can also be found at the bottom of every page in the forum.

Changing the output format of the feed

You can select different formats of output by changing the type parameter on the url.

  • ;type=atom - Atom
  • ;type=rdf - RDF
  • ;type=rss - RSS 1.00
  • ;type=rss2 - RSS 2.0

How to change the contents of the feed

All of the XML content is accessed via the ".xml" action parameter with a sub-action (sa=) parameter which describes what type of information you want.

Provides the following feed
recentThis is the default feed which will be used if no sa= option is present and provides the 5 most recent posts.

Available options:
limit=x - display the "x" most recent posts (if number is less than 5, it will display 5. If number is larger than 255, it will display 255).
board=y - display only the recent posts from board "y"
boards=x,y,z - display only the recent posts from the specified boards
c=x or c=x,y,z - display only the recent posts from boards in the specified category/categories
Example: https://forum1.pvxplus.com/index.php?action=.xml;sa=recent;board=72;limit=10

newsThis request displays the first post from the most recent topics that you can see.

Available options:
limit=x - display only "x" items
board=y - display only news topics from board "y"
boards=x,y,z - display only news topics from the specified boards
c=x or c=x,y,z - display only news topics from boards in the specified category/categories
Example: http://forum1.pvxplus.com/index.php?action=.xml;sa=news;board=72;limit=10

membersDisplays the most recent members to the forum.

Available options:
limit=x - display only the "x" most recent members
Example: http://forum1.pvxplus.com/index.php?action=.xml;sa=members;limit=10

Pages: [1] 2 3 ... 5