#!%PERL%
# Copyright (c) vhffs project and its contributors
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without 
# modification, are permitted provided that the following conditions 
# are met:
#
# 1. Redistributions of source code must retain the above copyright 
#   notice, this list of conditions and the following disclaimer.
#2. 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.
#3. Neither the name of vhffs 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.

use strict;
use utf8;
use POSIX qw(locale_h);
use HTML::Template;
use locale;
use Locale::gettext;
use CGI;
use CGI::Session;
use Encode;

use lib '%VHFFS_LIB_DIR%';
use Vhffs::User;
use Vhffs::Group;
use Vhffs::Main;
use Vhffs::Panel::Main;
use Vhffs::Panel::Menu;
use Vhffs::Panel::Object;
use Vhffs::Panel::Template;
use Vhffs::Services::Web;
use Vhffs::Acl;
use Vhffs::Constants;

my $panel = new Vhffs::Panel::Main();
exit 0 unless $panel;
my $session = $panel->get_session;
exit 0 unless $session;

my $vhffs = $panel->{'vhffs'};
my $user = $panel->{'user'};
my $cgi = $panel->{'cgi'};
my $servername = $cgi->param("name");
my $template;
my $templatedir = $vhffs->get_config->get_templatedir;

my $web = Vhffs::Services::Web::get_by_servername( $vhffs , $servername );

if( ! defined($web) ) {

	$template = new HTML::Template( filename => $templatedir."/panel/misc/simplemsg.tmpl" );
	my $message = gettext( "Cannot get informations on this object");
	$template->param( MESSAGE => $message );

} elsif( $web->get_status != Vhffs::Constants::ACTIVATED ) {
	
	$template = new HTML::Template( filename => $templatedir."/panel/misc/simplemsg.tmpl" );
	my $message = gettext( "This object is not functionnal yet. Please wait creation or moderation.");
	$template->param( MESSAGE => $message );
} elsif( !$user->can_view($web) ) {
	$template = new HTML::Template( filename => $templatedir."/panel/misc/simplemsg.tmpl" );
	my $message = gettext("You're not allowed to do this (ACL rights)");
	$template->param( MESSAGE => $message );
} else {

    if(defined($cgi->param('save_prefs_submit'))) {
        save_prefs();
    }
	$template = new Vhffs::Panel::Template( filename => $templatedir."/panel/web/prefs.tmpl" );

	$template->param( TEXT_TITLE => gettext("Web Area Administration") );

	$template->param( TEXT_SERVERNAME => gettext("Address (Servername)") );
	$template->param( VALUE_SERVERNAME => $web->get_servername );

	#Show the current description	
	$template->param( TEXT_DESCRIPTION => gettext("Description of your webarea") );	
	$template->param( VALUE_DESCRIPTION => $web->get_description );
	$template->param( TEXT_SEND => gettext("Modify") );

	$template->param( TEXT_ACL_ADMIN => gettext("Admin Rights on this object (ACL)") );
	$template->param( EXPLAIN_ADMIN_ACL => gettext("You can Manage rights on this service for each user in the VHFFS database. Please read help before manage it.") );
	$template->param( ADMIN_ACL => gettext("Ok, go to ACL admin") );
	$template->param( VALUE_OID => $web->get_oid );

	$template->param( TEXT_DELETE_WEB => gettext("Delete this web area") );
	$template->param( TEXT_BEFORE_DELETE => gettext("This action is non-reversible. This web area will be DESTROYED.") );
	$template->param( ASK_DELETE_WEB => gettext("Are you SURE you want DELETE this Web Area ?") );
	$template->param( YES => gettext("Yes I'm sure of what I do") );
	$template->param( NO => gettext("No, I'm not sure, I prefer to keep it.") );
	$template->param( TEXT_DELETE => gettext("Delete") );

	my $adminpart = Vhffs::Panel::Object::admin_part( $panel, $web );
	$template->param( ADMIN_PART => $adminpart->output ) if( defined $adminpart );
}

$panel->build( $template );
$panel->display;

sub save_prefs {
    my $description = Encode::decode_utf8( $cgi->param('description') );
    if(!$user->can_modify($web)) {
        $panel->add_error( gettext('You are not allowed to modify this web area') );
        return;
    }

    if(!defined $description) {
        $panel->add_error( gettext('CGI Error !') );
        return;
    }

    if($description =~ /^\s*$/) {
        $panel->add_error( gettext('You have to enter a description') );
        return;
    }

    $web->set_description($description);
    if($web->commit < 0) {
        $panel->add_error( gettext('Unable to apply modifications') );
    } else {
        $panel->add_info( gettext('Web area successfully modified') );
    }
}

