Adding the PeopleTools Breadcrumbs Back

In these recent PUMs, one of the things that I miss is the breadcrumbs navigation at the top. It has many advantages over the new navigation. For example:

  • Taking a screenshot documents the navigation to the page
  • Navigation is quicker for nearby pages
  • Reloading the page is quicker by clicking the link in the navigation rather than reloading the whole browser page

I found the breadcrumbs are easy to turn back on. Simply, navigate to PeopleTools > Portal > Branding > Define Headers and Footers. In the search, open up “DEFAULT_HEADER_FLUID”.

At the bottom of the page, in the “Style Definitions” field, paste the following CSS:

.desktopFluidHdr .ptdropdownmenu {
    display: block;
}

Finally, save the page with the button near the top. After you logout and back in, you will see the breadcrumbs.

Resources

OpenCOBOL Try 2

Cobol has been a thorn in my side for a long time. Working for software vendors, it’s not a given that Cobol is installed because they don’t always need to run payroll and don’t have production instances.

It’s been a while since I have played with OpenCOBOL. It’s been so long that they have renamed it to GnuCobol instead.

I’ve gotten closer so far, but I still can’t get past the database connection. Here’s my notes.

Read More

Pardon the Dust: Transition in Progress

Things might look a little different on the blog if you haven’t been back in a while.  And, things might not be working quite up to par for a bit.  Please pardon the dust.  I’m trying to get things back in order as quickly as my schedule allows.

So, here’s what’s going on: I am moving my website to a VPS.  My term at Hostgator expired, and I decided that this next year, I want to include SSL on my site and take it to the next level.  Doing so at Hostgator was not cost effective in the least.

So, I am rebuilding everything on my own VPS.  It’s exciting but things may be a bit rough for a few weeks.  I hoping to pull together a new theme on the blog, SSL for securit/SEO, and tie it all together on a multi-site WordPress installation.

Please keep checking back and see how it goes!

Pinging and Posting from PeopleCode

I had a need to Ping a server to see if the server could get to it.  I also tried to post to it.  This code could be helpful for others, so I want to share it.  A post should normally go through the Integration Broker, but I first developed it at a time when I had a product that was supposed to go on servers with diverse versions of Integration Broker.

The Ping code doesn’t seem very reliable for some reason.  Something on the Java side doesn’t always work.  Still it might be helpful.

   Local JavaObject &url;
   Local JavaObject &conn;
   Local JavaObject &r;
   Local any &line;
   Local string &output;
   Local JavaObject &inet;
   Local string &address;

   MessageBox(0, "", 0, 0, "hostname: " | GetJavaClass("java.net.InetAddress").getLocalHost().getHostName());

   &address = "localhost";
   &inet = GetJavaClass("java.net.InetAddress").getByName(&address);
   MessageBox(0, "", 0, 0, &address | "(" | &inet.getHostAddress() | ") reachable: " | &inet.isReachable(5000));
   &address = "www.google.com";
   &inet = GetJavaClass("java.net.InetAddress").getByName(&address);
   MessageBox(0, "", 0, 0, &address | "(" | &inet.getHostAddress() | ") reachable: " | &inet.isReachable(5000));

   &url = CreateJavaObject("java.net.URL", "http://www.google.com");
   &conn = &url.openConnection();
   &conn.setRequestProperty("content-type", "application/x-www-form-urlencoded");
   &conn.setRequestProperty("accept", "text/xml/html");
   &conn.setRequestProperty("accept-charset", "utf-8, iso_8859-1");
   &conn.setRequestProperty("userid", "????");
   &conn.setRequestProperty("pwd", "?????");
   &conn.setDoOutput( True);

   &output = "";
   &r = CreateJavaObject("java.io.BufferedReader", CreateJavaObject("java.io.InputStreamReader", &conn.getInputStream()));
   &line = &r.readLine();
   While &line <> Null
      &output = &output | Char(10) | Char(13) | &output;
      &line = &r.readLine();
   End-While;
   &r.close();

   MessageBox(0, "", 0, 0, &output);

Please make sure to adjust the URLs and hostnames to what you need.

Resources

Searching with USEEDIT

Because many of the record properties are hidden in the Bit Map field USEEDIT, it is hard to search for properties.  If you are on Oracle, here’s some SQL that might help…

This SQL lists all of the fields with their properties broken out of that field:

SELECT FIELDNAME,
       USEEDIT,
       Bitand(USEEDIT, 1)         KEY,
       Bitand(USEEDIT, 2)         DUP_KEY,
       Bitand(USEEDIT, 4)         SYS_MAINT,
       Bitand(USEEDIT, 8)         AUDIT_ADD,
       Bitand(USEEDIT, 16)        ALT_SEARCH_KEY,
       Bitand(USEEDIT, 32)        LIST_BOX_ITEM,
       Bitand(USEEDIT, 64)        ASCENDING_KEY,
       Bitand(USEEDIT, 128)       AUDIT_CHANGE,
       Bitand(USEEDIT, 256)       REQUIRED,
       Bitand(USEEDIT, 512)       XLAT,
       Bitand(USEEDIT, 1024)      AUDIT_DEL,
       Bitand(USEEDIT, 2048)      SEARCH_KEY,
       Bitand(USEEDIT, 4096)      EDIT_REASONABLE_DATE,
       Bitand(USEEDIT, 8192)      EDIT_YES_NO,
       Bitand(USEEDIT, 16384)     EDIT_PROMPT_TABLE,
       Bitand(USEEDIT, 32768)     AUTO_UPDATE,
       Bitand(USEEDIT, 65536)     BIT65536,
       Bitand(USEEDIT, 131072)    BIT131072,
       Bitand(USEEDIT, 262144)    FROM_SEARCH,
       Bitand(USEEDIT, 524288)    TO_SEARCH,
       Bitand(USEEDIT, 1048576)   EDIT_BINARY,
       Bitand(USEEDIT, 2097152)   DISABLE_ADV_SEARCH,
       Bitand(USEEDIT, 4194304)   REGULAR_FIELD,
       Bitand(USEEDIT, 8388608)   DEFAULT_SEARCH_FIELD,
       Bitand(USEEDIT, 16777216)  BIT16777216,
       Bitand(USEEDIT, 33554432)  SEARCH_EDIT_KEYS,
       Bitand(USEEDIT, 67108864)  BIT67108864,
       Bitand(USEEDIT, 134217728) BIT134217728,
       Bitand(USEEDIT, 268435456) BIT268435456
FROM   PSRECFIELDALL
WHERE  RECNAME = 'JOB'; 

Read More

Search for a Field with Translates

I was looking for an “Internal/External” field.  I wanted a field already built that had two translate values: “E” and “I”.  This SQL did the trick:

SELECT A.FIELDNAME,
A.XLATLONGNAME,
B.XLATLONGNAME,
A.XLATSHORTNAME,
B.XLATSHORTNAME
FROM   PSXLATITEM A,
PSXLATITEM B
WHERE  A.FIELDNAME = B.FIELDNAME
AND A.FIELDVALUE = 'E'
AND B.FIELDVALUE = 'I'
AND Upper(A.XLATLONGNAME) LIKE 'EXT%'
AND NOT EXISTS (SELECT 'X'
FROM   PSXLATITEM C
WHERE  A.FIELDNAME = C.FIELDNAME
AND C.FIELDVALUE NOT IN ( 'E', 'I' )) 

I found the INTERNAL_EXTERNAL field, which works just perfect for me.