# Copyright 2002-2008 Josh Clark and Global Moxie, LLC. This code cannot be
# redistributed without permission from globalmoxie.com.  For more
# information, consult your Big Medium license.
#
# $Id: Updater.pm 3043 2008-03-31 14:00:38Z josh $

package BigMed::App::Web::Updater;
use strict;
use warnings;
use utf8;
use Carp;
$Carp::Verbose = 1;
use base qw(BigMed::App::Web);
use BigMed::Update;

sub setup {
    my $app = shift;
    $app->start_mode('update');
    $app->run_modes(
        'AUTOLOAD' => sub { $_[0]->rm_update() },
        'update'   => 'rm_update',
        'do-update' => 'rm_do_update',
    );
    return;
}

sub rm_update {
    my $app       = shift;
    my $login_url =
      $app->build_url( script => 'bm-login.cgi', rm => 'login' );

    my $finished =
      $app->language(
        ['UPDATER_Update Complete', $app->bigmed->version, $login_url] );

    my $this_version      = $app->env('VERSION');
    my $installed_version = $app->bigmed->VERSION;
    my $up_to_date = !$this_version || $this_version >= $installed_version;
    if (!$up_to_date) { #trigger the status bar
        my $update_url = $app->build_url(
            script => 'bm-update.cgi',
            rm => 'do-update',
        );

        $app->js_add_onload(
            'new BM.StatusDriver("bmcpUpdateStatus","'
          . $update_url
          . '",{onfinish:function(){'
          . 'BM.FX.hide($("bmcpUpdateStatus").parentNode,{effect:"slide"});'
          . 'BM.FX.reveal("updateComplete")'
          . '}});' );
    }
    
    return $app->html_template_screen(
        'screen_updater.tmpl',
        bmcp_title => $app->language(
            ['UPDATER_HEAD_Updating to Version', BigMed->version]
        ),
        complete => $finished,
        disp_updated => ( $up_to_date ? 'block' : 'none' ),
    );

}

sub rm_do_update {
    my $app = shift;
    BigMed::Update->do_update_statusbar($app->bigmed);
    return;
}

1;

__END__

