Source for file AEditableText.php

Documentation is available at AEditableText.php

  1. <?php
  2. /**
  3.  * AEditableText.php
  4.  * The file for AEditableText class.
  5.  * 
  6.  * @package Alia
  7.  * @subpackage Widgets
  8.  * @author Jordan CM Wambaugh <jordan@wambaugh.org>
  9.  */
  10.  
  11.  
  12. /**
  13.  * AEditableText class - a widget representing a single editable text element
  14.  * @package Alia
  15.  * @subpackage Widgets
  16.  * @author Jordan CM Wambaugh <jordan@wambaugh.org>
  17.  *
  18.  */
  19. class AEditableText extends AWidget{
  20.     
  21.     private$__text;
  22.     private $editLayout;
  23.     private $editWidget;
  24.     private $textLayout;
  25.     private $textWidget;
  26.     private $mode;
  27.     
  28.     function __construct($text){
  29.         parent::__construct();
  30.         
  31.         $this->defineSignal('leaveEdit');
  32.         $this->defineSignal('enterEdit');
  33.         
  34.         //setup the textLayout
  35.         $this->textLayout = new ASingleWidgetLayout($this);
  36.         $this->textWidget = new AParagraph($text);
  37.         $this->textWidget -> defineSignal('clicked');
  38.         $this->textWidget->addAttribute('onclick')->setAttribute('onclick','editableText.toggle(this.parentNode);');
  39.         $this->textLayout->addWidget($this->textWidget);
  40.         
  41.         
  42.         $this->mode = 'text';
  43.         $this->setLayout($this->textLayout);
  44.         $this->__text = $text;
  45.         
  46.         $this->addJavascript();
  47.         
  48.     }
  49.  
  50.     
  51.     
  52.     function setText($text){
  53.         $this->__text = $text;
  54.     }
  55.  
  56.     function getText(){
  57.         return $this->__text;
  58.     }
  59.  
  60.     
  61.     private function addJavascript(){
  62.         $enterEditEmit AJScript::emit('enterEdit',$this,'element.firstChild.innerHTML');
  63.         $leaveEditEmit AJScript::emit('leaveEdit',$this,'element.firstChild.value');
  64.         
  65.         $script = <<<end
  66. var editableText = new function(){
  67.     this.toggle= function(element){
  68.         
  69.         switch(element.firstChild.tagName){
  70.             case 'P':
  71.                 $enterEditEmit
  72.                 this.editable(element);
  73.                 break;
  74.             case 'INPUT':
  75.                 $leaveEditEmit 
  76.                 this.text(element);
  77.                 break;
  78.         }
  79.     }
  80.     
  81.     this.editable =  function(element){
  82.         element.innerHTML = '<input type = "text" value = "'+element.firstChild.innerHTML+'" onblur="editableText.toggle(this.parentNode);"/>';
  83.         element.firstChild.focus();
  84.     }
  85.     
  86.     this.text= function(element){
  87.         element.innerHTML = '<p onclick="editableText.toggle(this.parentNode);">'+element.firstChild.value+'</p>';
  88.         
  89.     }
  90. end;
  91.         AJScriptBuffer::instance()->addJScript($script);
  92.     }
  93.  
  94. }

Documentation generated on Fri, 11 Jul 2008 13:28:39 -0400 by phpDocumentor 1.4.2