⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tag.php

📁 FP2 CRM code+Mysql DB
💻 PHP
📖 第 1 页 / 共 2 页
字号:
            }                                                $ifObj =  $this->element->factory('Method',                    array('if:'.$ifnegative.substr($if,0,strpos($if,'(')), $args_clean),                    $this->element->line);        } else {            $ifObj =  $this->element->factory('If', $ifnegative.$if, $this->element->line);        }                // does it have a closetag? - you must have one - so you will have to hack in <span flexy:if=..><img></span> on tags        // that do not have close tags - it's done this way to try and avoid mistakes.                        if (!$this->element->close) {            //echo "<PRE>";print_R($this->element);                        if ($this->element->getAttribute('/') !== false) {                $this->element->postfix = array($this->element->factory("End",'', $this->element->line));            } else {                            return HTML_Template_Flexy::raiseError(                    "An flexy:if attribute was found in &lt;{$this->element->name} tag without a corresponding &lt;/{$this->element->name}                        tag on Line {$this->element->line} &lt;{$this->element->tag}&gt;",                     null, HTML_TEMPLATE_FLEXY_ERROR_DIE);                }        } else {                    $this->element->close->postfix = array($this->element->factory("End",'', $this->element->line));        }        $this->element->clearAttribute('FLEXY:IF');        return $ifObj->compile($this->compiler);    }         /**    * Reads Tags - and relays to parseTagXXXXXXX    *    *    * @return   string | false = html output or ignore (just output the tag)    * @access   private    */            function _parseTags()     {        global $_HTML_TEMPLATE_FLEXY_TOKEN;        // doesnt really need strtolower etc. as php functions are not case sensitive!                if ($this->element->getAttribute('FLEXY:DYNAMIC')) {            return $this->compiler->appendPhp(                $this->getElementPhp( $this->element->getAttribute('ID') )            );                    }                    if ($this->element->getAttribute('FLEXY:IGNOREONLY') !== false) {            return false;        }        if ($_HTML_TEMPLATE_FLEXY_TOKEN['flexyIgnore']) {            return false;        }        $tag = $this->element->tag;        if (strpos($tag,':') !== false) {            $bits = explode(':',$tag);            $tag = $bits[1];        }                $method = 'parseTag'.$tag;        if (!method_exists($this,$method)) {            return false;        }        // do any of the attributes use flexy data...        foreach ($this->element->attributes as $k=>$v) {            if (is_array($v)) {                return false;            }        }                //echo "call $method" . serialize($this->element->attributes). "\n";                return $this->$method();            // allow the parse methods to return output.            }                        /**    * produces the code for dynamic elements    *    * @return   string | false = html output or ignore (just output the tag)    * @access   public    */            function getElementPhp($id,$mergeWithName=false) {                global $_HTML_TEMPLATE_FLEXY;        static $tmpId=0;        if (!$id) {            return HTML_Template_Flexy::raiseError(                "Error:{$_HTML_TEMPLATE_FLEXY['filename']} on Line {$this->element->line} &lt;{$this->element->tag}&gt;: " .                " Dynamic tags require an ID value",                null, HTML_TEMPLATE_FLEXY_ERROR_DIE);        }                // dont mix and match..        if (($this->element->getAttribute('FLEXY:IF') !== false) ||             ($this->element->getAttribute('FLEXY:FOREACH') !== false) )        {            return HTML_Template_Flexy::raiseError(                "Error:{$_HTML_TEMPLATE_FLEXY['filename']} on Line {$this->element->line} &lt;{$this->element->tag}&gt;: " .                " You can not mix flexy:if= or flexy:foreach= with dynamic form elements  " .                 " (turn off tag to element code with flexyIgnore=0, use flexy:ignore=&quot;yes&quot; in the tag" .                " or put the conditional outside in a span tag",                null, HTML_TEMPLATE_FLEXY_ERROR_DIE);        }                if ((strtolower($this->element->getAttribute('type')) == 'checkbox' ) &&                 (substr($this->element->getAttribute('name'),-2) == '[]')) {            if ($this->element->getAttribute('id') === false) {                $id = 'tmpId'. (++$tmpId);                $this->element->attributes['id'] = $id;                $this->element->ucAttributes['ID'] = $id;            }             $mergeWithName =  true;        }                                                if (isset($_HTML_TEMPLATE_FLEXY['elements'][$id])) {           // echo "<PRE>";print_r($this);print_r($_HTML_TEMPLATE_FLEXY['elements']);echo "</PRE>";            return HTML_Template_Flexy::raiseError(                "Error:{$_HTML_TEMPLATE_FLEXY['filename']} on Line {$this->element->line} in Tag &lt;{$this->element->tag}&gt;:<BR> " .                  "The Dynamic tag Name '$id' has already been used previously by  tag &lt;{$_HTML_TEMPLATE_FLEXY['elements'][$id]->tag}&gt;",                 null,HTML_TEMPLATE_FLEXY_ERROR_DIE);        }                // this is for a case where you can use a sprintf as the name, and overlay it with a variable element..        $_HTML_TEMPLATE_FLEXY['elements'][$id] = $this->toElement($this->element);                if ($var = $this->element->getAttribute('FLEXY:NAMEUSES')) {                        $var = 'sprintf(\''.$id .'\','.$this->element->toVar($var) .')';            return                  'if (!isset($this->elements['.$var.'])) $this->elements['.$var.']= $this->elements[\''.$id.'\'];                $this->elements['.$var.'] = $this->mergeElement($this->elements[\''.$id.'\'],$this->elements['.$var.']);                $this->elements['.$var.']->attributes[\'name\'] = '.$var. ';                echo $this->elements['.$var.']->toHtml();';         } elseif ($mergeWithName) {            $name = $this->element->getAttribute('NAME');            return                  '$element = $this->elements[\''.$id.'\'];                $element = $this->mergeElement($element,$this->elements[\''.$name.'\']);                echo  $element->toHtml();';                         } else {           return 'echo $this->elements[\''.$id.'\']->toHtml();';
        }    }        /**    * Reads an Script tag - check if PHP is allowed.    *    * @return   false|PEAR_Error     * @access   public    */    function parseTagScript() {                        $lang = $this->element->getAttribute('LANGUAGE');        if (!$lang) {            return false;        }        $lang = strtoupper($lang);                if ($GLOBALS['_HTML_TEMPLATE_FLEXY']['currentOptions']['allowPHP']) {            return false;        }                if ($lang == "PHP") {                        return HTML_Template_Flexy::raiseError('PHP code found in script',                HTML_TEMPLATE_FLEXY_ERROR_SYNTAX,HTML_TEMPLATE_FLEXY_ERROR_RETURN            );        }        return false;        }    /**    * Reads an Input tag - build a element object for it    *    *    * @return   string | false = html output or ignore (just output the tag)    * @access   public    */          function parseTagInput()     {        global $_HTML_TEMPLATE_FLEXY;                if (in_array(strtoupper($this->element->getAttribute('TYPE')), array('SUBMIT','BUTTON','INPUT','')))  {            $this->compiler->addStringToGettext($this->element->getAttribute('VALUE'));        }        // form elements : format:        //value - fill out as PHP CODE                // as a general rule, this uses name, rather than ID except on         // radio        $mergeWithName = false;
        $id = $this->element->getAttribute('NAME');        // checkboxes need more work.. - at the momemnt assume one with the same value...        if (in_array(strtoupper($this->element->getAttribute('TYPE')), array('RADIO'))) {                        if (!isset($_HTML_TEMPLATE_FLEXY['elements'][$id])) {                // register it..  - so we dont overwrite it...                $_HTML_TEMPLATE_FLEXY['elements'][$id] = false;            } else if ($_HTML_TEMPLATE_FLEXY['elements'][$id] != false) {                                           return HTML_Template_Flexy::raiseError(                    "Error:{$_HTML_TEMPLATE_FLEXY['filename']} on Line {$this->element->line} ".                    "in Tag &lt;{$this->element->tag}&gt;:<BR>".                    "The Dynamic tag Name '$id' has already been used previously by ".                    "tag &lt;{$_HTML_TEMPLATE_FLEXY['elements'][$id]->tag}&gt;",                     null, HTML_TEMPLATE_FLEXY_ERROR_DIE                );            }                       $id = $this->element->getAttribute('ID');            if (!$id) {                return HTML_Template_Flexy::raiseError("Error in {$_HTML_TEMPLATE_FLEXY['filename']} on Line {$this->element->line} &lt;{$this->element->tag}&gt:                  Radio Input's require an ID tag..",                 null, HTML_TEMPLATE_FLEXY_ERROR_DIE);            }            $mergeWithName = true;                    }        if (!$id) {            return false;        }        return $this->compiler->appendPhp($this->getElementPhp( $id,$mergeWithName));    }        /**    * Deal with a TextArea tag - build a element object for it    *    * @return   string | false = html output or ignore (just output the tag)    * @access   public    */      function parseTagTextArea()     {                 return $this->compiler->appendPhp(            $this->getElementPhp( $this->element->getAttribute('NAME')));                                }    /**    * Deal with Selects - build a element object for it (unless flexyignore is set)    *    *    * @return   string | false = html output or ignore (just output the tag)    * @access   public    */      function parseTagSelect()     {        return $this->compiler->appendPhp(            $this->getElementPhp( $this->element->getAttribute('NAME')));    }                       /**    * Reads an Form tag - and set up the element object header etc.    *        * @return   string | false = html output or ignore (just output the tag)    * @access   public    */      function parseTagForm()     {        global $_HTML_TEMPLATE_FLEXY;        $copy = clone($this->element);        $copy->children = array();        $id = $this->element->getAttribute('NAME');        if (!$id) {            $id = 'form';        }                // this adds the element to the elements array.        $old = clone($this->element);        $this->element = $copy;        $this->getElementPhp($id);        $this->element= $old;                        return             $this->compiler->appendPhp('echo $this->elements[\''.$id.'\']->toHtmlnoClose();') .            $this->element->compileChildren($this->compiler) .            $this->compiler->appendHtml( "</{$copy->oTag}>");        }                                         /**    * reWriteURL - can using the config option 'url_rewrite'    *  format "from:to,from:to"    * only handle left rewrite.     * so     *  "/images:/myroot/images"    * would change    *   /images/xyz.gif to /myroot/images/xyz.gif    *   /images/stylesheet/imagestyles.css to  /myroot/images/stylesheet/imagestyles.css    *   note /imagestyles did not get altered.    * will only work on strings (forget about doing /images/{someimage}    *    *    * @param    string attribute to rewrite    * @return   none    * @access   public    */    function reWriteURL($which)     {        global  $_HTML_TEMPLATE_FLEXY;                        if (!is_string($original = $this->element->getAttribute($which))) {            return;        }                if ($original == '') {            return;        }                if (empty($_HTML_TEMPLATE_FLEXY['currentOptions']['url_rewrite'])) {            return;        }                $bits = explode(",",$_HTML_TEMPLATE_FLEXY['currentOptions']['url_rewrite']);        $new = $original;                foreach ($bits as $bit) {            if (!strlen(trim($bit))) {                continue;            }            $parts = explode (':', $bit);            if (!isset($parts[1])) {                return HTML_Template_Flexy::raiseError('HTML_Template_Flexy: url_rewrite syntax incorrect'.                     print_r(array($bits,$bits),true),null,HTML_TEMPLATE_FLEXY_ERROR_DIE);            }            $new = preg_replace('#^'.$parts[0].'#',$parts[1], $new);        }                        if ($original == $new) {            return;        }        $this->element->ucAttributes[$which] = '"'. $new . '"';    } 
        /**    * Convert flexy tokens to HTML_Template_Flexy_Elements.    *    * @param    object token to convert into a element.    * @return   object HTML_Template_Flexy_Element    * @access   public    */    function toElement($element) {        require_once 'HTML/Template/Flexy/Element.php';        $ret = new HTML_Template_Flexy_Element;                if (strtolower(get_class($element)) != 'html_template_flexy_token_tag') {            $this->compiler->addStringToGettext($element->value);            return $element->value;        }                        $ret->tag = strtolower($element->tag);                $ats = $element->getAttributes();                if (isset($element->attributes['flexy:xhtml'])) {            $ats['flexy:xhtml'] = true;        }                foreach(array_keys($ats)  as $a) {             $ret->attributes[$a] = $this->unHtmlEntities($ats[$a]);        }        //print_r($ats);        if (!$element->children) {            return $ret;        }                // children - normally to deal with <element>                //print_r($this->children);        foreach(array_keys($element->children) as $i) {            // not quite sure why this happens - but it does.            if (!is_object($element->children[$i])) {                continue;            }            $ret->children[] = $this->toElement($element->children[$i]);        }        return $ret;    }
              /**    * do the reverse of htmlspecialchars on an attribute..    *    * copied from get-html-translation-table man page     *     * @param   mixed       from attribute values    *    * @return   string          return     * @access   public    * @see      see also methods.....    */      function unHtmlEntities ($in)      {        if (!is_string($in)) {            return $in;        }        $trans_tbl = get_html_translation_table (HTML_ENTITIES);        $trans_tbl = array_flip ($trans_tbl);        $ret = strtr ($in, $trans_tbl);        return preg_replace('/&#(\d+);/me', "chr('\\1')",$ret);    }} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -