#!/usr/bin/perl -w
#
# TWiki Enterprise Collaboration Platform, http://TWiki.org/
#
# Copyright (C) 1999-2006 Peter Thoeny, peter@thoeny.org
# and TWiki Contributors.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version. For
# more details read LICENSE in the root of this distribution.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
# As per the GPL, removal of this notice is prohibited.

BEGIN {
    # Set default current working directory (needed for mod_perl)
    if( $ENV{"SCRIPT_FILENAME"} && $ENV{"SCRIPT_FILENAME"} =~ /^(.+)\/[^\/]+$/ ) {
        chdir $1;
    }
    # Set library paths in @INC, at compile time
    unshift @INC, '.';
    require 'setlib.cfg';
}


use strict;
use CGI::Carp qw( fatalsToBrowser );
use CGI;
use File::Temp qw(:POSIX);
use TWiki;
use TWiki::Render;
use TWiki::Meta;
use TWiki::Func;

my $log="";

my $query = new CGI;

my $thePathInfo = $query->path_info();
my $theRemoteUser = $query->remote_user();
my $theTopic = $query->param( 'topic' );
my $theUrl = $query->url;

my( $topic, $webName, $scriptUrlPath, $userName ) =
  TWiki::initialize( $thePathInfo, $theRemoteUser,
                     $theTopic, $theUrl, $query );



use TWiki::Contrib::LocalizeContrib;

my $allowLocalize = TWiki::Func::getPreferencesValue( "ALLOWLOCALIZE"); 
my $isAllowed      = 0;

for my $item (split(/,/, $allowLocalize)) {
  $isAllowed = 1 if($item eq "*");
  $isAllowed = 1 if(TWiki::Func::getWikiName() eq $item);
}


if($isAllowed == 0) {
   TWiki::Func::redirectCgiQuery($query, TWiki::Func::getOopsUrl($webName, $theTopic, "oopsaccessdenied"));
  exit;
}

if($query->param("method")) {
 TWiki::Contrib::LocalizeContrib::methodSaveData($query->param("json")) if($query->param("method") eq "save_data");
 TWiki::Contrib::LocalizeContrib::methodSaveChange($query->param("json")) if($query->param("method") eq "save_change");
 TWiki::Contrib::LocalizeContrib::methodGetLanguages() if($query->param("method") eq "get_languages");
 TWiki::Contrib::LocalizeContrib::methodGetAttachments($query->param("lang"), $query->param("skin")) if($query->param("method") eq "get_attachments");
 TWiki::Contrib::LocalizeContrib::methodGetData($query->param("filename"))      if($query->param("method") eq "get_data");
 TWiki::Contrib::LocalizeContrib::methodGetDataPart($query->param("json"))      if($query->param("method") eq "get_data_part");
 TWiki::Contrib::LocalizeContrib::methodCreateLanguage($query->param("lang"))   if($query->param("method") eq "create_language");
 TWiki::Contrib::LocalizeContrib::methodCreateSkin($query->param("lang"), $query->param("skin")) if($query->param("method") eq "create_skin");
 TWiki::Contrib::LocalizeContrib::methodRenameAttachment($query->param("json")) if($query->param("method") eq "rename_attachment");
 TWiki::Contrib::LocalizeContrib::methodRemoveAttachment($query->param("skin"), $query->param("attachment")) if($query->param("method") eq "remove_attachment");
 TWiki::Contrib::LocalizeContrib::methodGetSkinList($query->param("filename"))      if($query->param("method") eq "get_skin_list");
 TWiki::Contrib::LocalizeContrib::methodDownloadAttachment($query->param("filename"), $query->param("skin")) if($query->param("method") eq "download");
 TWiki::Contrib::LocalizeContrib::methodGetAttachmentData($query->param("attachment"), $query->param("skin")) if($query->param("method") eq "get_attachment_data");
 TWiki::Contrib::LocalizeContrib::methodSaveAttachmentData($query->param("attachment"), $query->param("skin"), $query->param("data")) if($query->param("method") eq "save_attachment_data");
 TWiki::Contrib::LocalizeContrib::methodDownloadPo($query->param("filename")) if($query->param("method") eq "download_po");

 if($query->param("method") eq "upload_attachment") {
    if($ENV{"REQUEST_METHOD"} eq "GET") {
       TWiki::Contrib::LocalizeContrib::methodUploadAttachment($query->param("name"), $query->param("skinName"));
    } else {
       TWiki::Contrib::LocalizeContrib::methodUploadAttachmentPost($query->param("uploadfile"), $query->upload("uploadfile"), $query->param("attName"), $query->param("skinName")); 
    }
 }

} else {
  TWiki::Contrib::LocalizeContrib::editPOFile($webName, $userName, $thePathInfo, $query);
}

