Exemple #1
0
 private function _getCommonHtml()
 {
     $out = "";
     if (!self::$_isBuildedCommonJs) {
         self::$_isBuildedCommonJs = true;
         $out .= '<script type="text/javascript" src="' . $this->_selector_lib_path . 'selectordd.js"></script>';
     }
     return $out;
 }
Exemple #2
0
    /**
     * buildGridToOutArray副本
     *
     * @param unknown_type $grid
     * @param unknown_type $params
     * @param unknown_type $searchCols
     * @return unknown
     */
    public static function buildGridToOutArrayBack($grid, $params = "", $searchCols = 4)
    {
        /**
         * 这里判断数据是否符合规则
         * 应该根据 Shema 判断
         */
        if (!is_array($grid)) {
            $e = new Watt_Exception(Watt_I18n::trans("ERR_INVALID_DATATYPE"));
            throw $e;
        }
        if (is_array($params)) {
            $gridId = @$params['id'];
            $formAttribs = @$params['formAttribs'];
        } else {
            $formAttribs = $params;
            $gridId = null;
        }
        //随机生成一个 search form 的id
        //$specSearchFormId = mt_rand( 10000, 99999 );
        /**
         * 用来记录orderby了的字段和orderbyorder
         */
        $orderByCols = array();
        if (isset($grid[Watt_Util_Grid::GRID_SCHEMA_COLS]) && count($grid[Watt_Util_Grid::GRID_SCHEMA_COLS]) > 0) {
            $isDefCols = true;
            $cols = $grid[Watt_Util_Grid::GRID_SCHEMA_COLS];
        } else {
            $isDefCols = false;
            $cols = null;
        }
        $datas = $grid[Watt_Util_Grid::GRID_SCHEMA_DATAS];
        $output_searchs = "";
        /**
         * 开始输出查询信息
         */
        $output_searchs .= '<form method="get" action="' . $_SERVER['PHP_SELF'] . '" id="searchform" ' . $formAttribs . ' onsubmit="if($(\'searchFormPageTotal\')){$(\'searchFormPageTotal\').value=\'\';}">';
        //初始化参数
        $initParams = $grid[Watt_Util_Grid::GRID_SCHEMA_SEARCHS][Watt_Util_Grid_Searchs::DEF_INITPARAMS];
        foreach ($initParams as $initKey => $initValue) {
            $output_searchs .= '<input type="hidden" name="' . $initKey . '" value="' . h($initValue) . '">';
            $output_searchs .= '<input type="hidden" name="' . Watt_Util_Grid_Searchs::INIT_PARAM_NAME . '[]" value="' . h($initKey) . '">';
        }
        if (isset($grid[Watt_Util_Grid::GRID_SCHEMA_SEARCHS]) && is_array($grid[Watt_Util_Grid::GRID_SCHEMA_SEARCHS]) || isset($grid[Watt_Util_Grid::GRID_SCHEMA_PAGER]) && is_array($grid[Watt_Util_Grid::GRID_SCHEMA_PAGER]) || isset($grid[Watt_Util_Grid::GRID_SCHEMA_ORDERBYS]) && is_array($grid[Watt_Util_Grid::GRID_SCHEMA_ORDERBYS])) {
            $output_searchs .= '<div class="search_container">' . "\n";
            //$output_searchs .= '<div class="search"><form method="post" id="searchform" '.$formAttribs.'>';
            /* 070322 暂时给演示注销*/
            $output_searchs .= '<div class="search">';
            /*
            $output_searchs .= '<input type="hidden" name="do" value="'.$_REQUEST['do'].'">';
            */
            //var_dump( $grid[Watt_Util_Grid::GRID_SCHEMA_SEARCHS] );
            $SCHEMA_SEARCHS = $grid[Watt_Util_Grid::GRID_SCHEMA_SEARCHS];
            $output_searchs .= '<div class="grid">';
            //$output_searchs .= '<div style="float:left;width:33%">';
            //高级搜索
            //if( isset( $grid[Watt_Util_Grid::GRID_SCHEMA_SEARCHS][Watt_Util_Grid_Searchs::SEARCH_ADV_SIGN] ) ){
            if (key_exists(Watt_Util_Grid_Searchs::SEARCH_ADV_SIGN, $SCHEMA_SEARCHS)) {
                $advSign = $SCHEMA_SEARCHS[Watt_Util_Grid_Searchs::SEARCH_ADV_SIGN];
                $output_searchs .= '<input name="' . Watt_Util_Grid_Searchs::SEARCH_ADV_SIGN . '" id="' . Watt_Util_Grid_Searchs::SEARCH_ADV_SIGN . '" value="' . h($advSign) . '">';
            }
            $searchs = $grid[Watt_Util_Grid::GRID_SCHEMA_SEARCHS][Watt_Util_Grid_Searchs::DEF_SEARCHS];
            //$output_searchs .= '高级</div>';
            $output_searchs .= '</div>';
            $searchsCounter = 0;
            $output_searchs .= '<div id="search_searchs" style="clear:both">';
            $output_searchs .= '<table><tr>';
            foreach ($searchs as $search) {
                $opration = $search[Watt_Util_Grid_Search::DEF_OPERATION];
                if ($opration == Watt_Util_Grid_Searchs::LIKE) {
                    $oprationTip = i18ntrans('#模糊匹配');
                } elseif ($opration == Watt_Util_Grid_Searchs::EQUAL || $opration == Watt_Util_Grid_Searchs::IN) {
                    $oprationTip = i18ntrans('#精确匹配');
                } else {
                    $oprationTip = sprintf(i18ntrans('#规则为(%s)'), $opration);
                }
                //$output_searchs .= '<div style="float:left;width:200px;text-align:right;">';
                $output_searchs .= '<td class="search_name">';
                $output_searchs .= '<span class="search_name" title="' . $oprationTip . '">' . $search[Watt_Util_Grid_Search::DEF_TITLE] . ': </span>';
                $output_searchs .= '</td><td style="text-align:left">';
                if (is_array($search[Watt_Util_Grid_Search::DEF_REFERENCE])) {
                    //这里用下拉列表显示
                    $output_searchs .= '<select class="search_input" name="' . $search[Watt_Util_Grid_Search::DEF_COLNAME] . '" id="' . $search[Watt_Util_Grid_Search::DEF_COLNAME] . '">';
                    $output_searchs .= '<option>               </option>';
                    foreach ($search[Watt_Util_Grid_Search::DEF_REFERENCE] as $key => $value) {
                        $selSign = $key == $search[Watt_Util_Grid_Search::DEF_VALUE] && $search[Watt_Util_Grid_Search::DEF_VALUE] !== '' && !is_null($search[Watt_Util_Grid_Search::DEF_VALUE]) ? "selected" : "";
                        $output_searchs .= '<option value="' . htmlspecialchars($key) . '" ' . $selSign . '>' . htmlspecialchars($value) . '</option>';
                    }
                    $output_searchs .= '';
                    $output_searchs .= '</select>';
                } else {
                    switch ($search[Watt_Util_Grid_Search::DEF_SHOWTYPE]) {
                        case Watt_Util_Grid_Search::SHOW_TYPE_DATE:
                            $dateselector = new Watt_View_Helper_DateSelector();
                            $output_searchs .= $dateselector->build($search[Watt_Util_Grid_Search::DEF_COLNAME], $search[Watt_Util_Grid_Search::DEF_VALUE], array('class' => 'dateselector'));
                            break;
                        case Watt_Util_Grid_Search::SHOW_TYPE_TIMESTAMP:
                            $dateselector = new Watt_View_Helper_DateSelector();
                            $dateselector->setShowTimes(true);
                            $output_searchs .= $dateselector->build($search[Watt_Util_Grid_Search::DEF_COLNAME], $search[Watt_Util_Grid_Search::DEF_VALUE], array('class' => 'dateselector'));
                            break;
                        case Watt_Util_Grid_Search::SHOW_TYPE_TIMESEC:
                            $dateselector = new Watt_View_Helper_DateSelector();
                            $dateselector->setShowTimeSecs(true);
                            $output_searchs .= $dateselector->build($search[Watt_Util_Grid_Search::DEF_COLNAME], $search[Watt_Util_Grid_Search::DEF_VALUE], array('class' => 'dateselector'));
                            break;
                        case Watt_Util_Grid_Search::SHOW_TYPE_SELECTOR_PERSON:
                            $dateselector = new Watt_View_Helper_PersonSelector();
                            $output_searchs .= $dateselector->build($search[Watt_Util_Grid_Search::DEF_COLNAME], $search[Watt_Util_Grid_Search::DEF_VALUE], array('class' => 'personselector'));
                            break;
                        case Watt_Util_Grid_Search::SHOW_TYPE_SELECTOR_DINGDAN:
                            $dateselector = new Watt_View_Helper_DingdanSelector();
                            $output_searchs .= $dateselector->build($search[Watt_Util_Grid_Search::DEF_COLNAME], $search[Watt_Util_Grid_Search::DEF_VALUE], array('class' => 'dingdanselector'));
                            break;
                        case Watt_Util_Grid_Search::SHOW_TYPE_SEARCHTIP:
                            //此功能尚未完善,暂时屏蔽
                            //$dateselector = new Watt_View_Helper_SearchTip();
                            //$output_searchs .=  $dateselector->build($search[Watt_Util_Grid_Search::DEF_COLNAME],$search[Watt_Util_Grid_Search::DEF_VALUE],  array('class' => 'search_input'),null,$search[Watt_Util_Grid_Search::DEF_EXTEND]);
                            //break;
                        //此功能尚未完善,暂时屏蔽
                        //$dateselector = new Watt_View_Helper_SearchTip();
                        //$output_searchs .=  $dateselector->build($search[Watt_Util_Grid_Search::DEF_COLNAME],$search[Watt_Util_Grid_Search::DEF_VALUE],  array('class' => 'search_input'),null,$search[Watt_Util_Grid_Search::DEF_EXTEND]);
                        //break;
                        default:
                            $output_searchs .= '<input class="search_input" name="' . $search[Watt_Util_Grid_Search::DEF_COLNAME] . '" id="' . $search[Watt_Util_Grid_Search::DEF_COLNAME] . '" value="' . h($search[Watt_Util_Grid_Search::DEF_VALUE]) . '">' . "\n";
                    }
                }
                $output_searchs .= '</td>';
                //$output_searchs .= '</div>';
                $searchsCounter++;
                if ($searchsCounter > 0 && $searchsCounter % $searchCols == 0) {
                    $output_searchs .= '</tr><tr>';
                }
            }
            if (count($searchs)) {
                //如果没有修改搜索条件,不会影响总记录的条数
                $output_searchs .= '<td colspan="' . ($searchCols - $searchsCounter % $searchCols) * 2 . '">
				<div style="clear:both;text-align:center">
				<input type="submit" id="searchFormSubmit" value="' . Watt_I18n::trans("SEARCH") . '" class="btn">
				</div>
				</td>' . "\n";
            }
            $output_searchs .= '</tr></table>';
            //$output_searchs .= '<div style="clear:both">&nbsp;</div>';
            $output_searchs .= '</div>';
            /**
             * 如果有排序定义,输出排序表单域
             */
            if (is_array($grid[Watt_Util_Grid::GRID_SCHEMA_ORDERBYS]) && count($grid[Watt_Util_Grid::GRID_SCHEMA_ORDERBYS][Watt_Util_Grid_Searchs::DEF_ORDERBYS])) {
                $output_searchs .= '<input type="hidden" name="' . Watt_Util_Grid_Searchs::DEF_ORDERBYS . '" id="searchFormOrderBy" value="' . $grid[Watt_Util_Grid::GRID_SCHEMA_ORDERBYS][Watt_Util_Grid_Searchs::DEF_ORDERBYS][0] . '">';
                $output_searchs .= '<input type="hidden" name="' . Watt_Util_Grid_Searchs::DEF_ORDERBYORDERS . '" id="searchFormOrderByOrder" value="' . $grid[Watt_Util_Grid::GRID_SCHEMA_ORDERBYS][Watt_Util_Grid_Searchs::DEF_ORDERBYORDERS][0] . '">';
                $orderByCols[$grid[Watt_Util_Grid::GRID_SCHEMA_ORDERBYS][Watt_Util_Grid_Searchs::DEF_ORDERBYS][0]] = $grid[Watt_Util_Grid::GRID_SCHEMA_ORDERBYS][Watt_Util_Grid_Searchs::DEF_ORDERBYORDERS][0] == Watt_Util_Grid_Searchs::DESC ? "↓" : "↑";
            } else {
                $output_searchs .= '<input type="hidden" name="' . Watt_Util_Grid_Searchs::DEF_ORDERBYS . '" id="searchFormOrderBy" value="">' . "\n";
                $output_searchs .= '<input type="hidden" name="' . Watt_Util_Grid_Searchs::DEF_ORDERBYORDERS . '" id="searchFormOrderByOrder" value="">' . "\n";
            }
            /**
             * 这是order by 的js脚本
             * //已写到 common.js 里了
             */
            //			$descSign = Watt_Util_Grid_Searchs::DESC;
            //			$ascSign  = Watt_Util_Grid_Searchs::ASC;
            //			$output_searchs .= <<<EOT
            //<script>
            //function orderby{$specSearchFormId}(colName){document.getElementById("searchFormOrderBy").value=colName;if(document.getElementById("searchFormOrderByOrder").value=="{$ascSign}"){document.getElementById("searchFormOrderByOrder").value="{$descSign}"}else{document.getElementById("searchFormOrderByOrder").value="{$ascSign}"}document.getElementById("searchform").submit();}
            //</script>
            //EOT;
            /**
             * 如果有页码定义,输出页码表单域
             */
            if (is_array($grid[Watt_Util_Grid::GRID_SCHEMA_PAGER])) {
                //这是翻页的js脚本
                //已写到 common.js 里了
                //				$output_searchs .= <<<EOT
                //						<script>function gotoPage(pn){document.getElementById("searchFormPageNum").value=pn;document.getElementById("searchform").submit();}</script>
                //EOT;
                //这里不显示 PAGER_VAR_PAGE_NUM 是为了 按 search 后进入到第1页
                $output_searchs .= '<input type="hidden" name="' . Watt_Util_Pager::PAGER_VAR_PAGE_NUM . '" id="searchFormPageNum" value="">';
                $output_searchs .= '<input type="hidden" name="' . Watt_Util_Pager::PAGER_VAR_PAGE_SIZE . '" id="searchFormPageSize" value="' . $grid[Watt_Util_Grid::GRID_SCHEMA_PAGER][Watt_Util_Pager::PAGER_VAR_PAGE_SIZE] . '">';
                $output_searchs .= '<input type="hidden" name="' . Watt_Util_Pager::PAGER_VAR_TOTAL . '" id="searchFormPageTotal" value="' . $grid[Watt_Util_Grid::GRID_SCHEMA_PAGER][Watt_Util_Pager::PAGER_VAR_TOTAL] . '">';
                //var_dump( $output_searchs );
            }
            $output_searchs .= "</div>\n";
            $output_searchs .= "</div>\n";
        }
        $output_searchs .= '</form>';
        /**
         * 这里开始输出数据信息
         */
        $output_body = "";
        $output_body .= '<div class="grid">' . "\n";
        $output_body .= '<table class="grid" cellspacing="1" ' . ($gridId ? 'id="' . $gridId . '"' : '') . ' >' . "\n";
        /**
         * 输出 header col 头信息
         */
        $output_body .= "<thead>\n";
        if ($isDefCols) {
            $output_body .= "<tr>";
            foreach ($cols as $col) {
                $col_title = is_null($col["title"]) ? Watt_I18n::trans($col["colname"]) : $col["title"];
                if (trim($col[Watt_Util_Grid::COL_COLNAME]) != "" && $col["sortable"]) {
                    $orderBySign = key_exists($col[Watt_Util_Grid::COL_COLNAME], $orderByCols) ? $orderByCols[$col[Watt_Util_Grid::COL_COLNAME]] : "";
                    if ($output_searchs) {
                        //如果在 $col["sortable"] 中不是 boolean,那么就是填写的 order by 的值
                        if (is_bool($col["sortable"])) {
                            $orderByColname = $col["colname"];
                        } else {
                            $orderByColname = $col["sortable"];
                        }
                        //如果有search信息,则输出order by
                        $output_body .= "<th nowrap=\"true\"><a href=\"javascript:orderby('" . addslashes($orderByColname) . "')\">" . $col_title . "</a>" . $orderBySign . $col["colext"] . "</th>";
                    } else {
                        //否则不输出order by脚本
                        $output_body .= "<th nowrap=\"true\">" . $col_title . "</th>";
                    }
                } else {
                    $output_body .= "<th nowrap=\"true\">" . $col_title . $col["colext"] . "</th>";
                }
            }
            $output_body .= "</tr>\n";
        } else {
            if (count($datas)) {
                $row = current($datas);
                if (is_array($row)) {
                    $output_body .= "<tr>";
                    foreach ($row as $key => $col) {
                        $output_body .= "<th>" . Watt_I18n::trans($key) . "</th>";
                    }
                    $output_body .= "</tr>\n";
                }
            }
        }
        $output_body .= "</thead>\n";
        /**
         * Body 信息
         */
        $output_body .= "<tbody>\n";
        if (is_array($datas) && count($datas)) {
            $output_arr = self::_getRenderedDataByGridData($datas, $cols);
            foreach ($output_arr as $row) {
                if (!is_array($row)) {
                    continue;
                }
                $output_body .= "<tr>";
                if ($isDefCols) {
                    reset($cols);
                    foreach ($cols as $col) {
                        $output_body .= "<td {$col["coltags"]}>" . current($row) . "</td>";
                        next($row);
                    }
                } else {
                    foreach ($row as $col) {
                        $output_body .= "<td>" . $col . "</td>";
                    }
                }
                $output_body .= "</tr>\n";
            }
            //			$showText = "";
            //			foreach ( $datas as $row )
            //			{
            //				if( !is_array( $row ) )continue;
            //				$output_body .= "<tr>";
            //				if( $isDefCols )
            //				{
            //					reset( $cols );
            //					foreach ( $cols as $col )
            //					{
            //						if( isset($col["render"]) && $col["render"] != "" )
            //						{
            //							$showText = "";
            //							@eval('$showText = '.$col["render"].';');
            //						}
            //						else
            //						{
            //							if( isset($col["colname"]) ){
            //								$showText = @$row[$col["colname"]];
            //							}else{
            //								$showText = "";
            //							}
            //						}
            //						$output_body .= "<td {$col["coltags"]}>".$showText."</td>";
            //					}
            //				}
            //				else
            //				{
            //					foreach ( $row as $col )
            //					{
            //						$output_body .= "<td>". $col ."</td>";
            //					}
            //				}
            //				$output_body .= "</tr>\n";
            //			}
        }
        //end if( is_array
        $output_body .= "</tbody>\n";
        $output_body .= "</table>\n";
        $output_body .= "</div>\n";
        $output_page = "";
        //if( is_array( $grid[Watt_Util_Grid::GRID_SCHEMA_PAGER] ) && $grid[Watt_Util_Grid::GRID_SCHEMA_PAGER][Watt_Util_Pager::PAGER_VAR_PAGE_COUNT] > 1 ){
        if (is_array($grid[Watt_Util_Grid::GRID_SCHEMA_PAGER]) && $grid[Watt_Util_Grid::GRID_SCHEMA_PAGER][Watt_Util_Pager::PAGER_VAR_PAGE_COUNT] > 0) {
            // 只要存在数据就显示 GRID FOOTER,具体显示哪些元素由 toHtml 函数内判断 //bobit Tue Dec 11 10:13:54 CST 200710:13:54
            $output_page = '<div class="search_container">' . "\n";
            $output_page .= Watt_View_Helper_Pager::toHtml($grid[Watt_Util_Grid::GRID_SCHEMA_PAGER], '"javascript:gotoPage($pg)"');
            $output_page .= '</div>' . "\n";
        }
        $rev[Watt_Util_Grid::GRID_SCHEMA_SEARCHS] = $output_searchs;
        $rev[Watt_Util_Grid::GRID_SCHEMA_DATAS] = $output_body;
        $rev[Watt_Util_Grid::GRID_SCHEMA_PAGER] = $output_page;
        return $rev;
    }