]> source.dussan.org Git - nextcloud-server.git/commitdiff
add function to detect always the timezone
authorGeorg Ehrke <ownclouddev@georgswebsite.de>
Mon, 2 Jan 2012 10:35:50 +0000 (11:35 +0100)
committerGeorg Ehrke <ownclouddev@georgswebsite.de>
Mon, 2 Jan 2012 10:35:50 +0000 (11:35 +0100)
apps/calendar/ajax/gettimezonedetection.php [new file with mode: 0644]
apps/calendar/ajax/guesstimezone.php
apps/calendar/ajax/timezonedetection.php [new file with mode: 0644]
apps/calendar/index.php
apps/calendar/js/geo.js
apps/calendar/js/settings.js
apps/calendar/templates/settings.php

diff --git a/apps/calendar/ajax/gettimezonedetection.php b/apps/calendar/ajax/gettimezonedetection.php
new file mode 100644 (file)
index 0000000..ae58370
--- /dev/null
@@ -0,0 +1,11 @@
+<?php
+/**
+ * Copyright (c) 2011, 2012 Georg Ehrke <ownclouddev at georgswebsite dot de>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+require_once ("../../../lib/base.php");
+OC_JSON::checkLoggedIn();
+OC_JSON::checkAppEnabled('calendar');
+OC_JSON::success(array('detection' => OC_Preferences::getValue(OC_USER::getUser(), 'calendar', 'timezonedetection')));
\ No newline at end of file
index 07aadc5cb1238150a58e1371c99d0f34cdbdd748..41aea26985ffd58799faf04ed82e2f6559180564 100755 (executable)
@@ -1,6 +1,6 @@
 <?php
 /**
- * Copyright (c) 2011 Georg Ehrke <ownclouddev at georgswebsite dot de>
+ * Copyright (c) 2011, 2012 Georg Ehrke <ownclouddev at georgswebsite dot de>
  * This file is licensed under the Affero General Public License version 3 or
  * later.
  * See the COPYING-README file.
@@ -24,10 +24,19 @@ OC_JSON::checkAppEnabled('calendar');
 $l = new OC_L10N('calendar');
 $lat = $_GET['lat'];
 $long = $_GET['long'];
+if(OC_Preferences::getValue(OC_USER::getUser(), 'calendar', 'position') == $lat . '-' . $long && OC_Preferences::getValue(OC_USER::getUser(), 'calendar', 'timezone') != null){
+       OC_JSON::success();
+       exit;
+}
+OC_Preferences::setValue(OC_USER::getUser(), 'calendar', 'position', $lat . '-' . $long);
 $geolocation = file_get_contents('http://ws.geonames.org/timezone?lat=' . $lat . '&lng=' . $long);
 //Information are by Geonames (http://www.geonames.org) and licensed under the Creative Commons Attribution 3.0 License
 $geoxml = simplexml_load_string($geolocation);
 $geoarray = make_array_out_of_xml($geoxml);
+if($geoarray['timezone']['timezoneId'] == OC_Preferences::getValue(OC_USER::getUser(), 'calendar', 'timezone')){
+       OC_JSON::success();
+       exit;
+}
 if(in_array($geoarray['timezone']['timezoneId'], DateTimeZone::listIdentifiers())){
        OC_Preferences::setValue(OC_USER::getUser(), 'calendar', 'timezone', $geoarray['timezone']['timezoneId']);
        $message = array('message'=> $l->t('New Timezone:') . $geoarray['timezone']['timezoneId']);
@@ -36,4 +45,4 @@ if(in_array($geoarray['timezone']['timezoneId'], DateTimeZone::listIdentifiers()
        OC_JSON::error();
 }
 
-?>
\ No newline at end of file
+?>
diff --git a/apps/calendar/ajax/timezonedetection.php b/apps/calendar/ajax/timezonedetection.php
new file mode 100644 (file)
index 0000000..77e4c4f
--- /dev/null
@@ -0,0 +1,17 @@
+<?php
+/**
+ * Copyright (c) 2011, 2012 Georg Ehrke <ownclouddev at georgswebsite dot de>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+require_once ("../../../lib/base.php");
+OC_JSON::checkLoggedIn();
+OC_JSON::checkAppEnabled('calendar');
+if($_POST['timezonedetection'] == 'on'){
+       OC_Preferences::setValue(OC_USER::getUser(), 'calendar', 'timezonedetection', 'true');
+}else{
+       OC_Preferences::setValue(OC_USER::getUser(), 'calendar', 'timezonedetection', 'false');
+}
+OC_JSON::success();
+
index 7561f987b21a64d58e501d769d7652934aa6c63c..a2042afddf15fe981771d869c6dc697ec0bbb156 100644 (file)
@@ -32,7 +32,7 @@ if(OC_Preferences::getValue(OC_USER::getUser(), 'calendar', 'currentview', 'mont
 
 OC_Util::addScript('3rdparty/fullcalendar', 'fullcalendar');
 OC_Util::addStyle('3rdparty/fullcalendar', 'fullcalendar');
-if(OC_Preferences::getValue(OC_USER::getUser(), "calendar", "timezone") == null){
+if(OC_Preferences::getValue(OC_USER::getUser(), "calendar", "timezone") == null || OC_Preferences::getValue(OC_USER::getUser(), 'calendar', 'timezonedetection') == 'true'){
        OC_UTIL::addScript('calendar', 'geo');
 }
 OC_Util::addScript('calendar', 'calendar');
index 744d960b75f6c08a4a715462cadb91b74ef4289a..ae6a971e938f94b4bd52bbd281bc87a40c3dc63d 100755 (executable)
@@ -8,7 +8,7 @@ if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(function(position) {
                $.getJSON(OC.filePath('calendar', 'ajax', 'guesstimezone.php?lat=' + position.coords.latitude + '&long=' + position.coords.longitude + ''),
                function(data){
-                       if (data.status == 'success'){
+                       if (data.status == 'success' && typeof(data.message) != 'undefined'){
                                $('#notification').html(data.message);
                                $('#notification').attr('title', 'CC BY 3.0 by Geonames.org');
                                $('#notification').slideDown();
index 6c00be06b3928ee9b61de301b9e89dcc385a806d..613e2d030db0eabbff3401df06e1ff66dbc050b5 100644 (file)
@@ -8,6 +8,12 @@ $(document).ready(function(){
                });
                return false;
        });
+       $('#timezonedetection').change( function(){
+               var post = $('#timezonedetection').serialize();
+               $.post( OC.filePath('calendar', 'ajax', 'timezonedetection.php'), post, function(data){
+                       
+               });
+       });
        $("#timezone").chosen();
        $("#firstdayofweek").change( function(){
                var data = $("#firstdayofweek").serialize();
@@ -52,6 +58,11 @@ $(document).ready(function(){
        $.getJSON(OC.filePath('calendar', 'ajax', 'duration.php'), function(jsondata, status) {
                $("#duration").val(jsondata.duration);
        });
+       $.getJSON(OC.filePath('calendar', 'ajax', 'gettimezonedetection.php'), function(jsondata, status){
+               if(jsondata.detection == 'true'){
+                       $('#timezonedetection').attr('checked', 'checked');
+               }
+       });
        $("#weekend").change( function(){
                var data = $("#weekend").serialize();
                $.post( OC.filePath('calendar', 'ajax', 'setdaysofweekend.php'), data, function(data){
index 56fb55d235c7dd342d1b6ae26aa636fb6af89df3..fc8e0e061d966d995367ce7d8293b25c3b523eac 100644 (file)
@@ -27,7 +27,7 @@
                     $continent=$ex[0];
                     echo '<option value="'.$timezone.'"'.($_['timezone'] == $timezone?' selected="selected"':'').'>'.$city.'</option>';
                 endforeach;?>
-            </select></td></tr>
+            </select><input type="checkbox" name="timezonedetection" id="timezonedetection"><label for="timezonedetection"><?php echo $l->t('Check always for changes of the timezone'); ?></label></td></tr>
 
             <tr><td><label for="timeformat" class="bold"><?php echo $l->t('Timeformat');?></label></td><td>
                 <select style="display: none;" id="timeformat" title="<?php echo "timeformat"; ?>" name="timeformat">