=== added file 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/ajax/jsonPing.vm'
--- dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/ajax/jsonPing.vm 1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/ajax/jsonPing.vm 2011-08-16 12:16:33 +0000
@@ -0,0 +1,3 @@
+{
+ "loggedIn": $loggedIn
+}
=== modified file 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/javascripts/commons.js'
--- dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/javascripts/commons.js 2011-08-08 18:21:36 +0000
+++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/javascripts/commons.js 2011-08-16 12:16:33 +0000
@@ -8,23 +8,6 @@
var _loading_circle_html = "";
/**
- * Determines whether the DHIS server can be accessed, ie. if the server
- * is running (in the context of a remote server also if the network is up).
- */
-function serverIsAccessible()
-{
- $.ajax( {
- url: "../dhis-web-commons-stream/ping.action",
- success: function( data, textStatus, jqXHR ) {
- return true;
- },
- error: function( jqXHR, textStatus, errorThrown ) {
- return false;
- }
- } );
-}
-
-/**
* Go back using the document.referrer.
*
* @param defaultUrl if there is not document.referrer, use this url
=== added file 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/javascripts/dhis2/dhis2.availability.js'
--- dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/javascripts/dhis2/dhis2.availability.js 1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/javascripts/dhis2/dhis2.availability.js 2011-08-16 12:16:33 +0000
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2004-2010, University of Oslo
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * * Neither the name of the HISP project nor the names of its contributors may
+ * be used to endorse or promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+dhis2.util.namespace( 'dhis2.availability' );
+
+dhis2.availability._isAvailable = undefined;
+dhis2.availability._isLoggedIn = -1;
+dhis2.availability._availableTimeoutHandler = undefined;
+
+/**
+ * Start availability check, will trigger dhis2.online / dhis2.offline events
+ * when availability changes.
+ *
+ * @param checkInterval How often to check for availability, default is 1000.
+ */
+dhis2.availability.startAvailabilityCheck = function( checkInterval )
+{
+ if ( checkInterval === undefined )
+ {
+ checkInterval = 1000;
+ }
+
+ function _checkAvailability()
+ {
+ $.ajax( {
+ url : "../dhis-web-commons-stream/ping.action",
+ success : function( data, textStatus, jqXHR )
+ {
+ dhis2.availability._isAvailable = true;
+ var loggedIn = data.loggedIn ? true : false;
+
+ if ( loggedIn != dhis2.availability._isLoggedIn )
+ {
+ dhis2.availability._isLoggedIn = loggedIn;
+ $( document ).trigger( "dhis2.online", [ loggedIn ]);
+ }
+ },
+ error : function( jqXHR, textStatus, errorThrown )
+ {
+ if ( dhis2.availability._isAvailable )
+ {
+ dhis2.availability._isAvailable = false;
+ $( document ).trigger( "dhis2.offline" );
+ }
+ }
+ } ).complete( function()
+ {
+ _availableTimeoutHandler = setTimeout( _checkAvailability, checkInterval );
+ } );
+ }
+
+ _availableTimeoutHandler = setTimeout( _checkAvailability, checkInterval );
+}
+
+/**
+ * Stop checking for availability.
+ */
+dhis2.availability.stopAvailabilityCheck = function()
+{
+ clearTimeout( _availableTimeoutHandler );
+}
=== modified file 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/main.vm'
--- dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/main.vm 2011-08-09 09:48:09 +0000
+++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/main.vm 2011-08-16 12:16:33 +0000
@@ -52,6 +52,7 @@
+
=== added file 'dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/commons/action/GetPingAction.java'
--- dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/commons/action/GetPingAction.java 1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/commons/action/GetPingAction.java 2011-08-16 12:16:33 +0000
@@ -0,0 +1,82 @@
+package org.hisp.dhis.commons.action;
+
+/*
+ * Copyright (c) 2004-2010, University of Oslo
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * * Neither the name of the HISP project nor the names of its contributors may
+ * be used to endorse or promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+import org.hisp.dhis.user.CurrentUserService;
+import org.hisp.dhis.user.User;
+
+import com.opensymphony.xwork2.Action;
+
+/**
+ * @author mortenoh
+ */
+public class GetPingAction
+ implements Action
+{
+ // -------------------------------------------------------------------------
+ // Dependencies
+ // -------------------------------------------------------------------------
+
+ private CurrentUserService currentUserService;
+
+ public void setCurrentUserService( CurrentUserService currentUserService )
+ {
+ this.currentUserService = currentUserService;
+ }
+
+ // -------------------------------------------------------------------------
+ // Input & Output
+ // -------------------------------------------------------------------------
+
+ private Boolean loggedIn;
+
+ public Boolean isLoggedIn()
+ {
+ return loggedIn;
+ }
+
+ // -------------------------------------------------------------------------
+ // Action implementation
+ // -------------------------------------------------------------------------
+
+ public String execute()
+ {
+ User user = currentUserService.getCurrentUser();
+
+ if ( user == null )
+ {
+ loggedIn = false;
+ }
+ else
+ {
+ loggedIn = true;
+ }
+
+ return SUCCESS;
+ }
+}
=== modified file 'dhis-2/dhis-web/dhis-web-commons/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-2/dhis-web/dhis-web-commons/src/main/resources/META-INF/dhis/beans.xml 2011-08-12 13:23:47 +0000
+++ dhis-2/dhis-web/dhis-web-commons/src/main/resources/META-INF/dhis/beans.xml 2011-08-16 12:16:33 +0000
@@ -617,4 +617,8 @@
+
+
+
+
=== modified file 'dhis-2/dhis-web/dhis-web-commons/src/main/resources/dhis-web-commons.xml'
--- dhis-2/dhis-web/dhis-web-commons/src/main/resources/dhis-web-commons.xml 2011-08-09 09:48:09 +0000
+++ dhis-2/dhis-web/dhis-web-commons/src/main/resources/dhis-web-commons.xml 2011-08-16 12:16:33 +0000
@@ -728,12 +728,6 @@
plainTextError
-
-
- /dhis-web-commons/ajax/jsonResponseSuccess.vm
-
-
-
@@ -743,10 +737,12 @@
-
-
-
-
+
+
+
+ /dhis-web-commons/ajax/jsonPing.vm
+
+
=== modified file 'dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/javascript/entry.js'
--- dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/javascript/entry.js 2011-08-15 13:48:42 +0000
+++ dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/javascript/entry.js 2011-08-16 12:16:33 +0000
@@ -208,6 +208,17 @@
$("#orgUnitTree").one("ouwtLoaded", function() {
saveDataValuesInLocalStorage();
});
+
+ dhis2.availability.startAvailabilityCheck();
+
+ $(document).bind("dhis2.online", function(event, loggedIn) {
+ console.log("dhis2 is online")
+ console.log("loggedIn: " + loggedIn)
+ })
+
+ $(document).bind("dhis2.offline", function() {
+ console.log("dhis2 is offline")
+ })
})
function saveDataValuesInLocalStorage() {
@@ -278,8 +289,9 @@
function handleError( jqXHR, textStatus, errorThrown )
{
- markValue( COLOR_RED );
- window.alert( i18n_saving_value_failed_status_code + '\n\n' + textStatus );
+ setHeaderMessage( "Unable to contact server. Data will be stored locally." )
+// markValue( COLOR_RED );
+// window.alert( i18n_saving_value_failed_status_code + '\n\n' + textStatus );
}
function markValue( color )