verifyPermission( 'p_languages_edit' ); // Get available languages from DB $languages = $gBitLanguage->listLanguages(); $gBitSmarty->assign('languages', $languages); if( !empty( $_REQUEST['all_trans'] ) ) { $gBitSmarty->assign( 'allTrans', 1 ); } if( !empty( $_REQUEST['un_trans'] ) ) { $gBitSmarty->assign( 'unTrans', 1 ); } if( !empty( $_REQUEST['clear_cache'] ) ) { $gBitLanguage->clearCache(); $gBitSmarty->assign( 'saveSuccess', KernelTools::tra( 'System template and language cache have been cleared.' ) ); } elseif( !empty( $_REQUEST['translate'] ) ) { $editLang = $_REQUEST['lang']; $gBitSmarty->assign( 'lang', $editLang ); $gBitSmarty->assign( 'translate', true ); if( !empty( $_REQUEST['hash'] ) ) { $tranStrings = $gBitLanguage->getTranslationString( $_REQUEST['hash'], $editLang ); $gBitSmarty->assign('tranStrings', $tranStrings ); } else { // what strings do we want to display? if( empty( $_REQUEST['char'] ) ) { $pattern = "/^a/i"; } elseif ( $_REQUEST['char'] == '0-9' ) { $pattern = "/^\d/"; } elseif ( $_REQUEST['char'] == '+' ) { $pattern = "/^[^a-zA-Z]/"; } elseif ( $_REQUEST['char'] == 'all' ) { $pattern = "//"; } else { $pattern = "/^".$_REQUEST['char']."/i"; } $gBitLanguage->loadLanguage( $editLang ); $tranStr = $gBitLanguage->mStrings[$editLang]; foreach( $tranStr as $key => $tran ) { // display only the wanted strings and apply a textbox if the string is too long if( !empty( $_REQUEST['un_trans'] ) && empty( $tran['trans'] ) || empty( $_REQUEST['un_trans'] ) ) { if( preg_match( $pattern, $tran['source'] ) ) { $tranStrings[$key] = $tran; if( strlen( $tran['source'] ) > 70 ) { $tranStrings[$key]['textarea'] = true; } } } } $gBitSmarty->assign( 'char', empty( $_REQUEST['char'] ) ? '' : $_REQUEST['char'] ); $gBitSmarty->assign( 'tranStrings', $tranStrings ); } } elseif( isset($_REQUEST["delete_language"] ) ) { if( $gBitUser->hasPermission( 'p_languages_delete' ) ) { if( isset( $_REQUEST["confirm"] ) ) { $gBitLanguage->expungeLanguage( $_REQUEST['delete_lang_code'] ); unset( $languages[$_REQUEST['delete_lang_code']] ); } else { $formHash['delete_lang_code'] = $_REQUEST['lang']; $formHash['delete_language'] = true; $msgHash = [ 'label' => KernelTools::tra('Delete Language'), 'confirm_item' => KernelTools::tra('Are you sure you want to remove this language?') . ' ' . $languages[$_REQUEST['lang']]['native_name'], 'warning' => KernelTools::tra('This will permanently remove the languages and all translations.'), ]; $gBitSystem->confirmDialog( $formHash,$msgHash ); } } } elseif( isset( $_REQUEST["save_language"] ) && $gBitUser->hasPermission( 'p_languages_create' ) ) { if( $gBitLanguage->storeLanguage( $_REQUEST ) ) { $languages = $gBitLanguage->listLanguages(); $gBitSmarty->assign( 'saveSuccess', KernelTools::tra( 'The language has been saved.' ) ); $gBitSmarty->assign( 'defaults', $_REQUEST ); } else { $gBitSmarty->assign( 'saveErrors', $gBitLanguage->mErrors ); $gBitSmarty->assign( 'defaults', $_REQUEST ); $gBitSmarty->assign( 'editDescription', true ); } } elseif( isset($_REQUEST["new_language"] ) ) { $gBitSmarty->assign( 'editDescription', true ); } elseif( isset($_REQUEST["edit_language"] ) ) { if( !empty( $languages[$_REQUEST['lang']] ) ) { $gBitSmarty->assign( 'defaults', $languages[$_REQUEST['lang']] ); } $gBitSmarty->assign( 'editDescription', true ); } $gBitSystem->display( 'bitpackage:languages/edit_languages.tpl', KernelTools::tra( 'Edit Languages' ) , [ 'display_mode' => 'edit' ]); ?>