<?php
/**
 * Action Plugin: Inserts a button into the toolbar to add file tags
 *
 * @author Heiko Barth
 */
 
if (!defined('DOKU_INC')) die();
if (!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN', DOKU_INC . 'lib/plugins/');
require_once (DOKU_PLUGIN . 'action.php');
 
class action_plugin_translatebutton extends DokuWiki_Action_Plugin {
 
    /**
     * Return some info
     */
    function getInfo() {
        return array (
            'author' => 'Jumangee',
            'date' => '2011-10-11',
            'name' => 'One-click Toolbar Google Translate Button',
            'desc' => 'Opens a window with google translation of selected words (en-ru)',
            'url' => '',
        );
    }
 
    /**
     * Register the eventhandlers
     */
    function register(&$controller) {
        $controller->register_hook('TOOLBAR_DEFINE', 'AFTER', $this, 'translate_button', array ());
        $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, '_hookjs');
    }
 
    /**
     * Inserts the toolbar button
     */
    function translate_button(& $event, $param) {
        $event->data[] = array (
            'type' => 'openurlbyselection',
            'title' => $this->getLang('translate'),
            'icon' => '../../plugins/translatebutton/pix/translate.png',
            'url'    => 'http://translate.google.com/#en|ru|{selection}',
            'name'   => 'translate',
            'options'=> 'width=750,height=500,left=20,top=20,scrollbars=yes,resizable=yes'
		);
    }

     /**
     * Hook js script into page headers.
     *
     * @author Jumangee <zdes@jumangee.net>
     */
    function _hookjs(&$event, $param) {
        $event->data['script'][] = array(
                     'type'    => 'text/javascript',
                     'charset' => 'utf-8',
                     '_data'   => "function tb_openurlbyselection(btn, props, edid) {
    var sample = props['title'];
    if(props['sample']){
        sample = props['sample'];
    }

    // is something selected?
    var opts;
    var selection = getSelection($(edid));
    if(selection.getLength()){
        sample = selection.getText();
        opts = {nosel: true};
    }else{		
		return false
    }

    window.open(
        props['url'].replace(new RegExp('{selection}','g'), sample),
        props['name'],
        props['options']);
    return false;
}");
    }
	
}
