Merge branch 'master' of github.com:easysoft/zentaopms
Conflicts: module/common/lang/en.php module/common/lang/menuOrder.php module/common/lang/zh-cn.php
This commit is contained in:
@@ -278,13 +278,14 @@ $lang->user->menu = $lang->company->menu;
|
||||
$lang->admin = new stdclass();
|
||||
$lang->admin->menu = new stdclass();
|
||||
$lang->admin->menu->index = array('link' => 'Index|admin|index');
|
||||
$lang->admin->menu->extension = array('link' => 'Extension|extension|browse', 'subModule' => 'extension,editor');
|
||||
$lang->admin->menu->extension = array('link' => 'Extension|extension|browse', 'subModule' => 'extension');
|
||||
$lang->admin->menu->custom = array('link' => 'Custom|custom|index', 'subModule' => 'custom');
|
||||
$lang->admin->menu->mail = array('link' => 'Email|mail|index', 'subModule' => 'mail');
|
||||
$lang->admin->menu->convert = array('link' => 'Import|convert|index', 'subModule' => 'convert');
|
||||
$lang->admin->menu->backup = array('link' => 'Backup|backup|index', 'subModule' => 'backup');
|
||||
$lang->admin->menu->cron = array('link' => 'Cron|cron|index', 'subModule' => 'cron');
|
||||
$lang->admin->menu->trashes = array('link' => 'Trash|action|trash', 'subModule' => 'action');
|
||||
$lang->admin->menu->dev = array('link' => 'Develop|dev|api', 'alias' => 'db', 'subModule' => 'dev,editor');
|
||||
|
||||
$lang->convert = new stdclass();
|
||||
$lang->upgrade = new stdclass();
|
||||
@@ -295,6 +296,7 @@ $lang->custom = new stdclass();
|
||||
$lang->editor = new stdclass();
|
||||
$lang->mail = new stdclass();
|
||||
$lang->cron = new stdclass();
|
||||
$lang->dev = new stdclass();
|
||||
|
||||
$lang->convert->menu = $lang->admin->menu;
|
||||
$lang->upgrade->menu = $lang->admin->menu;
|
||||
@@ -305,6 +307,7 @@ $lang->extension->menu = $lang->admin->menu;
|
||||
$lang->custom->menu = $lang->admin->menu;
|
||||
$lang->editor->menu = $lang->admin->menu;
|
||||
$lang->mail->menu = $lang->admin->menu;
|
||||
$lang->dev->menu = $lang->admin->menu;
|
||||
|
||||
/* Groups. */
|
||||
$lang->menugroup = new stdclass();
|
||||
@@ -330,6 +333,7 @@ $lang->menugroup->extension = 'admin';
|
||||
$lang->menugroup->custom = 'admin';
|
||||
$lang->menugroup->editor = 'admin';
|
||||
$lang->menugroup->mail = 'admin';
|
||||
$lang->menugroup->dev = 'admin';
|
||||
|
||||
/* Error info. */
|
||||
$lang->error = new stdclass();
|
||||
|
||||
@@ -114,7 +114,8 @@ $lang->admin->menuOrder[30] = 'custom';
|
||||
$lang->admin->menuOrder[40] = 'convert';
|
||||
$lang->admin->menuOrder[45] = 'cron';
|
||||
$lang->admin->menuOrder[50] = 'backup';
|
||||
$lang->admin->menuOrder[55] = 'trashes';
|
||||
$lang->admin->menuOrder[55] = 'dev';
|
||||
$lang->admin->menuOrder[60] = 'trashes';
|
||||
$lang->convert->menuOrder = $lang->admin->menuOrder;
|
||||
$lang->upgrade->menuOrder = $lang->admin->menuOrder;
|
||||
$lang->action->menuOrder = $lang->admin->menuOrder;
|
||||
@@ -125,3 +126,4 @@ $lang->mail->menuOrder = $lang->admin->menuOrder;
|
||||
$lang->custom->menuOrder = $lang->admin->menuOrder;
|
||||
$lang->backup->menuOrder = $lang->admin->menuOrder;
|
||||
$lang->cron->menuOrder = $lang->admin->menuOrder;
|
||||
$lang->dev->menuOrder = $lang->admin->menuOrder;
|
||||
|
||||
@@ -278,13 +278,14 @@ $lang->user->menu = $lang->company->menu;
|
||||
$lang->admin = new stdclass();
|
||||
$lang->admin->menu = new stdclass();
|
||||
$lang->admin->menu->index = array('link' => '首页|admin|index');
|
||||
$lang->admin->menu->extension = array('link' => '扩展|extension|browse', 'subModule' => 'extension,editor');
|
||||
$lang->admin->menu->extension = array('link' => '插件|extension|browse', 'subModule' => 'extension');
|
||||
$lang->admin->menu->custom = array('link' => '自定义|custom|index', 'subModule' => 'custom');
|
||||
$lang->admin->menu->mail = array('link' => '发信|mail|index', 'subModule' => 'mail');
|
||||
$lang->admin->menu->convert = array('link' => '导入|convert|index', 'subModule' => 'convert');
|
||||
$lang->admin->menu->backup = array('link' => '备份|backup|index', 'subModule' => 'backup');
|
||||
$lang->admin->menu->cron = array('link' => '计划任务|cron|index', 'subModule' => 'cron');
|
||||
$lang->admin->menu->trashes = array('link' => '回收站|action|trash', 'subModule' => 'action');
|
||||
$lang->admin->menu->dev = array('link' => '二次开发|dev|api', 'alias' => 'db', 'subModule' => 'dev,editor');
|
||||
|
||||
$lang->convert = new stdclass();
|
||||
$lang->upgrade = new stdclass();
|
||||
@@ -295,6 +296,7 @@ $lang->custom = new stdclass();
|
||||
$lang->editor = new stdclass();
|
||||
$lang->mail = new stdclass();
|
||||
$lang->cron = new stdclass();
|
||||
$lang->dev = new stdclass();
|
||||
|
||||
$lang->convert->menu = $lang->admin->menu;
|
||||
$lang->upgrade->menu = $lang->admin->menu;
|
||||
@@ -305,6 +307,7 @@ $lang->extension->menu = $lang->admin->menu;
|
||||
$lang->custom->menu = $lang->admin->menu;
|
||||
$lang->editor->menu = $lang->admin->menu;
|
||||
$lang->mail->menu = $lang->admin->menu;
|
||||
$lang->dev->menu = $lang->admin->menu;
|
||||
|
||||
/* 菜单分组。*/
|
||||
$lang->menugroup = new stdclass();
|
||||
@@ -330,6 +333,7 @@ $lang->menugroup->extension = 'admin';
|
||||
$lang->menugroup->custom = 'admin';
|
||||
$lang->menugroup->editor = 'admin';
|
||||
$lang->menugroup->mail = 'admin';
|
||||
$lang->menugroup->dev = 'admin';
|
||||
|
||||
/* 错误提示信息。*/
|
||||
$lang->error = new stdclass();
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
class dev extends control
|
||||
{
|
||||
public function api()
|
||||
{
|
||||
$this->view->tables = $this->dev->getTables();
|
||||
$this->view->tab = 'api';
|
||||
$this->view->position[] = html::a(inlink('api'), $this->lang->dev->common);
|
||||
$this->view->position[] = $this->lang->dev->api;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
public function db($table = '')
|
||||
{
|
||||
$this->view->tables = $this->dev->getTables();
|
||||
$this->view->tab = 'db';
|
||||
$this->view->selectedTable = $table;
|
||||
$this->view->tab = 'db';
|
||||
$this->view->fields = $table ? $this->dev->descTable($table) : array();
|
||||
$this->view->position[] = html::a(inlink('api'), $this->lang->dev->common);
|
||||
$this->view->position[] = $this->lang->dev->db;
|
||||
$this->display();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
$lang->dev->common = '二次开发';
|
||||
$lang->dev->api = 'API';
|
||||
$lang->dev->db = '数据库';
|
||||
$lang->dev->editor = '编辑器';
|
||||
$lang->dev->dbList = '数据库';
|
||||
|
||||
$lang->dev->fields = array();
|
||||
$lang->dev->fields['id'] = '序号';
|
||||
$lang->dev->fields['name'] = '字段';
|
||||
$lang->dev->fields['desc'] = '描述';
|
||||
$lang->dev->fields['type'] = '类型';
|
||||
$lang->dev->fields['length'] = '长度';
|
||||
$lang->dev->fields['null'] = '是否可空';
|
||||
@@ -0,0 +1,101 @@
|
||||
<?php
|
||||
class devModel extends model
|
||||
{
|
||||
public function getTables()
|
||||
{
|
||||
$this->dbh->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER);
|
||||
$sql = "SHOW TABLES";
|
||||
$tables = array();
|
||||
$datatables = $this->dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC);
|
||||
foreach($datatables as $table)
|
||||
{
|
||||
$tables[current($table)] = current($table);
|
||||
}
|
||||
return $tables;
|
||||
}
|
||||
|
||||
public function descTable($table)
|
||||
{
|
||||
$module = substr($table, strpos($table, '_') + 1);
|
||||
try
|
||||
{
|
||||
if($module == 'case') $module = 'testcase';
|
||||
$this->app->loadLang($module);
|
||||
}
|
||||
catch(PDOException $e)
|
||||
{
|
||||
$this->lang->$module = new stdclass();
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
$this->dbh->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER);
|
||||
$sql = "DESC $table";
|
||||
$rawFields = $this->dbh->query($sql)->fetchAll();
|
||||
$this->dbh->setAttribute(PDO::ATTR_CASE, PDO::CASE_NATURAL);
|
||||
}
|
||||
catch (PDOException $e)
|
||||
{
|
||||
$this->sqlError($e);
|
||||
}
|
||||
foreach($rawFields as $rawField)
|
||||
{
|
||||
$firstPOS = strpos($rawField->type, '(');
|
||||
$type = substr($rawField->type, 0, $firstPOS > 0 ? $firstPOS : strlen($rawField->type));
|
||||
$type = str_replace(array('big', 'small', 'medium', 'tiny'), '', $type);
|
||||
$field = array();
|
||||
$field['name'] = isset($this->lang->$module->{$rawField->field}) ? $this->lang->$module->{$rawField->field} : '';
|
||||
$field['null'] = $rawField->null;
|
||||
|
||||
if($type == 'enum' or $type == 'set')
|
||||
{
|
||||
$rangeBegin = $firstPOS + 2; // Remove the first quote.
|
||||
$rangeEnd = strrpos($rawField->type, ')') - 1; // Remove the last quote.
|
||||
$range = substr($rawField->type, $rangeBegin, $rangeEnd - $rangeBegin);
|
||||
$field['type'] = $rawField->type;
|
||||
$field['options']['enum'] = str_replace("','", ',', $range);
|
||||
}
|
||||
elseif($type == 'varchar')
|
||||
{
|
||||
$begin = $firstPOS + 1;
|
||||
$end = strpos($rawField->type, ')', $begin);
|
||||
$length = substr($rawField->type, $begin, $end - $begin);
|
||||
$field['type'] = 'varchar';
|
||||
$field['options']['max'] = $length;
|
||||
$field['options']['min'] = 0;
|
||||
}
|
||||
elseif($type == 'char')
|
||||
{
|
||||
$begin = $firstPOS + 1;
|
||||
$end = strpos($rawField->type, ')', $begin);
|
||||
$length = substr($rawField->type, $begin, $end - $begin);
|
||||
$field['type'] = 'char';
|
||||
$field['options']['max'] = $length;
|
||||
$field['options']['min'] = 0;
|
||||
}
|
||||
elseif($type == 'int')
|
||||
{
|
||||
$begin = $firstPOS + 1;
|
||||
$end = strpos($rawField->type, ')', $begin);
|
||||
$length = substr($rawField->type, $begin, $end - $begin);
|
||||
$field['type'] = 'int';
|
||||
$field['options']['max'] = $length;
|
||||
$field['options']['min'] = 0;
|
||||
}
|
||||
elseif($type == 'float' or $type == 'double')
|
||||
{
|
||||
$field['type'] = 'float';
|
||||
}
|
||||
elseif($type == 'date')
|
||||
{
|
||||
$field['type'] = 'date';
|
||||
}
|
||||
else
|
||||
{
|
||||
$field['type'] = $type;
|
||||
}
|
||||
$fields[$rawField->field] = $field;
|
||||
}
|
||||
return $fields;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<?php include 'header.html.php';?>
|
||||
@@ -0,0 +1,43 @@
|
||||
<?php include 'header.html.php';?>
|
||||
<div class='side'>
|
||||
<div class="panel panel-sm with-list">
|
||||
<div class='panel-heading'><i class='icon-list'></i> <strong><?php echo $lang->dev->dbList?></strong></div>
|
||||
<?php foreach($tables as $table):?>
|
||||
<?php $active = ($table == $selectedTable) ? 'active' : '';?>
|
||||
<?php echo html::a(inlink('db', "table=$table"), $table, '', "class='list-group-item $active'");?>
|
||||
<?php endforeach;?>
|
||||
</div>
|
||||
</div>
|
||||
<div class='main'>
|
||||
<?php if($selectedTable):?>
|
||||
<table class="table table-condensed table-hover table-striped tablesorter table-fixed">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class='text-left' colspan='6'><?php echo $selectedTable?></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='w-id'><?php echo $lang->dev->fields['id']?></th>
|
||||
<th><?php echo $lang->dev->fields['name']?></th>
|
||||
<th><?php echo $lang->dev->fields['desc']?></th>
|
||||
<th><?php echo $lang->dev->fields['type']?></th>
|
||||
<th><?php echo $lang->dev->fields['length']?></th>
|
||||
<th><?php echo $lang->dev->fields['null']?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php $i = 1;?>
|
||||
<?php foreach($fields as $key => $field):?>
|
||||
<tr>
|
||||
<td><?php echo $i;?></td>
|
||||
<td><?php echo $key;?></td>
|
||||
<td><?php echo $field['name'];?></td>
|
||||
<td><?php echo $field['type'];?></td>
|
||||
<td><?php echo isset($field['options']['max']) ? $field['options']['max'] : '';?></td>
|
||||
<td><?php echo $field['null'];?></td>
|
||||
</tr>
|
||||
<?php $i++; endforeach?>
|
||||
</tbody>
|
||||
</table>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<div id='featurebar'>
|
||||
<ul class='nav'>
|
||||
<?php
|
||||
echo '<li id="api">'; common::printLink('dev', 'api', "", $lang->dev->api); echo '</li>';
|
||||
echo '<li id="db">'; common::printLink('dev', 'db', "", $lang->dev->db); echo '</li>';
|
||||
echo "<li id='editor'>"; common::printLink('editor', 'index', 'type=editor', $lang->dev->editor); echo '</li>';
|
||||
?>
|
||||
</ul>
|
||||
</div>
|
||||
<script>$('#<?php echo $tab;?>').addClass('active')</script>
|
||||
@@ -19,7 +19,7 @@ class editor extends control
|
||||
*/
|
||||
public function index($type = 'editor')
|
||||
{
|
||||
$this->app->loadLang('extension');
|
||||
$this->app->loadLang('dev');
|
||||
$this->view->title = $this->lang->editor->common;
|
||||
$this->view->position[] = $this->lang->editor->common;
|
||||
$this->view->moduleList = $this->editor->getModules();
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../extension/view/header.html.php';?>
|
||||
<?php include '../../dev/view/header.html.php';?>
|
||||
<table class='w-p100'>
|
||||
<tr>
|
||||
<td class='w-200px'>
|
||||
|
||||
@@ -11,11 +11,6 @@
|
||||
*/
|
||||
class extension extends control
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->app->loadLang('editor');
|
||||
}
|
||||
/**
|
||||
* Browse extensions.
|
||||
*
|
||||
|
||||
@@ -2,13 +2,12 @@
|
||||
<?php include '../../common/view/tablesorter.html.php';?>
|
||||
<div id='featurebar'>
|
||||
<ul class='nav'>
|
||||
<?php
|
||||
echo '<li id="installed">'; common::printLink('extension', 'browse', "type=installed", $lang->extension->installed); echo '</li>';
|
||||
echo '<li id="deactivated">'; common::printLink('extension', 'browse', "type=deactivated", $lang->extension->deactivated); echo '</li>';
|
||||
echo '<li id="available">'; common::printLink('extension', 'browse', "type=available", $lang->extension->available ); echo '</li>';
|
||||
echo '<li>'; common::printLink('extension', 'upload', '', $lang->extension->upload, '', "class='iframe'"); echo '</li>';
|
||||
echo "<li id='editor'>"; common::printLink('editor', 'index', 'type=editor', $lang->editor->common . '&' . $lang->editor->api); echo '</li>';
|
||||
?>
|
||||
<?php
|
||||
echo '<li id="installed">'; common::printLink('extension', 'browse', "type=installed", $lang->extension->installed); echo '</li>';
|
||||
echo '<li id="deactivated">'; common::printLink('extension', 'browse', "type=deactivated", $lang->extension->deactivated); echo '</li>';
|
||||
echo '<li id="available">'; common::printLink('extension', 'browse', "type=available", $lang->extension->available ); echo '</li>';
|
||||
echo '<li>'; common::printLink('extension', 'upload', '', $lang->extension->upload, '', "class='iframe'"); echo '</li>';
|
||||
?>
|
||||
</ul>
|
||||
<div class='actions'>
|
||||
<div class='btn-group'><?php common::printLink('extension', 'obtain', '', '<i class="icon-download-alt"></i> ' . $lang->extension->obtain, '', "class='btn'");?></div>
|
||||
|
||||
+3
-11
@@ -786,8 +786,8 @@ class userModel extends model
|
||||
*/
|
||||
public function getDataInJSON($user)
|
||||
{
|
||||
$data = array();
|
||||
$data['user'] = new stdclass();
|
||||
$data = array();
|
||||
$data['user'] = new stdclass();
|
||||
$data['user']->id = $user->id;
|
||||
$data['user']->account = $user->account;
|
||||
$data['user']->email = $user->email;
|
||||
@@ -795,15 +795,7 @@ class userModel extends model
|
||||
$data['user']->gender = $user->gender;
|
||||
$data['user']->dept = $user->dept;
|
||||
$data['user']->role = $user->role;
|
||||
|
||||
$this->app->loadLang('todo');
|
||||
$this->app->loadLang('task');
|
||||
$this->app->loadLang('bug');
|
||||
$this->app->loadLang('story');
|
||||
$data['todoStatus'] = $this->lang->todo->statusList;
|
||||
$data['taskStatus'] = $this->lang->task->statusList;
|
||||
$data['bugStatus'] = $this->lang->bug->statusList;
|
||||
$data['storyStatus'] = $this->lang->story->statusList;
|
||||
$data['user']->company = $this->app->company->name;
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user