JAVASCRIPT   40

custom login js

Guest on 6th August 2022 01:19:55 AM

  1. //    Licensed Materials - Property of IBM
  2. //
  3. //    IBM Cognos Products: ps
  4. //
  5. //    (C) Copyright IBM Corp.
  6. //
  7. //    US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  8. // Copyright (C)  Cognos Incorporated. All rights reserved.
  9. // Cognos and the Cognos logo are trademarks of Cognos Incorporated.
  10.  
  11. function getLocale() {
  12.         return cl_locale;
  13. }
  14.  
  15. function executeOKCommand() {
  16.         processCommand('ok');
  17. }
  18.  
  19. function executeCancelCommand() {
  20.         processCommand('cancel');
  21. }
  22.  
  23. function executeCloseCommand() {
  24.         processCommand('close');
  25. }
  26.  
  27. function executeHelpCommand() {
  28.         processCommand('help');
  29. }
  30.  
  31. var USE_RUNTIME_LOCALE = 0;
  32. var USE_DEFAULT = 1;
  33. var deleteArray = null;
  34.  
  35. function doCustomization() {
  36.         deleteArray = new Array();
  37.        
  38.         var templateContent = readTemplate(USE_RUNTIME_LOCALE);
  39.        
  40.         if (templateContent != null) {
  41.                 insertTemplateContent(templateContent);
  42.                
  43.                 //Perform customization
  44.                 doLayoutCustomization();
  45.                 doMessageReplacement();
  46.                
  47.                 cleanup();
  48.                
  49.                 //Finally, invoke customer-supplied javascript function, if specified
  50.                 if (typeof customize == 'function') {
  51.                         customize();
  52.                 }
  53.         } else {
  54.                 // template could not be located and/or read - just degrade gracefully
  55.                 doRenderDefault();
  56.         }
  57. }
  58.  
  59. function doLayoutCustomization() {
  60.         // Layout
  61.         for (i = 0; i < clLayoutArray.length; i++) {
  62.                 doReplace("%" + clLayoutArray[i] + "%", clLayoutArray[i], true);
  63.         }
  64. }
  65.  
  66. function doMessageReplacement() {
  67.         // Content replacement
  68.         for (i = 0; i < clMessageReplaceArray.length; i++) {
  69.                 doReplace(clMessageReplaceArray[i], "%" + clMessageReplaceArray[i] + "%");
  70.         }
  71. }
  72.  
  73. function doReplace(tgt_id, src_id, replaceId) {
  74.         var tgt = document.getElementById(tgt_id);
  75.         var src = document.getElementById(src_id);
  76.         if (tgt && src) {
  77.                 tgt.innerHTML = '';            
  78.                 while (src.firstChild) {
  79.                         tgt.appendChild(src.removeChild(src.firstChild));              
  80.                 }              
  81.                 if (replaceId) {
  82.                         tgt.id = src.id;               
  83.                 }
  84.         }
  85.         if (src) {
  86.                 src.deleted = false;
  87.                 deleteArray[deleteArray.length] = src;
  88.         }
  89. }
  90.  
  91. function cleanup() {
  92.         for(i = 0; i < deleteArray.length; i++) {
  93.                 var e = deleteArray[i];
  94.                 if (e != null && e.parentNode != null && !e.deleted) {
  95.                         e.parentNode.removeChild(e);
  96.                         e.deleted = true;
  97.                 }
  98.         }
  99. }
  100.  
  101. function insertTemplateContent(templateContent) {
  102.         function addScripts(scriptsText) {
  103.                 try {
  104.                         var head = document.getElementsByTagName('HEAD').item(0);
  105.                         var script = document.createElement("script");
  106.                         script.type = 'text/javascript';
  107.                         script.text = scriptsText;
  108.                         head.appendChild(script);
  109.                 } catch (e) {}
  110.         }
  111.        
  112.         function addStyles(stylesText) {
  113.                 try {
  114.                         var head = document.getElementsByTagName('HEAD').item(0);
  115.                         var style = document.createElement("style");
  116.                         style.type = 'text/css';
  117.                         if (style.styleSheet) {
  118.                                 style.styleSheet.cssText = stylesText;
  119.                         }
  120.                         else {
  121.                                 var domText = document.createTextNode(stylesText);
  122.                                 style.appendChild(domText);
  123.                         }
  124.                         head.appendChild(style);
  125.                 } catch (e) {}
  126.         }
  127.        
  128.         function addLinks(href) {
  129.                 try {
  130.                         var head = document.getElementsByTagName('HEAD').item(0);
  131.                         var node = document.createElement("link");
  132.                         node.type = 'text/css';
  133.                         node.rel = "stylesheet";
  134.                         node.href = href;
  135.                         head.appendChild(node);
  136.                 } catch (e) {
  137.                 }
  138.         }
  139.        
  140.         var customDiv = document.createElement("div");
  141.         var clInsertTarget = document.getElementById(clLayoutArray[0]);
  142.         clInsertTarget.parentNode.insertBefore(customDiv, clInsertTarget);
  143.        
  144.         var templateNode = document.createElement("div");
  145.         templateNode.innerHTML = "<span style='display:none'>&nbsp;</span>"  + templateContent;
  146.         templateNode.removeChild(templateNode.firstChild);
  147.        
  148.         // extract and insert style text
  149.         var stylesText = "";
  150.         var styleElements = templateNode.getElementsByTagName("style");
  151.         var length = styleElements.length;
  152.         for (var i = length - 1; i >= 0; i--) {
  153.                 stylesText += styleElements[i].innerHTML;
  154.                 if (styleElements[i].parentNode) {
  155.                         styleElements[i].parentNode.removeChild(styleElements[i]);
  156.                 }
  157.         }
  158.         addStyles(stylesText);
  159.                                
  160.         // extract and insert script text
  161.         var scriptsText = "";
  162.         var scriptElements = templateNode.getElementsByTagName("SCRIPT");
  163.         var length = scriptElements.length;
  164.         for (var i = length - 1; i >= 0; i--) {
  165.                 scriptsText += scriptElements[i].text;
  166.                 if (scriptElements[i].parentNode) {
  167.                         scriptElements[i].parentNode.removeChild(scriptElements[i]);
  168.                 }
  169.         }
  170.         addScripts(scriptsText);
  171.        
  172.         // add links
  173.         if (templateNode.getElementsByTagName("link") != null) {
  174.                 var nodes = templateNode.getElementsByTagName("link");
  175.                 var l = nodes.length;
  176.                 for (var i = 0; i < l; i++) {
  177.                         var attrs = nodes[i].attributes;
  178.                         for (var j = 0; j < attrs.length; j++) {
  179.                                 if (attrs[j].nodeName == "href") {
  180.                                         addLinks(attrs[j].nodeValue);
  181.                                         break;
  182.                                 }
  183.                         }
  184.                 }
  185.         }
  186.        
  187.         // add rest of the template contents
  188.         if (templateNode.childNodes) {
  189.                 var bHasHtml = false;
  190.                 var nodesLength = templateNode.childNodes.length;
  191.                 for (var i = nodesLength - 1 ; i >= 0; i--) {
  192.                         if ((templateNode.childNodes[i].nodeType != 3) ||
  193.                                 (templateNode.childNodes[i].nodeType == 3 && templateNode.childNodes[i].nodeValue.replace(/^\s*|\s*$/g,"") != "")){                                            
  194.                                 if (!bHasHtml) {
  195.                                         customDiv.innerHTML = "";
  196.                                         customDiv.appendChild(templateNode.childNodes[i]);
  197.                                         bHasHtml = true;
  198.                                 } else {
  199.                                         customDiv.insertBefore(templateNode.childNodes[i], customDiv.firstChild);
  200.                                 }
  201.                         }                                      
  202.                 }                      
  203.         }
  204. }
  205.  
  206. function readTemplate(useLocale) {
  207.         var asynch = false;
  208.         var request = getXMLHttpRequest();
  209.         if (request) {
  210.                 var template = getTemplateURL(useLocale);
  211.                 request.open("GET", template, asynch);
  212.                 request.send(null);
  213.                
  214.                 if (request.status >= 200 && request.status < 300) {
  215.                         return request.responseText;
  216.                 } else if (useLocale != USE_DEFAULT) {
  217.                         return readTemplate(USE_DEFAULT);
  218.                 }
  219.         }
  220.         return null;
  221. }
  222.  
  223. function getTemplateURL(useLocale) {
  224.         var fullTemplatePath = cl_templatePath + "/" + cl_baseTemplateName;
  225.         if (useLocale != USE_DEFAULT) {
  226.                 fullTemplatePath += "_" + getLocale();
  227.         }
  228.         fullTemplatePath += cl_templateDefaultExtension;
  229.         return fullTemplatePath;
  230. }
  231.  
  232. function doRenderDefault() {
  233.         for (i = 0; i < clLayoutArray.length; i++) {
  234.                 var div = document.getElementById(clLayoutArray[i]);
  235.                 if (div) {
  236.                         div.style.display = "";
  237.                 }
  238.         }
  239. }

Raw Paste


Login or Register to edit or fork this paste. It's free.