70d2fa98f8f4fe8d805b2172bd26850d19c1a645
angie
  Mon Mar 23 15:17:04 2015 -0700
Code review feedback from Kate: libify inclusion of libs for new React framework.
refs #14965

diff --git src/hg/lib/jsHelper.c src/hg/lib/jsHelper.c
index 78f8185..5f1154e 100644
--- src/hg/lib/jsHelper.c
+++ src/hg/lib/jsHelper.c
@@ -221,30 +221,53 @@
 if (link != NULL)
     {
     static boolean defaultWarningShown = FALSE;
     if(noScriptMsg == NULL && !defaultWarningShown)
         {
         noScriptMsg = "<b>JavaScript is disabled in your web browser</b></p><p>You must have JavaScript enabled in your web browser to use the Genome Browser";
         defaultWarningShown = TRUE;
         }
     if(noScriptMsg && strlen(noScriptMsg))
         hPrintf("<noscript><div class='noscript'><div class='noscript-inner'><p>%s</p></div></div></noscript>\n", noScriptMsg);
     hPrintf("%s",link);
     freeMem(link);
     }
 }
 
+void jsIncludeReactLibs()
+/* Prints out <script src="..."> tags for external libraries including ReactJS & ImmutableJS
+ * and our own model libs, React mixins and components. */
+{
+// We need a module system... webpack?
+puts("<script src=\"../js/es5-shim.4.0.3.min.js\"></script>");
+puts("<script src=\"../js/es5-sham.4.0.3.min.js\"></script>");
+puts("<script src=\"../js/lodash.3.3.1.compat.min.js\"></script>");
+puts("<script src=\"//code.jquery.com/jquery-1.9.1.min.js\"></script>");
+puts("<script src=\"//code.jquery.com/ui/1.10.3/jquery-ui.min.js\"></script>");
+puts("<script src=\"//fb.me/react-with-addons-0.12.2.min.js\"></script>");
+puts("<script src=\"../js/immutable.3.2.1.min.js\"></script>");
+puts("<script src=\"../js/BackboneExtend.js\"></script>");
+puts("<script src=\"../js/cart.js\"></script>");
+puts("<script src=\"../js/ImModel.js\"></script>");
+puts("<script src=\"../js/CladeOrgDbMixin.js\"></script>");
+puts("<script src=\"../js/PositionSearchMixin.js\"></script>");
+puts("<script src=\"../js/PathUpdate.js\"></script>");
+puts("<script src=\"../js/PathUpdateOptional.js\"></script>");
+puts("<script src=\"../js/ImmutableUpdate.js\"></script>");
+puts("<script src=\"../js/reactLibBundle.js\"></script>");
+}
+
 char *jsCheckAllOnClickHandler(char *idPrefix, boolean state)
 /* Returns javascript for use as an onclick attribute value to check all/uncheck all
  * all checkboxes with given idPrefix.
  * state parameter determines whether to "check all" or "uncheck all" (TRUE means "check all"). */
 {
 static char buf[512];
 jsIncludeFile("utils.js", NULL);
 safef(buf, sizeof(buf), "setCheckBoxesWithPrefix(this, '%s', %s); return false", idPrefix, state ? "true" : "false");
 return buf;
 }
 
 /* cgiMakeCheckAllSubmitButton really belongs in cheapcgi.c, but that is compiled without access to jsHelper.h */
 
 void cgiMakeCheckAllSubmitButton(char *name, char *value, char *id, char *idPrefix, boolean state)
 /* Make submit button which uses javascript to apply check all or uncheck all to all