Remove Horde_Mobile package
authorMichael M Slusarz <slusarz@curecanti.org>
Thu, 4 Mar 2010 07:31:11 +0000 (00:31 -0700)
committerMichael M Slusarz <slusarz@curecanti.org>
Thu, 4 Mar 2010 07:42:09 +0000 (00:42 -0700)
framework/Mobile/Mobile.php [deleted file]
framework/Mobile/Mobile/Renderer.php [deleted file]
framework/Mobile/Mobile/Renderer/html.php [deleted file]
framework/Mobile/Mobile/Renderer/wml.php [deleted file]
framework/Mobile/package.xml [deleted file]

diff --git a/framework/Mobile/Mobile.php b/framework/Mobile/Mobile.php
deleted file mode 100644 (file)
index 3f0b474..0000000
+++ /dev/null
@@ -1,1380 +0,0 @@
-<?php
-/**
- * @package Horde_Mobile
- */
-class Horde_Mobile_card extends Horde_Mobile_element {
-
-    var $_name;
-    var $_title;
-    var $_form;
-    var $_elements = array();
-    var $_softkeys = array();
-    var $_linksetAdded = false;
-
-    /**
-     * Constructor
-     *
-     * @param string $name   The name of this card. Can be used in anchor
-     *                       links.
-     * @param string $title  If a string is provided here, it will be displayed
-     *                       in the HTML title bar, respectively somewhere on
-     *                       the WAP display. Using a title you will normally
-     *                       have to spend one of your few lines on your WAP
-     *                       display. Consider that some WAP phones/SDK's and
-     *                       handheld devices don't display the title at all.
-     */
-    function Horde_Mobile_card($name = null, $title = null)
-    {
-        $this->_name = $name;
-        $this->_title = $title;
-    }
-
-    function &add(&$element)
-    {
-        if (!is_a($element, 'Horde_Mobile_element')) {
-            $error = PEAR::raiseError('Invalid element.');
-            return $error;
-        } elseif (is_a($element, 'Horde_Mobile_text') ||
-                  is_a($element, 'Horde_Mobile_image') ||
-                  is_a($element, 'Horde_Mobile_link') ||
-                  is_a($element, 'Horde_Mobile_phone') ||
-                  is_a($element, 'Horde_Mobile_rule')) {
-            $block = new Horde_Mobile_block($element);
-            $this->_elements[] = &$block;
-        } elseif (is_a($element, 'Horde_Mobile_block')) {
-            $this->_elements[] = &$element;
-        } elseif (is_a($element, 'Horde_Mobile_form')) {
-            if (!empty($this->_form)) {
-                $error = PEAR::raiseError('Cards may only contain one Form element.');
-                return $error;
-            }
-            $this->_elements[] = &$element;
-            $this->_form = &$element;
-        } elseif (is_a($element, 'Horde_Mobile_linkset')) {
-            if ($this->_linksetAdded) {
-                $error = PEAR::raiseError('Cards may only contain one Linkset element.');
-                return $error;
-            }
-
-            $this->_elements[] = &$element;
-            $this->_linksetAdded = true;
-        } else {
-            $error = PEAR::raiseError('This element must be inside an appropriate container element.');
-            return $error;
-        }
-
-        return $element;
-    }
-
-    function softkey($url, $label)
-    {
-        $this->_softkeys[] = array('url' => $url,
-                                   'label' => $label);
-    }
-
-}
-
-/**
- * Horde_Mobile::
- *
- * Horde API for generating Mobile content. Includes numerous utility
- * functions, generalized element classes, and renderers for markup
- * languages including WML, HDML, and CHTML.
- *
- * This class is the top level class of all Horde_Mobile classes. Your
- * page should consist of exactly one Horde_Mobile object. Appropriate
- * markup - Imode, WML, HDML, etc. - is generated by the appropriate
- * renderer object
- *
- * Do not overstuff Horde_Mobile objects. Remember that a lot of WAP
- * clients cannot handle more than about 1400 bytes of compiled data.
- *
- * Examples:
- *
- * $myPage = new Horde_Mobile();
- * $myPage = new Horde_Mobile('My WAP page');
- * $myPage = new Horde_Mobile('', 'center');
- *
- * // More stuff
- *
- * $myPage->add($myText);
- *
- * // More items
- *
- * $myPage->render();
- *
- * Copyright 2002-2010 The Horde Project (http://www.horde.org/)
- *
- * See the enclosed file COPYING for license information (LGPL). If you
- * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
- *
- * @author  Chuck Hagenbuch <chuck@horde.org>
- * @package Horde_Mobile
- */
-class Horde_Mobile extends Horde_Mobile_card {
-
-    var $_title;
-    var $_elements = array();
-    var $_cards = array();
-    var $_debug = false;
-
-    // Decide whether the simulator device is to be used. Only affects
-    // HTML browser output.
-    var $_simulator = false;
-
-    /**
-     * Constructor
-     *
-     * @param string $title  If a string is provided here, it will be displayed
-     *                       in the HTML title bar, respectively somewhere on
-     *                       the WAP display. Using a title you will normally
-     *                       have to spend one of your few lines on your WAP
-     *                       display. Consider that some WAP phones/SDK's and
-     *                       handheld devices don't display the title at all.
-     * @param string $agent  If specified, use instead of HTTP_USER_AGENT.
-     */
-    function Horde_Mobile($title = null, $agent = null)
-    {
-        if (!is_null($title)) {
-            $this->_title = $title;
-        }
-
-        if ($GLOBALS['browser']->hasFeature('html')) {
-            $ml = 'html';
-        } elseif ($GLOBALS['browser']->hasFeature('wml')) {
-            $ml = 'wml';
-        } else {
-            $ml = 'html';
-        }
-
-        require_once dirname(__FILE__) . '/Mobile/Renderer.php';
-        $this->_renderer = &Horde_Mobile_Renderer::singleton($ml, $browser);
-    }
-
-    function &add(&$element)
-    {
-        if (is_a($element, 'Horde_Mobile_card')) {
-            if (count($this->_elements)) {
-                $error = PEAR::raiseError('You cannot mix Horde_Mobile_cards and other elements at the deck level.');
-                return $error;
-            }
-
-            $this->_usingCards = true;
-            $this->_cards[] = &$element;
-
-            return $element;
-        } else {
-            if (count($this->_cards)) {
-                $error = PEAR::raiseError('You cannot mix Horde_Mobile_cards and other elements at the deck level.');
-                return $error;
-            }
-
-            return parent::add($element);
-        }
-    }
-
-    /**
-     * Activates the built-in device simulator on bigscreen browsers.
-     * The device simulator is only fully-functional in Internet
-     * Explorer, because the layout requires a scrollable table
-     * element. Other browsers will fail to show content on pages
-     * longer than a single screen.
-     */
-    function useSimulator()
-    {
-        $this->_simulator = true;
-    }
-
-    /**
-     * Creates the page in the appropriate markup language. Depending
-     * on the renderer type, HTML (pure HTML, handheldfriendly AvantGo
-     * HTML, i-mode cHTML, MML), WML or HDML code is created.
-     */
-    function display()
-    {
-        $this->_renderer->render($this);
-    }
-
-}
-
-/**
- * @package Horde_Mobile
- */
-class Horde_Mobile_element {
-
-    function get($attribute)
-    {
-        $attr = '_' . $attribute;
-        if (isset($this->$attr)) {
-            return $this->$attr;
-        } else {
-            return null;
-        }
-    }
-
-    function set($attribute, $value)
-    {
-        $attr = '_' . $attribute;
-        $this->$attr = $value;
-    }
-
-}
-
-/**
- * @package Horde_Mobile
- */
-class Horde_Mobile_formElement extends Horde_Mobile_element {
-
-    var $_name;
-    var $_value;
-    var $_label;
-    var $_size;
-    var $_maxlength;
-    var $_type;
-    var $_format;
-    var $_mode;
-
-    /**
-     * Set input mode/istyle for japanese MML/i-mode devices.
-     *
-     * @param string $mode  Input mode, one of:
-     *                      'alpha' (default)
-     *                      'katakana'
-     *                      'hiragana'
-     *                      'numeric'
-     */
-    function setMode($mode)
-    {
-        $this->_mode = $mode;
-
-        // Map the mode into an appropriate format string, used for
-        // WML and HDML. If a format string was provided earlier, it
-        // will be overwritten.
-        switch ($mode) {
-        case 'hiragana':
-        case 'katakana':
-            $this->_format = '*M';
-            break;
-
-        case 'alpha':
-            $this->_format = '*m';
-            break;
-
-        case 'numeric':
-            $this->_format = '*N';
-            break;
-        }
-    }
-
-}
-
-/**
- * This class defines a form with various possible input elements. The
- * input elements have to be defined as separate objects and are
- * linked to the form with a special "add" function. One Horde_Mobile
- * object can contain only one Horde_Mobile_form object.
- *
- * Examples:
- *
- * $myPage = new Horde_Mobile(...);
- *
- * $myForm = new Horde_Mobile_form("/mynextpage.wml");
- * $myText = new Horde_Mobile_text(...);
- * $myForm->add($myText);
- * $myInput = new Horde_Mobile_input(...);
- * $myForm->add($myInput);
- * $mySubmit = new Horde_Mobile_submit(...);
- * $myForm->add($mySubmit);
- *
- * $myPage->add($myForm);
- *
- * $myPage->render();
- *
- * @see Horde_Mobile_text
- * @see Horde_Mobile_image
- * @see Horde_Mobile_table
- * @see Horde_Mobile_dl
- * @see Horde_Mobile_input
- * @see Horde_Mobile_textarea
- * @see Horde_Mobile_select
- * @see Horde_Mobile_radio
- * @see Horde_Mobile_checkbox
- * @see Horde_Mobile_submit
- * @see Horde_Mobile_rule
- *
- * @package Horde_Mobile
- */
-class Horde_Mobile_form extends Horde_Mobile_element {
-
-    var $_url;
-    var $_method;
-    var $_elements = array();
-
-    /**
-     * Constructor
-     *
-     * @param string $url       Address where the user input is sent to.
-     * @param string $method    'post' (default) or 'get'.
-     * @param boolean $session  Preserve the sesion id in the form? Defaults to true.
-     */
-    function Horde_Mobile_form($url, $method = 'post', $session = true)
-    {
-        $this->_url = $url;
-        $this->_method = $method;
-
-        if ($session && !array_key_exists(session_name(), $_COOKIE)) {
-            $this->add(new Horde_Mobile_hidden(session_name(), session_id()));
-        }
-    }
-
-    function &add(&$formElement)
-    {
-        if (is_a($formElement, 'Horde_Mobile_submit')) {
-            $formElement->_form = &$this;
-            $block = new Horde_Mobile_block($formElement);
-            $this->_elements[] = &$block;
-        } elseif (is_a($formElement, 'Horde_Mobile_hidden') ||
-                  is_a($formElement, 'Horde_Mobile_block')) {
-            $this->_elements[] = &$formElement;
-        } elseif (is_a($formElement, 'Horde_Mobile_formElement') ||
-                  is_a($formElement, 'Horde_Mobile_text') ||
-                  is_a($formElement, 'Horde_Mobile_rule') ||
-                  is_a($formElement, 'Horde_Mobile_image')) {
-            $block = new Horde_Mobile_block($formElement);
-            $this->_elements[] = &$block;
-        } else {
-            $error = PEAR::raiseError('Specified element cannot be inside a form.');
-            return $error;
-        }
-
-        return $formElement;
-    }
-
-    function getDefaults()
-    {
-        $defaults = array();
-        foreach ($this->_elements as $val) {
-            switch (strtolower(get_class($val))) {
-            case 'horde_mobile_hidden':
-                $defaults[] = array('name' => $val->get('name'),
-                                    'value' => $val->get('value'),
-                                    'hidden' => true);
-                break;
-
-            case 'horde_mobile_block':
-                foreach ($val->_elements as $bval) {
-                    switch (strtolower(get_class($bval))) {
-                    case 'horde_mobile_checkbox':
-                        if ($bval->isChecked()) {
-                            $defaults[] = array('name' => $bval->get('name'),
-                                                'value' => $bval->get('value'));
-                        }
-                        break;
-
-                    case 'horde_mobile_input':
-                    case 'horde_mobile_textarea':
-                    case 'horde_mobile_select':
-                    case 'horde_mobile_radio':
-                        $defaults[] = array('name' => $bval->get('name'),
-                                            'value' => $bval->get('value'));
-                        break;
-
-                    case 'horde_mobile_hidden':
-                        $defaults[] = array('name' => $bval->get('name'),
-                                            'value' => $bval->get('value'),
-                                            'hidden' => true);
-                        break;
-
-                    case 'horde_mobile_table':
-                        foreach ($bval->_rows as $row) {
-                            foreach ($row->_columns as $col) {
-                                switch (strtolower(get_class($col))) {
-                                case 'horde_mobile_checkbox':
-                                    if ($col->isChecked()) {
-                                        $defaults[] = array('name' => $bval->get('name'),
-                                                            'value' => $bval->get('value'));
-                                    }
-                                    break;
-
-                                case 'horde_mobile_input':
-                                case 'horde_mobile_textarea':
-                                case 'horde_mobile_select':
-                                case 'horde_mobile_radio':
-                                    $defaults[] = array('name' => $bval->get('name'),
-                                                        'value' => $bval->get('value'));
-                                    break;
-
-                                case 'horde_mobile_hidden':
-                                    $defaults[] = array('name' => $bval->get('name'),
-                                                        'value' => $bval->get('value'),
-                                                        'hidden' => true);
-                                    break;
-                                }
-                            }
-                        }
-                        break;
-
-                    case 'horde_mobile_dl':
-                        foreach ($bval->_dts as $dt) {
-                            foreach ($dt->_dds as $dd) {
-                                switch (strtolower(get_class($dd))) {
-                                case 'horde_mobile_checkbox':
-                                    if ($dd->isChecked()) {
-                                        $defaults[] = array('name'  => $bval->get('name'),
-                                                            'value' => $bval->get('value'));
-                                    }
-                                    break;
-
-                                case 'horde_mobile_input':
-                                case 'horde_mobile_textarea':
-                                case 'horde_mobile_select':
-                                case 'horde_mobile_radio':
-                                    $defaults[] = array('name'  => $bval->get('name'),
-                                                        'value' => $bval->get('value'));
-                                    break;
-
-                                case 'horde_mobile_hidden':
-                                    $defaults[] = array('name'  => $bval->get('name'),
-                                                        'value' => $bval->get('value'));
-                                    break;
-                                }
-                            }
-                        }
-                        break;
-                    }
-                }
-                break;
-            }
-        }
-
-        return $defaults;
-    }
-
-    function getGetVars()
-    {
-        // Determine all elements that have to be submitted.
-        $getvars = array();
-        foreach ($this->_elements as $val) {
-            switch (strtolower(get_class($val))) {
-            case 'horde_mobile_block':
-                foreach ($val->_elements as $bval) {
-                    switch (strtolower(get_class($bval))) {
-                    case 'horde_mobile_input':
-                    case 'horde_mobile_hidden':
-                    case 'horde_mobile_textarea':
-                    case 'horde_mobile_select':
-                    case 'horde_mobile_checkbox':
-                    case 'horde_mobile_radio':
-                        $getvars[] = $bval->get('name');
-                        break;
-
-                    case 'horde_mobile_table':
-                        foreach ($bval->_rows as $row) {
-                            foreach ($row->_columns as $col) {
-                                switch (strtolower(get_class($col))) {
-                                case 'horde_mobile_input':
-                                case 'horde_mobile_hidden':
-                                case 'horde_mobile_textarea':
-                                case 'horde_mobile_select':
-                                case 'horde_mobile_checkbox':
-                                case 'horde_mobile_radio':
-                                    $getvars[] = $col->get('name');
-                                    break;
-                                }
-                            }
-                        }
-                        break;
-
-                    case 'horde_mobile_dl':
-                        foreach ($bval->_dts as $dt) {
-                            foreach ($dt->_dds as $dd) {
-                                switch (strtolower(get_class($dd))) {
-                                case 'horde_mobile_input':
-                                case 'horde_mobile_hidden':
-                                case 'horde_mobile_textarea':
-                                case 'horde_mobile_select':
-                                case 'horde_mobile_checkbox':
-                                case 'horde_mobile_radio':
-                                    $getvars[] = $dd->get('name');
-                                    break;
-                                }
-                            }
-                        }
-                        break;
-                    }
-                }
-                break;
-            }
-        }
-
-        return $getvars;
-    }
-
-}
-
-/**
- * This class holds text-level elements for use in Horde_Mobile or
- * Horde_Mobile_form objects.
- *
- * Examples:
- *
- * $block = new Horde_Mobile_block("Hello World");
- * $text = new Horde_Mobile_text("Welcome to Horde_Mobile", 'b');
- * $block->add($text);
- *
- * @see Horde_Mobile
- * @see Horde_Mobile_form
- *
- * @package Horde_Mobile
- */
-class Horde_Mobile_block extends Horde_Mobile_element {
-
-    var $_elements = array();
-
-    /**
-     * Constructor.
-     *
-     * @param mixed $elements  Any elements (a single one or an array) to fill this block with.
-     */
-    function Horde_Mobile_block(&$elements)
-    {
-        if (!is_null($elements)) {
-            if (!is_array($elements)) {
-                $this->add($elements);
-            } else {
-                foreach ($elements as $element) {
-                    if ($this->allows($element)) {
-                        $this->_elements[] = $element;
-                    }
-                }
-            }
-        }
-    }
-
-    function &add(&$element)
-    {
-        if (!is_a($element, 'Horde_Mobile_element')) {
-            $error = PEAR::raiseError('Invalid element.');
-        } elseif ($this->allows($element)) {
-            $this->_elements[] = &$element;
-            return $element;
-        } else {
-            $error = PEAR::raiseError('The element is not allowed inside a block.');
-        }
-        return $error;
-    }
-
-    function allows($element)
-    {
-        return (is_a($element, 'Horde_Mobile_text') ||
-                is_a($element, 'Horde_Mobile_table') ||
-                is_a($element, 'Horde_Mobile_dl') ||
-                is_a($element, 'Horde_Mobile_image') ||
-                is_a($element, 'Horde_Mobile_formElement') ||
-                is_a($element, 'Horde_Mobile_link') ||
-                is_a($element, 'Horde_Mobile_linkset') ||
-                is_a($element, 'Horde_Mobile_phone') ||
-                is_a($element, 'Horde_Mobile_rule'));
-    }
-
-}
-
-/**
- * This class inserts plain text into a Horde_Mobile_block or a
- * Horde_Mobile_row object.
- *
- * Examples:
- *
- * $myText1 = new Horde_Mobile_text("Hello World");
- * $myText2 = new Horde_Mobile_text("Welcome to Horde_Mobile", 'b');
- * $myText3 = new Horde_Mobile_text("Good Morning", array('b', 'big'));
- *
- * @see Horde_Mobile_block
- * @see Horde_Mobile_row
- *
- * @package Horde_Mobile
- */
-class Horde_Mobile_text extends Horde_Mobile_element {
-
-    var $_text = '';
-    var $_attributes = array();
-    var $_linebreaks = false;
-
-    /**
-     * Constructor
-     * @param string $text       The text content of the element.
-     * @param array $attributes  Text attributes. Any of:
-     *   'b'
-     *   'u'
-     *   'i'
-     *   'big'
-     *   'small'
-     */
-    function Horde_Mobile_text($text, $attributes = array())
-    {
-        $this->_text = $text;
-        if (!is_array($attributes)) {
-            $attributes = array($attributes);
-        }
-        $this->_attributes = $attributes;
-    }
-
-}
-
-/**
- * This class allows to insert bitmap images into a Horde_Mobile_block,
- * Horde_Mobile_form or Horde_Mobile_row object.
- *
- * Examples:
- *
- * $image = new Horde_Mobile_image('/path/to/image.wbmp',
- *                                 array('height' => 100, 'width' => 100));
- *
- * @see Horde_Mobile_block
- * @see Horde_Mobile_form
- * @see Horde_Mobile_row
- *
- * @package Horde_Mobile
- */
-class Horde_Mobile_image extends Horde_Mobile_element {
-
-    var $_src = '';
-    var $_attributes = array();
-
-    /**
-     * Constructor
-     * @param string $src        The source location of the image.
-     * @param array $attributes  Image attributes. Any of:
-     *   'align'
-     *   'alt'
-     *   'height'
-     *   'hspace'
-     *   'vspace'
-     *   'width'
-     *   'class'
-     *   'id'
-     */
-    function Horde_Mobile_image($src, $attributes = array())
-    {
-        $this->_src = $src;
-        $this->_attributes = $attributes;
-    }
-
-}
-
-/**
- * This class allows to insert tables into a Horde_Mobile or
- * Horde_Mobile_form object.
- *
- * Examples:
- *
- * $myTable = new Horde_Mobile_table();
- *
- * $row1 = new Horde_Mobile_row();
- * $row1->add($image1);
- * $row1->add($text1);
- * $myTable->add($row1);
- *
- * $row2 = new Horde_Mobile_row();
- * $row2->add($image2);
- * $row2->add($text2);
- * $myTable->add($row2);
- *
- * $myDeck->add($myTable);
- *
- * @see Horde_Mobile
- * @see Horde_Mobile_form
- * @see Horde_Mobile_row
- *
- * @package Horde_Mobile
- */
-class Horde_Mobile_table extends Horde_Mobile_block {
-
-    var $_rows = array();
-    var $_border = null;
-    var $_padding = null;
-    var $_spacing = null;
-
-    /**
-     * Adds a Horde_Mobile_row object to Horde_Mobile_table.
-     *
-     * @param Horde_Mobile_row $row  The row object to add.
-     */
-    function &add(&$row)
-    {
-        if (!is_a($row, 'Horde_Mobile_row')) {
-            $error = PEAR::raiseError('Rows must be Horde_Mobile_row objects.');
-            return $error;
-        }
-
-        $this->_rows[] = &$row;
-        return $row;
-    }
-
-}
-
-/**
- * This class defines the rows that a Horde_Mobile_table object
- * consists of.
- *
- * Examples:
- *
- * $image1 = new Horde_Mobile_image("my_image.wbmp", "my_image.png", ":-)");
- * $text1 = new Horde_Mobile_text("my text");
- * $row1 = new Horde_Mobile_row();
- * $row1->add($image1);
- * $row1->add();
- * $row1->add($text1);
- *
- * @see Horde_Mobile_table
- * @see Horde_Mobile_text
- * @see Horde_Mobile_image
- * @see Horde_Mobile_link
- *
- * @package Horde_Mobile
- */
-class Horde_Mobile_row extends Horde_Mobile_element {
-
-    var $_columns = array();
-
-    /**
-     * Adds a column element to a Horde_Mobile_row object.
-     *
-     * @param Horde_Mobile_element $cellElement  Can be a Horde_Mobile_text
-     *                                           object, a Horde_Mobile_image
-     *                                           object, a Horde_Mobile_link
-     *                                           object or null. The latter
-     *                                           results in an empty cell.
-     */
-    function &add($cellElement = null)
-    {
-        if (is_object($cellElement)) {
-            if (!is_a($cellElement, 'Horde_Mobile_text') &&
-                !is_a($cellElement, 'Horde_Mobile_link') &&
-                !is_a($cellElement, 'Horde_Mobile_image')) {
-                $error = PEAR::raiseError('Table cells can only contain text, links, or images.');
-                return $error;
-            }
-            $this->_columns[] = &$cellElement;
-            return $cellElement;
-        } elseif (!is_null($cellElement)) {
-            $t = new Horde_Mobile_text($cellElement);
-            $this->_columns[] = &$t;
-            return $t;
-        } else {
-            $this->_columns[] = &$cellElement;
-            return $cellElement;
-        }
-    }
-
-    function getColumnCount()
-    {
-        return count($this->_columns);
-    }
-
-}
-
-/**
- * This class allows to insert definition lists into a Horde_Mobile or
- * Horde_Mobile_form object.
- *
- * Examples:
- *
- * $myDl = new Horde_Mobile_dl();
- *
- * $dt1 = new Horde_Mobile_dt();
- * $dt1->add($image1);
- * $dt1->add($text1);
- * $myDl->add($dt1);
- *
- * $dt2 = new Horde_Mobile_dt();
- * $dt2->add($image2);
- * $dt2->add($text2);
- * $myDl->add($dt2);
- *
- * $myDeck->add($myDl);
- *
- * @see Horde_Mobile
- * @see Horde_Mobile_form
- * @see Horde_Mobile_dt
- *
- * @package Horde_Mobile
- */
-class Horde_Mobile_dl extends Horde_Mobile_block {
-
-    var $_dts = array();
-
-    /**
-     * Adds a Horde_Mobile_dt object to Horde_Mobile_dl.
-     *
-     * @param Horde_Mobile_dt $dt The dl object to add.
-     */
-    function &add(&$dt)
-    {
-        if (!is_a($dt, 'Horde_Mobile_dt')) {
-            $error = PEAR::raiseError('Must be Horde_Mobile_dt objects.');
-            return $error;
-        }
-
-        $this->_dts[] = &$dt;
-        return $dt;
-    }
-
-}
-
-/**
- * This class defines the terms of a Horde_Mobile_dl object.
- *
- * Examples:
- *
- * $image1 = new Horde_Mobile_image("my_image.wbmp", "my_image.png", ":-)");
- * $text1 = new Horde_Mobile_text("my text");
- * $dt1 = new Horde_Mobile_dt();
- * $dt1->add($image1);
- * $dt1->add();
- * $dt1->add($text1);
- *
- * @see Horde_Mobile_dl
- * @see Horde_Mobile_text
- * @see Horde_Mobile_image
- * @see Horde_Mobile_link
- *
- * @package Horde_Mobile
- */
-class Horde_Mobile_dt extends Horde_Mobile_element {
-
-    var $_dds = array();
-
-    /**
-     * Adds a definition term element to a Horde_Mobile_dt object.
-     *
-     * @param Horde_Mobile_Element $ddElement  Can be a Horde_Mobile_text
-     *                                         object, a Horde_Mobile_image
-     *                                         object, a Horde_Mobile_link
-     *                                         object or null. The latter
-     *                                         results in an empty dd.
-     *
-     * @return Horde_Mobile_Element
-     */
-    function &add($ddElement = null)
-    {
-        if (is_object($ddElement)) {
-            if (!is_a($ddElement, 'Horde_Mobile_text') &&
-                !is_a($ddElement, 'Horde_Mobile_link') &&
-                !is_a($ddElement, 'Horde_Mobile_image')) {
-                $error = PEAR::raiseError('Description can only contain text, links or images.');
-                return $error;
-            }
-            $this->_dds[]= &$ddElement;
-            return $ddElement;
-        } elseif (!is_null($ddElement)) {
-            $t = new Horde_Mobile_text($ddElement);
-            $this->_dds[] = &$t;
-            return $t;
-        } else {
-            $this->_dds[] = &$ddElement;
-            return $ddElement;
-        }
-    }
-
-    function getDdsCount()
-    {
-        return count($this->_dds);
-    }
-
-}
-
-/**
- * This class provides a text input field in a Horde_Mobile_form object.
- *
- * Examples:
- *
- * $myInput1 = new Horde_Mobile_input('cid', '', 'Customer ID');
- *
- * $myInput2 = new Horde_Mobile_input('cid', '', 'Customer ID', '*N');
- * $myInput2->set_size(6);
- * $myInput2->set_maxlength(6);
- *
- * $myInput3 = new Horde_Mobile_input('pw', '', 'Password', '*N');
- * $myInput3->set_size(8);
- * $myInput3->set_maxlength(8);
- * $myInput3->set_type('password');
- *
- * @see Horde_Mobile_form
- *
- * @package Horde_Mobile
- */
-class Horde_Mobile_input extends Horde_Mobile_formElement {
-
-    /**
-     * Constructor
-     *
-     * @param string $name    Variable in which the input is sent to the
-     *                        destination URL.
-     * @param string $value   Initial value that will be presented in the
-     *                        input field.
-     * @param string $label   Describes your input field on the surfer's
-     *                        screen/display.
-     * @param string $format  Input format code according to the WAP standard.
-     *                        Allows the WAP user client e.g. to input only
-     *                        digits and no characters. On an HTML generated
-     *                        page this format has no significance.
-     */
-    function Horde_Mobile_input($name, $value, $label = '', $format = '*M')
-    {
-        $this->_name = $name;
-        $this->_value = $value;
-        $this->_label = $label;
-        $this->_format = $format;
-        $this->_type = 'text';
-        $this->_mode = 'alpha';
-    }
-
-}
-
-/**
- * This class provides an input textarea in a Horde_Mobile_form object.
- *
- * Examples:
- *
- * $myArea1 = new Horde_Mobile_textarea('fb', '', 'Feedback');
- * $myArea2 = new Horde_Mobile_textarea('msg', 'Enter message here ...', 'Message', 40, 5);
- *
- * @see Horde_Mobile_form
- *
- * @package Horde_Mobile
- */
-class Horde_Mobile_textarea extends Horde_Mobile_formElement {
-
-    var $_rows;
-    var $_cols;
-
-    /**
-     * Constructor.
-     *
-     * @param string $name   Variable in which the input is sent to the
-     *                       destination URL.
-     * @param string $value  Initial value that will be presented in the
-     *                       textarea.
-     * @param string $label  Describes your textarea on the surfer's
-     *                       screen/display.
-     * @param integer $rows  Rows.
-     * @param integer $cols  Columns.
-     */
-    function Horde_Mobile_textarea($name, $value, $label, $rows = 3, $cols = 16)
-    {
-        $this->_name = $name;
-        $this->_value = $value;
-        $this->_label = $label;
-        $this->_rows = $rows;
-        $this->_cols = $cols;
-        $this->_mode = 'alpha';
-    }
-
-}
-
-/**
- * This class provides a select element in a Horde_Mobile_form object.
- * It allows to create optimized WML for WAP devices which are capable
- * to interprete the Openwave GUI extensions for WML 1.3. All other
- * WML devices receive WML 1.1 compatible markup code, which is quite
- * similar to the markup code created by the Horde_Mobile_radio class.
- *
- * Examples:
- *
- * $mySelect = new Horde_Mobile_select('color');
- * $mySelect->add('Blue', 'b');
- * $mySelect->add('Red', 'r', true);
- * $mySelect->add('Yellow', 'y');
- *
- * @see Horde_Mobile_form
- *
- * @package Horde_Mobile
- */
-class Horde_Mobile_select extends Horde_Mobile_formElement {
-
-    var $_type;
-    var $_options = array();
-    var $_htmlchars = true;
-
-    /**
-     * Constructor
-     *
-     * @param string $name  Variable in which the information about the
-     *                      selected option is sent to the destination URL.
-     * @param string $type  Type of select area:
-     *                      'popup': popup the whole selection list
-     *                      'spin':  rotate options on a WAP device screen (OW
-     *                               1.3 GUI only).
-     * @param string $label Describes your input field on the surfer's
-     *                      screen/display.
-     *
-     * @param string $htmlchars Are the options already encoded for output?
-     */
-    function Horde_Mobile_select($name, $type = 'popup', $label = '', $htmlchars = false)
-    {
-        $this->_name = $name;
-        $this->_type = $type;
-        $this->_label = $label;
-        $this->_value = null;
-        $this->_htmlchars = $htmlchars;
-    }
-
-    /**
-     * Adds one option to a Horde_Mobile_select object.
-     *
-     * @param string $label         Describes the option on the surfer's
-     *                              screen/display.
-     * @param string $value         Value sent in the "name" variable, if this
-     *                              is the option selected.
-     * @param boolean $is_selected  Allowed values are true or false.
-     */
-    function add($label, $value, $is_selected = false)
-    {
-        $this->_options[] = array('label' => $label,
-                                  'value' => $value);
-
-        if (is_null($this->_value) || $is_selected) {
-            $this->_value = $value;
-        }
-    }
-
-}
-
-/**
- * This class provides a radio button element in a Horde_Mobile_form object.
- *
- * Examples:
- *
- * $myRadio = new Horde_Mobile_radio('country');
- * $myRadio->add('Finland', 'F');
- * $myRadio->add('Germany', 'G', true);
- * $myRadio->add('Sweden', 'S');
- *
- * @see Horde_Mobile_form
- *
- * @package Horde_Mobile
- */
-class Horde_Mobile_radio extends Horde_Mobile_formElement {
-
-    var $_buttons = array();
-
-    /**
-     * Constructor
-     *
-     * @param string $name  Variable in which the information about the pressed button
-     *                      is sent to the destination URL.
-     */
-    function Horde_Mobile_radio($name)
-    {
-        $this->_name = $name;
-        $this->_value = null;
-    }
-
-    /**
-     * Adds one radio button to a Horde_Mobile_radio object.
-     *
-     * @param string $label        Describes the radiobutton on the surfer's
-     *                             screen/display.
-     * @param string $value        Value sent in the "name" variable, if this
-     *                             button is selected.
-     * @param boolean $is_checked  Allowed values are true or false.
-     */
-    function add($label, $value, $is_checked = false)
-    {
-        $this->_buttons[] = array('label' => $label,
-                                  'value' => $value);
-
-        if (!$this->_value || ($is_checked)) {
-            $this->_value = $value;
-        }
-    }
-
-}
-
-/**
- * This class provides a single checkbox element in a Horde_Mobile_form object.
- *
- * Examples:
- *
- * $myCheckbox = new Horde_Mobile_checkbox('agmt', 'yes', 'I agree');
- * $myCheckbox = new Horde_Mobile_checkbox('agmt', 'yes', 'I agree', false);
- * $myCheckbox = new Horde_Mobile_checkbox('agmt', 'yes', 'I agree', true);
- *
- * @note The first and second examples are identical.
- *
- * @see Horde_Mobile_form
- *
- * @package Horde_Mobile
- */
-class Horde_Mobile_checkbox extends Horde_Mobile_formElement {
-
-    var $_checked;
-
-    /**
-     * Constructor
-     *
-     * @param string $name      Variable in which "value" is sent to the
-     *                          destination URL, if the box is checked.
-     * @param string $value     See name.
-     * @param string $label     Describes the checkbox on the surfer's
-     *                          screen/display.
-     * @param boolean $checked  Allowed values are true or false.
-     */
-    function Horde_Mobile_checkbox($name, $value, $label, $checked = false)
-    {
-        $this->_name  = $name;
-        $this->_value = $value;
-        $this->_label = $label;
-        $this->_checked = $checked;
-    }
-
-    function isChecked()
-    {
-        return $this->_checked;
-    }
-
-}
-
-/**
- * This class provides hidden elements in Horde_Mobile_form objects.
- *
- * Examples:
- *
- * $hidden = new Horde_Mobile_hidden('internal_reference', '08154711');
- *
- * @see Horde_Mobile_form
- *
- * @package Horde_Mobile
- */
-class Horde_Mobile_hidden extends Horde_Mobile_formElement {
-
-    /**
-     * Constructor
-     *
-     * @param string $name   Variable in which $value is sent to the destination URL.
-     * @param string $value  See name.
-     */
-    function Horde_Mobile_hidden($name, $value)
-    {
-        $this->_name = $name;
-        $this->_value = $value;
-    }
-
-}
-
-/**
- * This class provides a submit button for a Horde_Mobile_form object. One
- * Horde_Mobile_form object can contain only one Horde_Mobile_submit object.
- *
- * Examples:
- * $mySubmit = new Horde_Mobile_submit('Submit');
- * $mySubmit = new Horde_Mobile_submit('Submit', 'user_pressed');
- *
- * @see Horde_Mobile_form
- *
- * @package Horde_Mobile
- */
-class Horde_Mobile_submit extends Horde_Mobile_formElement {
-
-    var $_form;
-
-    /**
-     * Constructor
-     *
-     * @param string $label  What's written on the button.
-     * @param string $name   Variable in which "label" is sent to the
-     *                       destination URL.
-     */
-    function Horde_Mobile_submit($label, $name = '')
-    {
-        $this->_label = $label;
-        $this->_name = $name;
-    }
-
-}
-
-/**
- * This class provides a link in a Horde_Mobile, Horde_Mobile_linkset or
- * Horde_Mobile_table object.
- *
- * Examples:
- *
- * $myPage = new Horde_Mobile(...);
- *
- * $myLink = new Horde_Mobile_link('Continue', '/mynextpage.wml');
- * $myPage->add($myLink);
- *
- * @see Horde_Mobile
- * @see Horde_Mobile_linkset
- * @see Horde_Mobile_table
- *
- * @package Horde_Mobile
- */
-class Horde_Mobile_link extends Horde_Mobile_element {
-
-    var $_label;
-    var $_url;
-    var $_title;
-    var $_accesskey;
-
-    /**
-     * Constructor
-     *
-     * @param string $label  Describes the link on the surfer's screen/display.
-     * @param string $url    Next destination address. MUST be valid XML (&amp; instead of &, etc.).
-     * @param string $title  If a string is provided here, it will be displayed
-     *                       in the HTML browser status bar during
-     *                       "MouseOver", respectively somewhere on the WAP
-     *                       display. In order to work well with a broad range
-     *                       of user agents, keep your title under 6
-     *                       characters.
-     */
-    function Horde_Mobile_link($label, $url, $title = '')
-    {
-        $this->_label = $label;
-        $this->_url = $url;
-        $this->_title = $title;
-
-        // No accesskey assigned by default; can be assigned later
-        // from a Horde_Mobile_linkset object if required.
-        $this->_accesskey = null;
-    }
-
-}
-
-/**
- * This class provides a phone number in a Horde_Mobile object. If supported by
- * their mobile device, users can establish a voice connection to the
- * specified number.
- *
- * Examples:
- *
- * $myPhone = &new Horde_Mobile_phone('123-45678', 'CALL');
- * $myPage->add($myPhone);
- *
- * @see Horde_Mobile
- *
- * @package Horde_Mobile
- */
-class Horde_Mobile_phone extends Horde_Mobile_element {
-
-    var $_label;
-    var $_number;
-    var $_title;
-
-    /**
-     * Constructor
-     *
-     * @param string $phone_number  Phone number to dial.
-     * @param string $title         If a string is provided here, the call
-     *                              button on a WAP/HDML device will be
-     *                              enabled. In order to work well with
-     *                              a broad range of user agents, keep your
-     *                              title under 6 characters.
-     */
-    function Horde_Mobile_phone($phone_number, $title = '')
-    {
-        $this->_label = $phone_number;
-        $this->_number = preg_replace('|\D|', '', $phone_number);
-        $this->_title = $title;
-    }
-
-}
-
-/**
- * This class defines a set of links. The links have to be defined as
- * separate Horde_Mobile_link objects and are attached to the linkset
- * with a special "add" function.  For WAP devices browser-dependent
- * WML code will be created. On all UP-browser-based WAP devices
- * linksets allow easier navigation through WML decks by using the
- * "onpick" WML option and therefore are improving the "usability" of
- * an application. Instead of painfully navigating through the links
- * "sports->football->results->today" the mobile user e.g. can press
- * "2431" on the keypad to enter his favorite deck. For all other WAP
- * devices normal <a> tags are created. One Horde_Mobile object can
- * contain only one linkset object.
- *
- * Examples:
- *
- * $myPage = new Horde_Mobile(...);
- *
- * $myLinkset = new Horde_Mobile_linkset();
- * $myLink1 = new Horde_Mobile_link("Phonebook", "/wap/phonebook.wml");
- * $myLinkset->add($myLink1);
- * $myLink2 = new Horde_Mobile_link("DateBook", "/wap/datebook.wml");
- * $myLinkset->add($myLink2);
- *
- * $myPage->add($myLinkset);
- *
- * $myPage->render();
- *
- * @see Horde_Mobile_link
- * @see Horde_Mobile
- *
- * @package Horde_Mobile
- */
-class Horde_Mobile_linkset extends Horde_Mobile_element {
-
-    var $_elements;
-
-    /**
-     * Adds a Horde_Mobile_link object to Horde_Mobile_linkset.
-     *
-     * @param Horde_Mobile_link $link  The link object to add.
-     *
-     * @see Horde_Mobile_link
-     */
-    function &add(&$link)
-    {
-        if (!is_a($link, 'Horde_Mobile_link')) {
-            $error = PEAR::raiseError('Links must be Horde_Mobile_link objects.');
-            return $error;
-        }
-
-        $this->_elements[] = &$link;
-        $link->set('accesskey', count($this->_elements));
-
-        return $link;
-    }
-
-}
-
-/**
- * This class will cause a horizontal rule to be drawn across the screen.  You
- * can use it to separate text paragraphs in Horde_Mobile or Horde_Mobile_form
- * objects.
- *
- * Examples:
- *
- * $myDefaultRule = new Horde_Mobile_rule();
- * $mySpecialRule = new Horde_Mobile_rule('60%', 4);
- *
- * $myPage->add($myDefaultRule);
- *
- * $myPage->add($mySpecialRule);
- *
- * @see Horde_Mobile
- * @see Horde_Mobile_form
- *
- * @package Horde_Mobile
- */
-class Horde_Mobile_rule extends Horde_Mobile_element {
-
-    var $_width;
-    var $_size;
-
-    /**
-     * Constructor
-     *
-     * @param integer $width  Percentage of screen width or absolute value in
-     *                        number of pixels (e.g. "50%", 100).
-     * @param integer $size   Height of the line to be drawn in pixels.
-     */
-    function Horde_Mobile_rule($width = '', $size = '')
-    {
-        $this->_width = $width;
-        $this->_size = $size;
-    }
-
-}
diff --git a/framework/Mobile/Mobile/Renderer.php b/framework/Mobile/Mobile/Renderer.php
deleted file mode 100644 (file)
index 9c4b1c1..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-<?php
-/**
- * Horde_Mobile_Renderer:: framework for mobile device markup
- * renderers.
- *
- * Copyright 2002-2010 The Horde Project (http://www.horde.org/)
- *
- * See the enclosed file COPYING for license information (LGPL). If you
- * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
- *
- * @author  Chuck Hagenbuch <chuck@horde.org>
- * @package Horde_Mobile
- */
-class Horde_Mobile_Renderer extends Horde_Mobile {
-
-    var $_browser;
-
-    function Horde_Mobile_Renderer($browser = null)
-    {
-        if (is_null($browser)) {
-            $this->_browser = new Browser();
-        } else {
-            $this->_browser = $browser;
-        }
-    }
-
-    function isBrowser($agent)
-    {
-        return $this->_browser->isBrowser($agent);
-    }
-
-    function hasQuirk($quirk)
-    {
-        return $this->_browser->hasQuirk($quirk);
-    }
-
-    /**
-     * Render any Horde_Mobile_element object. Looks for the
-     * appropriate rendering function in the renderer; if there isn't
-     * one, we ignore this element.
-     *
-     * @param Horde_Mobile_element $element  The element to render.
-     */
-    function renderElement(&$element)
-    {
-        $func = '_render' . ucfirst(str_replace('horde_mobile_', '', strtolower(get_class($element))));
-        if (method_exists($this, $func)) {
-            $this->$func($element);
-        }
-    }
-
-    function _renderBlock(&$block)
-    {
-        if (count($block->_elements)) {
-            echo '<p>';
-            foreach ($block->_elements as $blockElement) {
-                $this->renderElement($blockElement);
-            }
-            echo "</p>\n";
-        }
-    }
-
-    function _renderForm(&$form)
-    {
-        foreach ($form->_elements as $formElement) {
-            $this->renderElement($formElement);
-        }
-    }
-
-    function _renderDl(&$dl)
-    {
-        foreach ($dl->_dts as $dt) {
-            $this->_renderDt($dt);
-        }
-    }
-
-    function _renderDt(&$dt)
-    {
-        $i = 0;
-        foreach ($dt->_dds as $dd) {
-            echo $out = ($i == 0) ? '<dt>' : '<dd>';
-
-            // Call create function for each ddelement that is a
-            // Horde_Mobile object.
-            if (!is_null($dd)) {
-                $this->renderElement($dd);
-            }
-
-            echo $out = ($i++ == 0) ? '</dt>' : '</dd>';
-        }
-    }
-
-    function _renderTable(&$table)
-    {
-        foreach ($table->_rows as $row) {
-            $this->_renderRow($row);
-        }
-    }
-
-    function _renderRow(&$row)
-    {
-        echo '<tr>';
-        foreach ($row->_columns as $column) {
-            echo '<td>';
-            // Call create function for each cellelement that is a
-            // Horde_Mobile object.
-            if (!is_null($column)) {
-                $this->renderElement($column);
-            }
-            echo '</td>';
-        }
-        echo "</tr>\n";
-    }
-
-    /**
-     * Attempts to return a concrete Horde_Mobile_Renderer instance
-     * based on $type.
-     *
-     * @param string $type      The kind of markup (html, hdml, wml) we want to
-     *                          generate.
-     * @param Browser $browser  The Browser object to use.
-     * @param array $params     A hash containing any options for the renderer.
-     *
-     * @return Horde_Mobile_Renderer  The newly created concrete
-     *                                Horde_Mobile_Renderer instance, or a
-     *                                PEAR_Error object on an error.
-     */
-    function &factory($type, $browser = null, $params = array())
-    {
-        $type = basename($type);
-        $class = 'Horde_Mobile_Renderer_' . $type;
-        if (!class_exists($class)) {
-            include_once 'Horde/Mobile/Renderer/' . $type . '.php';
-        }
-
-        if (class_exists($class)) {
-            $renderer = new $class($browser, $params);
-        } else {
-            $renderer = PEAR::raiseError('Class definition of ' . $class . ' not found.');
-        }
-
-        return $renderer;
-    }
-
-    /**
-     * Attempts to return a concrete Horde_Mobile_Renderer instance
-     * based on $type. It will only create a new instance if no
-     * renderer with the same parameters currently exists.
-     *
-     * @param string $type      The kind of markup (html, hdml, wml) we want to
-     *                          generate.
-     * @param Browser $browser  The Browser object to use.
-     * @param array $params     A hash containing any options for the renderer.
-     *
-     * @return Horde_Mobile_Renderer  The newly created concrete
-     *                                Horde_Mobile_Renderer instance, or a
-     *                                PEAR_Error object on an error.
-     */
-    function &singleton($type, $browser = null, $params = array())
-    {
-        static $instances = array();
-
-        $signature = md5(serialize(array($type, $browser, $params)));
-        if (!isset($instances[$signature])) {
-            $instances[$signature] = &Horde_Mobile_Renderer::factory($type, $browser, $params);
-        }
-
-        return $instances[$signature];
-    }
-
-}
diff --git a/framework/Mobile/Mobile/Renderer/html.php b/framework/Mobile/Mobile/Renderer/html.php
deleted file mode 100644 (file)
index afb38e0..0000000
+++ /dev/null
@@ -1,373 +0,0 @@
-<?php
-/**
- * Horde_Mobile_Renderer:: output module for simple HTML and
- * Imode/Avantgo/similar devices.
- *
- * Copyright 2002-2010 The Horde Project (http://www.horde.org/)
- *
- * See the enclosed file COPYING for license information (LGPL). If you
- * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
- *
- * @author  Chuck Hagenbuch <chuck@horde.org>
- * @package Horde_Mobile
- */
-class Horde_Mobile_Renderer_html extends Horde_Mobile_Renderer {
-
-    /**
-     * Properly encode characters for output to an HTML browser.
-     *
-     * @param string $input  Characters to encode.
-     *
-     * @return string  The encoded text.
-     */
-    function escape($input)
-    {
-        return Horde_Text_Filter::filter($input, 'space2html', array('charset' => Horde_Nls::getCharset(), 'encode' => true));
-    }
-
-    /**
-     * Creates the page in the appropriate markup. Depending on the
-     * clients browser type pure HTML, handheldfriendly AvantGo HTML,
-     * i-mode cHTML, or MML is created.
-     *
-     * @param Horde_Mobile $deck  The deck to render.
-     */
-    function render($deck)
-    {
-        if ($deck->_debug) {
-            header('Content-Type: text/plain; charset=' . Horde_Nls::getCharset());
-        } else {
-            header('Content-Type: text/html; charset=' . Horde_Nls::getCharset());
-        }
-        header('Vary: Accept-Language');
-
-        if (!$this->isBrowser('mml')) {
-            echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n";
-        }
-
-        echo !empty($GLOBALS['language']) ? '<html lang="' . strtr($GLOBALS['language'], '_', '-') . '">' : '<html>';
-        echo '<head>';
-
-        if ($this->isBrowser('avantgo')) {
-            echo '<meta name="HandheldFriendly" content="True">';
-        }
-
-        printf("<title>%s</title>\n", $this->escape($deck->get('title')));
-
-        if ($deck->_simulator) {
-            // Use simulator (mobile theme) stylesheet.
-            echo Horde::stylesheetLink('horde', 'mobile');
-        }
-
-        echo '</head><body>';
-
-        if ($deck->_simulator) {
-            echo "<center><br />\n";
-            // Create default device simulator table layout with
-            // central CSS layout.
-            echo "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n";
-            echo "<tr><td colspan=\"3\" class=\"top\">&nbsp;</td></tr>\n";
-            echo "<tr><td valign=\"top\" class=\"left\">&nbsp;</td>\n";
-            echo "<td valign=\"top\" class=\"display\">\n";
-        }
-
-        $divstyle = '';
-        if ($this->hasQuirk('scroll_tds') && $deck->_simulator) {
-            // Make content of table element scrollable (Horde_Mobile
-            // simulator).
-            $divstyle = ' class="simdev"';
-        }
-        echo '<div' . $divstyle . '>';
-
-        if (($cnt = count($deck->_cards)) !== 0) {
-            $i = 0;
-            foreach ($deck->_cards as $card) {
-                if ($i != 0) {
-                    echo '<hr />';
-                }
-                $this->_renderCard($card);
-                $i++;
-            }
-        } else {
-            foreach ($deck->_elements as $page_element) {
-                $this->renderElement($page_element);
-            }
-        }
-
-        echo '</div>';
-
-        if ($deck->_simulator) {
-            // Display lower part of Horde_Mobile default device
-            // simulator.
-            echo '</td><td valign="top" class="right">&nbsp;</td></tr><tr><td colspan="3" class="bottom">&nbsp;</td></tr></table></center>';
-        }
-
-        echo '</body></html>';
-    }
-
-    function _renderCard($card)
-    {
-        $name = $card->get('name') ? ' name="' . $this->escape($card->get('name')) . '"' : '';
-        printf('<a%s>%s</a>', $name, $card->get('title'));
-
-        if (count($card->_softkeys)) {
-            foreach ($card->_softkeys as $key) {
-                echo ' | <a href="' . $key['url'] . '">' .  $this->escape($key['label']) . '</a>';
-            }
-        }
-
-        // Render all tags.
-        foreach ($card->_elements as $page_element) {
-            $this->renderElement($page_element);
-        }
-    }
-
-    function _renderLink($link)
-    {
-        if ($link->get('title') &&
-            !$this->isBrowser('avantgo') &&
-            !$this->isBrowser('imode') &&
-            !$this->isBrowser('mml')) {
-            $title_option = sprintf(' onmouseover="self.status=\'%s\';return true;"',
-                                    $this->escape($link->get('title')));
-        } else {
-            $title_option = '';
-        }
-
-        $accesskey_option = '';
-        if ($link->get('accesskey')) {
-            if ($this->isBrowser('imode')) {
-                $accesskey_option = sprintf(' accesskey="%d"', $link->get('accesskey'));
-            } elseif ($this->isBrowser('mml')) {
-                $accesskey_option = sprintf(' directkey="%d"', $link->get('accesskey'));
-            }
-        }
-
-        printf('<a href="%s"%s%s>%s</a>',
-               str_replace('&amp;amp;', '&amp;', $this->escape($link->get('url'))),
-               $title_option, $accesskey_option,
-               $this->escape($link->get('label')));
-    }
-
-    function _renderLinkset($linkset)
-    {
-        if (count($linkset->_elements)) {
-            echo '<ol>';
-            foreach ($linkset->_elements as $val) {
-                echo '<li>';
-                $this->_renderLink($val);
-                echo '</li>';
-            }
-            echo '</ol>';
-        }
-    }
-
-    function _renderText($element)
-    {
-        foreach ($element->_attributes as $attribute) {
-            echo '<' . $attribute . '>';
-        }
-
-        if ($element->get('linebreaks')) {
-            echo nl2br($this->escape($element->get('text')));
-        } else {
-            echo $this->escape($element->get('text'));
-        }
-
-        $attributes = array_reverse($element->_attributes);
-        foreach ($attributes as $attribute) {
-            echo '</' . $attribute . '>';
-        }
-    }
-
-    function _renderImage($image)
-    {
-        $attributes = '';
-        foreach ($image->_attributes as $attribute => $value) {
-            $attributes .= sprintf(' %s="%s"', $attribute, $value);
-        }
-        printf('<img src="%s.png"%s />', $image->_src, $attributes);
-    }
-
-    function _renderForm($form)
-    {
-        printf('<form action="%s" method="%s">', $form->get('url'), $form->get('method'));
-        parent::_renderForm($form);
-        echo '</form>';
-    }
-
-    function _renderInput($input)
-    {
-        $type = 'type="' . $input->get('type') . '"';
-        $size = $input->get('size') ? sprintf('size="%d"', $input->get('size')) : '';
-        $maxlength = $input->get('maxlength') ? sprintf('maxlength="%d"', $input->get('maxlength')) : '';
-
-        if ($this->isBrowser('imode')) {
-            $mode = sprintf(' istyle="%d"', $input->get('mode'));
-        } elseif ($this->isBrowser('mml')) {
-            $mode = $this->_getMode($input->get('mode'));
-        } else {
-            $mode = '';
-        }
-
-        // Create HTML input.
-        printf('%s <input %s name="%s" value="%s"%s%s%s/>',
-               $this->escape($input->get('label')), $type,
-               $this->escape($input->get('name')), $this->escape($input->get('value')), $size, $maxlength, $mode);
-    }
-
-    function _renderTextarea($textarea)
-    {
-        if ($this->isBrowser('imode')) {
-            $mode = sprintf(' istyle="%d"', $this->mode);
-        } elseif ($this->isBrowser('mml')) {
-            $mode = $this->_getMode($this->mode);
-        } else {
-            $mode = '';
-        }
-
-        printf('%s<br /><textarea name="%s" rows="%s" cols="%s"%s>%s</textarea>',
-               $this->escape($textarea->get('label')), $textarea->get('name'), $textarea->get('rows'),
-               $textarea->get('cols'), $mode, $textarea->get('value'));
-    }
-
-    function _renderSelect($select)
-    {
-        $name = $this->escape($select->get('name'));
-        echo '<label for="' . $name . '">';
-        if ($label = $select->get('label')) {
-            echo $this->escape($label) . ' ';
-        }
-        echo '<select id="' . $name . '" name="' . $name . '" size="1">';
-
-        $htmlchars = $select->get('htmlchars');
-        foreach ($select->_options as $val) {
-            if ($val['value'] == $select->_value) {
-                $sel = ' selected="selected"';
-            } else {
-                $sel = '';
-            }
-            $label = $htmlchars ? $val['label'] : $this->escape($val['label']);
-            echo '<option' . $sel . ' value="' . $this->escape($val['value']) . '">' . $label . '</option>';
-        }
-        echo '</select></label>';
-    }
-
-    function _renderRadio($radio)
-    {
-        foreach ($radio->_buttons as $val) {
-            $sel = ($val['value'] == $radio->_value) ? ' checked="checked"' : '';
-            printf('<input type="radio" name="%s"%s value="%s" /> %s<br />',
-                   $radio->get('name'), $sel, $val['value'],
-                   $this->escape($val['label']));
-        }
-    }
-
-    function _renderCheckbox($checkbox)
-    {
-        $state = $checkbox->isChecked() ? ' checked="checked"' : '';
-        printf('<label for="%1$s"><input type="checkbox" name="%1$s" id="%1$s"%2$s value="%3$s" /> %4$s</label><br />',
-               $checkbox->get('name'), $state, $checkbox->get('value'),
-               $this->escape($checkbox->get('label')));
-    }
-
-    function _renderSubmit($submit)
-    {
-        $name = !empty($submit->_name) ? ' name="' . $submit->_name . '"' : '';
-        printf('<input type="submit"%s value="%s" /><br />',
-               $name, $this->escape($submit->_label));
-    }
-
-    function _renderHidden($hidden)
-    {
-        printf('<input type="hidden" name="%s" value="%s" />',
-               $hidden->get('name'), $hidden->get('value'));
-    }
-
-    function _renderDl($dl)
-    {
-        echo '<dl>';
-
-        parent::_renderDl($dl);
-
-        // Terminate Dl.
-        if ($this->isBrowser('mml')) {
-            // MML has problems with the clear attribute.
-            echo '</dl><br />';
-        } else {
-            echo '</dl><br clear="all" />';
-        }
-    }
-
-    function _renderTable($table)
-    {
-        $border = $table->get('border');
-        $padding = $table->get('padding');
-        $spacing = $table->get('spacing');
-
-        echo '<table';
-        if (!is_null($border)) {
-            echo ' border="' . $border . '"';
-        }
-        if (!is_null($padding)) {
-            echo ' cellpadding="' . $padding . '"';
-        }
-        if (!is_null($spacing)) {
-            echo ' cellspacing="' . $spacing . '"';
-        }
-        echo '>';
-
-        parent::_renderTable($table);
-
-        // Terminate table.
-        if ($this->isBrowser('mml')) {
-            echo '</table><br />';
-        } else {
-            // MML has problems with the clear attribute.
-            echo '</table><br clear="all" />';
-        }
-    }
-
-    function _renderPhone($phone)
-    {
-        if ($this->isBrowser('imode')) {
-            // Create phoneto: link for i-Mode.
-            printf('<p><a href="phoneto:%s">%s</a></p>',
-                   $phone->get('number'), $phone->get('label'));
-        } elseif ($this->isBrowser('mml')) {
-            // Create tel: link for MML.
-            printf('<p><a href="tel:%s">%s</a></p>',
-                   $phone->get('number'), $phone->get('label'));
-        } else {
-            // Display phone number as plain text.
-            printf('<p><big>%s</big></p>', $phone->get('label'));
-        }
-    }
-
-    function _renderRule($rule)
-    {
-        $width = $rule->get('width');
-        $size = $rule->get('size');
-
-        echo '<hr' . ($width ? ' width="' . $width . '"' : '') . ($size ? ' size="' . $size . '"' : '') . " />\n";
-    }
-
-    function _getMode($mode)
-    {
-        switch ($mode) {
-        case 'katakana':
-            return ' mode="katakana"';
-
-        case 'hiragana':
-            return ' mode="hiragana"';
-
-        case 'numeric':
-            return ' mode="numeric"';
-
-        case 'alpha':
-        default:
-            return ' mode="alphabet"';
-        }
-    }
-
-}
diff --git a/framework/Mobile/Mobile/Renderer/wml.php b/framework/Mobile/Mobile/Renderer/wml.php
deleted file mode 100644 (file)
index 2e5c715..0000000
+++ /dev/null
@@ -1,340 +0,0 @@
-<?php
-/**
- * Horde_Mobile_Renderer:: output module for WML (Wireless Markup Language).
- *
- * Copyright 2002-2010 The Horde Project (http://www.horde.org/)
- *
- * See the enclosed file COPYING for license information (LGPL). If you
- * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
- *
- * @author  Chuck Hagenbuch <chuck@horde.org>
- * @package Horde_Mobile
- */
-class Horde_Mobile_Renderer_wml extends Horde_Mobile_Renderer {
-
-    /**
-     * Properly encode characters for output to a WML device.
-     *
-     * @param string $input  Characters to encode.
-     *
-     * @return string  The encoded text.
-     */
-    function escape($input)
-    {
-        // Encode entities.
-        $output = @htmlspecialchars($input, ENT_COMPAT, Horde_Nls::getCharset());
-
-        // Escape $ character in WML.
-        $output = str_replace('$', '$$', $output);
-
-        // Generate UTF-8.
-        $output = Horde_String::convertCharset($output, Horde_Nls::getCharset(), 'utf-8');
-
-        return $output;
-    }
-
-    /**
-     * Creates the page in WML, allowing for different WML browser quirks.
-     *
-     * @param Horde_Mobile $deck  The deck to render.
-     */
-    function render(&$deck)
-    {
-        if ($deck->_debug) {
-            header('Content-Type: text/plain; charset=utf-8');
-        } else {
-            header('Content-Type: text/vnd.wap.wml; charset=utf-8');
-        }
-
-        echo "<?xml version=\"1.0\"?>\n";
-        if ($this->hasQuirk('ow_gui_1.3')) {
-            echo '<!DOCTYPE wml PUBLIC "-//PHONE.COM//DTD WML 1.3//EN" "http://www.openwave.com/dtd/wml13.dtd">';
-        } else {
-            echo '<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">';
-        }
-        echo '<wml>';
-
-        if (count($deck->_cards)) {
-            foreach ($deck->_cards as $card) {
-                $this->_renderCard($card);
-            }
-        } else {
-            $title = $deck->get('title') ? ' title="' . $this->escape($deck->get('title')) . '"' : '';
-            printf('<card%s>', $title);
-
-            // Render all tags.
-            foreach ($deck->_elements as $page_element) {
-                $this->renderElement($page_element);
-            }
-
-            echo '</card>';
-        }
-
-        // End the WML page.
-        echo '</wml>';
-    }
-
-    function _renderCard(&$card)
-    {
-        $name = $card->get('name') ? ' id="' . $this->escape($card->get('name')) . '"' : '';
-        $title = $card->get('title') ? ' title="' . $this->escape($card->get('title')) . '"' : '';
-        printf('<card%s%s>', $name, $title);
-
-        // Initialize WML variables with their default values.
-        if (!is_null($card->_form)) {
-            echo '<onevent type="onenterforward"><refresh>';
-            $defaults = $card->_form->getDefaults();
-            foreach ($defaults as $d) {
-                printf('<setvar name="_%s" value="%s"/>', $d['name'], $this->escape($d['value']));
-            }
-            echo '</refresh></onevent>';
-        }
-
-        if (count($card->_softkeys)) {
-            if (count($card->_softkeys) == 1) {
-                // If there is only one softkey, make it of type
-                // 'options' so that it always shows up on the right,
-                // instead of having to share the left softkey with
-                // active links, making it much harder to get to.
-                $type = 'options';
-            } else {
-                $type = 'accept';
-            }
-            foreach ($card->_softkeys as $key) {
-                echo '<do type="' . $type . '" label="' . $this->escape($key['label']) . '"><go href="' . $key['url'] . '"/></do>';
-            }
-        }
-
-        // Render all tags.
-        foreach ($card->_elements as $page_element) {
-            $this->renderElement($page_element);
-        }
-
-        echo '</card>';
-    }
-
-    function _renderLink(&$link)
-    {
-        $title_option = $link->get('title') ? sprintf(' title="%s"', $this->escape($link->get('title'))) : '';
-
-        printf('<a%s href="%s">%s</a>',
-               $title_option, str_replace('&amp;amp;', '&amp;', $this->escape($link->get('url'))),
-               $this->escape($link->get('label')));
-    }
-
-    function _renderLinkset(&$linkset)
-    {
-        if (count($linkset->_elements)) {
-            echo '<p>';
-            if ($this->isBrowser('up')) {
-                echo '<select>';
-                foreach ($linkset->_elements as $val) {
-                    $title = $val->get('title') ? ' title="' . $this->escape($val->get('title')) . '"' : '';
-                    printf('<option onpick="%s"%s>%s</option>',
-                           str_replace('&amp;amp;', '&amp;', $this->escape($val->get('url'))),
-                           $title,
-                           $this->escape($val->get('label')));
-                }
-                echo '</select>';
-            } else {
-                foreach ($linkset->_elements as $val) {
-                    $this->_renderLink($val);
-                    echo '<br />';
-                }
-            }
-            echo '</p>';
-        }
-    }
-
-    function _renderText(&$element)
-    {
-        foreach ($element->_attributes as $attribute) {
-            echo '<' . $attribute . '>';
-        }
-
-        if ($element->get('linebreaks')) {
-            echo nl2br($this->escape($element->get('text')));
-        } else {
-            echo $this->escape($element->get('text'));
-        }
-
-        $attributes = array_reverse($element->_attributes);
-        foreach ($attributes as $attribute) {
-            echo '</' . $attribute . '>';
-        }
-    }
-
-    function _renderImage(&$image)
-    {
-        $attributes = '';
-        foreach ($image->_attributes as $attribute => $value) {
-            $attributes .= sprintf(' %s="%s"', $attribute, $value);
-        }
-        printf('<img src="%s.wbmp"%s/>', $image->_src, $attributes);
-    }
-
-    function _renderInput(&$input)
-    {
-        $type = ' type="' . $input->get('type') . '"';
-        $size = $input->get('size') ? sprintf(' size="%d"', $input->get('size')) : '';
-        $maxlength = $input->get('maxlength') ? sprintf(' maxlength="%d"', $input->get('maxlength')) : '';
-
-        printf('%s<input emptyok="true" format="%s"%s name="_%s" value="%s"%s%s/>',
-               $this->escape($input->get('label')), $input->get('format'),
-               $type, $this->escape($input->get('name')), $this->escape($input->get('value')), $size, $maxlength);
-    }
-
-    function _renderTextarea(&$textarea)
-    {
-        printf('%s<input emptyok="true" name="_%s" value="%s"/>',
-               $this->escape($textarea->get('label')),
-               $textarea->get('name'), $textarea->get('value'));
-    }
-
-    function _renderSelect(&$select)
-    {
-        if ($label = $select->get('label')) {
-            echo $this->escape($label) . ' ';
-        }
-
-        if ($this->hasQuirk('ow_gui_1.3')) {
-            switch ($select->get('type')) {
-            case 'spin':
-                $type_option = 'type="spin"';
-                break;
-
-            case 'popup':
-            default:
-                $type_option = 'type="popup"';
-                break;
-            }
-
-            echo '<select ' . $type_option . ' name="_' . $select->get('name') . '">';
-        } else {
-            echo '<select name="_' . $select->get('name') . '">';
-        }
-
-        $htmlchars = $select->get('htmlchars');
-        foreach ($select->_options as $val) {
-            $label = $htmlchars ? $val['label'] : $this->escape($val['label']);
-            echo '<option value="' . $val['value'] . '">' . $label . '</option>';
-        }
-        echo '</select>';
-    }
-
-    function _renderRadio(&$radio)
-    {
-        if ($this->hasQuirk('ow_gui_1.3')) {
-            // Openwave GUI extensions for WML 1.3
-            printf('<select type="radio" name="_%s">', $radio->get('name'));
-        } else {
-            // Conventional WML (similar to Horde_Mobile_select).
-            printf('<select name="_%s">', $radio->get('name'));
-        }
-
-        foreach ($radio->_buttons as $val) {
-            printf('<option value="%s">%s</option>',
-                   $val['value'], $this->escape($val['label']));
-        }
-
-        echo '</select>';
-    }
-
-    function _renderCheckbox(&$checkbox)
-    {
-        printf('<select name="_%s" multiple="true">', $checkbox->get('name'));
-        printf('<option value="%s">%s</option></select>',
-               $checkbox->get('value'), $this->escape($checkbox->get('label')));
-    }
-
-    function _renderSubmit(&$submit)
-    {
-        if ($this->hasQuirk('ow_gui_1.3')) {
-            // Create <do type="button"> sequence for Openwave GUI
-            // extensions WML 1.3.
-            printf('<do type="button" label="%s">',
-                   $this->escape($submit->get('label')));
-            $tag = 'do';
-        } else {
-            // Create <anchor> sequence in normal WML.
-            printf('<anchor title="%s">%s',
-                   $this->escape($submit->get('label')),
-                   $this->escape($submit->get('label')));
-            $tag = 'anchor';
-        }
-
-        if ($submit->_form->get('method') == 'post') {
-            printf('<go href="%s" method="post">', Horde::url($submit->_form->get('url')));
-
-            // Value for this submit element, only if non-empty name.
-            if ($submit->get('name')) {
-                printf('<postfield name="%s" value="%s"/>', $submit->get('name'), $this->escape($submit->get('label')));
-            }
-
-            $defaults = $submit->_form->getDefaults();
-            foreach ($defaults as $d) {
-                if (array_key_exists('hidden', $d)) {
-                    printf('<postfield name="%s" value="%s"/>', $d['name'], $this->escape($d['value']));
-                } else {
-                    printf('<postfield name="%s" value="$(_%s)"/>', $d['name'], $d['name']);
-                }
-            }
-        } else {
-            // Start with the value for this submit element.
-            $query_string = $submit->get('name') . '=' . $this->escape($submit->get('label')) . '&amp;';
-
-            $getvars = $submit->_form->getGetVars();
-            foreach ($getvars as $val) {
-                $query_string .= $val . '=$(_' . $val . ')&amp;';
-            }
-
-            if (substr($query_string, -5) == '&amp;') {
-                $query_string = substr($query_string, 0, strlen($query_string) - 5);
-            }
-
-            printf('<go href="%s?%s">', $submit->_form->get('url'), $query_string);
-        }
-
-        echo "</go></$tag>";
-    }
-
-    function _renderTable(&$table)
-    {
-        // Count maximum number of columns in table.
-        $max = 0;
-        foreach ($table->_rows as $row) {
-            $max = max($max, $row->getColumnCount());
-        }
-        printf('<p><table columns="%d">', $max);
-
-        parent::_renderTable($table);
-
-        // Terminate table.
-        echo '</table></p>';
-    }
-
-    function _renderPhone(&$phone)
-    {
-        $title = $phone->get('title');
-        $title_option = ($title ? sprintf(' title="%s"', $this->escape($title)) : '');
-
-        printf('<a%s href="wtai://wp/mc;%s">%s</a>', $title_option,
-               str_replace('+', '%2B', $phone->get('number')), $phone->get('label'));
-    }
-
-    function _renderRule(&$rule)
-    {
-        if ($this->hasQuirk('ow_gui_1.3')) {
-            // WAP device accepts Openwave GUI extensions for WML 1.3
-            $width = $rule->get('width');
-            $size = $rule->get('size');
-
-            echo '<hr' . ($width ? ' width="' . $width . '"' : '') . ($size ? ' size="' . $size . '"' : '') . ' />';
-        } else {
-            // WAP device does not understand <hr /> tags.
-            // ==> draw some number of hyphens to create a rule
-            echo '----------<br />';
-        }
-    }
-
-}
diff --git a/framework/Mobile/package.xml b/framework/Mobile/package.xml
deleted file mode 100644 (file)
index 399db2c..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<package packagerversion="1.4.9" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0
-http://pear.php.net/dtd/tasks-1.0.xsd
-http://pear.php.net/dtd/package-2.0
-http://pear.php.net/dtd/package-2.0.xsd">
- <name>Horde_Mobile</name>
- <channel>pear.horde.org</channel>
- <summary>Horde Mobile API</summary>
- <description>Horde API for generating Mobile content. Includes numerous utility functions, generalized element classes, and renderers for markup languages including WML, HDML, and CHTML.
- </description>
- <lead>
-  <name>Chuck Hagenbuch</name>
-  <user>chuck</user>
-  <email>chuck@horde.org</email>
-  <active>yes</active>
- </lead>
- <date>2006-05-08</date>
- <time>22:33:35</time>
- <version>
-  <release>0.0.2</release>
-  <api>0.0.2</api>
- </version>
- <stability>
-  <release>alpha</release>
-  <api>alpha</api>
- </stability>
- <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
- <notes>Converted to package.xml 2.0 for pear.horde.org
- </notes>
- <contents>
-  <dir name="/">
-   <dir name="Mobile">
-    <dir name="Renderer">
-     <file baseinstalldir="/Horde" name="html.php" role="php" />
-     <file baseinstalldir="/Horde" name="wml.php" role="php" />
-    </dir> <!-- //Mobile/Renderer -->
-    <file baseinstalldir="/Horde" name="Renderer.php" role="php" />
-   </dir> <!-- //Mobile -->
-   <file baseinstalldir="/Horde" name="Mobile.php" role="php" />
-  </dir> <!-- / -->
- </contents>
- <dependencies>
-  <required>
-   <php>
-    <min>4.0.0</min>
-   </php>
-   <pearinstaller>
-    <min>1.4.0b1</min>
-   </pearinstaller>
-   <package>
-    <name>Horde_Framework</name>
-    <channel>pear.horde.org</channel>
-   </package>
-   <package>
-    <name>Util</name>
-    <channel>pear.horde.org</channel>
-   </package>
-  </required>
- </dependencies>
- <phprelease />
- <changelog>
-  <release>
-   <version>
-    <release>0.0.1</release>
-    <api>0.0.1</api>
-   </version>
-   <stability>
-    <release>alpha</release>
-    <api>alpha</api>
-   </stability>
-   <date>2003-07-03</date>
-   <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>Initial release as a PEAR package
-   </notes>
-  </release>
- </changelog>
-</package>