Changeset 843

Show
Ignore:
Timestamp:
03/26/08 00:30:24 (8 months ago)
Author:
laurentj
Message:

ticket #215: finished to implement <htmleditor> in jforms

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/lib/jelix/core/defaultconfig.ini.php

    r841 r843  
    221221 
    222222[htmleditors] 
    223 wymeditor        = jelix/wymeditor/jquery.wymeditor.js 
     223wymeditor[]        = jelix/jquery/jquery.js 
     224wymeditor[]        = jelix/wymeditor/jquery.wymeditor.js 
    224225wymeditor.config.simple = jelix/wymeditor/config/simple.js 
    225226wymeditor.skin.default  = jelix/wymeditor/skins/default/screen.css 
  • trunk/lib/jelix/core/defaultconfig.ini.php

    r841 r843  
    221221 
    222222[htmleditors] 
    223 wymeditor        = jelix/wymeditor/jquery.wymeditor.js 
     223wymeditor[]        = jelix/jquery/jquery.js 
     224wymeditor[]        = jelix/wymeditor/jquery.wymeditor.js 
    224225wymeditor.config.simple = jelix/wymeditor/config/simple.js 
    225226wymeditor.skin.default  = jelix/wymeditor/skins/default/screen.css 
  • trunk/lib/jelix/core/defaultconfig.ini.php

    r841 r843  
    221221 
    222222[htmleditors] 
    223 wymeditor        = jelix/wymeditor/jquery.wymeditor.js 
     223wymeditor[]        = jelix/jquery/jquery.js 
     224wymeditor[]        = jelix/wymeditor/jquery.wymeditor.js 
    224225wymeditor.config.simple = jelix/wymeditor/config/simple.js 
    225226wymeditor.skin.default  = jelix/wymeditor/skins/default/screen.css 
  • trunk/lib/jelix/plugins/tpl/html/block.form.php

    r841 r843  
    7575    foreach($t->_vars as $k=>$v){ 
    7676        if($v instanceof jFormsBase && count($edlist = $v->getHtmlEditors())) { 
    77             $gJCoord->response->addJSLink($www.\'jquery/jquery.js\'); 
    7877            foreach($edlist as $ed) { 
    79                 if(isset($gJConfig->htmleditors[$ed->engine])) 
    80                     $gJCoord->response->addJSLink($bp.$gJConfig->htmleditors[$ed->engine]); 
     78                if(isset($gJConfig->htmleditors[$ed->engine])){ 
     79                    if(is_array($gJConfig->htmleditors[$ed->engine])){ 
     80                        foreach($gJConfig->htmleditors[$ed->engine] as $url) { 
     81                            $gJCoord->response->addJSLink($bp.$url); 
     82                        } 
     83                    }else 
     84                        $gJCoord->response->addJSLink($bp.$gJConfig->htmleditors[$ed->engine]); 
     85                } 
    8186                if(isset($gJConfig->htmleditors[$ed->engine.\'.config.\'.$ed->config])) 
    8287                    $gJCoord->response->addJSLink($bp.$gJConfig->htmleditors[$ed->engine.\'.config.\'.$ed->config]); 
  • trunk/lib/jelix/plugins/tpl/html/block.form.php

    r841 r843  
    7575    foreach($t->_vars as $k=>$v){ 
    7676        if($v instanceof jFormsBase && count($edlist = $v->getHtmlEditors())) { 
    77             $gJCoord->response->addJSLink($www.\'jquery/jquery.js\'); 
    7877            foreach($edlist as $ed) { 
    79                 if(isset($gJConfig->htmleditors[$ed->engine])) 
    80                     $gJCoord->response->addJSLink($bp.$gJConfig->htmleditors[$ed->engine]); 
     78                if(isset($gJConfig->htmleditors[$ed->engine])){ 
     79                    if(is_array($gJConfig->htmleditors[$ed->engine])){ 
     80                        foreach($gJConfig->htmleditors[$ed->engine] as $url) { 
     81                            $gJCoord->response->addJSLink($bp.$url); 
     82                        } 
     83                    }else 
     84                        $gJCoord->response->addJSLink($bp.$gJConfig->htmleditors[$ed->engine]); 
     85                } 
    8186                if(isset($gJConfig->htmleditors[$ed->engine.\'.config.\'.$ed->config])) 
    8287                    $gJCoord->response->addJSLink($bp.$gJConfig->htmleditors[$ed->engine.\'.config.\'.$ed->config]); 
  • trunk/lib/jelix/plugins/tpl/html/block.form.php

    r841 r843  
    7575    foreach($t->_vars as $k=>$v){ 
    7676        if($v instanceof jFormsBase && count($edlist = $v->getHtmlEditors())) { 
    77             $gJCoord->response->addJSLink($www.\'jquery/jquery.js\'); 
    7877            foreach($edlist as $ed) { 
    79                 if(isset($gJConfig->htmleditors[$ed->engine])) 
    80                     $gJCoord->response->addJSLink($bp.$gJConfig->htmleditors[$ed->engine]); 
     78                if(isset($gJConfig->htmleditors[$ed->engine])){ 
     79                    if(is_array($gJConfig->htmleditors[$ed->engine])){ 
     80                        foreach($gJConfig->htmleditors[$ed->engine] as $url) { 
     81                            $gJCoord->response->addJSLink($bp.$url); 
     82                        } 
     83                    }else 
     84                        $gJCoord->response->addJSLink($bp.$gJConfig->htmleditors[$ed->engine]); 
     85                } 
    8186                if(isset($gJConfig->htmleditors[$ed->engine.\'.config.\'.$ed->config])) 
    8287                    $gJCoord->response->addJSLink($bp.$gJConfig->htmleditors[$ed->engine.\'.config.\'.$ed->config]); 
  • trunk/lib/jelix/utils/jFilter.class.php

    r836 r843  
    239239            $item->parentNode->removeChild($item); 
    240240        } 
    241  
    242241        self::cleanAttr($doc->getElementsByTagName('body')->item(0)); 
    243242        $doc->formatOutput = true; 
     
    256255                        $child->removeAttributeNode($attr); 
    257256                    else if(strtolower($attr->localName) == 'href') { 
    258                         if(strpos(strtolower(trim($attr->nodeValue)),"javascript:") !==false
     257                        if(preg_match("/^(javascript|vbscript)\:.*/",trim($attr->nodeValue))
    259258                            $child->removeAttributeNode($attr); 
    260259                    } 
  • trunk/lib/jelix/utils/jFilter.class.php

    r836 r843  
    239239            $item->parentNode->removeChild($item); 
    240240        } 
    241  
    242241        self::cleanAttr($doc->getElementsByTagName('body')->item(0)); 
    243242        $doc->formatOutput = true; 
     
    256255                        $child->removeAttributeNode($attr); 
    257256                    else if(strtolower($attr->localName) == 'href') { 
    258                         if(strpos(strtolower(trim($attr->nodeValue)),"javascript:") !==false
     257                        if(preg_match("/^(javascript|vbscript)\:.*/",trim($attr->nodeValue))
    259258                            $child->removeAttributeNode($attr); 
    260259                    } 
  • trunk/lib/jelix/utils/jFilter.class.php

    r836 r843  
    239239            $item->parentNode->removeChild($item); 
    240240        } 
    241  
    242241        self::cleanAttr($doc->getElementsByTagName('body')->item(0)); 
    243242        $doc->formatOutput = true; 
     
    256255                        $child->removeAttributeNode($attr); 
    257256                    else if(strtolower($attr->localName) == 'href') { 
    258                         if(strpos(strtolower(trim($attr->nodeValue)),"javascript:") !==false
     257                        if(preg_match("/^(javascript|vbscript)\:.*/",trim($attr->nodeValue))
    259258                            $child->removeAttributeNode($attr); 
    260259                    } 
  • trunk/lib/jelix/utils/jIniFile.class.php

    r839 r843  
    4545                $result.='['.$k."]\n"; 
    4646                foreach($v as $k2 => $v2){ 
    47                     $result .= $k2.'='.self::_iniValue($v2)."\n"
     47                    $result .= self::_iniValue($k2,$v2)
    4848                } 
    4949            } else { 
    50                 // on met les valeurs simples en debut de fichier 
    51                 $result = $k.'='.self::_iniValue($v)."\n".$result; 
     50                // we put simple values at the beginning of the file. 
     51                $result = self::_iniValue($k,$v).$result; 
    5252            } 
    5353        } 
     
    7373     * @return string the formated value 
    7474     */ 
    75     static private function _iniValue($value){ 
    76         if ($value == '' || is_numeric($value) || preg_match("/^[\w]*$/", $value)) { 
    77             return $value; 
     75    static private function _iniValue($key, $value){ 
     76        if(is_array($value)) { 
     77            $res = ''; 
     78            foreach($value as $v) 
     79                $res.=self::_iniValue($key.'[]', $v); 
     80            return $res; 
     81        }else if ($value == '' || is_numeric($value) || preg_match("/^[\w]*$/", $value)) { 
     82            return $key.'='.$value."\n"; 
    7883        } else { 
    79             return '"'.$value.'"'
     84            return $key.'="'.$value."\"\n"
    8085        } 
    8186    } 
  • trunk/lib/jelix/utils/jIniFile.class.php

    r839 r843  
    4545                $result.='['.$k."]\n"; 
    4646                foreach($v as $k2 => $v2){ 
    47                     $result .= $k2.'='.self::_iniValue($v2)."\n"
     47                    $result .= self::_iniValue($k2,$v2)
    4848                } 
    4949            } else { 
    50                 // on met les valeurs simples en debut de fichier 
    51                 $result = $k.'='.self::_iniValue($v)."\n".$result; 
     50                // we put simple values at the beginning of the file. 
     51                $result = self::_iniValue($k,$v).$result; 
    5252            } 
    5353        } 
     
    7373     * @return string the formated value 
    7474     */ 
    75     static private function _iniValue($value){ 
    76         if ($value == '' || is_numeric($value) || preg_match("/^[\w]*$/", $value)) { 
    77             return $value; 
     75    static private function _iniValue($key, $value){ 
     76        if(is_array($value)) { 
     77            $res = ''; 
     78            foreach($value as $v) 
     79                $res.=self::_iniValue($key.'[]', $v); 
     80            return $res; 
     81        }else if ($value == '' || is_numeric($value) || preg_match("/^[\w]*$/", $value)) { 
     82            return $key.'='.$value."\n"; 
    7883        } else { 
    79             return '"'.$value.'"'
     84            return $key.'="'.$value."\"\n"
    8085        } 
    8186    } 
  • trunk/lib/jelix/utils/jIniFile.class.php

    r839 r843  
    4545                $result.='['.$k."]\n"; 
    4646                foreach($v as $k2 => $v2){ 
    47                     $result .= $k2.'='.self::_iniValue($v2)."\n"
     47                    $result .= self::_iniValue($k2,$v2)
    4848                } 
    4949            } else { 
    50                 // on met les valeurs simples en debut de fichier 
    51                 $result = $k.'='.self::_iniValue($v)."\n".$result; 
     50                // we put simple values at the beginning of the file. 
     51                $result = self::_iniValue($k,$v).$result; 
    5252            } 
    5353        } 
     
    7373     * @return string the formated value 
    7474     */ 
    75     static private function _iniValue($value){ 
    76         if ($value == '' || is_numeric($value) || preg_match("/^[\w]*$/", $value)) { 
    77             return $value; 
     75    static private function _iniValue($key, $value){ 
     76        if(is_array($value)) { 
     77            $res = ''; 
     78            foreach($value as $v) 
     79                $res.=self::_iniValue($key.'[]', $v); 
     80            return $res; 
     81        }else if ($value == '' || is_numeric($value) || preg_match("/^[\w]*$/", $value)) { 
     82            return $key.'='.$value."\n"; 
    7883        } else { 
    79             return '"'.$value.'"'
     84            return $key.'="'.$value."\"\n"
    8085        } 
    8186    } 
  • trunk/testapp/modules/jelix_tests/tests/jforms.htmlbuilder.html_cli.php

    r841 r843  
    741741 
    742742        ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean(); 
    743         $this->assertEqualOrDiff('<textarea name="contenu" id="'.$this->formname.'_contenu" rows="5" cols="40">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>', $out); 
     743        $this->assertEqualOrDiff('<script type="text/javascript"> 
     744            //<![CDATA[ 
     745            jelix_wymeditor_simple("'.$this->formname.'_contenu"); 
     746            //]]> 
     747            </script><textarea name="contenu" id="'.$this->formname.'_contenu" rows="5" cols="40">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>', $out); 
    744748 
    745749        $ctrl->readonly=true; 
    746750        ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean(); 
    747         $this->assertEqualOrDiff('<textarea name="contenu" id="'.$this->formname.'_contenu" readonly="readonly" rows="5" cols="40">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>', $out); 
     751        $this->assertEqualOrDiff('<script type="text/javascript"> 
     752            //<![CDATA[ 
     753            jelix_wymeditor_simple("'.$this->formname.'_contenu"); 
     754            //]]> 
     755            </script><textarea name="contenu" id="'.$this->formname.'_contenu" readonly="readonly" rows="5" cols="40">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>', $out); 
    748756 
    749757        $ctrl->hint='ceci est un tooltip'; 
     
    752760 
    753761        ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean(); 
    754         $this->assertEqualOrDiff('<textarea name="contenu" id="'.$this->formname.'_contenu" readonly="readonly" title="ceci est un tooltip" rows="5" cols="40">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>', $out); 
     762        $this->assertEqualOrDiff('<script type="text/javascript"> 
     763            //<![CDATA[ 
     764            jelix_wymeditor_simple("'.$this->formname.'_contenu"); 
     765            //]]> 
     766            </script><textarea name="contenu" id="'.$this->formname.'_contenu" readonly="readonly" title="ceci est un tooltip" rows="5" cols="40">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>', $out); 
    755767 
    756768        $ctrl->rows=20; 
    757769        ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean(); 
    758         $this->assertEqualOrDiff('<textarea name="contenu" id="'.$this->formname.'_contenu" readonly="readonly" title="ceci est un tooltip" rows="20" cols="40">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>', $out); 
     770        $this->assertEqualOrDiff('<script type="text/javascript"> 
     771            //<![CDATA[ 
     772            jelix_wymeditor_simple("'.$this->formname.'_contenu"); 
     773            //]]> 
     774            </script><textarea name="contenu" id="'.$this->formname.'_contenu" readonly="readonly" title="ceci est un tooltip" rows="20" cols="40">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>', $out); 
    759775 
    760776        $ctrl->cols=60; 
    761777        ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean(); 
    762         $this->assertEqualOrDiff('<textarea name="contenu" id="'.$this->formname.'_contenu" readonly="readonly" title="ceci est un tooltip" rows="20" cols="60">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>', $out); 
     778        $this->assertEqualOrDiff('<script type="text/javascript"> 
     779            //<![CDATA[ 
     780            jelix_wymeditor_simple("'.$this->formname.'_contenu"); 
     781            //]]> 
     782            </script><textarea name="contenu" id="'.$this->formname.'_contenu" readonly="readonly" title="ceci est un tooltip" rows="20" cols="60">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>', $out); 
    763783 
    764784    } 
  • trunk/testapp/modules/jelix_tests/tests/jforms.htmlbuilder.html_cli.php

    r841 r843  
    741741 
    742742        ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean(); 
    743         $this->assertEqualOrDiff('<textarea name="contenu" id="'.$this->formname.'_contenu" rows="5" cols="40">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>', $out); 
     743        $this->assertEqualOrDiff('<script type="text/javascript"> 
     744            //<![CDATA[ 
     745            jelix_wymeditor_simple("'.$this->formname.'_contenu"); 
     746            //]]> 
     747            </script><textarea name="contenu" id="'.$this->formname.'_contenu" rows="5" cols="40">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>', $out); 
    744748 
    745749        $ctrl->readonly=true; 
    746750        ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean(); 
    747         $this->assertEqualOrDiff('<textarea name="contenu" id="'.$this->formname.'_contenu" readonly="readonly" rows="5" cols="40">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>', $out); 
     751        $this->assertEqualOrDiff('<script type="text/javascript"> 
     752            //<![CDATA[ 
     753            jelix_wymeditor_simple("'.$this->formname.'_contenu"); 
     754            //]]> 
     755            </script><textarea name="contenu" id="'.$this->formname.'_contenu" readonly="readonly" rows="5" cols="40">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>', $out); 
    748756 
    749757        $ctrl->hint='ceci est un tooltip'; 
     
    752760 
    753761        ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean(); 
    754         $this->assertEqualOrDiff('<textarea name="contenu" id="'.$this->formname.'_contenu" readonly="readonly" title="ceci est un tooltip" rows="5" cols="40">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>', $out); 
     762        $this->assertEqualOrDiff('<script type="text/javascript"> 
     763            //<![CDATA[ 
     764            jelix_wymeditor_simple("'.$this->formname.'_contenu"); 
     765            //]]> 
     766            </script><textarea name="contenu" id="'.$this->formname.'_contenu" readonly="readonly" title="ceci est un tooltip" rows="5" cols="40">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>', $out); 
    755767 
    756768        $ctrl->rows=20; 
    757769        ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean(); 
    758         $this->assertEqualOrDiff('<textarea name="contenu" id="'.$this->formname.'_contenu" readonly="readonly" title="ceci est un tooltip" rows="20" cols="40">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>', $out); 
     770        $this->assertEqualOrDiff('<script type="text/javascript"> 
     771            //<![CDATA[ 
     772            jelix_wymeditor_simple("'.$this->formname.'_contenu"); 
     773            //]]> 
     774            </script><textarea name="contenu" id="'.$this->formname.'_contenu" readonly="readonly" title="ceci est un tooltip" rows="20" cols="40">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>', $out); 
    759775 
    760776        $ctrl->cols=60; 
    761777        ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean(); 
    762         $this->assertEqualOrDiff('<textarea name="contenu" id="'.$this->formname.'_contenu" readonly="readonly" title="ceci est un tooltip" rows="20" cols="60">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>', $out); 
     778        $this->assertEqualOrDiff('<script type="text/javascript"> 
     779            //<![CDATA[ 
     780            jelix_wymeditor_simple("'.$this->formname.'_contenu"); 
     781            //]]> 
     782            </script><textarea name="contenu" id="'.$this->formname.'_contenu" readonly="readonly" title="ceci est un tooltip" rows="20" cols="60">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>', $out); 
    763783 
    764784    } 
  • trunk/testapp/modules/jelix_tests/tests/jforms.htmlbuilder.html_cli.php

    r841 r843  
    741741 
    742742        ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean(); 
    743         $this->assertEqualOrDiff('<textarea name="contenu" id="'.$this->formname.'_contenu" rows="5" cols="40">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>', $out); 
     743        $this->assertEqualOrDiff('<script type="text/javascript"> 
     744            //<![CDATA[ 
     745            jelix_wymeditor_simple("'.$this->formname.'_contenu"); 
     746            //]]> 
     747            </script><textarea name="contenu" id="'.$this->formname.'_contenu" rows="5" cols="40">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>', $out); 
    744748 
    745749        $ctrl->readonly=true; 
    746750        ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean(); 
    747         $this->assertEqualOrDiff('<textarea name="contenu" id="'.$this->formname.'_contenu" readonly="readonly" rows="5" cols="40">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>', $out); 
     751        $this->assertEqualOrDiff('<script type="text/javascript"> 
     752            //<![CDATA[ 
     753            jelix_wymeditor_simple("'.$this->formname.'_contenu"); 
     754            //]]> 
     755            </script><textarea name="contenu" id="'.$this->formname.'_contenu" readonly="readonly" rows="5" cols="40">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>', $out); 
    748756 
    749757        $ctrl->hint='ceci est un tooltip'; 
     
    752760 
    753761        ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean(); 
    754         $this->assertEqualOrDiff('<textarea name="contenu" id="'.$this->formname.'_contenu" readonly="readonly" title="ceci est un tooltip" rows="5" cols="40">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>', $out); 
     762        $this->assertEqualOrDiff('<script type="text/javascript"> 
     763            //<![CDATA[ 
     764            jelix_wymeditor_simple("'.$this->formname.'_contenu"); 
     765            //]]> 
     766            </script><textarea name="contenu" id="'.$this->formname.'_contenu" readonly="readonly" title="ceci est un tooltip" rows="5" cols="40">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>', $out); 
    755767 
    756768        $ctrl->rows=20; 
    757769        ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean(); 
    758         $this->assertEqualOrDiff('<textarea name="contenu" id="'.$this->formname.'_contenu" readonly="readonly" title="ceci est un tooltip" rows="20" cols="40">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>', $out); 
     770        $this->assertEqualOrDiff('<script type="text/javascript"> 
     771            //<![CDATA[ 
     772            jelix_wymeditor_simple("'.$this->formname.'_contenu"); 
     773            //]]> 
     774            </script><textarea name="contenu" id="'.$this->formname.'_contenu" readonly="readonly" title="ceci est un tooltip" rows="20" cols="40">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>', $out); 
    759775 
    760776        $ctrl->cols=60; 
    761777        ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean(); 
    762         $this->assertEqualOrDiff('<textarea name="contenu" id="'.$this->formname.'_contenu" readonly="readonly" title="ceci est un tooltip" rows="20" cols="60">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>', $out); 
     778        $this->assertEqualOrDiff('<script type="text/javascript"> 
     779            //<![CDATA[ 
     780            jelix_wymeditor_simple("'.$this->formname.'_contenu"); 
     781            //]]> 
     782            </script><textarea name="contenu" id="'.$this->formname.'_contenu" readonly="readonly" title="ceci est un tooltip" rows="20" cols="60">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>', $out); 
    763783 
    764784    } 
Download in other formats: Unified Diff Zip Archive