Changeset 29332 for main/trunk


Ignore:
Timestamp:
2014-09-24T14:05:09+12:00 (10 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.

File:
1 edited

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>
Note: See TracChangeset for help on using the changeset viewer.