[ Index ]
 

Code source de Horde 3.1.3

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/lib/Horde/ -> Mobile.php (source)

   1  <?php
   2  /**
   3   * @package Horde_Mobile
   4   */
   5  class Horde_Mobile_card extends Horde_Mobile_element {
   6  
   7      var $_name;
   8      var $_title;
   9      var $_form;
  10      var $_elements = array();
  11      var $_softkeys = array();
  12  
  13      /**
  14       * Constructor
  15       *
  16       * @param string $name   The name of this card. Can be used in anchor
  17       *                       links.
  18       * @param string $title  If a string is provided here, it will be displayed
  19       *                       in the HTML title bar, respectively somewhere on
  20       *                       the WAP display. Using a title you will normally
  21       *                       have to spend one of your few lines on your WAP
  22       *                       display. Consider that some WAP phones/SDK's and
  23       *                       handheld devices don't display the title at all.
  24       */
  25      function Horde_Mobile_card($name = null, $title = null)
  26      {
  27          $this->_name = $name;
  28          $this->_title = $title;
  29      }
  30  
  31      function &add(&$element)
  32      {
  33          static $linksetAdded;
  34  
  35          if (!is_a($element, 'Horde_Mobile_element')) {
  36              $error = PEAR::raiseError('Invalid element.');
  37              return $error;
  38          } elseif (is_a($element, 'Horde_Mobile_text') ||
  39                    is_a($element, 'Horde_Mobile_table') ||
  40                    is_a($element, 'Horde_Mobile_image') ||
  41                    is_a($element, 'Horde_Mobile_link') ||
  42                    is_a($element, 'Horde_Mobile_phone') ||
  43                    is_a($element, 'Horde_Mobile_rule')) {
  44              $block = &new Horde_Mobile_block($element);
  45              $this->_elements[] = &$block;
  46          } elseif (is_a($element, 'Horde_Mobile_block')) {
  47              $this->_elements[] = &$element;
  48          } elseif (is_a($element, 'Horde_Mobile_form')) {
  49              if (!empty($this->_form)) {
  50                  $error = PEAR::raiseError('Cards may only contain one Form element.');
  51                  return $error;
  52              }
  53              $this->_elements[] = &$element;
  54              $this->_form = &$element;
  55          } elseif (is_a($element, 'Horde_Mobile_linkset')) {
  56              if (!empty($linksetAdded)) {
  57                  $error = PEAR::raiseError('Cards may only contain one Linkset element.');
  58                  return $error;
  59              }
  60              $block = &new Horde_Mobile_block($element);
  61              $this->_elements[] = &$block;
  62              $linksetAdded = true;
  63          } else {
  64              $error = PEAR::raiseError('This element must be inside an appropriate container element.');
  65              return $error;
  66          }
  67  
  68          return $element;
  69      }
  70  
  71      function softkey($url, $label)
  72      {
  73          $this->_softkeys[] = array('url' => $url,
  74                                     'label' => $label);
  75      }
  76  
  77  }
  78  
  79  /**
  80   * Horde_Mobile::
  81   *
  82   * Horde API for generating Mobile content. Includes numerous utility
  83   * functions, generalized element classes, and renderers for markup
  84   * languages including WML, HDML, and CHTML.
  85   *
  86   * This class is the top level class of all Horde_Mobile classes. Your
  87   * page should consist of exactly one Horde_Mobile object. Appropriate
  88   * markup - Imode, WML, HDML, etc. - is generated by the appropriate
  89   * renderer object
  90   *
  91   * Do not overstuff Horde_Mobile objects. Remember that a lot of WAP
  92   * clients cannot handle more than about 1400 bytes of compiled data.
  93   *
  94   * Examples:
  95   *
  96   * $myPage = new Horde_Mobile();
  97   * $myPage = new Horde_Mobile('My WAP page');
  98   * $myPage = new Horde_Mobile('', 'center');
  99   *
 100   * // More stuff
 101   *
 102   * $myPage->add($myText);
 103   *
 104   * // More items
 105   *
 106   * $myPage->render();
 107   *
 108   * $Horde: framework/Mobile/Mobile.php,v 1.32.10.9 2006/06/26 06:27:23 selsky Exp $
 109   *
 110   * Copyright 2002-2006 Chuck Hagenbuch <chuck@horde.org>
 111   *
 112   * See the enclosed file COPYING for license information (LGPL). If you
 113   * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
 114   *
 115   * @author  Chuck Hagenbuch <chuck@horde.org>
 116   * @since   Horde 3.0
 117   * @package Horde_Mobile
 118   */
 119  class Horde_Mobile extends Horde_Mobile_card {
 120  
 121      var $_title;
 122      var $_elements = array();
 123      var $_cards = array();
 124      var $_debug = false;
 125  
 126      // Decide whether the simulator device is to be used. Only affects
 127      // HTML browser output.
 128      var $_simulator = false;
 129  
 130      /**
 131       * Constructor
 132       *
 133       * @param string $title  If a string is provided here, it will be displayed
 134       *                       in the HTML title bar, respectively somewhere on
 135       *                       the WAP display. Using a title you will normally
 136       *                       have to spend one of your few lines on your WAP
 137       *                       display. Consider that some WAP phones/SDK's and
 138       *                       handheld devices don't display the title at all.
 139       * @param string $agent  If specified, use instead of HTTP_USER_AGENT.
 140       */
 141      function Horde_Mobile($title = null, $agent = null)
 142      {
 143          if (!is_null($title)) {
 144              $this->_title = $title;
 145          }
 146  
 147          require_once  'Horde/Browser.php';
 148          $browser = &Browser::singleton($agent);
 149  
 150          if ($browser->hasFeature('html')) {
 151              $ml = 'html';
 152          } elseif ($browser->hasFeature('wml')) {
 153              $ml = 'wml';
 154          } else {
 155              $ml = 'html';
 156          }
 157  
 158          require_once dirname(__FILE__) . '/Mobile/Renderer.php';
 159          $this->_renderer = &Horde_Mobile_Renderer::singleton($ml, $browser);
 160      }
 161  
 162      function &add(&$element)
 163      {
 164          if (is_a($element, 'Horde_Mobile_card')) {
 165              if (count($this->_elements)) {
 166                  $error = PEAR::raiseError('You cannot mix Horde_Mobile_cards and other elements at the deck level.');
 167                  return $error;
 168              }
 169  
 170              $this->_usingCards = true;
 171              $this->_cards[] = &$element;
 172  
 173              return $element;
 174          } else {
 175              if (count($this->_cards)) {
 176                  $error = PEAR::raiseError('You cannot mix Horde_Mobile_cards and other elements at the deck level.');
 177                  return $error;
 178              }
 179  
 180              return parent::add($element);
 181          }
 182      }
 183  
 184      /**
 185       * Activates the built-in device simulator on bigscreen browsers.
 186       * The device simulator is only fully-functional in Internet
 187       * Explorer, because the layout requires a scrollable table
 188       * element. Other browsers will fail to show content on pages
 189       * longer than a single screen.
 190       */
 191      function useSimulator()
 192      {
 193          $this->_simulator = true;
 194      }
 195  
 196      /**
 197       * Creates the page in the appropriate markup language. Depending
 198       * on the renderer type, HTML (pure HTML, handheldfriendly AvantGo
 199       * HTML, i-mode cHTML, MML), WML or HDML code is created.
 200       */
 201      function display()
 202      {
 203          $this->_renderer->render($this);
 204      }
 205  
 206  }
 207  
 208  /**
 209   * @package Horde_Mobile
 210   */
 211  class Horde_Mobile_element {
 212  
 213      function Horde_Mobile_element()
 214      {
 215      }
 216  
 217      function get($attribute)
 218      {
 219          $attr = '_' . $attribute;
 220          if (isset($this->$attr)) {
 221              return $this->$attr;
 222          } else {
 223              return null;
 224          }
 225      }
 226  
 227      function set($attribute, $value)
 228      {
 229          $attr = '_' . $attribute;
 230          $this->$attr = $value;
 231      }
 232  
 233  }
 234  
 235  /**
 236   * @package Horde_Mobile
 237   */
 238  class Horde_Mobile_formElement extends Horde_Mobile_element {
 239  
 240      var $_name;
 241      var $_value;
 242      var $_label;
 243      var $_size;
 244      var $_maxlength;
 245      var $_type;
 246      var $_format;
 247      var $_mode;
 248  
 249      /**
 250       * Set input mode/istyle for japanese MML/i-mode devices.
 251       *
 252       * @param string $mode  Input mode, one of:
 253       *                      'alpha' (default)
 254       *                      'katakana'
 255       *                      'hiragana'
 256       *                      'numeric'
 257       */
 258      function setMode($mode)
 259      {
 260          $this->_mode = $mode;
 261  
 262          // Map the mode into an appropriate format string, used for
 263          // WML and HDML. If a format string was provided earlier, it
 264          // will be overwritten.
 265          switch ($mode) {
 266          case 'hiragana':
 267          case 'katakana':
 268              $this->_format = '*M';
 269              break;
 270  
 271          case 'alpha':
 272              $this->_format = '*m';
 273              break;
 274  
 275          case 'numeric':
 276              $this->_format = '*N';
 277              break;
 278          }
 279      }
 280  
 281  }
 282  
 283  /**
 284   * This class defines a form with various possible input elements. The
 285   * input elements have to be defined as separate objects and are
 286   * linked to the form with a special "add" function. One Horde_Mobile
 287   * object can contain only one Horde_Mobile_form object.
 288   *
 289   * Examples:
 290   *
 291   * $myPage = new Horde_Mobile(...);
 292   *
 293   * $myForm = new Horde_Mobile_form("/mynextpage.wml");
 294   * $myText = new Horde_Mobile_text(...);
 295   * $myForm->add($myText);
 296   * $myInput = new Horde_Mobile_input(...);
 297   * $myForm->add($myInput);
 298   * $mySubmit = new Horde_Mobile_submit(...);
 299   * $myForm->add($mySubmit);
 300   *
 301   * $myPage->add($myForm);
 302   *
 303   * $myPage->render();
 304   *
 305   * @see Horde_Mobile_text
 306   * @see Horde_Mobile_image
 307   * @see Horde_Mobile_table
 308   * @see Horde_Mobile_input
 309   * @see Horde_Mobile_textarea
 310   * @see Horde_Mobile_select
 311   * @see Horde_Mobile_radio
 312   * @see Horde_Mobile_checkbox
 313   * @see Horde_Mobile_submit
 314   * @see Horde_Mobile_rule
 315   *
 316   * @package Horde_Mobile
 317   */
 318  class Horde_Mobile_form extends Horde_Mobile_element {
 319  
 320      var $_url;
 321      var $_method;
 322      var $_elements = array();
 323  
 324      /**
 325       * Constructor
 326       *
 327       * @param string $url       Address where the user input is sent to.
 328       * @param string $method    'post' (default) or 'get'.
 329       * @param boolean $session  Preserve the sesion id in the form? Defaults to true.
 330       */
 331      function Horde_Mobile_form($url, $method = 'post', $session = true)
 332      {
 333          $this->_url = $url;
 334          $this->_method = $method;
 335  
 336          if ($session && !array_key_exists(session_name(), $_COOKIE)) {
 337              $this->add(new Horde_Mobile_hidden(session_name(), session_id()));
 338          }
 339      }
 340  
 341      function &add(&$formElement)
 342      {
 343          if (is_a($formElement, 'Horde_Mobile_submit')) {
 344              $formElement->_form = &$this;
 345              $block = &new Horde_Mobile_block($formElement);
 346              $this->_elements[] = &$block;
 347          } elseif (is_a($formElement, 'Horde_Mobile_hidden') ||
 348                    is_a($formElement, 'Horde_Mobile_block')) {
 349              $this->_elements[] = &$formElement;
 350          } elseif (is_a($formElement, 'Horde_Mobile_formElement') ||
 351                    is_a($formElement, 'Horde_Mobile_text') ||
 352                    is_a($formElement, 'Horde_Mobile_table') ||
 353                    is_a($formElement, 'Horde_Mobile_rule') ||
 354                    is_a($formElement, 'Horde_Mobile_image')) {
 355              $block = &new Horde_Mobile_block($formElement);
 356              $this->_elements[] = &$block;
 357          } else {
 358              $error = PEAR::raiseError('Specified element cannot be inside a form.');
 359              return $error;
 360          }
 361  
 362          return $formElement;
 363      }
 364  
 365      function getDefaults()
 366      {
 367          $defaults = array();
 368          foreach ($this->_elements as $val) {
 369              switch (strtolower(get_class($val))) {
 370              case 'horde_mobile_hidden':
 371                  $defaults[] = array('name' => $val->get('name'),
 372                                      'value' => $val->get('value'),
 373                                      'hidden' => true);
 374                  break;
 375  
 376              case 'horde_mobile_block':
 377                  foreach ($val->_elements as $bval) {
 378                      switch (strtolower(get_class($bval))) {
 379                      case 'horde_mobile_checkbox':
 380                          if ($bval->isChecked()) {
 381                              $defaults[] = array('name' => $bval->get('name'),
 382                                                  'value' => $bval->get('value'));
 383                          }
 384                          break;
 385  
 386                      case 'horde_mobile_input':
 387                      case 'horde_mobile_textarea':
 388                      case 'horde_mobile_select':
 389                      case 'horde_mobile_radio':
 390                          $defaults[] = array('name' => $bval->get('name'),
 391                                              'value' => $bval->get('value'));
 392                          break;
 393  
 394                      case 'horde_mobile_hidden':
 395                          $defaults[] = array('name' => $bval->get('name'),
 396                                              'value' => $bval->get('value'),
 397                                              'hidden' => true);
 398                          break;
 399  
 400                      case 'horde_mobile_table':
 401                          foreach ($bval->_rows as $row) {
 402                              foreach ($row->_columns as $col) {
 403                                  switch (strtolower(get_class($col))) {
 404                                  case 'horde_mobile_checkbox':
 405                                      if ($col->isChecked()) {
 406                                          $defaults[] = array('name' => $bval->get('name'),
 407                                                              'value' => $bval->get('value'));
 408                                      }
 409                                      break;
 410  
 411                                  case 'horde_mobile_input':
 412                                  case 'horde_mobile_textarea':
 413                                  case 'horde_mobile_select':
 414                                  case 'horde_mobile_radio':
 415                                      $defaults[] = array('name' => $bval->get('name'),
 416                                                          'value' => $bval->get('value'));
 417                                      break;
 418  
 419                                  case 'horde_mobile_hidden':
 420                                      $defaults[] = array('name' => $bval->get('name'),
 421                                                          'value' => $bval->get('value'),
 422                                                          'hidden' => true);
 423                                      break;
 424                                  }
 425                              }
 426                          }
 427                          break;
 428                      }
 429                  }
 430                  break;
 431              }
 432          }
 433  
 434          return $defaults;
 435      }
 436  
 437      function getGetVars()
 438      {
 439          // Determine all elements that have to be submitted.
 440          $getvars = array();
 441          foreach ($this->_elements as $val) {
 442              switch (strtolower(get_class($val))) {
 443              case 'horde_mobile_block':
 444                  foreach ($val->_elements as $bval) {
 445                      switch (strtolower(get_class($bval))) {
 446                      case 'horde_mobile_input':
 447                      case 'horde_mobile_hidden':
 448                      case 'horde_mobile_textarea':
 449                      case 'horde_mobile_select':
 450                      case 'horde_mobile_checkbox':
 451                      case 'horde_mobile_radio':
 452                          $getvars[] = $bval->get('name');
 453                          break;
 454  
 455                      case 'horde_mobile_table':
 456                          foreach ($bval->_rows as $row) {
 457                              foreach ($row->_columns as $col) {
 458                                  switch (strtolower(get_class($col))) {
 459                                  case 'horde_mobile_input':
 460                                  case 'horde_mobile_hidden':
 461                                  case 'horde_mobile_textarea':
 462                                  case 'horde_mobile_select':
 463                                  case 'horde_mobile_checkbox':
 464                                  case 'horde_mobile_radio':
 465                                      $getvars[] = $col->get('name');
 466                                      break;
 467                                  }
 468                              }
 469                          }
 470                          break;
 471                      }
 472                  }
 473                  break;
 474              }
 475          }
 476  
 477          return $getvars;
 478      }
 479  
 480  }
 481  
 482  /**
 483   * This class holds text-level elements for use in Horde_Mobile or
 484   * Horde_Mobile_form objects.
 485   *
 486   * Examples:
 487   *
 488   * $block = new Horde_Mobile_block("Hello WAP!");
 489   * $text = new Horde_Mobile_text("Welcome to Horde_Mobile", 'b');
 490   * $block->add($text);
 491   *
 492   * @see Horde_Mobile
 493   * @see Horde_Mobile_form
 494   *
 495   * @package Horde_Mobile
 496   */
 497  class Horde_Mobile_block extends Horde_Mobile_element {
 498  
 499      var $_elements = array();
 500  
 501      /**
 502       * Constructor.
 503       *
 504       * @param mixed $elements  Any elements (a single one or an array) to fill this block with.
 505       */
 506      function Horde_Mobile_block(&$elements)
 507      {
 508          if (!is_null($elements)) {
 509              if (!is_array($elements)) {
 510                  $this->add($elements);
 511              } else {
 512                  foreach ($elements as $element) {
 513                      $this->add($element);
 514                  }
 515              }
 516          }
 517      }
 518  
 519      function &add(&$element)
 520      {
 521          if (!is_a($element, 'Horde_Mobile_element')) {
 522              $error = PEAR::raiseError('Invalid element.');
 523          } elseif (is_a($element, 'Horde_Mobile_text') ||
 524                    is_a($element, 'Horde_Mobile_table') ||
 525                    is_a($element, 'Horde_Mobile_image') ||
 526                    is_a($element, 'Horde_Mobile_formElement') ||
 527                    is_a($element, 'Horde_Mobile_link') ||
 528                    is_a($element, 'Horde_Mobile_linkset') ||
 529                    is_a($element, 'Horde_Mobile_phone') ||
 530                    is_a($element, 'Horde_Mobile_rule')) {
 531              $this->_elements[] = &$element;
 532              return $element;
 533          } else {
 534              $error = PEAR::raiseError('The element is not allowed inside a block.');
 535          }
 536          return $error;
 537      }
 538  
 539  }
 540  
 541  /**
 542   * This class inserts plain text into a Horde_Mobile_block or a
 543   * Horde_Mobile_row object.
 544   *
 545   * Examples:
 546   *
 547   * $myText1 = new Horde_Mobile_text("Hello WAP!");
 548   * $myText2 = new Horde_Mobile_text("Welcome to Horde_Mobile", 'b');
 549   * $myText3 = new Horde_Mobile_text("Good Morning", array('b', 'big'));
 550   *
 551   * @see Horde_Mobile_block
 552   * @see Horde_Mobile_row
 553   *
 554   * @package Horde_Mobile
 555   */
 556  class Horde_Mobile_text extends Horde_Mobile_element {
 557  
 558      var $_text = '';
 559      var $_attributes = array();
 560      var $_linebreaks = false;
 561  
 562      /**
 563       * Constructor
 564       * @param string $text       The text content of the element.
 565       * @param array $attributes  Text attributes. Any of:
 566       *   'b'
 567       *   'u'
 568       *   'i'
 569       *   'big'
 570       *   'small'
 571       */
 572      function Horde_Mobile_text($text, $attributes = array())
 573      {
 574          $this->_text = $text;
 575          if (!is_array($attributes)) {
 576              $attributes = array($attributes);
 577          }
 578          $this->_attributes = $attributes;
 579      }
 580  
 581  }
 582  
 583  /**
 584   * This class allows to insert bitmap images into a Horde_Mobile_block,
 585   * Horde_Mobile_form or Horde_Mobile_row object.
 586   *
 587   * Examples:
 588   *
 589   * $image = new Horde_Mobile_image('/path/to/image.wbmp',
 590   *                                 array('height' => 100, 'width' => 100));
 591   *
 592   * @see Horde_Mobile_block
 593   * @see Horde_Mobile_form
 594   * @see Horde_Mobile_row
 595   *
 596   * @package Horde_Mobile
 597   */
 598  class Horde_Mobile_image extends Horde_Mobile_element {
 599  
 600      var $_src = '';
 601      var $_attributes = array();
 602  
 603      /**
 604       * Constructor
 605       * @param string $src        The source location of the image.
 606       * @param array $attributes  Image attributes. Any of:
 607       *   'align'
 608       *   'alt'
 609       *   'height'
 610       *   'hspace'
 611       *   'vspace'
 612       *   'width'
 613       *   'class'
 614       *   'id'
 615       */
 616      function Horde_Mobile_image($src, $attributes = array())
 617      {
 618          $this->_src = $src;
 619          $this->_attributes = $attributes;
 620      }
 621  
 622  }
 623  
 624  /**
 625   * This class allows to insert tables into a Horde_Mobile or
 626   * Horde_Mobile_form object.
 627   *
 628   * Examples:
 629   *
 630   * $myTable = new Horde_Mobile_table();
 631   *
 632   * $row1 = new Horde_Mobile_row();
 633   * $row1->add($image1);
 634   * $row1->add($text1);
 635   * $myTable->add($row1);
 636   *
 637   * $row2 = new Horde_Mobile_row();
 638   * $row2->add($image2);
 639   * $row2->add($text2);
 640   * $myTable->add($row2);
 641   *
 642   * $myDeck->add($myTable);
 643   *
 644   * @see Horde_Mobile
 645   * @see Horde_Mobile_form
 646   * @see Horde_Mobile_row
 647   *
 648   * @package Horde_Mobile
 649   */
 650  class Horde_Mobile_table extends Horde_Mobile_element {
 651  
 652      var $_rows = array();
 653      var $_border = null;
 654      var $_padding = null;
 655      var $_spacing = null;
 656  
 657      /**
 658       * Adds a Horde_Mobile_row object to Horde_Mobile_table.
 659       *
 660       * @param Horde_Mobile_row $row  The row object to add.
 661       */
 662      function &add(&$row)
 663      {
 664          if (!is_a($row, 'Horde_Mobile_row')) {
 665              $error = PEAR::raiseError('Rows must be Horde_Mobile_row objects.');
 666              return $error;
 667          }
 668  
 669          $this->_rows[] = &$row;
 670          return $row;
 671      }
 672  
 673  }
 674  
 675  /**
 676   * This class defines the rows that a Horde_Mobile_table object
 677   * consists of.
 678   *
 679   * Examples:
 680   *
 681   * $image1 = new Horde_Mobile_image("my_image.wbmp", "my_image.png", ":-)");
 682   * $text1 = new Horde_Mobile_text("my text");
 683   * $row1 = new Horde_Mobile_row();
 684   * $row1->add($image1);
 685   * $row1->add();
 686   * $row1->add($text1);
 687   *
 688   * @see Horde_Mobile_table
 689   * @see Horde_Mobile_text
 690   * @see Horde_Mobile_image
 691   * @see Horde_Mobile_link
 692   *
 693   * @package Horde_Mobile
 694   */
 695  class Horde_Mobile_row extends Horde_Mobile_element {
 696  
 697      var $_columns = array();
 698  
 699      /**
 700       * Adds a column element to a Horde_Mobile_row object.
 701       *
 702       * @param Horde_Mobile_element $cellElement  Can be a Horde_Mobile_text
 703       *                                           object, a Horde_Mobile_image
 704       *                                           object, a Horde_Mobile_link
 705       *                                           object or null. The latter
 706       *                                           results in an empty cell.
 707       */
 708      function &add($cellElement = null)
 709      {
 710          if (is_object($cellElement)) {
 711              if (!is_a($cellElement, 'Horde_Mobile_text') &&
 712                  !is_a($cellElement, 'Horde_Mobile_link') &&
 713                  !is_a($cellElement, 'Horde_Mobile_image')) {
 714                  $error = PEAR::raiseError('Table cells can only contain text, links, or images.');
 715                  return $error;
 716              }
 717              $this->_columns[] = &$cellElement;
 718              return $cellElement;
 719          } elseif (!is_null($cellElement)) {
 720              $t = &new Horde_Mobile_text($cellElement);
 721              $this->_columns[] = &$t;
 722              return $t;
 723          } else {
 724              $this->_columns[] = &$cellElement;
 725              return $cellElement;
 726          }
 727      }
 728  
 729      function getColumnCount()
 730      {
 731          return count($this->_columns);
 732      }
 733  
 734  }
 735  
 736  /**
 737   * This class provides a text input field in a Horde_Mobile_form object.
 738   *
 739   * Examples:
 740   *
 741   * $myInput1 = new Horde_Mobile_input('cid', '', 'Customer ID');
 742   *
 743   * $myInput2 = new Horde_Mobile_input('cid', '', 'Customer ID', '*N');
 744   * $myInput2->set_size(6);
 745   * $myInput2->set_maxlength(6);
 746   *
 747   * $myInput3 = new Horde_Mobile_input('pw', '', 'Password', '*N');
 748   * $myInput3->set_size(8);
 749   * $myInput3->set_maxlength(8);
 750   * $myInput3->set_type('password');
 751   *
 752   * @see Horde_Mobile_form
 753   *
 754   * @package Horde_Mobile
 755   */
 756  class Horde_Mobile_input extends Horde_Mobile_formElement {
 757  
 758      /**
 759       * Constructor
 760       *
 761       * @param string $name    Variable in which the input is sent to the
 762       *                        destination URL.
 763       * @param string $value   Initial value that will be presented in the
 764       *                        input field.
 765       * @param string $label   Describes your input field on the surfer's
 766       *                        screen/display.
 767       * @param string $format  Input format code according to the WAP standard.
 768       *                        Allows the WAP user client e.g. to input only
 769       *                        digits and no characters. On an HTML generated
 770       *                        page this format has no significance.
 771       */
 772      function Horde_Mobile_input($name, $value, $label = '', $format = '*M')
 773      {
 774          $this->_name = $name;
 775          $this->_value = $value;
 776          $this->_label = $label;
 777          $this->_format = $format;
 778          $this->_type = 'text';
 779          $this->_mode = 'alpha';
 780      }
 781  
 782  }
 783  
 784  /**
 785   * This class provides an input textarea in a Horde_Mobile_form object.
 786   *
 787   * Examples:
 788   *
 789   * $myArea1 = new Horde_Mobile_textarea('fb', '', 'Feedback');
 790   * $myArea2 = new Horde_Mobile_textarea('msg', 'Enter message here ...', 'Message', 40, 5);
 791   *
 792   * @see Horde_Mobile_form
 793   *
 794   * @package Horde_Mobile
 795   */
 796  class Horde_Mobile_textarea extends Horde_Mobile_formElement {
 797  
 798      var $_rows;
 799      var $_cols;
 800  
 801      /**
 802       * Constructor.
 803       *
 804       * @param string $name   Variable in which the input is sent to the
 805       *                       destination URL.
 806       * @param string $value  Initial value that will be presented in the
 807       *                       textarea.
 808       * @param string $label  Describes your textarea on the surfer's
 809       *                       screen/display.
 810       * @param integer $rows  Rows.
 811       * @param integer $cols  Columns.
 812       */
 813      function Horde_Mobile_textarea($name, $value, $label, $rows = 3, $cols = 16)
 814      {
 815          $this->_name = $name;
 816          $this->_value = $value;
 817          $this->_label = $label;
 818          $this->_rows = $rows;
 819          $this->_cols = $cols;
 820          $this->_mode = 'alpha';
 821      }
 822  
 823  }
 824  
 825  /**
 826   * This class provides a select element in a Horde_Mobile_form object.
 827   * It allows to create optimized WML for WAP devices which are capable
 828   * to interprete the Openwave GUI extensions for WML 1.3. All other
 829   * WML devices receive WML 1.1 compatible markup code, which is quite
 830   * similar to the markup code created by the Horde_Mobile_radio class.
 831   *
 832   * Examples:
 833   *
 834   * $mySelect = new Horde_Mobile_select('color');
 835   * $mySelect->add('Blue', 'b');
 836   * $mySelect->add('Red', 'r', true);
 837   * $mySelect->add('Yellow', 'y');
 838   *
 839   * @see Horde_Mobile_form
 840   *
 841   * @package Horde_Mobile
 842   */
 843  class Horde_Mobile_select extends Horde_Mobile_formElement {
 844  
 845      var $_type;
 846      var $_options = array();
 847  
 848      /**
 849       * Constructor
 850       *
 851       * @param string $name  Variable in which the information about the
 852       *                      selected option is sent to the destination URL.
 853       * @param string $type  Type of select area:
 854       *                      'popup': popup the whole selection list
 855       *                      'spin':  rotate options on a WAP device screen (OW
 856       *                               1.3 GUI only).
 857       */
 858      function Horde_Mobile_select($name, $type = 'popup')
 859      {
 860          $this->_name = $name;
 861          $this->_type = $type;
 862          $this->_value = null;
 863      }
 864  
 865      /**
 866       * Adds one option to a Horde_Mobile_select object.
 867       *
 868       * @param string $label         Describes the option on the surfer's
 869       *                              screen/display.
 870       * @param string $value         Value sent in the "name" variable, if this
 871       *                              is the option selected.
 872       * @param boolean $is_selected  Allowed values are true or false.
 873       */
 874      function add($label, $value, $is_selected = false)
 875      {
 876          $this->_options[] = array('label' => $label,
 877                                    'value' => $value);
 878  
 879          if (is_null($this->_value) || $is_selected) {
 880              $this->_value = $value;
 881          }
 882      }
 883  
 884  }
 885  
 886  /**
 887   * This class provides a radio button element in a Horde_Mobile_form object.
 888   *
 889   * Examples:
 890   *
 891   * $myRadio = new Horde_Mobile_radio('country');
 892   * $myRadio->add('Finland', 'F');
 893   * $myRadio->add('Germany', 'G', true);
 894   * $myRadio->add('Sweden', 'S');
 895   *
 896   * @see Horde_Mobile_form
 897   *
 898   * @package Horde_Mobile
 899   */
 900  class Horde_Mobile_radio extends Horde_Mobile_formElement {
 901  
 902      var $_buttons = array();
 903  
 904      /**
 905       * Constructor
 906       *
 907       * @param string $name  Variable in which the information about the pressed button
 908       *                      is sent to the destination URL.
 909       */
 910      function Horde_Mobile_radio($name)
 911      {
 912          $this->_name = $name;
 913          $this->_value = null;
 914      }
 915  
 916      /**
 917       * Adds one radio button to a Horde_Mobile_radio object.
 918       *
 919       * @param string $label        Describes the radiobutton on the surfer's
 920       *                             screen/display.
 921       * @param string $value        Value sent in the "name" variable, if this
 922       *                             button is selected.
 923       * @param boolean $is_checked  Allowed values are true or false.
 924       */
 925      function add($label, $value, $is_checked = false)
 926      {
 927          $this->_buttons[] = array('label' => $label,
 928                                    'value' => $value);
 929  
 930          if (!$this->_value || ($is_checked)) {
 931              $this->_value = $value;
 932          }
 933      }
 934  
 935  }
 936  
 937  /**
 938   * This class provides a single checkbox element in a Horde_Mobile_form object.
 939   *
 940   * Examples:
 941   *
 942   * $myCheckbox = new Horde_Mobile_checkbox('agmt', 'yes', 'I agree');
 943   * $myCheckbox = new Horde_Mobile_checkbox('agmt', 'yes', 'I agree', false);
 944   * $myCheckbox = new Horde_Mobile_checkbox('agmt', 'yes', 'I agree', true);
 945   *
 946   * @note The first and second examples are identical.
 947   *
 948   * @see Horde_Mobile_form
 949   *
 950   * @package Horde_Mobile
 951   */
 952  class Horde_Mobile_checkbox extends Horde_Mobile_formElement {
 953  
 954      var $_checked;
 955  
 956      /**
 957       * Constructor
 958       *
 959       * @param string $name      Variable in which "value" is sent to the
 960       *                          destination URL, if the box is checked.
 961       * @param string $value     See name.
 962       * @param string $label     Describes the checkbox on the surfer's
 963       *                          screen/display.
 964       * @param boolean $checked  Allowed values are true or false.
 965       */
 966      function Horde_Mobile_checkbox($name, $value, $label, $checked = false)
 967      {
 968          $this->_name  = $name;
 969          $this->_value = $value;
 970          $this->_label = $label;
 971          $this->_checked = $checked;
 972      }
 973  
 974      function isChecked()
 975      {
 976          return $this->_checked;
 977      }
 978  
 979  }
 980  
 981  /**
 982   * This class provides hidden elements in Horde_Mobile_form objects.
 983   *
 984   * Examples:
 985   *
 986   * $hidden = new Horde_Mobile_hidden('internal_reference', '08154711');
 987   *
 988   * @see Horde_Mobile_form
 989   *
 990   * @package Horde_Mobile
 991   */
 992  class Horde_Mobile_hidden extends Horde_Mobile_formElement {
 993  
 994      /**
 995       * Constructor
 996       *
 997       * @param string $name   Variable in which $value is sent to the destination URL.
 998       * @param string $value  See name.
 999       */
1000      function Horde_Mobile_hidden($name, $value)
1001      {
1002          $this->_name = $name;
1003          $this->_value = $value;
1004      }
1005  
1006  }
1007  
1008  /**
1009   * This class provides a submit button for a Horde_Mobile_form object. One
1010   * Horde_Mobile_form object can contain only one Horde_Mobile_submit object.
1011   *
1012   * Examples:
1013   * $mySubmit = &new Horde_Mobile_submit('Submit');
1014   * $mySubmit = &new Horde_Mobile_submit('Submit', 'user_pressed');
1015   *
1016   * @see Horde_Mobile_form
1017   *
1018   * @package Horde_Mobile
1019   */
1020  class Horde_Mobile_submit extends Horde_Mobile_formElement {
1021  
1022      var $_form;
1023  
1024      /**
1025       * Constructor
1026       *
1027       * @param string $label  What's written on the button.
1028       * @param string $name   Variable in which "label" is sent to the
1029       *                       destination URL.
1030       */
1031      function Horde_Mobile_submit($label, $name = '')
1032      {
1033          $this->_label = $label;
1034          $this->_name = $name;
1035      }
1036  
1037  }
1038  
1039  /**
1040   * This class provides a link in a Horde_Mobile, Horde_Mobile_linkset or
1041   * Horde_Mobile_table object.
1042   *
1043   * Examples:
1044   *
1045   * $myPage = new Horde_Mobile(...);
1046   *
1047   * $myLink = new Horde_Mobile_link('Continue', '/mynextpage.wml');
1048   * $myPage->add($myLink);
1049   *
1050   * @see Horde_Mobile
1051   * @see Horde_Mobile_linkset
1052   * @see Horde_Mobile_table
1053   *
1054   * @package Horde_Mobile
1055   */
1056  class Horde_Mobile_link extends Horde_Mobile_element {
1057  
1058      var $_label;
1059      var $_url;
1060      var $_title;
1061      var $_accesskey;
1062  
1063      /**
1064       * Constructor
1065       *
1066       * @param string $label  Describes the link on the surfer's screen/display.
1067       * @param string $url    Next destination address. MUST be valid XML (&amp; instead of &, etc.).
1068       * @param string $title  If a string is provided here, it will be displayed
1069       *                       in the HTML browser status bar during
1070       *                       "MouseOver", respectively somewhere on the WAP
1071       *                       display. In order to work well with a broad range
1072       *                       of user agents, keep your title under 6
1073       *                       characters.
1074       */
1075      function Horde_Mobile_link($label, $url, $title = '')
1076      {
1077          $this->_label = $label;
1078          $this->_url = $url;
1079          $this->_title = $title;
1080  
1081          // No accesskey assigned by default; can be assigned later
1082          // from a Horde_Mobile_linkset object if required.
1083          $this->_accesskey = null;
1084      }
1085  
1086  }
1087  
1088  /**
1089   * This class provides a phone number in a Horde_Mobile object. If supported by
1090   * their mobile device, users can establish a voice connection to the
1091   * specified number.
1092   *
1093   * Examples:
1094   *
1095   * $myPhone = &new Horde_Mobile_phone('123-45678', 'CALL');
1096   * $myPage->add($myPhone);
1097   *
1098   * @see Horde_Mobile
1099   *
1100   * @package Horde_Mobile
1101   */
1102  class Horde_Mobile_phone extends Horde_Mobile_element {
1103  
1104      var $_label;
1105      var $_number;
1106      var $_title;
1107  
1108      /**
1109       * Constructor
1110       *
1111       * @param string $phone_number  Phone number to dial.
1112       * @param string $title         If a string is provided here, the call
1113       *                              button on a WAP/HDML device will be
1114       *                              enabled. In order to work well with
1115       *                              a broad range of user agents, keep your
1116       *                              title under 6 characters.
1117       */
1118      function Horde_Mobile_phone($phone_number, $title = '')
1119      {
1120          $this->_label = $phone_number;
1121          $this->_number = preg_replace('|\D|', '', $phone_number);
1122          $this->_title = $title;
1123      }
1124  
1125  }
1126  
1127  /**
1128   * This class defines a set of links. The links have to be defined as
1129   * separate Horde_Mobile_link objects and are attached to the linkset
1130   * with a special "add" function.  For WAP devices browser-dependent
1131   * WML code will be created. On all UP-browser-based WAP devices
1132   * linksets allow easier navigation through WML decks by using the
1133   * "onpick" WML option and therefore are improving the "usability" of
1134   * an application. Instead of painfully navigating through the links
1135   * "sports->football->results->today" the mobile user e.g. can press
1136   * "2431" on the keypad to enter his favorite deck. For all other WAP
1137   * devices normal <a> tags are created. One Horde_Mobile object can
1138   * contain only one linkset object.
1139   *
1140   * Examples:
1141   *
1142   * $myPage = new Horde_Mobile(...);
1143   *
1144   * $myLinkset = new Horde_Mobile_linkset();
1145   * $myLink1 = new Horde_Mobile_link("Phonebook", "/wap/phonebook.wml");
1146   * $myLinkset->add($myLink1);
1147   * $myLink2 = new Horde_Mobile_link("DateBook", "/wap/datebook.wml");
1148   * $myLinkset->add($myLink2);
1149   *
1150   * $myPage->add($myLinkset);
1151   *
1152   * $myPage->render();
1153   *
1154   * @see Horde_Mobile_link
1155   * @see Horde_Mobile
1156   *
1157   * @package Horde_Mobile
1158   */
1159  class Horde_Mobile_linkset extends Horde_Mobile_element {
1160  
1161      var $_elements;
1162  
1163      /**
1164       * Adds a Horde_Mobile_link object to Horde_Mobile_linkset.
1165       *
1166       * @param Horde_Mobile_link $link  The link object to add.
1167       *
1168       * @see Horde_Mobile_link
1169       */
1170      function &add(&$link)
1171      {
1172          if (!is_a($link, 'Horde_Mobile_link')) {
1173              $error = PEAR::raiseError('Links must be Horde_Mobile_link objects.');
1174              return $error;
1175          }
1176  
1177          $this->_elements[] = &$link;
1178          $link->set('accesskey', count($this->_elements));
1179  
1180          return $link;
1181      }
1182  
1183  }
1184  
1185  /**
1186   * This class will cause a horizontal rule to be drawn across the screen.  You
1187   * can use it to separate text paragraphs in Horde_Mobile or Horde_Mobile_form
1188   * objects.
1189   *
1190   * Examples:
1191   *
1192   * $myDefaultRule = new Horde_Mobile_rule();
1193   * $mySpecialRule = new Horde_Mobile_rule('60%', 4);
1194   *
1195   * $myPage->add($myDefaultRule);
1196   *
1197   * $myPage->add($mySpecialRule);
1198   *
1199   * @see Horde_Mobile
1200   * @see Horde_Mobile_form
1201   *
1202   * @package Horde_Mobile
1203   */
1204  class Horde_Mobile_rule extends Horde_Mobile_element {
1205  
1206      var $_width;
1207      var $_size;
1208  
1209      /**
1210       * Constructor
1211       *
1212       * @param integer $width  Percentage of screen width or absolute value in
1213       *                        number of pixels (e.g. "50%", 100).
1214       * @param integer $size   Height of the line to be drawn in pixels.
1215       */
1216      function Horde_Mobile_rule($width = '', $size = '')
1217      {
1218          $this->_width = $width;
1219          $this->_size = $size;
1220      }
1221  
1222  }


Généré le : Sun Feb 25 18:01:28 2007 par Balluche grâce à PHPXref 0.7