Title: [opsview] [13235] About page now shows if the latest Opsview is installed
Revision
13235
Author
tvoon
Date
2013-08-14 21:10:01 +0100 (Wed, 14 Aug 2013)

Log Message

About page now shows if the latest Opsview is installed

Modified Paths


Modified: trunk/opsview-web/lib/Opsview/Web/Controller/Admin/Ajax.pm
===================================================================
--- trunk/opsview-web/lib/Opsview/Web/Controller/Admin/Ajax.pm	2013-08-14 20:08:10 UTC (rev 13234)
+++ trunk/opsview-web/lib/Opsview/Web/Controller/Admin/Ajax.pm	2013-08-14 20:10:01 UTC (rev 13235)
@@ -30,6 +30,7 @@
 
 use DateTime;
 use Opsview::Reloadtime;
+use Opsview::Utils::UpdateChecker;
 
 sub auto : Private {
     my ( $self, $c ) = @_;
@@ -85,6 +86,38 @@
     $c->stash( ResultSet => { Results => $a } );
 }
 
+sub update_checker : Local : RequiresRole(ADMINACCESS) {
+    my ( $self, $c ) = @_;
+    my $updater = Opsview::Utils::UpdateChecker->new();
+    $updater->set_options(
+        {
+            include_advanced_stats =>
+              $c->stash->{system_preference}->send_anon_data,
+        }
+    );
+    my $stats = $updater->collect_stats();
+    $updater->post_stats;
+
+    my $res = {};
+
+    if ( !$updater->is_success ) {
+        $res->{status}  = $updater->code;
+        $res->{message} = $updater->message;
+        $c->log->warn(
+            "Update checker: Got code=$res->{status} with message=$res->{message}"
+        );
+    }
+    else {
+        my $result = $updater->result;
+        $res->{status}      = 200;
+        $res->{new_version} = $result->{new_version};
+        $res->{message}     = $result->{additional_output}
+          || $result->{unknown_state_message};
+        $res->{return_code} = $result->{return_code};
+    }
+    $c->stash( ResultSet => $res );
+}
+
 # ACLs from the check_save_access
 sub check_credit : Local {
     my ( $self, $c ) = @_;

Modified: trunk/opsview-web/lib/Opsview/Web/Controller/Root.pm
===================================================================
--- trunk/opsview-web/lib/Opsview/Web/Controller/Root.pm	2013-08-14 20:08:10 UTC (rev 13234)
+++ trunk/opsview-web/lib/Opsview/Web/Controller/Root.pm	2013-08-14 20:10:01 UTC (rev 13235)
@@ -898,7 +898,8 @@
                   $c->model("RuntimeSchema::OpsviewHostServices")->count,
                 num_slaves =>
                   $c->model("OpsviewSchema::Monitoringservers")->count() - 1,
-            }
+            },
+            update_checker => 1,
         );
     }
 }

Modified: trunk/opsview-web/lib/Opsview/Web/I18N/i_default.po
===================================================================
--- trunk/opsview-web/lib/Opsview/Web/I18N/i_default.po	2013-08-14 20:08:10 UTC (rev 13234)
+++ trunk/opsview-web/lib/Opsview/Web/I18N/i_default.po	2013-08-14 20:10:01 UTC (rev 13235)
@@ -312,6 +312,18 @@
 msgid "opsview"
 msgstr "Opsview"
 
+msgid "ui.about.update.checking"
+msgstr "Checking for update..."
+
+msgid "ui.about.update.cannotCheckNow"
+msgstr "Cannot check versions at the moment. Please try again later"
+
+msgid "ui.about.update.upToDate"
+msgstr "Up to date!"
+
+msgid "ui.about.update.newVersionAvailable"
+msgstr "New version available"
+
 msgid "ui.about.heading.intellectual_property"
 msgstr "Intellectual Property"
 

Modified: trunk/opsview-web/root/about
===================================================================
--- trunk/opsview-web/root/about	2013-08-14 20:08:10 UTC (rev 13234)
+++ trunk/opsview-web/root/about	2013-08-14 20:10:01 UTC (rev 13235)
@@ -1,6 +1,39 @@
+[% PROCESS functions_base; %]
 <div class="infobox">
 [% INCLUDE "version_headings" %]
 
+[% IF update_checker %]
+<div id="update_checker">
+[% c.loc("ui.about.update.checking") | html %] [% indicator_icon( { show => 1, inline => 1 } ) %]
+</div>
+<script type="text/_javascript_">
+jQuery.ajax({
+  url: '[% c.uri_for("/admin/ajax/update_checker").path | escape_js_string %]',
+  method: 'GET',
+  dataType: 'json',
+  success: function(data) {
+    if (data.ResultSet.status!=200) {
+        jQuery("#update_checker").text("[% c.loc("ui.about.update.cannotCheckNow") | escape_js_string %]");
+    } else {
+        if (data.ResultSet.return_code==0) {
+            jQuery("#update_checker").text("[% c.loc("ui.about.update.upToDate") | escape_js_string %]");
+        } else if (data.ResultSet.return_code==1) {
+            var t = "[% c.loc("ui.about.update.newVersionAvailable") | escape_js_string %]: " + data.ResultSet.new_version;
+            if (data.ResultSet.message) {
+                t = t + " - " + data.ResultSet.message;
+            }
+            jQuery("#update_checker").text(t);
+        } else {
+            jQuery("#update_checker").text("[% c.loc("messages.generic.error") | html %]: " + data.ResultSet.message);
+        }
+    }
+
+  }
+});
+</script>
+<br/>
+[% END %]
+
 [% IF about_system %]
 <table class="systembox">
 <tr class="odd">
@@ -16,7 +49,6 @@
  <td class="centered">[% about_system.num_services %]</td>
 </tr>
 </table>
-
 [% END %]
 
 <div class="licence">

Modified: trunk/opsview-web/root/functions_base
===================================================================
--- trunk/opsview-web/root/functions_base	2013-08-14 20:08:10 UTC (rev 13234)
+++ trunk/opsview-web/root/functions_base	2013-08-14 20:10:01 UTC (rev 13235)
@@ -6,7 +6,8 @@
 MACRO indicator_icon( args ) BLOCK;
   display = (args.show) ? "" : ' style="display:none"';
   id = (args.id) ? ' id="' _ args.id _ '"' : "";
-  %]<img src="" images.indicator | html %]" alt="[% c.loc("ui.admin.label.indicator") | html %]" [% display; id %]/>[%
+  inline = (args.inline) ? ' style="height:1em"' : '';
+  %]<img src="" images.indicator | html %]" alt="[% c.loc("ui.admin.label.indicator") | html %]" [% display; id; inline %]/>[%
 END;
 
 MACRO sched_downtime_icon( args ) BLOCK;

_______________________________________________
Opsview-checkins mailing list
Opsview-checkins@lists.opsview.org
http://lists.opsview.org/lists/listinfo/opsview-checkins

Reply via email to