alecpl
2009-06-03 1ae1d85ce493f9cc0a978038f65bbf69dc51acb0
program/include/rcube_json_output.php
@@ -33,6 +33,8 @@
    private $env = array();
    private $texts = array();
    private $commands = array();
    private $callbacks = array();
    private $message = null;
    public $type = 'js';
    public $ajax_call = true;
@@ -121,7 +123,12 @@
     */
    public function command()
    {
        $this->commands[] = func_get_args();
        $cmd = func_get_args();
        if (strpos($cmd[0], 'plugin.') === 0)
          $this->callbacks[] = $cmd;
        else
          $this->commands[] = $cmd;
    }
    
    
@@ -146,15 +153,19 @@
     * @param string Message to display
     * @param string Message type [notice|confirm|error]
     * @param array Key-value pairs to be replaced in localized text
     * @param boolean Override last set message
     * @uses self::command()
     */
    public function show_message($message, $type='notice', $vars=null)
    public function show_message($message, $type='notice', $vars=null, $override=true)
    {
        $this->command(
            'display_message',
            rcube_label(array('name' => $message, 'vars' => $vars)),
            $type
        );
        if ($override || !$this->message) {
            $this->message = $message;
            $this->command(
                'display_message',
                rcube_label(array('name' => $message, 'vars' => $vars)),
                $type
            );
        }
    }
    
    /**
@@ -222,8 +233,11 @@
        if (!empty($this->texts))
          $response['texts'] = $this->texts;
        // send response code
        // send function calls
        $response['exec'] = $this->get_js_commands() . $add;
        if (!empty($this->callbacks))
          $response['callbacks'] = $this->callbacks;
        echo json_serialize($response);
    }