<?php
/**
 * Joom!Fish - Multi Lingual extention and translation manager for Joomla!
 * Copyright (C) 2003-2009 Think Network GmbH, Munich
 *
 * All rights reserved.  The Joom!Fish project is a set of extentions for
 * the content management system Joomla!. It enables Joomla!
 * to manage multi lingual sites especially in all dynamic information
 * which are stored in the database.
 *
 * 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.
 *
 * 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.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
 *
 * The "GNU General Public License" (GPL) is available at
 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
 * -----------------------------------------------------------------------------
 * $Id: mod_translate.php 1361 2009-06-22 20:06:09Z akede $
 * @package joomfish
 * @subpackage mod_translate
 *
*/

// ensure this file is being included by a parent file
defined( '_JEXEC' ) or die( 'Direct Access to this location is not allowed.' );

include_once( JPATH_SITE .DS. 'components' .DS. 'com_joomfish' .DS. 'helpers' .DS. 'defines.php' );
JLoader::register('JoomfishManager', JOOMFISH_ADMINPATH .DS. 'classes' .DS. 'JoomfishManager.class.php' );
JLoader::register('JoomFishVersion', JOOMFISH_ADMINPATH .DS. 'version.php' );

JHTML::_('behavior.modal');

$linkType = $params->get("linktype","newwindow");

$value = array();
$value[]="com_content#content#cid#task#!edit";
$value[]="com_frontpage#content#cid#task#!edit";
$value[]="com_sections#sections#cid#task#!edit";
$value[]="com_categories#categories#cid#task#!edit";
$value[]="com_contact#contact_details#cid#!edit";
$value[]="com_menus#menu#cid#task#!edit";
$value[]="com_modules#modules#cid#task#!edit#client#!1";
$value[]="com_newsfeeds#newsfeeds#cid#task#!edit";
$value[]="com_poll#polls#cid#task#!edit";

$components = $params->get("components",$value);
$mapping=null;
foreach ($components as $component){
	$map = explode("#",$component);
	if (count($map)>=3 && trim($map[0])==$option){
		if (count($map)>3 && (count($map)-3)%2==0){
			$matched=true;
			for ($p=0;$p<(count($map)-3)/2;$p++){
				$testParam = JRequest::getVar( trim($map[3+$p*2]), '');
				if ((strpos(trim($map[4+$p*2]),"!")!==false && strpos(trim($map[4+$p*2]),"!")==0)){
					if ($testParam == substr(trim($map[4+$p*2]),1)){
						$matched=false;
						break;
					}
				}
				else {
					if ($testParam != trim($map[4+$p*2])){
						$matched=false;
						break;
					}
				}
			}
			if ($matched) {
				$mapping=$map;
				break;
			}
		}
		else {
			$mapping=$map;
			break;
		}
	}
}
// Add the standard style to the site
JHTML::stylesheet("mod_translate.css","administrator/modules/mod_translate/");
$joomFishManager = & JoomFishManager::getInstance();// JoomFishManager(JPATH_ADMINISTRATOR."/components/com_joomfish");

if ($mapping!=null){

	//Global definitions
	if( !defined('DS') ) {
		define( 'DS', DIRECTORY_SEPARATOR );
	}

	if( !defined('JOOMFISH_PATH') ) {
		define( 'JOOMFISH_PATH', JPATH_SITE .'components'.DS.'com_joomfish' );
		define( 'JOOMFISH_ADMINPATH', JPATH_ADMINISTRATOR .DS.'components'.DS.'com_joomfish' );
		define( 'JOOMFISH_LIBPATH', JOOMFISH_ADMINPATH .DS. 'libraries' );
		define( 'JOOMFISH_LANGPATH', JOOMFISH_PATH .DS. 'language' );
		define( 'JOOMFISH_URL', '/components/com_joomfish');
	}

	$lang = JFactory::getLanguage();
	$lang->load('com_joomfish');

	// load languages via translation model
	JLoader::register('TranslateModelTranslate', JOOMFISH_ADMINPATH.DS.'models'.DS.'translate.php');
	$model = new TranslateModelTranslate();
	$langActive = $model->getLanguages();		// all languages even non active once
	$defaultLang = $model->getDefaultLanguage();
	$params = JComponentHelper::getParams('com_joomfish');
	$showDefaultLanguageAdmin = $params->get("showDefaultLanguageAdmin", true);
	$langOptions[] = JHTML::_('select.option', -1, JText::_("SELECT LANGUAGE") );

	if ( count($langActive)>0 ) {
		foreach( $langActive as $language )
		{
			if($language->code != $defaultLang || $showDefaultLanguageAdmin) {
				$langOptions[] = JHTML::_('select.option',  $language->id, $language->name );
			}
		}
	}
	$langlist = JHTML::_('select.genericlist', $langOptions, 'select_language_id', 'id="select_language_id" class="inputbox"  size="1" onChange="translateItem(\''.$linkType.'\');"', 'value', 'text', -1);//$langActive[0]->id );
	// I also need to trap component specific actions e.g. pony gallery uses
?>
<span class='modtranslate'>
<script language="JavaScript" type="text/javascript">
function translateItem(linktype){
	var langCode=document.getElementById('select_language_id').value;
	var option="<?php echo trim($mapping[1]);?>";

	if( linktype == '' ) linktype = 'squeezebox';
	if( langCode == -1 ) return;

	if (document.adminForm.boxchecked.value==0) {
		alert("<?php echo JText::sprintf( 'Please make a selection from the list to', JText::_("translate") ); ?>")
		return
		<?php
		$setlang="&select_language_id=\"+langCode+\"";
		$targetURL = JURI::root()."administrator/index2.php?option=com_joomfish&task=translate.edit&catid=\"+option+\"".$setlang;
		?>

		openTranslationDialog(targetURL, linktype);
		return;// SqueezeBox.call(SqueezeBox, true);
	}
	if (document.adminForm.boxchecked.value!=1) {
		alert( "<?php echo JText::_("You must select exactly one item to translate");?>");
		return;
	}
	if (langCode==-1){
		alert( "<?php echo JText::_("You must select a language");?>");
		return;
	}
	// not all components use "cid" e.g. ponygallery uses act=pictures or act=showcatg
	var cid = "<?php echo trim($mapping[2]);?>[]";
	var checkboxes = document.getElementsByName(cid);
	for (var i=0;i<checkboxes.length;i++){
		if (checkboxes[i].checked){
			//alert("you want to edit item "+(i+1)+" content item id = "+checkboxes[i].value);
			// second part is language id 1=Cymraeg,5=German etc!
		<?php
		$targetURL = JURI::root()."administrator/index2.php?task=translate.edit&boxchecked=1&catid=\"+option+\"&cid[]=0|\"+checkboxes[i].value+\"|\"+langCode+\"&option=com_joomfish";
		?>
			targetURL = "<?php echo $targetURL;?>";
			openTranslationDialog(targetURL, linktype);
			return;// SqueezeBox.call(SqueezeBox, true);
		}
	}
	alert("There was a problem");
}
function openTranslationDialog(target, linktype) {
	switch (linktype) {
	case 'newwindow':
		target += '&direct=2';
		window.open(target,"translation","innerwidth=800,innerheight=500,menubar=yes,status=yes,location=yes,resizable=yes,scrollbars=yes");
		break;

	case 'samewindow':
		document.location.replace(target);
		break;

	case 'squeezebox':
	default:
		target += '&direct=1';
		SqueezeBox.initialize({});
		SqueezeBox.setOptions(SqueezeBox.presets,{'handler': 'iframe','size': {'x': 1000, 'y': 600},'closeWithOverlay': 0});
		SqueezeBox.url = target;

		SqueezeBox.setContent('iframe', SqueezeBox.url );
	}
	return;// SqueezeBox.call(SqueezeBox, true);
}
</script>
<a href="javascript:translateItem('<?php echo $linkType;?>')" title="<?php echo JText::_('translate this item'); ?>"><?php echo JText::_('translate to'); ?></a>:&nbsp;
<?php echo $langlist; ?>
</span>
<?php
}
else {
?>
<span class='modtranslate'>
<?php
$params = JComponentHelper::getParams('com_languages');
$language = $joomFishManager->getLanguageByCode($params->get("site", 'en-GB'));
if(isset($language) && $language) {
	echo JText::_('Default language') .': ';
	$langImg = '/components/com_joomfish/images/flags/' .$language->getLanguageCode() .".gif";
	if( isset($language->image) && $language->image!="" ) {
		$langImg = '/images/' .$language->image;
	}
	$outString = $language->name;
	if( file_exists( JPATH_SITE . $langImg ) ) {
		$outString = '<img src="' .JURI::root(true) . $langImg. '" alt="' .$language->name. '" title="' .$language->name. '" />';
	}
	echo $outString;
}
?>
</span>
<?php
}
?>
