pnd8_rasp/app/engine/admin/modules/object_admin.php

113 lines
2.8 KiB
PHP

<?php
class object_admin extends module {
var $_loc_vars = array( 'templ', 'obj_name', 'del', 'add','onPage' );
var $_get_vars = array( 'act', 'id' );
var $obj;
var $templ = 'object_admin.htm';
var $del = true;
var $add = true;
var $onPage=10;
function _init() {
$this->obj = new cobject( $this->obj_name );
return parent::_init();
}
function _on_() {
global $R;
$db = $this->obj->getDB();
$tpl = $R->getTpl( $this->templ, 'body' );
$tplr = $R->getTpl( $this->templ, 'row' );
$tpltd = $R->getTpl( $this->templ, 'td' );
$tplth = $R->getTpl( $this->templ, 'th' );
$tpl_del_td = $R->getTpl( $this->templ, 'del_td' );
$tpl_del_th = $R->getTpl( $this->templ, 'del_th' );
foreach( $this->obj->attrs as $attr_name => $attrs ) {
if ( $attrs['hide'] ) continue;
$tt = $R->set('attr_name', $attrs['desc'], $tplth );
$tpl = $R->parse( 'head_cols', $tt, $tpl );
$tt = $R->set('attr_name', $attr_name, $tpltd );
$tplr = $R->parse( 'row_cols', $tt, $tplr);
}
if ( $this->del ) {
$tpl = $R->parse( 'head_cols', $tpl_del_th, $tpl );
$tplr = $R->parse( 'row_cols', $tpl_del_td, $tplr);
}
$filter = new filter( $this->obj_name );
$filter->parse();
$db2 = $db->q( $this->obj->getSelectEx( 'COUNT(*) as `cnt`', $filter->getSQL() ) );
$db2->r();
$size = $db2->f('cnt');
$pw = new Walker( $size, $this->onPage );
$tpl = $R->set( 'filter', $filter->getHTML() , $tpl);
$db2 = $db->q( $this->obj->getSelect( $filter->getSQL() . ' ORDER BY `ID` DESC ' . $pw->getSQL() ) );
while( $db2->r() ) {
$this->obj->lRow($db2);
$tt = $this->obj->assign( $tplr, true );
$tpl = $R->parse( 'rows', $tt, $tpl );
}
$this->obj->byId($this->id);
if ( !$this->id && !$this->add ) {
$tpl = $R->set( 'form', '' , $tpl);
} else {
$tpl = $R->set( 'form', $this->r_form() , $tpl);
}
$tpl = $R->set( 'walker', $pw->getHTML() , $tpl);
$tpl = $R->set( 'cur_page', $pw->page, $tpl );
$tpl = $R->set( 'filter_url', $this->_get_filter_url(), $tpl );
return $R->clear( $tpl );
}
function r_form() {
$form = new form( $this->obj );
return $form->render();
}
function _on_save_edit() {
global $cat;
if ( !$this->id && !$this->add ) _redirect('?cat=' . $cat->cat );
$this->obj->lPost();
if ( $this->obj->validate() ) {
$this->obj->save();
} else {
return $this->r_form();
}
_redirect('?cat=' . $cat->cat . '&' . $this->_get_filter_url() .'&curpage='.$_GET['curpage'] );
}
function _on_del() {
global $cat;
if ( $this->del ) {
$this->obj->byId( $this->id );
$this->obj->del();
}
_redirect('?cat=' . $cat->cat . '&' . $this->_get_filter_url() .'&curpage='.$_GET['curpage']);
}
function _get_filter_url() {
foreach( $_GET as $k => $v ) {
if ( strpos($k, $this->obj_name.'_') === 0 ) {
$ret = '&'.$k.'='.$v;
}
}
return $ret;
}
}
?>