Changeset 29332

Show
Ignore:
Timestamp:
24.09.2014 14:05:09 (5 years ago)
Author:
kjdon
Message:

alert, confirm, prompt no longer allowed in beforeunload. Just use the default prompt - do you want to leave? leave/stay. Custom text can no longer be added to this either, so I have a help message that is invisible to start with. Make it visible when the user clicks off the page so that if they stay on the page they get some indication of what they need to do.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone3/web/interfaces/default/transform/pages/pref.xsl

    r29325 r29332  
    3434    <input type='hidden' name='c' value="{$collName}"/> 
    3535 
     36    <p id="SaveInstructions" style="color:red; text-align:center; display:none;"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.set_prefs_help')"/></p> 
    3637    <xsl:call-template name="presentation-prefs"/> 
    3738    <xsl:call-template name="search-prefs"/> 
     
    6566    <xsl:template name="prefs-javascript"> 
    6667        <!--  
    67         Add some javascript to the page that notices when a preference is changed  
    68         so that, if the user tries to navigate away from the page without clicking 
    69         the "Set preferences" button, it asks them if they want their preferences 
    70         saved or not  
    71         --> 
     68        Add some javascript to the page that notices when a preference  
     69           is changed so that, if the user tries to navigate away from  
     70           the page without clicking the "Set preferences" button, it  
     71           gives a stay/leave dialog. --> 
    7272        <script type="text/javascript"><xsl:text disable-output-escaping="yes"> 
    7373            var modified = false; 
    7474            var bypass = false; 
    7575                     
    76             function assembleURLFromForm(formElem) 
    77             { 
    78                 var url = gs.xsltParams.library_name + "?"; 
    79                 var selectNodes = formElem.getElementsByTagName("select"); 
    80                 var inputNodes = formElem.getElementsByTagName("input"); 
    81  
    82                 for (var i = 0; i &lt; selectNodes.length; i++) 
    83                 { 
    84                     var current = selectNodes[i]; 
    85                     url += current.name + "="; 
    86                     url += current.options[current.selectedIndex].text + "&amp;"; 
    87                 } 
    88                  
    89                 for (var i = 0; i &lt; inputNodes.length; i++) 
    90                 { 
    91                     var current = inputNodes[i]; 
    92                     if (current.type == "hidden" || current.type == "text") 
    93                     { 
    94                         url += current.name + "="; 
    95                         url += current.value + "&amp;"; 
    96                     } 
    97                 } 
    98                 return url; 
     76            function unsavedChanges(e) { 
     77            if (modified &amp;&amp; !bypass) { 
     78            document.getElementById("SaveInstructions").style.display="block"; 
     79            return "Provide the prompt"; 
    9980            } 
    100                      
    101             function checkModified(e) 
    102             { 
    103                 if (modified &amp;&amp; !bypass) 
    104                 { 
    105                     var ok = confirm("Would you like to save your preferences?"); 
    106                      
    107                     if (ok) 
    108                     { 
    109                         var formElem = document.getElementById("prefform"); 
    110                         formElem.submit(); 
    111                         var xmlhttp; 
    112                         if (window.XMLHttpRequest) 
    113                         { 
    114                             xmlhttp=new XMLHttpRequest(); 
    115                         } 
    116                         else 
    117                         { 
    118                             xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    119                         } 
    120  
    121                         xmlhttp.open("GET",assembleURLFromForm(formElem),false); 
    122                         xmlhttp.send(); 
    123                     } 
    124                 } 
     81            // no return statement - no dialog will be shown 
    12582            } 
    12683             
     
    151108             
    152109            YAHOO.util.Event.addListener(window, 'load', pageLoad); 
    153             YAHOO.util.Event.addListener(window, 'beforeunload', checkModified); 
     110            $(window).bind("beforeunload", unsavedChanges); 
    154111        </xsl:text></script> 
    155112    </xsl:template>