Main Page | Directories | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages | Examples

SC_wizard_colorpicker Class Reference

List of all members.

Public Member Functions

 init ()
 Initialises the Class.
 main ()
 Main Method, rendering either colorpicker or frameset depending on ->showPicker.
 printContent ()
 Returnes the sourcecode to the browser.
 frameSet ()
 Returnes a frameset so our JavaScript Reference isn't lost Took some brains to figure this one out ;-) If Peter wouldn't have been I would've gone insane...
 colorMatrix ()
 Creates a color matrix table.
 colorList ()
 Creates a selector box with all HTML color names.
 colorImage ()
 Creates a color image selector.
 getIndex ($im, $x, $y)
 Gets the HTML (Hex) Color Code for the selected pixel of an image This method handles the correct imageResource no matter what format.

Public Attributes

 $P
 $colorValue
 $fieldChangeFunc
 $fieldName
 $formName
 $md5ID
 $showPicker
 $HTMLcolorList = "aqua,black,blue,fuchsia,gray,green,lime,maroon,navy,olive,purple,red,silver,teal,yellow,white"
 $pickerImage = ''
 $imageError = ''
 $doc
 $content

Member Function Documentation

SC_wizard_colorpicker::colorImage  ) 
 

Creates a color image selector.

Returns:
void

Definition at line 383 of file wizard_colorpicker.php.

00383                            {
00384       global $LANG;
00385 
00386          // Handling color-picker image if any:
00387       if (!$this->imageError) {
00388          if ($this->pickerImage) {
00389             if(t3lib_div::_POST('coords_x')) {
00390                $this->colorValue = '#'.$this->getIndex(t3lib_stdgraphic::imageCreateFromGif($this->pickerImage),t3lib_div::_POST('coords_x'),t3lib_div::_POST('coords_y'));
00391             }
00392             $pickerFormImage = '
00393             <p class="c-head">'.$LANG->getLL('colorpicker_fromImage',1).'</p>
00394             <input type="image" src="../'.substr($this->pickerImage,strlen(PATH_site)).'" name="coords" style="cursor:crosshair;" /><br />';
00395          } else {
00396             $pickerFormImage = '';
00397          }
00398       } else {
00399          $pickerFormImage = '
00400          <p class="c-head">'.htmlspecialchars($this->imageError).'</p>';
00401       }
00402 
00403       return $pickerFormImage;
00404    }

SC_wizard_colorpicker::colorList  ) 
 

Creates a selector box with all HTML color names.

Returns:
void

Definition at line 353 of file wizard_colorpicker.php.

00353                         {
00354       global $LANG;
00355 
00356          // Initialize variables:
00357       $colors = explode(',',$this->HTMLcolorList);
00358       $currentValue = strtolower($this->colorValue);
00359       $opt = array();
00360       $opt[] = '<option value=""></option>';
00361 
00362          // Traverse colors, making option tags for selector box.
00363       foreach($colors as $colorName)   {
00364          $opt[] = '<option style="background-color: '.$colorName.';" value="'.htmlspecialchars($colorName).'"'.($currentValue==$colorName ? ' selected="selected"' : '').'>'.htmlspecialchars($colorName).'</option>';
00365       }
00366 
00367          // Compile selector box and return result:
00368       $output = '
00369          <p class="c-head">'.$LANG->getLL('colorpicker_fromList',1).'</p>
00370          <select onchange="document.colorform.colorValue.value = this.options[this.selectedIndex].value; document.colorform.submit(); return false;">
00371             '.implode('
00372             ',$opt).'
00373          </select><br/>';
00374 
00375       return $output;
00376    }

SC_wizard_colorpicker::colorMatrix  ) 
 

Creates a color matrix table.

Returns:
void

Definition at line 304 of file wizard_colorpicker.php.

References $tRows, and table().

00304                            {
00305       global $LANG;
00306 
00307       $steps = 51;
00308 
00309          // Get colors:
00310       $color = array();
00311 
00312       for($rr=0;$rr<256;$rr+=$steps)   {
00313          for($gg=0;$gg<256;$gg+=$steps)   {
00314             for($bb=0;$bb<256;$bb+=$steps)   {
00315                $color[] = '#'.
00316                   substr('0'.dechex($rr),-2).
00317                   substr('0'.dechex($gg),-2).
00318                   substr('0'.dechex($bb),-2);
00319             }
00320          }
00321       }
00322 
00323          // Traverse colors:
00324       $columns = 24;
00325 
00326       $rows = 0;
00327       $tRows = array();
00328       while(isset($color[$columns*$rows]))   {
00329          $tCells = array();
00330          for($i=0;$i<$columns;$i++) {
00331             $tCells[] = '
00332                <td bgcolor="'.$color[$columns*$rows+$i].'" onclick="document.colorform.colorValue.value = \''.$color[$columns*$rows+$i].'\'; document.colorform.submit();" title="'.$color[$columns*$rows+$i].'">&nbsp;&nbsp;</td>';
00333          }
00334          $tRows[] = '
00335             <tr>'.implode('',$tCells).'
00336             </tr>';
00337          $rows++;
00338       }
00339 
00340       $table = '
00341          <p class="c-head">'.$LANG->getLL('colorpicker_fromMatrix',1).'</p>
00342          <table border="0" cellpadding="1" cellspacing="1" style="width:100%; border: 1px solid black; cursor:crosshair;">'.implode('',$tRows).'
00343          </table>';
00344 
00345       return $table;
00346    }

SC_wizard_colorpicker::frameSet  ) 
 

Returnes a frameset so our JavaScript Reference isn't lost Took some brains to figure this one out ;-) If Peter wouldn't have been I would've gone insane...

Returns:
void

Definition at line 245 of file wizard_colorpicker.php.

00245                        {
00246       global $LANG;
00247 
00248          // Set doktype:
00249       $GLOBALS['TBE_TEMPLATE']->docType = 'xhtml_frames';
00250       $GLOBALS['TBE_TEMPLATE']->JScode = $GLOBALS['TBE_TEMPLATE']->wrapScriptTags('
00251             if (!window.opener)  {
00252                alert("ERROR: Sorry, no link to main window... Closing");
00253                close();
00254             }
00255       ');
00256 
00257       $this->content = $GLOBALS['TBE_TEMPLATE']->startPage($LANG->getLL('colorpicker_title'));
00258 
00259          // URL for the inner main frame:
00260       $url = 'wizard_colorpicker.php?showPicker=1'.
00261             '&colorValue='.rawurlencode($this->P['currentValue']).
00262             '&fieldName='.rawurlencode($this->P['itemName']).
00263             '&formName='.rawurlencode($this->P['formName']).
00264             '&exampleImg='.rawurlencode($this->P['exampleImg']).
00265             '&md5ID='.rawurlencode($this->P['md5ID']).
00266             '&fieldChangeFunc='.rawurlencode(serialize($this->P['fieldChangeFunc']));
00267 
00268       $this->content.='
00269          <frameset rows="*,1" framespacing="0" frameborder="0" border="0">
00270             <frame name="content" src="'.htmlspecialchars($url).'" marginwidth="0" marginheight="0" frameborder="0" scrolling="auto" noresize="noresize" />
00271             <frame name="menu" src="dummy.php" marginwidth="0" marginheight="0" frameborder="0" scrolling="no" noresize="noresize" />
00272          </frameset>
00273       ';
00274 
00275       $this->content.='
00276 </html>';
00277    }

SC_wizard_colorpicker::getIndex im,
x,
y
 

Gets the HTML (Hex) Color Code for the selected pixel of an image This method handles the correct imageResource no matter what format.

Parameters:
pointer Valid ImageResource returned by t3lib_stdgraphic::imageCreateFromGif
integer X-Coordinate of the pixel that should be checked
integer Y-Coordinate of the pixel that should be checked
Returns:
string HEX RGB value for color
See also:
colorImage()

Definition at line 416 of file wizard_colorpicker.php.

00416                                 {
00417       $rgb = ImageColorAt($im, $x, $y);
00418       $colorrgb = imagecolorsforindex($im,$rgb);
00419       $index['r'] = dechex($colorrgb['red']);
00420       $index['g'] = dechex($colorrgb['green']);
00421       $index['b'] = dechex($colorrgb['blue']);
00422       foreach ($index as $value) {
00423          if(strlen($value) == 1) {
00424             $hexvalue[] = strtoupper('0'.$value);
00425          } else {
00426             $hexvalue[] = strtoupper($value);
00427          }
00428       }
00429       $hex = implode('',$hexvalue);
00430       return $hex;
00431    }

SC_wizard_colorpicker::init  ) 
 

Initialises the Class.

Returns:
void

Definition at line 103 of file wizard_colorpicker.php.

00103                      {
00104       global $BACK_PATH, $LANG;
00105 
00106          // Setting GET vars (used in frameset script):
00107       $this->P = t3lib_div::_GP('P',1);
00108 
00109          // Setting GET vars (used in colorpicker script):
00110       $this->colorValue = t3lib_div::_GP('colorValue');
00111       $this->fieldChangeFunc = t3lib_div::_GP('fieldChangeFunc');
00112       $this->fieldName = t3lib_div::_GP('fieldName');
00113       $this->formName = t3lib_div::_GP('formName');
00114       $this->md5ID = t3lib_div::_GP('md5ID');
00115       $this->exampleImg = t3lib_div::_GP('exampleImg');
00116 
00117 
00118          // Resolving image (checking existence etc.)
00119       $this->imageError = '';
00120       if ($this->exampleImg)  {
00121          $this->pickerImage = t3lib_div::getFileAbsFileName($this->exampleImg,1,1);
00122          if (!$this->pickerImage || !@is_file($this->pickerImage))   {
00123             $this->imageError = 'ERROR: The image, "'.$this->exampleImg.'", could not be found!';
00124          }
00125       }
00126 
00127          // Setting field-change functions:
00128       $fieldChangeFuncArr = unserialize($this->fieldChangeFunc);
00129       $update = '';
00130       if (is_array($fieldChangeFuncArr))  {
00131          unset($fieldChangeFuncArr['alert']);
00132          foreach($fieldChangeFuncArr as $v)  {
00133             $update.= '
00134             parent.opener.'.$v;
00135          }
00136       }
00137 
00138          // Initialize document object:
00139       $this->doc = t3lib_div::makeInstance('smallDoc');
00140       $this->doc->backPath = $BACK_PATH;
00141       $this->doc->docType = 'xhtml_trans';
00142       $this->doc->JScode = $this->doc->wrapScriptTags('
00143          function checkReference()  {  //
00144             if (parent.opener && parent.opener.document && parent.opener.document.'.$this->formName.' && parent.opener.document.'.$this->formName.'["'.$this->fieldName.'"])  {
00145                return parent.opener.document.'.$this->formName.'["'.$this->fieldName.'"];
00146             } else {
00147                close();
00148             }
00149          }
00150          function changeBGcolor(color) {  // Changes the color in the table sample back in the TCEform.
00151              if (parent.opener.document.layers) {
00152                  parent.opener.document.layers["'.$this->md5ID.'"].bgColor = color;
00153              } else if (parent.opener.document.all)   {
00154                  parent.opener.document.all["'.$this->md5ID.'"].style.background = color;
00155             } else if (parent.opener.document.getElementById && parent.opener.document.getElementById("'.$this->md5ID.'")) {
00156                parent.opener.document.getElementById("'.$this->md5ID.'").bgColor = color;
00157             }
00158          }
00159          function setValue(input)   {  //
00160             var field = checkReference();
00161             if (field)  {
00162                field.value = input;
00163                '.$update.'
00164                changeBGcolor(input);
00165             }
00166          }
00167          function getValue()  {  //
00168             var field = checkReference();
00169             return field.value;
00170          }
00171       ');
00172 
00173          // Start page:
00174       $this->content.=$this->doc->startPage($LANG->getLL('colorpicker_title'));
00175    }

SC_wizard_colorpicker::main  ) 
 

Main Method, rendering either colorpicker or frameset depending on ->showPicker.

Returns:
void

Definition at line 182 of file wizard_colorpicker.php.

References $content, and table().

00182                      {
00183       global $LANG;
00184 
00185       if(!t3lib_div::_GP('showPicker')) { // Show frameset by default:
00186          $this->frameSet();
00187       } else {
00188 
00189             // Putting together the items into a form:
00190          $content = '
00191             <form name="colorform" method="post" action="wizard_colorpicker.php">
00192                '.$this->colorMatrix().'
00193                '.$this->colorList().'
00194                '.$this->colorImage().'
00195 
00196                   <!-- Value box: -->
00197                <p class="c-head">'.$LANG->getLL('colorpicker_colorValue',1).'</p>
00198                <table border="0" cellpadding="0" cellspacing="3">
00199                   <tr>
00200                      <td><input type="text" '.$this->doc->formWidth(7).' maxlength="10" name="colorValue" value="'.htmlspecialchars($this->colorValue).'" /></td>
00201                      <td style="background-color:'.htmlspecialchars($this->colorValue).'; border: 1px solid black;">&nbsp;<span style="color: black;">'.$LANG->getLL('colorpicker_black',1).'</span>&nbsp;<span style="color: white;">'.$LANG->getLL('colorpicker_white',1).'</span>&nbsp;</td>
00202                      <td><input type="submit" name="save_close" value="'.$LANG->getLL('colorpicker_setClose',1).'" /></td>
00203                   </tr>
00204                </table>
00205 
00206                   <!-- Hidden fields with values that has to be kept constant -->
00207                <input type="hidden" name="showPicker" value="1" />
00208                <input type="hidden" name="fieldChangeFunc" value="'.htmlspecialchars($this->fieldChangeFunc).'" />
00209                <input type="hidden" name="fieldName" value="'.htmlspecialchars($this->fieldName).'" />
00210                <input type="hidden" name="formName" value="'.htmlspecialchars($this->formName).'" />
00211                <input type="hidden" name="md5ID" value="'.htmlspecialchars($this->md5ID).'" />
00212                <input type="hidden" name="exampleImg" value="'.htmlspecialchars($this->exampleImg).'" />
00213             </form>';
00214 
00215             // If the save/close button is clicked, then close:
00216          if(t3lib_div::_GP('save_close')) {
00217             $content.=$this->doc->wrapScriptTags('
00218                setValue(\''.$this->colorValue.'\');
00219                parent.close();
00220             ');
00221          }
00222 
00223             // Output:
00224          $this->content.=$this->doc->section($LANG->getLL('colorpicker_title'), $content, 0,1);
00225          $this->content.=$this->doc->endPage();
00226       }
00227    }

SC_wizard_colorpicker::printContent  ) 
 

Returnes the sourcecode to the browser.

Returns:
void

Definition at line 234 of file wizard_colorpicker.php.

00234                            {
00235       echo $this->content;
00236    }


Member Data Documentation

SC_wizard_colorpicker::$colorValue
 

Definition at line 79 of file wizard_colorpicker.php.

SC_wizard_colorpicker::$content
 

Definition at line 93 of file wizard_colorpicker.php.

SC_wizard_colorpicker::$doc
 

Definition at line 92 of file wizard_colorpicker.php.

SC_wizard_colorpicker::$fieldChangeFunc
 

Definition at line 80 of file wizard_colorpicker.php.

SC_wizard_colorpicker::$fieldName
 

Definition at line 81 of file wizard_colorpicker.php.

SC_wizard_colorpicker::$formName
 

Definition at line 82 of file wizard_colorpicker.php.

SC_wizard_colorpicker::$HTMLcolorList = "aqua,black,blue,fuchsia,gray,green,lime,maroon,navy,olive,purple,red,silver,teal,yellow,white"
 

Definition at line 87 of file wizard_colorpicker.php.

SC_wizard_colorpicker::$imageError = ''
 

Definition at line 91 of file wizard_colorpicker.php.

SC_wizard_colorpicker::$md5ID
 

Definition at line 83 of file wizard_colorpicker.php.

SC_wizard_colorpicker::$P
 

Definition at line 78 of file wizard_colorpicker.php.

SC_wizard_colorpicker::$pickerImage = ''
 

Definition at line 90 of file wizard_colorpicker.php.

SC_wizard_colorpicker::$showPicker
 

Definition at line 84 of file wizard_colorpicker.php.


The documentation for this class was generated from the following file:
Generated on Sun Oct 3 01:06:35 2004 for TYPO3core 3.7.0 dev by  doxygen 1.3.8-20040913