function __construct($scriptPath = "") { parent::__construct($scriptPath); //这里默认设置一些数据 //包括 Header Title Css CharSet //XSLT等 //其他一些数据等... }
/** * @todo 解决和dialog重复的问题 * * @param boolean $show * @return string */ public function render($show = true) { ob_start(); /** * ajax 也要显示显示 Tq消息 * Tq消息要在 tip 之前 * ajax不显示消息, 此时消息存在 session 里,下次统一发送 */ //echo Tpm_Message_Sender_Tq::getMsgHtml(); /** * 这里显示主体部分 */ parent::render(true); $out = ob_get_clean(); if ($show) { echo $out; } //如果输出debug信息, Ajax会不爽 Pft_Debug::getDefaultDebug()->clearDebugInfo(); return $out; }
/** * 以XML的方式渲染数据并输出 * * @param boolean $show * @return string */ public function render($show = true) { // header( "Content-type: application/octetstream" ); // header( "Content-Disposition: attachment; filename=".date('Y-m-d H:i:s').".csv" ); // header('Content-type: application/csv'); // header('Content-Disposition: attachment; filename="xxx.csv"'); ob_start(); //这里显示菜单 //这里显示主体部分 //parent::render( true ); reset($this->_data); /** * 这里显示主体部分 */ parent::render(true); //这里显示底部 $out = ob_get_clean(); if ($show) { echo $out; } //如果输出debug信息, XML会报错 Pft_Debug::getDefaultDebug()->clearDebugInfo(); return $out; }
/** * 职责变了,这个方法没有用了 * * @param boolean $show * @return string */ public function render($show = true) { /** * 是否输出主体 */ $outputBody = true; ob_start(); //echo "Html Header"; //echo "Body Header"; if ($this->_header && is_array($this->_header)) { //这里展开了 sys_title 和 tpm_css extract($this->_header); } include $this->_getAbsViewPathFilename("inc/header.dailog.html.php"); /** * 基础js函数 */ ?> <!--日历选择时间时调用服务器时间 jute 20071122--> <script src="<?php echo Pft_Config::getHttpHost(); ?> js/calendar/tpmsystemdate.php"></script> <script src="<?php echo Pft_Config::getHttpHost(); ?> js/common.js"></script> <script src="<?php echo Pft_Config::getHttpHost(); ?> js/john/ajax.js"></script> <script src="<?php echo Pft_Config::getHttpHost(); ?> js/prototype_1_5_0.js"></script> <!--ext--> <!--link rel="stylesheet" type="text/css" href="<?php echo Pft_Config::getHttpHost(); ?> js/ext-1.0/resources/css/ext-all.css" /--> <!-- GC --> <?php if (@$_REQUEST['ext-all']) { ?> <!-- LIBS --> <script type="text/javascript" src="<?php echo Pft_Config::getHttpHost(); ?> js/ext-1.0/adapter/yui/yui-utilities.js"></script> <script type="text/javascript" src="<?php echo Pft_Config::getHttpHost(); ?> js/ext-1.0/adapter/yui/ext-yui-adapter.js"></script> <!-- ENDLIBS --> <script type="text/javascript" src="<?php echo Pft_Config::getHttpHost(); ?> js/ext-1.0/ext-all.js"></script> <?php } else { ?> <!--Used in Tpm--> <!--script type="text/javascript" src="<?php echo Pft_Config::getHttpHost(); ?> js/ext.js"></script--> <?php } ?> <!--END Ext--> <script src="<?php echo Pft_Config::getHttpHost(); ?> js/john/jsdialog/dialog.js"></script> <link rel='stylesheet' href='./js/john/jsdialog/dialog.css'> <script src="<?php echo Pft_Config::getHttpHost(); ?> js/john/sendMsg.js"></script> <div id="popup_div_msg" style="position:absolute;display:none"> </div> <?php /** * 在top显示loading */ // echo "<script>if(top.controlProgressBar)top.controlProgressBar();</script>"; /** * 这里显示 Tq消息 * Tq消息要在 tip 之前 */ echo Tpm_Message_Sender_Tq::getMsgHtml(); /** * 处理在 ctrl 里设置的tip提示信息 */ if (key_exists(Pft_Controller_Action::HEADER_TIP, $this->_header)) { $tip = $this->_header[Pft_Controller_Action::HEADER_TIP]; echo "<script>"; if ($nextUrl = $tip[Pft_Controller_Action::HEADER_TIP_URL]) { $matchs = null; if (preg_match("/^javascript:(.*)/", $nextUrl, $matchs)) { // echo "function onloadTip(){Ext.Msg.alert('TPM', '".addslashes($tip[Pft_Controller_Action::HEADER_TIP_MSG])."', function(){{$matchs[1]};return false;});}"; echo "function onloadTip() {top.alert('" . addslashes($tip[Pft_Controller_Action::HEADER_TIP_MSG]) . "');{$matchs[1]}}"; } else { // echo "function onloadTip(){Ext.Msg.alert('TPM', '".addslashes($tip[Pft_Controller_Action::HEADER_TIP_MSG])."', function(){location.href='".$nextUrl."';return false;});}"; echo "function onloadTip() {top.alert('" . addslashes($tip[Pft_Controller_Action::HEADER_TIP_MSG]) . "');location.href='" . $nextUrl . "'}"; } //如果有转向,则不输出主体 $outputBody = false; } else { // echo "function onloadTip(){top.Ext.Msg.alert('TPM', '".addslashes($tip[Pft_Controller_Action::HEADER_TIP_MSG])."');}"; echo "function onloadTip(){top.alert('" . addslashes($tip[Pft_Controller_Action::HEADER_TIP_MSG]) . "');}"; } echo "window.onload = onloadTip;"; //echo "Ext.onready( onloadTip );"; echo "</script>"; } if ($outputBody) { //没有设置不显示主体 //这里显示菜单 有true 是因为 菜单数据目前是在Pft_View_Helper_Menu里的 // if( isset( $this->_header["menu"] ) ) // { // //var_dump( $this->_header ); // $menu = new Pft_View_Helper_Menu(); // $menu->buildMenu( $this->_header["menu"] ); // //$menu->buildMenu( null ); // } /** * 这里显示主体部分 */ parent::render(true); } /** * 结束loading */ // echo "<script>if(top.Element)top.Element.hide('floatProgress_backgroup')//top.controlProgressBar('1');</script>"; // echo "<script>if(top.Element)top.Element.hide('floatProgress')//top.controlProgressBar('1');</script>"; /** * 这里显示底部 */ //echo "Body Footer"; //include( $this->_getAbsViewPathFilename( "inc/footer.dailog.html.php" ) ); $out = ob_get_clean(); if ($show) { echo $out; } return $out; }
/** * 处理 do * 有可能会返回 goToDo * * 只有一个单词的do,对应的action是 index * * * @param string $do * @return string $goToDo */ protected function processDo($do, $defaultView = "Html") { if ($do == "") { $e = new Pft_Exception(Pft_I18n::trans("ERR_DISPATCH_NODO")); throw $e; } $goToDo = ""; $arrCtrlAndAction = $this->_analyzeDoToControllerAndAction($do); $controller = $arrCtrlAndAction[0]; $action = $arrCtrlAndAction[1]; $doFile = $arrCtrlAndAction[2]; $doAction = $arrCtrlAndAction[3]; //使用 ob_start 是为了Controller里的 redirect 可以正常使用 //ob_start(); $theCtrl = Pft_Controller_Action::factory($controller, $action); /** * 检查 会话的权限。 * 如果没有权限,抛出一个异常 * 此处别扭 */ $rbac = new Pft_Rbac(); //$rbac->checkSession(Pft_Session::getSession(), $do); $privilege = $rbac->checkActionPrivilege(Pft_Session::getSession(), $theCtrl, $action); if ($privilege instanceof TpmYonghuzhaoquanxian) { if (!$theCtrl->getTitle()) { $theCtrl->setTitle(Pft_I18n::trans($privilege->getQxMingcheng())); } } Pft_Debug::addInfoToDefault('', 'Pre do action.'); if (method_exists($theCtrl, $doAction)) { //执行controller中的action $theCtrl->{$doAction}(); } else { throw new Exception(Pft_I18n::trans("ERR_APP_LOST_ACTION")); } Pft_Debug::addInfoToDefault('', 'After do action..'); $goToDo = $theCtrl->getGoToDo(); $data = $theCtrl->getData(); if (defined("DEBUG") && DEBUG) { //调试阶段才显示Controller里输出的信息 //echo ob_get_clean(); } else { //用户使用阶段不允许 action 里输出显示数据 //ob_clean(); } if ($theCtrl->isNeedView()) { Pft_Debug::addInfoToDefault('', 'Pre load view..'); if ($theCtrl->getViewType()) { $defaultView = $theCtrl->getViewType(); } $view = Pft_View::factory($defaultView, Pft_Config::getViewPath()); $view->setHeader($theCtrl->getHeader()); Pft_Debug::addInfoToDefault('', 'After view factory..'); /** * 如果用户已登录,读取菜单信息 * @todo 未登录可能也可以有菜单 */ if ($user_id = Pft_Session::getSession()->getUserId()) { $tpmCaidans = TpmCaidanPeer::getJueseCaidan(Pft_Session::getSession()->getRoleId()); if (count($tpmCaidans)) { $view->setHeader($tpmCaidans, "menu"); // $menus = array(); // foreach ( $tpmCaidans as $tpmCaidan ) // { // $menus[] = array( $tpmCaidan->getCdMingcheng() // , $tpmCaidan->getCdChuliye() // ); // } // $view->setHeader( $menus, "menu" ); } } //读取菜单完 //$view->renderModel($theCtrl); $view->renderView($data, $this->_getDefaultViewFileOfAction($controller, $action), true); } return $goToDo; }
/** * @todo 解决和dialog重复的问题 * * @param boolean $show * @return string */ public function render($show = true) { $haveHeaderInfo = $this->_header && is_array($this->_header); /** * 是否输出主体,默认输出 */ $outputBody = true; //ob_start(); //echo "Html Header"; //echo "Body Header"; if ($haveHeaderInfo) { //这里展开了 sys_title 和 tpm_css extract($this->_header); } /* if( !isset( $sys_title ) || $sys_title=="" ) $sys_title = "TPM"; $sys_title .= "[".Pft_Session::getSession()->getRoleName().".".Pft_Session::getSession()->getUserName()."]"; include( $this->_getAbsViewPathFilename( "inc/header.html.php" ) ); */ /** * 基础js函数 */ if ($haveHeaderInfo) { /** * 处理在 ctrl 里设置的tip提示信息 */ if (key_exists(Pft_Controller_Action::HEADER_TIP, $this->_header)) { $tip = $this->_header[Pft_Controller_Action::HEADER_TIP]; echo "<script>"; if ($nextUrl = $tip[Pft_Controller_Action::HEADER_TIP_URL]) { $matchs = null; if (preg_match("/^javascript:(.*)/", $nextUrl, $matchs)) { // echo "function onloadTip(){Ext.Msg.alert('TPM', '".addslashes($tip[Pft_Controller_Action::HEADER_TIP_MSG])."', function(){{$matchs[1]};return false;});}"; echo "function onloadTip() {top.alert('" . addslashes($tip[Pft_Controller_Action::HEADER_TIP_MSG]) . "');{$matchs[1]}}"; } else { // echo "function onloadTip(){Ext.Msg.alert('TPM', '".addslashes($tip[Pft_Controller_Action::HEADER_TIP_MSG])."', function(){location.href='".$nextUrl."';return false;});}"; echo "function onloadTip() {top.alert('" . addslashes($tip[Pft_Controller_Action::HEADER_TIP_MSG]) . "');location.href='" . $nextUrl . "'}"; } //如果有转向,则不输出主体 $outputBody = false; } else { // echo "function onloadTip(){Ext.Msg.alert('TPM', '".addslashes($tip[Pft_Controller_Action::HEADER_TIP_MSG])."');}"; echo "function onloadTip() {top.alert('" . addslashes($tip[Pft_Controller_Action::HEADER_TIP_MSG]) . "');}"; } echo "window.onload = onloadTip;"; echo "</script>"; } } if ($outputBody) { //没有设置不显示主体 //这里显示菜单 有true 是因为 菜单数据目前是在Pft_View_Helper_Menu里的 if (isset($this->_header["menu"])) { //var_dump( $this->_header ); $menu = new Pft_View_Helper_Menu(); $menu->buildMenu($this->_header["menu"]); } /** * 这里显示主体部分 */ parent::render(true); } //</div> //<!--End Of Mainbody--> /** * 这里显示底部 */ //include( $this->_getAbsViewPathFilename( "inc/footer.html.php" ) ); // $out = ob_get_clean(); // if( $show ) // { // echo $out; // } // return $out; }