OSB enhancements to date
This commit is contained in:
101
modules/module/classes/controller/admin/module.php
Normal file
101
modules/module/classes/controller/admin/module.php
Normal file
@@ -0,0 +1,101 @@
|
||||
<?php defined('SYSPATH') or die('No direct access allowed.');
|
||||
|
||||
/**
|
||||
* This class provides MODULE management
|
||||
*
|
||||
* @package lnApp
|
||||
* @subpackage Page/Module
|
||||
* @category Controllers
|
||||
* @author Deon George
|
||||
* @copyright (c) 2010 Deon George
|
||||
* @license http://dev.leenooks.net/license.html
|
||||
*/
|
||||
class Controller_Admin_Module extends Controller_Module {
|
||||
/**
|
||||
* Our menu method
|
||||
*
|
||||
* We need this method, otherwise we have redirect from our parent
|
||||
*/
|
||||
public function action_menu() {
|
||||
$this->template->content = _('See menu on tree');
|
||||
}
|
||||
|
||||
/**
|
||||
* List our installed modules
|
||||
*/
|
||||
public function action_list() {
|
||||
$modules = ORM::factory('module');
|
||||
|
||||
$output = '';
|
||||
|
||||
$output .= View::factory('module/admin/list_header');
|
||||
foreach ($modules->find_all() as $mo) {
|
||||
$output .= View::factory('module/admin/list_body')
|
||||
->set('module',$mo);
|
||||
}
|
||||
$output .= View::factory('module/admin/list_footer');
|
||||
|
||||
Block::add(array(
|
||||
'title'=>_('Currently installed modules'),
|
||||
'body'=>$output,
|
||||
));
|
||||
|
||||
$this->template->content = Block::factory();
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit a Module Configuration
|
||||
*
|
||||
* @param int $mid Module ID
|
||||
*/
|
||||
public function action_edit($mid) {
|
||||
$mo = ORM::factory('module',$mid);
|
||||
|
||||
if (! $mo->loaded()) {
|
||||
SystemMessage::add(array(
|
||||
'title'=>_('Invalid Module ID'),
|
||||
'type'=>'error',
|
||||
'body'=>sprintf(_('Module with ID %s doesnt appear to exist?'),$mid),
|
||||
));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$output = '';
|
||||
$methods = $this->_methods($mo->name);
|
||||
|
||||
// Show methods defined in the DB already.
|
||||
$output .= View::factory('module/admin/method_list_header');
|
||||
foreach ($mo->module_method->find_all() as $meo) {
|
||||
if (($method = array_search($meo->name,$methods)) !== false)
|
||||
unset($methods[$method]);
|
||||
|
||||
$output .= View::factory('module/admin/method_list_body')
|
||||
->set('method',$meo)
|
||||
->set('module',$mo)
|
||||
->set('defined',$method !== false);
|
||||
}
|
||||
|
||||
$output .= View::factory('module/admin/method_list_spacer');
|
||||
|
||||
// Show new methods NOT defined in the DB already.
|
||||
foreach ($methods as $method) {
|
||||
$meo = ORM::factory('module_method')
|
||||
->values(array('name'=>$method,'notes'=>_('Not defined in DB')));
|
||||
|
||||
$output .= View::factory('module/admin/method_list_body')
|
||||
->set('method',$meo)
|
||||
->set('module',$mo)
|
||||
->set('defined',$method === false);
|
||||
}
|
||||
$output .= View::factory('module/admin/method_list_footer');
|
||||
|
||||
Block::add(array(
|
||||
'title'=>sprintf(_('%s Methods'),strtoupper($mo->name)),
|
||||
'body'=>$output,
|
||||
));
|
||||
|
||||
$this->template->content = Block::factory();
|
||||
}
|
||||
}
|
||||
?>
|
138
modules/module/classes/controller/admin/module/method.php
Normal file
138
modules/module/classes/controller/admin/module/method.php
Normal file
@@ -0,0 +1,138 @@
|
||||
<?php defined('SYSPATH') or die('No direct access allowed.');
|
||||
|
||||
/**
|
||||
* This class provides MODULE management
|
||||
*
|
||||
* @package lnApp
|
||||
* @subpackage Page/Module
|
||||
* @category Controllers
|
||||
* @author Deon George
|
||||
* @copyright (c) 2010 Deon George
|
||||
* @license http://dev.leenooks.net/license.html
|
||||
*/
|
||||
class Controller_Admin_Module_Method extends Controller_Module {
|
||||
/**
|
||||
* Add a method to the database
|
||||
*/
|
||||
public function action_add($mid,$method) {
|
||||
$mo = ORM::factory('module',$mid);
|
||||
$mmo = ORM::factory('module_method');
|
||||
|
||||
if (! $mo->loaded() OR ! in_array($method,$this->_methods($mo->name)))
|
||||
throw new Kohana_Exception('Method (:method) does not exist in :class',array(':method'=>$method,':class'=>$mo->name));
|
||||
|
||||
$mmo->name = $method;
|
||||
$mmo->module_id = $mo->id;
|
||||
$mmo->values($_POST);
|
||||
|
||||
$output = '';
|
||||
|
||||
if ($_POST AND $mmo->values($_POST)->check()) {
|
||||
$mmo->save();
|
||||
|
||||
if ($mmo->saved()) {
|
||||
SystemMessage::add(array(
|
||||
'title'=>_('Method Added'),
|
||||
'type'=>'info',
|
||||
'body'=>sprintf(_('Method %s defined to database'),$mmo->name),
|
||||
));
|
||||
|
||||
Request::instance()->redirect(sprintf('admin/module/edit/%s',$mo->id));
|
||||
|
||||
} else {
|
||||
SystemMessage::add(array(
|
||||
'title'=>_('Method Not Saved'),
|
||||
'type'=>'error',
|
||||
'body'=>sprintf(_('Unable to define Method %s to database?'),$mmo->name),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
$output .= View::factory('module/admin/method_add')
|
||||
->set('module',$mo)
|
||||
->set('method',$mmo);
|
||||
|
||||
Block::add(array(
|
||||
'title'=>sprintf(_('Add Method (%s) to Database for (%s)'),strtoupper($mmo->name),strtoupper($mo->name)),
|
||||
'body'=>$output,
|
||||
));
|
||||
|
||||
$this->template->content = Block::factory();
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit a Module Configuration
|
||||
*
|
||||
* @param int $mid Module ID
|
||||
*/
|
||||
public function action_edit($mid) {
|
||||
$mmo = ORM::factory('module_method',$mid);
|
||||
|
||||
if (! $mmo->loaded()) {
|
||||
SystemMessage::add(array(
|
||||
'title'=>_('Invalid Method ID'),
|
||||
'type'=>'error',
|
||||
'body'=>sprintf(_('Method with ID %s doesnt appear to exist?'),$mid),
|
||||
));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$output = '';
|
||||
|
||||
// The groups that can run this method.
|
||||
$groups = ORM::factory('group');
|
||||
|
||||
if ($_POST) {
|
||||
foreach ($groups->find_all() as $go) {
|
||||
// If the group was defined and no longer
|
||||
if ($mmo->has('group',$go) AND (! isset($_POST['groups']) OR ! in_array($go->id,$_POST['groups']))) {
|
||||
$gm = ORM::factory('group_method',array('method_id'=>$mmo->id,'group_id'=>$go->id));
|
||||
|
||||
if (! $gm->delete())
|
||||
SystemMessage::add(array(
|
||||
'title'=>_('Unable to DELETE Group Method'),
|
||||
'type'=>'error',
|
||||
'body'=>sprintf(_('Unable to delete Group Method for method %s and group %s'),$mmo->name,$go->name),
|
||||
));
|
||||
|
||||
// If the group was not defined and now is
|
||||
} elseif (! $mmo->has('group',$go) AND isset($_POST['groups']) AND in_array($go->id,$_POST['groups'])) {
|
||||
$gm = ORM::factory('group_method')
|
||||
->values(array(
|
||||
'method_id'=>$mmo->id,
|
||||
'group_id'=>$go->id,
|
||||
));
|
||||
|
||||
if (! $gm->check() OR ! $gm->save())
|
||||
SystemMessage::add(array(
|
||||
'title'=>_('Unable to SAVE Group Method'),
|
||||
'type'=>'error',
|
||||
'body'=>sprintf(_('Unable to save Group Method for method %s and group %s'),$mmo->name,$go->name),
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$output .= Form::open();
|
||||
|
||||
$output .= View::factory('module/admin/method_detail_header');
|
||||
foreach ($groups->find_all() as $go) {
|
||||
$output .= View::factory('module/admin/method_detail_body')
|
||||
->set('group',$go)
|
||||
->set('defined',$mmo->has('group',$go));
|
||||
}
|
||||
$output .= View::factory('module/admin/method_detail_footer');
|
||||
|
||||
$output .= '<div>'.Form::submit('submit',_('Update')).'</div>';
|
||||
$output .= Form::close();
|
||||
|
||||
Block::add(array(
|
||||
'title'=>sprintf(_('%s->%s Method'),strtoupper($mmo->module->name),strtoupper($mmo->name)),
|
||||
'body'=>$output,
|
||||
));
|
||||
|
||||
$this->template->content = Block::factory();
|
||||
}
|
||||
}
|
||||
?>
|
52
modules/module/classes/controller/module.php
Normal file
52
modules/module/classes/controller/module.php
Normal file
@@ -0,0 +1,52 @@
|
||||
<?php defined('SYSPATH') or die('No direct access allowed.');
|
||||
|
||||
/**
|
||||
* This class provides MODULE management
|
||||
*
|
||||
* @package lnApp
|
||||
* @subpackage Page/Module
|
||||
* @category Controllers
|
||||
* @author Deon George
|
||||
* @copyright (c) 2010 Deon George
|
||||
* @license http://dev.leenooks.net/license.html
|
||||
*/
|
||||
class Controller_Module extends Controller_TemplateDefault {
|
||||
public $secure_actions = array(
|
||||
'edit'=>TRUE,
|
||||
'list'=>TRUE,
|
||||
'menu'=>TRUE,
|
||||
);
|
||||
|
||||
public function action_menu() {
|
||||
// Redirect us to the admin menu, no user facilities here!
|
||||
Request::instance()->redirect('/admin/module/menu');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the list of methods for a class
|
||||
*/
|
||||
protected function _methods($class) {
|
||||
// Get a list of methods this module has
|
||||
$ch = 'Controller_%s';
|
||||
$methods = array();
|
||||
|
||||
// List of classes where all our methods are, including this one.
|
||||
$classes = Kohana::config('config.method_directory');
|
||||
array_unshift($classes,'');
|
||||
|
||||
foreach ($classes as $c) {
|
||||
$cn = sprintf($ch,$c ? $c.'_'.$class : $class);
|
||||
|
||||
if (class_exists($cn)) {
|
||||
$r = new ReflectionClass($cn);
|
||||
|
||||
foreach ($r->getMethods() as $method)
|
||||
if (preg_match('/^Controller_(.*_)?'.$class.'$/i',$method->class) AND ! preg_match('/^_/',$method->name))
|
||||
array_push($methods,str_replace('action_',($c ? $c.'_' : $c),$method->name));
|
||||
}
|
||||
}
|
||||
|
||||
return $methods;
|
||||
}
|
||||
}
|
||||
?>
|
26
modules/module/classes/model/group/method.php
Normal file
26
modules/module/classes/model/group/method.php
Normal file
@@ -0,0 +1,26 @@
|
||||
<?php defined('SYSPATH') or die('No direct access allowed.');
|
||||
|
||||
/**
|
||||
* OSB Application Module Method Model
|
||||
*
|
||||
* @package OSB
|
||||
* @subpackage Modules
|
||||
* @category Models
|
||||
* @author Deon George
|
||||
* @copyright (c) 2010 Deon George
|
||||
* @license http://dev.leenooks.net/license.html
|
||||
*/
|
||||
class Model_Group_Method extends ORMOSB {
|
||||
// Relationships
|
||||
protected $_has_one = array(
|
||||
'record_id'=>array(),
|
||||
);
|
||||
protected $_belongs_to = array(
|
||||
'group'=>array(),
|
||||
);
|
||||
|
||||
// This module doesnt keep track of column updates automatically
|
||||
protected $_created_column = FALSE;
|
||||
protected $_updated_column = FALSE;
|
||||
}
|
||||
?>
|
37
modules/module/classes/model/module/method.php
Normal file
37
modules/module/classes/model/module/method.php
Normal file
@@ -0,0 +1,37 @@
|
||||
<?php defined('SYSPATH') or die('No direct access allowed.');
|
||||
|
||||
/**
|
||||
* OSB Application Module Method Model
|
||||
*
|
||||
* @package OSB
|
||||
* @subpackage Modules
|
||||
* @category Models
|
||||
* @author Deon George
|
||||
* @copyright (c) 2010 Deon George
|
||||
* @license http://dev.leenooks.net/license.html
|
||||
*/
|
||||
class Model_Module_Method extends ORMOSB {
|
||||
// Relationships
|
||||
protected $_belongs_to = array(
|
||||
'module'=>array(),
|
||||
);
|
||||
protected $_has_one = array(
|
||||
'record_id'=>array(),
|
||||
);
|
||||
protected $_has_many = array(
|
||||
'group'=>array('through'=>'group_method','foreign_key'=>'method_id')
|
||||
);
|
||||
|
||||
protected $_sorting = array(
|
||||
'name'=>'ASC',
|
||||
);
|
||||
|
||||
protected $_formats = array(
|
||||
'menu_display'=>array('StaticList_YesNo::display'=>array()),
|
||||
);
|
||||
|
||||
// This module doesnt keep track of column updates automatically
|
||||
protected $_created_column = FALSE;
|
||||
protected $_updated_column = FALSE;
|
||||
}
|
||||
?>
|
26
modules/module/classes/model/module/method/token.php
Normal file
26
modules/module/classes/model/module/method/token.php
Normal file
@@ -0,0 +1,26 @@
|
||||
<?php defined('SYSPATH') or die('No direct access allowed.');
|
||||
|
||||
/**
|
||||
* OSB Application Module Method Token Model
|
||||
*
|
||||
* @package OSB
|
||||
* @subpackage Modules
|
||||
* @category Models
|
||||
* @author Deon George
|
||||
* @copyright (c) 2010 Deon George
|
||||
* @license http://dev.leenooks.net/license.html
|
||||
*/
|
||||
class Model_Module_Method_Token extends ORMOSB {
|
||||
// Relationships
|
||||
protected $_belongs_to = array(
|
||||
'account'=>array(),
|
||||
'module_method'=>array(),
|
||||
);
|
||||
protected $_has_one = array(
|
||||
'record_id'=>array(),
|
||||
);
|
||||
|
||||
// This module doesnt keep track of column updates automatically
|
||||
protected $_update_column = FALSE;
|
||||
}
|
||||
?>
|
41
modules/module/classes/model/record/id.php
Normal file
41
modules/module/classes/model/record/id.php
Normal file
@@ -0,0 +1,41 @@
|
||||
<?php defined('SYSPATH') or die('No direct access allowed.');
|
||||
|
||||
/**
|
||||
* @package OSB
|
||||
* @subpackage Modules
|
||||
* @category Models
|
||||
* @author Deon George
|
||||
* @copyright (c) 2010 Deon George
|
||||
* @license http://dev.leenooks.net/license.html
|
||||
*/
|
||||
class Model_Record_Id extends ORMOSB {
|
||||
protected $_primary_key = 'module_id';
|
||||
|
||||
// This module doesnt keep track of column updates automatically
|
||||
protected $_created_column = FALSE;
|
||||
protected $_updated_column = FALSE;
|
||||
|
||||
// @todo we need $mid here, since if there is no record, we cant figure out the module that called us.
|
||||
public function next_id($mid) {
|
||||
if (is_null($this->id)) {
|
||||
$this->module_id = $mid;
|
||||
|
||||
// We'll get the next ID as the MAX(id) of the table
|
||||
$mo = ORM::factory('module',$mid);
|
||||
|
||||
$max = DB::select(array('MAX(id)','id'))
|
||||
->from($mo->name)
|
||||
->where('site_id','=',Config::siteid());
|
||||
|
||||
$this->id = $max->execute()->get('id');
|
||||
}
|
||||
|
||||
$this->id++;
|
||||
|
||||
if (! $this->save())
|
||||
throw new Koahan_Exception(_('Unable to increase ID for :table'),array(':table'=>$mid));
|
||||
|
||||
return $this->id;
|
||||
}
|
||||
}
|
||||
?>
|
53
modules/module/classes/module/method.php
Normal file
53
modules/module/classes/module/method.php
Normal file
@@ -0,0 +1,53 @@
|
||||
<?php defined('SYSPATH') or die('No direct access allowed.');
|
||||
|
||||
/**
|
||||
* This class provides access to module configuration.
|
||||
*
|
||||
* @package OSB
|
||||
* @subpackage Module
|
||||
* @category Helpers
|
||||
* @author Deon George
|
||||
* @copyright (c) 2010 Deon George
|
||||
* @license http://dev.leenooks.net/license.html
|
||||
*/
|
||||
class Module_Method {
|
||||
/**
|
||||
* Display the modules available for a group
|
||||
*/
|
||||
public static function groupmodules($gid) {
|
||||
$modules = array();
|
||||
// @todo the database prefix needs to be added to this query
|
||||
$query = DB::query(Database::SELECT,'SELECT A.name AS module,A.id AS MOD_ID,B.name AS parent,B.id AS PARENT_ID FROM ab_module A LEFT JOIN ab_module B ON (A.parent_id=B.id AND A.site_id=B.site_id), ab_module_method C, ab_group_method D WHERE A.id=C.module_id AND A.site_id=C.site_id AND D.method_id=C.id AND D.site_id=C.site_id AND D.group_id=:gid AND A.menu_display=1 AND A.site_id=:siteid GROUP BY module')
|
||||
->param(':siteid',Config::siteid())
|
||||
->param(':gid',$gid);
|
||||
|
||||
foreach ($query->execute() as $record) {
|
||||
$modules[$record['module']]['id'] = $record['MOD_ID'];
|
||||
$modules[$record['module']]['parent_id'] = $record['PARENT_ID'];
|
||||
$modules[$record['module']]['parent'] = $record['parent'];
|
||||
}
|
||||
|
||||
return $modules;
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the methods available for a group
|
||||
*/
|
||||
public static function groupmethods($gid,$mid) {
|
||||
$methods = array();
|
||||
// @todo the database prefix needs to be added to this query
|
||||
$query = DB::query(Database::SELECT,'SELECT C.id,C.name AS METHOD,A.name AS MODULE,C.page FROM ab_module A, ab_module_method C, ab_group_method D WHERE A.id=C.module_id AND A.site_id=C.site_id AND D.method_id=C.id AND D.site_id=C.site_id AND D.group_id=:gid AND C.module_id=:mid AND C.menu_display=1 AND A.site_id=:siteid')
|
||||
->param(':siteid',Config::siteid())
|
||||
->param(':gid',$gid)
|
||||
->param(':mid',$mid);
|
||||
|
||||
foreach ($query->execute() as $record) {
|
||||
$methods[$record['METHOD']]['id'] = $record['id'];
|
||||
$methods[$record['METHOD']]['page'] = $record['page'];
|
||||
$methods[$record['METHOD']]['module'] = $record['MODULE'];
|
||||
}
|
||||
|
||||
return $methods;
|
||||
}
|
||||
}
|
||||
?>
|
@@ -32,8 +32,8 @@ class module extends OSB_module {
|
||||
/**
|
||||
* Initialise the module
|
||||
*/
|
||||
public function __construct() {
|
||||
parent::__construct();
|
||||
public function __construct($id=null) {
|
||||
parent::__construct($id);
|
||||
|
||||
$this->dev_inst_excl = array(
|
||||
'staff','staff_department',
|
||||
@@ -239,6 +239,7 @@ class module extends OSB_module {
|
||||
$dependancy = sprintf('%s,%s',$parent,$install['install']['module_properties']['dependancy']);
|
||||
else
|
||||
$dependancy = $parent;
|
||||
$dependancy = preg_replace('/,$/','',$dependancy);
|
||||
|
||||
if ($dependancy) {
|
||||
if (preg_match('/,/', $dependancy))
|
||||
|
4
modules/module/views/module/admin/list_body.php
Normal file
4
modules/module/views/module/admin/list_body.php
Normal file
@@ -0,0 +1,4 @@
|
||||
<tr>
|
||||
<td><a href="<?php echo URL::site(sprintf('/admin/module/edit/%s',$module->id)); ?>" alt=""><?php echo $module->name; ?></a></td>
|
||||
<td><?php echo $module->display('status'); ?></td>
|
||||
</tr>
|
1
modules/module/views/module/admin/list_footer.php
Normal file
1
modules/module/views/module/admin/list_footer.php
Normal file
@@ -0,0 +1 @@
|
||||
</table>
|
6
modules/module/views/module/admin/list_header.php
Normal file
6
modules/module/views/module/admin/list_header.php
Normal file
@@ -0,0 +1,6 @@
|
||||
<!-- //@todo Translation required -->
|
||||
<table class="box-left">
|
||||
<tr class="head">
|
||||
<td>Module</td>
|
||||
<td>Active</td>
|
||||
</tr>
|
21
modules/module/views/module/admin/method_add.php
Normal file
21
modules/module/views/module/admin/method_add.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php echo Form::open(); ?>
|
||||
<table>
|
||||
<tr>
|
||||
<td class="head">Module</td>
|
||||
<td><?php echo $module->name; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="head">Name</td>
|
||||
<td><?php echo $method->name; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="head">Notes</td>
|
||||
<td><?php echo Form::input('notes',$method->name); ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="head">Menu Display</td>
|
||||
<td><?php echo StaticList_YesNo::form('menu_display',0); ?></td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php echo Form::submit('submit',_('Add')); ?>
|
||||
<?php echo Form::close(); ?>
|
8
modules/module/views/module/admin/method_detail_body.php
Normal file
8
modules/module/views/module/admin/method_detail_body.php
Normal file
@@ -0,0 +1,8 @@
|
||||
<tr>
|
||||
<td>
|
||||
<a href="<?php echo URL::site(sprintf('/admin/group/edit/%s',$group->id)); ?>"><?php echo $group->display('name'); ?></a>
|
||||
</td>
|
||||
<td><?php echo $group->display('notes'); ?></td>
|
||||
<td><?php echo $group->display('status'); ?></td>
|
||||
<td><?php echo Form::checkbox('groups[]',$group->id,$defined); ?></td>
|
||||
</tr>
|
@@ -0,0 +1 @@
|
||||
</table>
|
@@ -0,0 +1,8 @@
|
||||
<!-- //@todo Translation required -->
|
||||
<table class="box-left">
|
||||
<tr class="head">
|
||||
<td>Method</td>
|
||||
<td>Notes</td>
|
||||
<td>Group Active</td>
|
||||
<td>Method Enabled</td>
|
||||
</tr>
|
11
modules/module/views/module/admin/method_list_body.php
Normal file
11
modules/module/views/module/admin/method_list_body.php
Normal file
@@ -0,0 +1,11 @@
|
||||
<tr>
|
||||
<td>
|
||||
<?php if ($defined) { ?>
|
||||
<a href="<?php echo URL::site(sprintf('/admin/module_method/edit/%s',$method->id)); ?>" alt=""><?php echo $method->name; ?></a>
|
||||
<?php } else { ?>
|
||||
<a href="<?php echo URL::site(sprintf('/admin/module_method/add/%s/%s',$module->id,$method->name)); ?>" alt=""><?php echo $method->name; ?></a>
|
||||
<?php } ?>
|
||||
</td>
|
||||
<td><?php echo $method->display('notes'); ?></td>
|
||||
<td><?php echo $method->display('menu_display'); ?></td>
|
||||
</tr>
|
1
modules/module/views/module/admin/method_list_footer.php
Normal file
1
modules/module/views/module/admin/method_list_footer.php
Normal file
@@ -0,0 +1 @@
|
||||
</table>
|
7
modules/module/views/module/admin/method_list_header.php
Normal file
7
modules/module/views/module/admin/method_list_header.php
Normal file
@@ -0,0 +1,7 @@
|
||||
<!-- //@todo Translation required -->
|
||||
<table class="box-left">
|
||||
<tr class="head">
|
||||
<td>Method</td>
|
||||
<td>Notes</td>
|
||||
<td>Menu</td>
|
||||
</tr>
|
3
modules/module/views/module/admin/method_list_spacer.php
Normal file
3
modules/module/views/module/admin/method_list_spacer.php
Normal file
@@ -0,0 +1,3 @@
|
||||
<tr class="spacer">
|
||||
<td> </td>
|
||||
</tr>
|
Reference in New Issue
Block a user