# 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: Review.pm 3043 2008-03-31 14:00:38Z josh $

package BigMed::App::Web::Review;
use strict;
use warnings;
use utf8;
use Carp;
$Carp::Verbose = 1;
use base qw(BigMed::App::Web::CP);
use BigMed::Site;

sub setup {
    my $app = shift;
    $app->set_cp_selected_nav('Settings');
    $app->start_mode('review');
    $app->run_modes(
        'AUTOLOAD' => sub { $_[0]->rm_review() },

        #registration info
        'review'    => 'rm_review',
        'ajax-delete' => 'rm_ajax_delete',
    );
    return;
}

sub cgiapp_prerun {
    my $app = shift;
    $app->SUPER::cgiapp_prerun;
    $app->require_privilege_level(6); #admin only
    return;
}


###########################################################
# RUN MODES
###########################################################


sub rm_review {
    my $app     = shift;
    my %options = @_;
    my $select  =
      BigMed::Site->select( {},
        { sort => ['name', 'create_time'], order => ['ascend', 'descend'] } )
      or $app->error_stop;

    my $this_id = $app->current_site->id;
    my ( $site, @sites );
    while ( $site = $select->next ) {
        push @sites,
          { name => $site->name,
            id   => ( $site->id == $this_id ? 0 : $site->id ),
            url  => $app->build_url(
                script => 'bm-editor.cgi',
                rm     => 'menu',
                site   => $site->id,
            ),
            created => $app->format_time( $site->create_time ),
          };
    }
    $app->error_stop if !defined $site;

    #page title and message
    my ( $title, $message ) = $app->title_and_message(
        field_msg => $options{field_msg},
        message   => $options{message},
        title     => $options{head} || 'REVIEW_Review Sites',
    );

    #breadcrumbs
    my @bc = (
        {   bc_label => 'BM_CP_NAVLABEL_Settings',
            bc_url   => $app->build_url(
                script => 'bm-prefs.cgi',
                rm     => 'main-menu',
                site   =>  $this_id,
            ),
        },
        { bc_label => $options{head} || 'REVIEW_Review Sites', },
    );
    $app->set_cp_breadcrumbs(@bc);
 
    #javascript stuff
    $app->js_add_script( $app->env('BMADMINURL') . '/js/bm-actionmenu.js' );
    $app->js_make_toggle( 'deleteHelpLink', 'deleteHelpBox', 'slide' );
    $app->js_add_onload(
      'BM.ActionMenu.update("reviewActionMenu","reviewMenu");'
    );

    return $app->html_template_screen(
        'screen_review.tmpl',
        bmcp_title => $title,
        message    => $message,
        sites      => \@sites,
    );
}

sub rm_ajax_delete {
    my $app = shift;
    $app->require_post() or return $app->ajax_system_error;
    
    #can't delete the site you're signed into, just ignore it if we have it
    my $this_id = $app->current_site->id;
    my @items = grep { $_ != $this_id } $app->utf8_param('c');
    
    if (@items) {
        my $sites = BigMed::Site->select({id=>\@items})
          or return $app->ajax_system_error;
        $sites->trash_all or return $app->ajax_system_error;
    }
    return $app->ajax_json_response({valid=>1});
}

1;
