b0e2a9158cb1c7a90e60b8a79e2e27cbf6daa909
braney
  Wed Jul 27 13:36:48 2016 -0700
allow pennantIcons to have URLs to the image #17787

diff --git src/hg/lib/hui.c src/hg/lib/hui.c
index 895664f..e0d50a7 100644
--- src/hg/lib/hui.c
+++ src/hg/lib/hui.c
@@ -8086,88 +8086,111 @@
     }
 sqlFreeResult(&sr);
 webPrintLinkTableEnd();
 printf("Total: %d\n", count);
 }
 
 boolean printPennantIconNote(struct trackDb *tdb)
 // Returns TRUE and prints out the "pennantIcon" and note when found.
 //This is used by hgTrackUi and hgc before printing out trackDb "html"
 {
 char * setting = trackDbSetting(tdb, "pennantIcon");
 if (setting != NULL)
     {
     setting = cloneString(setting);
     char *icon = htmlEncodeText(nextWord(&setting),FALSE);
+    char buffer[4096];
+    char *src = NULL;
+    
+    if (startsWith("http://", icon) || startsWith("ftp://", icon) ||
+        startsWith("https://", icon))
+        src = icon;
+    else
+        {
+        safef(buffer, sizeof buffer, "../images/%s", icon);
+        src = buffer;
+        }
+
     char *url = NULL;
     if (setting != NULL)
 	url = nextWord(&setting);
     char *hint = NULL;
     if (setting != NULL)
 	hint = htmlEncodeText(stripEnclosingDoubleQuotes(setting),FALSE);
 
     if (!isEmpty(url))
         {
 	if (isEmpty(hint))
 	    printf("<P><a href='%s' TARGET=ucscHelp><img height='16' width='16' "
-		   "src='../images/%s'></a>",url,icon);
+		   "src='%s'></a>",url,src);
 	else
 	    {
 	    printf("<P><a title='%s' href='%s' TARGET=ucscHelp><img height='16' width='16' "
-		   "src='../images/%s'></a>",hint,url,icon);
+		   "src='%s'></a>",hint,url,src);
 
 	    // Special case for liftOver from hg17 or hg18, but this should probably be generalized.
 	    if (sameString(icon,"18.jpg") && startsWithWord("lifted",hint))
 		printf("&nbsp;Note: these data have been converted via liftOver from the Mar. 2006 "
 		       "(NCBI36/hg18) version of the track.");
 	    else if (sameString(icon,"17.jpg") && startsWithWord("lifted",hint))
 		printf("&nbsp;Note: these data have been converted via liftOver from the May 2004 "
 		       "(NCBI35/hg17) version of the track.");
 	    else 
 		printf("&nbsp;Note: %s.",hint);
 	    printf("</P>\n");
 	    }
 	}
     else
-        printf("<BR><img height='16' width='16' src='../images/%s'>\n",icon);
+        printf("<BR><img height='16' width='16' src='%s'>\n",src);
     return TRUE;
     }
 return FALSE;
 }
 
 boolean hPrintPennantIcon(struct trackDb *tdb)
 // Returns TRUE and prints out the "pennantIcon" when found.
 // Example: ENCODE tracks in hgTracks config list.
 {
 char *setting = trackDbSetting(tdb, "pennantIcon");
 if (setting != NULL)
     {
     setting = cloneString(setting);
+    char buffer[4096];
+    char *src = NULL;
     char *icon = htmlEncodeText(nextWord(&setting),FALSE);
+    if (startsWith("http://", icon) || startsWith("ftp://", icon) ||
+        startsWith("https://", icon))
+        src = icon;
+    else
+        {
+        safef(buffer, sizeof buffer, "../images/%s", icon);
+        src = buffer;
+        }
+
     if (setting)
         {
         char *url = nextWord(&setting);
         if (setting)
             {
             char *hint = htmlEncodeText(stripEnclosingDoubleQuotes(setting),FALSE);
             hPrintf("<a title='%s' href='%s' TARGET=ucscHelp><img height='16' width='16' "
-                    "src='../images/%s'></a>\n",hint,url,icon);
+                    "src='%s'></a>\n",hint,url,src);
             freeMem(hint);
             }
         else
             hPrintf("<a href='%s' TARGET=ucscHelp><img height='16' width='16' "
-                    "src='../images/%s'></a>\n",url,icon);
+                    "src='%s'></a>\n",url,src);
         }
     else
         hPrintf("<img height='16' width='16' src='%s'>\n",icon);
     freeMem(icon);
     return TRUE;
     }
 else if (trackDbSetting(tdb, "wgEncode") != NULL)
     {
     hPrintf("<a title='encode project' href='../ENCODE'><img height='16' width='16' "
             "src='../images/encodeThumbnail.jpg'></a>\n");
     return TRUE;
     }
 return FALSE;
 }