* change copyright time.
This commit is contained in:
@@ -1,60 +1,60 @@
|
||||
<?php
|
||||
/**
|
||||
* The control file of common module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 QingDao Nature Easy Soft Network Technology Co,LTD (www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chen congzhi <congzhi@cnezsoft.com>
|
||||
* @package common
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
include '../../config/config.php';
|
||||
|
||||
$modules = array();
|
||||
$moduleRoot = realpath('../../module/') . '/';
|
||||
|
||||
if(is_dir($moduleRoot))
|
||||
{
|
||||
if($dh = opendir($moduleRoot))
|
||||
{
|
||||
while($module = readdir($dh))
|
||||
{
|
||||
if(strpos(basename($module), '.') === false) $modules[] = $module;
|
||||
}
|
||||
closedir($dh);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
die("The module you input does not exist. \n");
|
||||
}
|
||||
|
||||
foreach($modules as $module)
|
||||
{
|
||||
/* 设定各个目录。*/
|
||||
$extRoot = $moduleRoot . DIRECTORY_SEPARATOR. $module . DIRECTORY_SEPARATOR . 'ext';
|
||||
$extControl = $extRoot . DIRECTORY_SEPARATOR . 'control';
|
||||
$extModel = $extRoot . DIRECTORY_SEPARATOR . 'model';
|
||||
$extView = $extRoot . DIRECTORY_SEPARATOR . 'view';
|
||||
$extConfig = $extRoot . DIRECTORY_SEPARATOR . 'config';
|
||||
$extLang = $extRoot . DIRECTORY_SEPARATOR . 'lang' . DIRECTORY_SEPARATOR;
|
||||
|
||||
/* 建立各个扩展目录 */
|
||||
if(!file_exists($extRoot)) mkdir($extRoot, 0777);
|
||||
if(!file_exists($extControl)) mkdir($extControl, 0777);
|
||||
if(!file_exists($extModel)) mkdir($extModel, 0777);
|
||||
if(!file_exists($extView)) mkdir($extView, 0777);
|
||||
if(!file_exists($extConfig)) mkdir($extConfig, 0777);
|
||||
if(!file_exists($extLang)) mkdir($extLang, 0777);
|
||||
|
||||
/* 创建语言目录。*/
|
||||
$langs = array_keys($config->langs);
|
||||
foreach($langs as $lang)
|
||||
{
|
||||
$langPath = $extLang . $lang;
|
||||
if(!file_exists($langPath)) mkdir($langPath, 0777);
|
||||
}
|
||||
|
||||
echo "init $module ... \n";
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The control file of common module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 QingDao Nature Easy Soft Network Technology Co,LTD (www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chen congzhi <congzhi@cnezsoft.com>
|
||||
* @package common
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
include '../../config/config.php';
|
||||
|
||||
$modules = array();
|
||||
$moduleRoot = realpath('../../module/') . '/';
|
||||
|
||||
if(is_dir($moduleRoot))
|
||||
{
|
||||
if($dh = opendir($moduleRoot))
|
||||
{
|
||||
while($module = readdir($dh))
|
||||
{
|
||||
if(strpos(basename($module), '.') === false) $modules[] = $module;
|
||||
}
|
||||
closedir($dh);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
die("The module you input does not exist. \n");
|
||||
}
|
||||
|
||||
foreach($modules as $module)
|
||||
{
|
||||
/* 设定各个目录。*/
|
||||
$extRoot = $moduleRoot . DIRECTORY_SEPARATOR. $module . DIRECTORY_SEPARATOR . 'ext';
|
||||
$extControl = $extRoot . DIRECTORY_SEPARATOR . 'control';
|
||||
$extModel = $extRoot . DIRECTORY_SEPARATOR . 'model';
|
||||
$extView = $extRoot . DIRECTORY_SEPARATOR . 'view';
|
||||
$extConfig = $extRoot . DIRECTORY_SEPARATOR . 'config';
|
||||
$extLang = $extRoot . DIRECTORY_SEPARATOR . 'lang' . DIRECTORY_SEPARATOR;
|
||||
|
||||
/* 建立各个扩展目录 */
|
||||
if(!file_exists($extRoot)) mkdir($extRoot, 0777);
|
||||
if(!file_exists($extControl)) mkdir($extControl, 0777);
|
||||
if(!file_exists($extModel)) mkdir($extModel, 0777);
|
||||
if(!file_exists($extView)) mkdir($extView, 0777);
|
||||
if(!file_exists($extConfig)) mkdir($extConfig, 0777);
|
||||
if(!file_exists($extLang)) mkdir($extLang, 0777);
|
||||
|
||||
/* 创建语言目录。*/
|
||||
$langs = array_keys($config->langs);
|
||||
foreach($langs as $lang)
|
||||
{
|
||||
$langPath = $extLang . $lang;
|
||||
if(!file_exists($langPath)) mkdir($langPath, 0777);
|
||||
}
|
||||
|
||||
echo "init $module ... \n";
|
||||
}
|
||||
|
||||
124
bin/ztcli
124
bin/ztcli
@@ -1,62 +1,62 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
/**
|
||||
* 禅道系统命令行访问入口。使用方法:http://www.zentao.net/help-read-78899.html
|
||||
* The cli router file of zentaopms.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 QingDao Nature Easy Soft Network Technology Co,LTD (www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bin
|
||||
* @version $Id$
|
||||
* @link http://www.ZenTaoPMS.com
|
||||
*/
|
||||
error_reporting(E_ALL ^ E_NOTICE);
|
||||
define('IN_SHELL', true);
|
||||
|
||||
/* Judge the args. */
|
||||
if($argc != 2) die('Usage: ' . basename(__FILE__) . " <request>\n");
|
||||
|
||||
/* Parse the request into params. */
|
||||
$request = parse_url(trim($argv[1]));
|
||||
$_SERVER['HTTP_HOST'] = $request['host'];
|
||||
|
||||
/* Load the framework. */
|
||||
chdir(dirname(dirname(__FILE__)));
|
||||
include './framework/router.class.php';
|
||||
include './framework/control.class.php';
|
||||
include './framework/model.class.php';
|
||||
include './framework/helper.class.php';
|
||||
include './config/config.php';
|
||||
|
||||
if($config->requestType == 'PATH_INFO')
|
||||
{
|
||||
$path = pathinfo($request['path']);
|
||||
if(strpos($path['basename'], $config->requestFix))
|
||||
{
|
||||
$_SERVER['PATH_INFO'] = $path['basename'];
|
||||
}
|
||||
else
|
||||
{
|
||||
if(is_dir('./module/' . $path['basename']))
|
||||
{
|
||||
$_SERVER['PATH_INFO'] = $path['basename'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$_SERVER['PATH_INFO'] = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
parse_str($request['query'], $_GET);
|
||||
$_SERVER['SCRIPT_NAME'] = $_SERVER['HTTP_HOST'] . 'index.php';
|
||||
$_SERVER['REQUEST_URI'] = isset($request['query']) ? $request['query'] : '';
|
||||
}
|
||||
|
||||
/* Instance the app and run it. */
|
||||
$app = router::createApp('pms', dirname(dirname(__FILE__)));
|
||||
$common = $app->loadCommon();
|
||||
$app->parseRequest();
|
||||
$app->loadModule();
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
/**
|
||||
* 禅道系统命令行访问入口。使用方法:http://www.zentao.net/help-read-78899.html
|
||||
* The cli router file of zentaopms.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 QingDao Nature Easy Soft Network Technology Co,LTD (www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bin
|
||||
* @version $Id$
|
||||
* @link http://www.ZenTaoPMS.com
|
||||
*/
|
||||
error_reporting(E_ALL ^ E_NOTICE);
|
||||
define('IN_SHELL', true);
|
||||
|
||||
/* Judge the args. */
|
||||
if($argc != 2) die('Usage: ' . basename(__FILE__) . " <request>\n");
|
||||
|
||||
/* Parse the request into params. */
|
||||
$request = parse_url(trim($argv[1]));
|
||||
$_SERVER['HTTP_HOST'] = $request['host'];
|
||||
|
||||
/* Load the framework. */
|
||||
chdir(dirname(dirname(__FILE__)));
|
||||
include './framework/router.class.php';
|
||||
include './framework/control.class.php';
|
||||
include './framework/model.class.php';
|
||||
include './framework/helper.class.php';
|
||||
include './config/config.php';
|
||||
|
||||
if($config->requestType == 'PATH_INFO')
|
||||
{
|
||||
$path = pathinfo($request['path']);
|
||||
if(strpos($path['basename'], $config->requestFix))
|
||||
{
|
||||
$_SERVER['PATH_INFO'] = $path['basename'];
|
||||
}
|
||||
else
|
||||
{
|
||||
if(is_dir('./module/' . $path['basename']))
|
||||
{
|
||||
$_SERVER['PATH_INFO'] = $path['basename'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$_SERVER['PATH_INFO'] = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
parse_str($request['query'], $_GET);
|
||||
$_SERVER['SCRIPT_NAME'] = $_SERVER['HTTP_HOST'] . 'index.php';
|
||||
$_SERVER['REQUEST_URI'] = isset($request['query']) ? $request['query'] : '';
|
||||
}
|
||||
|
||||
/* Instance the app and run it. */
|
||||
$app = router::createApp('pms', dirname(dirname(__FILE__)));
|
||||
$common = $app->loadCommon();
|
||||
$app->parseRequest();
|
||||
$app->loadModule();
|
||||
|
||||
@@ -1,144 +1,144 @@
|
||||
<?php
|
||||
/**
|
||||
* The config file of ZenTaoPMS.
|
||||
*
|
||||
* Don't modify this file directly, copy the item to my.php and change it.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 QingDao Nature Easy Soft Network Technology Co,LTD (www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package config
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* Basic settings. */
|
||||
$config = new config();
|
||||
$config->version = '4.0.beta2'; // The version of zentaopms. Don't change it.
|
||||
$config->encoding = 'UTF-8'; // The encoding of zentaopms.
|
||||
$config->cookieLife = time() + 2592000; // The cookie life time.
|
||||
$config->timezone = 'Asia/Shanghai'; // The time zone setting, for more see http://www.php.net/manual/en/timezones.php
|
||||
$config->webRoot = ''; // The root path of the pms.
|
||||
|
||||
/* The request settings. */
|
||||
$config->requestType = 'PATH_INFO'; // The request type: PATH_INFO|GET, if PATH_INFO, must use url rewrite.
|
||||
$config->pathType = 'clean'; // If the request type is PATH_INFO, the path type.
|
||||
$config->requestFix = '-'; // The divider in the url when PATH_INFO.
|
||||
$config->moduleVar = 'm'; // requestType=GET: the module var name.
|
||||
$config->methodVar = 'f'; // requestType=GET: the method var name.
|
||||
$config->viewVar = 't'; // requestType=GET: the view var name.
|
||||
$config->sessionVar = 'sid'; // requestType=GET: the session var name.
|
||||
|
||||
/* Supported views. */
|
||||
$config->views = ',html,json,';
|
||||
|
||||
/* Set the wide window size. */
|
||||
$config->wideSize = 1400;
|
||||
|
||||
/* Supported languages. */
|
||||
$config->langs['zh-cn'] = '中文简体';
|
||||
$config->langs['zh-tw'] = '中文繁體';
|
||||
$config->langs['en'] = 'English';
|
||||
|
||||
/* Default settings. */
|
||||
$config->default = new stdclass();
|
||||
$config->default->view = 'html'; // Default view.
|
||||
$config->default->lang = 'en'; // Default language.
|
||||
$config->default->theme = 'default'; // Default theme.
|
||||
$config->default->module = 'index'; // Default module.
|
||||
$config->default->method = 'index'; // Default method.
|
||||
|
||||
/* Upload settings. */
|
||||
$config->file = new stdclass();
|
||||
$config->file->dangers = 'php,jsp,py,rb,asp,'; // Dangerous files.
|
||||
$config->file->maxSize = 1024 * 1024; // Max size.
|
||||
|
||||
/* Master database settings. */
|
||||
$config->db = new stdclass();
|
||||
$config->db->persistant = false; // Pconnect or not.
|
||||
$config->db->driver = 'mysql'; // Must be MySQL. Don't support other database server yet.
|
||||
$config->db->encoding = 'UTF8'; // Encoding of database.
|
||||
$config->db->strictMode = false; // Turn off the strict mode of MySQL.
|
||||
//$config->db->emulatePrepare = true; // PDO::ATTR_EMULATE_PREPARES
|
||||
//$config->db->bufferQuery = true; // PDO::MYSQL_ATTR_USE_BUFFERED_QUERY
|
||||
|
||||
/* Slave database settings. */
|
||||
$config->slaveDB = new stdclass();
|
||||
$config->slaveDB->persistant = false;
|
||||
$config->slaveDB->driver = 'mysql';
|
||||
$config->slaveDB->encoding = 'UTF8';
|
||||
$config->slaveDB->strictMode = false;
|
||||
$config->slaveDB->checkCentOS= true;
|
||||
|
||||
/* Include the custom config file. */
|
||||
$configRoot = dirname(__FILE__) . DIRECTORY_SEPARATOR;
|
||||
$myConfig = $configRoot . 'my.php';
|
||||
if(file_exists($myConfig)) include $myConfig;
|
||||
|
||||
/* Set default table prefix. */
|
||||
if(!isset($config->db->prefix)) $config->db->prefix = 'zt_';
|
||||
|
||||
/* Define the tables. */
|
||||
define('TABLE_COMPANY', '`' . $config->db->prefix . 'company`');
|
||||
define('TABLE_DEPT', '`' . $config->db->prefix . 'dept`');
|
||||
define('TABLE_CONFIG', '`' . $config->db->prefix . 'config`');
|
||||
define('TABLE_USER', '`' . $config->db->prefix . 'user`');
|
||||
define('TABLE_TODO', '`' . $config->db->prefix . 'todo`');
|
||||
define('TABLE_GROUP', '`' . $config->db->prefix . 'group`');
|
||||
define('TABLE_GROUPPRIV', '`' . $config->db->prefix . 'groupPriv`');
|
||||
define('TABLE_USERGROUP', '`' . $config->db->prefix . 'userGroup`');
|
||||
define('TABLE_USERQUERY', '`' . $config->db->prefix . 'userQuery`');
|
||||
define('TABLE_USERCONTACT', '`' . $config->db->prefix . 'userContact`');
|
||||
|
||||
define('TABLE_BUG', '`' . $config->db->prefix . 'bug`');
|
||||
define('TABLE_CASE', '`' . $config->db->prefix . 'case`');
|
||||
define('TABLE_CASESTEP', '`' . $config->db->prefix . 'caseStep`');
|
||||
define('TABLE_TESTTASK', '`' . $config->db->prefix . 'testTask`');
|
||||
define('TABLE_TESTRUN', '`' . $config->db->prefix . 'testRun`');
|
||||
define('TABLE_TESTRESULT', '`' . $config->db->prefix . 'testResult`');
|
||||
define('TABLE_USERTPL', '`' . $config->db->prefix . 'userTPL`');
|
||||
|
||||
define('TABLE_PRODUCT', '`' . $config->db->prefix . 'product`');
|
||||
define('TABLE_STORY', '`' . $config->db->prefix . 'story`');
|
||||
define('TABLE_STORYSPEC', '`' . $config->db->prefix . 'storySpec`');
|
||||
define('TABLE_PRODUCTPLAN', '`' . $config->db->prefix . 'productPlan`');
|
||||
define('TABLE_RELEASE', '`' . $config->db->prefix . 'release`');
|
||||
|
||||
define('TABLE_PROJECT', '`' . $config->db->prefix . 'project`');
|
||||
define('TABLE_TASK', '`' . $config->db->prefix . 'task`');
|
||||
define('TABLE_TEAM', '`' . $config->db->prefix . 'team`');
|
||||
define('TABLE_PROJECTPRODUCT','`' . $config->db->prefix . 'projectProduct`');
|
||||
define('TABLE_PROJECTSTORY', '`' . $config->db->prefix . 'projectStory`');
|
||||
define('TABLE_TASKESTIMATE', '`' . $config->db->prefix . 'taskEstimate`');
|
||||
define('TABLE_EFFORT', '`' . $config->db->prefix . 'effort`');
|
||||
define('TABLE_BURN', '`' . $config->db->prefix . 'burn`');
|
||||
define('TABLE_BUILD', '`' . $config->db->prefix . 'build`');
|
||||
|
||||
define('TABLE_DOCLIB', '`' . $config->db->prefix . 'docLib`');
|
||||
define('TABLE_DOC', '`' . $config->db->prefix . 'doc`');
|
||||
|
||||
define('TABLE_MODULE', '`' . $config->db->prefix . 'module`');
|
||||
define('TABLE_ACTION', '`' . $config->db->prefix . 'action`');
|
||||
define('TABLE_FILE', '`' . $config->db->prefix . 'file`');
|
||||
define('TABLE_HISTORY', '`' . $config->db->prefix . 'history`');
|
||||
define('TABLE_EXTENSION', '`' . $config->db->prefix . 'extension`');
|
||||
define('TABLE_WEBAPP', '`' . $config->db->prefix . 'webapp`');
|
||||
|
||||
$config->objectTables['product'] = TABLE_PRODUCT;
|
||||
$config->objectTables['story'] = TABLE_STORY;
|
||||
$config->objectTables['productplan'] = TABLE_PRODUCTPLAN;
|
||||
$config->objectTables['release'] = TABLE_RELEASE;
|
||||
$config->objectTables['project'] = TABLE_PROJECT;
|
||||
$config->objectTables['task'] = TABLE_TASK;
|
||||
$config->objectTables['build'] = TABLE_BUILD;
|
||||
$config->objectTables['bug'] = TABLE_BUG;
|
||||
$config->objectTables['case'] = TABLE_CASE;
|
||||
$config->objectTables['testcase'] = TABLE_CASE;
|
||||
$config->objectTables['testtask'] = TABLE_TESTTASK;
|
||||
$config->objectTables['user'] = TABLE_USER;
|
||||
$config->objectTables['doc'] = TABLE_DOC;
|
||||
$config->objectTables['doclib'] = TABLE_DOCLIB;
|
||||
$config->objectTables['todo'] = TABLE_TODO;
|
||||
|
||||
/* Include extension config files. */
|
||||
$extConfigFiles = glob($configRoot . 'ext/*.php');
|
||||
if($extConfigFiles) foreach($extConfigFiles as $extConfigFile) include $extConfigFile;
|
||||
<?php
|
||||
/**
|
||||
* The config file of ZenTaoPMS.
|
||||
*
|
||||
* Don't modify this file directly, copy the item to my.php and change it.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 QingDao Nature Easy Soft Network Technology Co,LTD (www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package config
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* Basic settings. */
|
||||
$config = new config();
|
||||
$config->version = '4.0.beta2'; // The version of zentaopms. Don't change it.
|
||||
$config->encoding = 'UTF-8'; // The encoding of zentaopms.
|
||||
$config->cookieLife = time() + 2592000; // The cookie life time.
|
||||
$config->timezone = 'Asia/Shanghai'; // The time zone setting, for more see http://www.php.net/manual/en/timezones.php
|
||||
$config->webRoot = ''; // The root path of the pms.
|
||||
|
||||
/* The request settings. */
|
||||
$config->requestType = 'PATH_INFO'; // The request type: PATH_INFO|GET, if PATH_INFO, must use url rewrite.
|
||||
$config->pathType = 'clean'; // If the request type is PATH_INFO, the path type.
|
||||
$config->requestFix = '-'; // The divider in the url when PATH_INFO.
|
||||
$config->moduleVar = 'm'; // requestType=GET: the module var name.
|
||||
$config->methodVar = 'f'; // requestType=GET: the method var name.
|
||||
$config->viewVar = 't'; // requestType=GET: the view var name.
|
||||
$config->sessionVar = 'sid'; // requestType=GET: the session var name.
|
||||
|
||||
/* Supported views. */
|
||||
$config->views = ',html,json,';
|
||||
|
||||
/* Set the wide window size. */
|
||||
$config->wideSize = 1400;
|
||||
|
||||
/* Supported languages. */
|
||||
$config->langs['zh-cn'] = '中文简体';
|
||||
$config->langs['zh-tw'] = '中文繁體';
|
||||
$config->langs['en'] = 'English';
|
||||
|
||||
/* Default settings. */
|
||||
$config->default = new stdclass();
|
||||
$config->default->view = 'html'; // Default view.
|
||||
$config->default->lang = 'en'; // Default language.
|
||||
$config->default->theme = 'default'; // Default theme.
|
||||
$config->default->module = 'index'; // Default module.
|
||||
$config->default->method = 'index'; // Default method.
|
||||
|
||||
/* Upload settings. */
|
||||
$config->file = new stdclass();
|
||||
$config->file->dangers = 'php,jsp,py,rb,asp,'; // Dangerous files.
|
||||
$config->file->maxSize = 1024 * 1024; // Max size.
|
||||
|
||||
/* Master database settings. */
|
||||
$config->db = new stdclass();
|
||||
$config->db->persistant = false; // Pconnect or not.
|
||||
$config->db->driver = 'mysql'; // Must be MySQL. Don't support other database server yet.
|
||||
$config->db->encoding = 'UTF8'; // Encoding of database.
|
||||
$config->db->strictMode = false; // Turn off the strict mode of MySQL.
|
||||
//$config->db->emulatePrepare = true; // PDO::ATTR_EMULATE_PREPARES
|
||||
//$config->db->bufferQuery = true; // PDO::MYSQL_ATTR_USE_BUFFERED_QUERY
|
||||
|
||||
/* Slave database settings. */
|
||||
$config->slaveDB = new stdclass();
|
||||
$config->slaveDB->persistant = false;
|
||||
$config->slaveDB->driver = 'mysql';
|
||||
$config->slaveDB->encoding = 'UTF8';
|
||||
$config->slaveDB->strictMode = false;
|
||||
$config->slaveDB->checkCentOS= true;
|
||||
|
||||
/* Include the custom config file. */
|
||||
$configRoot = dirname(__FILE__) . DIRECTORY_SEPARATOR;
|
||||
$myConfig = $configRoot . 'my.php';
|
||||
if(file_exists($myConfig)) include $myConfig;
|
||||
|
||||
/* Set default table prefix. */
|
||||
if(!isset($config->db->prefix)) $config->db->prefix = 'zt_';
|
||||
|
||||
/* Define the tables. */
|
||||
define('TABLE_COMPANY', '`' . $config->db->prefix . 'company`');
|
||||
define('TABLE_DEPT', '`' . $config->db->prefix . 'dept`');
|
||||
define('TABLE_CONFIG', '`' . $config->db->prefix . 'config`');
|
||||
define('TABLE_USER', '`' . $config->db->prefix . 'user`');
|
||||
define('TABLE_TODO', '`' . $config->db->prefix . 'todo`');
|
||||
define('TABLE_GROUP', '`' . $config->db->prefix . 'group`');
|
||||
define('TABLE_GROUPPRIV', '`' . $config->db->prefix . 'groupPriv`');
|
||||
define('TABLE_USERGROUP', '`' . $config->db->prefix . 'userGroup`');
|
||||
define('TABLE_USERQUERY', '`' . $config->db->prefix . 'userQuery`');
|
||||
define('TABLE_USERCONTACT', '`' . $config->db->prefix . 'userContact`');
|
||||
|
||||
define('TABLE_BUG', '`' . $config->db->prefix . 'bug`');
|
||||
define('TABLE_CASE', '`' . $config->db->prefix . 'case`');
|
||||
define('TABLE_CASESTEP', '`' . $config->db->prefix . 'caseStep`');
|
||||
define('TABLE_TESTTASK', '`' . $config->db->prefix . 'testTask`');
|
||||
define('TABLE_TESTRUN', '`' . $config->db->prefix . 'testRun`');
|
||||
define('TABLE_TESTRESULT', '`' . $config->db->prefix . 'testResult`');
|
||||
define('TABLE_USERTPL', '`' . $config->db->prefix . 'userTPL`');
|
||||
|
||||
define('TABLE_PRODUCT', '`' . $config->db->prefix . 'product`');
|
||||
define('TABLE_STORY', '`' . $config->db->prefix . 'story`');
|
||||
define('TABLE_STORYSPEC', '`' . $config->db->prefix . 'storySpec`');
|
||||
define('TABLE_PRODUCTPLAN', '`' . $config->db->prefix . 'productPlan`');
|
||||
define('TABLE_RELEASE', '`' . $config->db->prefix . 'release`');
|
||||
|
||||
define('TABLE_PROJECT', '`' . $config->db->prefix . 'project`');
|
||||
define('TABLE_TASK', '`' . $config->db->prefix . 'task`');
|
||||
define('TABLE_TEAM', '`' . $config->db->prefix . 'team`');
|
||||
define('TABLE_PROJECTPRODUCT','`' . $config->db->prefix . 'projectProduct`');
|
||||
define('TABLE_PROJECTSTORY', '`' . $config->db->prefix . 'projectStory`');
|
||||
define('TABLE_TASKESTIMATE', '`' . $config->db->prefix . 'taskEstimate`');
|
||||
define('TABLE_EFFORT', '`' . $config->db->prefix . 'effort`');
|
||||
define('TABLE_BURN', '`' . $config->db->prefix . 'burn`');
|
||||
define('TABLE_BUILD', '`' . $config->db->prefix . 'build`');
|
||||
|
||||
define('TABLE_DOCLIB', '`' . $config->db->prefix . 'docLib`');
|
||||
define('TABLE_DOC', '`' . $config->db->prefix . 'doc`');
|
||||
|
||||
define('TABLE_MODULE', '`' . $config->db->prefix . 'module`');
|
||||
define('TABLE_ACTION', '`' . $config->db->prefix . 'action`');
|
||||
define('TABLE_FILE', '`' . $config->db->prefix . 'file`');
|
||||
define('TABLE_HISTORY', '`' . $config->db->prefix . 'history`');
|
||||
define('TABLE_EXTENSION', '`' . $config->db->prefix . 'extension`');
|
||||
define('TABLE_WEBAPP', '`' . $config->db->prefix . 'webapp`');
|
||||
|
||||
$config->objectTables['product'] = TABLE_PRODUCT;
|
||||
$config->objectTables['story'] = TABLE_STORY;
|
||||
$config->objectTables['productplan'] = TABLE_PRODUCTPLAN;
|
||||
$config->objectTables['release'] = TABLE_RELEASE;
|
||||
$config->objectTables['project'] = TABLE_PROJECT;
|
||||
$config->objectTables['task'] = TABLE_TASK;
|
||||
$config->objectTables['build'] = TABLE_BUILD;
|
||||
$config->objectTables['bug'] = TABLE_BUG;
|
||||
$config->objectTables['case'] = TABLE_CASE;
|
||||
$config->objectTables['testcase'] = TABLE_CASE;
|
||||
$config->objectTables['testtask'] = TABLE_TESTTASK;
|
||||
$config->objectTables['user'] = TABLE_USER;
|
||||
$config->objectTables['doc'] = TABLE_DOC;
|
||||
$config->objectTables['doclib'] = TABLE_DOCLIB;
|
||||
$config->objectTables['todo'] = TABLE_TODO;
|
||||
|
||||
/* Include extension config files. */
|
||||
$extConfigFiles = glob($configRoot . 'ext/*.php');
|
||||
if($extConfigFiles) foreach($extConfigFiles as $extConfigFile) include $extConfigFile;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,194 +1,194 @@
|
||||
<?php
|
||||
/**
|
||||
* The zfile library of zentaopms.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 QingDao Nature Easy Soft Network Technology Co,LTD (www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package Zfile
|
||||
* @version $Id: zfile.class.php 2605 2013-01-09 07:22:58Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class zfile
|
||||
{
|
||||
/**
|
||||
* Copy a directory from an directory to another directory.
|
||||
*
|
||||
* @param string $from
|
||||
* @param string $to
|
||||
* @access public
|
||||
* @return array copied files.
|
||||
*/
|
||||
public function copyDir($from, $to)
|
||||
{
|
||||
static $copiedFiles = array();
|
||||
|
||||
if(!is_dir($from) or !is_readable($from)) return $copiedFiles;
|
||||
if(!is_dir($to))
|
||||
{
|
||||
if(!is_writable(dirname($to))) return $copiedFiles;
|
||||
mkdir($to);
|
||||
}
|
||||
|
||||
$from = realpath($from) . '/';
|
||||
$to = realpath($to) . '/';
|
||||
$entries = scandir($from);
|
||||
|
||||
foreach($entries as $entry)
|
||||
{
|
||||
if($entry == '.' or $entry == '..' or $entry == '.svn') continue;
|
||||
|
||||
$fullEntry = $from . $entry;
|
||||
if(is_file($fullEntry))
|
||||
{
|
||||
if(file_exists($to . $entry))
|
||||
{
|
||||
unlink($to . $entry);
|
||||
}
|
||||
copy($fullEntry, $to . $entry);
|
||||
$copiedFiles[] = $to . $entry;
|
||||
}
|
||||
else
|
||||
{
|
||||
$nextFrom = $from . $entry;
|
||||
$nextTo = $to . $entry;
|
||||
$this->copyDir($nextFrom, $nextTo);
|
||||
}
|
||||
}
|
||||
return $copiedFiles;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove a dir.
|
||||
*
|
||||
* @param string $dir
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function removeDir($dir)
|
||||
{
|
||||
$dir = realpath($dir) . '/';
|
||||
if($dir == '/') return false;
|
||||
|
||||
if(!is_writable($dir)) return false;
|
||||
if(!is_dir($dir)) return true;
|
||||
|
||||
$entries = scandir($dir);
|
||||
foreach($entries as $entry)
|
||||
{
|
||||
if($entry == '.' or $entry == '..' or $entry == '.svn') continue;
|
||||
|
||||
$fullEntry = $dir . $entry;
|
||||
if(is_file($fullEntry))
|
||||
{
|
||||
unlink($fullEntry);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->removeDir($fullEntry);
|
||||
}
|
||||
}
|
||||
if(!@rmdir($dir)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get files under a directory recursive.
|
||||
*
|
||||
* @param string $dir
|
||||
* @param array $exceptions
|
||||
* @access private
|
||||
* @return array
|
||||
*/
|
||||
public function readDir($dir, $exceptions = array())
|
||||
{
|
||||
static $files = array();
|
||||
|
||||
if(!is_dir($dir)) return $files;
|
||||
|
||||
$dir = realpath($dir) . '/';
|
||||
$entries = scandir($dir);
|
||||
|
||||
foreach($entries as $entry)
|
||||
{
|
||||
if($entry == '.' or $entry == '..' or $entry == '.svn') continue;
|
||||
if(in_array($entry, $exceptions)) continue;
|
||||
|
||||
$fullEntry = $dir . $entry;
|
||||
if(is_file($fullEntry))
|
||||
{
|
||||
$files[] = $dir . $entry;
|
||||
}
|
||||
else
|
||||
{
|
||||
$nextDir = $dir . $entry;
|
||||
$this->readDir($nextDir);
|
||||
}
|
||||
}
|
||||
return $files;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make a dir.
|
||||
*
|
||||
* @param string $dir
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function mkdir($dir)
|
||||
{
|
||||
return mkdir($dir, 0755, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove a file
|
||||
*
|
||||
* @param string $file
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function removeFile($file)
|
||||
{
|
||||
if(!file_exists($file)) return true;
|
||||
return @unlink($file);
|
||||
}
|
||||
|
||||
/**
|
||||
* Batch remove files. use glob function.
|
||||
*
|
||||
* @param string $patern
|
||||
* @access public
|
||||
* @return avoid
|
||||
*/
|
||||
public function batchRemoveFile($patern)
|
||||
{
|
||||
$files = glob($patern);
|
||||
foreach($files as $file) @unlink($file);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove a file
|
||||
*
|
||||
* @param string from
|
||||
* @param string to
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function copyFile($from, $to)
|
||||
{
|
||||
return @copy($from, $to);
|
||||
}
|
||||
|
||||
/**
|
||||
* Rename a file or directory.
|
||||
*
|
||||
* @param string from
|
||||
* @param string to
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function rename($from, $to)
|
||||
{
|
||||
return rename($from, $to);
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The zfile library of zentaopms.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 QingDao Nature Easy Soft Network Technology Co,LTD (www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package Zfile
|
||||
* @version $Id: zfile.class.php 2605 2013-01-09 07:22:58Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class zfile
|
||||
{
|
||||
/**
|
||||
* Copy a directory from an directory to another directory.
|
||||
*
|
||||
* @param string $from
|
||||
* @param string $to
|
||||
* @access public
|
||||
* @return array copied files.
|
||||
*/
|
||||
public function copyDir($from, $to)
|
||||
{
|
||||
static $copiedFiles = array();
|
||||
|
||||
if(!is_dir($from) or !is_readable($from)) return $copiedFiles;
|
||||
if(!is_dir($to))
|
||||
{
|
||||
if(!is_writable(dirname($to))) return $copiedFiles;
|
||||
mkdir($to);
|
||||
}
|
||||
|
||||
$from = realpath($from) . '/';
|
||||
$to = realpath($to) . '/';
|
||||
$entries = scandir($from);
|
||||
|
||||
foreach($entries as $entry)
|
||||
{
|
||||
if($entry == '.' or $entry == '..' or $entry == '.svn') continue;
|
||||
|
||||
$fullEntry = $from . $entry;
|
||||
if(is_file($fullEntry))
|
||||
{
|
||||
if(file_exists($to . $entry))
|
||||
{
|
||||
unlink($to . $entry);
|
||||
}
|
||||
copy($fullEntry, $to . $entry);
|
||||
$copiedFiles[] = $to . $entry;
|
||||
}
|
||||
else
|
||||
{
|
||||
$nextFrom = $from . $entry;
|
||||
$nextTo = $to . $entry;
|
||||
$this->copyDir($nextFrom, $nextTo);
|
||||
}
|
||||
}
|
||||
return $copiedFiles;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove a dir.
|
||||
*
|
||||
* @param string $dir
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function removeDir($dir)
|
||||
{
|
||||
$dir = realpath($dir) . '/';
|
||||
if($dir == '/') return false;
|
||||
|
||||
if(!is_writable($dir)) return false;
|
||||
if(!is_dir($dir)) return true;
|
||||
|
||||
$entries = scandir($dir);
|
||||
foreach($entries as $entry)
|
||||
{
|
||||
if($entry == '.' or $entry == '..' or $entry == '.svn') continue;
|
||||
|
||||
$fullEntry = $dir . $entry;
|
||||
if(is_file($fullEntry))
|
||||
{
|
||||
unlink($fullEntry);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->removeDir($fullEntry);
|
||||
}
|
||||
}
|
||||
if(!@rmdir($dir)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get files under a directory recursive.
|
||||
*
|
||||
* @param string $dir
|
||||
* @param array $exceptions
|
||||
* @access private
|
||||
* @return array
|
||||
*/
|
||||
public function readDir($dir, $exceptions = array())
|
||||
{
|
||||
static $files = array();
|
||||
|
||||
if(!is_dir($dir)) return $files;
|
||||
|
||||
$dir = realpath($dir) . '/';
|
||||
$entries = scandir($dir);
|
||||
|
||||
foreach($entries as $entry)
|
||||
{
|
||||
if($entry == '.' or $entry == '..' or $entry == '.svn') continue;
|
||||
if(in_array($entry, $exceptions)) continue;
|
||||
|
||||
$fullEntry = $dir . $entry;
|
||||
if(is_file($fullEntry))
|
||||
{
|
||||
$files[] = $dir . $entry;
|
||||
}
|
||||
else
|
||||
{
|
||||
$nextDir = $dir . $entry;
|
||||
$this->readDir($nextDir);
|
||||
}
|
||||
}
|
||||
return $files;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make a dir.
|
||||
*
|
||||
* @param string $dir
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function mkdir($dir)
|
||||
{
|
||||
return mkdir($dir, 0755, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove a file
|
||||
*
|
||||
* @param string $file
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function removeFile($file)
|
||||
{
|
||||
if(!file_exists($file)) return true;
|
||||
return @unlink($file);
|
||||
}
|
||||
|
||||
/**
|
||||
* Batch remove files. use glob function.
|
||||
*
|
||||
* @param string $patern
|
||||
* @access public
|
||||
* @return avoid
|
||||
*/
|
||||
public function batchRemoveFile($patern)
|
||||
{
|
||||
$files = glob($patern);
|
||||
foreach($files as $file) @unlink($file);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove a file
|
||||
*
|
||||
* @param string from
|
||||
* @param string to
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function copyFile($from, $to)
|
||||
{
|
||||
return @copy($from, $to);
|
||||
}
|
||||
|
||||
/**
|
||||
* Rename a file or directory.
|
||||
*
|
||||
* @param string from
|
||||
* @param string to
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function rename($from, $to)
|
||||
{
|
||||
return rename($from, $to);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,80 +1,80 @@
|
||||
<?php
|
||||
/**
|
||||
* The control file of action module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package action
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class action extends control
|
||||
{
|
||||
/**
|
||||
* Trash
|
||||
*
|
||||
* @param string $orderBy
|
||||
* @param int $recTotal
|
||||
* @param int $recPerPage
|
||||
* @param int $pageID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function trash($orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
{
|
||||
/* Save session. */
|
||||
$uri = $this->app->getURI(true);
|
||||
$this->session->set('productList', $uri);
|
||||
$this->session->set('productPlanList', $uri);
|
||||
$this->session->set('releaseList', $uri);
|
||||
$this->session->set('storyList', $uri);
|
||||
$this->session->set('projectList', $uri);
|
||||
$this->session->set('taskList', $uri);
|
||||
$this->session->set('buildList', $uri);
|
||||
$this->session->set('bugList', $uri);
|
||||
$this->session->set('caseList', $uri);
|
||||
$this->session->set('testtaskList', $uri);
|
||||
$this->session->set('docList', $uri);
|
||||
|
||||
/* Header and position. */
|
||||
$this->view->header->title = $this->lang->action->trash;
|
||||
$this->view->position[] = $this->lang->action->trash;
|
||||
|
||||
/* Get deleted objects. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$pager = pager::init($recTotal, $recPerPage, $pageID);
|
||||
$this->view->trashes = $this->action->getTrashes($orderBy, $pager);
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noletter');
|
||||
$this->view->users['system'] = 'system';
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->pager = $pager;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Undelete an object.
|
||||
*
|
||||
* @param int $actionID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function undelete($actionID)
|
||||
{
|
||||
$this->action->undelete($actionID);
|
||||
die(js::reload('parent'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Hide object.
|
||||
*
|
||||
* @param int $actionID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function hide($actionID)
|
||||
{
|
||||
$this->action->hide($actionID);
|
||||
die(js::reload('parent'));
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The control file of action module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package action
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class action extends control
|
||||
{
|
||||
/**
|
||||
* Trash
|
||||
*
|
||||
* @param string $orderBy
|
||||
* @param int $recTotal
|
||||
* @param int $recPerPage
|
||||
* @param int $pageID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function trash($orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
{
|
||||
/* Save session. */
|
||||
$uri = $this->app->getURI(true);
|
||||
$this->session->set('productList', $uri);
|
||||
$this->session->set('productPlanList', $uri);
|
||||
$this->session->set('releaseList', $uri);
|
||||
$this->session->set('storyList', $uri);
|
||||
$this->session->set('projectList', $uri);
|
||||
$this->session->set('taskList', $uri);
|
||||
$this->session->set('buildList', $uri);
|
||||
$this->session->set('bugList', $uri);
|
||||
$this->session->set('caseList', $uri);
|
||||
$this->session->set('testtaskList', $uri);
|
||||
$this->session->set('docList', $uri);
|
||||
|
||||
/* Header and position. */
|
||||
$this->view->header->title = $this->lang->action->trash;
|
||||
$this->view->position[] = $this->lang->action->trash;
|
||||
|
||||
/* Get deleted objects. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$pager = pager::init($recTotal, $recPerPage, $pageID);
|
||||
$this->view->trashes = $this->action->getTrashes($orderBy, $pager);
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noletter');
|
||||
$this->view->users['system'] = 'system';
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->pager = $pager;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Undelete an object.
|
||||
*
|
||||
* @param int $actionID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function undelete($actionID)
|
||||
{
|
||||
$this->action->undelete($actionID);
|
||||
die(js::reload('parent'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Hide object.
|
||||
*
|
||||
* @param int $actionID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function hide($actionID)
|
||||
{
|
||||
$this->action->hide($actionID);
|
||||
die(js::reload('parent'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,194 +1,194 @@
|
||||
<?php
|
||||
/**
|
||||
* The action module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package action
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->action->common = 'Logs';
|
||||
$lang->action->trash = 'Trash';
|
||||
$lang->action->undelete = 'Undelete';
|
||||
$lang->action->hide = 'Hide';
|
||||
|
||||
$lang->action->product = 'Product';
|
||||
$lang->action->project = 'Project';
|
||||
$lang->action->objectType = 'Object';
|
||||
$lang->action->objectID = 'ID';
|
||||
$lang->action->objectName = 'Name';
|
||||
$lang->action->actor = 'Actor';
|
||||
$lang->action->action = 'Action';
|
||||
$lang->action->actionID = 'ActionID';
|
||||
$lang->action->date = 'Date';
|
||||
$lang->action->trashTips = "Tips:The deleting actions in zentao are all logic";
|
||||
$lang->action->textDiff = 'Text mode';
|
||||
$lang->action->original = 'Original content';
|
||||
|
||||
$lang->action->dynamic = new stdclass();
|
||||
$lang->action->dynamic->today = 'Today';
|
||||
$lang->action->dynamic->yesterday = 'Yesterday';
|
||||
$lang->action->dynamic->twoDaysAgo = 'Two days ago';
|
||||
$lang->action->dynamic->thisWeek = 'This week';
|
||||
$lang->action->dynamic->lastWeek = 'Last week';
|
||||
$lang->action->dynamic->thisMonth = 'This month';
|
||||
$lang->action->dynamic->lastMonth = 'Last month';
|
||||
$lang->action->dynamic->all = 'All';
|
||||
$lang->action->dynamic->search = 'Search';
|
||||
|
||||
$lang->action->objectTypes['product'] = 'Product';
|
||||
$lang->action->objectTypes['story'] = 'Story';
|
||||
$lang->action->objectTypes['productplan'] = 'Plan';
|
||||
$lang->action->objectTypes['release'] = 'Release';
|
||||
$lang->action->objectTypes['project'] = 'Project';
|
||||
$lang->action->objectTypes['task'] = 'Task';
|
||||
$lang->action->objectTypes['build'] = 'Build';
|
||||
$lang->action->objectTypes['bug'] = 'Bug';
|
||||
$lang->action->objectTypes['case'] = 'Case';
|
||||
$lang->action->objectTypes['testtask'] = 'Test Task';
|
||||
$lang->action->objectTypes['user'] = 'User';
|
||||
$lang->action->objectTypes['doc'] = 'Doc';
|
||||
$lang->action->objectTypes['doclib'] = 'DocLib';
|
||||
$lang->action->objectTypes['todo'] = 'Todo';
|
||||
|
||||
/* The desc of actions. */
|
||||
$lang->action->desc = new stdclass();
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> by <strong>$actor</strong>.';
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> as <strong>$extra</strong> by <strong>$actor</strong>.';
|
||||
$lang->action->desc->opened = '$date, opened by <strong>$actor</strong>.';
|
||||
$lang->action->desc->created = '$date, created by <strong>$actor</strong>.';
|
||||
$lang->action->desc->changed = '$date, changed by <strong>$actor</strong>.';
|
||||
$lang->action->desc->edited = '$date, edited by <strong>$actor</strong>.';
|
||||
$lang->action->desc->assigned = '$date, <strong>$actor</strong> assigned task to <strong>$extra</strong>.' . "\n";
|
||||
$lang->action->desc->closed = '$date, closed by <strong>$actor</strong>.';
|
||||
$lang->action->desc->deleted = '$date, deleted by <strong>$actor</strong>.';
|
||||
$lang->action->desc->deletedfile = '$date, deleted file by <strong>$actor</strong>, the file is <strong><i>$extra</i></strong>.';
|
||||
$lang->action->desc->editfile = '$date, edit file by <strong>$actor</strong>, the file is <strong><i>$extra</i></strong>.';
|
||||
$lang->action->desc->erased = '$date, erased by <strong>$actor</strong>.';
|
||||
$lang->action->desc->undeleted = '$date, restored by <strong>$actor</strong>.';
|
||||
$lang->action->desc->hidden = '$date, hidden by <strong>$actor</strong>.';
|
||||
$lang->action->desc->commented = '$date, commented by <strong>$actor</strong>.';
|
||||
$lang->action->desc->activated = '$date, activated by <strong>$actor</strong>.';
|
||||
$lang->action->desc->moved = '$date, moved by <strong>$actor</strong>, previouse is "$extra".';
|
||||
$lang->action->desc->confirmed = '$date, confirmed by <strong>$actor</strong>, version is<strong>#$extra</strong>.';
|
||||
$lang->action->desc->bugconfirmed = '$date, confirmed by <strong>$actor</strong>.';
|
||||
$lang->action->desc->frombug = '$date, from Bug by <strong>$actor</strong> BugID:<strong>$extra</strong>.';
|
||||
$lang->action->desc->started = '$date, started by <strong>$actor</strong>.';
|
||||
$lang->action->desc->delayed = '$date, delayed by <strong>$actor</strong>.';
|
||||
$lang->action->desc->suspended = '$date, suspended by <strong>$actor</strong>.';
|
||||
$lang->action->desc->recorded = '$date, recorded by <strong>$actor</strong>,consumed <strong>$extra</strong> hour(s).';
|
||||
$lang->action->desc->canceled = '$date, canceled by <strong>$actor</strong>.';
|
||||
$lang->action->desc->svncommited = '$date, <strong>$actor</strong> commited to svn,revision is <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->finished = '$date, finished by <strong>$actor</strong>.';
|
||||
$lang->action->desc->diff1 = 'changed <strong><i>%s</i></strong>, old is "%s", new is "%s".<br />';
|
||||
$lang->action->desc->diff2 = 'changed <strong><i>%s</i></strong>, the diff is:' . "\n" . "<blockquote>%s</blockquote>" . "\n<div class='hidden'>%s</div>";
|
||||
$lang->action->desc->diff3 = "changed file's name %s to %s.";
|
||||
|
||||
/* The action labels. */
|
||||
$lang->action->label = new stdclass();
|
||||
$lang->action->label->created = 'created';
|
||||
$lang->action->label->opened = 'opened';
|
||||
$lang->action->label->changed = 'changed';
|
||||
$lang->action->label->edited = 'edited';
|
||||
$lang->action->label->assigned = 'assigned';
|
||||
$lang->action->label->closed = 'closed';
|
||||
$lang->action->label->deleted = 'deleted';
|
||||
$lang->action->label->deletedfile = 'deleted file';
|
||||
$lang->action->label->editfile = 'edit file name';
|
||||
$lang->action->label->erased = 'deleted';
|
||||
$lang->action->label->undeleted = 'restore';
|
||||
$lang->action->label->hidden = 'hidden';
|
||||
$lang->action->label->commented = 'commented';
|
||||
$lang->action->label->activated = 'activated';
|
||||
$lang->action->label->resolved = 'resolved';
|
||||
$lang->action->label->reviewed = 'reviewed';
|
||||
$lang->action->label->moved = 'moded';
|
||||
$lang->action->label->confirmed = 'confirmed,';
|
||||
$lang->action->label->bugconfirmed = 'confirmed';
|
||||
$lang->action->label->tostory = 'converted to story';
|
||||
$lang->action->label->frombug = 'converted from bug';
|
||||
$lang->action->label->totask = 'converted to task';
|
||||
$lang->action->label->svncommited = 'commited code';
|
||||
$lang->action->label->linked2plan = 'link to plan';
|
||||
$lang->action->label->unlinkedfromplan = 'unlink from plan';
|
||||
$lang->action->label->linked2project = 'link to project';
|
||||
$lang->action->label->unlinkedfromproject = 'unlik from project';
|
||||
$lang->action->label->marked = 'edited';
|
||||
$lang->action->label->started = 'started';
|
||||
$lang->action->label->recorded = 'log hour';
|
||||
$lang->action->label->canceled = 'canceled';
|
||||
$lang->action->label->finished = 'finished';
|
||||
$lang->action->label->login = 'login';
|
||||
$lang->action->label->logout = "logout";
|
||||
|
||||
/* Link of every action. */
|
||||
$lang->action->label->product = 'product|product|view|productID=%s';
|
||||
$lang->action->label->productplan = 'plan|productplan|view|productID=%s';
|
||||
$lang->action->label->release = 'release|release|view|productID=%s';
|
||||
$lang->action->label->story = 'story|story|view|storyID=%s';
|
||||
$lang->action->label->project = 'project|project|view|projectID=%s';
|
||||
$lang->action->label->task = 'task|task|view|taskID=%s';
|
||||
$lang->action->label->build = 'build|build|view|buildID=%s';
|
||||
$lang->action->label->bug = 'bug|bug|view|bugID=%s';
|
||||
$lang->action->label->case = 'case|testcase|view|caseID=%s';
|
||||
$lang->action->label->testtask = 'test task|testtask|view|caseID=%s';
|
||||
$lang->action->label->todo = 'todo|todo|view|todoID=%s';
|
||||
$lang->action->label->doclib = 'doc library|doc|browse|libID=%s';
|
||||
$lang->action->label->doc = 'doc|doc|view|docID=%s';
|
||||
$lang->action->label->user = 'user';
|
||||
$lang->action->label->space = ' ';
|
||||
|
||||
/* Object type. */
|
||||
$lang->action->search->objectTypeList[''] = '';
|
||||
$lang->action->search->objectTypeList['product'] = 'product';
|
||||
$lang->action->search->objectTypeList['project'] = 'project';
|
||||
$lang->action->search->objectTypeList['bug'] = 'bug';
|
||||
$lang->action->search->objectTypeList['case'] = 'case';
|
||||
$lang->action->search->objectTypeList['story'] = 'story';
|
||||
$lang->action->search->objectTypeList['task'] = 'task';
|
||||
$lang->action->search->objectTypeList['testtask'] = 'testtask';
|
||||
$lang->action->search->objectTypeList['user'] = 'user';
|
||||
$lang->action->search->objectTypeList['doc'] = 'doc';
|
||||
$lang->action->search->objectTypeList['doclib'] = 'doclib';
|
||||
$lang->action->search->objectTypeList['todo'] = 'todo';
|
||||
$lang->action->search->objectTypeList['build'] = 'build';
|
||||
$lang->action->search->objectTypeList['release'] = 'release';
|
||||
$lang->action->search->objectTypeList['productplan'] = 'productplan';
|
||||
|
||||
/* Display action for search. */
|
||||
$lang->action->search->label[''] = '';
|
||||
$lang->action->search->label['created'] = $lang->action->label->created;
|
||||
$lang->action->search->label['opened'] = $lang->action->label->opened;
|
||||
$lang->action->search->label['changed'] = $lang->action->label->changed;
|
||||
$lang->action->search->label['edited'] = $lang->action->label->edited;
|
||||
$lang->action->search->label['assigned'] = $lang->action->label->assigned;
|
||||
$lang->action->search->label['closed'] = $lang->action->label->closed;
|
||||
$lang->action->search->label['deleted'] = $lang->action->label->deleted;
|
||||
$lang->action->search->label['deletedfile'] = $lang->action->label->deletedfile;
|
||||
$lang->action->search->label['editfile'] = $lang->action->label->editfile;
|
||||
$lang->action->search->label['erased'] = $lang->action->label->erased;
|
||||
$lang->action->search->label['undeleted'] = $lang->action->label->undeleted;
|
||||
$lang->action->search->label['hidden'] = $lang->action->label->hidden;
|
||||
$lang->action->search->label['commented'] = $lang->action->label->commented;
|
||||
$lang->action->search->label['activated'] = $lang->action->label->activated;
|
||||
$lang->action->search->label['resolved'] = $lang->action->label->resolved;
|
||||
$lang->action->search->label['reviewed'] = $lang->action->label->reviewed;
|
||||
$lang->action->search->label['moved'] = $lang->action->label->moved;
|
||||
$lang->action->search->label['confirmed'] = $lang->action->label->confirmed;
|
||||
$lang->action->search->label['bugconfirmed'] = $lang->action->label->bugconfirmed;
|
||||
$lang->action->search->label['tostory'] = $lang->action->label->tostory;
|
||||
$lang->action->search->label['frombug'] = $lang->action->label->frombug;
|
||||
$lang->action->search->label['totask'] = $lang->action->label->totask;
|
||||
$lang->action->search->label['svncommited'] = $lang->action->label->svncommited;
|
||||
$lang->action->search->label['linked2plan'] = $lang->action->label->linked2plan;
|
||||
$lang->action->search->label['unlinkedfromplan'] = $lang->action->label->unlinkedfromplan;
|
||||
$lang->action->search->label['linked2project'] = $lang->action->label->linked2project;
|
||||
$lang->action->search->label['unlinkedfromproject'] = $lang->action->label->unlinkedfromproject;
|
||||
$lang->action->search->label['marked'] = $lang->action->label->marked;
|
||||
$lang->action->search->label['started'] = $lang->action->label->started;
|
||||
$lang->action->search->label['canceled'] = $lang->action->label->canceled;
|
||||
$lang->action->search->label['finished'] = $lang->action->label->finished;
|
||||
$lang->action->search->label['login'] = $lang->action->label->login;
|
||||
$lang->action->search->label['logout'] = $lang->action->label->logout;
|
||||
<?php
|
||||
/**
|
||||
* The action module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package action
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->action->common = 'Logs';
|
||||
$lang->action->trash = 'Trash';
|
||||
$lang->action->undelete = 'Undelete';
|
||||
$lang->action->hide = 'Hide';
|
||||
|
||||
$lang->action->product = 'Product';
|
||||
$lang->action->project = 'Project';
|
||||
$lang->action->objectType = 'Object';
|
||||
$lang->action->objectID = 'ID';
|
||||
$lang->action->objectName = 'Name';
|
||||
$lang->action->actor = 'Actor';
|
||||
$lang->action->action = 'Action';
|
||||
$lang->action->actionID = 'ActionID';
|
||||
$lang->action->date = 'Date';
|
||||
$lang->action->trashTips = "Tips:The deleting actions in zentao are all logic";
|
||||
$lang->action->textDiff = 'Text mode';
|
||||
$lang->action->original = 'Original content';
|
||||
|
||||
$lang->action->dynamic = new stdclass();
|
||||
$lang->action->dynamic->today = 'Today';
|
||||
$lang->action->dynamic->yesterday = 'Yesterday';
|
||||
$lang->action->dynamic->twoDaysAgo = 'Two days ago';
|
||||
$lang->action->dynamic->thisWeek = 'This week';
|
||||
$lang->action->dynamic->lastWeek = 'Last week';
|
||||
$lang->action->dynamic->thisMonth = 'This month';
|
||||
$lang->action->dynamic->lastMonth = 'Last month';
|
||||
$lang->action->dynamic->all = 'All';
|
||||
$lang->action->dynamic->search = 'Search';
|
||||
|
||||
$lang->action->objectTypes['product'] = 'Product';
|
||||
$lang->action->objectTypes['story'] = 'Story';
|
||||
$lang->action->objectTypes['productplan'] = 'Plan';
|
||||
$lang->action->objectTypes['release'] = 'Release';
|
||||
$lang->action->objectTypes['project'] = 'Project';
|
||||
$lang->action->objectTypes['task'] = 'Task';
|
||||
$lang->action->objectTypes['build'] = 'Build';
|
||||
$lang->action->objectTypes['bug'] = 'Bug';
|
||||
$lang->action->objectTypes['case'] = 'Case';
|
||||
$lang->action->objectTypes['testtask'] = 'Test Task';
|
||||
$lang->action->objectTypes['user'] = 'User';
|
||||
$lang->action->objectTypes['doc'] = 'Doc';
|
||||
$lang->action->objectTypes['doclib'] = 'DocLib';
|
||||
$lang->action->objectTypes['todo'] = 'Todo';
|
||||
|
||||
/* The desc of actions. */
|
||||
$lang->action->desc = new stdclass();
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> by <strong>$actor</strong>.';
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> as <strong>$extra</strong> by <strong>$actor</strong>.';
|
||||
$lang->action->desc->opened = '$date, opened by <strong>$actor</strong>.';
|
||||
$lang->action->desc->created = '$date, created by <strong>$actor</strong>.';
|
||||
$lang->action->desc->changed = '$date, changed by <strong>$actor</strong>.';
|
||||
$lang->action->desc->edited = '$date, edited by <strong>$actor</strong>.';
|
||||
$lang->action->desc->assigned = '$date, <strong>$actor</strong> assigned task to <strong>$extra</strong>.' . "\n";
|
||||
$lang->action->desc->closed = '$date, closed by <strong>$actor</strong>.';
|
||||
$lang->action->desc->deleted = '$date, deleted by <strong>$actor</strong>.';
|
||||
$lang->action->desc->deletedfile = '$date, deleted file by <strong>$actor</strong>, the file is <strong><i>$extra</i></strong>.';
|
||||
$lang->action->desc->editfile = '$date, edit file by <strong>$actor</strong>, the file is <strong><i>$extra</i></strong>.';
|
||||
$lang->action->desc->erased = '$date, erased by <strong>$actor</strong>.';
|
||||
$lang->action->desc->undeleted = '$date, restored by <strong>$actor</strong>.';
|
||||
$lang->action->desc->hidden = '$date, hidden by <strong>$actor</strong>.';
|
||||
$lang->action->desc->commented = '$date, commented by <strong>$actor</strong>.';
|
||||
$lang->action->desc->activated = '$date, activated by <strong>$actor</strong>.';
|
||||
$lang->action->desc->moved = '$date, moved by <strong>$actor</strong>, previouse is "$extra".';
|
||||
$lang->action->desc->confirmed = '$date, confirmed by <strong>$actor</strong>, version is<strong>#$extra</strong>.';
|
||||
$lang->action->desc->bugconfirmed = '$date, confirmed by <strong>$actor</strong>.';
|
||||
$lang->action->desc->frombug = '$date, from Bug by <strong>$actor</strong> BugID:<strong>$extra</strong>.';
|
||||
$lang->action->desc->started = '$date, started by <strong>$actor</strong>.';
|
||||
$lang->action->desc->delayed = '$date, delayed by <strong>$actor</strong>.';
|
||||
$lang->action->desc->suspended = '$date, suspended by <strong>$actor</strong>.';
|
||||
$lang->action->desc->recorded = '$date, recorded by <strong>$actor</strong>,consumed <strong>$extra</strong> hour(s).';
|
||||
$lang->action->desc->canceled = '$date, canceled by <strong>$actor</strong>.';
|
||||
$lang->action->desc->svncommited = '$date, <strong>$actor</strong> commited to svn,revision is <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->finished = '$date, finished by <strong>$actor</strong>.';
|
||||
$lang->action->desc->diff1 = 'changed <strong><i>%s</i></strong>, old is "%s", new is "%s".<br />';
|
||||
$lang->action->desc->diff2 = 'changed <strong><i>%s</i></strong>, the diff is:' . "\n" . "<blockquote>%s</blockquote>" . "\n<div class='hidden'>%s</div>";
|
||||
$lang->action->desc->diff3 = "changed file's name %s to %s.";
|
||||
|
||||
/* The action labels. */
|
||||
$lang->action->label = new stdclass();
|
||||
$lang->action->label->created = 'created';
|
||||
$lang->action->label->opened = 'opened';
|
||||
$lang->action->label->changed = 'changed';
|
||||
$lang->action->label->edited = 'edited';
|
||||
$lang->action->label->assigned = 'assigned';
|
||||
$lang->action->label->closed = 'closed';
|
||||
$lang->action->label->deleted = 'deleted';
|
||||
$lang->action->label->deletedfile = 'deleted file';
|
||||
$lang->action->label->editfile = 'edit file name';
|
||||
$lang->action->label->erased = 'deleted';
|
||||
$lang->action->label->undeleted = 'restore';
|
||||
$lang->action->label->hidden = 'hidden';
|
||||
$lang->action->label->commented = 'commented';
|
||||
$lang->action->label->activated = 'activated';
|
||||
$lang->action->label->resolved = 'resolved';
|
||||
$lang->action->label->reviewed = 'reviewed';
|
||||
$lang->action->label->moved = 'moded';
|
||||
$lang->action->label->confirmed = 'confirmed,';
|
||||
$lang->action->label->bugconfirmed = 'confirmed';
|
||||
$lang->action->label->tostory = 'converted to story';
|
||||
$lang->action->label->frombug = 'converted from bug';
|
||||
$lang->action->label->totask = 'converted to task';
|
||||
$lang->action->label->svncommited = 'commited code';
|
||||
$lang->action->label->linked2plan = 'link to plan';
|
||||
$lang->action->label->unlinkedfromplan = 'unlink from plan';
|
||||
$lang->action->label->linked2project = 'link to project';
|
||||
$lang->action->label->unlinkedfromproject = 'unlik from project';
|
||||
$lang->action->label->marked = 'edited';
|
||||
$lang->action->label->started = 'started';
|
||||
$lang->action->label->recorded = 'log hour';
|
||||
$lang->action->label->canceled = 'canceled';
|
||||
$lang->action->label->finished = 'finished';
|
||||
$lang->action->label->login = 'login';
|
||||
$lang->action->label->logout = "logout";
|
||||
|
||||
/* Link of every action. */
|
||||
$lang->action->label->product = 'product|product|view|productID=%s';
|
||||
$lang->action->label->productplan = 'plan|productplan|view|productID=%s';
|
||||
$lang->action->label->release = 'release|release|view|productID=%s';
|
||||
$lang->action->label->story = 'story|story|view|storyID=%s';
|
||||
$lang->action->label->project = 'project|project|view|projectID=%s';
|
||||
$lang->action->label->task = 'task|task|view|taskID=%s';
|
||||
$lang->action->label->build = 'build|build|view|buildID=%s';
|
||||
$lang->action->label->bug = 'bug|bug|view|bugID=%s';
|
||||
$lang->action->label->case = 'case|testcase|view|caseID=%s';
|
||||
$lang->action->label->testtask = 'test task|testtask|view|caseID=%s';
|
||||
$lang->action->label->todo = 'todo|todo|view|todoID=%s';
|
||||
$lang->action->label->doclib = 'doc library|doc|browse|libID=%s';
|
||||
$lang->action->label->doc = 'doc|doc|view|docID=%s';
|
||||
$lang->action->label->user = 'user';
|
||||
$lang->action->label->space = ' ';
|
||||
|
||||
/* Object type. */
|
||||
$lang->action->search->objectTypeList[''] = '';
|
||||
$lang->action->search->objectTypeList['product'] = 'product';
|
||||
$lang->action->search->objectTypeList['project'] = 'project';
|
||||
$lang->action->search->objectTypeList['bug'] = 'bug';
|
||||
$lang->action->search->objectTypeList['case'] = 'case';
|
||||
$lang->action->search->objectTypeList['story'] = 'story';
|
||||
$lang->action->search->objectTypeList['task'] = 'task';
|
||||
$lang->action->search->objectTypeList['testtask'] = 'testtask';
|
||||
$lang->action->search->objectTypeList['user'] = 'user';
|
||||
$lang->action->search->objectTypeList['doc'] = 'doc';
|
||||
$lang->action->search->objectTypeList['doclib'] = 'doclib';
|
||||
$lang->action->search->objectTypeList['todo'] = 'todo';
|
||||
$lang->action->search->objectTypeList['build'] = 'build';
|
||||
$lang->action->search->objectTypeList['release'] = 'release';
|
||||
$lang->action->search->objectTypeList['productplan'] = 'productplan';
|
||||
|
||||
/* Display action for search. */
|
||||
$lang->action->search->label[''] = '';
|
||||
$lang->action->search->label['created'] = $lang->action->label->created;
|
||||
$lang->action->search->label['opened'] = $lang->action->label->opened;
|
||||
$lang->action->search->label['changed'] = $lang->action->label->changed;
|
||||
$lang->action->search->label['edited'] = $lang->action->label->edited;
|
||||
$lang->action->search->label['assigned'] = $lang->action->label->assigned;
|
||||
$lang->action->search->label['closed'] = $lang->action->label->closed;
|
||||
$lang->action->search->label['deleted'] = $lang->action->label->deleted;
|
||||
$lang->action->search->label['deletedfile'] = $lang->action->label->deletedfile;
|
||||
$lang->action->search->label['editfile'] = $lang->action->label->editfile;
|
||||
$lang->action->search->label['erased'] = $lang->action->label->erased;
|
||||
$lang->action->search->label['undeleted'] = $lang->action->label->undeleted;
|
||||
$lang->action->search->label['hidden'] = $lang->action->label->hidden;
|
||||
$lang->action->search->label['commented'] = $lang->action->label->commented;
|
||||
$lang->action->search->label['activated'] = $lang->action->label->activated;
|
||||
$lang->action->search->label['resolved'] = $lang->action->label->resolved;
|
||||
$lang->action->search->label['reviewed'] = $lang->action->label->reviewed;
|
||||
$lang->action->search->label['moved'] = $lang->action->label->moved;
|
||||
$lang->action->search->label['confirmed'] = $lang->action->label->confirmed;
|
||||
$lang->action->search->label['bugconfirmed'] = $lang->action->label->bugconfirmed;
|
||||
$lang->action->search->label['tostory'] = $lang->action->label->tostory;
|
||||
$lang->action->search->label['frombug'] = $lang->action->label->frombug;
|
||||
$lang->action->search->label['totask'] = $lang->action->label->totask;
|
||||
$lang->action->search->label['svncommited'] = $lang->action->label->svncommited;
|
||||
$lang->action->search->label['linked2plan'] = $lang->action->label->linked2plan;
|
||||
$lang->action->search->label['unlinkedfromplan'] = $lang->action->label->unlinkedfromplan;
|
||||
$lang->action->search->label['linked2project'] = $lang->action->label->linked2project;
|
||||
$lang->action->search->label['unlinkedfromproject'] = $lang->action->label->unlinkedfromproject;
|
||||
$lang->action->search->label['marked'] = $lang->action->label->marked;
|
||||
$lang->action->search->label['started'] = $lang->action->label->started;
|
||||
$lang->action->search->label['canceled'] = $lang->action->label->canceled;
|
||||
$lang->action->search->label['finished'] = $lang->action->label->finished;
|
||||
$lang->action->search->label['login'] = $lang->action->label->login;
|
||||
$lang->action->search->label['logout'] = $lang->action->label->logout;
|
||||
|
||||
@@ -1,194 +1,194 @@
|
||||
<?php
|
||||
/**
|
||||
* The action module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package action
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->action->common = '系统日志';
|
||||
$lang->action->trash = '回收站';
|
||||
$lang->action->undelete = '还原';
|
||||
$lang->action->hide = '隐藏';
|
||||
|
||||
$lang->action->product = '产品';
|
||||
$lang->action->project = '项目';
|
||||
$lang->action->objectType = '对象类型';
|
||||
$lang->action->objectID = '对象ID';
|
||||
$lang->action->objectName = '对象名称';
|
||||
$lang->action->actor = '操作者';
|
||||
$lang->action->action = '动作';
|
||||
$lang->action->actionID = '记录ID';
|
||||
$lang->action->date = '日期';
|
||||
$lang->action->trashTips = '提示:为了保证系统的完整性,禅道系统的删除都是标记删除。';
|
||||
$lang->action->textDiff = '文本格式';
|
||||
$lang->action->original = '原始格式';
|
||||
|
||||
$lang->action->dynamic = new stdclass();
|
||||
$lang->action->dynamic->today = '今天';
|
||||
$lang->action->dynamic->yesterday = '昨天';
|
||||
$lang->action->dynamic->twoDaysAgo = '前天';
|
||||
$lang->action->dynamic->thisWeek = '本周';
|
||||
$lang->action->dynamic->lastWeek = '上周';
|
||||
$lang->action->dynamic->thisMonth = '本月';
|
||||
$lang->action->dynamic->lastMonth = '上月';
|
||||
$lang->action->dynamic->all = '所有';
|
||||
$lang->action->dynamic->search = '搜索';
|
||||
|
||||
$lang->action->objectTypes['product'] = '产品';
|
||||
$lang->action->objectTypes['story'] = '需求';
|
||||
$lang->action->objectTypes['productplan'] = '产品计划';
|
||||
$lang->action->objectTypes['release'] = '发布';
|
||||
$lang->action->objectTypes['project'] = '项目';
|
||||
$lang->action->objectTypes['task'] = '任务';
|
||||
$lang->action->objectTypes['build'] = 'Build';
|
||||
$lang->action->objectTypes['bug'] = 'Bug';
|
||||
$lang->action->objectTypes['case'] = '用例';
|
||||
$lang->action->objectTypes['testtask'] = '测试任务';
|
||||
$lang->action->objectTypes['user'] = '用户';
|
||||
$lang->action->objectTypes['doc'] = '文档';
|
||||
$lang->action->objectTypes['doclib'] = '文档库';
|
||||
$lang->action->objectTypes['todo'] = 'TODO';
|
||||
|
||||
/* 用来描述操作历史记录。*/
|
||||
$lang->action->desc = new stdclass();
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> by <strong>$actor</strong>。' . "\n";
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> as <strong>$extra</strong> by <strong>$actor</strong>。' . "\n";
|
||||
$lang->action->desc->opened = '$date, 由 <strong>$actor</strong> 创建。' . "\n";
|
||||
$lang->action->desc->created = '$date, 由 <strong>$actor</strong> 创建。' . "\n";
|
||||
$lang->action->desc->changed = '$date, 由 <strong>$actor</strong> 变更。' . "\n";
|
||||
$lang->action->desc->edited = '$date, 由 <strong>$actor</strong> 编辑。' . "\n";
|
||||
$lang->action->desc->assigned = '$date, 由 <strong>$actor</strong> 指派给 <strong>$extra</strong>。' . "\n";
|
||||
$lang->action->desc->closed = '$date, 由 <strong>$actor</strong> 关闭。' . "\n";
|
||||
$lang->action->desc->deleted = '$date, 由 <strong>$actor</strong> 删除。' . "\n";
|
||||
$lang->action->desc->deletedfile = '$date, 由 <strong>$actor</strong> 删除了附件:<strong><i>$extra</i></strong>。' . "\n";
|
||||
$lang->action->desc->editfile = '$date, 由 <strong>$actor</strong> 编辑了附件:<strong><i>$extra</i></strong>。' . "\n";
|
||||
$lang->action->desc->erased = '$date, 由 <strong>$actor</strong> 删除。' . "\n";
|
||||
$lang->action->desc->undeleted = '$date, 由 <strong>$actor</strong> 还原。' . "\n";
|
||||
$lang->action->desc->hidden = '$date, 由 <strong>$actor</strong> 隐藏。' . "\n";
|
||||
$lang->action->desc->commented = '$date, 由 <strong>$actor</strong> 添加备注。' . "\n";
|
||||
$lang->action->desc->activated = '$date, 由 <strong>$actor</strong> 激活。' . "\n";
|
||||
$lang->action->desc->moved = '$date, 由 <strong>$actor</strong> 移动,之前为 "$extra"。' . "\n";
|
||||
$lang->action->desc->confirmed = '$date, 由 <strong>$actor</strong> 确认需求变动,最新版本为<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->bugconfirmed = '$date, 由 <strong>$actor</strong> 确认Bug。' . "\n";
|
||||
$lang->action->desc->frombug = '$date, 由 <strong>$actor</strong> Bug转化而来,Bug编号为 <strong>$extra</strong>。';
|
||||
$lang->action->desc->started = '$date, 由 <strong>$actor</strong> 启动。' . "\n";
|
||||
$lang->action->desc->delayed = '$date, 由 <strong>$actor</strong> 延期。' . "\n";
|
||||
$lang->action->desc->suspended = '$date, 由 <strong>$actor</strong> 挂起。' . "\n";
|
||||
$lang->action->desc->recorded = '$date, 由 <strong>$actor</strong> 记录工时,消耗了 <strong>$extra</strong> 小时 。' . "\n";
|
||||
$lang->action->desc->canceled = '$date, 由 <strong>$actor</strong> 取消。' . "\n";
|
||||
$lang->action->desc->svncommited = '$date, 由 <strong>$actor</strong> 提交代码,版本为<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->finished = '$date, 由 <strong>$actor</strong> 完成。' . "\n";
|
||||
$lang->action->desc->diff1 = '修改了 <strong><i>%s</i></strong>,旧值为 "%s",新值为 "%s"。<br />' . "\n";
|
||||
$lang->action->desc->diff2 = '修改了 <strong><i>%s</i></strong>,区别为:' . "\n" . "<blockquote>%s</blockquote>" . "\n<div class='hidden'>%s</div>";
|
||||
$lang->action->desc->diff3 = '将文件名 %s 改为 %s 。' . "\n";
|
||||
|
||||
/* 用来显示动态信息。*/
|
||||
$lang->action->label = new stdclass();
|
||||
$lang->action->label->created = '创建了';
|
||||
$lang->action->label->opened = '创建了';
|
||||
$lang->action->label->changed = '变更了';
|
||||
$lang->action->label->edited = '编辑了';
|
||||
$lang->action->label->assigned = '指派了';
|
||||
$lang->action->label->closed = '关闭了';
|
||||
$lang->action->label->deleted = '删除了';
|
||||
$lang->action->label->deletedfile = '删除附件';
|
||||
$lang->action->label->editfile = '编辑附件';
|
||||
$lang->action->label->erased = '删除了';
|
||||
$lang->action->label->undeleted = '还原了';
|
||||
$lang->action->label->hidden = '隐藏了';
|
||||
$lang->action->label->commented = '评论了';
|
||||
$lang->action->label->activated = '激活了';
|
||||
$lang->action->label->resolved = '解决了';
|
||||
$lang->action->label->reviewed = '评审了';
|
||||
$lang->action->label->moved = '移动了';
|
||||
$lang->action->label->confirmed = '确认了需求,';
|
||||
$lang->action->label->bugconfirmed = '确认了';
|
||||
$lang->action->label->tostory = '转需求';
|
||||
$lang->action->label->frombug = '转需求';
|
||||
$lang->action->label->totask = '转任务';
|
||||
$lang->action->label->svncommited = '提交代码';
|
||||
$lang->action->label->linked2plan = '关联计划';
|
||||
$lang->action->label->unlinkedfromplan = '移除计划';
|
||||
$lang->action->label->linked2project = '关联项目';
|
||||
$lang->action->label->unlinkedfromproject = '移除项目';
|
||||
$lang->action->label->marked = '编辑了';
|
||||
$lang->action->label->started = '开始了';
|
||||
$lang->action->label->recorded = '记录了工时';
|
||||
$lang->action->label->canceled = '取消了';
|
||||
$lang->action->label->finished = '完成了';
|
||||
$lang->action->label->login = '登录系统';
|
||||
$lang->action->label->logout = "退出登录";
|
||||
|
||||
/* 用来生成相应对象的链接。*/
|
||||
$lang->action->label->product = '产品|product|view|productID=%s';
|
||||
$lang->action->label->productplan = '计划|productplan|view|productID=%s';
|
||||
$lang->action->label->release = '发布|release|view|productID=%s';
|
||||
$lang->action->label->story = '需求|story|view|storyID=%s';
|
||||
$lang->action->label->project = '项目|project|view|projectID=%s';
|
||||
$lang->action->label->task = '任务|task|view|taskID=%s';
|
||||
$lang->action->label->build = 'Build|build|view|buildID=%s';
|
||||
$lang->action->label->bug = 'Bug|bug|view|bugID=%s';
|
||||
$lang->action->label->case = '用例|testcase|view|caseID=%s';
|
||||
$lang->action->label->testtask = '测试任务|testtask|view|caseID=%s';
|
||||
$lang->action->label->todo = 'todo|todo|view|todoID=%s';
|
||||
$lang->action->label->doclib = '文档库|doc|browse|libID=%s';
|
||||
$lang->action->label->doc = '文档|doc|view|docID=%s';
|
||||
$lang->action->label->user = '用户|user|view|account=%s';
|
||||
$lang->action->label->space = ' ';
|
||||
|
||||
/* Object type. */
|
||||
$lang->action->search->objectTypeList[''] = '';
|
||||
$lang->action->search->objectTypeList['product'] = '产品';
|
||||
$lang->action->search->objectTypeList['project'] = '项目';
|
||||
$lang->action->search->objectTypeList['bug'] = 'Bug';
|
||||
$lang->action->search->objectTypeList['case'] = '用例';
|
||||
$lang->action->search->objectTypeList['story'] = '需求';
|
||||
$lang->action->search->objectTypeList['task'] = '任务';
|
||||
$lang->action->search->objectTypeList['testtask'] = '测试任务';
|
||||
$lang->action->search->objectTypeList['user'] = '用户';
|
||||
$lang->action->search->objectTypeList['doc'] = '文档';
|
||||
$lang->action->search->objectTypeList['doclib'] = '文档库';
|
||||
$lang->action->search->objectTypeList['todo'] = 'TODO';
|
||||
$lang->action->search->objectTypeList['build'] = 'Build';
|
||||
$lang->action->search->objectTypeList['release'] = '发布';
|
||||
$lang->action->search->objectTypeList['productplan'] = '计划';
|
||||
|
||||
/* 用来在动态显示中显示动作 */
|
||||
$lang->action->search->label[''] = '';
|
||||
$lang->action->search->label['created'] = $lang->action->label->created;
|
||||
$lang->action->search->label['opened'] = $lang->action->label->opened;
|
||||
$lang->action->search->label['changed'] = $lang->action->label->changed;
|
||||
$lang->action->search->label['edited'] = $lang->action->label->edited;
|
||||
$lang->action->search->label['assigned'] = $lang->action->label->assigned;
|
||||
$lang->action->search->label['closed'] = $lang->action->label->closed;
|
||||
$lang->action->search->label['deleted'] = $lang->action->label->deleted;
|
||||
$lang->action->search->label['deletedfile'] = $lang->action->label->deletedfile;
|
||||
$lang->action->search->label['editfile'] = $lang->action->label->editfile;
|
||||
$lang->action->search->label['erased'] = $lang->action->label->erased;
|
||||
$lang->action->search->label['undeleted'] = $lang->action->label->undeleted;
|
||||
$lang->action->search->label['hidden'] = $lang->action->label->hidden;
|
||||
$lang->action->search->label['commented'] = $lang->action->label->commented;
|
||||
$lang->action->search->label['activated'] = $lang->action->label->activated;
|
||||
$lang->action->search->label['resolved'] = $lang->action->label->resolved;
|
||||
$lang->action->search->label['reviewed'] = $lang->action->label->reviewed;
|
||||
$lang->action->search->label['moved'] = $lang->action->label->moved;
|
||||
$lang->action->search->label['confirmed'] = $lang->action->label->confirmed;
|
||||
$lang->action->search->label['bugconfirmed'] = $lang->action->label->bugconfirmed;
|
||||
$lang->action->search->label['tostory'] = $lang->action->label->tostory;
|
||||
$lang->action->search->label['frombug'] = $lang->action->label->frombug;
|
||||
$lang->action->search->label['totask'] = $lang->action->label->totask;
|
||||
$lang->action->search->label['svncommited'] = $lang->action->label->svncommited;
|
||||
$lang->action->search->label['linked2plan'] = $lang->action->label->linked2plan;
|
||||
$lang->action->search->label['unlinkedfromplan'] = $lang->action->label->unlinkedfromplan;
|
||||
$lang->action->search->label['linked2project'] = $lang->action->label->linked2project;
|
||||
$lang->action->search->label['unlinkedfromproject'] = $lang->action->label->unlinkedfromproject;
|
||||
$lang->action->search->label['marked'] = $lang->action->label->marked;
|
||||
$lang->action->search->label['started'] = $lang->action->label->started;
|
||||
$lang->action->search->label['canceled'] = $lang->action->label->canceled;
|
||||
$lang->action->search->label['finished'] = $lang->action->label->finished;
|
||||
$lang->action->search->label['login'] = $lang->action->label->login;
|
||||
$lang->action->search->label['logout'] = $lang->action->label->logout;
|
||||
<?php
|
||||
/**
|
||||
* The action module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package action
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->action->common = '系统日志';
|
||||
$lang->action->trash = '回收站';
|
||||
$lang->action->undelete = '还原';
|
||||
$lang->action->hide = '隐藏';
|
||||
|
||||
$lang->action->product = '产品';
|
||||
$lang->action->project = '项目';
|
||||
$lang->action->objectType = '对象类型';
|
||||
$lang->action->objectID = '对象ID';
|
||||
$lang->action->objectName = '对象名称';
|
||||
$lang->action->actor = '操作者';
|
||||
$lang->action->action = '动作';
|
||||
$lang->action->actionID = '记录ID';
|
||||
$lang->action->date = '日期';
|
||||
$lang->action->trashTips = '提示:为了保证系统的完整性,禅道系统的删除都是标记删除。';
|
||||
$lang->action->textDiff = '文本格式';
|
||||
$lang->action->original = '原始格式';
|
||||
|
||||
$lang->action->dynamic = new stdclass();
|
||||
$lang->action->dynamic->today = '今天';
|
||||
$lang->action->dynamic->yesterday = '昨天';
|
||||
$lang->action->dynamic->twoDaysAgo = '前天';
|
||||
$lang->action->dynamic->thisWeek = '本周';
|
||||
$lang->action->dynamic->lastWeek = '上周';
|
||||
$lang->action->dynamic->thisMonth = '本月';
|
||||
$lang->action->dynamic->lastMonth = '上月';
|
||||
$lang->action->dynamic->all = '所有';
|
||||
$lang->action->dynamic->search = '搜索';
|
||||
|
||||
$lang->action->objectTypes['product'] = '产品';
|
||||
$lang->action->objectTypes['story'] = '需求';
|
||||
$lang->action->objectTypes['productplan'] = '产品计划';
|
||||
$lang->action->objectTypes['release'] = '发布';
|
||||
$lang->action->objectTypes['project'] = '项目';
|
||||
$lang->action->objectTypes['task'] = '任务';
|
||||
$lang->action->objectTypes['build'] = 'Build';
|
||||
$lang->action->objectTypes['bug'] = 'Bug';
|
||||
$lang->action->objectTypes['case'] = '用例';
|
||||
$lang->action->objectTypes['testtask'] = '测试任务';
|
||||
$lang->action->objectTypes['user'] = '用户';
|
||||
$lang->action->objectTypes['doc'] = '文档';
|
||||
$lang->action->objectTypes['doclib'] = '文档库';
|
||||
$lang->action->objectTypes['todo'] = 'TODO';
|
||||
|
||||
/* 用来描述操作历史记录。*/
|
||||
$lang->action->desc = new stdclass();
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> by <strong>$actor</strong>。' . "\n";
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> as <strong>$extra</strong> by <strong>$actor</strong>。' . "\n";
|
||||
$lang->action->desc->opened = '$date, 由 <strong>$actor</strong> 创建。' . "\n";
|
||||
$lang->action->desc->created = '$date, 由 <strong>$actor</strong> 创建。' . "\n";
|
||||
$lang->action->desc->changed = '$date, 由 <strong>$actor</strong> 变更。' . "\n";
|
||||
$lang->action->desc->edited = '$date, 由 <strong>$actor</strong> 编辑。' . "\n";
|
||||
$lang->action->desc->assigned = '$date, 由 <strong>$actor</strong> 指派给 <strong>$extra</strong>。' . "\n";
|
||||
$lang->action->desc->closed = '$date, 由 <strong>$actor</strong> 关闭。' . "\n";
|
||||
$lang->action->desc->deleted = '$date, 由 <strong>$actor</strong> 删除。' . "\n";
|
||||
$lang->action->desc->deletedfile = '$date, 由 <strong>$actor</strong> 删除了附件:<strong><i>$extra</i></strong>。' . "\n";
|
||||
$lang->action->desc->editfile = '$date, 由 <strong>$actor</strong> 编辑了附件:<strong><i>$extra</i></strong>。' . "\n";
|
||||
$lang->action->desc->erased = '$date, 由 <strong>$actor</strong> 删除。' . "\n";
|
||||
$lang->action->desc->undeleted = '$date, 由 <strong>$actor</strong> 还原。' . "\n";
|
||||
$lang->action->desc->hidden = '$date, 由 <strong>$actor</strong> 隐藏。' . "\n";
|
||||
$lang->action->desc->commented = '$date, 由 <strong>$actor</strong> 添加备注。' . "\n";
|
||||
$lang->action->desc->activated = '$date, 由 <strong>$actor</strong> 激活。' . "\n";
|
||||
$lang->action->desc->moved = '$date, 由 <strong>$actor</strong> 移动,之前为 "$extra"。' . "\n";
|
||||
$lang->action->desc->confirmed = '$date, 由 <strong>$actor</strong> 确认需求变动,最新版本为<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->bugconfirmed = '$date, 由 <strong>$actor</strong> 确认Bug。' . "\n";
|
||||
$lang->action->desc->frombug = '$date, 由 <strong>$actor</strong> Bug转化而来,Bug编号为 <strong>$extra</strong>。';
|
||||
$lang->action->desc->started = '$date, 由 <strong>$actor</strong> 启动。' . "\n";
|
||||
$lang->action->desc->delayed = '$date, 由 <strong>$actor</strong> 延期。' . "\n";
|
||||
$lang->action->desc->suspended = '$date, 由 <strong>$actor</strong> 挂起。' . "\n";
|
||||
$lang->action->desc->recorded = '$date, 由 <strong>$actor</strong> 记录工时,消耗了 <strong>$extra</strong> 小时 。' . "\n";
|
||||
$lang->action->desc->canceled = '$date, 由 <strong>$actor</strong> 取消。' . "\n";
|
||||
$lang->action->desc->svncommited = '$date, 由 <strong>$actor</strong> 提交代码,版本为<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->finished = '$date, 由 <strong>$actor</strong> 完成。' . "\n";
|
||||
$lang->action->desc->diff1 = '修改了 <strong><i>%s</i></strong>,旧值为 "%s",新值为 "%s"。<br />' . "\n";
|
||||
$lang->action->desc->diff2 = '修改了 <strong><i>%s</i></strong>,区别为:' . "\n" . "<blockquote>%s</blockquote>" . "\n<div class='hidden'>%s</div>";
|
||||
$lang->action->desc->diff3 = '将文件名 %s 改为 %s 。' . "\n";
|
||||
|
||||
/* 用来显示动态信息。*/
|
||||
$lang->action->label = new stdclass();
|
||||
$lang->action->label->created = '创建了';
|
||||
$lang->action->label->opened = '创建了';
|
||||
$lang->action->label->changed = '变更了';
|
||||
$lang->action->label->edited = '编辑了';
|
||||
$lang->action->label->assigned = '指派了';
|
||||
$lang->action->label->closed = '关闭了';
|
||||
$lang->action->label->deleted = '删除了';
|
||||
$lang->action->label->deletedfile = '删除附件';
|
||||
$lang->action->label->editfile = '编辑附件';
|
||||
$lang->action->label->erased = '删除了';
|
||||
$lang->action->label->undeleted = '还原了';
|
||||
$lang->action->label->hidden = '隐藏了';
|
||||
$lang->action->label->commented = '评论了';
|
||||
$lang->action->label->activated = '激活了';
|
||||
$lang->action->label->resolved = '解决了';
|
||||
$lang->action->label->reviewed = '评审了';
|
||||
$lang->action->label->moved = '移动了';
|
||||
$lang->action->label->confirmed = '确认了需求,';
|
||||
$lang->action->label->bugconfirmed = '确认了';
|
||||
$lang->action->label->tostory = '转需求';
|
||||
$lang->action->label->frombug = '转需求';
|
||||
$lang->action->label->totask = '转任务';
|
||||
$lang->action->label->svncommited = '提交代码';
|
||||
$lang->action->label->linked2plan = '关联计划';
|
||||
$lang->action->label->unlinkedfromplan = '移除计划';
|
||||
$lang->action->label->linked2project = '关联项目';
|
||||
$lang->action->label->unlinkedfromproject = '移除项目';
|
||||
$lang->action->label->marked = '编辑了';
|
||||
$lang->action->label->started = '开始了';
|
||||
$lang->action->label->recorded = '记录了工时';
|
||||
$lang->action->label->canceled = '取消了';
|
||||
$lang->action->label->finished = '完成了';
|
||||
$lang->action->label->login = '登录系统';
|
||||
$lang->action->label->logout = "退出登录";
|
||||
|
||||
/* 用来生成相应对象的链接。*/
|
||||
$lang->action->label->product = '产品|product|view|productID=%s';
|
||||
$lang->action->label->productplan = '计划|productplan|view|productID=%s';
|
||||
$lang->action->label->release = '发布|release|view|productID=%s';
|
||||
$lang->action->label->story = '需求|story|view|storyID=%s';
|
||||
$lang->action->label->project = '项目|project|view|projectID=%s';
|
||||
$lang->action->label->task = '任务|task|view|taskID=%s';
|
||||
$lang->action->label->build = 'Build|build|view|buildID=%s';
|
||||
$lang->action->label->bug = 'Bug|bug|view|bugID=%s';
|
||||
$lang->action->label->case = '用例|testcase|view|caseID=%s';
|
||||
$lang->action->label->testtask = '测试任务|testtask|view|caseID=%s';
|
||||
$lang->action->label->todo = 'todo|todo|view|todoID=%s';
|
||||
$lang->action->label->doclib = '文档库|doc|browse|libID=%s';
|
||||
$lang->action->label->doc = '文档|doc|view|docID=%s';
|
||||
$lang->action->label->user = '用户|user|view|account=%s';
|
||||
$lang->action->label->space = ' ';
|
||||
|
||||
/* Object type. */
|
||||
$lang->action->search->objectTypeList[''] = '';
|
||||
$lang->action->search->objectTypeList['product'] = '产品';
|
||||
$lang->action->search->objectTypeList['project'] = '项目';
|
||||
$lang->action->search->objectTypeList['bug'] = 'Bug';
|
||||
$lang->action->search->objectTypeList['case'] = '用例';
|
||||
$lang->action->search->objectTypeList['story'] = '需求';
|
||||
$lang->action->search->objectTypeList['task'] = '任务';
|
||||
$lang->action->search->objectTypeList['testtask'] = '测试任务';
|
||||
$lang->action->search->objectTypeList['user'] = '用户';
|
||||
$lang->action->search->objectTypeList['doc'] = '文档';
|
||||
$lang->action->search->objectTypeList['doclib'] = '文档库';
|
||||
$lang->action->search->objectTypeList['todo'] = 'TODO';
|
||||
$lang->action->search->objectTypeList['build'] = 'Build';
|
||||
$lang->action->search->objectTypeList['release'] = '发布';
|
||||
$lang->action->search->objectTypeList['productplan'] = '计划';
|
||||
|
||||
/* 用来在动态显示中显示动作 */
|
||||
$lang->action->search->label[''] = '';
|
||||
$lang->action->search->label['created'] = $lang->action->label->created;
|
||||
$lang->action->search->label['opened'] = $lang->action->label->opened;
|
||||
$lang->action->search->label['changed'] = $lang->action->label->changed;
|
||||
$lang->action->search->label['edited'] = $lang->action->label->edited;
|
||||
$lang->action->search->label['assigned'] = $lang->action->label->assigned;
|
||||
$lang->action->search->label['closed'] = $lang->action->label->closed;
|
||||
$lang->action->search->label['deleted'] = $lang->action->label->deleted;
|
||||
$lang->action->search->label['deletedfile'] = $lang->action->label->deletedfile;
|
||||
$lang->action->search->label['editfile'] = $lang->action->label->editfile;
|
||||
$lang->action->search->label['erased'] = $lang->action->label->erased;
|
||||
$lang->action->search->label['undeleted'] = $lang->action->label->undeleted;
|
||||
$lang->action->search->label['hidden'] = $lang->action->label->hidden;
|
||||
$lang->action->search->label['commented'] = $lang->action->label->commented;
|
||||
$lang->action->search->label['activated'] = $lang->action->label->activated;
|
||||
$lang->action->search->label['resolved'] = $lang->action->label->resolved;
|
||||
$lang->action->search->label['reviewed'] = $lang->action->label->reviewed;
|
||||
$lang->action->search->label['moved'] = $lang->action->label->moved;
|
||||
$lang->action->search->label['confirmed'] = $lang->action->label->confirmed;
|
||||
$lang->action->search->label['bugconfirmed'] = $lang->action->label->bugconfirmed;
|
||||
$lang->action->search->label['tostory'] = $lang->action->label->tostory;
|
||||
$lang->action->search->label['frombug'] = $lang->action->label->frombug;
|
||||
$lang->action->search->label['totask'] = $lang->action->label->totask;
|
||||
$lang->action->search->label['svncommited'] = $lang->action->label->svncommited;
|
||||
$lang->action->search->label['linked2plan'] = $lang->action->label->linked2plan;
|
||||
$lang->action->search->label['unlinkedfromplan'] = $lang->action->label->unlinkedfromplan;
|
||||
$lang->action->search->label['linked2project'] = $lang->action->label->linked2project;
|
||||
$lang->action->search->label['unlinkedfromproject'] = $lang->action->label->unlinkedfromproject;
|
||||
$lang->action->search->label['marked'] = $lang->action->label->marked;
|
||||
$lang->action->search->label['started'] = $lang->action->label->started;
|
||||
$lang->action->search->label['canceled'] = $lang->action->label->canceled;
|
||||
$lang->action->search->label['finished'] = $lang->action->label->finished;
|
||||
$lang->action->search->label['login'] = $lang->action->label->login;
|
||||
$lang->action->search->label['logout'] = $lang->action->label->logout;
|
||||
|
||||
@@ -1,190 +1,190 @@
|
||||
<?php
|
||||
/**
|
||||
* The action module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package action
|
||||
* @version $Id: zh-tw.php 3864 2012-12-20 08:00:07Z wyd621@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->action->common = '系統日誌';
|
||||
$lang->action->trash = '資源回收筒';
|
||||
$lang->action->undelete = '還原';
|
||||
$lang->action->hide = '隱藏';
|
||||
|
||||
$lang->action->product = '產品';
|
||||
$lang->action->project = '項目';
|
||||
$lang->action->objectType = '對象類型';
|
||||
$lang->action->objectID = '對象ID';
|
||||
$lang->action->objectName = '對象名稱';
|
||||
$lang->action->actor = '操作者';
|
||||
$lang->action->action = '動作';
|
||||
$lang->action->actionID = '記錄ID';
|
||||
$lang->action->date = '日期';
|
||||
$lang->action->trashTips = '提示:為了保證系統的完整性,禪道系統的刪除都是標記刪除。';
|
||||
$lang->action->textDiff = '文本格式';
|
||||
$lang->action->original = '原始格式';
|
||||
|
||||
$lang->action->dynamic = new stdclass();
|
||||
$lang->action->dynamic->today = '今天';
|
||||
$lang->action->dynamic->yesterday = '昨天';
|
||||
$lang->action->dynamic->twoDaysAgo = '前天';
|
||||
$lang->action->dynamic->thisWeek = '本週';
|
||||
$lang->action->dynamic->lastWeek = '上周';
|
||||
$lang->action->dynamic->thisMonth = '本月';
|
||||
$lang->action->dynamic->lastMonth = '上月';
|
||||
$lang->action->dynamic->all = '所有';
|
||||
$lang->action->dynamic->search = '搜索';
|
||||
|
||||
$lang->action->objectTypes['product'] = '產品';
|
||||
$lang->action->objectTypes['story'] = '需求';
|
||||
$lang->action->objectTypes['productplan'] = '產品計劃';
|
||||
$lang->action->objectTypes['release'] = '發佈';
|
||||
$lang->action->objectTypes['project'] = '項目';
|
||||
$lang->action->objectTypes['task'] = '任務';
|
||||
$lang->action->objectTypes['build'] = 'Build';
|
||||
$lang->action->objectTypes['bug'] = 'Bug';
|
||||
$lang->action->objectTypes['case'] = '用例';
|
||||
$lang->action->objectTypes['testtask'] = '測試任務';
|
||||
$lang->action->objectTypes['user'] = '用戶';
|
||||
$lang->action->objectTypes['doc'] = '文檔';
|
||||
$lang->action->objectTypes['doclib'] = '文檔庫';
|
||||
$lang->action->objectTypes['todo'] = 'TODO';
|
||||
|
||||
/* 用來描述操作歷史記錄。*/
|
||||
$lang->action->desc = new stdclass();
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> by <strong>$actor</strong>。' . "\n";
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> as <strong>$extra</strong> by <strong>$actor</strong>。' . "\n";
|
||||
$lang->action->desc->opened = '$date, 由 <strong>$actor</strong> 創建。' . "\n";
|
||||
$lang->action->desc->created = '$date, 由 <strong>$actor</strong> 創建。' . "\n";
|
||||
$lang->action->desc->changed = '$date, 由 <strong>$actor</strong> 變更。' . "\n";
|
||||
$lang->action->desc->edited = '$date, 由 <strong>$actor</strong> 編輯。' . "\n";
|
||||
$lang->action->desc->assigned = '$date, 由 <strong>$actor</strong> 指派給 <strong>$extra</strong>。' . "\n";
|
||||
$lang->action->desc->closed = '$date, 由 <strong>$actor</strong> 關閉。' . "\n";
|
||||
$lang->action->desc->deleted = '$date, 由 <strong>$actor</strong> 刪除。' . "\n";
|
||||
$lang->action->desc->deletedfile = '$date, 由 <strong>$actor</strong> 刪除了附件:<strong><i>$extra</i></strong>。' . "\n";
|
||||
$lang->action->desc->editfile = '$date, 由 <strong>$actor</strong> 編輯了附件:<strong><i>$extra</i></strong>。' . "\n";
|
||||
$lang->action->desc->erased = '$date, 由 <strong>$actor</strong> 刪除。' . "\n";
|
||||
$lang->action->desc->undeleted = '$date, 由 <strong>$actor</strong> 還原。' . "\n";
|
||||
$lang->action->desc->hidden = '$date, 由 <strong>$actor</strong> 隱藏。' . "\n";
|
||||
$lang->action->desc->commented = '$date, 由 <strong>$actor</strong> 添加備註。' . "\n";
|
||||
$lang->action->desc->activated = '$date, 由 <strong>$actor</strong> 激活。' . "\n";
|
||||
$lang->action->desc->moved = '$date, 由 <strong>$actor</strong> 移動,之前為 "$extra"。' . "\n";
|
||||
$lang->action->desc->confirmed = '$date, 由 <strong>$actor</strong> 確認需求變動,最新版本為<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->bugconfirmed = '$date, 由 <strong>$actor</strong> 確認Bug。' . "\n";
|
||||
$lang->action->desc->frombug = '$date, 由 <strong>$actor</strong> Bug轉化而來,Bug編號為 <strong>$extra</strong>。';
|
||||
$lang->action->desc->started = '$date, 由 <strong>$actor</strong> 啟動。' . "\n";
|
||||
$lang->action->desc->canceled = '$date, 由 <strong>$actor</strong> 取消。' . "\n";
|
||||
$lang->action->desc->svncommited = '$date, 由 <strong>$actor</strong> 提交代碼,版本為<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->finished = '$date, 由 <strong>$actor</strong> 完成。' . "\n";
|
||||
$lang->action->desc->diff1 = '修改了 <strong><i>%s</i></strong>,舊值為 "%s",新值為 "%s"。<br />' . "\n";
|
||||
$lang->action->desc->diff2 = '修改了 <strong><i>%s</i></strong>,區別為:' . "\n" . "<blockquote>%s</blockquote>" . "\n<div class='hidden'>%s</div>";
|
||||
$lang->action->desc->diff3 = '將檔案名 %s 改為 %s 。' . "\n";
|
||||
|
||||
/* 用來顯示動態信息。*/
|
||||
$lang->action->label = new stdclass();
|
||||
$lang->action->label->created = '創建了';
|
||||
$lang->action->label->opened = '創建了';
|
||||
$lang->action->label->changed = '變更了';
|
||||
$lang->action->label->edited = '編輯了';
|
||||
$lang->action->label->assigned = '指派了';
|
||||
$lang->action->label->closed = '關閉了';
|
||||
$lang->action->label->deleted = '刪除了';
|
||||
$lang->action->label->deletedfile = '刪除附件';
|
||||
$lang->action->label->editfile = '編輯附件';
|
||||
$lang->action->label->erased = '刪除了';
|
||||
$lang->action->label->undeleted = '還原了';
|
||||
$lang->action->label->hidden = '隱藏了';
|
||||
$lang->action->label->commented = '評論了';
|
||||
$lang->action->label->activated = '激活了';
|
||||
$lang->action->label->resolved = '解決了';
|
||||
$lang->action->label->reviewed = '評審了';
|
||||
$lang->action->label->moved = '移動了';
|
||||
$lang->action->label->confirmed = '確認了需求,';
|
||||
$lang->action->label->bugconfirmed = '確認了';
|
||||
$lang->action->label->tostory = '轉需求';
|
||||
$lang->action->label->frombug = '轉需求';
|
||||
$lang->action->label->totask = '轉任務';
|
||||
$lang->action->label->svncommited = '提交代碼';
|
||||
$lang->action->label->linked2plan = '關聯計劃';
|
||||
$lang->action->label->unlinkedfromplan = '移除計劃';
|
||||
$lang->action->label->linked2project = '關聯項目';
|
||||
$lang->action->label->unlinkedfromproject = '移除項目';
|
||||
$lang->action->label->marked = '編輯了';
|
||||
$lang->action->label->started = '開始了';
|
||||
$lang->action->label->canceled = '取消了';
|
||||
$lang->action->label->finished = '完成了';
|
||||
$lang->action->label->login = '登錄系統';
|
||||
$lang->action->label->logout = "退出登錄";
|
||||
|
||||
/* 用來生成相應對象的連結。*/
|
||||
$lang->action->label->product = '產品|product|view|productID=%s';
|
||||
$lang->action->label->productplan = '計劃|productplan|view|productID=%s';
|
||||
$lang->action->label->release = '發佈|release|view|productID=%s';
|
||||
$lang->action->label->story = '需求|story|view|storyID=%s';
|
||||
$lang->action->label->project = '項目|project|view|projectID=%s';
|
||||
$lang->action->label->task = '任務|task|view|taskID=%s';
|
||||
$lang->action->label->build = 'Build|build|view|buildID=%s';
|
||||
$lang->action->label->bug = 'Bug|bug|view|bugID=%s';
|
||||
$lang->action->label->case = '用例|testcase|view|caseID=%s';
|
||||
$lang->action->label->testtask = '測試任務|testtask|view|caseID=%s';
|
||||
$lang->action->label->todo = 'todo|todo|view|todoID=%s';
|
||||
$lang->action->label->doclib = '文檔庫|doc|browse|libID=%s';
|
||||
$lang->action->label->doc = '文檔|doc|view|docID=%s';
|
||||
$lang->action->label->user = '用戶';
|
||||
$lang->action->label->space = ' ';
|
||||
|
||||
/* Object type. */
|
||||
$lang->action->search->objectTypeList[''] = '';
|
||||
$lang->action->search->objectTypeList['product'] = '產品';
|
||||
$lang->action->search->objectTypeList['project'] = '項目';
|
||||
$lang->action->search->objectTypeList['bug'] = 'Bug';
|
||||
$lang->action->search->objectTypeList['case'] = '用例';
|
||||
$lang->action->search->objectTypeList['story'] = '需求';
|
||||
$lang->action->search->objectTypeList['task'] = '任務';
|
||||
$lang->action->search->objectTypeList['testtask'] = '測試任務';
|
||||
$lang->action->search->objectTypeList['user'] = '用戶';
|
||||
$lang->action->search->objectTypeList['doc'] = '文檔';
|
||||
$lang->action->search->objectTypeList['doclib'] = '文檔庫';
|
||||
$lang->action->search->objectTypeList['todo'] = 'TODO';
|
||||
$lang->action->search->objectTypeList['build'] = 'Build';
|
||||
$lang->action->search->objectTypeList['release'] = '發佈';
|
||||
$lang->action->search->objectTypeList['productplan'] = '計劃';
|
||||
|
||||
/* 用來在動態顯示中顯示動作 */
|
||||
$lang->action->search->label[''] = '';
|
||||
$lang->action->search->label['created'] = $lang->action->label->created;
|
||||
$lang->action->search->label['opened'] = $lang->action->label->opened;
|
||||
$lang->action->search->label['changed'] = $lang->action->label->changed;
|
||||
$lang->action->search->label['edited'] = $lang->action->label->edited;
|
||||
$lang->action->search->label['assigned'] = $lang->action->label->assigned;
|
||||
$lang->action->search->label['closed'] = $lang->action->label->closed;
|
||||
$lang->action->search->label['deleted'] = $lang->action->label->deleted;
|
||||
$lang->action->search->label['deletedfile'] = $lang->action->label->deletedfile;
|
||||
$lang->action->search->label['editfile'] = $lang->action->label->editfile;
|
||||
$lang->action->search->label['erased'] = $lang->action->label->erased;
|
||||
$lang->action->search->label['undeleted'] = $lang->action->label->undeleted;
|
||||
$lang->action->search->label['hidden'] = $lang->action->label->hidden;
|
||||
$lang->action->search->label['commented'] = $lang->action->label->commented;
|
||||
$lang->action->search->label['activated'] = $lang->action->label->activated;
|
||||
$lang->action->search->label['resolved'] = $lang->action->label->resolved;
|
||||
$lang->action->search->label['reviewed'] = $lang->action->label->reviewed;
|
||||
$lang->action->search->label['moved'] = $lang->action->label->moved;
|
||||
$lang->action->search->label['confirmed'] = $lang->action->label->confirmed;
|
||||
$lang->action->search->label['bugconfirmed'] = $lang->action->label->bugconfirmed;
|
||||
$lang->action->search->label['tostory'] = $lang->action->label->tostory;
|
||||
$lang->action->search->label['frombug'] = $lang->action->label->frombug;
|
||||
$lang->action->search->label['totask'] = $lang->action->label->totask;
|
||||
$lang->action->search->label['svncommited'] = $lang->action->label->svncommited;
|
||||
$lang->action->search->label['linked2plan'] = $lang->action->label->linked2plan;
|
||||
$lang->action->search->label['unlinkedfromplan'] = $lang->action->label->unlinkedfromplan;
|
||||
$lang->action->search->label['linked2project'] = $lang->action->label->linked2project;
|
||||
$lang->action->search->label['unlinkedfromproject'] = $lang->action->label->unlinkedfromproject;
|
||||
$lang->action->search->label['marked'] = $lang->action->label->marked;
|
||||
$lang->action->search->label['started'] = $lang->action->label->started;
|
||||
$lang->action->search->label['canceled'] = $lang->action->label->canceled;
|
||||
$lang->action->search->label['finished'] = $lang->action->label->finished;
|
||||
$lang->action->search->label['login'] = $lang->action->label->login;
|
||||
$lang->action->search->label['logout'] = $lang->action->label->logout;
|
||||
<?php
|
||||
/**
|
||||
* The action module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package action
|
||||
* @version $Id: zh-tw.php 3864 2012-12-20 08:00:07Z wyd621@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->action->common = '系統日誌';
|
||||
$lang->action->trash = '資源回收筒';
|
||||
$lang->action->undelete = '還原';
|
||||
$lang->action->hide = '隱藏';
|
||||
|
||||
$lang->action->product = '產品';
|
||||
$lang->action->project = '項目';
|
||||
$lang->action->objectType = '對象類型';
|
||||
$lang->action->objectID = '對象ID';
|
||||
$lang->action->objectName = '對象名稱';
|
||||
$lang->action->actor = '操作者';
|
||||
$lang->action->action = '動作';
|
||||
$lang->action->actionID = '記錄ID';
|
||||
$lang->action->date = '日期';
|
||||
$lang->action->trashTips = '提示:為了保證系統的完整性,禪道系統的刪除都是標記刪除。';
|
||||
$lang->action->textDiff = '文本格式';
|
||||
$lang->action->original = '原始格式';
|
||||
|
||||
$lang->action->dynamic = new stdclass();
|
||||
$lang->action->dynamic->today = '今天';
|
||||
$lang->action->dynamic->yesterday = '昨天';
|
||||
$lang->action->dynamic->twoDaysAgo = '前天';
|
||||
$lang->action->dynamic->thisWeek = '本週';
|
||||
$lang->action->dynamic->lastWeek = '上周';
|
||||
$lang->action->dynamic->thisMonth = '本月';
|
||||
$lang->action->dynamic->lastMonth = '上月';
|
||||
$lang->action->dynamic->all = '所有';
|
||||
$lang->action->dynamic->search = '搜索';
|
||||
|
||||
$lang->action->objectTypes['product'] = '產品';
|
||||
$lang->action->objectTypes['story'] = '需求';
|
||||
$lang->action->objectTypes['productplan'] = '產品計劃';
|
||||
$lang->action->objectTypes['release'] = '發佈';
|
||||
$lang->action->objectTypes['project'] = '項目';
|
||||
$lang->action->objectTypes['task'] = '任務';
|
||||
$lang->action->objectTypes['build'] = 'Build';
|
||||
$lang->action->objectTypes['bug'] = 'Bug';
|
||||
$lang->action->objectTypes['case'] = '用例';
|
||||
$lang->action->objectTypes['testtask'] = '測試任務';
|
||||
$lang->action->objectTypes['user'] = '用戶';
|
||||
$lang->action->objectTypes['doc'] = '文檔';
|
||||
$lang->action->objectTypes['doclib'] = '文檔庫';
|
||||
$lang->action->objectTypes['todo'] = 'TODO';
|
||||
|
||||
/* 用來描述操作歷史記錄。*/
|
||||
$lang->action->desc = new stdclass();
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> by <strong>$actor</strong>。' . "\n";
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> as <strong>$extra</strong> by <strong>$actor</strong>。' . "\n";
|
||||
$lang->action->desc->opened = '$date, 由 <strong>$actor</strong> 創建。' . "\n";
|
||||
$lang->action->desc->created = '$date, 由 <strong>$actor</strong> 創建。' . "\n";
|
||||
$lang->action->desc->changed = '$date, 由 <strong>$actor</strong> 變更。' . "\n";
|
||||
$lang->action->desc->edited = '$date, 由 <strong>$actor</strong> 編輯。' . "\n";
|
||||
$lang->action->desc->assigned = '$date, 由 <strong>$actor</strong> 指派給 <strong>$extra</strong>。' . "\n";
|
||||
$lang->action->desc->closed = '$date, 由 <strong>$actor</strong> 關閉。' . "\n";
|
||||
$lang->action->desc->deleted = '$date, 由 <strong>$actor</strong> 刪除。' . "\n";
|
||||
$lang->action->desc->deletedfile = '$date, 由 <strong>$actor</strong> 刪除了附件:<strong><i>$extra</i></strong>。' . "\n";
|
||||
$lang->action->desc->editfile = '$date, 由 <strong>$actor</strong> 編輯了附件:<strong><i>$extra</i></strong>。' . "\n";
|
||||
$lang->action->desc->erased = '$date, 由 <strong>$actor</strong> 刪除。' . "\n";
|
||||
$lang->action->desc->undeleted = '$date, 由 <strong>$actor</strong> 還原。' . "\n";
|
||||
$lang->action->desc->hidden = '$date, 由 <strong>$actor</strong> 隱藏。' . "\n";
|
||||
$lang->action->desc->commented = '$date, 由 <strong>$actor</strong> 添加備註。' . "\n";
|
||||
$lang->action->desc->activated = '$date, 由 <strong>$actor</strong> 激活。' . "\n";
|
||||
$lang->action->desc->moved = '$date, 由 <strong>$actor</strong> 移動,之前為 "$extra"。' . "\n";
|
||||
$lang->action->desc->confirmed = '$date, 由 <strong>$actor</strong> 確認需求變動,最新版本為<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->bugconfirmed = '$date, 由 <strong>$actor</strong> 確認Bug。' . "\n";
|
||||
$lang->action->desc->frombug = '$date, 由 <strong>$actor</strong> Bug轉化而來,Bug編號為 <strong>$extra</strong>。';
|
||||
$lang->action->desc->started = '$date, 由 <strong>$actor</strong> 啟動。' . "\n";
|
||||
$lang->action->desc->canceled = '$date, 由 <strong>$actor</strong> 取消。' . "\n";
|
||||
$lang->action->desc->svncommited = '$date, 由 <strong>$actor</strong> 提交代碼,版本為<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->finished = '$date, 由 <strong>$actor</strong> 完成。' . "\n";
|
||||
$lang->action->desc->diff1 = '修改了 <strong><i>%s</i></strong>,舊值為 "%s",新值為 "%s"。<br />' . "\n";
|
||||
$lang->action->desc->diff2 = '修改了 <strong><i>%s</i></strong>,區別為:' . "\n" . "<blockquote>%s</blockquote>" . "\n<div class='hidden'>%s</div>";
|
||||
$lang->action->desc->diff3 = '將檔案名 %s 改為 %s 。' . "\n";
|
||||
|
||||
/* 用來顯示動態信息。*/
|
||||
$lang->action->label = new stdclass();
|
||||
$lang->action->label->created = '創建了';
|
||||
$lang->action->label->opened = '創建了';
|
||||
$lang->action->label->changed = '變更了';
|
||||
$lang->action->label->edited = '編輯了';
|
||||
$lang->action->label->assigned = '指派了';
|
||||
$lang->action->label->closed = '關閉了';
|
||||
$lang->action->label->deleted = '刪除了';
|
||||
$lang->action->label->deletedfile = '刪除附件';
|
||||
$lang->action->label->editfile = '編輯附件';
|
||||
$lang->action->label->erased = '刪除了';
|
||||
$lang->action->label->undeleted = '還原了';
|
||||
$lang->action->label->hidden = '隱藏了';
|
||||
$lang->action->label->commented = '評論了';
|
||||
$lang->action->label->activated = '激活了';
|
||||
$lang->action->label->resolved = '解決了';
|
||||
$lang->action->label->reviewed = '評審了';
|
||||
$lang->action->label->moved = '移動了';
|
||||
$lang->action->label->confirmed = '確認了需求,';
|
||||
$lang->action->label->bugconfirmed = '確認了';
|
||||
$lang->action->label->tostory = '轉需求';
|
||||
$lang->action->label->frombug = '轉需求';
|
||||
$lang->action->label->totask = '轉任務';
|
||||
$lang->action->label->svncommited = '提交代碼';
|
||||
$lang->action->label->linked2plan = '關聯計劃';
|
||||
$lang->action->label->unlinkedfromplan = '移除計劃';
|
||||
$lang->action->label->linked2project = '關聯項目';
|
||||
$lang->action->label->unlinkedfromproject = '移除項目';
|
||||
$lang->action->label->marked = '編輯了';
|
||||
$lang->action->label->started = '開始了';
|
||||
$lang->action->label->canceled = '取消了';
|
||||
$lang->action->label->finished = '完成了';
|
||||
$lang->action->label->login = '登錄系統';
|
||||
$lang->action->label->logout = "退出登錄";
|
||||
|
||||
/* 用來生成相應對象的連結。*/
|
||||
$lang->action->label->product = '產品|product|view|productID=%s';
|
||||
$lang->action->label->productplan = '計劃|productplan|view|productID=%s';
|
||||
$lang->action->label->release = '發佈|release|view|productID=%s';
|
||||
$lang->action->label->story = '需求|story|view|storyID=%s';
|
||||
$lang->action->label->project = '項目|project|view|projectID=%s';
|
||||
$lang->action->label->task = '任務|task|view|taskID=%s';
|
||||
$lang->action->label->build = 'Build|build|view|buildID=%s';
|
||||
$lang->action->label->bug = 'Bug|bug|view|bugID=%s';
|
||||
$lang->action->label->case = '用例|testcase|view|caseID=%s';
|
||||
$lang->action->label->testtask = '測試任務|testtask|view|caseID=%s';
|
||||
$lang->action->label->todo = 'todo|todo|view|todoID=%s';
|
||||
$lang->action->label->doclib = '文檔庫|doc|browse|libID=%s';
|
||||
$lang->action->label->doc = '文檔|doc|view|docID=%s';
|
||||
$lang->action->label->user = '用戶';
|
||||
$lang->action->label->space = ' ';
|
||||
|
||||
/* Object type. */
|
||||
$lang->action->search->objectTypeList[''] = '';
|
||||
$lang->action->search->objectTypeList['product'] = '產品';
|
||||
$lang->action->search->objectTypeList['project'] = '項目';
|
||||
$lang->action->search->objectTypeList['bug'] = 'Bug';
|
||||
$lang->action->search->objectTypeList['case'] = '用例';
|
||||
$lang->action->search->objectTypeList['story'] = '需求';
|
||||
$lang->action->search->objectTypeList['task'] = '任務';
|
||||
$lang->action->search->objectTypeList['testtask'] = '測試任務';
|
||||
$lang->action->search->objectTypeList['user'] = '用戶';
|
||||
$lang->action->search->objectTypeList['doc'] = '文檔';
|
||||
$lang->action->search->objectTypeList['doclib'] = '文檔庫';
|
||||
$lang->action->search->objectTypeList['todo'] = 'TODO';
|
||||
$lang->action->search->objectTypeList['build'] = 'Build';
|
||||
$lang->action->search->objectTypeList['release'] = '發佈';
|
||||
$lang->action->search->objectTypeList['productplan'] = '計劃';
|
||||
|
||||
/* 用來在動態顯示中顯示動作 */
|
||||
$lang->action->search->label[''] = '';
|
||||
$lang->action->search->label['created'] = $lang->action->label->created;
|
||||
$lang->action->search->label['opened'] = $lang->action->label->opened;
|
||||
$lang->action->search->label['changed'] = $lang->action->label->changed;
|
||||
$lang->action->search->label['edited'] = $lang->action->label->edited;
|
||||
$lang->action->search->label['assigned'] = $lang->action->label->assigned;
|
||||
$lang->action->search->label['closed'] = $lang->action->label->closed;
|
||||
$lang->action->search->label['deleted'] = $lang->action->label->deleted;
|
||||
$lang->action->search->label['deletedfile'] = $lang->action->label->deletedfile;
|
||||
$lang->action->search->label['editfile'] = $lang->action->label->editfile;
|
||||
$lang->action->search->label['erased'] = $lang->action->label->erased;
|
||||
$lang->action->search->label['undeleted'] = $lang->action->label->undeleted;
|
||||
$lang->action->search->label['hidden'] = $lang->action->label->hidden;
|
||||
$lang->action->search->label['commented'] = $lang->action->label->commented;
|
||||
$lang->action->search->label['activated'] = $lang->action->label->activated;
|
||||
$lang->action->search->label['resolved'] = $lang->action->label->resolved;
|
||||
$lang->action->search->label['reviewed'] = $lang->action->label->reviewed;
|
||||
$lang->action->search->label['moved'] = $lang->action->label->moved;
|
||||
$lang->action->search->label['confirmed'] = $lang->action->label->confirmed;
|
||||
$lang->action->search->label['bugconfirmed'] = $lang->action->label->bugconfirmed;
|
||||
$lang->action->search->label['tostory'] = $lang->action->label->tostory;
|
||||
$lang->action->search->label['frombug'] = $lang->action->label->frombug;
|
||||
$lang->action->search->label['totask'] = $lang->action->label->totask;
|
||||
$lang->action->search->label['svncommited'] = $lang->action->label->svncommited;
|
||||
$lang->action->search->label['linked2plan'] = $lang->action->label->linked2plan;
|
||||
$lang->action->search->label['unlinkedfromplan'] = $lang->action->label->unlinkedfromplan;
|
||||
$lang->action->search->label['linked2project'] = $lang->action->label->linked2project;
|
||||
$lang->action->search->label['unlinkedfromproject'] = $lang->action->label->unlinkedfromproject;
|
||||
$lang->action->search->label['marked'] = $lang->action->label->marked;
|
||||
$lang->action->search->label['started'] = $lang->action->label->started;
|
||||
$lang->action->search->label['canceled'] = $lang->action->label->canceled;
|
||||
$lang->action->search->label['finished'] = $lang->action->label->finished;
|
||||
$lang->action->search->label['login'] = $lang->action->label->login;
|
||||
$lang->action->search->label['logout'] = $lang->action->label->logout;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,54 +1,54 @@
|
||||
<?php
|
||||
/**
|
||||
* The trash view file of action module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package action
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/colorize.html.php';?>
|
||||
<table class='table-1 colored tablesorter'>
|
||||
<?php $vars = "orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}"; ?>
|
||||
<thead>
|
||||
<tr class='colhead'>
|
||||
<th class='w-80px'><?php common::printOrderLink('objectType', $orderBy, $vars, $lang->action->objectType);?></th>
|
||||
<th class='w-id'> <?php common::printOrderLink('objectID', $orderBy, $vars, $lang->idAB);?></th>
|
||||
<th><?php echo $lang->action->objectName;?></th>
|
||||
<th class='w-100px'><?php common::printOrderLink('actor', $orderBy, $vars, $lang->action->actor);?></th>
|
||||
<th class='w-150px'><?php common::printOrderLink('date', $orderBy, $vars, $lang->action->date);?></th>
|
||||
<th class='w-100px'><?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($trashes as $action):?>
|
||||
<?php $module = $action->objectType == 'case' ? 'testcase' : $action->objectType;?>
|
||||
<tr class='a-center'>
|
||||
<td><?php echo $lang->action->objectTypes[$action->objectType];?></td>
|
||||
<td><?php echo $action->objectID;?></td>
|
||||
<td class='a-left'><?php echo html::a($this->createLink($module, 'view', "id=$action->objectID"), $action->objectName);?></td>
|
||||
<td><?php echo $users[$action->actor];?></td>
|
||||
<td><?php echo $action->date;?></td>
|
||||
<td>
|
||||
<?php
|
||||
common::printLink('action', 'undelete', "actionid=$action->id", $lang->action->undelete, 'hiddenwin');
|
||||
common::printLink('action', 'hide', "actionid=$action->id", $lang->action->hide, 'hiddenwin');
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan='6'>
|
||||
<div class='f-left'><?php echo $lang->action->trashTips;?></div>
|
||||
<div><?php $pager->show();?></div>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The trash view file of action module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package action
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/colorize.html.php';?>
|
||||
<table class='table-1 colored tablesorter'>
|
||||
<?php $vars = "orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}"; ?>
|
||||
<thead>
|
||||
<tr class='colhead'>
|
||||
<th class='w-80px'><?php common::printOrderLink('objectType', $orderBy, $vars, $lang->action->objectType);?></th>
|
||||
<th class='w-id'> <?php common::printOrderLink('objectID', $orderBy, $vars, $lang->idAB);?></th>
|
||||
<th><?php echo $lang->action->objectName;?></th>
|
||||
<th class='w-100px'><?php common::printOrderLink('actor', $orderBy, $vars, $lang->action->actor);?></th>
|
||||
<th class='w-150px'><?php common::printOrderLink('date', $orderBy, $vars, $lang->action->date);?></th>
|
||||
<th class='w-100px'><?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($trashes as $action):?>
|
||||
<?php $module = $action->objectType == 'case' ? 'testcase' : $action->objectType;?>
|
||||
<tr class='a-center'>
|
||||
<td><?php echo $lang->action->objectTypes[$action->objectType];?></td>
|
||||
<td><?php echo $action->objectID;?></td>
|
||||
<td class='a-left'><?php echo html::a($this->createLink($module, 'view', "id=$action->objectID"), $action->objectName);?></td>
|
||||
<td><?php echo $users[$action->actor];?></td>
|
||||
<td><?php echo $action->date;?></td>
|
||||
<td>
|
||||
<?php
|
||||
common::printLink('action', 'undelete', "actionid=$action->id", $lang->action->undelete, 'hiddenwin');
|
||||
common::printLink('action', 'hide', "actionid=$action->id", $lang->action->hide, 'hiddenwin');
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan='6'>
|
||||
<div class='f-left'><?php echo $lang->action->trashTips;?></div>
|
||||
<div><?php $pager->show();?></div>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,190 +1,190 @@
|
||||
<?php
|
||||
/**
|
||||
* The control file of admin module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class admin extends control
|
||||
{
|
||||
/**
|
||||
* Index page.
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$community = zget($this->config->global, 'community');
|
||||
if(!$community or $community == 'na')
|
||||
{
|
||||
$this->view->bind = false;
|
||||
$this->view->account = false;
|
||||
$this->view->ignore = $community == 'na';
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->view->bind = true;
|
||||
$this->view->account = $community;
|
||||
$this->view->ignore = false;
|
||||
}
|
||||
|
||||
$this->app->loadLang('misc');
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Ignore notice of register and bind.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function ignore()
|
||||
{
|
||||
$this->loadModel('setting')->setItem('system.common.global.community', 'na');
|
||||
die(js::locate(inlink('index'), 'parent'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Register zentao.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function register()
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$response = $this->admin->registerByAPI();
|
||||
if($response == 'success')
|
||||
{
|
||||
$this->loadModel('setting')->setItem('system.common.global.community', $this->post->account);
|
||||
echo js::alert($this->lang->admin->register->success);
|
||||
die(js::locate(inlink('index'), 'parent'));
|
||||
}
|
||||
die($response);
|
||||
}
|
||||
$this->view->register = $this->admin->getRegisterInfo();
|
||||
$this->view->sn = $this->config->global->sn;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Bind zentao.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function bind()
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$response = $this->admin->bindByAPI();
|
||||
if($response == 'success')
|
||||
{
|
||||
$this->loadModel('setting')->setItem('system.common.global.community', $this->post->account);
|
||||
echo js::alert($this->lang->admin->bind->success);
|
||||
die(js::locate(inlink('index'), 'parent'));
|
||||
}
|
||||
die($response);
|
||||
}
|
||||
$this->view->sn = $this->config->global->sn;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check all tables.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function checkDB()
|
||||
{
|
||||
$tables = $this->dbh->query('SHOW TABLES')->fetchAll();
|
||||
foreach($tables as $table)
|
||||
{
|
||||
$tableName = current((array)$table);
|
||||
$result = $this->dbh->query("REPAIR TABLE $tableName")->fetch();
|
||||
echo "Repairing TABLE: " . $result->Table . "\t" . $result->Msg_type . ":" . $result->Msg_text . "\n";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Rename table for from windows to linux.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function win2Unix()
|
||||
{
|
||||
$renameTables = array(
|
||||
'zt_casestep' => 'zt_caseStep' ,
|
||||
'zt_doclib' => 'zt_docLib' ,
|
||||
'zt_grouppriv' => 'zt_groupPriv' ,
|
||||
'zt_productplan' => 'zt_productPlan' ,
|
||||
'zt_projectproduct' => 'zt_projectProduct' ,
|
||||
'zt_projectstory' => 'zt_projectStory' ,
|
||||
'zt_relationoftasks' => 'zt_relationOfTasks',
|
||||
'zt_storyspec' => 'zt_storySpec' ,
|
||||
'zt_taskestimate' => 'zt_taskEstimate' ,
|
||||
'zt_testresult' => 'zt_testResult' ,
|
||||
'zt_testrun' => 'zt_testRun' ,
|
||||
'zt_testtask' => 'zt_testTask' ,
|
||||
'zt_usercontact' => 'zt_userContact' ,
|
||||
'zt_usergroup' => 'zt_userGroup' ,
|
||||
'zt_userquery' => 'zt_userQuery' ,
|
||||
'zt_usertpl' => 'zt_userTPL'
|
||||
);
|
||||
|
||||
$existTables = $this->dbh->query('SHOW TABLES')->fetchAll();
|
||||
foreach($existTables as $key => $table) $existTables[$key] = current((array)$table);
|
||||
$existTables = array_flip($existTables);
|
||||
|
||||
foreach($renameTables as $oldTable => $newTable)
|
||||
{
|
||||
if(isset($existTables[$newTable]))
|
||||
{
|
||||
echo "Has existed table '$newTable'\n";
|
||||
}
|
||||
elseif(!isset($existTables[$oldTable]))
|
||||
{
|
||||
echo "No found table '$oldTable'\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->dbh->query("RENAME TABLE `$oldTable` TO `$newTable`");
|
||||
echo "RENAME TABLE `$oldTable` TO `$newTable`\n";
|
||||
}
|
||||
}
|
||||
echo "Finish!\n";
|
||||
}
|
||||
|
||||
/**
|
||||
* Confirm clear data.
|
||||
*
|
||||
* @param string $confirm ''|no|yes
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function clearData($confirm = '')
|
||||
{
|
||||
if($confirm == '') $this->display();
|
||||
|
||||
if($confirm == 'no')
|
||||
{
|
||||
die(js::confirm($this->lang->admin->confirmClearData, inlink('clearData', "confirm=yes")));
|
||||
}
|
||||
elseif($confirm == 'yes')
|
||||
{
|
||||
$result = $this->admin->clearData();
|
||||
if($result)
|
||||
{
|
||||
die(js::alert($this->lang->admin->clearDataSucceed));
|
||||
}
|
||||
die(js::alert($this->lang->admin->clearDataFailed));
|
||||
}
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The control file of admin module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class admin extends control
|
||||
{
|
||||
/**
|
||||
* Index page.
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$community = zget($this->config->global, 'community');
|
||||
if(!$community or $community == 'na')
|
||||
{
|
||||
$this->view->bind = false;
|
||||
$this->view->account = false;
|
||||
$this->view->ignore = $community == 'na';
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->view->bind = true;
|
||||
$this->view->account = $community;
|
||||
$this->view->ignore = false;
|
||||
}
|
||||
|
||||
$this->app->loadLang('misc');
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Ignore notice of register and bind.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function ignore()
|
||||
{
|
||||
$this->loadModel('setting')->setItem('system.common.global.community', 'na');
|
||||
die(js::locate(inlink('index'), 'parent'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Register zentao.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function register()
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$response = $this->admin->registerByAPI();
|
||||
if($response == 'success')
|
||||
{
|
||||
$this->loadModel('setting')->setItem('system.common.global.community', $this->post->account);
|
||||
echo js::alert($this->lang->admin->register->success);
|
||||
die(js::locate(inlink('index'), 'parent'));
|
||||
}
|
||||
die($response);
|
||||
}
|
||||
$this->view->register = $this->admin->getRegisterInfo();
|
||||
$this->view->sn = $this->config->global->sn;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Bind zentao.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function bind()
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$response = $this->admin->bindByAPI();
|
||||
if($response == 'success')
|
||||
{
|
||||
$this->loadModel('setting')->setItem('system.common.global.community', $this->post->account);
|
||||
echo js::alert($this->lang->admin->bind->success);
|
||||
die(js::locate(inlink('index'), 'parent'));
|
||||
}
|
||||
die($response);
|
||||
}
|
||||
$this->view->sn = $this->config->global->sn;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check all tables.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function checkDB()
|
||||
{
|
||||
$tables = $this->dbh->query('SHOW TABLES')->fetchAll();
|
||||
foreach($tables as $table)
|
||||
{
|
||||
$tableName = current((array)$table);
|
||||
$result = $this->dbh->query("REPAIR TABLE $tableName")->fetch();
|
||||
echo "Repairing TABLE: " . $result->Table . "\t" . $result->Msg_type . ":" . $result->Msg_text . "\n";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Rename table for from windows to linux.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function win2Unix()
|
||||
{
|
||||
$renameTables = array(
|
||||
'zt_casestep' => 'zt_caseStep' ,
|
||||
'zt_doclib' => 'zt_docLib' ,
|
||||
'zt_grouppriv' => 'zt_groupPriv' ,
|
||||
'zt_productplan' => 'zt_productPlan' ,
|
||||
'zt_projectproduct' => 'zt_projectProduct' ,
|
||||
'zt_projectstory' => 'zt_projectStory' ,
|
||||
'zt_relationoftasks' => 'zt_relationOfTasks',
|
||||
'zt_storyspec' => 'zt_storySpec' ,
|
||||
'zt_taskestimate' => 'zt_taskEstimate' ,
|
||||
'zt_testresult' => 'zt_testResult' ,
|
||||
'zt_testrun' => 'zt_testRun' ,
|
||||
'zt_testtask' => 'zt_testTask' ,
|
||||
'zt_usercontact' => 'zt_userContact' ,
|
||||
'zt_usergroup' => 'zt_userGroup' ,
|
||||
'zt_userquery' => 'zt_userQuery' ,
|
||||
'zt_usertpl' => 'zt_userTPL'
|
||||
);
|
||||
|
||||
$existTables = $this->dbh->query('SHOW TABLES')->fetchAll();
|
||||
foreach($existTables as $key => $table) $existTables[$key] = current((array)$table);
|
||||
$existTables = array_flip($existTables);
|
||||
|
||||
foreach($renameTables as $oldTable => $newTable)
|
||||
{
|
||||
if(isset($existTables[$newTable]))
|
||||
{
|
||||
echo "Has existed table '$newTable'\n";
|
||||
}
|
||||
elseif(!isset($existTables[$oldTable]))
|
||||
{
|
||||
echo "No found table '$oldTable'\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->dbh->query("RENAME TABLE `$oldTable` TO `$newTable`");
|
||||
echo "RENAME TABLE `$oldTable` TO `$newTable`\n";
|
||||
}
|
||||
}
|
||||
echo "Finish!\n";
|
||||
}
|
||||
|
||||
/**
|
||||
* Confirm clear data.
|
||||
*
|
||||
* @param string $confirm ''|no|yes
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function clearData($confirm = '')
|
||||
{
|
||||
if($confirm == '') $this->display();
|
||||
|
||||
if($confirm == 'no')
|
||||
{
|
||||
die(js::confirm($this->lang->admin->confirmClearData, inlink('clearData', "confirm=yes")));
|
||||
}
|
||||
elseif($confirm == 'yes')
|
||||
{
|
||||
$result = $this->admin->clearData();
|
||||
if($result)
|
||||
{
|
||||
die(js::alert($this->lang->admin->clearDataSucceed));
|
||||
}
|
||||
die(js::alert($this->lang->admin->clearDataFailed));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,56 +1,56 @@
|
||||
<?php
|
||||
/**
|
||||
* The admin module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 QingDao Nature Easy Soft Network Technology Co,LTD (www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->admin->common = 'Admin';
|
||||
$lang->admin->index = 'Index';
|
||||
$lang->admin->checkDB = 'Repair data';
|
||||
$lang->admin->company = 'Company';
|
||||
$lang->admin->user = 'User';
|
||||
$lang->admin->group = 'Group';
|
||||
$lang->admin->welcome = 'Welcome to ZenTaoPMS.';
|
||||
|
||||
$lang->admin->browseCompany = 'Browse Company';
|
||||
|
||||
$lang->admin->clearData = 'Clear Data';
|
||||
$lang->admin->confirmClearData = 'Are you sure to clear data?';
|
||||
$lang->admin->clearDataFailed = 'Failed to clear data!';
|
||||
$lang->admin->clearDataSucceed = 'Succeed to clear data!';
|
||||
$lang->admin->clearDataDesc = <<<EOT
|
||||
<strong><font color='red'>Clear data is dangerous. Be sure to backup your database and other data files and sure nobody is using pms when importing.</font></strong>\n
|
||||
The impact of clearing data:
|
||||
1、Clearing data will have no effect on table company,table group,and table groupPriv.
|
||||
2、If you have choosed import demo data when installing,then clearing data will delete the item where key equals showDemoUsers on config table, and delete all demo users on user table.
|
||||
3、For others tables:clear all data.
|
||||
EOT;
|
||||
|
||||
$lang->admin->info = new stdclass();
|
||||
$lang->admin->info->caption = 'ZentaoPMS information';
|
||||
$lang->admin->info->version = 'The current version of the system is %s,';
|
||||
$lang->admin->info->links = 'You can visit the following link:';
|
||||
$lang->admin->info->account = 'Your account in zentao community is %s. ';
|
||||
|
||||
$lang->admin->notice = new stdclass();
|
||||
$lang->admin->notice->register = "Tips: You have not registered in Zentao community (www.zentao.net), %s to register and get the latest information about ZentaoPMS.";
|
||||
$lang->admin->notice->ignore = "ignore";
|
||||
|
||||
$lang->admin->register = new stdclass();
|
||||
$lang->admin->register->caption = 'Register zentao community';
|
||||
$lang->admin->register->click = 'click';
|
||||
$lang->admin->register->lblAccount = 'Numbers and letters, at least three';
|
||||
$lang->admin->register->lblPasswd = 'Numbers and letters, at least six';
|
||||
$lang->admin->register->submit = 'Register';
|
||||
$lang->admin->register->bind = "If you have community account, %s to bind it";
|
||||
$lang->admin->register->success = "Register success";
|
||||
|
||||
$lang->admin->bind = new stdclass();
|
||||
$lang->admin->bind->caption = 'Bind with community account';
|
||||
$lang->admin->bind->action = 'bind';
|
||||
$lang->admin->bind->success = "Bind success";
|
||||
<?php
|
||||
/**
|
||||
* The admin module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 QingDao Nature Easy Soft Network Technology Co,LTD (www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->admin->common = 'Admin';
|
||||
$lang->admin->index = 'Index';
|
||||
$lang->admin->checkDB = 'Repair data';
|
||||
$lang->admin->company = 'Company';
|
||||
$lang->admin->user = 'User';
|
||||
$lang->admin->group = 'Group';
|
||||
$lang->admin->welcome = 'Welcome to ZenTaoPMS.';
|
||||
|
||||
$lang->admin->browseCompany = 'Browse Company';
|
||||
|
||||
$lang->admin->clearData = 'Clear Data';
|
||||
$lang->admin->confirmClearData = 'Are you sure to clear data?';
|
||||
$lang->admin->clearDataFailed = 'Failed to clear data!';
|
||||
$lang->admin->clearDataSucceed = 'Succeed to clear data!';
|
||||
$lang->admin->clearDataDesc = <<<EOT
|
||||
<strong><font color='red'>Clear data is dangerous. Be sure to backup your database and other data files and sure nobody is using pms when importing.</font></strong>\n
|
||||
The impact of clearing data:
|
||||
1、Clearing data will have no effect on table company,table group,and table groupPriv.
|
||||
2、If you have choosed import demo data when installing,then clearing data will delete the item where key equals showDemoUsers on config table, and delete all demo users on user table.
|
||||
3、For others tables:clear all data.
|
||||
EOT;
|
||||
|
||||
$lang->admin->info = new stdclass();
|
||||
$lang->admin->info->caption = 'ZentaoPMS information';
|
||||
$lang->admin->info->version = 'The current version of the system is %s,';
|
||||
$lang->admin->info->links = 'You can visit the following link:';
|
||||
$lang->admin->info->account = 'Your account in zentao community is %s. ';
|
||||
|
||||
$lang->admin->notice = new stdclass();
|
||||
$lang->admin->notice->register = "Tips: You have not registered in Zentao community (www.zentao.net), %s to register and get the latest information about ZentaoPMS.";
|
||||
$lang->admin->notice->ignore = "ignore";
|
||||
|
||||
$lang->admin->register = new stdclass();
|
||||
$lang->admin->register->caption = 'Register zentao community';
|
||||
$lang->admin->register->click = 'click';
|
||||
$lang->admin->register->lblAccount = 'Numbers and letters, at least three';
|
||||
$lang->admin->register->lblPasswd = 'Numbers and letters, at least six';
|
||||
$lang->admin->register->submit = 'Register';
|
||||
$lang->admin->register->bind = "If you have community account, %s to bind it";
|
||||
$lang->admin->register->success = "Register success";
|
||||
|
||||
$lang->admin->bind = new stdclass();
|
||||
$lang->admin->bind->caption = 'Bind with community account';
|
||||
$lang->admin->bind->action = 'bind';
|
||||
$lang->admin->bind->success = "Bind success";
|
||||
|
||||
@@ -1,56 +1,56 @@
|
||||
<?php
|
||||
/**
|
||||
* The admin module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->admin->common = '后台管理';
|
||||
$lang->admin->index = '后台管理首页';
|
||||
$lang->admin->checkDB = '修正数据';
|
||||
$lang->admin->company = '公司管理';
|
||||
$lang->admin->user = '用户管理';
|
||||
$lang->admin->group = '分组管理';
|
||||
$lang->admin->welcome = '欢迎使用禅道管理软件后台管理系统';
|
||||
|
||||
$lang->admin->browseCompany = '浏览公司';
|
||||
|
||||
$lang->admin->clearData = '清除数据';
|
||||
$lang->admin->confirmClearData = '您确认要清除数据吗?';
|
||||
$lang->admin->clearDataFailed = '清除数据失败!';
|
||||
$lang->admin->clearDataSucceed = '清除数据成功!';
|
||||
$lang->admin->clearDataDesc = <<<EOT
|
||||
<strong><font color='red'>清除数据存在一定的风险,清楚数据之前,我们强烈建议您备份数据库及相应的数据文件,并保证清除数据的时候,没有其他人进行操作。</font></strong>\n
|
||||
清除数据对数据库的影响如下:
|
||||
1、清除数据不会对company, group, groupPriv表进行操作。
|
||||
2、如果安装的时候有导入demo数据,则会删除config表key=showDemoUsers的记录,并删除user表中的所有demo用户。
|
||||
3、对于其他表则进行全部清除操作。
|
||||
EOT;
|
||||
|
||||
$lang->admin->info = new stdclass();
|
||||
$lang->admin->info->caption = '禅道系统信息';
|
||||
$lang->admin->info->version = '当前系统的版本是%s,';
|
||||
$lang->admin->info->links = '您可以访问以下链接:';
|
||||
$lang->admin->info->account = "您的禅道社区账户为%s。";
|
||||
|
||||
$lang->admin->notice = new stdclass();
|
||||
$lang->admin->notice->register = "友情提示:您还未在禅道社区(www.zentao.net)登记,%s进行登记,以及时获得禅道最新信息。";
|
||||
$lang->admin->notice->ignore = "不再提示";
|
||||
|
||||
$lang->admin->register = new stdclass();
|
||||
$lang->admin->register->caption = '禅道社区登记';
|
||||
$lang->admin->register->click = '点击此处';
|
||||
$lang->admin->register->lblAccount = '请设置您的用户名,英文字母和数字的组合,三位以上。';
|
||||
$lang->admin->register->lblPasswd = '请设置您的密码。数字和字母的组合,六位以上。';
|
||||
$lang->admin->register->submit = '登记';
|
||||
$lang->admin->register->bind = "如果您已经拥有社区账号,%s关联账户";
|
||||
$lang->admin->register->success = "登记账户成功";
|
||||
|
||||
$lang->admin->bind = new stdclass();
|
||||
$lang->admin->bind->caption = '关联社区账号';
|
||||
$lang->admin->bind->action = '关联';
|
||||
$lang->admin->bind->success = "关联账户成功";
|
||||
<?php
|
||||
/**
|
||||
* The admin module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->admin->common = '后台管理';
|
||||
$lang->admin->index = '后台管理首页';
|
||||
$lang->admin->checkDB = '修正数据';
|
||||
$lang->admin->company = '公司管理';
|
||||
$lang->admin->user = '用户管理';
|
||||
$lang->admin->group = '分组管理';
|
||||
$lang->admin->welcome = '欢迎使用禅道管理软件后台管理系统';
|
||||
|
||||
$lang->admin->browseCompany = '浏览公司';
|
||||
|
||||
$lang->admin->clearData = '清除数据';
|
||||
$lang->admin->confirmClearData = '您确认要清除数据吗?';
|
||||
$lang->admin->clearDataFailed = '清除数据失败!';
|
||||
$lang->admin->clearDataSucceed = '清除数据成功!';
|
||||
$lang->admin->clearDataDesc = <<<EOT
|
||||
<strong><font color='red'>清除数据存在一定的风险,清楚数据之前,我们强烈建议您备份数据库及相应的数据文件,并保证清除数据的时候,没有其他人进行操作。</font></strong>\n
|
||||
清除数据对数据库的影响如下:
|
||||
1、清除数据不会对company, group, groupPriv表进行操作。
|
||||
2、如果安装的时候有导入demo数据,则会删除config表key=showDemoUsers的记录,并删除user表中的所有demo用户。
|
||||
3、对于其他表则进行全部清除操作。
|
||||
EOT;
|
||||
|
||||
$lang->admin->info = new stdclass();
|
||||
$lang->admin->info->caption = '禅道系统信息';
|
||||
$lang->admin->info->version = '当前系统的版本是%s,';
|
||||
$lang->admin->info->links = '您可以访问以下链接:';
|
||||
$lang->admin->info->account = "您的禅道社区账户为%s。";
|
||||
|
||||
$lang->admin->notice = new stdclass();
|
||||
$lang->admin->notice->register = "友情提示:您还未在禅道社区(www.zentao.net)登记,%s进行登记,以及时获得禅道最新信息。";
|
||||
$lang->admin->notice->ignore = "不再提示";
|
||||
|
||||
$lang->admin->register = new stdclass();
|
||||
$lang->admin->register->caption = '禅道社区登记';
|
||||
$lang->admin->register->click = '点击此处';
|
||||
$lang->admin->register->lblAccount = '请设置您的用户名,英文字母和数字的组合,三位以上。';
|
||||
$lang->admin->register->lblPasswd = '请设置您的密码。数字和字母的组合,六位以上。';
|
||||
$lang->admin->register->submit = '登记';
|
||||
$lang->admin->register->bind = "如果您已经拥有社区账号,%s关联账户";
|
||||
$lang->admin->register->success = "登记账户成功";
|
||||
|
||||
$lang->admin->bind = new stdclass();
|
||||
$lang->admin->bind->caption = '关联社区账号';
|
||||
$lang->admin->bind->action = '关联';
|
||||
$lang->admin->bind->success = "关联账户成功";
|
||||
|
||||
@@ -1,56 +1,56 @@
|
||||
<?php
|
||||
/**
|
||||
* The admin module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id: zh-tw.php 3742 2012-12-10 08:41:09Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->admin->common = '後台管理';
|
||||
$lang->admin->index = '後台管理首頁';
|
||||
$lang->admin->checkDB = '修正數據';
|
||||
$lang->admin->company = '公司管理';
|
||||
$lang->admin->user = '用戶管理';
|
||||
$lang->admin->group = '分組管理';
|
||||
$lang->admin->welcome = '歡迎使用禪道管理軟件後台管理系統';
|
||||
|
||||
$lang->admin->browseCompany = '瀏覽公司';
|
||||
|
||||
$lang->admin->clearData = '清除數據';
|
||||
$lang->admin->confirmClearData = '您確認要清除數據嗎?';
|
||||
$lang->admin->clearDataFailed = '清除數據失敗!';
|
||||
$lang->admin->clearDataSucceed = '清除數據成功!';
|
||||
$lang->admin->clearDataDesc = <<<EOT
|
||||
<strong><font color='red'>清除數據存在一定的風險,清楚數據之前,我們強烈建議您備份資料庫及相應的數據檔案,並保證清楚數據的時候,沒有其他人進行操作。</font></strong>\n
|
||||
清除數據對資料庫的影響如下:
|
||||
1、清除數據不會對company, group, groupPriv表進行操作。
|
||||
2、如果安裝的時候有導入demo數據,則會刪除config表key=showDemoUsers的記錄,並刪除user表中的所有demo用戶。
|
||||
3、對於其他表則進行全部清除操作。
|
||||
EOT;
|
||||
|
||||
$lang->admin->info = new stdclass();
|
||||
$lang->admin->info->caption = '禪道系統信息';
|
||||
$lang->admin->info->version = '當前系統的版本是%s,';
|
||||
$lang->admin->info->links = '您可以訪問以下連結:';
|
||||
$lang->admin->info->account = "您的禪道社區賬戶為%s。";
|
||||
|
||||
$lang->admin->notice = new stdclass();
|
||||
$lang->admin->notice->register = "友情提示:您還未在禪道社區(www.zentao.net)登記,%s進行登記,以及時獲得禪道最新信息。";
|
||||
$lang->admin->notice->ignore = "不再提示";
|
||||
|
||||
$lang->admin->register = new stdclass();
|
||||
$lang->admin->register->caption = '禪道社區登記';
|
||||
$lang->admin->register->click = '點擊此處';
|
||||
$lang->admin->register->lblAccount = '請設置您的用戶名,英文字母和數字的組合,三位以上。';
|
||||
$lang->admin->register->lblPasswd = '請設置您的密碼。數字和字母的組合,六位以上。';
|
||||
$lang->admin->register->submit = '登記';
|
||||
$lang->admin->register->bind = "如果您已經擁有社區賬號,%s關聯賬戶";
|
||||
$lang->admin->register->success = "登記賬戶成功";
|
||||
|
||||
$lang->admin->bind = new stdclass();
|
||||
$lang->admin->bind->caption = '關聯社區賬號';
|
||||
$lang->admin->bind->action = '關聯';
|
||||
$lang->admin->bind->success = "關聯賬戶成功";
|
||||
<?php
|
||||
/**
|
||||
* The admin module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id: zh-tw.php 3742 2012-12-10 08:41:09Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->admin->common = '後台管理';
|
||||
$lang->admin->index = '後台管理首頁';
|
||||
$lang->admin->checkDB = '修正數據';
|
||||
$lang->admin->company = '公司管理';
|
||||
$lang->admin->user = '用戶管理';
|
||||
$lang->admin->group = '分組管理';
|
||||
$lang->admin->welcome = '歡迎使用禪道管理軟件後台管理系統';
|
||||
|
||||
$lang->admin->browseCompany = '瀏覽公司';
|
||||
|
||||
$lang->admin->clearData = '清除數據';
|
||||
$lang->admin->confirmClearData = '您確認要清除數據嗎?';
|
||||
$lang->admin->clearDataFailed = '清除數據失敗!';
|
||||
$lang->admin->clearDataSucceed = '清除數據成功!';
|
||||
$lang->admin->clearDataDesc = <<<EOT
|
||||
<strong><font color='red'>清除數據存在一定的風險,清楚數據之前,我們強烈建議您備份資料庫及相應的數據檔案,並保證清楚數據的時候,沒有其他人進行操作。</font></strong>\n
|
||||
清除數據對資料庫的影響如下:
|
||||
1、清除數據不會對company, group, groupPriv表進行操作。
|
||||
2、如果安裝的時候有導入demo數據,則會刪除config表key=showDemoUsers的記錄,並刪除user表中的所有demo用戶。
|
||||
3、對於其他表則進行全部清除操作。
|
||||
EOT;
|
||||
|
||||
$lang->admin->info = new stdclass();
|
||||
$lang->admin->info->caption = '禪道系統信息';
|
||||
$lang->admin->info->version = '當前系統的版本是%s,';
|
||||
$lang->admin->info->links = '您可以訪問以下連結:';
|
||||
$lang->admin->info->account = "您的禪道社區賬戶為%s。";
|
||||
|
||||
$lang->admin->notice = new stdclass();
|
||||
$lang->admin->notice->register = "友情提示:您還未在禪道社區(www.zentao.net)登記,%s進行登記,以及時獲得禪道最新信息。";
|
||||
$lang->admin->notice->ignore = "不再提示";
|
||||
|
||||
$lang->admin->register = new stdclass();
|
||||
$lang->admin->register->caption = '禪道社區登記';
|
||||
$lang->admin->register->click = '點擊此處';
|
||||
$lang->admin->register->lblAccount = '請設置您的用戶名,英文字母和數字的組合,三位以上。';
|
||||
$lang->admin->register->lblPasswd = '請設置您的密碼。數字和字母的組合,六位以上。';
|
||||
$lang->admin->register->submit = '登記';
|
||||
$lang->admin->register->bind = "如果您已經擁有社區賬號,%s關聯賬戶";
|
||||
$lang->admin->register->success = "登記賬戶成功";
|
||||
|
||||
$lang->admin->bind = new stdclass();
|
||||
$lang->admin->bind->caption = '關聯社區賬號';
|
||||
$lang->admin->bind->action = '關聯';
|
||||
$lang->admin->bind->success = "關聯賬戶成功";
|
||||
|
||||
@@ -1,183 +1,183 @@
|
||||
<?php
|
||||
/**
|
||||
* The model file of admin module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
class adminModel extends model
|
||||
{
|
||||
/**
|
||||
* The api agent(use snoopy).
|
||||
*
|
||||
* @var object
|
||||
* @access public
|
||||
*/
|
||||
public $agent;
|
||||
|
||||
/**
|
||||
* The api root.
|
||||
*
|
||||
* @var string
|
||||
* @access public
|
||||
*/
|
||||
public $apiRoot;
|
||||
|
||||
/**
|
||||
* The construct function.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->setAgent();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the api agent.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setAgent()
|
||||
{
|
||||
$this->agent = $this->app->loadClass('snoopy');
|
||||
}
|
||||
|
||||
/**
|
||||
* Post data form API
|
||||
*
|
||||
* @param string $url
|
||||
* @param string $formvars
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function postAPI($url, $formvars = "")
|
||||
{
|
||||
$this->agent->cookies['lang'] = $this->cookie->lang;
|
||||
$this->agent->submit($url, $formvars);
|
||||
return $this->agent->results;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get status of zentaopms.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getStatOfPMS()
|
||||
{
|
||||
$sql = "SHOW TABLE STATUS";
|
||||
$tables = $this->dbh->query($sql)->fetchALL();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get state of company.
|
||||
*
|
||||
* @param int $companyID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getStatOfCompany($companyID)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Get system info.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getStatOfSys()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Register zentao by API.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function registerByAPI()
|
||||
{
|
||||
$apiURL = 'http://www.zentao.net/user-register.json';
|
||||
return $this->postAPI($apiURL, $_POST);
|
||||
}
|
||||
|
||||
/**
|
||||
* Login zentao by API.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function bindByAPI()
|
||||
{
|
||||
$apiURL = 'http://www.zentao.net/user-login.json';
|
||||
return $this->postAPI($apiURL, $_POST);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get register information.
|
||||
*
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getRegisterInfo()
|
||||
{
|
||||
$register = new stdclass();
|
||||
$register->company = $this->app->company->name;
|
||||
$register->email = $this->app->user->email;
|
||||
return $register;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear data.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function clearData()
|
||||
{
|
||||
$result = $this->dbh->query('SHOW TABLES')->fetchAll();
|
||||
$showDemoUsers = $this->dao->select('value')->from(TABLE_CONFIG)->where('`key`')->eq('showDemoUsers')->fetch();
|
||||
foreach($result as $item)
|
||||
{
|
||||
$table = current((array)$item);
|
||||
if(strpos($table, 'company') !== false) continue;
|
||||
if(strpos($table, 'group') !== false) continue;
|
||||
if(strpos($table, 'user') !== false)
|
||||
{
|
||||
if($showDemoUsers)
|
||||
{
|
||||
$this->dao->delete()->from($table)
|
||||
->where('account')->in(array('productManager', 'projectManager', 'testManager', 'dev1', 'dev2', 'dev3', 'tester1', 'tester2', 'tester3'))
|
||||
->exec();
|
||||
if(dao::isError()) return false;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if(strpos($table, 'config') !== false)
|
||||
{
|
||||
if($showDemoUsers)
|
||||
{
|
||||
$this->dao->delete()->from($table)
|
||||
->where('`key`')->eq('showDemoUsers')
|
||||
->exec();
|
||||
if(dao::isError()) return false;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if(!$this->dbh->query("TRUNCATE TABLE `$table`")) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The model file of admin module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
class adminModel extends model
|
||||
{
|
||||
/**
|
||||
* The api agent(use snoopy).
|
||||
*
|
||||
* @var object
|
||||
* @access public
|
||||
*/
|
||||
public $agent;
|
||||
|
||||
/**
|
||||
* The api root.
|
||||
*
|
||||
* @var string
|
||||
* @access public
|
||||
*/
|
||||
public $apiRoot;
|
||||
|
||||
/**
|
||||
* The construct function.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->setAgent();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the api agent.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setAgent()
|
||||
{
|
||||
$this->agent = $this->app->loadClass('snoopy');
|
||||
}
|
||||
|
||||
/**
|
||||
* Post data form API
|
||||
*
|
||||
* @param string $url
|
||||
* @param string $formvars
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function postAPI($url, $formvars = "")
|
||||
{
|
||||
$this->agent->cookies['lang'] = $this->cookie->lang;
|
||||
$this->agent->submit($url, $formvars);
|
||||
return $this->agent->results;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get status of zentaopms.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getStatOfPMS()
|
||||
{
|
||||
$sql = "SHOW TABLE STATUS";
|
||||
$tables = $this->dbh->query($sql)->fetchALL();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get state of company.
|
||||
*
|
||||
* @param int $companyID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getStatOfCompany($companyID)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Get system info.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getStatOfSys()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Register zentao by API.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function registerByAPI()
|
||||
{
|
||||
$apiURL = 'http://www.zentao.net/user-register.json';
|
||||
return $this->postAPI($apiURL, $_POST);
|
||||
}
|
||||
|
||||
/**
|
||||
* Login zentao by API.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function bindByAPI()
|
||||
{
|
||||
$apiURL = 'http://www.zentao.net/user-login.json';
|
||||
return $this->postAPI($apiURL, $_POST);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get register information.
|
||||
*
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getRegisterInfo()
|
||||
{
|
||||
$register = new stdclass();
|
||||
$register->company = $this->app->company->name;
|
||||
$register->email = $this->app->user->email;
|
||||
return $register;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear data.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function clearData()
|
||||
{
|
||||
$result = $this->dbh->query('SHOW TABLES')->fetchAll();
|
||||
$showDemoUsers = $this->dao->select('value')->from(TABLE_CONFIG)->where('`key`')->eq('showDemoUsers')->fetch();
|
||||
foreach($result as $item)
|
||||
{
|
||||
$table = current((array)$item);
|
||||
if(strpos($table, 'company') !== false) continue;
|
||||
if(strpos($table, 'group') !== false) continue;
|
||||
if(strpos($table, 'user') !== false)
|
||||
{
|
||||
if($showDemoUsers)
|
||||
{
|
||||
$this->dao->delete()->from($table)
|
||||
->where('account')->in(array('productManager', 'projectManager', 'testManager', 'dev1', 'dev2', 'dev3', 'tester1', 'tester2', 'tester3'))
|
||||
->exec();
|
||||
if(dao::isError()) return false;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if(strpos($table, 'config') !== false)
|
||||
{
|
||||
if($showDemoUsers)
|
||||
{
|
||||
$this->dao->delete()->from($table)
|
||||
->where('`key`')->eq('showDemoUsers')
|
||||
->exec();
|
||||
if(dao::isError()) return false;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if(!$this->dbh->query("TRUNCATE TABLE `$table`")) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,30 +1,30 @@
|
||||
<?php
|
||||
/**
|
||||
* The view file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id: view.html.php 2568 2012-02-09 06:56:35Z shiyangyangwork@yahoo.cn $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method="post" target="hiddenwin">
|
||||
<table align='center' class='table-6'>
|
||||
<caption><?php echo $lang->admin->bind->caption;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->user->account;?></th>
|
||||
<td><?php echo html::input('account', '', "class='text-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="rowhead"><?php echo $lang->user->password;?></th>
|
||||
<td><?php echo html::password('password', '', "class='text-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><td colspan="2" class="a-center"><?php echo html::submitButton() . html::hidden('sn', $sn);?></td></th>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The view file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id: view.html.php 2568 2012-02-09 06:56:35Z shiyangyangwork@yahoo.cn $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method="post" target="hiddenwin">
|
||||
<table align='center' class='table-6'>
|
||||
<caption><?php echo $lang->admin->bind->caption;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->user->account;?></th>
|
||||
<td><?php echo html::input('account', '', "class='text-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="rowhead"><?php echo $lang->user->password;?></th>
|
||||
<td><?php echo html::password('password', '', "class='text-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><td colspan="2" class="a-center"><?php echo html::submitButton() . html::hidden('sn', $sn);?></td></th>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,47 +1,47 @@
|
||||
<?php
|
||||
/**
|
||||
* The browse company view file of admin module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<table align='center' class='table-1'>
|
||||
<tr class='colhead'>
|
||||
<th><?php echo $lang->company->id;?></th>
|
||||
<th><?php echo $lang->company->name;?></th>
|
||||
<th><?php echo $lang->company->phone;?></th>
|
||||
<th><?php echo $lang->company->fax;?></th>
|
||||
<th><?php echo $lang->company->address;?></th>
|
||||
<th><?php echo $lang->company->zipcode;?></th>
|
||||
<th><?php echo $lang->company->website;?></th>
|
||||
<th><?php echo $lang->company->backyard;?></th>
|
||||
<th><?php echo $lang->company->pms;?></th>
|
||||
<th><?php echo $lang->company->guest;?></th>
|
||||
<th><?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
<?php foreach($companies as $company):?>
|
||||
<tr>
|
||||
<td class='a-center'><?php echo $company->id;?></td>
|
||||
<td><?php echo $company->name;?></td>
|
||||
<td><?php echo $company->phone;?></td>
|
||||
<td><?php echo $company->fax;?></td>
|
||||
<td><?php echo $company->address;?></td>
|
||||
<td><?php echo $company->zipcode;?></td>
|
||||
<td><?php echo html::a($company->website, $company->website, '_blank');?></td>
|
||||
<td><?php echo html::a($company->backyard,$company->backyard, '_blank');?></td>
|
||||
<td><?php echo html::a('http://' . $company->pms, $company->pms, '_blank');?></td>
|
||||
<td><?php echo $lang->company->guestList[(int)$company->guest];?></td>
|
||||
<td>
|
||||
<?php echo html::a($this->createLink('company', 'edit', "companyID=$company->id"), $this->lang->company->edit);?>
|
||||
<?php echo html::a($this->createLink('company', 'delete', "companyID=$company->id"), $this->lang->company->delete, "hiddenwin");?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</table>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The browse company view file of admin module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<table align='center' class='table-1'>
|
||||
<tr class='colhead'>
|
||||
<th><?php echo $lang->company->id;?></th>
|
||||
<th><?php echo $lang->company->name;?></th>
|
||||
<th><?php echo $lang->company->phone;?></th>
|
||||
<th><?php echo $lang->company->fax;?></th>
|
||||
<th><?php echo $lang->company->address;?></th>
|
||||
<th><?php echo $lang->company->zipcode;?></th>
|
||||
<th><?php echo $lang->company->website;?></th>
|
||||
<th><?php echo $lang->company->backyard;?></th>
|
||||
<th><?php echo $lang->company->pms;?></th>
|
||||
<th><?php echo $lang->company->guest;?></th>
|
||||
<th><?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
<?php foreach($companies as $company):?>
|
||||
<tr>
|
||||
<td class='a-center'><?php echo $company->id;?></td>
|
||||
<td><?php echo $company->name;?></td>
|
||||
<td><?php echo $company->phone;?></td>
|
||||
<td><?php echo $company->fax;?></td>
|
||||
<td><?php echo $company->address;?></td>
|
||||
<td><?php echo $company->zipcode;?></td>
|
||||
<td><?php echo html::a($company->website, $company->website, '_blank');?></td>
|
||||
<td><?php echo html::a($company->backyard,$company->backyard, '_blank');?></td>
|
||||
<td><?php echo html::a('http://' . $company->pms, $company->pms, '_blank');?></td>
|
||||
<td><?php echo $lang->company->guestList[(int)$company->guest];?></td>
|
||||
<td>
|
||||
<?php echo html::a($this->createLink('company', 'edit', "companyID=$company->id"), $this->lang->company->edit);?>
|
||||
<?php echo html::a($this->createLink('company', 'delete', "companyID=$company->id"), $this->lang->company->delete, "hiddenwin");?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</table>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
<?php
|
||||
/**
|
||||
* The view file of admin module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Congzhi Chen <congzhi@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id: view.html.php 2568 2012-02-09 06:56:35Z shiyangyangwork@yahoo.cn $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' target='hiddenwin' action='<?php echo $this->inLink('clearData', 'confirm=no')?>'>
|
||||
<table align='center' class='table-5'>
|
||||
<caption><?php echo $lang->admin->clearData;?></caption>
|
||||
<tr><td><?php echo nl2br($lang->admin->clearDataDesc);?></td></tr>
|
||||
<tr><td class='a-center'><?php echo html::submitButton($lang->admin->clearData);?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The view file of admin module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Congzhi Chen <congzhi@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id: view.html.php 2568 2012-02-09 06:56:35Z shiyangyangwork@yahoo.cn $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' target='hiddenwin' action='<?php echo $this->inLink('clearData', 'confirm=no')?>'>
|
||||
<table align='center' class='table-5'>
|
||||
<caption><?php echo $lang->admin->clearData;?></caption>
|
||||
<tr><td><?php echo nl2br($lang->admin->clearDataDesc);?></td></tr>
|
||||
<tr><td class='a-center'><?php echo html::submitButton($lang->admin->clearData);?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,28 +1,28 @@
|
||||
<?php
|
||||
/**
|
||||
* The view file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id: view.html.php 2568 2012-02-09 06:56:35Z shiyangyangwork@yahoo.cn $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<p class='strong mt-10px'>
|
||||
<?php
|
||||
echo sprintf($lang->admin->info->version, $config->version);
|
||||
if($bind) echo sprintf($lang->admin->info->account, '<span class="red">' . $account . '</span>');
|
||||
echo $lang->admin->info->links;
|
||||
?>
|
||||
</p>
|
||||
<?php include '../../misc/view/links.html.php';?>
|
||||
<?php if(!$bind and !$ignore):?>
|
||||
<div id="notice">
|
||||
<div class="f-left"><?php echo sprintf($lang->admin->notice->register, html::a(inlink('register'), $lang->admin->register->click));?></div>
|
||||
<div class="f-right"><?php echo html::a(inlink('ignore'), $lang->admin->notice->ignore, 'hiddenwin');?></div>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The view file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id: view.html.php 2568 2012-02-09 06:56:35Z shiyangyangwork@yahoo.cn $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<p class='strong mt-10px'>
|
||||
<?php
|
||||
echo sprintf($lang->admin->info->version, $config->version);
|
||||
if($bind) echo sprintf($lang->admin->info->account, '<span class="red">' . $account . '</span>');
|
||||
echo $lang->admin->info->links;
|
||||
?>
|
||||
</p>
|
||||
<?php include '../../misc/view/links.html.php';?>
|
||||
<?php if(!$bind and !$ignore):?>
|
||||
<div id="notice">
|
||||
<div class="f-left"><?php echo sprintf($lang->admin->notice->register, html::a(inlink('register'), $lang->admin->register->click));?></div>
|
||||
<div class="f-right"><?php echo html::a(inlink('ignore'), $lang->admin->notice->ignore, 'hiddenwin');?></div>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,57 +1,57 @@
|
||||
<?php
|
||||
/**
|
||||
* The view file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id: view.html.php 2568 2012-02-09 06:56:35Z shiyangyangwork@yahoo.cn $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method="post" target="hiddenwin">
|
||||
<table align='center' class='table-6'>
|
||||
<caption><?php echo $lang->admin->register->caption;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->user->account;?></th>
|
||||
<td><?php echo html::input('account', '', "class='text-3'") . '<span class="star">*</span>' . $lang->admin->register->lblAccount;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="rowhead"><?php echo $lang->user->realname;?></th>
|
||||
<td><?php echo html::input('realname', '', "class='text-3'") . '<span class="star">*</span>';?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="rowhead"><?php echo $lang->user->company;?></th>
|
||||
<td><?php echo html::input('company', $register->company, "class='text-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="rowhead"><?php echo $lang->user->phone;?></th>
|
||||
<td><?php echo html::input('phone', '', "class='text-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="rowhead"><?php echo $lang->user->email;?></td>
|
||||
<td><?php echo html::input('email', $register->email, "class='text-3'") . '<span class="star">*</span>';?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="rowhead"><?php echo $lang->user->password;?></th>
|
||||
<td><?php echo html::password('password1', '', "class='text-3'") . '<span class="star">*</span>' . $lang->admin->register->lblPasswd;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->user->password2;?></td>
|
||||
<td><?php echo html::password('password2', '', "class='text-3'") . '<span class="star">*</span>';?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
<td colspan="2">
|
||||
<?php
|
||||
echo html::submitButton($lang->admin->register->submit) . html::hidden('sn', $sn);
|
||||
echo "<span>" . sprintf($lang->admin->register->bind, html::a(inlink('bind'), $lang->admin->register->click)) . "</span>";
|
||||
?>
|
||||
</td>
|
||||
</th>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The view file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id: view.html.php 2568 2012-02-09 06:56:35Z shiyangyangwork@yahoo.cn $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method="post" target="hiddenwin">
|
||||
<table align='center' class='table-6'>
|
||||
<caption><?php echo $lang->admin->register->caption;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->user->account;?></th>
|
||||
<td><?php echo html::input('account', '', "class='text-3'") . '<span class="star">*</span>' . $lang->admin->register->lblAccount;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="rowhead"><?php echo $lang->user->realname;?></th>
|
||||
<td><?php echo html::input('realname', '', "class='text-3'") . '<span class="star">*</span>';?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="rowhead"><?php echo $lang->user->company;?></th>
|
||||
<td><?php echo html::input('company', $register->company, "class='text-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="rowhead"><?php echo $lang->user->phone;?></th>
|
||||
<td><?php echo html::input('phone', '', "class='text-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="rowhead"><?php echo $lang->user->email;?></td>
|
||||
<td><?php echo html::input('email', $register->email, "class='text-3'") . '<span class="star">*</span>';?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="rowhead"><?php echo $lang->user->password;?></th>
|
||||
<td><?php echo html::password('password1', '', "class='text-3'") . '<span class="star">*</span>' . $lang->admin->register->lblPasswd;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->user->password2;?></td>
|
||||
<td><?php echo html::password('password2', '', "class='text-3'") . '<span class="star">*</span>';?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
<td colspan="2">
|
||||
<?php
|
||||
echo html::submitButton($lang->admin->register->submit) . html::hidden('sn', $sn);
|
||||
echo "<span>" . sprintf($lang->admin->register->bind, html::a(inlink('bind'), $lang->admin->register->click)) . "</span>";
|
||||
?>
|
||||
</td>
|
||||
</th>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,50 +1,50 @@
|
||||
<?php
|
||||
/**
|
||||
* The control file of api of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package api
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class api extends control
|
||||
{
|
||||
/**
|
||||
* Return session to the client.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getSessionID()
|
||||
{
|
||||
$this->session->set('rand', mt_rand(0, 10000));
|
||||
$this->view->sessionName = session_name();
|
||||
$this->view->sessionID = session_id();
|
||||
$this->view->rand = $this->session->rand;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute a module's model's method, return the result.
|
||||
*
|
||||
* @param string $moduleName
|
||||
* @param string $methodName
|
||||
* @param string $params param1=value1,param2=value2, don't use & to join them.
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function getModel($moduleName, $methodName, $params = '')
|
||||
{
|
||||
parse_str(str_replace(',', '&', $params), $params);
|
||||
$module = $this->loadModel($moduleName);
|
||||
$result = call_user_func_array(array(&$module, $methodName), $params);
|
||||
if(dao::isError()) die(json_encode(dao::getError()));
|
||||
$output['status'] = $result ? 'success' : 'fail';
|
||||
$output['data'] = json_encode($result);
|
||||
$output['md5'] = md5($output['data']);
|
||||
$this->output = json_encode($output);
|
||||
die($this->output);
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The control file of api of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package api
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class api extends control
|
||||
{
|
||||
/**
|
||||
* Return session to the client.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getSessionID()
|
||||
{
|
||||
$this->session->set('rand', mt_rand(0, 10000));
|
||||
$this->view->sessionName = session_name();
|
||||
$this->view->sessionID = session_id();
|
||||
$this->view->rand = $this->session->rand;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute a module's model's method, return the result.
|
||||
*
|
||||
* @param string $moduleName
|
||||
* @param string $methodName
|
||||
* @param string $params param1=value1,param2=value2, don't use & to join them.
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function getModel($moduleName, $methodName, $params = '')
|
||||
{
|
||||
parse_str(str_replace(',', '&', $params), $params);
|
||||
$module = $this->loadModel($moduleName);
|
||||
$result = call_user_func_array(array(&$module, $methodName), $params);
|
||||
if(dao::isError()) die(json_encode(dao::getError()));
|
||||
$output['status'] = $result ? 'success' : 'fail';
|
||||
$output['data'] = json_encode($result);
|
||||
$output['md5'] = md5($output['data']);
|
||||
$this->output = json_encode($output);
|
||||
die($this->output);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
<?php
|
||||
/**
|
||||
* The api module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package api
|
||||
* @version $Id: English.php 824 2010-05-02 15:32:06Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->api->common = 'API';
|
||||
$lang->api->getModel = 'Super Model API';
|
||||
<?php
|
||||
/**
|
||||
* The api module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package api
|
||||
* @version $Id: English.php 824 2010-05-02 15:32:06Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->api->common = 'API';
|
||||
$lang->api->getModel = 'Super Model API';
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
<?php
|
||||
/**
|
||||
* The api module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package api
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->api->common = 'API接口';
|
||||
$lang->api->getModel = '超级model调用接口';
|
||||
<?php
|
||||
/**
|
||||
* The api module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package api
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->api->common = 'API接口';
|
||||
$lang->api->getModel = '超级model调用接口';
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
<?php
|
||||
/**
|
||||
* The api module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package api
|
||||
* @version $Id: zh-tw.php 2605 2012-02-21 07:22:58Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->api->common = 'API介面';
|
||||
$lang->api->getModel = '超級model調用介面';
|
||||
<?php
|
||||
/**
|
||||
* The api module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package api
|
||||
* @version $Id: zh-tw.php 2605 2012-02-21 07:22:58Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->api->common = 'API介面';
|
||||
$lang->api->getModel = '超級model調用介面';
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
<?php
|
||||
/**
|
||||
* The model file of api module of ZenTaoCMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package api
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class apiModel extends model
|
||||
{
|
||||
}
|
||||
|
||||
<?php
|
||||
/**
|
||||
* The model file of api module of ZenTaoCMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package api
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class apiModel extends model
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,361 +1,361 @@
|
||||
<?php
|
||||
/**
|
||||
* The bug module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* Fieldlist. */
|
||||
$lang->bug->common = 'Bug';
|
||||
$lang->bug->id = 'ID';
|
||||
$lang->bug->product = 'Product';
|
||||
$lang->bug->module = 'Module';
|
||||
$lang->bug->path = 'Path';
|
||||
$lang->bug->project = 'Project';
|
||||
$lang->bug->story = 'Story';
|
||||
$lang->bug->storyVersion = 'Story Version';
|
||||
$lang->bug->task = 'Task';
|
||||
$lang->bug->title = 'Title';
|
||||
$lang->bug->severity = 'Severity';
|
||||
$lang->bug->severityAB = 'S';
|
||||
$lang->bug->pri = 'Priority';
|
||||
$lang->bug->type = 'Type';
|
||||
$lang->bug->os = 'OS';
|
||||
$lang->bug->hardware = 'Hardware';
|
||||
$lang->bug->browser = 'Browser';
|
||||
$lang->bug->machine = 'Machine';
|
||||
$lang->bug->found = 'How found';
|
||||
$lang->bug->steps = 'Steps';
|
||||
$lang->bug->status = 'Status';
|
||||
$lang->bug->statusAB = 'Status';
|
||||
$lang->bug->activatedCount = 'Activated count';
|
||||
$lang->bug->activatedCountAB = 'Activated count';
|
||||
$lang->bug->confirmed = 'Confirmed';
|
||||
$lang->bug->toTask = 'To task';
|
||||
$lang->bug->toStory = 'To story';
|
||||
$lang->bug->mailto = 'Mailto';
|
||||
$lang->bug->openedBy = 'Opened By';
|
||||
$lang->bug->openedByAB = 'Opened';
|
||||
$lang->bug->openedDate = 'Opened date';
|
||||
$lang->bug->openedDateAB = 'Date';
|
||||
$lang->bug->openedBuild = 'Opened Build';
|
||||
$lang->bug->assignedTo = 'Assigned';
|
||||
$lang->bug->assignedDate = 'Assigned Date';
|
||||
$lang->bug->resolvedBy = 'Resolved By';
|
||||
$lang->bug->resolvedByAB = 'Resolve';
|
||||
$lang->bug->resolution = 'Resolution';
|
||||
$lang->bug->resolutionAB = 'Resolution';
|
||||
$lang->bug->resolvedBuild = 'Resolved Build';
|
||||
$lang->bug->resolvedDate = 'Resolved Date';
|
||||
$lang->bug->resolvedDateAB = 'Date';
|
||||
$lang->bug->closedBy = 'Closed By';
|
||||
$lang->bug->closedDate = 'Closed Date';
|
||||
$lang->bug->duplicateBug = 'Duplicate';
|
||||
$lang->bug->lastEditedBy = 'Last Edited By';
|
||||
$lang->bug->lastEditedDate = 'Last Edited Date';
|
||||
$lang->bug->linkBug = 'Related';
|
||||
$lang->bug->case = 'Case';
|
||||
$lang->bug->files = 'Files';
|
||||
$lang->bug->keywords = 'Keywords';
|
||||
$lang->bug->lastEditedByAB = 'Edited';
|
||||
$lang->bug->lastEditedDateAB = 'Edited Date';
|
||||
$lang->bug->fromCase = 'From case';
|
||||
$lang->bug->toCase = 'To case';
|
||||
|
||||
/* Actions. */
|
||||
$lang->bug->index = 'Index';
|
||||
$lang->bug->create = 'Create Bug';
|
||||
$lang->bug->confirmBug = 'Confirm Bug';
|
||||
$lang->bug->edit = 'Edit Bug';
|
||||
$lang->bug->batchEdit = 'Batch edit';
|
||||
$lang->bug->assignTo = 'Assign';
|
||||
$lang->bug->browse = 'Browse Bug';
|
||||
$lang->bug->view = 'Bug Info';
|
||||
$lang->bug->resolve = 'Resolve Bug';
|
||||
$lang->bug->close = 'Close Bug';
|
||||
$lang->bug->activate = 'Activate Bug';
|
||||
$lang->bug->reportChart = 'Report';
|
||||
$lang->bug->export = 'Export data';
|
||||
$lang->bug->delete = 'Delete Bug';
|
||||
$lang->bug->saveTemplate = 'Save template';
|
||||
$lang->bug->deleteTemplate = 'Delete template';
|
||||
$lang->bug->customFields = 'Custom';
|
||||
$lang->bug->restoreDefault = 'Default';
|
||||
$lang->bug->ajaxGetUserBugs = 'API: My Bugs';
|
||||
$lang->bug->ajaxGetModuleOwner = 'API: Get module default owner';
|
||||
$lang->bug->confirmStoryChange = 'Confirm Story Change';
|
||||
|
||||
/* Browse tabs. */
|
||||
$lang->bug->selectProduct = 'Select product';
|
||||
$lang->bug->byModule = 'ByModule';
|
||||
$lang->bug->assignToMe = 'MyBugs';
|
||||
$lang->bug->openedByMe = 'MyOpen';
|
||||
$lang->bug->resolvedByMe = 'MyResolve';
|
||||
$lang->bug->closedByMe = 'MyClose';
|
||||
$lang->bug->assignToNull = 'Unassigned';
|
||||
$lang->bug->unResolved = 'Unresolved';
|
||||
$lang->bug->unclosed = 'Unclosed';
|
||||
$lang->bug->longLifeBugs = 'Longlife';
|
||||
$lang->bug->postponedBugs = 'Postponed';
|
||||
$lang->bug->allBugs = 'Allbug';
|
||||
$lang->bug->moduleBugs = 'ByModule';
|
||||
$lang->bug->byQuery = 'Search';
|
||||
$lang->bug->needConfirm = 'StoryChanged';
|
||||
$lang->bug->allProduct = 'All products';
|
||||
|
||||
/* Labels. */
|
||||
$lang->bug->lblProductAndModule = 'Product&Module';
|
||||
$lang->bug->lblProjectAndTask = 'Project&Task';
|
||||
$lang->bug->lblStory = 'Story';
|
||||
$lang->bug->lblTypeAndSeverity = 'Type&Severity';
|
||||
$lang->bug->lblSystemBrowserAndHardware = 'OS&Browser';
|
||||
$lang->bug->lblAssignedTo = 'Assigned to';
|
||||
$lang->bug->lblMailto = 'Mailto';
|
||||
$lang->bug->lblLastEdited = 'Last edited';
|
||||
$lang->bug->lblResolved = 'Resolved';
|
||||
$lang->bug->lblAllFields = 'All Fields';
|
||||
$lang->bug->lblCustomFields = 'Custom Fields';
|
||||
|
||||
/* Legends. */
|
||||
$lang->bug->legendBasicInfo = 'Basic info';
|
||||
$lang->bug->legendMailto = 'Mailto';
|
||||
$lang->bug->legendAttatch = 'Files';
|
||||
$lang->bug->legendLinkBugs = 'Related bug';
|
||||
$lang->bug->legendPrjStoryTask = 'Project, story & task';
|
||||
$lang->bug->legendCases = 'Related case';
|
||||
$lang->bug->legendSteps = 'Steps';
|
||||
$lang->bug->legendAction = 'Action';
|
||||
$lang->bug->legendHistory = 'History';
|
||||
$lang->bug->legendComment = 'Comment';
|
||||
$lang->bug->legendLife = 'Lifetime';
|
||||
$lang->bug->legendMisc = 'Misc';
|
||||
|
||||
/* Action buttons. */
|
||||
$lang->bug->buttonConfirm = 'Confirm';
|
||||
$lang->bug->buttonCopy = 'Copy';
|
||||
$lang->bug->buttonAssign = 'Assgin';
|
||||
$lang->bug->buttonEdit = 'Edit';
|
||||
$lang->bug->buttonActivate = 'Activate';
|
||||
$lang->bug->buttonResolve = 'Resolve';
|
||||
$lang->bug->buttonClose = 'Close';
|
||||
$lang->bug->buttonToList = 'Back';
|
||||
$lang->bug->buttonCreateTestcase = 'Create case';
|
||||
|
||||
/* Confirm messags. */
|
||||
$lang->bug->confirmChangeProduct = 'Change product will change project, task and story also, are you sure?';
|
||||
$lang->bug->confirmDelete = 'Are you sure to delete this bug?';
|
||||
$lang->bug->setTemplateTitle = 'Please input the template title:';
|
||||
$lang->bug->remindTask = 'This bug has been to be a task, update the task:%s or not?';
|
||||
|
||||
/* Templates. */
|
||||
$lang->bug->tplStep = "<p>[Steps]</p>";
|
||||
$lang->bug->tplResult = "<p>[Result]</p>";
|
||||
$lang->bug->tplExpect = "<p>[Expect]</p>";
|
||||
|
||||
/* Field options lists. */
|
||||
$lang->bug->severityList[3] = '3';
|
||||
$lang->bug->severityList[1] = '1';
|
||||
$lang->bug->severityList[2] = '2';
|
||||
$lang->bug->severityList[4] = '4';
|
||||
|
||||
$lang->bug->priList[0] = '';
|
||||
$lang->bug->priList[3] = '3';
|
||||
$lang->bug->priList[1] = '1';
|
||||
$lang->bug->priList[2] = '2';
|
||||
$lang->bug->priList[4] = '4';
|
||||
|
||||
$lang->bug->osList[''] = '';
|
||||
$lang->bug->osList['all'] = 'All';
|
||||
$lang->bug->osList['windows'] = 'Windows';
|
||||
$lang->bug->osList['winxp'] = 'Windows XP';
|
||||
$lang->bug->osList['win7'] = 'Windows 7';
|
||||
$lang->bug->osList['vista'] = 'Windows Vista';
|
||||
$lang->bug->osList['win2000'] = 'Windows 2000';
|
||||
$lang->bug->osList['win2003'] = 'Windows 2003';
|
||||
$lang->bug->osList['win2008'] = 'Windows 2008';
|
||||
$lang->bug->osList['winnt'] = 'Windows NT';
|
||||
$lang->bug->osList['win98'] = 'Windows 98';
|
||||
$lang->bug->osList['andriod'] = 'Andriod';
|
||||
$lang->bug->osList['ios'] = 'IOS';
|
||||
$lang->bug->osList['wp7'] = 'WP7';
|
||||
$lang->bug->osList['symbian'] = 'Symbian';
|
||||
$lang->bug->osList['linux'] = 'Linux';
|
||||
$lang->bug->osList['freebsd'] = 'FreeBSD';
|
||||
$lang->bug->osList['mac'] = 'Mac OS';
|
||||
$lang->bug->osList['unix'] = 'Unix';
|
||||
$lang->bug->osList['others'] = 'Others';
|
||||
|
||||
$lang->bug->browserList[''] = '';
|
||||
$lang->bug->browserList['all'] = 'All';
|
||||
$lang->bug->browserList['ie'] = 'IE';
|
||||
$lang->bug->browserList['ie8'] = 'IE8';
|
||||
$lang->bug->browserList['ie9'] = 'IE9';
|
||||
$lang->bug->browserList['ie6'] = 'IE6';
|
||||
$lang->bug->browserList['ie7'] = 'IE7';
|
||||
$lang->bug->browserList['chrome'] = 'chrome';
|
||||
$lang->bug->browserList['firefox'] = 'Firefox';
|
||||
$lang->bug->browserList['firefox2'] = 'Firefox2';
|
||||
$lang->bug->browserList['firefox3'] = 'Firefox3';
|
||||
$lang->bug->browserList['firefox4'] = 'Firefox4';
|
||||
$lang->bug->browserList['opera'] = 'opera';
|
||||
$lang->bug->browserList['opera9'] = 'opera9';
|
||||
$lang->bug->browserList['oprea10'] = 'opera10';
|
||||
$lang->bug->browserList['oprea11'] = 'opera11';
|
||||
$lang->bug->browserList['safari'] = 'safari';
|
||||
$lang->bug->browserList['maxthon'] = '傲游';
|
||||
$lang->bug->browserList['uc'] = 'UC';
|
||||
$lang->bug->browserList['other'] = 'Others';
|
||||
|
||||
$lang->bug->typeList[''] = '';
|
||||
$lang->bug->typeList['codeerror'] = 'Code error';
|
||||
$lang->bug->typeList['interface'] = 'Interface';
|
||||
$lang->bug->typeList['designchange'] = 'Design change';
|
||||
$lang->bug->typeList['newfeature'] = 'New feature';
|
||||
$lang->bug->typeList['designdefect'] = 'Design defect';
|
||||
$lang->bug->typeList['config'] = 'Config';
|
||||
$lang->bug->typeList['install'] = 'Install';
|
||||
$lang->bug->typeList['security'] = 'Security';
|
||||
$lang->bug->typeList['performance'] = 'Performance';
|
||||
$lang->bug->typeList['standard'] = 'Standard';
|
||||
$lang->bug->typeList['automation'] = 'Automation';
|
||||
$lang->bug->typeList['trackthings'] = 'Tracking';
|
||||
$lang->bug->typeList['others'] = 'Others';
|
||||
|
||||
$lang->bug->statusList[''] = '';
|
||||
$lang->bug->statusList['active'] = 'Active';
|
||||
$lang->bug->statusList['resolved'] = 'Resolved';
|
||||
$lang->bug->statusList['closed'] = 'Closed';
|
||||
|
||||
$lang->bug->confirmedList[1] = 'Confirmed';
|
||||
$lang->bug->confirmedList[0] = 'Unconfirmed';
|
||||
|
||||
$lang->bug->resolutionList[''] = '';
|
||||
$lang->bug->resolutionList['bydesign'] = 'By design';
|
||||
$lang->bug->resolutionList['duplicate'] = 'Duplicate';
|
||||
$lang->bug->resolutionList['external'] = 'External';
|
||||
$lang->bug->resolutionList['fixed'] = 'Fixed';
|
||||
$lang->bug->resolutionList['notrepro'] = 'Not reproduce';
|
||||
$lang->bug->resolutionList['postponed'] = 'Postponed';
|
||||
$lang->bug->resolutionList['willnotfix'] = "Won't fix";
|
||||
$lang->bug->resolutionList['tostory'] = 'To story';
|
||||
|
||||
/* Report. */
|
||||
$lang->bug->report = new stdclass();
|
||||
$lang->bug->report->common = 'Report';
|
||||
$lang->bug->report->select = 'Select';
|
||||
$lang->bug->report->create = 'Create';
|
||||
|
||||
$lang->bug->report->charts['bugsPerProject'] = 'Project bugs';
|
||||
$lang->bug->report->charts['bugsPerBuild'] = 'Build bugs';
|
||||
$lang->bug->report->charts['bugsPerModule'] = 'Module bugs';
|
||||
$lang->bug->report->charts['openedBugsPerDay'] = 'Opened bugs per day';
|
||||
$lang->bug->report->charts['resolvedBugsPerDay'] = 'Resolved bugs per day';
|
||||
$lang->bug->report->charts['closedBugsPerDay'] = 'Closed bugs per day';
|
||||
$lang->bug->report->charts['openedBugsPerUser'] = 'Opened bugs per user';
|
||||
$lang->bug->report->charts['resolvedBugsPerUser'] = 'Resolved bugs per user';
|
||||
$lang->bug->report->charts['closedBugsPerUser'] = 'Closed bugs per user';
|
||||
$lang->bug->report->charts['bugsPerSeverity'] = 'Severity';
|
||||
$lang->bug->report->charts['bugsPerResolution'] = 'Resolution';
|
||||
$lang->bug->report->charts['bugsPerStatus'] = 'Status';
|
||||
$lang->bug->report->charts['bugsPerActivatedCount'] = 'Activated count';
|
||||
$lang->bug->report->charts['bugsPerType'] = 'Type';
|
||||
$lang->bug->report->charts['bugsPerAssignedTo'] = 'AssignedTo';
|
||||
//$lang->bug->report->charts['bugLiveDays'] = 'Bug处理时间统计';
|
||||
//$lang->bug->report->charts['bugHistories'] = 'Bug处理步骤统计';
|
||||
|
||||
$lang->bug->report->options = new stdclass();
|
||||
$lang->bug->report->options->graph = new stdclass();
|
||||
$lang->bug->report->options->swf = 'pie2d';
|
||||
$lang->bug->report->options->width = 'auto';
|
||||
$lang->bug->report->options->height = 300;
|
||||
$lang->bug->report->options->graph->baseFontSize = 12;
|
||||
$lang->bug->report->options->graph->showNames = 1;
|
||||
$lang->bug->report->options->graph->formatNumber = 1;
|
||||
$lang->bug->report->options->graph->decimalPrecision = 0;
|
||||
$lang->bug->report->options->graph->animation = 0;
|
||||
$lang->bug->report->options->graph->rotateNames = 0;
|
||||
$lang->bug->report->options->graph->yAxisName = 'COUNT';
|
||||
$lang->bug->report->options->graph->pieRadius = 100;
|
||||
$lang->bug->report->options->graph->showColumnShadow = 0;
|
||||
|
||||
$lang->bug->report->bugsPerProject = new stdclass();
|
||||
$lang->bug->report->bugsPerBuild = new stdclass();
|
||||
$lang->bug->report->bugsPerModule = new stdclass();
|
||||
$lang->bug->report->openedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->closedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->openedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->closedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->bugsPerSeverity = new stdclass();
|
||||
$lang->bug->report->bugsPerResolution = new stdclass();
|
||||
$lang->bug->report->bugsPerStatus = new stdclass();
|
||||
$lang->bug->report->bugsPerActivatedCount = new stdclass();
|
||||
$lang->bug->report->bugsPerType = new stdclass();
|
||||
$lang->bug->report->bugsPerAssignedTo = new stdclass();
|
||||
$lang->bug->report->bugLiveDays = new stdclass();
|
||||
$lang->bug->report->bugHistories = new stdclass();
|
||||
|
||||
$lang->bug->report->bugsPerProject->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerBuild->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerModule->graph = new stdclass();
|
||||
$lang->bug->report->openedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->closedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->openedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->closedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerSeverity->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerResolution->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerStatus->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerActivatedCount->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerType->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerAssignedTo->graph = new stdclass();
|
||||
$lang->bug->report->bugLiveDays->graph = new stdclass();
|
||||
$lang->bug->report->bugHistories->graph = new stdclass();
|
||||
|
||||
$lang->bug->report->bugsPerProject->graph->xAxisName = 'Project';
|
||||
$lang->bug->report->bugsPerBuild->graph->xAxisName = 'Build';
|
||||
$lang->bug->report->bugsPerModule->graph->xAxisName = 'Module';
|
||||
|
||||
$lang->bug->report->openedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->openedBugsPerDay->height = 400;
|
||||
$lang->bug->report->openedBugsPerDay->graph->xAxisName = 'Date';
|
||||
$lang->bug->report->openedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->resolvedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->resolvedBugsPerDay->height = 400;
|
||||
$lang->bug->report->resolvedBugsPerDay->graph->xAxisName = 'Date';
|
||||
$lang->bug->report->resolvedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->closedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->closedBugsPerDay->height = 400;
|
||||
$lang->bug->report->closedBugsPerDay->graph->xAxisName = 'Date';
|
||||
$lang->bug->report->closedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->openedBugsPerUser->graph->xAxisName = 'User';
|
||||
$lang->bug->report->resolvedBugsPerUser->graph->xAxisName= 'User';
|
||||
$lang->bug->report->closedBugsPerUser->graph->xAxisName = 'User';
|
||||
|
||||
$lang->bug->report->bugsPerSeverity->graph->xAxisName = 'Severity';
|
||||
$lang->bug->report->bugsPerResolution->graph->xAxisName = 'Resolution';
|
||||
$lang->bug->report->bugsPerStatus->graph->xAxisName = 'Status';
|
||||
$lang->bug->report->bugsPerActivatedCount->graph->xAxisName = 'Activated count';
|
||||
$lang->bug->report->bugsPerType->graph->xAxisName = 'Type';
|
||||
$lang->bug->report->bugsPerAssignedTo->graph->xAxisName = 'AssignedTo';
|
||||
$lang->bug->report->bugLiveDays->graph->xAxisName = 'Live days';
|
||||
$lang->bug->report->bugHistories->graph->xAxisName = 'Histories';
|
||||
|
||||
/* 操作记录。*/
|
||||
$lang->bug->action = new stdclass();
|
||||
$lang->bug->action->resolved = array('main' => '$date, Resolved by <strong>$actor</strong>, resolution is <strong>$extra</strong>.', 'extra' => $lang->bug->resolutionList);
|
||||
$lang->bug->action->tostory = array('main' => '$date, To story by <strong>$actor</strong>, ID is <strong>$extra</strong>.');
|
||||
$lang->bug->action->totask = array('main' => '$date, To task by <strong>$actor</strong>, ID is <strong>$extra</strong>.');
|
||||
|
||||
$lang->bug->placeholder = new stdclass();
|
||||
$lang->bug->placeholder->mailto = 'you can input the user account to select users to mail to.';
|
||||
$lang->bug->placeholder->keywords = 'keywords';
|
||||
<?php
|
||||
/**
|
||||
* The bug module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* Fieldlist. */
|
||||
$lang->bug->common = 'Bug';
|
||||
$lang->bug->id = 'ID';
|
||||
$lang->bug->product = 'Product';
|
||||
$lang->bug->module = 'Module';
|
||||
$lang->bug->path = 'Path';
|
||||
$lang->bug->project = 'Project';
|
||||
$lang->bug->story = 'Story';
|
||||
$lang->bug->storyVersion = 'Story Version';
|
||||
$lang->bug->task = 'Task';
|
||||
$lang->bug->title = 'Title';
|
||||
$lang->bug->severity = 'Severity';
|
||||
$lang->bug->severityAB = 'S';
|
||||
$lang->bug->pri = 'Priority';
|
||||
$lang->bug->type = 'Type';
|
||||
$lang->bug->os = 'OS';
|
||||
$lang->bug->hardware = 'Hardware';
|
||||
$lang->bug->browser = 'Browser';
|
||||
$lang->bug->machine = 'Machine';
|
||||
$lang->bug->found = 'How found';
|
||||
$lang->bug->steps = 'Steps';
|
||||
$lang->bug->status = 'Status';
|
||||
$lang->bug->statusAB = 'Status';
|
||||
$lang->bug->activatedCount = 'Activated count';
|
||||
$lang->bug->activatedCountAB = 'Activated count';
|
||||
$lang->bug->confirmed = 'Confirmed';
|
||||
$lang->bug->toTask = 'To task';
|
||||
$lang->bug->toStory = 'To story';
|
||||
$lang->bug->mailto = 'Mailto';
|
||||
$lang->bug->openedBy = 'Opened By';
|
||||
$lang->bug->openedByAB = 'Opened';
|
||||
$lang->bug->openedDate = 'Opened date';
|
||||
$lang->bug->openedDateAB = 'Date';
|
||||
$lang->bug->openedBuild = 'Opened Build';
|
||||
$lang->bug->assignedTo = 'Assigned';
|
||||
$lang->bug->assignedDate = 'Assigned Date';
|
||||
$lang->bug->resolvedBy = 'Resolved By';
|
||||
$lang->bug->resolvedByAB = 'Resolve';
|
||||
$lang->bug->resolution = 'Resolution';
|
||||
$lang->bug->resolutionAB = 'Resolution';
|
||||
$lang->bug->resolvedBuild = 'Resolved Build';
|
||||
$lang->bug->resolvedDate = 'Resolved Date';
|
||||
$lang->bug->resolvedDateAB = 'Date';
|
||||
$lang->bug->closedBy = 'Closed By';
|
||||
$lang->bug->closedDate = 'Closed Date';
|
||||
$lang->bug->duplicateBug = 'Duplicate';
|
||||
$lang->bug->lastEditedBy = 'Last Edited By';
|
||||
$lang->bug->lastEditedDate = 'Last Edited Date';
|
||||
$lang->bug->linkBug = 'Related';
|
||||
$lang->bug->case = 'Case';
|
||||
$lang->bug->files = 'Files';
|
||||
$lang->bug->keywords = 'Keywords';
|
||||
$lang->bug->lastEditedByAB = 'Edited';
|
||||
$lang->bug->lastEditedDateAB = 'Edited Date';
|
||||
$lang->bug->fromCase = 'From case';
|
||||
$lang->bug->toCase = 'To case';
|
||||
|
||||
/* Actions. */
|
||||
$lang->bug->index = 'Index';
|
||||
$lang->bug->create = 'Create Bug';
|
||||
$lang->bug->confirmBug = 'Confirm Bug';
|
||||
$lang->bug->edit = 'Edit Bug';
|
||||
$lang->bug->batchEdit = 'Batch edit';
|
||||
$lang->bug->assignTo = 'Assign';
|
||||
$lang->bug->browse = 'Browse Bug';
|
||||
$lang->bug->view = 'Bug Info';
|
||||
$lang->bug->resolve = 'Resolve Bug';
|
||||
$lang->bug->close = 'Close Bug';
|
||||
$lang->bug->activate = 'Activate Bug';
|
||||
$lang->bug->reportChart = 'Report';
|
||||
$lang->bug->export = 'Export data';
|
||||
$lang->bug->delete = 'Delete Bug';
|
||||
$lang->bug->saveTemplate = 'Save template';
|
||||
$lang->bug->deleteTemplate = 'Delete template';
|
||||
$lang->bug->customFields = 'Custom';
|
||||
$lang->bug->restoreDefault = 'Default';
|
||||
$lang->bug->ajaxGetUserBugs = 'API: My Bugs';
|
||||
$lang->bug->ajaxGetModuleOwner = 'API: Get module default owner';
|
||||
$lang->bug->confirmStoryChange = 'Confirm Story Change';
|
||||
|
||||
/* Browse tabs. */
|
||||
$lang->bug->selectProduct = 'Select product';
|
||||
$lang->bug->byModule = 'ByModule';
|
||||
$lang->bug->assignToMe = 'MyBugs';
|
||||
$lang->bug->openedByMe = 'MyOpen';
|
||||
$lang->bug->resolvedByMe = 'MyResolve';
|
||||
$lang->bug->closedByMe = 'MyClose';
|
||||
$lang->bug->assignToNull = 'Unassigned';
|
||||
$lang->bug->unResolved = 'Unresolved';
|
||||
$lang->bug->unclosed = 'Unclosed';
|
||||
$lang->bug->longLifeBugs = 'Longlife';
|
||||
$lang->bug->postponedBugs = 'Postponed';
|
||||
$lang->bug->allBugs = 'Allbug';
|
||||
$lang->bug->moduleBugs = 'ByModule';
|
||||
$lang->bug->byQuery = 'Search';
|
||||
$lang->bug->needConfirm = 'StoryChanged';
|
||||
$lang->bug->allProduct = 'All products';
|
||||
|
||||
/* Labels. */
|
||||
$lang->bug->lblProductAndModule = 'Product&Module';
|
||||
$lang->bug->lblProjectAndTask = 'Project&Task';
|
||||
$lang->bug->lblStory = 'Story';
|
||||
$lang->bug->lblTypeAndSeverity = 'Type&Severity';
|
||||
$lang->bug->lblSystemBrowserAndHardware = 'OS&Browser';
|
||||
$lang->bug->lblAssignedTo = 'Assigned to';
|
||||
$lang->bug->lblMailto = 'Mailto';
|
||||
$lang->bug->lblLastEdited = 'Last edited';
|
||||
$lang->bug->lblResolved = 'Resolved';
|
||||
$lang->bug->lblAllFields = 'All Fields';
|
||||
$lang->bug->lblCustomFields = 'Custom Fields';
|
||||
|
||||
/* Legends. */
|
||||
$lang->bug->legendBasicInfo = 'Basic info';
|
||||
$lang->bug->legendMailto = 'Mailto';
|
||||
$lang->bug->legendAttatch = 'Files';
|
||||
$lang->bug->legendLinkBugs = 'Related bug';
|
||||
$lang->bug->legendPrjStoryTask = 'Project, story & task';
|
||||
$lang->bug->legendCases = 'Related case';
|
||||
$lang->bug->legendSteps = 'Steps';
|
||||
$lang->bug->legendAction = 'Action';
|
||||
$lang->bug->legendHistory = 'History';
|
||||
$lang->bug->legendComment = 'Comment';
|
||||
$lang->bug->legendLife = 'Lifetime';
|
||||
$lang->bug->legendMisc = 'Misc';
|
||||
|
||||
/* Action buttons. */
|
||||
$lang->bug->buttonConfirm = 'Confirm';
|
||||
$lang->bug->buttonCopy = 'Copy';
|
||||
$lang->bug->buttonAssign = 'Assgin';
|
||||
$lang->bug->buttonEdit = 'Edit';
|
||||
$lang->bug->buttonActivate = 'Activate';
|
||||
$lang->bug->buttonResolve = 'Resolve';
|
||||
$lang->bug->buttonClose = 'Close';
|
||||
$lang->bug->buttonToList = 'Back';
|
||||
$lang->bug->buttonCreateTestcase = 'Create case';
|
||||
|
||||
/* Confirm messags. */
|
||||
$lang->bug->confirmChangeProduct = 'Change product will change project, task and story also, are you sure?';
|
||||
$lang->bug->confirmDelete = 'Are you sure to delete this bug?';
|
||||
$lang->bug->setTemplateTitle = 'Please input the template title:';
|
||||
$lang->bug->remindTask = 'This bug has been to be a task, update the task:%s or not?';
|
||||
|
||||
/* Templates. */
|
||||
$lang->bug->tplStep = "<p>[Steps]</p>";
|
||||
$lang->bug->tplResult = "<p>[Result]</p>";
|
||||
$lang->bug->tplExpect = "<p>[Expect]</p>";
|
||||
|
||||
/* Field options lists. */
|
||||
$lang->bug->severityList[3] = '3';
|
||||
$lang->bug->severityList[1] = '1';
|
||||
$lang->bug->severityList[2] = '2';
|
||||
$lang->bug->severityList[4] = '4';
|
||||
|
||||
$lang->bug->priList[0] = '';
|
||||
$lang->bug->priList[3] = '3';
|
||||
$lang->bug->priList[1] = '1';
|
||||
$lang->bug->priList[2] = '2';
|
||||
$lang->bug->priList[4] = '4';
|
||||
|
||||
$lang->bug->osList[''] = '';
|
||||
$lang->bug->osList['all'] = 'All';
|
||||
$lang->bug->osList['windows'] = 'Windows';
|
||||
$lang->bug->osList['winxp'] = 'Windows XP';
|
||||
$lang->bug->osList['win7'] = 'Windows 7';
|
||||
$lang->bug->osList['vista'] = 'Windows Vista';
|
||||
$lang->bug->osList['win2000'] = 'Windows 2000';
|
||||
$lang->bug->osList['win2003'] = 'Windows 2003';
|
||||
$lang->bug->osList['win2008'] = 'Windows 2008';
|
||||
$lang->bug->osList['winnt'] = 'Windows NT';
|
||||
$lang->bug->osList['win98'] = 'Windows 98';
|
||||
$lang->bug->osList['andriod'] = 'Andriod';
|
||||
$lang->bug->osList['ios'] = 'IOS';
|
||||
$lang->bug->osList['wp7'] = 'WP7';
|
||||
$lang->bug->osList['symbian'] = 'Symbian';
|
||||
$lang->bug->osList['linux'] = 'Linux';
|
||||
$lang->bug->osList['freebsd'] = 'FreeBSD';
|
||||
$lang->bug->osList['mac'] = 'Mac OS';
|
||||
$lang->bug->osList['unix'] = 'Unix';
|
||||
$lang->bug->osList['others'] = 'Others';
|
||||
|
||||
$lang->bug->browserList[''] = '';
|
||||
$lang->bug->browserList['all'] = 'All';
|
||||
$lang->bug->browserList['ie'] = 'IE';
|
||||
$lang->bug->browserList['ie8'] = 'IE8';
|
||||
$lang->bug->browserList['ie9'] = 'IE9';
|
||||
$lang->bug->browserList['ie6'] = 'IE6';
|
||||
$lang->bug->browserList['ie7'] = 'IE7';
|
||||
$lang->bug->browserList['chrome'] = 'chrome';
|
||||
$lang->bug->browserList['firefox'] = 'Firefox';
|
||||
$lang->bug->browserList['firefox2'] = 'Firefox2';
|
||||
$lang->bug->browserList['firefox3'] = 'Firefox3';
|
||||
$lang->bug->browserList['firefox4'] = 'Firefox4';
|
||||
$lang->bug->browserList['opera'] = 'opera';
|
||||
$lang->bug->browserList['opera9'] = 'opera9';
|
||||
$lang->bug->browserList['oprea10'] = 'opera10';
|
||||
$lang->bug->browserList['oprea11'] = 'opera11';
|
||||
$lang->bug->browserList['safari'] = 'safari';
|
||||
$lang->bug->browserList['maxthon'] = '傲游';
|
||||
$lang->bug->browserList['uc'] = 'UC';
|
||||
$lang->bug->browserList['other'] = 'Others';
|
||||
|
||||
$lang->bug->typeList[''] = '';
|
||||
$lang->bug->typeList['codeerror'] = 'Code error';
|
||||
$lang->bug->typeList['interface'] = 'Interface';
|
||||
$lang->bug->typeList['designchange'] = 'Design change';
|
||||
$lang->bug->typeList['newfeature'] = 'New feature';
|
||||
$lang->bug->typeList['designdefect'] = 'Design defect';
|
||||
$lang->bug->typeList['config'] = 'Config';
|
||||
$lang->bug->typeList['install'] = 'Install';
|
||||
$lang->bug->typeList['security'] = 'Security';
|
||||
$lang->bug->typeList['performance'] = 'Performance';
|
||||
$lang->bug->typeList['standard'] = 'Standard';
|
||||
$lang->bug->typeList['automation'] = 'Automation';
|
||||
$lang->bug->typeList['trackthings'] = 'Tracking';
|
||||
$lang->bug->typeList['others'] = 'Others';
|
||||
|
||||
$lang->bug->statusList[''] = '';
|
||||
$lang->bug->statusList['active'] = 'Active';
|
||||
$lang->bug->statusList['resolved'] = 'Resolved';
|
||||
$lang->bug->statusList['closed'] = 'Closed';
|
||||
|
||||
$lang->bug->confirmedList[1] = 'Confirmed';
|
||||
$lang->bug->confirmedList[0] = 'Unconfirmed';
|
||||
|
||||
$lang->bug->resolutionList[''] = '';
|
||||
$lang->bug->resolutionList['bydesign'] = 'By design';
|
||||
$lang->bug->resolutionList['duplicate'] = 'Duplicate';
|
||||
$lang->bug->resolutionList['external'] = 'External';
|
||||
$lang->bug->resolutionList['fixed'] = 'Fixed';
|
||||
$lang->bug->resolutionList['notrepro'] = 'Not reproduce';
|
||||
$lang->bug->resolutionList['postponed'] = 'Postponed';
|
||||
$lang->bug->resolutionList['willnotfix'] = "Won't fix";
|
||||
$lang->bug->resolutionList['tostory'] = 'To story';
|
||||
|
||||
/* Report. */
|
||||
$lang->bug->report = new stdclass();
|
||||
$lang->bug->report->common = 'Report';
|
||||
$lang->bug->report->select = 'Select';
|
||||
$lang->bug->report->create = 'Create';
|
||||
|
||||
$lang->bug->report->charts['bugsPerProject'] = 'Project bugs';
|
||||
$lang->bug->report->charts['bugsPerBuild'] = 'Build bugs';
|
||||
$lang->bug->report->charts['bugsPerModule'] = 'Module bugs';
|
||||
$lang->bug->report->charts['openedBugsPerDay'] = 'Opened bugs per day';
|
||||
$lang->bug->report->charts['resolvedBugsPerDay'] = 'Resolved bugs per day';
|
||||
$lang->bug->report->charts['closedBugsPerDay'] = 'Closed bugs per day';
|
||||
$lang->bug->report->charts['openedBugsPerUser'] = 'Opened bugs per user';
|
||||
$lang->bug->report->charts['resolvedBugsPerUser'] = 'Resolved bugs per user';
|
||||
$lang->bug->report->charts['closedBugsPerUser'] = 'Closed bugs per user';
|
||||
$lang->bug->report->charts['bugsPerSeverity'] = 'Severity';
|
||||
$lang->bug->report->charts['bugsPerResolution'] = 'Resolution';
|
||||
$lang->bug->report->charts['bugsPerStatus'] = 'Status';
|
||||
$lang->bug->report->charts['bugsPerActivatedCount'] = 'Activated count';
|
||||
$lang->bug->report->charts['bugsPerType'] = 'Type';
|
||||
$lang->bug->report->charts['bugsPerAssignedTo'] = 'AssignedTo';
|
||||
//$lang->bug->report->charts['bugLiveDays'] = 'Bug处理时间统计';
|
||||
//$lang->bug->report->charts['bugHistories'] = 'Bug处理步骤统计';
|
||||
|
||||
$lang->bug->report->options = new stdclass();
|
||||
$lang->bug->report->options->graph = new stdclass();
|
||||
$lang->bug->report->options->swf = 'pie2d';
|
||||
$lang->bug->report->options->width = 'auto';
|
||||
$lang->bug->report->options->height = 300;
|
||||
$lang->bug->report->options->graph->baseFontSize = 12;
|
||||
$lang->bug->report->options->graph->showNames = 1;
|
||||
$lang->bug->report->options->graph->formatNumber = 1;
|
||||
$lang->bug->report->options->graph->decimalPrecision = 0;
|
||||
$lang->bug->report->options->graph->animation = 0;
|
||||
$lang->bug->report->options->graph->rotateNames = 0;
|
||||
$lang->bug->report->options->graph->yAxisName = 'COUNT';
|
||||
$lang->bug->report->options->graph->pieRadius = 100;
|
||||
$lang->bug->report->options->graph->showColumnShadow = 0;
|
||||
|
||||
$lang->bug->report->bugsPerProject = new stdclass();
|
||||
$lang->bug->report->bugsPerBuild = new stdclass();
|
||||
$lang->bug->report->bugsPerModule = new stdclass();
|
||||
$lang->bug->report->openedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->closedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->openedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->closedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->bugsPerSeverity = new stdclass();
|
||||
$lang->bug->report->bugsPerResolution = new stdclass();
|
||||
$lang->bug->report->bugsPerStatus = new stdclass();
|
||||
$lang->bug->report->bugsPerActivatedCount = new stdclass();
|
||||
$lang->bug->report->bugsPerType = new stdclass();
|
||||
$lang->bug->report->bugsPerAssignedTo = new stdclass();
|
||||
$lang->bug->report->bugLiveDays = new stdclass();
|
||||
$lang->bug->report->bugHistories = new stdclass();
|
||||
|
||||
$lang->bug->report->bugsPerProject->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerBuild->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerModule->graph = new stdclass();
|
||||
$lang->bug->report->openedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->closedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->openedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->closedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerSeverity->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerResolution->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerStatus->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerActivatedCount->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerType->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerAssignedTo->graph = new stdclass();
|
||||
$lang->bug->report->bugLiveDays->graph = new stdclass();
|
||||
$lang->bug->report->bugHistories->graph = new stdclass();
|
||||
|
||||
$lang->bug->report->bugsPerProject->graph->xAxisName = 'Project';
|
||||
$lang->bug->report->bugsPerBuild->graph->xAxisName = 'Build';
|
||||
$lang->bug->report->bugsPerModule->graph->xAxisName = 'Module';
|
||||
|
||||
$lang->bug->report->openedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->openedBugsPerDay->height = 400;
|
||||
$lang->bug->report->openedBugsPerDay->graph->xAxisName = 'Date';
|
||||
$lang->bug->report->openedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->resolvedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->resolvedBugsPerDay->height = 400;
|
||||
$lang->bug->report->resolvedBugsPerDay->graph->xAxisName = 'Date';
|
||||
$lang->bug->report->resolvedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->closedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->closedBugsPerDay->height = 400;
|
||||
$lang->bug->report->closedBugsPerDay->graph->xAxisName = 'Date';
|
||||
$lang->bug->report->closedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->openedBugsPerUser->graph->xAxisName = 'User';
|
||||
$lang->bug->report->resolvedBugsPerUser->graph->xAxisName= 'User';
|
||||
$lang->bug->report->closedBugsPerUser->graph->xAxisName = 'User';
|
||||
|
||||
$lang->bug->report->bugsPerSeverity->graph->xAxisName = 'Severity';
|
||||
$lang->bug->report->bugsPerResolution->graph->xAxisName = 'Resolution';
|
||||
$lang->bug->report->bugsPerStatus->graph->xAxisName = 'Status';
|
||||
$lang->bug->report->bugsPerActivatedCount->graph->xAxisName = 'Activated count';
|
||||
$lang->bug->report->bugsPerType->graph->xAxisName = 'Type';
|
||||
$lang->bug->report->bugsPerAssignedTo->graph->xAxisName = 'AssignedTo';
|
||||
$lang->bug->report->bugLiveDays->graph->xAxisName = 'Live days';
|
||||
$lang->bug->report->bugHistories->graph->xAxisName = 'Histories';
|
||||
|
||||
/* 操作记录。*/
|
||||
$lang->bug->action = new stdclass();
|
||||
$lang->bug->action->resolved = array('main' => '$date, Resolved by <strong>$actor</strong>, resolution is <strong>$extra</strong>.', 'extra' => $lang->bug->resolutionList);
|
||||
$lang->bug->action->tostory = array('main' => '$date, To story by <strong>$actor</strong>, ID is <strong>$extra</strong>.');
|
||||
$lang->bug->action->totask = array('main' => '$date, To task by <strong>$actor</strong>, ID is <strong>$extra</strong>.');
|
||||
|
||||
$lang->bug->placeholder = new stdclass();
|
||||
$lang->bug->placeholder->mailto = 'you can input the user account to select users to mail to.';
|
||||
$lang->bug->placeholder->keywords = 'keywords';
|
||||
|
||||
@@ -1,360 +1,360 @@
|
||||
<?php
|
||||
/**
|
||||
* The bug module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* 字段列表。*/
|
||||
$lang->bug->common = '缺陷管理';
|
||||
$lang->bug->id = 'Bug编号';
|
||||
$lang->bug->product = '所属产品';
|
||||
$lang->bug->module = '所属模块';
|
||||
$lang->bug->path = '模块路径';
|
||||
$lang->bug->project = '所属项目';
|
||||
$lang->bug->story = '相关需求';
|
||||
$lang->bug->storyVersion = '需求版本';
|
||||
$lang->bug->task = '相关任务';
|
||||
$lang->bug->title = 'Bug标题';
|
||||
$lang->bug->severity = '严重程度';
|
||||
$lang->bug->severityAB = '级别';
|
||||
$lang->bug->pri = '优先级';
|
||||
$lang->bug->type = 'Bug类型';
|
||||
$lang->bug->os = '操作系统';
|
||||
$lang->bug->hardware = '硬件平台';
|
||||
$lang->bug->browser = '浏览器';
|
||||
$lang->bug->machine = '机器硬件';
|
||||
$lang->bug->found = '如何发现';
|
||||
$lang->bug->steps = '重现步骤';
|
||||
$lang->bug->status = 'Bug状态';
|
||||
$lang->bug->statusAB = '状态';
|
||||
$lang->bug->activatedCount = '激活次数';
|
||||
$lang->bug->activatedCountAB = '激活次数';
|
||||
$lang->bug->confirmed = '是否确认';
|
||||
$lang->bug->toTask = '转任务';
|
||||
$lang->bug->toStory = '转需求';
|
||||
$lang->bug->mailto = '抄送给';
|
||||
$lang->bug->openedBy = '由谁创建';
|
||||
$lang->bug->openedByAB = '创建';
|
||||
$lang->bug->openedDate = '创建日期';
|
||||
$lang->bug->openedDateAB = '创建日期';
|
||||
$lang->bug->openedBuild = '影响版本';
|
||||
$lang->bug->assignedTo = '指派给';
|
||||
$lang->bug->assignedDate = '指派日期';
|
||||
$lang->bug->resolvedBy = '解决者';
|
||||
$lang->bug->resolvedByAB = '解决';
|
||||
$lang->bug->resolution = '解决方案';
|
||||
$lang->bug->resolutionAB = '方案';
|
||||
$lang->bug->resolvedBuild = '解决版本';
|
||||
$lang->bug->resolvedDate = '解决日期';
|
||||
$lang->bug->resolvedDateAB = '解决日期';
|
||||
$lang->bug->closedBy = '由谁关闭';
|
||||
$lang->bug->closedDate = '关闭日期';
|
||||
$lang->bug->duplicateBug = '重复ID';
|
||||
$lang->bug->lastEditedBy = '最后修改者';
|
||||
$lang->bug->lastEditedDate = '最后修改日期';
|
||||
$lang->bug->linkBug = '相关Bug';
|
||||
$lang->bug->case = '相关用例';
|
||||
$lang->bug->files = '附件';
|
||||
$lang->bug->keywords = '关键词';
|
||||
$lang->bug->lastEditedByAB = '修改者';
|
||||
$lang->bug->lastEditedDateAB = '修改日期';
|
||||
$lang->bug->fromCase = '来源用例';
|
||||
$lang->bug->toCase = '生成用例';
|
||||
|
||||
/* 方法列表。*/
|
||||
$lang->bug->index = '首页';
|
||||
$lang->bug->create = '提Bug';
|
||||
$lang->bug->confirmBug = '确认';
|
||||
$lang->bug->edit = '编辑';
|
||||
$lang->bug->batchEdit = '批量编辑';
|
||||
$lang->bug->assignTo = '指派';
|
||||
$lang->bug->browse = 'Bug列表';
|
||||
$lang->bug->view = 'Bug详情';
|
||||
$lang->bug->resolve = '解决';
|
||||
$lang->bug->close = '关闭';
|
||||
$lang->bug->activate = '激活Bug';
|
||||
$lang->bug->reportChart = '报表统计';
|
||||
$lang->bug->export = '导出';
|
||||
$lang->bug->delete = '删除';
|
||||
$lang->bug->saveTemplate = '保存模板';
|
||||
$lang->bug->deleteTemplate = '删除模板';
|
||||
$lang->bug->customFields = '自定义字段';
|
||||
$lang->bug->restoreDefault = '恢复默认';
|
||||
$lang->bug->ajaxGetUserBugs = '接口:我的Bug';
|
||||
$lang->bug->ajaxGetModuleOwner = '接口:获得模块的默认指派人';
|
||||
$lang->bug->confirmStoryChange = '确认需求变动';
|
||||
|
||||
/* 查询条件列表。*/
|
||||
$lang->bug->selectProduct = '请选择产品';
|
||||
$lang->bug->byModule = '按模块';
|
||||
$lang->bug->assignToMe = '指派给我';
|
||||
$lang->bug->openedByMe = '由我创建';
|
||||
$lang->bug->resolvedByMe = '由我解决';
|
||||
$lang->bug->closedByMe = '由我关闭';
|
||||
$lang->bug->assignToNull = '未指派';
|
||||
$lang->bug->unResolved = '未解决';
|
||||
$lang->bug->unclosed = '未关闭';
|
||||
$lang->bug->longLifeBugs = '久未处理';
|
||||
$lang->bug->postponedBugs = '被延期';
|
||||
$lang->bug->allBugs = '所有';
|
||||
$lang->bug->moduleBugs = '按模块';
|
||||
$lang->bug->byQuery = '搜索';
|
||||
$lang->bug->needConfirm = '需求变动';
|
||||
$lang->bug->allProduct = '所有产品';
|
||||
|
||||
/* 页面标签。*/
|
||||
$lang->bug->lblProductAndModule = '产品模块';
|
||||
$lang->bug->lblProjectAndTask = '项目任务';
|
||||
$lang->bug->lblStory = '相关需求';
|
||||
$lang->bug->lblTypeAndSeverity = '类型/严重程度';
|
||||
$lang->bug->lblSystemBrowserAndHardware = '系统/浏览器';
|
||||
$lang->bug->lblAssignedTo = '当前指派';
|
||||
$lang->bug->lblMailto = '抄送给';
|
||||
$lang->bug->lblLastEdited = '最后修改';
|
||||
$lang->bug->lblResolved = '由谁解决';
|
||||
$lang->bug->lblAllFields = '所有字段';
|
||||
$lang->bug->lblCustomFields = '自定义字段';
|
||||
|
||||
/* legend列表。*/
|
||||
$lang->bug->legendBasicInfo = '基本信息';
|
||||
$lang->bug->legendMailto = '抄送给';
|
||||
$lang->bug->legendAttatch = '附件';
|
||||
$lang->bug->legendLinkBugs = '相关Bug';
|
||||
$lang->bug->legendPrjStoryTask = '项目/需求/任务';
|
||||
$lang->bug->legendCases = '相关用例';
|
||||
$lang->bug->legendSteps = '重现步骤';
|
||||
$lang->bug->legendAction = '操作';
|
||||
$lang->bug->legendHistory = '历史记录';
|
||||
$lang->bug->legendComment = '备注';
|
||||
$lang->bug->legendLife = 'BUG的一生';
|
||||
$lang->bug->legendMisc = '其他相关';
|
||||
|
||||
/* 功能按钮。*/
|
||||
$lang->bug->buttonConfirm = '确认';
|
||||
$lang->bug->buttonCopy = '复制';
|
||||
$lang->bug->buttonAssign = '指派';
|
||||
$lang->bug->buttonEdit = '编辑';
|
||||
$lang->bug->buttonActivate = '激活';
|
||||
$lang->bug->buttonResolve = '解决';
|
||||
$lang->bug->buttonClose = '关闭';
|
||||
$lang->bug->buttonToList = '返回';
|
||||
$lang->bug->buttonCreateTestcase = '建用例';
|
||||
|
||||
/* 交互提示。*/
|
||||
$lang->bug->confirmChangeProduct = '修改产品会导致相应的项目、需求和任务发生变化,确定吗?';
|
||||
$lang->bug->confirmDelete = '您确认要删除该Bug吗?';
|
||||
$lang->bug->setTemplateTitle = '请输入bug模板标题(保存之前请先填写bug重现步骤):';
|
||||
$lang->bug->remindTask = '该Bug已经转化为任务,是否更新任务(编号:%s)状态 ?';
|
||||
|
||||
/* 模板。*/
|
||||
$lang->bug->tplStep = "<p>[步骤]</p>";
|
||||
$lang->bug->tplResult = "<p>[结果]</p>";
|
||||
$lang->bug->tplExpect = "<p>[期望]</p>";
|
||||
|
||||
/* 各个字段取值列表。*/
|
||||
$lang->bug->severityList[3] = '3';
|
||||
$lang->bug->severityList[1] = '1';
|
||||
$lang->bug->severityList[2] = '2';
|
||||
$lang->bug->severityList[4] = '4';
|
||||
|
||||
$lang->bug->priList[0] = '';
|
||||
$lang->bug->priList[3] = '3';
|
||||
$lang->bug->priList[1] = '1';
|
||||
$lang->bug->priList[2] = '2';
|
||||
$lang->bug->priList[4] = '4';
|
||||
|
||||
$lang->bug->osList[''] = '';
|
||||
$lang->bug->osList['all'] = '全部';
|
||||
$lang->bug->osList['windows'] = 'Windows';
|
||||
$lang->bug->osList['winxp'] = 'Windows XP';
|
||||
$lang->bug->osList['win7'] = 'Windows 7';
|
||||
$lang->bug->osList['vista'] = 'Windows Vista';
|
||||
$lang->bug->osList['win2000'] = 'Windows 2000';
|
||||
$lang->bug->osList['win2003'] = 'Windows 2003';
|
||||
$lang->bug->osList['win2008'] = 'Windows 2008';
|
||||
$lang->bug->osList['winnt'] = 'Windows NT';
|
||||
$lang->bug->osList['win98'] = 'Windows 98';
|
||||
$lang->bug->osList['andriod'] = 'Andriod';
|
||||
$lang->bug->osList['ios'] = 'IOS';
|
||||
$lang->bug->osList['wp7'] = 'WP7';
|
||||
$lang->bug->osList['symbian'] = 'Symbian';
|
||||
$lang->bug->osList['linux'] = 'Linux';
|
||||
$lang->bug->osList['freebsd'] = 'FreeBSD';
|
||||
$lang->bug->osList['mac'] = 'Mac OS';
|
||||
$lang->bug->osList['unix'] = 'Unix';
|
||||
$lang->bug->osList['others'] = '其他';
|
||||
|
||||
$lang->bug->browserList[''] = '';
|
||||
$lang->bug->browserList['all'] = '全部';
|
||||
$lang->bug->browserList['ie'] = 'IE系列';
|
||||
$lang->bug->browserList['ie8'] = 'IE8';
|
||||
$lang->bug->browserList['ie9'] = 'IE9';
|
||||
$lang->bug->browserList['ie6'] = 'IE6';
|
||||
$lang->bug->browserList['ie7'] = 'IE7';
|
||||
$lang->bug->browserList['chrome'] = 'chrome';
|
||||
$lang->bug->browserList['firefox'] = 'firefox系列';
|
||||
$lang->bug->browserList['firefox2'] = 'firefox2';
|
||||
$lang->bug->browserList['firefox3'] = 'firefox3';
|
||||
$lang->bug->browserList['firefox4'] = 'firefox4';
|
||||
$lang->bug->browserList['opera'] = 'opera系列';
|
||||
$lang->bug->browserList['opera9'] = 'opera9';
|
||||
$lang->bug->browserList['oprea10'] = 'opera10';
|
||||
$lang->bug->browserList['oprea11'] = 'opera11';
|
||||
$lang->bug->browserList['safari'] = 'safari';
|
||||
$lang->bug->browserList['maxthon'] = '傲游';
|
||||
$lang->bug->browserList['uc'] = 'UC';
|
||||
$lang->bug->browserList['other'] = '其他';
|
||||
|
||||
$lang->bug->typeList[''] = '';
|
||||
$lang->bug->typeList['codeerror'] = '代码错误';
|
||||
$lang->bug->typeList['interface'] = '界面优化';
|
||||
$lang->bug->typeList['designchange'] = '设计变更';
|
||||
$lang->bug->typeList['newfeature'] = '新增需求';
|
||||
$lang->bug->typeList['designdefect'] = '设计缺陷';
|
||||
$lang->bug->typeList['config'] = '配置相关';
|
||||
$lang->bug->typeList['install'] = '安装部署';
|
||||
$lang->bug->typeList['security'] = '安全相关';
|
||||
$lang->bug->typeList['performance'] = '性能问题';
|
||||
$lang->bug->typeList['standard'] = '标准规范';
|
||||
$lang->bug->typeList['automation'] = '测试脚本';
|
||||
$lang->bug->typeList['trackthings'] = '事务跟踪';
|
||||
$lang->bug->typeList['others'] = '其他';
|
||||
|
||||
$lang->bug->statusList[''] = '';
|
||||
$lang->bug->statusList['active'] = '激活';
|
||||
$lang->bug->statusList['resolved'] = '已解决';
|
||||
$lang->bug->statusList['closed'] = '已关闭';
|
||||
|
||||
$lang->bug->confirmedList[1] = '已确认';
|
||||
$lang->bug->confirmedList[0] = '未确认';
|
||||
|
||||
$lang->bug->resolutionList[''] = '';
|
||||
$lang->bug->resolutionList['bydesign'] = '设计如此';
|
||||
$lang->bug->resolutionList['duplicate'] = '重复Bug';
|
||||
$lang->bug->resolutionList['external'] = '外部原因';
|
||||
$lang->bug->resolutionList['fixed'] = '已解决';
|
||||
$lang->bug->resolutionList['notrepro'] = '无法重现';
|
||||
$lang->bug->resolutionList['postponed'] = '延期处理';
|
||||
$lang->bug->resolutionList['willnotfix'] = "不予解决";
|
||||
$lang->bug->resolutionList['tostory'] = '转为需求';
|
||||
|
||||
/* 统计报表。*/
|
||||
$lang->bug->report = new stdclass();
|
||||
$lang->bug->report->common = '报表';
|
||||
$lang->bug->report->select = '请选择报表类型';
|
||||
$lang->bug->report->create = '生成报表';
|
||||
|
||||
$lang->bug->report->charts['bugsPerProject'] = '项目Bug数量';
|
||||
$lang->bug->report->charts['bugsPerBuild'] = '版本Bug数量';
|
||||
$lang->bug->report->charts['bugsPerModule'] = '模块Bug数量';
|
||||
$lang->bug->report->charts['openedBugsPerDay'] = '每天新增Bug数';
|
||||
$lang->bug->report->charts['resolvedBugsPerDay'] = '每天解决Bug数';
|
||||
$lang->bug->report->charts['closedBugsPerDay'] = '每天关闭的Bug数';
|
||||
$lang->bug->report->charts['openedBugsPerUser'] = '每人提交的Bug数';
|
||||
$lang->bug->report->charts['resolvedBugsPerUser'] = '每人解决的Bug数';
|
||||
$lang->bug->report->charts['closedBugsPerUser'] = '每人关闭的Bug数';
|
||||
$lang->bug->report->charts['bugsPerSeverity'] = 'Bug严重程度统计';
|
||||
$lang->bug->report->charts['bugsPerResolution'] = 'Bug解决方案统计';
|
||||
$lang->bug->report->charts['bugsPerStatus'] = 'Bug状态统计';
|
||||
$lang->bug->report->charts['bugsPerActivatedCount'] = 'Bug激活次数统计';
|
||||
$lang->bug->report->charts['bugsPerType'] = 'Bug类型统计';
|
||||
$lang->bug->report->charts['bugsPerAssignedTo'] = '指派给统计';
|
||||
//$lang->bug->report->charts['bugLiveDays'] = 'Bug处理时间统计';
|
||||
//$lang->bug->report->charts['bugHistories'] = 'Bug处理步骤统计';
|
||||
|
||||
$lang->bug->report->options = new stdclass();
|
||||
$lang->bug->report->options->graph = new stdclass();
|
||||
$lang->bug->report->options->swf = 'pie2d';
|
||||
$lang->bug->report->options->width = 'auto';
|
||||
$lang->bug->report->options->height = 300;
|
||||
$lang->bug->report->options->graph->baseFontSize = 12;
|
||||
$lang->bug->report->options->graph->showNames = 1;
|
||||
$lang->bug->report->options->graph->formatNumber = 1;
|
||||
$lang->bug->report->options->graph->decimalPrecision = 0;
|
||||
$lang->bug->report->options->graph->animation = 0;
|
||||
$lang->bug->report->options->graph->rotateNames = 0;
|
||||
$lang->bug->report->options->graph->yAxisName = 'COUNT';
|
||||
$lang->bug->report->options->graph->pieRadius = 100; // 饼图直径。
|
||||
$lang->bug->report->options->graph->showColumnShadow = 0; // 是否显示柱状图阴影。
|
||||
|
||||
$lang->bug->report->bugsPerProject = new stdclass();
|
||||
$lang->bug->report->bugsPerBuild = new stdclass();
|
||||
$lang->bug->report->bugsPerModule = new stdclass();
|
||||
$lang->bug->report->openedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->closedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->openedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->closedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->bugsPerSeverity = new stdclass();
|
||||
$lang->bug->report->bugsPerResolution = new stdclass();
|
||||
$lang->bug->report->bugsPerStatus = new stdclass();
|
||||
$lang->bug->report->bugsPerActivatedCount = new stdclass();
|
||||
$lang->bug->report->bugsPerType = new stdclass();
|
||||
$lang->bug->report->bugsPerAssignedTo = new stdclass();
|
||||
$lang->bug->report->bugLiveDays = new stdclass();
|
||||
$lang->bug->report->bugHistories = new stdclass();
|
||||
|
||||
$lang->bug->report->bugsPerProject->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerBuild->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerModule->graph = new stdclass();
|
||||
$lang->bug->report->openedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->closedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->openedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->closedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerSeverity->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerResolution->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerStatus->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerActivatedCount->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerType->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerAssignedTo->graph = new stdclass();
|
||||
$lang->bug->report->bugLiveDays->graph = new stdclass();
|
||||
$lang->bug->report->bugHistories->graph = new stdclass();
|
||||
|
||||
$lang->bug->report->bugsPerProject->graph->xAxisName = '项目';
|
||||
$lang->bug->report->bugsPerBuild->graph->xAxisName = '版本';
|
||||
$lang->bug->report->bugsPerModule->graph->xAxisName = '模块';
|
||||
|
||||
$lang->bug->report->openedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->openedBugsPerDay->height = 400;
|
||||
$lang->bug->report->openedBugsPerDay->graph->xAxisName = '日期';
|
||||
$lang->bug->report->openedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->resolvedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->resolvedBugsPerDay->height = 400;
|
||||
$lang->bug->report->resolvedBugsPerDay->graph->xAxisName = '日期';
|
||||
$lang->bug->report->resolvedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->closedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->closedBugsPerDay->height = 400;
|
||||
$lang->bug->report->closedBugsPerDay->graph->xAxisName = '日期';
|
||||
$lang->bug->report->closedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->openedBugsPerUser->graph->xAxisName = '用户';
|
||||
$lang->bug->report->resolvedBugsPerUser->graph->xAxisName= '用户';
|
||||
$lang->bug->report->closedBugsPerUser->graph->xAxisName = '用户';
|
||||
|
||||
$lang->bug->report->bugsPerSeverity->graph->xAxisName = '严重程度';
|
||||
$lang->bug->report->bugsPerResolution->graph->xAxisName = '解决方案';
|
||||
$lang->bug->report->bugsPerStatus->graph->xAxisName = '状态';
|
||||
$lang->bug->report->bugsPerActivatedCount->graph->xAxisName = '激活次数';
|
||||
$lang->bug->report->bugsPerType->graph->xAxisName = '类型';
|
||||
$lang->bug->report->bugsPerAssignedTo->graph->xAxisName = '指派给';
|
||||
$lang->bug->report->bugLiveDays->graph->xAxisName = '处理时间';
|
||||
$lang->bug->report->bugHistories->graph->xAxisName = '处理步骤';
|
||||
|
||||
/* 操作记录。*/
|
||||
$lang->bug->action = new stdclass();
|
||||
$lang->bug->action->resolved = array('main' => '$date, 由 <strong>$actor</strong> 解决,方案为 <strong>$extra</strong>。', 'extra' => $lang->bug->resolutionList);
|
||||
$lang->bug->action->tostory = array('main' => '$date, 由 <strong>$actor</strong> 转为<strong>需求</strong>,编号为 <strong>$extra</strong>。');
|
||||
$lang->bug->action->totask = array('main' => '$date, 由 <strong>$actor</strong> 导入为<strong>任务</strong>,编号为 <strong>$extra</strong>。');
|
||||
|
||||
$lang->bug->placeholder = new stdclass();
|
||||
$lang->bug->placeholder->mailto = '输入用户名自动选择';
|
||||
<?php
|
||||
/**
|
||||
* The bug module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* 字段列表。*/
|
||||
$lang->bug->common = '缺陷管理';
|
||||
$lang->bug->id = 'Bug编号';
|
||||
$lang->bug->product = '所属产品';
|
||||
$lang->bug->module = '所属模块';
|
||||
$lang->bug->path = '模块路径';
|
||||
$lang->bug->project = '所属项目';
|
||||
$lang->bug->story = '相关需求';
|
||||
$lang->bug->storyVersion = '需求版本';
|
||||
$lang->bug->task = '相关任务';
|
||||
$lang->bug->title = 'Bug标题';
|
||||
$lang->bug->severity = '严重程度';
|
||||
$lang->bug->severityAB = '级别';
|
||||
$lang->bug->pri = '优先级';
|
||||
$lang->bug->type = 'Bug类型';
|
||||
$lang->bug->os = '操作系统';
|
||||
$lang->bug->hardware = '硬件平台';
|
||||
$lang->bug->browser = '浏览器';
|
||||
$lang->bug->machine = '机器硬件';
|
||||
$lang->bug->found = '如何发现';
|
||||
$lang->bug->steps = '重现步骤';
|
||||
$lang->bug->status = 'Bug状态';
|
||||
$lang->bug->statusAB = '状态';
|
||||
$lang->bug->activatedCount = '激活次数';
|
||||
$lang->bug->activatedCountAB = '激活次数';
|
||||
$lang->bug->confirmed = '是否确认';
|
||||
$lang->bug->toTask = '转任务';
|
||||
$lang->bug->toStory = '转需求';
|
||||
$lang->bug->mailto = '抄送给';
|
||||
$lang->bug->openedBy = '由谁创建';
|
||||
$lang->bug->openedByAB = '创建';
|
||||
$lang->bug->openedDate = '创建日期';
|
||||
$lang->bug->openedDateAB = '创建日期';
|
||||
$lang->bug->openedBuild = '影响版本';
|
||||
$lang->bug->assignedTo = '指派给';
|
||||
$lang->bug->assignedDate = '指派日期';
|
||||
$lang->bug->resolvedBy = '解决者';
|
||||
$lang->bug->resolvedByAB = '解决';
|
||||
$lang->bug->resolution = '解决方案';
|
||||
$lang->bug->resolutionAB = '方案';
|
||||
$lang->bug->resolvedBuild = '解决版本';
|
||||
$lang->bug->resolvedDate = '解决日期';
|
||||
$lang->bug->resolvedDateAB = '解决日期';
|
||||
$lang->bug->closedBy = '由谁关闭';
|
||||
$lang->bug->closedDate = '关闭日期';
|
||||
$lang->bug->duplicateBug = '重复ID';
|
||||
$lang->bug->lastEditedBy = '最后修改者';
|
||||
$lang->bug->lastEditedDate = '最后修改日期';
|
||||
$lang->bug->linkBug = '相关Bug';
|
||||
$lang->bug->case = '相关用例';
|
||||
$lang->bug->files = '附件';
|
||||
$lang->bug->keywords = '关键词';
|
||||
$lang->bug->lastEditedByAB = '修改者';
|
||||
$lang->bug->lastEditedDateAB = '修改日期';
|
||||
$lang->bug->fromCase = '来源用例';
|
||||
$lang->bug->toCase = '生成用例';
|
||||
|
||||
/* 方法列表。*/
|
||||
$lang->bug->index = '首页';
|
||||
$lang->bug->create = '提Bug';
|
||||
$lang->bug->confirmBug = '确认';
|
||||
$lang->bug->edit = '编辑';
|
||||
$lang->bug->batchEdit = '批量编辑';
|
||||
$lang->bug->assignTo = '指派';
|
||||
$lang->bug->browse = 'Bug列表';
|
||||
$lang->bug->view = 'Bug详情';
|
||||
$lang->bug->resolve = '解决';
|
||||
$lang->bug->close = '关闭';
|
||||
$lang->bug->activate = '激活Bug';
|
||||
$lang->bug->reportChart = '报表统计';
|
||||
$lang->bug->export = '导出';
|
||||
$lang->bug->delete = '删除';
|
||||
$lang->bug->saveTemplate = '保存模板';
|
||||
$lang->bug->deleteTemplate = '删除模板';
|
||||
$lang->bug->customFields = '自定义字段';
|
||||
$lang->bug->restoreDefault = '恢复默认';
|
||||
$lang->bug->ajaxGetUserBugs = '接口:我的Bug';
|
||||
$lang->bug->ajaxGetModuleOwner = '接口:获得模块的默认指派人';
|
||||
$lang->bug->confirmStoryChange = '确认需求变动';
|
||||
|
||||
/* 查询条件列表。*/
|
||||
$lang->bug->selectProduct = '请选择产品';
|
||||
$lang->bug->byModule = '按模块';
|
||||
$lang->bug->assignToMe = '指派给我';
|
||||
$lang->bug->openedByMe = '由我创建';
|
||||
$lang->bug->resolvedByMe = '由我解决';
|
||||
$lang->bug->closedByMe = '由我关闭';
|
||||
$lang->bug->assignToNull = '未指派';
|
||||
$lang->bug->unResolved = '未解决';
|
||||
$lang->bug->unclosed = '未关闭';
|
||||
$lang->bug->longLifeBugs = '久未处理';
|
||||
$lang->bug->postponedBugs = '被延期';
|
||||
$lang->bug->allBugs = '所有';
|
||||
$lang->bug->moduleBugs = '按模块';
|
||||
$lang->bug->byQuery = '搜索';
|
||||
$lang->bug->needConfirm = '需求变动';
|
||||
$lang->bug->allProduct = '所有产品';
|
||||
|
||||
/* 页面标签。*/
|
||||
$lang->bug->lblProductAndModule = '产品模块';
|
||||
$lang->bug->lblProjectAndTask = '项目任务';
|
||||
$lang->bug->lblStory = '相关需求';
|
||||
$lang->bug->lblTypeAndSeverity = '类型/严重程度';
|
||||
$lang->bug->lblSystemBrowserAndHardware = '系统/浏览器';
|
||||
$lang->bug->lblAssignedTo = '当前指派';
|
||||
$lang->bug->lblMailto = '抄送给';
|
||||
$lang->bug->lblLastEdited = '最后修改';
|
||||
$lang->bug->lblResolved = '由谁解决';
|
||||
$lang->bug->lblAllFields = '所有字段';
|
||||
$lang->bug->lblCustomFields = '自定义字段';
|
||||
|
||||
/* legend列表。*/
|
||||
$lang->bug->legendBasicInfo = '基本信息';
|
||||
$lang->bug->legendMailto = '抄送给';
|
||||
$lang->bug->legendAttatch = '附件';
|
||||
$lang->bug->legendLinkBugs = '相关Bug';
|
||||
$lang->bug->legendPrjStoryTask = '项目/需求/任务';
|
||||
$lang->bug->legendCases = '相关用例';
|
||||
$lang->bug->legendSteps = '重现步骤';
|
||||
$lang->bug->legendAction = '操作';
|
||||
$lang->bug->legendHistory = '历史记录';
|
||||
$lang->bug->legendComment = '备注';
|
||||
$lang->bug->legendLife = 'BUG的一生';
|
||||
$lang->bug->legendMisc = '其他相关';
|
||||
|
||||
/* 功能按钮。*/
|
||||
$lang->bug->buttonConfirm = '确认';
|
||||
$lang->bug->buttonCopy = '复制';
|
||||
$lang->bug->buttonAssign = '指派';
|
||||
$lang->bug->buttonEdit = '编辑';
|
||||
$lang->bug->buttonActivate = '激活';
|
||||
$lang->bug->buttonResolve = '解决';
|
||||
$lang->bug->buttonClose = '关闭';
|
||||
$lang->bug->buttonToList = '返回';
|
||||
$lang->bug->buttonCreateTestcase = '建用例';
|
||||
|
||||
/* 交互提示。*/
|
||||
$lang->bug->confirmChangeProduct = '修改产品会导致相应的项目、需求和任务发生变化,确定吗?';
|
||||
$lang->bug->confirmDelete = '您确认要删除该Bug吗?';
|
||||
$lang->bug->setTemplateTitle = '请输入bug模板标题(保存之前请先填写bug重现步骤):';
|
||||
$lang->bug->remindTask = '该Bug已经转化为任务,是否更新任务(编号:%s)状态 ?';
|
||||
|
||||
/* 模板。*/
|
||||
$lang->bug->tplStep = "<p>[步骤]</p>";
|
||||
$lang->bug->tplResult = "<p>[结果]</p>";
|
||||
$lang->bug->tplExpect = "<p>[期望]</p>";
|
||||
|
||||
/* 各个字段取值列表。*/
|
||||
$lang->bug->severityList[3] = '3';
|
||||
$lang->bug->severityList[1] = '1';
|
||||
$lang->bug->severityList[2] = '2';
|
||||
$lang->bug->severityList[4] = '4';
|
||||
|
||||
$lang->bug->priList[0] = '';
|
||||
$lang->bug->priList[3] = '3';
|
||||
$lang->bug->priList[1] = '1';
|
||||
$lang->bug->priList[2] = '2';
|
||||
$lang->bug->priList[4] = '4';
|
||||
|
||||
$lang->bug->osList[''] = '';
|
||||
$lang->bug->osList['all'] = '全部';
|
||||
$lang->bug->osList['windows'] = 'Windows';
|
||||
$lang->bug->osList['winxp'] = 'Windows XP';
|
||||
$lang->bug->osList['win7'] = 'Windows 7';
|
||||
$lang->bug->osList['vista'] = 'Windows Vista';
|
||||
$lang->bug->osList['win2000'] = 'Windows 2000';
|
||||
$lang->bug->osList['win2003'] = 'Windows 2003';
|
||||
$lang->bug->osList['win2008'] = 'Windows 2008';
|
||||
$lang->bug->osList['winnt'] = 'Windows NT';
|
||||
$lang->bug->osList['win98'] = 'Windows 98';
|
||||
$lang->bug->osList['andriod'] = 'Andriod';
|
||||
$lang->bug->osList['ios'] = 'IOS';
|
||||
$lang->bug->osList['wp7'] = 'WP7';
|
||||
$lang->bug->osList['symbian'] = 'Symbian';
|
||||
$lang->bug->osList['linux'] = 'Linux';
|
||||
$lang->bug->osList['freebsd'] = 'FreeBSD';
|
||||
$lang->bug->osList['mac'] = 'Mac OS';
|
||||
$lang->bug->osList['unix'] = 'Unix';
|
||||
$lang->bug->osList['others'] = '其他';
|
||||
|
||||
$lang->bug->browserList[''] = '';
|
||||
$lang->bug->browserList['all'] = '全部';
|
||||
$lang->bug->browserList['ie'] = 'IE系列';
|
||||
$lang->bug->browserList['ie8'] = 'IE8';
|
||||
$lang->bug->browserList['ie9'] = 'IE9';
|
||||
$lang->bug->browserList['ie6'] = 'IE6';
|
||||
$lang->bug->browserList['ie7'] = 'IE7';
|
||||
$lang->bug->browserList['chrome'] = 'chrome';
|
||||
$lang->bug->browserList['firefox'] = 'firefox系列';
|
||||
$lang->bug->browserList['firefox2'] = 'firefox2';
|
||||
$lang->bug->browserList['firefox3'] = 'firefox3';
|
||||
$lang->bug->browserList['firefox4'] = 'firefox4';
|
||||
$lang->bug->browserList['opera'] = 'opera系列';
|
||||
$lang->bug->browserList['opera9'] = 'opera9';
|
||||
$lang->bug->browserList['oprea10'] = 'opera10';
|
||||
$lang->bug->browserList['oprea11'] = 'opera11';
|
||||
$lang->bug->browserList['safari'] = 'safari';
|
||||
$lang->bug->browserList['maxthon'] = '傲游';
|
||||
$lang->bug->browserList['uc'] = 'UC';
|
||||
$lang->bug->browserList['other'] = '其他';
|
||||
|
||||
$lang->bug->typeList[''] = '';
|
||||
$lang->bug->typeList['codeerror'] = '代码错误';
|
||||
$lang->bug->typeList['interface'] = '界面优化';
|
||||
$lang->bug->typeList['designchange'] = '设计变更';
|
||||
$lang->bug->typeList['newfeature'] = '新增需求';
|
||||
$lang->bug->typeList['designdefect'] = '设计缺陷';
|
||||
$lang->bug->typeList['config'] = '配置相关';
|
||||
$lang->bug->typeList['install'] = '安装部署';
|
||||
$lang->bug->typeList['security'] = '安全相关';
|
||||
$lang->bug->typeList['performance'] = '性能问题';
|
||||
$lang->bug->typeList['standard'] = '标准规范';
|
||||
$lang->bug->typeList['automation'] = '测试脚本';
|
||||
$lang->bug->typeList['trackthings'] = '事务跟踪';
|
||||
$lang->bug->typeList['others'] = '其他';
|
||||
|
||||
$lang->bug->statusList[''] = '';
|
||||
$lang->bug->statusList['active'] = '激活';
|
||||
$lang->bug->statusList['resolved'] = '已解决';
|
||||
$lang->bug->statusList['closed'] = '已关闭';
|
||||
|
||||
$lang->bug->confirmedList[1] = '已确认';
|
||||
$lang->bug->confirmedList[0] = '未确认';
|
||||
|
||||
$lang->bug->resolutionList[''] = '';
|
||||
$lang->bug->resolutionList['bydesign'] = '设计如此';
|
||||
$lang->bug->resolutionList['duplicate'] = '重复Bug';
|
||||
$lang->bug->resolutionList['external'] = '外部原因';
|
||||
$lang->bug->resolutionList['fixed'] = '已解决';
|
||||
$lang->bug->resolutionList['notrepro'] = '无法重现';
|
||||
$lang->bug->resolutionList['postponed'] = '延期处理';
|
||||
$lang->bug->resolutionList['willnotfix'] = "不予解决";
|
||||
$lang->bug->resolutionList['tostory'] = '转为需求';
|
||||
|
||||
/* 统计报表。*/
|
||||
$lang->bug->report = new stdclass();
|
||||
$lang->bug->report->common = '报表';
|
||||
$lang->bug->report->select = '请选择报表类型';
|
||||
$lang->bug->report->create = '生成报表';
|
||||
|
||||
$lang->bug->report->charts['bugsPerProject'] = '项目Bug数量';
|
||||
$lang->bug->report->charts['bugsPerBuild'] = '版本Bug数量';
|
||||
$lang->bug->report->charts['bugsPerModule'] = '模块Bug数量';
|
||||
$lang->bug->report->charts['openedBugsPerDay'] = '每天新增Bug数';
|
||||
$lang->bug->report->charts['resolvedBugsPerDay'] = '每天解决Bug数';
|
||||
$lang->bug->report->charts['closedBugsPerDay'] = '每天关闭的Bug数';
|
||||
$lang->bug->report->charts['openedBugsPerUser'] = '每人提交的Bug数';
|
||||
$lang->bug->report->charts['resolvedBugsPerUser'] = '每人解决的Bug数';
|
||||
$lang->bug->report->charts['closedBugsPerUser'] = '每人关闭的Bug数';
|
||||
$lang->bug->report->charts['bugsPerSeverity'] = 'Bug严重程度统计';
|
||||
$lang->bug->report->charts['bugsPerResolution'] = 'Bug解决方案统计';
|
||||
$lang->bug->report->charts['bugsPerStatus'] = 'Bug状态统计';
|
||||
$lang->bug->report->charts['bugsPerActivatedCount'] = 'Bug激活次数统计';
|
||||
$lang->bug->report->charts['bugsPerType'] = 'Bug类型统计';
|
||||
$lang->bug->report->charts['bugsPerAssignedTo'] = '指派给统计';
|
||||
//$lang->bug->report->charts['bugLiveDays'] = 'Bug处理时间统计';
|
||||
//$lang->bug->report->charts['bugHistories'] = 'Bug处理步骤统计';
|
||||
|
||||
$lang->bug->report->options = new stdclass();
|
||||
$lang->bug->report->options->graph = new stdclass();
|
||||
$lang->bug->report->options->swf = 'pie2d';
|
||||
$lang->bug->report->options->width = 'auto';
|
||||
$lang->bug->report->options->height = 300;
|
||||
$lang->bug->report->options->graph->baseFontSize = 12;
|
||||
$lang->bug->report->options->graph->showNames = 1;
|
||||
$lang->bug->report->options->graph->formatNumber = 1;
|
||||
$lang->bug->report->options->graph->decimalPrecision = 0;
|
||||
$lang->bug->report->options->graph->animation = 0;
|
||||
$lang->bug->report->options->graph->rotateNames = 0;
|
||||
$lang->bug->report->options->graph->yAxisName = 'COUNT';
|
||||
$lang->bug->report->options->graph->pieRadius = 100; // 饼图直径。
|
||||
$lang->bug->report->options->graph->showColumnShadow = 0; // 是否显示柱状图阴影。
|
||||
|
||||
$lang->bug->report->bugsPerProject = new stdclass();
|
||||
$lang->bug->report->bugsPerBuild = new stdclass();
|
||||
$lang->bug->report->bugsPerModule = new stdclass();
|
||||
$lang->bug->report->openedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->closedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->openedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->closedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->bugsPerSeverity = new stdclass();
|
||||
$lang->bug->report->bugsPerResolution = new stdclass();
|
||||
$lang->bug->report->bugsPerStatus = new stdclass();
|
||||
$lang->bug->report->bugsPerActivatedCount = new stdclass();
|
||||
$lang->bug->report->bugsPerType = new stdclass();
|
||||
$lang->bug->report->bugsPerAssignedTo = new stdclass();
|
||||
$lang->bug->report->bugLiveDays = new stdclass();
|
||||
$lang->bug->report->bugHistories = new stdclass();
|
||||
|
||||
$lang->bug->report->bugsPerProject->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerBuild->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerModule->graph = new stdclass();
|
||||
$lang->bug->report->openedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->closedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->openedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->closedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerSeverity->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerResolution->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerStatus->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerActivatedCount->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerType->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerAssignedTo->graph = new stdclass();
|
||||
$lang->bug->report->bugLiveDays->graph = new stdclass();
|
||||
$lang->bug->report->bugHistories->graph = new stdclass();
|
||||
|
||||
$lang->bug->report->bugsPerProject->graph->xAxisName = '项目';
|
||||
$lang->bug->report->bugsPerBuild->graph->xAxisName = '版本';
|
||||
$lang->bug->report->bugsPerModule->graph->xAxisName = '模块';
|
||||
|
||||
$lang->bug->report->openedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->openedBugsPerDay->height = 400;
|
||||
$lang->bug->report->openedBugsPerDay->graph->xAxisName = '日期';
|
||||
$lang->bug->report->openedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->resolvedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->resolvedBugsPerDay->height = 400;
|
||||
$lang->bug->report->resolvedBugsPerDay->graph->xAxisName = '日期';
|
||||
$lang->bug->report->resolvedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->closedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->closedBugsPerDay->height = 400;
|
||||
$lang->bug->report->closedBugsPerDay->graph->xAxisName = '日期';
|
||||
$lang->bug->report->closedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->openedBugsPerUser->graph->xAxisName = '用户';
|
||||
$lang->bug->report->resolvedBugsPerUser->graph->xAxisName= '用户';
|
||||
$lang->bug->report->closedBugsPerUser->graph->xAxisName = '用户';
|
||||
|
||||
$lang->bug->report->bugsPerSeverity->graph->xAxisName = '严重程度';
|
||||
$lang->bug->report->bugsPerResolution->graph->xAxisName = '解决方案';
|
||||
$lang->bug->report->bugsPerStatus->graph->xAxisName = '状态';
|
||||
$lang->bug->report->bugsPerActivatedCount->graph->xAxisName = '激活次数';
|
||||
$lang->bug->report->bugsPerType->graph->xAxisName = '类型';
|
||||
$lang->bug->report->bugsPerAssignedTo->graph->xAxisName = '指派给';
|
||||
$lang->bug->report->bugLiveDays->graph->xAxisName = '处理时间';
|
||||
$lang->bug->report->bugHistories->graph->xAxisName = '处理步骤';
|
||||
|
||||
/* 操作记录。*/
|
||||
$lang->bug->action = new stdclass();
|
||||
$lang->bug->action->resolved = array('main' => '$date, 由 <strong>$actor</strong> 解决,方案为 <strong>$extra</strong>。', 'extra' => $lang->bug->resolutionList);
|
||||
$lang->bug->action->tostory = array('main' => '$date, 由 <strong>$actor</strong> 转为<strong>需求</strong>,编号为 <strong>$extra</strong>。');
|
||||
$lang->bug->action->totask = array('main' => '$date, 由 <strong>$actor</strong> 导入为<strong>任务</strong>,编号为 <strong>$extra</strong>。');
|
||||
|
||||
$lang->bug->placeholder = new stdclass();
|
||||
$lang->bug->placeholder->mailto = '输入用户名自动选择';
|
||||
|
||||
@@ -1,360 +1,360 @@
|
||||
<?php
|
||||
/**
|
||||
* The bug module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id: zh-tw.php 3772 2012-12-12 02:18:16Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* 欄位列表。*/
|
||||
$lang->bug->common = '缺陷管理';
|
||||
$lang->bug->id = 'Bug編號';
|
||||
$lang->bug->product = '所屬產品';
|
||||
$lang->bug->module = '所屬模組';
|
||||
$lang->bug->path = '模組路徑';
|
||||
$lang->bug->project = '所屬項目';
|
||||
$lang->bug->story = '相關需求';
|
||||
$lang->bug->storyVersion = '需求版本';
|
||||
$lang->bug->task = '相關任務';
|
||||
$lang->bug->title = 'Bug標題';
|
||||
$lang->bug->severity = '嚴重程度';
|
||||
$lang->bug->severityAB = '級別';
|
||||
$lang->bug->pri = '優先順序';
|
||||
$lang->bug->type = 'Bug類型';
|
||||
$lang->bug->os = '操作系統';
|
||||
$lang->bug->hardware = '硬件平台';
|
||||
$lang->bug->browser = '瀏覽器';
|
||||
$lang->bug->machine = '機器硬件';
|
||||
$lang->bug->found = '如何發現';
|
||||
$lang->bug->steps = '重現步驟';
|
||||
$lang->bug->status = 'Bug狀態';
|
||||
$lang->bug->statusAB = '狀態';
|
||||
$lang->bug->activatedCount = '激活次數';
|
||||
$lang->bug->activatedCountAB = '激活次數';
|
||||
$lang->bug->confirmed = '是否確認';
|
||||
$lang->bug->toTask = '轉任務';
|
||||
$lang->bug->toStory = '轉需求';
|
||||
$lang->bug->mailto = '抄送給';
|
||||
$lang->bug->openedBy = '由誰創建';
|
||||
$lang->bug->openedByAB = '創建';
|
||||
$lang->bug->openedDate = '創建日期';
|
||||
$lang->bug->openedDateAB = '創建日期';
|
||||
$lang->bug->openedBuild = '影響版本';
|
||||
$lang->bug->assignedTo = '指派給';
|
||||
$lang->bug->assignedDate = '指派日期';
|
||||
$lang->bug->resolvedBy = '解決者';
|
||||
$lang->bug->resolvedByAB = '解決';
|
||||
$lang->bug->resolution = '解決方案';
|
||||
$lang->bug->resolutionAB = '方案';
|
||||
$lang->bug->resolvedBuild = '解決版本';
|
||||
$lang->bug->resolvedDate = '解決日期';
|
||||
$lang->bug->resolvedDateAB = '解決日期';
|
||||
$lang->bug->closedBy = '由誰關閉';
|
||||
$lang->bug->closedDate = '關閉日期';
|
||||
$lang->bug->duplicateBug = '重複ID';
|
||||
$lang->bug->lastEditedBy = '最後修改者';
|
||||
$lang->bug->lastEditedDate = '最後修改日期';
|
||||
$lang->bug->linkBug = '相關Bug';
|
||||
$lang->bug->case = '相關用例';
|
||||
$lang->bug->files = '附件';
|
||||
$lang->bug->keywords = '關鍵詞';
|
||||
$lang->bug->lastEditedByAB = '修改者';
|
||||
$lang->bug->lastEditedDateAB = '修改日期';
|
||||
$lang->bug->fromCase = '來源用例';
|
||||
$lang->bug->toCase = '生成用例';
|
||||
|
||||
/* 方法列表。*/
|
||||
$lang->bug->index = '首頁';
|
||||
$lang->bug->create = '創建';
|
||||
$lang->bug->confirmBug = '確認';
|
||||
$lang->bug->edit = '編輯';
|
||||
$lang->bug->batchEdit = '批量編輯';
|
||||
$lang->bug->assignTo = '指派';
|
||||
$lang->bug->browse = 'Bug列表';
|
||||
$lang->bug->view = 'Bug詳情';
|
||||
$lang->bug->resolve = '解決';
|
||||
$lang->bug->close = '關閉';
|
||||
$lang->bug->activate = '激活Bug';
|
||||
$lang->bug->reportChart = '報表統計';
|
||||
$lang->bug->export = '導出';
|
||||
$lang->bug->delete = '刪除';
|
||||
$lang->bug->saveTemplate = '保存模板';
|
||||
$lang->bug->deleteTemplate = '刪除模板';
|
||||
$lang->bug->customFields = '自定義欄位';
|
||||
$lang->bug->restoreDefault = '恢復預設';
|
||||
$lang->bug->ajaxGetUserBugs = '介面:我的Bug';
|
||||
$lang->bug->ajaxGetModuleOwner = '介面:獲得模組的預設指派人';
|
||||
$lang->bug->confirmStoryChange = '確認需求變動';
|
||||
|
||||
/* 查詢條件列表。*/
|
||||
$lang->bug->selectProduct = '請選擇產品';
|
||||
$lang->bug->byModule = '按模組';
|
||||
$lang->bug->assignToMe = '指派給我';
|
||||
$lang->bug->openedByMe = '由我創建';
|
||||
$lang->bug->resolvedByMe = '由我解決';
|
||||
$lang->bug->closedByMe = '由我關閉';
|
||||
$lang->bug->assignToNull = '未指派';
|
||||
$lang->bug->unResolved = '未解決';
|
||||
$lang->bug->unclosed = '未關閉';
|
||||
$lang->bug->longLifeBugs = '久未處理';
|
||||
$lang->bug->postponedBugs = '被延期';
|
||||
$lang->bug->allBugs = '所有';
|
||||
$lang->bug->moduleBugs = '按模組';
|
||||
$lang->bug->byQuery = '搜索';
|
||||
$lang->bug->needConfirm = '需求變動';
|
||||
$lang->bug->allProduct = '所有產品';
|
||||
|
||||
/* 頁面標籤。*/
|
||||
$lang->bug->lblProductAndModule = '產品模組';
|
||||
$lang->bug->lblProjectAndTask = '項目任務';
|
||||
$lang->bug->lblStory = '相關需求';
|
||||
$lang->bug->lblTypeAndSeverity = '類型/嚴重程度';
|
||||
$lang->bug->lblSystemBrowserAndHardware = '系統/瀏覽器';
|
||||
$lang->bug->lblAssignedTo = '當前指派';
|
||||
$lang->bug->lblMailto = '抄送給';
|
||||
$lang->bug->lblLastEdited = '最後修改';
|
||||
$lang->bug->lblResolved = '由誰解決';
|
||||
$lang->bug->lblAllFields = '所有欄位';
|
||||
$lang->bug->lblCustomFields = '自定義欄位';
|
||||
|
||||
/* legend列表。*/
|
||||
$lang->bug->legendBasicInfo = '基本信息';
|
||||
$lang->bug->legendMailto = '抄送給';
|
||||
$lang->bug->legendAttatch = '附件';
|
||||
$lang->bug->legendLinkBugs = '相關Bug';
|
||||
$lang->bug->legendPrjStoryTask = '項目/需求/任務';
|
||||
$lang->bug->legendCases = '相關用例';
|
||||
$lang->bug->legendSteps = '重現步驟';
|
||||
$lang->bug->legendAction = '操作';
|
||||
$lang->bug->legendHistory = '歷史記錄';
|
||||
$lang->bug->legendComment = '備註';
|
||||
$lang->bug->legendLife = 'BUG的一生';
|
||||
$lang->bug->legendMisc = '其他相關';
|
||||
|
||||
/* 功能按鈕。*/
|
||||
$lang->bug->buttonConfirm = '確認';
|
||||
$lang->bug->buttonCopy = '複製';
|
||||
$lang->bug->buttonAssign = '指派';
|
||||
$lang->bug->buttonEdit = '編輯';
|
||||
$lang->bug->buttonActivate = '激活';
|
||||
$lang->bug->buttonResolve = '解決';
|
||||
$lang->bug->buttonClose = '關閉';
|
||||
$lang->bug->buttonToList = '返回';
|
||||
$lang->bug->buttonCreateTestcase = '建用例';
|
||||
|
||||
/* 交互提示。*/
|
||||
$lang->bug->confirmChangeProduct = '修改產品會導致相應的項目、需求和任務發生變化,確定嗎?';
|
||||
$lang->bug->confirmDelete = '您確認要刪除該Bug嗎?';
|
||||
$lang->bug->setTemplateTitle = '請輸入bug模板標題(保存之前請先填寫bug重現步驟):';
|
||||
$lang->bug->remindTask = '該Bug已經轉化為任務,是否更新任務(編號:%s)狀態 ?';
|
||||
|
||||
/* 模板。*/
|
||||
$lang->bug->tplStep = "<p>[步驟]</p>";
|
||||
$lang->bug->tplResult = "<p>[結果]</p>";
|
||||
$lang->bug->tplExpect = "<p>[期望]</p>";
|
||||
|
||||
/* 各個欄位取值列表。*/
|
||||
$lang->bug->severityList[3] = '3';
|
||||
$lang->bug->severityList[1] = '1';
|
||||
$lang->bug->severityList[2] = '2';
|
||||
$lang->bug->severityList[4] = '4';
|
||||
|
||||
$lang->bug->priList[0] = '';
|
||||
$lang->bug->priList[3] = '3';
|
||||
$lang->bug->priList[1] = '1';
|
||||
$lang->bug->priList[2] = '2';
|
||||
$lang->bug->priList[4] = '4';
|
||||
|
||||
$lang->bug->osList[''] = '';
|
||||
$lang->bug->osList['all'] = '全部';
|
||||
$lang->bug->osList['windows'] = 'Windows';
|
||||
$lang->bug->osList['winxp'] = 'Windows XP';
|
||||
$lang->bug->osList['win7'] = 'Windows 7';
|
||||
$lang->bug->osList['vista'] = 'Windows Vista';
|
||||
$lang->bug->osList['win2000'] = 'Windows 2000';
|
||||
$lang->bug->osList['win2003'] = 'Windows 2003';
|
||||
$lang->bug->osList['win2008'] = 'Windows 2008';
|
||||
$lang->bug->osList['winnt'] = 'Windows NT';
|
||||
$lang->bug->osList['win98'] = 'Windows 98';
|
||||
$lang->bug->osList['andriod'] = 'Andriod';
|
||||
$lang->bug->osList['ios'] = 'IOS';
|
||||
$lang->bug->osList['wp7'] = 'WP7';
|
||||
$lang->bug->osList['symbian'] = 'Symbian';
|
||||
$lang->bug->osList['linux'] = 'Linux';
|
||||
$lang->bug->osList['freebsd'] = 'FreeBSD';
|
||||
$lang->bug->osList['mac'] = 'Mac OS';
|
||||
$lang->bug->osList['unix'] = 'Unix';
|
||||
$lang->bug->osList['others'] = '其他';
|
||||
|
||||
$lang->bug->browserList[''] = '';
|
||||
$lang->bug->browserList['all'] = '全部';
|
||||
$lang->bug->browserList['ie'] = 'IE系列';
|
||||
$lang->bug->browserList['ie8'] = 'IE8';
|
||||
$lang->bug->browserList['ie9'] = 'IE9';
|
||||
$lang->bug->browserList['ie6'] = 'IE6';
|
||||
$lang->bug->browserList['ie7'] = 'IE7';
|
||||
$lang->bug->browserList['chrome'] = 'chrome';
|
||||
$lang->bug->browserList['firefox'] = 'firefox系列';
|
||||
$lang->bug->browserList['firefox2'] = 'firefox2';
|
||||
$lang->bug->browserList['firefox3'] = 'firefox3';
|
||||
$lang->bug->browserList['firefox4'] = 'firefox4';
|
||||
$lang->bug->browserList['opera'] = 'opera系列';
|
||||
$lang->bug->browserList['opera9'] = 'opera9';
|
||||
$lang->bug->browserList['oprea10'] = 'opera10';
|
||||
$lang->bug->browserList['oprea11'] = 'opera11';
|
||||
$lang->bug->browserList['safari'] = 'safari';
|
||||
$lang->bug->browserList['maxthon'] = '傲游';
|
||||
$lang->bug->browserList['uc'] = 'UC';
|
||||
$lang->bug->browserList['other'] = '其他';
|
||||
|
||||
$lang->bug->typeList[''] = '';
|
||||
$lang->bug->typeList['codeerror'] = '代碼錯誤';
|
||||
$lang->bug->typeList['interface'] = '界面優化';
|
||||
$lang->bug->typeList['designchange'] = '設計變更';
|
||||
$lang->bug->typeList['newfeature'] = '新增需求';
|
||||
$lang->bug->typeList['designdefect'] = '設計缺陷';
|
||||
$lang->bug->typeList['config'] = '配置相關';
|
||||
$lang->bug->typeList['install'] = '安裝部署';
|
||||
$lang->bug->typeList['security'] = '安全相關';
|
||||
$lang->bug->typeList['performance'] = '性能問題';
|
||||
$lang->bug->typeList['standard'] = '標準規範';
|
||||
$lang->bug->typeList['automation'] = '測試腳本';
|
||||
$lang->bug->typeList['trackthings'] = '事務跟蹤';
|
||||
$lang->bug->typeList['others'] = '其他';
|
||||
|
||||
$lang->bug->statusList[''] = '';
|
||||
$lang->bug->statusList['active'] = '激活';
|
||||
$lang->bug->statusList['resolved'] = '已解決';
|
||||
$lang->bug->statusList['closed'] = '已關閉';
|
||||
|
||||
$lang->bug->confirmedList[1] = '已確認';
|
||||
$lang->bug->confirmedList[0] = '未確認';
|
||||
|
||||
$lang->bug->resolutionList[''] = '';
|
||||
$lang->bug->resolutionList['bydesign'] = '設計如此';
|
||||
$lang->bug->resolutionList['duplicate'] = '重複Bug';
|
||||
$lang->bug->resolutionList['external'] = '外部原因';
|
||||
$lang->bug->resolutionList['fixed'] = '已解決';
|
||||
$lang->bug->resolutionList['notrepro'] = '無法重現';
|
||||
$lang->bug->resolutionList['postponed'] = '延期處理';
|
||||
$lang->bug->resolutionList['willnotfix'] = "不予解決";
|
||||
$lang->bug->resolutionList['tostory'] = '轉為需求';
|
||||
|
||||
/* 統計報表。*/
|
||||
$lang->bug->report = new stdclass();
|
||||
$lang->bug->report->common = '報表';
|
||||
$lang->bug->report->select = '請選擇報表類型';
|
||||
$lang->bug->report->create = '生成報表';
|
||||
|
||||
$lang->bug->report->charts['bugsPerProject'] = '項目Bug數量';
|
||||
$lang->bug->report->charts['bugsPerBuild'] = '版本Bug數量';
|
||||
$lang->bug->report->charts['bugsPerModule'] = '模組Bug數量';
|
||||
$lang->bug->report->charts['openedBugsPerDay'] = '每天新增Bug數';
|
||||
$lang->bug->report->charts['resolvedBugsPerDay'] = '每天解決Bug數';
|
||||
$lang->bug->report->charts['closedBugsPerDay'] = '每天關閉的Bug數';
|
||||
$lang->bug->report->charts['openedBugsPerUser'] = '每人提交的Bug數';
|
||||
$lang->bug->report->charts['resolvedBugsPerUser'] = '每人解決的Bug數';
|
||||
$lang->bug->report->charts['closedBugsPerUser'] = '每人關閉的Bug數';
|
||||
$lang->bug->report->charts['bugsPerSeverity'] = 'Bug嚴重程度統計';
|
||||
$lang->bug->report->charts['bugsPerResolution'] = 'Bug解決方案統計';
|
||||
$lang->bug->report->charts['bugsPerStatus'] = 'Bug狀態統計';
|
||||
$lang->bug->report->charts['bugsPerActivatedCount'] = 'Bug激活次數統計';
|
||||
$lang->bug->report->charts['bugsPerType'] = 'Bug類型統計';
|
||||
$lang->bug->report->charts['bugsPerAssignedTo'] = '指派給統計';
|
||||
//$lang->bug->report->charts['bugLiveDays'] = 'Bug處理時間統計';
|
||||
//$lang->bug->report->charts['bugHistories'] = 'Bug處理步驟統計';
|
||||
|
||||
$lang->bug->report->options = new stdclass();
|
||||
$lang->bug->report->options->graph = new stdclass();
|
||||
$lang->bug->report->options->swf = 'pie2d';
|
||||
$lang->bug->report->options->width = 'auto';
|
||||
$lang->bug->report->options->height = 300;
|
||||
$lang->bug->report->options->graph->baseFontSize = 12;
|
||||
$lang->bug->report->options->graph->showNames = 1;
|
||||
$lang->bug->report->options->graph->formatNumber = 1;
|
||||
$lang->bug->report->options->graph->decimalPrecision = 0;
|
||||
$lang->bug->report->options->graph->animation = 0;
|
||||
$lang->bug->report->options->graph->rotateNames = 0;
|
||||
$lang->bug->report->options->graph->yAxisName = 'COUNT';
|
||||
$lang->bug->report->options->graph->pieRadius = 100; // 餅圖直徑。
|
||||
$lang->bug->report->options->graph->showColumnShadow = 0; // 是否顯示柱狀圖陰影。
|
||||
|
||||
$lang->bug->report->bugsPerProject = new stdclass();
|
||||
$lang->bug->report->bugsPerBuild = new stdclass();
|
||||
$lang->bug->report->bugsPerModule = new stdclass();
|
||||
$lang->bug->report->openedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->closedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->openedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->closedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->bugsPerSeverity = new stdclass();
|
||||
$lang->bug->report->bugsPerResolution = new stdclass();
|
||||
$lang->bug->report->bugsPerStatus = new stdclass();
|
||||
$lang->bug->report->bugsPerActivatedCount = new stdclass();
|
||||
$lang->bug->report->bugsPerType = new stdclass();
|
||||
$lang->bug->report->bugsPerAssignedTo = new stdclass();
|
||||
$lang->bug->report->bugLiveDays = new stdclass();
|
||||
$lang->bug->report->bugHistories = new stdclass();
|
||||
|
||||
$lang->bug->report->bugsPerProject->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerBuild->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerModule->graph = new stdclass();
|
||||
$lang->bug->report->openedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->closedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->openedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->closedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerSeverity->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerResolution->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerStatus->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerActivatedCount->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerType->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerAssignedTo->graph = new stdclass();
|
||||
$lang->bug->report->bugLiveDays->graph = new stdclass();
|
||||
$lang->bug->report->bugHistories->graph = new stdclass();
|
||||
|
||||
$lang->bug->report->bugsPerProject->graph->xAxisName = '項目';
|
||||
$lang->bug->report->bugsPerBuild->graph->xAxisName = '版本';
|
||||
$lang->bug->report->bugsPerModule->graph->xAxisName = '模組';
|
||||
|
||||
$lang->bug->report->openedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->openedBugsPerDay->height = 400;
|
||||
$lang->bug->report->openedBugsPerDay->graph->xAxisName = '日期';
|
||||
$lang->bug->report->openedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->resolvedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->resolvedBugsPerDay->height = 400;
|
||||
$lang->bug->report->resolvedBugsPerDay->graph->xAxisName = '日期';
|
||||
$lang->bug->report->resolvedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->closedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->closedBugsPerDay->height = 400;
|
||||
$lang->bug->report->closedBugsPerDay->graph->xAxisName = '日期';
|
||||
$lang->bug->report->closedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->openedBugsPerUser->graph->xAxisName = '用戶';
|
||||
$lang->bug->report->resolvedBugsPerUser->graph->xAxisName= '用戶';
|
||||
$lang->bug->report->closedBugsPerUser->graph->xAxisName = '用戶';
|
||||
|
||||
$lang->bug->report->bugsPerSeverity->graph->xAxisName = '嚴重程度';
|
||||
$lang->bug->report->bugsPerResolution->graph->xAxisName = '解決方案';
|
||||
$lang->bug->report->bugsPerStatus->graph->xAxisName = '狀態';
|
||||
$lang->bug->report->bugsPerActivatedCount->graph->xAxisName = '激活次數';
|
||||
$lang->bug->report->bugsPerType->graph->xAxisName = '類型';
|
||||
$lang->bug->report->bugsPerAssignedTo->graph->xAxisName = '指派給';
|
||||
$lang->bug->report->bugLiveDays->graph->xAxisName = '處理時間';
|
||||
$lang->bug->report->bugHistories->graph->xAxisName = '處理步驟';
|
||||
|
||||
/* 操作記錄。*/
|
||||
$lang->bug->action = new stdclass();
|
||||
$lang->bug->action->resolved = array('main' => '$date, 由 <strong>$actor</strong> 解決,方案為 <strong>$extra</strong>。', 'extra' => $lang->bug->resolutionList);
|
||||
$lang->bug->action->tostory = array('main' => '$date, 由 <strong>$actor</strong> 轉為<strong>需求</strong>,編號為 <strong>$extra</strong>。');
|
||||
$lang->bug->action->totask = array('main' => '$date, 由 <strong>$actor</strong> 導入為<strong>任務</strong>,編號為 <strong>$extra</strong>。');
|
||||
|
||||
$lang->bug->placeholder = new stdclass();
|
||||
$lang->bug->placeholder->mailto = '輸入用戶名自動選擇';
|
||||
<?php
|
||||
/**
|
||||
* The bug module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id: zh-tw.php 3772 2012-12-12 02:18:16Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* 欄位列表。*/
|
||||
$lang->bug->common = '缺陷管理';
|
||||
$lang->bug->id = 'Bug編號';
|
||||
$lang->bug->product = '所屬產品';
|
||||
$lang->bug->module = '所屬模組';
|
||||
$lang->bug->path = '模組路徑';
|
||||
$lang->bug->project = '所屬項目';
|
||||
$lang->bug->story = '相關需求';
|
||||
$lang->bug->storyVersion = '需求版本';
|
||||
$lang->bug->task = '相關任務';
|
||||
$lang->bug->title = 'Bug標題';
|
||||
$lang->bug->severity = '嚴重程度';
|
||||
$lang->bug->severityAB = '級別';
|
||||
$lang->bug->pri = '優先順序';
|
||||
$lang->bug->type = 'Bug類型';
|
||||
$lang->bug->os = '操作系統';
|
||||
$lang->bug->hardware = '硬件平台';
|
||||
$lang->bug->browser = '瀏覽器';
|
||||
$lang->bug->machine = '機器硬件';
|
||||
$lang->bug->found = '如何發現';
|
||||
$lang->bug->steps = '重現步驟';
|
||||
$lang->bug->status = 'Bug狀態';
|
||||
$lang->bug->statusAB = '狀態';
|
||||
$lang->bug->activatedCount = '激活次數';
|
||||
$lang->bug->activatedCountAB = '激活次數';
|
||||
$lang->bug->confirmed = '是否確認';
|
||||
$lang->bug->toTask = '轉任務';
|
||||
$lang->bug->toStory = '轉需求';
|
||||
$lang->bug->mailto = '抄送給';
|
||||
$lang->bug->openedBy = '由誰創建';
|
||||
$lang->bug->openedByAB = '創建';
|
||||
$lang->bug->openedDate = '創建日期';
|
||||
$lang->bug->openedDateAB = '創建日期';
|
||||
$lang->bug->openedBuild = '影響版本';
|
||||
$lang->bug->assignedTo = '指派給';
|
||||
$lang->bug->assignedDate = '指派日期';
|
||||
$lang->bug->resolvedBy = '解決者';
|
||||
$lang->bug->resolvedByAB = '解決';
|
||||
$lang->bug->resolution = '解決方案';
|
||||
$lang->bug->resolutionAB = '方案';
|
||||
$lang->bug->resolvedBuild = '解決版本';
|
||||
$lang->bug->resolvedDate = '解決日期';
|
||||
$lang->bug->resolvedDateAB = '解決日期';
|
||||
$lang->bug->closedBy = '由誰關閉';
|
||||
$lang->bug->closedDate = '關閉日期';
|
||||
$lang->bug->duplicateBug = '重複ID';
|
||||
$lang->bug->lastEditedBy = '最後修改者';
|
||||
$lang->bug->lastEditedDate = '最後修改日期';
|
||||
$lang->bug->linkBug = '相關Bug';
|
||||
$lang->bug->case = '相關用例';
|
||||
$lang->bug->files = '附件';
|
||||
$lang->bug->keywords = '關鍵詞';
|
||||
$lang->bug->lastEditedByAB = '修改者';
|
||||
$lang->bug->lastEditedDateAB = '修改日期';
|
||||
$lang->bug->fromCase = '來源用例';
|
||||
$lang->bug->toCase = '生成用例';
|
||||
|
||||
/* 方法列表。*/
|
||||
$lang->bug->index = '首頁';
|
||||
$lang->bug->create = '創建';
|
||||
$lang->bug->confirmBug = '確認';
|
||||
$lang->bug->edit = '編輯';
|
||||
$lang->bug->batchEdit = '批量編輯';
|
||||
$lang->bug->assignTo = '指派';
|
||||
$lang->bug->browse = 'Bug列表';
|
||||
$lang->bug->view = 'Bug詳情';
|
||||
$lang->bug->resolve = '解決';
|
||||
$lang->bug->close = '關閉';
|
||||
$lang->bug->activate = '激活Bug';
|
||||
$lang->bug->reportChart = '報表統計';
|
||||
$lang->bug->export = '導出';
|
||||
$lang->bug->delete = '刪除';
|
||||
$lang->bug->saveTemplate = '保存模板';
|
||||
$lang->bug->deleteTemplate = '刪除模板';
|
||||
$lang->bug->customFields = '自定義欄位';
|
||||
$lang->bug->restoreDefault = '恢復預設';
|
||||
$lang->bug->ajaxGetUserBugs = '介面:我的Bug';
|
||||
$lang->bug->ajaxGetModuleOwner = '介面:獲得模組的預設指派人';
|
||||
$lang->bug->confirmStoryChange = '確認需求變動';
|
||||
|
||||
/* 查詢條件列表。*/
|
||||
$lang->bug->selectProduct = '請選擇產品';
|
||||
$lang->bug->byModule = '按模組';
|
||||
$lang->bug->assignToMe = '指派給我';
|
||||
$lang->bug->openedByMe = '由我創建';
|
||||
$lang->bug->resolvedByMe = '由我解決';
|
||||
$lang->bug->closedByMe = '由我關閉';
|
||||
$lang->bug->assignToNull = '未指派';
|
||||
$lang->bug->unResolved = '未解決';
|
||||
$lang->bug->unclosed = '未關閉';
|
||||
$lang->bug->longLifeBugs = '久未處理';
|
||||
$lang->bug->postponedBugs = '被延期';
|
||||
$lang->bug->allBugs = '所有';
|
||||
$lang->bug->moduleBugs = '按模組';
|
||||
$lang->bug->byQuery = '搜索';
|
||||
$lang->bug->needConfirm = '需求變動';
|
||||
$lang->bug->allProduct = '所有產品';
|
||||
|
||||
/* 頁面標籤。*/
|
||||
$lang->bug->lblProductAndModule = '產品模組';
|
||||
$lang->bug->lblProjectAndTask = '項目任務';
|
||||
$lang->bug->lblStory = '相關需求';
|
||||
$lang->bug->lblTypeAndSeverity = '類型/嚴重程度';
|
||||
$lang->bug->lblSystemBrowserAndHardware = '系統/瀏覽器';
|
||||
$lang->bug->lblAssignedTo = '當前指派';
|
||||
$lang->bug->lblMailto = '抄送給';
|
||||
$lang->bug->lblLastEdited = '最後修改';
|
||||
$lang->bug->lblResolved = '由誰解決';
|
||||
$lang->bug->lblAllFields = '所有欄位';
|
||||
$lang->bug->lblCustomFields = '自定義欄位';
|
||||
|
||||
/* legend列表。*/
|
||||
$lang->bug->legendBasicInfo = '基本信息';
|
||||
$lang->bug->legendMailto = '抄送給';
|
||||
$lang->bug->legendAttatch = '附件';
|
||||
$lang->bug->legendLinkBugs = '相關Bug';
|
||||
$lang->bug->legendPrjStoryTask = '項目/需求/任務';
|
||||
$lang->bug->legendCases = '相關用例';
|
||||
$lang->bug->legendSteps = '重現步驟';
|
||||
$lang->bug->legendAction = '操作';
|
||||
$lang->bug->legendHistory = '歷史記錄';
|
||||
$lang->bug->legendComment = '備註';
|
||||
$lang->bug->legendLife = 'BUG的一生';
|
||||
$lang->bug->legendMisc = '其他相關';
|
||||
|
||||
/* 功能按鈕。*/
|
||||
$lang->bug->buttonConfirm = '確認';
|
||||
$lang->bug->buttonCopy = '複製';
|
||||
$lang->bug->buttonAssign = '指派';
|
||||
$lang->bug->buttonEdit = '編輯';
|
||||
$lang->bug->buttonActivate = '激活';
|
||||
$lang->bug->buttonResolve = '解決';
|
||||
$lang->bug->buttonClose = '關閉';
|
||||
$lang->bug->buttonToList = '返回';
|
||||
$lang->bug->buttonCreateTestcase = '建用例';
|
||||
|
||||
/* 交互提示。*/
|
||||
$lang->bug->confirmChangeProduct = '修改產品會導致相應的項目、需求和任務發生變化,確定嗎?';
|
||||
$lang->bug->confirmDelete = '您確認要刪除該Bug嗎?';
|
||||
$lang->bug->setTemplateTitle = '請輸入bug模板標題(保存之前請先填寫bug重現步驟):';
|
||||
$lang->bug->remindTask = '該Bug已經轉化為任務,是否更新任務(編號:%s)狀態 ?';
|
||||
|
||||
/* 模板。*/
|
||||
$lang->bug->tplStep = "<p>[步驟]</p>";
|
||||
$lang->bug->tplResult = "<p>[結果]</p>";
|
||||
$lang->bug->tplExpect = "<p>[期望]</p>";
|
||||
|
||||
/* 各個欄位取值列表。*/
|
||||
$lang->bug->severityList[3] = '3';
|
||||
$lang->bug->severityList[1] = '1';
|
||||
$lang->bug->severityList[2] = '2';
|
||||
$lang->bug->severityList[4] = '4';
|
||||
|
||||
$lang->bug->priList[0] = '';
|
||||
$lang->bug->priList[3] = '3';
|
||||
$lang->bug->priList[1] = '1';
|
||||
$lang->bug->priList[2] = '2';
|
||||
$lang->bug->priList[4] = '4';
|
||||
|
||||
$lang->bug->osList[''] = '';
|
||||
$lang->bug->osList['all'] = '全部';
|
||||
$lang->bug->osList['windows'] = 'Windows';
|
||||
$lang->bug->osList['winxp'] = 'Windows XP';
|
||||
$lang->bug->osList['win7'] = 'Windows 7';
|
||||
$lang->bug->osList['vista'] = 'Windows Vista';
|
||||
$lang->bug->osList['win2000'] = 'Windows 2000';
|
||||
$lang->bug->osList['win2003'] = 'Windows 2003';
|
||||
$lang->bug->osList['win2008'] = 'Windows 2008';
|
||||
$lang->bug->osList['winnt'] = 'Windows NT';
|
||||
$lang->bug->osList['win98'] = 'Windows 98';
|
||||
$lang->bug->osList['andriod'] = 'Andriod';
|
||||
$lang->bug->osList['ios'] = 'IOS';
|
||||
$lang->bug->osList['wp7'] = 'WP7';
|
||||
$lang->bug->osList['symbian'] = 'Symbian';
|
||||
$lang->bug->osList['linux'] = 'Linux';
|
||||
$lang->bug->osList['freebsd'] = 'FreeBSD';
|
||||
$lang->bug->osList['mac'] = 'Mac OS';
|
||||
$lang->bug->osList['unix'] = 'Unix';
|
||||
$lang->bug->osList['others'] = '其他';
|
||||
|
||||
$lang->bug->browserList[''] = '';
|
||||
$lang->bug->browserList['all'] = '全部';
|
||||
$lang->bug->browserList['ie'] = 'IE系列';
|
||||
$lang->bug->browserList['ie8'] = 'IE8';
|
||||
$lang->bug->browserList['ie9'] = 'IE9';
|
||||
$lang->bug->browserList['ie6'] = 'IE6';
|
||||
$lang->bug->browserList['ie7'] = 'IE7';
|
||||
$lang->bug->browserList['chrome'] = 'chrome';
|
||||
$lang->bug->browserList['firefox'] = 'firefox系列';
|
||||
$lang->bug->browserList['firefox2'] = 'firefox2';
|
||||
$lang->bug->browserList['firefox3'] = 'firefox3';
|
||||
$lang->bug->browserList['firefox4'] = 'firefox4';
|
||||
$lang->bug->browserList['opera'] = 'opera系列';
|
||||
$lang->bug->browserList['opera9'] = 'opera9';
|
||||
$lang->bug->browserList['oprea10'] = 'opera10';
|
||||
$lang->bug->browserList['oprea11'] = 'opera11';
|
||||
$lang->bug->browserList['safari'] = 'safari';
|
||||
$lang->bug->browserList['maxthon'] = '傲游';
|
||||
$lang->bug->browserList['uc'] = 'UC';
|
||||
$lang->bug->browserList['other'] = '其他';
|
||||
|
||||
$lang->bug->typeList[''] = '';
|
||||
$lang->bug->typeList['codeerror'] = '代碼錯誤';
|
||||
$lang->bug->typeList['interface'] = '界面優化';
|
||||
$lang->bug->typeList['designchange'] = '設計變更';
|
||||
$lang->bug->typeList['newfeature'] = '新增需求';
|
||||
$lang->bug->typeList['designdefect'] = '設計缺陷';
|
||||
$lang->bug->typeList['config'] = '配置相關';
|
||||
$lang->bug->typeList['install'] = '安裝部署';
|
||||
$lang->bug->typeList['security'] = '安全相關';
|
||||
$lang->bug->typeList['performance'] = '性能問題';
|
||||
$lang->bug->typeList['standard'] = '標準規範';
|
||||
$lang->bug->typeList['automation'] = '測試腳本';
|
||||
$lang->bug->typeList['trackthings'] = '事務跟蹤';
|
||||
$lang->bug->typeList['others'] = '其他';
|
||||
|
||||
$lang->bug->statusList[''] = '';
|
||||
$lang->bug->statusList['active'] = '激活';
|
||||
$lang->bug->statusList['resolved'] = '已解決';
|
||||
$lang->bug->statusList['closed'] = '已關閉';
|
||||
|
||||
$lang->bug->confirmedList[1] = '已確認';
|
||||
$lang->bug->confirmedList[0] = '未確認';
|
||||
|
||||
$lang->bug->resolutionList[''] = '';
|
||||
$lang->bug->resolutionList['bydesign'] = '設計如此';
|
||||
$lang->bug->resolutionList['duplicate'] = '重複Bug';
|
||||
$lang->bug->resolutionList['external'] = '外部原因';
|
||||
$lang->bug->resolutionList['fixed'] = '已解決';
|
||||
$lang->bug->resolutionList['notrepro'] = '無法重現';
|
||||
$lang->bug->resolutionList['postponed'] = '延期處理';
|
||||
$lang->bug->resolutionList['willnotfix'] = "不予解決";
|
||||
$lang->bug->resolutionList['tostory'] = '轉為需求';
|
||||
|
||||
/* 統計報表。*/
|
||||
$lang->bug->report = new stdclass();
|
||||
$lang->bug->report->common = '報表';
|
||||
$lang->bug->report->select = '請選擇報表類型';
|
||||
$lang->bug->report->create = '生成報表';
|
||||
|
||||
$lang->bug->report->charts['bugsPerProject'] = '項目Bug數量';
|
||||
$lang->bug->report->charts['bugsPerBuild'] = '版本Bug數量';
|
||||
$lang->bug->report->charts['bugsPerModule'] = '模組Bug數量';
|
||||
$lang->bug->report->charts['openedBugsPerDay'] = '每天新增Bug數';
|
||||
$lang->bug->report->charts['resolvedBugsPerDay'] = '每天解決Bug數';
|
||||
$lang->bug->report->charts['closedBugsPerDay'] = '每天關閉的Bug數';
|
||||
$lang->bug->report->charts['openedBugsPerUser'] = '每人提交的Bug數';
|
||||
$lang->bug->report->charts['resolvedBugsPerUser'] = '每人解決的Bug數';
|
||||
$lang->bug->report->charts['closedBugsPerUser'] = '每人關閉的Bug數';
|
||||
$lang->bug->report->charts['bugsPerSeverity'] = 'Bug嚴重程度統計';
|
||||
$lang->bug->report->charts['bugsPerResolution'] = 'Bug解決方案統計';
|
||||
$lang->bug->report->charts['bugsPerStatus'] = 'Bug狀態統計';
|
||||
$lang->bug->report->charts['bugsPerActivatedCount'] = 'Bug激活次數統計';
|
||||
$lang->bug->report->charts['bugsPerType'] = 'Bug類型統計';
|
||||
$lang->bug->report->charts['bugsPerAssignedTo'] = '指派給統計';
|
||||
//$lang->bug->report->charts['bugLiveDays'] = 'Bug處理時間統計';
|
||||
//$lang->bug->report->charts['bugHistories'] = 'Bug處理步驟統計';
|
||||
|
||||
$lang->bug->report->options = new stdclass();
|
||||
$lang->bug->report->options->graph = new stdclass();
|
||||
$lang->bug->report->options->swf = 'pie2d';
|
||||
$lang->bug->report->options->width = 'auto';
|
||||
$lang->bug->report->options->height = 300;
|
||||
$lang->bug->report->options->graph->baseFontSize = 12;
|
||||
$lang->bug->report->options->graph->showNames = 1;
|
||||
$lang->bug->report->options->graph->formatNumber = 1;
|
||||
$lang->bug->report->options->graph->decimalPrecision = 0;
|
||||
$lang->bug->report->options->graph->animation = 0;
|
||||
$lang->bug->report->options->graph->rotateNames = 0;
|
||||
$lang->bug->report->options->graph->yAxisName = 'COUNT';
|
||||
$lang->bug->report->options->graph->pieRadius = 100; // 餅圖直徑。
|
||||
$lang->bug->report->options->graph->showColumnShadow = 0; // 是否顯示柱狀圖陰影。
|
||||
|
||||
$lang->bug->report->bugsPerProject = new stdclass();
|
||||
$lang->bug->report->bugsPerBuild = new stdclass();
|
||||
$lang->bug->report->bugsPerModule = new stdclass();
|
||||
$lang->bug->report->openedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->closedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->openedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->closedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->bugsPerSeverity = new stdclass();
|
||||
$lang->bug->report->bugsPerResolution = new stdclass();
|
||||
$lang->bug->report->bugsPerStatus = new stdclass();
|
||||
$lang->bug->report->bugsPerActivatedCount = new stdclass();
|
||||
$lang->bug->report->bugsPerType = new stdclass();
|
||||
$lang->bug->report->bugsPerAssignedTo = new stdclass();
|
||||
$lang->bug->report->bugLiveDays = new stdclass();
|
||||
$lang->bug->report->bugHistories = new stdclass();
|
||||
|
||||
$lang->bug->report->bugsPerProject->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerBuild->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerModule->graph = new stdclass();
|
||||
$lang->bug->report->openedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->closedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->openedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->closedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerSeverity->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerResolution->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerStatus->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerActivatedCount->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerType->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerAssignedTo->graph = new stdclass();
|
||||
$lang->bug->report->bugLiveDays->graph = new stdclass();
|
||||
$lang->bug->report->bugHistories->graph = new stdclass();
|
||||
|
||||
$lang->bug->report->bugsPerProject->graph->xAxisName = '項目';
|
||||
$lang->bug->report->bugsPerBuild->graph->xAxisName = '版本';
|
||||
$lang->bug->report->bugsPerModule->graph->xAxisName = '模組';
|
||||
|
||||
$lang->bug->report->openedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->openedBugsPerDay->height = 400;
|
||||
$lang->bug->report->openedBugsPerDay->graph->xAxisName = '日期';
|
||||
$lang->bug->report->openedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->resolvedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->resolvedBugsPerDay->height = 400;
|
||||
$lang->bug->report->resolvedBugsPerDay->graph->xAxisName = '日期';
|
||||
$lang->bug->report->resolvedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->closedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->closedBugsPerDay->height = 400;
|
||||
$lang->bug->report->closedBugsPerDay->graph->xAxisName = '日期';
|
||||
$lang->bug->report->closedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->openedBugsPerUser->graph->xAxisName = '用戶';
|
||||
$lang->bug->report->resolvedBugsPerUser->graph->xAxisName= '用戶';
|
||||
$lang->bug->report->closedBugsPerUser->graph->xAxisName = '用戶';
|
||||
|
||||
$lang->bug->report->bugsPerSeverity->graph->xAxisName = '嚴重程度';
|
||||
$lang->bug->report->bugsPerResolution->graph->xAxisName = '解決方案';
|
||||
$lang->bug->report->bugsPerStatus->graph->xAxisName = '狀態';
|
||||
$lang->bug->report->bugsPerActivatedCount->graph->xAxisName = '激活次數';
|
||||
$lang->bug->report->bugsPerType->graph->xAxisName = '類型';
|
||||
$lang->bug->report->bugsPerAssignedTo->graph->xAxisName = '指派給';
|
||||
$lang->bug->report->bugLiveDays->graph->xAxisName = '處理時間';
|
||||
$lang->bug->report->bugHistories->graph->xAxisName = '處理步驟';
|
||||
|
||||
/* 操作記錄。*/
|
||||
$lang->bug->action = new stdclass();
|
||||
$lang->bug->action->resolved = array('main' => '$date, 由 <strong>$actor</strong> 解決,方案為 <strong>$extra</strong>。', 'extra' => $lang->bug->resolutionList);
|
||||
$lang->bug->action->tostory = array('main' => '$date, 由 <strong>$actor</strong> 轉為<strong>需求</strong>,編號為 <strong>$extra</strong>。');
|
||||
$lang->bug->action->totask = array('main' => '$date, 由 <strong>$actor</strong> 導入為<strong>任務</strong>,編號為 <strong>$extra</strong>。');
|
||||
|
||||
$lang->bug->placeholder = new stdclass();
|
||||
$lang->bug->placeholder->mailto = '輸入用戶名自動選擇';
|
||||
|
||||
2428
module/bug/model.php
2428
module/bug/model.php
File diff suppressed because it is too large
Load Diff
@@ -1,43 +1,43 @@
|
||||
<?php
|
||||
/**
|
||||
* The activate file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' enctype='multipart/form-data' target='hiddenwin'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $bug->title;?></caption>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->assignedTo;?></td>
|
||||
<td><?php echo html::select('assignedTo', $users, $bug->resolvedBy, 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->openedBuild;?></td>
|
||||
<td><?php echo html::select('openedBuild[]', $builds, $bug->openedBuild, 'size=4 multiple=multiple class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->comment;?></td>
|
||||
<td><?php echo html::textarea('comment', '', "rows='6' class='area-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->files;?></th>
|
||||
<td class='a-left'><?php echo $this->fetch('file', 'buildform');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'>
|
||||
<?php echo html::submitButton();?>
|
||||
<input type='button' value='<?php echo $lang->bug->buttonToList;?>' class='button-s'
|
||||
onclick='location.href="<?php echo $this->session->bugList;?>"' />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The activate file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' enctype='multipart/form-data' target='hiddenwin'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $bug->title;?></caption>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->assignedTo;?></td>
|
||||
<td><?php echo html::select('assignedTo', $users, $bug->resolvedBy, 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->openedBuild;?></td>
|
||||
<td><?php echo html::select('openedBuild[]', $builds, $bug->openedBuild, 'size=4 multiple=multiple class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->comment;?></td>
|
||||
<td><?php echo html::textarea('comment', '', "rows='6' class='area-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->files;?></th>
|
||||
<td class='a-left'><?php echo $this->fetch('file', 'buildform');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'>
|
||||
<?php echo html::submitButton();?>
|
||||
<input type='button' value='<?php echo $lang->bug->buttonToList;?>' class='button-s'
|
||||
onclick='location.href="<?php echo $this->session->bugList;?>"' />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,31 +1,31 @@
|
||||
<?php
|
||||
/**
|
||||
* The complete file of task module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Jia Fu <fujia@cnezsoft.com>
|
||||
* @package task
|
||||
* @version $Id: complete.html.php 935 2010-07-06 07:49:24Z jajacn@126.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' target='hiddenwin'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $bug->title;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->assignedTo;?></th>
|
||||
<td><?php echo html::select('assignedTo', $users, '', "class='text-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->comment;?></td>
|
||||
<td><?php echo html::textarea('comment', '', "rows='6' class='area-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'><?php echo html::submitButton() . html::linkButton($lang->goback, $this->server->http_referer);?></td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The complete file of task module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Jia Fu <fujia@cnezsoft.com>
|
||||
* @package task
|
||||
* @version $Id: complete.html.php 935 2010-07-06 07:49:24Z jajacn@126.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' target='hiddenwin'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $bug->title;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->assignedTo;?></th>
|
||||
<td><?php echo html::select('assignedTo', $users, '', "class='text-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->comment;?></td>
|
||||
<td><?php echo html::textarea('comment', '', "rows='6' class='area-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'><?php echo html::submitButton() . html::linkButton($lang->goback, $this->server->http_referer);?></td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,59 +1,59 @@
|
||||
<?php
|
||||
/**
|
||||
* The batch edit view of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Congzhi Chen <congzhi@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' target='hiddenwin' action="<?php echo $this->inLink('batchEdit', "from=bugBatchEdit&productID=$productID");?>">
|
||||
<table class='table-1 fixed'>
|
||||
<caption><?php echo $lang->bug->common . $lang->colon . $lang->bug->batchEdit;?></caption>
|
||||
<tr>
|
||||
<th class='w-30px'><?php echo $lang->idAB;?></th>
|
||||
<th class='w-80px'><?php echo $lang->bug->type;?></th>
|
||||
<th class='w-50px'><?php echo $lang->bug->severityAB;?></th>
|
||||
<th class='w-50px'><?php echo $lang->bug->pri;?></th>
|
||||
<th> <?php echo $lang->bug->title;?></th>
|
||||
<th class='w-100px'><?php echo $lang->bug->assignedTo;?></th>
|
||||
<th class='w-70px'><?php echo $lang->bug->status;?></th>
|
||||
<th class='w-100px'><?php echo $lang->bug->resolvedByAB;?></th>
|
||||
<th class='w-150px'><?php echo $lang->bug->resolutionAB;?></th>
|
||||
</tr>
|
||||
<?php foreach($editedBugs as $bug):?>
|
||||
<?php
|
||||
/**
|
||||
* Remove designchange, newfeature, trackings from the typeList, because should be tracked in story or task.
|
||||
* These thress types if upgrade from bugfree2.x.
|
||||
*/
|
||||
if($bug->type != 'designchange') unset($this->lang->bug->typeList['designchange']);
|
||||
if($bug->type != 'newfeature') unset($this->lang->bug->typeList['newfeature']);
|
||||
if($bug->type != 'trackthings') unset($this->lang->bug->typeList['trackthings']);
|
||||
?>
|
||||
<tr class='a-center'>
|
||||
<td><?php echo $bug->id . html::hidden("bugIDList[$bug->id]", $bug->id);?></td>
|
||||
<td><?php echo html::select("types[$bug->id]", $lang->bug->typeList, $bug->type, 'class=select-1');?></td>
|
||||
<td><?php echo html::select("severities[$bug->id]", (array)$lang->bug->severityList, $bug->severity, 'class=select-1');?></td>
|
||||
<td><?php echo html::select("pris[$bug->id]", (array)$lang->bug->priList, $bug->pri, 'class=select-1');?></td>
|
||||
<td><?php echo html::input("titles[$bug->id]", $bug->title, 'class=text-1'); echo "<span class='star'>*</span>";?></td>
|
||||
<td><?php echo html::select("assignedTos[$bug->id]", $users, $bug->assignedTo, 'class=select-1');?></td>
|
||||
<td><?php echo html::select("statuses[$bug->id]", (array)$lang->bug->statusList, $bug->status, 'class=select-1');?></td>
|
||||
<td><?php echo html::select("resolvedBys[$bug->id]", $users, $bug->resolvedBy, 'class=select-1');?></td>
|
||||
<td>
|
||||
<div class='f-left'><?php echo html::select("resolutions[$bug->id]", $this->lang->bug->resolutionList, $bug->resolution, "class=w-80px onchange=setDuplicate(this.value,$bug->id)");?></div>
|
||||
<div class='f-left' id='<?php echo 'duplicateBugBox' . $bug->id;?>' <?php if($bug->resolution != 'duplicate') echo "style='display:none'";?>><?php echo html::input("duplicateBugs[$bug->id]", '', "class=w-40px placeholder='{$lang->bug->duplicateBug}'");?></div>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
<?php if(isset($suhosinInfo)):?>
|
||||
<tr><td colspan='9'><div class='f-left blue'><?php echo $suhosinInfo;?></div></td></tr>
|
||||
<?php endif;?>
|
||||
<tr><td colspan='9' class='a-center'><?php echo html::submitButton();?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The batch edit view of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Congzhi Chen <congzhi@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' target='hiddenwin' action="<?php echo $this->inLink('batchEdit', "from=bugBatchEdit&productID=$productID");?>">
|
||||
<table class='table-1 fixed'>
|
||||
<caption><?php echo $lang->bug->common . $lang->colon . $lang->bug->batchEdit;?></caption>
|
||||
<tr>
|
||||
<th class='w-30px'><?php echo $lang->idAB;?></th>
|
||||
<th class='w-80px'><?php echo $lang->bug->type;?></th>
|
||||
<th class='w-50px'><?php echo $lang->bug->severityAB;?></th>
|
||||
<th class='w-50px'><?php echo $lang->bug->pri;?></th>
|
||||
<th> <?php echo $lang->bug->title;?></th>
|
||||
<th class='w-100px'><?php echo $lang->bug->assignedTo;?></th>
|
||||
<th class='w-70px'><?php echo $lang->bug->status;?></th>
|
||||
<th class='w-100px'><?php echo $lang->bug->resolvedByAB;?></th>
|
||||
<th class='w-150px'><?php echo $lang->bug->resolutionAB;?></th>
|
||||
</tr>
|
||||
<?php foreach($editedBugs as $bug):?>
|
||||
<?php
|
||||
/**
|
||||
* Remove designchange, newfeature, trackings from the typeList, because should be tracked in story or task.
|
||||
* These thress types if upgrade from bugfree2.x.
|
||||
*/
|
||||
if($bug->type != 'designchange') unset($this->lang->bug->typeList['designchange']);
|
||||
if($bug->type != 'newfeature') unset($this->lang->bug->typeList['newfeature']);
|
||||
if($bug->type != 'trackthings') unset($this->lang->bug->typeList['trackthings']);
|
||||
?>
|
||||
<tr class='a-center'>
|
||||
<td><?php echo $bug->id . html::hidden("bugIDList[$bug->id]", $bug->id);?></td>
|
||||
<td><?php echo html::select("types[$bug->id]", $lang->bug->typeList, $bug->type, 'class=select-1');?></td>
|
||||
<td><?php echo html::select("severities[$bug->id]", (array)$lang->bug->severityList, $bug->severity, 'class=select-1');?></td>
|
||||
<td><?php echo html::select("pris[$bug->id]", (array)$lang->bug->priList, $bug->pri, 'class=select-1');?></td>
|
||||
<td><?php echo html::input("titles[$bug->id]", $bug->title, 'class=text-1'); echo "<span class='star'>*</span>";?></td>
|
||||
<td><?php echo html::select("assignedTos[$bug->id]", $users, $bug->assignedTo, 'class=select-1');?></td>
|
||||
<td><?php echo html::select("statuses[$bug->id]", (array)$lang->bug->statusList, $bug->status, 'class=select-1');?></td>
|
||||
<td><?php echo html::select("resolvedBys[$bug->id]", $users, $bug->resolvedBy, 'class=select-1');?></td>
|
||||
<td>
|
||||
<div class='f-left'><?php echo html::select("resolutions[$bug->id]", $this->lang->bug->resolutionList, $bug->resolution, "class=w-80px onchange=setDuplicate(this.value,$bug->id)");?></div>
|
||||
<div class='f-left' id='<?php echo 'duplicateBugBox' . $bug->id;?>' <?php if($bug->resolution != 'duplicate') echo "style='display:none'";?>><?php echo html::input("duplicateBugs[$bug->id]", '', "class=w-40px placeholder='{$lang->bug->duplicateBug}'");?></div>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
<?php if(isset($suhosinInfo)):?>
|
||||
<tr><td colspan='9'><div class='f-left blue'><?php echo $suhosinInfo;?></div></td></tr>
|
||||
<?php endif;?>
|
||||
<tr><td colspan='9' class='a-center'><?php echo html::submitButton();?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,183 +1,183 @@
|
||||
<?php
|
||||
/**
|
||||
* The browse view file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
include '../../common/view/header.html.php';
|
||||
include '../../common/view/treeview.html.php';
|
||||
include '../../common/view/colorize.html.php';
|
||||
js::set('browseType', $browseType);
|
||||
js::set('moduleID', $moduleID);
|
||||
js::set('customed', $customed, 'number');
|
||||
?>
|
||||
|
||||
<div id='featurebar'>
|
||||
<div class='f-left'>
|
||||
<?php
|
||||
echo "<span id='bymoduleTab' onclick=\"browseByModule('$browseType')\"><a href='#'>" . $lang->bug->moduleBugs . "</a></span> ";
|
||||
echo "<span id='assigntomeTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=assignToMe¶m=0"), $lang->bug->assignToMe) . "</span>";
|
||||
echo "<span id='openedbymeTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=openedByMe¶m=0"), $lang->bug->openedByMe) . "</span>";
|
||||
echo "<span id='resolvedbymeTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=resolvedByMe¶m=0"), $lang->bug->resolvedByMe) . "</span>";
|
||||
echo "<span id='assigntonullTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=assignToNull¶m=0"), $lang->bug->assignToNull) . "</span>";
|
||||
echo "<span id='unresolvedTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=unResolved¶m=0"), $lang->bug->unResolved) . "</span>";
|
||||
echo "<span id='unclosedTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=unclosed¶m=0"), $lang->bug->unclosed) . "</span>";
|
||||
echo "<span id='longlifebugsTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=longLifeBugs¶m=0"), $lang->bug->longLifeBugs) . "</span>";
|
||||
echo "<span id='postponedbugsTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=postponedBugs¶m=0"), $lang->bug->postponedBugs) . "</span>";
|
||||
echo "<span id='allTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=all¶m=0&orderBy=$orderBy&recTotal=0&recPerPage=200"), $lang->bug->allBugs) . "</span>";
|
||||
echo "<span id='needconfirmTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=needconfirm¶m=0"), $lang->bug->needConfirm) . "</span>";
|
||||
echo "<span id='bysearchTab'><a href='#'><span class='icon-search'></span>{$lang->bug->byQuery}</a></span> ";
|
||||
?>
|
||||
</div>
|
||||
<div class='f-right'>
|
||||
<?php
|
||||
if($browseType != 'needconfirm') common::printIcon('bug', 'export', "productID=$productID&orderBy=$orderBy");
|
||||
common::printIcon('bug', 'customFields');
|
||||
common::printIcon('bug', 'report', "productID=$productID&browseType=$browseType&moduleID=$moduleID");
|
||||
common::printIcon('bug', 'create', "productID=$productID&extra=moduleID=$moduleID");
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<div id='querybox' class='<?php if($browseType !='bysearch') echo 'hidden';?>'></div>
|
||||
|
||||
<?php
|
||||
if($customed)
|
||||
{
|
||||
include './browse.custom.html.php';
|
||||
include '../../common/view/footer.lite.html.php';
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
|
||||
<form method='post' action='<?php echo $this->inLink('batchEdit', "from=bugBrowse&productID=$productID&orderBy=$orderBy");?>'>
|
||||
<table class='cont-lt1'>
|
||||
<tr valign='top'>
|
||||
<td class='side <?php echo $treeClass;?>' id='treebox'>
|
||||
<div class='box-title'><?php echo $productName;?></div>
|
||||
<div class='box-content'>
|
||||
<?php echo $moduleTree;?>
|
||||
<div class='a-right'>
|
||||
<?php common::printLink('tree', 'browse', "productID=$productID&view=bug", $lang->tree->manage);?>
|
||||
<?php common::printLink('tree', 'fix', "root=$productID&type=bug", $lang->tree->fix, 'hiddenwin');?>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td class='divider <?php echo $treeClass;?>'></td>
|
||||
<td>
|
||||
<?php $vars = "productID=$productID&browseType=$browseType¶m=$param&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}"; ?>
|
||||
<table class='table-1 fixed colored tablesorter datatable'>
|
||||
<thead>
|
||||
<tr class='colhead'>
|
||||
<th class='w-id'> <?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?></th>
|
||||
<th class='w-severity'> <?php common::printOrderLink('severity', $orderBy, $vars, $lang->bug->severityAB);?></th>
|
||||
<th class='w-pri'> <?php common::printOrderLink('pri', $orderBy, $vars, $lang->priAB);?></th>
|
||||
|
||||
<th><?php common::printOrderLink('title', $orderBy, $vars, $lang->bug->title);?></th>
|
||||
|
||||
<?php if($this->cookie->windowWidth >= $this->config->wideSize):?>
|
||||
<th class='w-80px'><?php common::printOrderLink('status', $orderBy, $vars, $lang->bug->statusAB);?></th>
|
||||
<?php endif;?>
|
||||
|
||||
<?php if($browseType == 'needconfirm'):?>
|
||||
<th class='w-200px'><?php common::printOrderLink('story', $orderBy, $vars, $lang->bug->story);?></th>
|
||||
<th class='w-50px'><?php echo $lang->actions;?></th>
|
||||
<?php else:?>
|
||||
<th class='w-user'><?php common::printOrderLink('openedBy', $orderBy, $vars, $lang->openedByAB);?></th>
|
||||
|
||||
<?php if($this->cookie->windowWidth >= $this->config->wideSize):?>
|
||||
<th class='w-date'> <?php common::printOrderLink('openedDate', $orderBy, $vars, $lang->bug->openedDateAB);?></th>
|
||||
<?php endif;?>
|
||||
|
||||
<th class='w-user'><?php common::printOrderLink('assignedTo', $orderBy, $vars, $lang->assignedToAB);?></th>
|
||||
<th class='w-user'><?php common::printOrderLink('resolvedBy', $orderBy, $vars, $lang->bug->resolvedByAB);?></th>
|
||||
<th class='w-resolution'><?php common::printOrderLink('resolution', $orderBy, $vars, $lang->bug->resolutionAB);?></th>
|
||||
|
||||
<?php if($this->cookie->windowWidth >= $this->config->wideSize):?>
|
||||
<th class='w-date'> <?php common::printOrderLink('resolvedDate', $orderBy, $vars, $lang->bug->resolvedDateAB);?></th>
|
||||
<?php endif;?>
|
||||
|
||||
<th class='w-100px {sorter:false}'><?php echo $lang->actions;?></th>
|
||||
<?php endif;?>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($bugs as $bug):?>
|
||||
<?php $bugLink = inlink('view', "bugID=$bug->id");?>
|
||||
<tr class='a-center'>
|
||||
<td class='<?php echo $bug->status;?>' style="font-weight:bold">
|
||||
<input type='checkbox' name='bugIDList[]' value='<?php echo $bug->id;?>'/>
|
||||
<?php echo html::a($bugLink, sprintf('%03d', $bug->id));?>
|
||||
</td>
|
||||
<td><span class='<?php echo 'severity' . $bug->severity;?>'><?php echo $bug->severity;?></span></td>
|
||||
<td><span class='<?php echo 'pri' . $lang->bug->priList[$bug->pri];?>'><?php echo $lang->bug->priList[$bug->pri];?></span></td>
|
||||
|
||||
<?php $class = 'confirm' . $bug->confirmed;?>
|
||||
<td class='a-left' title="<?php echo $bug->title?>"><?php echo "<span class='$class'>[{$lang->bug->confirmedList[$bug->confirmed]}] </span>" . html::a($bugLink, $bug->title);?></td>
|
||||
|
||||
<?php if($this->cookie->windowWidth >= $this->config->wideSize):?>
|
||||
<td><?php echo $lang->bug->statusList[$bug->status];?></td>
|
||||
<?php endif;?>
|
||||
|
||||
<?php if($browseType == 'needconfirm'):?>
|
||||
<td class='a-left' title="<?php echo $bug->storyTitle?>"><?php echo html::a($this->createLink('story', 'view', "stoyID=$bug->story"), $bug->storyTitle, '_blank');?></td>
|
||||
<td><?php $lang->bug->confirmStoryChange = $lang->confirm; common::printIcon('bug', 'confirmStoryChange', "bugID=$bug->id", '', 'list', '', 'hiddenwin')?></td>
|
||||
<?php else:?>
|
||||
<td><?php echo $users[$bug->openedBy];?></td>
|
||||
|
||||
<?php if($this->cookie->windowWidth >= $this->config->wideSize):?>
|
||||
<td><?php echo substr($bug->openedDate, 5, 11)?></td>
|
||||
<?php endif;?>
|
||||
|
||||
<td <?php if($bug->assignedTo == $this->app->user->account) echo 'class="red"';?>><?php echo $users[$bug->assignedTo];?></td>
|
||||
<td><?php echo $users[$bug->resolvedBy];?></td>
|
||||
<td><?php echo $lang->bug->resolutionList[$bug->resolution];?></td>
|
||||
|
||||
<?php if($this->cookie->windowWidth >= $this->config->wideSize):?>
|
||||
<td><?php echo substr($bug->resolvedDate, 5, 11)?></td>
|
||||
<?php endif;?>
|
||||
|
||||
<td class='a-right'>
|
||||
<?php
|
||||
$params = "bugID=$bug->id";
|
||||
common::printIcon('bug', 'resolve', $params, $bug, 'list');
|
||||
common::printIcon('bug', 'close', $params, $bug, 'list');
|
||||
common::printIcon('bug', 'edit', $params, $bug, 'list');
|
||||
common::printIcon('bug', 'create', "product=$bug->product&extra=bugID=$bug->id", $bug, 'list', 'copy');
|
||||
?>
|
||||
</td>
|
||||
<?php endif;?>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<?php
|
||||
$columns = $this->cookie->windowWidth >= $this->config->wideSize ? 12 : 9;
|
||||
if($browseType == 'needconfirm') $columns = $this->cookie->windowWidth >= $this->config->wideSize ? 7 : 6;
|
||||
?>
|
||||
<td colspan='<?php echo $columns;?>'>
|
||||
<?php if(!empty($bugs)):?>
|
||||
<div class='f-left'>
|
||||
<?php
|
||||
echo html::selectAll() . html::selectReverse();
|
||||
if(common::hasPriv('bug', 'batchEdit') and $bugs) echo html::submitButton($lang->bug->batchEdit);
|
||||
?>
|
||||
</div>
|
||||
<?php endif?>
|
||||
<div class='f-right'><?php $pager->show();?></div>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The browse view file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
include '../../common/view/header.html.php';
|
||||
include '../../common/view/treeview.html.php';
|
||||
include '../../common/view/colorize.html.php';
|
||||
js::set('browseType', $browseType);
|
||||
js::set('moduleID', $moduleID);
|
||||
js::set('customed', $customed, 'number');
|
||||
?>
|
||||
|
||||
<div id='featurebar'>
|
||||
<div class='f-left'>
|
||||
<?php
|
||||
echo "<span id='bymoduleTab' onclick=\"browseByModule('$browseType')\"><a href='#'>" . $lang->bug->moduleBugs . "</a></span> ";
|
||||
echo "<span id='assigntomeTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=assignToMe¶m=0"), $lang->bug->assignToMe) . "</span>";
|
||||
echo "<span id='openedbymeTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=openedByMe¶m=0"), $lang->bug->openedByMe) . "</span>";
|
||||
echo "<span id='resolvedbymeTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=resolvedByMe¶m=0"), $lang->bug->resolvedByMe) . "</span>";
|
||||
echo "<span id='assigntonullTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=assignToNull¶m=0"), $lang->bug->assignToNull) . "</span>";
|
||||
echo "<span id='unresolvedTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=unResolved¶m=0"), $lang->bug->unResolved) . "</span>";
|
||||
echo "<span id='unclosedTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=unclosed¶m=0"), $lang->bug->unclosed) . "</span>";
|
||||
echo "<span id='longlifebugsTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=longLifeBugs¶m=0"), $lang->bug->longLifeBugs) . "</span>";
|
||||
echo "<span id='postponedbugsTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=postponedBugs¶m=0"), $lang->bug->postponedBugs) . "</span>";
|
||||
echo "<span id='allTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=all¶m=0&orderBy=$orderBy&recTotal=0&recPerPage=200"), $lang->bug->allBugs) . "</span>";
|
||||
echo "<span id='needconfirmTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=needconfirm¶m=0"), $lang->bug->needConfirm) . "</span>";
|
||||
echo "<span id='bysearchTab'><a href='#'><span class='icon-search'></span>{$lang->bug->byQuery}</a></span> ";
|
||||
?>
|
||||
</div>
|
||||
<div class='f-right'>
|
||||
<?php
|
||||
if($browseType != 'needconfirm') common::printIcon('bug', 'export', "productID=$productID&orderBy=$orderBy");
|
||||
common::printIcon('bug', 'customFields');
|
||||
common::printIcon('bug', 'report', "productID=$productID&browseType=$browseType&moduleID=$moduleID");
|
||||
common::printIcon('bug', 'create', "productID=$productID&extra=moduleID=$moduleID");
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<div id='querybox' class='<?php if($browseType !='bysearch') echo 'hidden';?>'></div>
|
||||
|
||||
<?php
|
||||
if($customed)
|
||||
{
|
||||
include './browse.custom.html.php';
|
||||
include '../../common/view/footer.lite.html.php';
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
|
||||
<form method='post' action='<?php echo $this->inLink('batchEdit', "from=bugBrowse&productID=$productID&orderBy=$orderBy");?>'>
|
||||
<table class='cont-lt1'>
|
||||
<tr valign='top'>
|
||||
<td class='side <?php echo $treeClass;?>' id='treebox'>
|
||||
<div class='box-title'><?php echo $productName;?></div>
|
||||
<div class='box-content'>
|
||||
<?php echo $moduleTree;?>
|
||||
<div class='a-right'>
|
||||
<?php common::printLink('tree', 'browse', "productID=$productID&view=bug", $lang->tree->manage);?>
|
||||
<?php common::printLink('tree', 'fix', "root=$productID&type=bug", $lang->tree->fix, 'hiddenwin');?>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td class='divider <?php echo $treeClass;?>'></td>
|
||||
<td>
|
||||
<?php $vars = "productID=$productID&browseType=$browseType¶m=$param&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}"; ?>
|
||||
<table class='table-1 fixed colored tablesorter datatable'>
|
||||
<thead>
|
||||
<tr class='colhead'>
|
||||
<th class='w-id'> <?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?></th>
|
||||
<th class='w-severity'> <?php common::printOrderLink('severity', $orderBy, $vars, $lang->bug->severityAB);?></th>
|
||||
<th class='w-pri'> <?php common::printOrderLink('pri', $orderBy, $vars, $lang->priAB);?></th>
|
||||
|
||||
<th><?php common::printOrderLink('title', $orderBy, $vars, $lang->bug->title);?></th>
|
||||
|
||||
<?php if($this->cookie->windowWidth >= $this->config->wideSize):?>
|
||||
<th class='w-80px'><?php common::printOrderLink('status', $orderBy, $vars, $lang->bug->statusAB);?></th>
|
||||
<?php endif;?>
|
||||
|
||||
<?php if($browseType == 'needconfirm'):?>
|
||||
<th class='w-200px'><?php common::printOrderLink('story', $orderBy, $vars, $lang->bug->story);?></th>
|
||||
<th class='w-50px'><?php echo $lang->actions;?></th>
|
||||
<?php else:?>
|
||||
<th class='w-user'><?php common::printOrderLink('openedBy', $orderBy, $vars, $lang->openedByAB);?></th>
|
||||
|
||||
<?php if($this->cookie->windowWidth >= $this->config->wideSize):?>
|
||||
<th class='w-date'> <?php common::printOrderLink('openedDate', $orderBy, $vars, $lang->bug->openedDateAB);?></th>
|
||||
<?php endif;?>
|
||||
|
||||
<th class='w-user'><?php common::printOrderLink('assignedTo', $orderBy, $vars, $lang->assignedToAB);?></th>
|
||||
<th class='w-user'><?php common::printOrderLink('resolvedBy', $orderBy, $vars, $lang->bug->resolvedByAB);?></th>
|
||||
<th class='w-resolution'><?php common::printOrderLink('resolution', $orderBy, $vars, $lang->bug->resolutionAB);?></th>
|
||||
|
||||
<?php if($this->cookie->windowWidth >= $this->config->wideSize):?>
|
||||
<th class='w-date'> <?php common::printOrderLink('resolvedDate', $orderBy, $vars, $lang->bug->resolvedDateAB);?></th>
|
||||
<?php endif;?>
|
||||
|
||||
<th class='w-100px {sorter:false}'><?php echo $lang->actions;?></th>
|
||||
<?php endif;?>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($bugs as $bug):?>
|
||||
<?php $bugLink = inlink('view', "bugID=$bug->id");?>
|
||||
<tr class='a-center'>
|
||||
<td class='<?php echo $bug->status;?>' style="font-weight:bold">
|
||||
<input type='checkbox' name='bugIDList[]' value='<?php echo $bug->id;?>'/>
|
||||
<?php echo html::a($bugLink, sprintf('%03d', $bug->id));?>
|
||||
</td>
|
||||
<td><span class='<?php echo 'severity' . $bug->severity;?>'><?php echo $bug->severity;?></span></td>
|
||||
<td><span class='<?php echo 'pri' . $lang->bug->priList[$bug->pri];?>'><?php echo $lang->bug->priList[$bug->pri];?></span></td>
|
||||
|
||||
<?php $class = 'confirm' . $bug->confirmed;?>
|
||||
<td class='a-left' title="<?php echo $bug->title?>"><?php echo "<span class='$class'>[{$lang->bug->confirmedList[$bug->confirmed]}] </span>" . html::a($bugLink, $bug->title);?></td>
|
||||
|
||||
<?php if($this->cookie->windowWidth >= $this->config->wideSize):?>
|
||||
<td><?php echo $lang->bug->statusList[$bug->status];?></td>
|
||||
<?php endif;?>
|
||||
|
||||
<?php if($browseType == 'needconfirm'):?>
|
||||
<td class='a-left' title="<?php echo $bug->storyTitle?>"><?php echo html::a($this->createLink('story', 'view', "stoyID=$bug->story"), $bug->storyTitle, '_blank');?></td>
|
||||
<td><?php $lang->bug->confirmStoryChange = $lang->confirm; common::printIcon('bug', 'confirmStoryChange', "bugID=$bug->id", '', 'list', '', 'hiddenwin')?></td>
|
||||
<?php else:?>
|
||||
<td><?php echo $users[$bug->openedBy];?></td>
|
||||
|
||||
<?php if($this->cookie->windowWidth >= $this->config->wideSize):?>
|
||||
<td><?php echo substr($bug->openedDate, 5, 11)?></td>
|
||||
<?php endif;?>
|
||||
|
||||
<td <?php if($bug->assignedTo == $this->app->user->account) echo 'class="red"';?>><?php echo $users[$bug->assignedTo];?></td>
|
||||
<td><?php echo $users[$bug->resolvedBy];?></td>
|
||||
<td><?php echo $lang->bug->resolutionList[$bug->resolution];?></td>
|
||||
|
||||
<?php if($this->cookie->windowWidth >= $this->config->wideSize):?>
|
||||
<td><?php echo substr($bug->resolvedDate, 5, 11)?></td>
|
||||
<?php endif;?>
|
||||
|
||||
<td class='a-right'>
|
||||
<?php
|
||||
$params = "bugID=$bug->id";
|
||||
common::printIcon('bug', 'resolve', $params, $bug, 'list');
|
||||
common::printIcon('bug', 'close', $params, $bug, 'list');
|
||||
common::printIcon('bug', 'edit', $params, $bug, 'list');
|
||||
common::printIcon('bug', 'create', "product=$bug->product&extra=bugID=$bug->id", $bug, 'list', 'copy');
|
||||
?>
|
||||
</td>
|
||||
<?php endif;?>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<?php
|
||||
$columns = $this->cookie->windowWidth >= $this->config->wideSize ? 12 : 9;
|
||||
if($browseType == 'needconfirm') $columns = $this->cookie->windowWidth >= $this->config->wideSize ? 7 : 6;
|
||||
?>
|
||||
<td colspan='<?php echo $columns;?>'>
|
||||
<?php if(!empty($bugs)):?>
|
||||
<div class='f-left'>
|
||||
<?php
|
||||
echo html::selectAll() . html::selectReverse();
|
||||
if(common::hasPriv('bug', 'batchEdit') and $bugs) echo html::submitButton($lang->bug->batchEdit);
|
||||
?>
|
||||
</div>
|
||||
<?php endif?>
|
||||
<div class='f-right'><?php $pager->show();?></div>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,31 +1,31 @@
|
||||
<?php
|
||||
/**
|
||||
* The close file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' target='hiddenwin'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $bug->title;?></caption>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->comment;?></td>
|
||||
<td><?php echo html::textarea('comment', '', "rows='6' class='area-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'>
|
||||
<?php echo html::submitButton();?>
|
||||
<input type='button' value='<?php echo $lang->bug->buttonToList;?>' class='button-s'
|
||||
onclick='location.href="<?php echo $this->session->bugList;?>"' />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The close file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' target='hiddenwin'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $bug->title;?></caption>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->comment;?></td>
|
||||
<td><?php echo html::textarea('comment', '', "rows='6' class='area-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'>
|
||||
<?php echo html::submitButton();?>
|
||||
<input type='button' value='<?php echo $lang->bug->buttonToList;?>' class='button-s'
|
||||
onclick='location.href="<?php echo $this->session->bugList;?>"' />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,31 +1,31 @@
|
||||
<?php
|
||||
/**
|
||||
* The confirm file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id: resolve.html.php 1914 2011-06-24 10:11:25Z yidong@cnezsoft.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' target='hiddenwin'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $bug->title;?></caption>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->comment;?></td>
|
||||
<td><?php echo html::textarea('comment', '', "rows='6' class='area-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'>
|
||||
<?php echo html::submitButton($lang->bug->buttonConfirm);?>
|
||||
<input type='button' value='<?php echo $lang->bug->buttonToList;?>' class='button-s'
|
||||
onclick='location.href="<?php echo $this->server->http_referer;?>"' />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The confirm file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id: resolve.html.php 1914 2011-06-24 10:11:25Z yidong@cnezsoft.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' target='hiddenwin'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $bug->title;?></caption>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->comment;?></td>
|
||||
<td><?php echo html::textarea('comment', '', "rows='6' class='area-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'>
|
||||
<?php echo html::submitButton($lang->bug->buttonConfirm);?>
|
||||
<input type='button' value='<?php echo $lang->bug->buttonToList;?>' class='button-s'
|
||||
onclick='location.href="<?php echo $this->server->http_referer;?>"' />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,112 +1,112 @@
|
||||
<?php
|
||||
/**
|
||||
* The create view of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
include '../../common/view/header.html.php';
|
||||
include '../../common/view/chosen.html.php';
|
||||
include '../../common/view/autocomplete.html.php';
|
||||
include '../../common/view/alert.html.php';
|
||||
include '../../common/view/kindeditor.html.php';
|
||||
js::set('holders', $lang->bug->placeholder, 'json');
|
||||
js::set('userList', array_keys($users), 'json');
|
||||
js::set('page', 'create');
|
||||
?>
|
||||
|
||||
<form method='post' enctype='multipart/form-data' target='hiddenwin' id='dataform'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $lang->bug->create;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->lblProductAndModule;?></th>
|
||||
<td>
|
||||
<?php echo html::select('product', $products, $productID, "onchange=loadAll(this.value) class='select-3'");?>
|
||||
<span id='moduleIdBox'><?php echo html::select('module', $moduleOptionMenu, $moduleID, "onchange='setAssignedTo()'");?></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->project;?></th>
|
||||
<td><span id='projectIdBox'><?php echo html::select('project', $projects, $projectID, 'class=select-3 onchange=loadProjectRelated(this.value)');?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->openedBuild;?></th>
|
||||
<td>
|
||||
<span id='buildBox'><?php echo html::select('openedBuild[]', $builds, $buildID, 'size=3 multiple=multiple class=select-3');?></span>
|
||||
<?php if(count($builds) == 1) echo $lang->build->notice;?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><nobr><?php echo $lang->bug->lblAssignedTo;?></nobr></th>
|
||||
<td><span id='assignedToBox'><?php echo html::select('assignedTo', $users, $assignedTo, 'class=select-3');?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->title;?></th>
|
||||
<td><?php echo html::input('title', $title, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->steps;?></th>
|
||||
<td>
|
||||
<table class='w-p100 bd-none'>
|
||||
<tr class='bd-none' valign='top'>
|
||||
<td class='w-p85 bd-none padding-zero'><?php echo html::textarea('steps', $steps, "rows='10'");?></td>
|
||||
<td class='bd-none pl-10px' id='tplBox'><?php echo $this->fetch('bug', 'buildTemplates');?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->lblStory;?></th>
|
||||
<td>
|
||||
<span id='storyIdBox'><?php echo html::select('story', $stories, $storyID);?></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->task;?></th>
|
||||
<td><span id='taskIdBox'><?php echo html::select('task', $tasks, $taskID);?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->lblTypeAndSeverity;?></th>
|
||||
<td>
|
||||
<?php echo html::select('type', $lang->bug->typeList, $type, 'class=select-2');?>
|
||||
<?php echo html::select('severity', $lang->bug->severityList, $severity, 'class=select-2');?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><nobr><?php echo $lang->bug->lblSystemBrowserAndHardware;?></nobr></th>
|
||||
<td>
|
||||
<?php echo html::select('os', $lang->bug->osList, $os, 'class=select-2');?>
|
||||
<?php echo html::select('browser', $lang->bug->browserList, $browser, 'class=select-2');?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><nobr><?php echo $lang->bug->lblMailto;?></nobr></th>
|
||||
<td>
|
||||
<?php
|
||||
echo html::input('mailto', $mailto, 'class=text-1');
|
||||
if($contactLists) echo html::select('', $contactLists, '', "onchange=\"setMailto('mailto', this.value)\"");
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->keywords;?></th>
|
||||
<td><?php echo html::input('keywords', $keywords, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->files;?></th>
|
||||
<td><?php echo $this->fetch('file', 'buildform', 'fileCount=2&percent=0.85');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'>
|
||||
<?php echo html::submitButton() . html::resetButton() . html::hidden('case', $caseID);?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The create view of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
include '../../common/view/header.html.php';
|
||||
include '../../common/view/chosen.html.php';
|
||||
include '../../common/view/autocomplete.html.php';
|
||||
include '../../common/view/alert.html.php';
|
||||
include '../../common/view/kindeditor.html.php';
|
||||
js::set('holders', $lang->bug->placeholder, 'json');
|
||||
js::set('userList', array_keys($users), 'json');
|
||||
js::set('page', 'create');
|
||||
?>
|
||||
|
||||
<form method='post' enctype='multipart/form-data' target='hiddenwin' id='dataform'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $lang->bug->create;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->lblProductAndModule;?></th>
|
||||
<td>
|
||||
<?php echo html::select('product', $products, $productID, "onchange=loadAll(this.value) class='select-3'");?>
|
||||
<span id='moduleIdBox'><?php echo html::select('module', $moduleOptionMenu, $moduleID, "onchange='setAssignedTo()'");?></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->project;?></th>
|
||||
<td><span id='projectIdBox'><?php echo html::select('project', $projects, $projectID, 'class=select-3 onchange=loadProjectRelated(this.value)');?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->openedBuild;?></th>
|
||||
<td>
|
||||
<span id='buildBox'><?php echo html::select('openedBuild[]', $builds, $buildID, 'size=3 multiple=multiple class=select-3');?></span>
|
||||
<?php if(count($builds) == 1) echo $lang->build->notice;?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><nobr><?php echo $lang->bug->lblAssignedTo;?></nobr></th>
|
||||
<td><span id='assignedToBox'><?php echo html::select('assignedTo', $users, $assignedTo, 'class=select-3');?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->title;?></th>
|
||||
<td><?php echo html::input('title', $title, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->steps;?></th>
|
||||
<td>
|
||||
<table class='w-p100 bd-none'>
|
||||
<tr class='bd-none' valign='top'>
|
||||
<td class='w-p85 bd-none padding-zero'><?php echo html::textarea('steps', $steps, "rows='10'");?></td>
|
||||
<td class='bd-none pl-10px' id='tplBox'><?php echo $this->fetch('bug', 'buildTemplates');?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->lblStory;?></th>
|
||||
<td>
|
||||
<span id='storyIdBox'><?php echo html::select('story', $stories, $storyID);?></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->task;?></th>
|
||||
<td><span id='taskIdBox'><?php echo html::select('task', $tasks, $taskID);?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->lblTypeAndSeverity;?></th>
|
||||
<td>
|
||||
<?php echo html::select('type', $lang->bug->typeList, $type, 'class=select-2');?>
|
||||
<?php echo html::select('severity', $lang->bug->severityList, $severity, 'class=select-2');?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><nobr><?php echo $lang->bug->lblSystemBrowserAndHardware;?></nobr></th>
|
||||
<td>
|
||||
<?php echo html::select('os', $lang->bug->osList, $os, 'class=select-2');?>
|
||||
<?php echo html::select('browser', $lang->bug->browserList, $browser, 'class=select-2');?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><nobr><?php echo $lang->bug->lblMailto;?></nobr></th>
|
||||
<td>
|
||||
<?php
|
||||
echo html::input('mailto', $mailto, 'class=text-1');
|
||||
if($contactLists) echo html::select('', $contactLists, '', "onchange=\"setMailto('mailto', this.value)\"");
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->keywords;?></th>
|
||||
<td><?php echo html::input('keywords', $keywords, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->files;?></th>
|
||||
<td><?php echo $this->fetch('file', 'buildform', 'fileCount=2&percent=0.85');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'>
|
||||
<?php echo html::submitButton() . html::resetButton() . html::hidden('case', $caseID);?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,49 +1,49 @@
|
||||
<?php
|
||||
/**
|
||||
* The custom seting fields view of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package product
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.lite.html.php';?>
|
||||
<?php include '../../common/view/colorbox.html.php';?>
|
||||
<form method='post' class='mt-20px'>
|
||||
<table class='table-4' align='center'>
|
||||
<caption class='caption-tl'><?php echo $lang->bug->customFields;?></caption>
|
||||
<tr class='colhead'>
|
||||
<th><?php echo $lang->bug->lblAllFields;?></th>
|
||||
<th></th>
|
||||
<th><?php echo $lang->bug->lblCustomFields;?></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<?php
|
||||
echo html::select('allFields[]', $allFields, '', 'class=select-2 size=10 multiple');
|
||||
echo html::select('defaultFields[]', $defaultFields, '', 'class=hidden');
|
||||
?>
|
||||
</td>
|
||||
<td>
|
||||
<?php
|
||||
echo html::commonButton('>', "onclick=\"addItem('allFields', 'customFields')\"") . '<br />';
|
||||
echo html::commonButton('<', "onclick=delItem('customFields')") . '<br />';
|
||||
?>
|
||||
</td>
|
||||
<td><?php echo html::select('customFields[]', $customFields, '', 'class=select-2 size=10 multiple');?></td>
|
||||
<td>
|
||||
<?php
|
||||
echo html::commonButton('+', "onclick=upItem('customFields')") . '<br />';
|
||||
echo html::commonButton('-', "onclick=downItem('customFields')") . '<br />';
|
||||
echo html::commonButton($lang->bug->restoreDefault, "onclick=restoreDefault()") . '<br />';
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan='4' class='a-center'><?php echo html::submitButton('', 'onclick=selectItem("customFields")');?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.lite.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The custom seting fields view of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package product
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.lite.html.php';?>
|
||||
<?php include '../../common/view/colorbox.html.php';?>
|
||||
<form method='post' class='mt-20px'>
|
||||
<table class='table-4' align='center'>
|
||||
<caption class='caption-tl'><?php echo $lang->bug->customFields;?></caption>
|
||||
<tr class='colhead'>
|
||||
<th><?php echo $lang->bug->lblAllFields;?></th>
|
||||
<th></th>
|
||||
<th><?php echo $lang->bug->lblCustomFields;?></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<?php
|
||||
echo html::select('allFields[]', $allFields, '', 'class=select-2 size=10 multiple');
|
||||
echo html::select('defaultFields[]', $defaultFields, '', 'class=hidden');
|
||||
?>
|
||||
</td>
|
||||
<td>
|
||||
<?php
|
||||
echo html::commonButton('>', "onclick=\"addItem('allFields', 'customFields')\"") . '<br />';
|
||||
echo html::commonButton('<', "onclick=delItem('customFields')") . '<br />';
|
||||
?>
|
||||
</td>
|
||||
<td><?php echo html::select('customFields[]', $customFields, '', 'class=select-2 size=10 multiple');?></td>
|
||||
<td>
|
||||
<?php
|
||||
echo html::commonButton('+', "onclick=upItem('customFields')") . '<br />';
|
||||
echo html::commonButton('-', "onclick=downItem('customFields')") . '<br />';
|
||||
echo html::commonButton($lang->bug->restoreDefault, "onclick=restoreDefault()") . '<br />';
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan='4' class='a-center'><?php echo html::submitButton('', 'onclick=selectItem("customFields")');?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.lite.html.php';?>
|
||||
|
||||
@@ -1,205 +1,205 @@
|
||||
<?php
|
||||
/**
|
||||
* The edit file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
include '../../common/view/header.html.php';
|
||||
include '../../common/view/chosen.html.php';
|
||||
include '../../common/view/autocomplete.html.php';
|
||||
include '../../common/view/alert.html.php';
|
||||
include '../../common/view/kindeditor.html.php';
|
||||
js::set('page' , 'edit');
|
||||
js::set('changeProductConfirmed' , 'false', 'number');
|
||||
js::set('changeProjectConfirmed' , 'false', 'number');
|
||||
js::set('confirmChangeProduct' , $lang->bug->confirmChangeProduct);
|
||||
js::set('oldProjectID' , $bug->project);
|
||||
js::set('oldStoryID' , $bug->story);
|
||||
js::set('oldTaskID' , $bug->task);
|
||||
js::set('oldOpenedBuild' , $bug->openedBuild);
|
||||
js::set('oldResolvedBuild' , $bug->resolvedBuild);
|
||||
js::set('userList' , array_keys($users), 'json');
|
||||
?>
|
||||
|
||||
<form method='post' target='hiddenwin' enctype='multipart/form-data' id='dataform'>
|
||||
<div id='titlebar'>
|
||||
<div id='main'>
|
||||
BUG #<?php echo $bug->id . $lang->colon;?>
|
||||
<?php echo html::input('title', str_replace("'","'",$bug->title), 'class=text-1');?>
|
||||
</div>
|
||||
<div><?php echo html::submitButton()?></div>
|
||||
</div>
|
||||
|
||||
<table class='cont-rt5'>
|
||||
<tr valign='top'>
|
||||
<td>
|
||||
<table class='table-1 bd-none'>
|
||||
<tr class='bd-none'><td class='bd-none'>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendSteps;?></legend>
|
||||
<div class='w-p90'><?php echo html::textarea('steps', htmlspecialchars($bug->steps), "rows='12'");?></div>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendComment;?></legend>
|
||||
<?php echo html::textarea('comment', '', "rows='6' class='area-1'");?>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendAttatch;?></legend>
|
||||
<?php echo $this->fetch('file', 'buildform', 'filecount=2');?>
|
||||
</fieldset>
|
||||
<div class='a-center'>
|
||||
<?php
|
||||
echo html::submitButton();
|
||||
$browseLink = $app->session->bugList != false ? $app->session->bugList : inlink('browse', "productID=$bug->product");
|
||||
echo html::linkButton($lang->goback, $browseLink);
|
||||
?>
|
||||
</div>
|
||||
</td></tr>
|
||||
</table>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
</td>
|
||||
<td class='divider'></td>
|
||||
<td class='side'>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendBasicInfo;?></legend>
|
||||
<table class='table-1 a-left' cellpadding='0' cellspacing='0'>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->product;?></td>
|
||||
<td>
|
||||
<?php echo html::select('product', $products, $productID, "onchange=loadAll(this.value);");?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->module;?></td>
|
||||
<td>
|
||||
<span id='moduleIdBox'><?php echo html::select('module', $moduleOptionMenu, $currentModuleID);?></span>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->type;?></td>
|
||||
<td><?php echo html::select('type', $lang->bug->typeList, $bug->type, 'class=select-3');?>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->severity;?></td>
|
||||
<td><?php echo html::select('severity', $lang->bug->severityList, $bug->severity, 'class=select-3');?>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->pri;?></td>
|
||||
<td><?php echo html::select('pri', $lang->bug->priList, $bug->pri, 'class=select-3');?>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->status;?></td>
|
||||
<td><?php echo html::select('status', $lang->bug->statusList, $bug->status, 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->confirmed;?></td>
|
||||
<td><?php echo $lang->bug->confirmedList[$bug->confirmed];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->assignedTo;?></td>
|
||||
<td><?php echo html::select('assignedTo', $users, $bug->assignedTo, 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->os;?></td>
|
||||
<td><?php echo html::select('os', $lang->bug->osList, $bug->os, 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->browser;?></td>
|
||||
<td><?php echo html::select('browser', $lang->bug->browserList, $bug->browser, 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->keywords;?></td>
|
||||
<td><?php echo html::input('keywords', $bug->keywords, 'class="text-3"');?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendPrjStoryTask;?></legend>
|
||||
<table class='table-1 a-left'>
|
||||
<tr>
|
||||
<td class='rowhead w-p20'><?php echo $lang->bug->project;?></td>
|
||||
<td><span id='projectIdBox'><?php echo html::select('project', $projects, $bug->project, 'class=select-3 onchange=loadProjectRelated(this.value)');?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->story;?></td>
|
||||
<td><div id='storyIdBox'><?php echo html::select('story', $stories, $bug->story, "class=select-3");?></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->task;?></td>
|
||||
<td><div id='taskIdBox'><?php echo html::select('task', $tasks, $bug->task, 'class=select-3');?></div></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendLife;?></legend>
|
||||
<table class='table-1 a-left'>
|
||||
<tr>
|
||||
<td class='rowhead w-p20'><?php echo $lang->bug->openedBy;?></td>
|
||||
<td><?php echo $users[$bug->openedBy];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->openedBuild;?></td>
|
||||
<td><span id='openedBuildBox'><?php echo html::select('openedBuild[]', $openedBuilds, $bug->openedBuild, 'size=4 multiple=multiple class=select-3');?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->resolvedBy;?></td>
|
||||
<td><?php echo html::select('resolvedBy', $users, $bug->resolvedBy, 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->resolvedDate;?></td>
|
||||
<td><?php echo html::input('resolvedDate', $bug->resolvedDate, 'class=text-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->resolvedBuild;?></td>
|
||||
<td><span id='resolvedBuildBox'><?php echo html::select('resolvedBuild', $resolvedBuilds, $bug->resolvedBuild, 'class=select-3');?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->resolution;?></td>
|
||||
<td><?php echo html::select('resolution', $lang->bug->resolutionList, $bug->resolution, 'class=select-3 onchange=setDuplicate(this.value)');?></td>
|
||||
</tr>
|
||||
<tr id='duplicateBugBox' <?php if($bug->resolution != 'duplicate') echo "style='display:none'";?>>
|
||||
<td class='rowhead'><?php echo $lang->bug->duplicateBug;?></td>
|
||||
<td><?php echo html::input('duplicateBug', $bug->duplicateBug, 'class=text-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->closedBy;?></td>
|
||||
<td><?php echo html::select('closedBy', $users, $bug->closedBy, 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->closedDate;?></td>
|
||||
<td><?php echo html::input('closedDate', $bug->closedDate, 'class=text-3');?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendMisc;?></legend>
|
||||
<table class='table-1 a-left'>
|
||||
<tr>
|
||||
<td class='rowhead w-p20'><?php echo $lang->bug->mailto;?></td>
|
||||
<td><?php echo html::input('mailto', $bug->mailto, 'class="text-3"');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->linkBug;?></td>
|
||||
<td><?php echo html::input('linkBug', $bug->linkBug, 'class="text-3"');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->case;?></td>
|
||||
<td><?php echo html::input('case', $bug->case, 'class="text-3"');?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The edit file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
include '../../common/view/header.html.php';
|
||||
include '../../common/view/chosen.html.php';
|
||||
include '../../common/view/autocomplete.html.php';
|
||||
include '../../common/view/alert.html.php';
|
||||
include '../../common/view/kindeditor.html.php';
|
||||
js::set('page' , 'edit');
|
||||
js::set('changeProductConfirmed' , 'false', 'number');
|
||||
js::set('changeProjectConfirmed' , 'false', 'number');
|
||||
js::set('confirmChangeProduct' , $lang->bug->confirmChangeProduct);
|
||||
js::set('oldProjectID' , $bug->project);
|
||||
js::set('oldStoryID' , $bug->story);
|
||||
js::set('oldTaskID' , $bug->task);
|
||||
js::set('oldOpenedBuild' , $bug->openedBuild);
|
||||
js::set('oldResolvedBuild' , $bug->resolvedBuild);
|
||||
js::set('userList' , array_keys($users), 'json');
|
||||
?>
|
||||
|
||||
<form method='post' target='hiddenwin' enctype='multipart/form-data' id='dataform'>
|
||||
<div id='titlebar'>
|
||||
<div id='main'>
|
||||
BUG #<?php echo $bug->id . $lang->colon;?>
|
||||
<?php echo html::input('title', str_replace("'","'",$bug->title), 'class=text-1');?>
|
||||
</div>
|
||||
<div><?php echo html::submitButton()?></div>
|
||||
</div>
|
||||
|
||||
<table class='cont-rt5'>
|
||||
<tr valign='top'>
|
||||
<td>
|
||||
<table class='table-1 bd-none'>
|
||||
<tr class='bd-none'><td class='bd-none'>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendSteps;?></legend>
|
||||
<div class='w-p90'><?php echo html::textarea('steps', htmlspecialchars($bug->steps), "rows='12'");?></div>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendComment;?></legend>
|
||||
<?php echo html::textarea('comment', '', "rows='6' class='area-1'");?>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendAttatch;?></legend>
|
||||
<?php echo $this->fetch('file', 'buildform', 'filecount=2');?>
|
||||
</fieldset>
|
||||
<div class='a-center'>
|
||||
<?php
|
||||
echo html::submitButton();
|
||||
$browseLink = $app->session->bugList != false ? $app->session->bugList : inlink('browse', "productID=$bug->product");
|
||||
echo html::linkButton($lang->goback, $browseLink);
|
||||
?>
|
||||
</div>
|
||||
</td></tr>
|
||||
</table>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
</td>
|
||||
<td class='divider'></td>
|
||||
<td class='side'>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendBasicInfo;?></legend>
|
||||
<table class='table-1 a-left' cellpadding='0' cellspacing='0'>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->product;?></td>
|
||||
<td>
|
||||
<?php echo html::select('product', $products, $productID, "onchange=loadAll(this.value);");?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->module;?></td>
|
||||
<td>
|
||||
<span id='moduleIdBox'><?php echo html::select('module', $moduleOptionMenu, $currentModuleID);?></span>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->type;?></td>
|
||||
<td><?php echo html::select('type', $lang->bug->typeList, $bug->type, 'class=select-3');?>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->severity;?></td>
|
||||
<td><?php echo html::select('severity', $lang->bug->severityList, $bug->severity, 'class=select-3');?>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->pri;?></td>
|
||||
<td><?php echo html::select('pri', $lang->bug->priList, $bug->pri, 'class=select-3');?>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->status;?></td>
|
||||
<td><?php echo html::select('status', $lang->bug->statusList, $bug->status, 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->confirmed;?></td>
|
||||
<td><?php echo $lang->bug->confirmedList[$bug->confirmed];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->assignedTo;?></td>
|
||||
<td><?php echo html::select('assignedTo', $users, $bug->assignedTo, 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->os;?></td>
|
||||
<td><?php echo html::select('os', $lang->bug->osList, $bug->os, 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->browser;?></td>
|
||||
<td><?php echo html::select('browser', $lang->bug->browserList, $bug->browser, 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->keywords;?></td>
|
||||
<td><?php echo html::input('keywords', $bug->keywords, 'class="text-3"');?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendPrjStoryTask;?></legend>
|
||||
<table class='table-1 a-left'>
|
||||
<tr>
|
||||
<td class='rowhead w-p20'><?php echo $lang->bug->project;?></td>
|
||||
<td><span id='projectIdBox'><?php echo html::select('project', $projects, $bug->project, 'class=select-3 onchange=loadProjectRelated(this.value)');?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->story;?></td>
|
||||
<td><div id='storyIdBox'><?php echo html::select('story', $stories, $bug->story, "class=select-3");?></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->task;?></td>
|
||||
<td><div id='taskIdBox'><?php echo html::select('task', $tasks, $bug->task, 'class=select-3');?></div></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendLife;?></legend>
|
||||
<table class='table-1 a-left'>
|
||||
<tr>
|
||||
<td class='rowhead w-p20'><?php echo $lang->bug->openedBy;?></td>
|
||||
<td><?php echo $users[$bug->openedBy];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->openedBuild;?></td>
|
||||
<td><span id='openedBuildBox'><?php echo html::select('openedBuild[]', $openedBuilds, $bug->openedBuild, 'size=4 multiple=multiple class=select-3');?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->resolvedBy;?></td>
|
||||
<td><?php echo html::select('resolvedBy', $users, $bug->resolvedBy, 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->resolvedDate;?></td>
|
||||
<td><?php echo html::input('resolvedDate', $bug->resolvedDate, 'class=text-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->resolvedBuild;?></td>
|
||||
<td><span id='resolvedBuildBox'><?php echo html::select('resolvedBuild', $resolvedBuilds, $bug->resolvedBuild, 'class=select-3');?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->resolution;?></td>
|
||||
<td><?php echo html::select('resolution', $lang->bug->resolutionList, $bug->resolution, 'class=select-3 onchange=setDuplicate(this.value)');?></td>
|
||||
</tr>
|
||||
<tr id='duplicateBugBox' <?php if($bug->resolution != 'duplicate') echo "style='display:none'";?>>
|
||||
<td class='rowhead'><?php echo $lang->bug->duplicateBug;?></td>
|
||||
<td><?php echo html::input('duplicateBug', $bug->duplicateBug, 'class=text-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->closedBy;?></td>
|
||||
<td><?php echo html::select('closedBy', $users, $bug->closedBy, 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->closedDate;?></td>
|
||||
<td><?php echo html::input('closedDate', $bug->closedDate, 'class=text-3');?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendMisc;?></legend>
|
||||
<table class='table-1 a-left'>
|
||||
<tr>
|
||||
<td class='rowhead w-p20'><?php echo $lang->bug->mailto;?></td>
|
||||
<td><?php echo html::input('mailto', $bug->mailto, 'class="text-3"');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->linkBug;?></td>
|
||||
<td><?php echo html::input('linkBug', $bug->linkBug, 'class="text-3"');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->case;?></td>
|
||||
<td><?php echo html::input('case', $bug->case, 'class="text-3"');?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
<?php
|
||||
/**
|
||||
* The export view file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Congzhi Chen<congzhi@cnezsoft.com>
|
||||
* @package task
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../file/view/export.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The export view file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Congzhi Chen<congzhi@cnezsoft.com>
|
||||
* @package task
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../file/view/export.html.php';?>
|
||||
|
||||
@@ -1,62 +1,62 @@
|
||||
<?php
|
||||
/**
|
||||
* The report view file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<div id='featurebar'>
|
||||
<div class='f-left'><?php echo $lang->bug->report->common;?></div>
|
||||
<div class='f-right'><?php common::printRPN($this->createLink('bug', 'browse', "productID=$productID&browseType=$browseType&moduleID=$moduleID")); ?></div>
|
||||
</div>
|
||||
|
||||
<table class='cont-lt1'>
|
||||
<tr valign='top'>
|
||||
<td class='side'>
|
||||
<div class='box-title'><?php echo $lang->bug->report->select;?></div>
|
||||
<div class='box-content'>
|
||||
<form method='post'>
|
||||
<?php echo html::checkBox('charts', $lang->bug->report->charts, $checkedCharts);?>
|
||||
<?php echo html::selectAll();?>
|
||||
<?php echo html::selectReverse(); ?>
|
||||
<br /><br />
|
||||
<?php echo html::submitButton($lang->bug->report->create);?>
|
||||
</div>
|
||||
</td>
|
||||
<td class='divider'></td>
|
||||
<td>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $lang->bug->report->common;?></caption>
|
||||
<?php foreach($charts as $chartType => $chartContent):?>
|
||||
<tr valign='top'>
|
||||
<td><?php echo $chartContent;?></td>
|
||||
<td width='300'>
|
||||
<table class='table-1'>
|
||||
<tr>
|
||||
<th><?php echo $lang->report->item;?></th>
|
||||
<th><?php echo $lang->report->value;?></th>
|
||||
<th><?php echo $lang->report->percent;?></th>
|
||||
</tr>
|
||||
<?php foreach($datas[$chartType] as $key => $data):?>
|
||||
<tr class='a-center'>
|
||||
<td><?php echo $data->name;?></td>
|
||||
<td><?php echo $data->value;?></td>
|
||||
<td><?php echo ($data->percent * 100) . '%';?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php echo $renderJS;?>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The report view file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<div id='featurebar'>
|
||||
<div class='f-left'><?php echo $lang->bug->report->common;?></div>
|
||||
<div class='f-right'><?php common::printRPN($this->createLink('bug', 'browse', "productID=$productID&browseType=$browseType&moduleID=$moduleID")); ?></div>
|
||||
</div>
|
||||
|
||||
<table class='cont-lt1'>
|
||||
<tr valign='top'>
|
||||
<td class='side'>
|
||||
<div class='box-title'><?php echo $lang->bug->report->select;?></div>
|
||||
<div class='box-content'>
|
||||
<form method='post'>
|
||||
<?php echo html::checkBox('charts', $lang->bug->report->charts, $checkedCharts);?>
|
||||
<?php echo html::selectAll();?>
|
||||
<?php echo html::selectReverse(); ?>
|
||||
<br /><br />
|
||||
<?php echo html::submitButton($lang->bug->report->create);?>
|
||||
</div>
|
||||
</td>
|
||||
<td class='divider'></td>
|
||||
<td>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $lang->bug->report->common;?></caption>
|
||||
<?php foreach($charts as $chartType => $chartContent):?>
|
||||
<tr valign='top'>
|
||||
<td><?php echo $chartContent;?></td>
|
||||
<td width='300'>
|
||||
<table class='table-1'>
|
||||
<tr>
|
||||
<th><?php echo $lang->report->item;?></th>
|
||||
<th><?php echo $lang->report->value;?></th>
|
||||
<th><?php echo $lang->report->percent;?></th>
|
||||
</tr>
|
||||
<?php foreach($datas[$chartType] as $key => $data):?>
|
||||
<tr class='a-center'>
|
||||
<td><?php echo $data->name;?></td>
|
||||
<td><?php echo $data->value;?></td>
|
||||
<td><?php echo ($data->percent * 100) . '%';?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php echo $renderJS;?>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,51 +1,51 @@
|
||||
<?php
|
||||
/**
|
||||
* The resolve file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' target='hiddenwin'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $bug->title;?></caption>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->resolution;?></td>
|
||||
<td><?php unset($lang->bug->resolutionList['tostory']); echo html::select('resolution', $lang->bug->resolutionList, '', 'class=select-3 onchange=setDuplicate(this.value)');?></td>
|
||||
</tr>
|
||||
<tr id='duplicateBugBox' style='display:none'>
|
||||
<td class='rowhead'><?php echo $lang->bug->duplicateBug;?></td>
|
||||
<td><?php echo html::input('duplicateBug', '', 'class=text-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->resolvedBuild;?></td>
|
||||
<td><?php echo html::select('resolvedBuild', $builds, '', 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->resolvedDate;?></td>
|
||||
<td><?php echo html::input('resolvedDate', helper::now(), "class='select-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->assignedTo;?></td>
|
||||
<td><?php echo html::select('assignedTo', $users, $bug->openedBy, 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->comment;?></td>
|
||||
<td><?php echo html::textarea('comment', '', "rows='6' class='area-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'>
|
||||
<?php echo html::submitButton();?>
|
||||
<input type='button' value='<?php echo $lang->bug->buttonToList;?>' class='button-s'
|
||||
onclick='location.href="<?php echo $this->session->bugList;?>"' />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The resolve file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' target='hiddenwin'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $bug->title;?></caption>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->resolution;?></td>
|
||||
<td><?php unset($lang->bug->resolutionList['tostory']); echo html::select('resolution', $lang->bug->resolutionList, '', 'class=select-3 onchange=setDuplicate(this.value)');?></td>
|
||||
</tr>
|
||||
<tr id='duplicateBugBox' style='display:none'>
|
||||
<td class='rowhead'><?php echo $lang->bug->duplicateBug;?></td>
|
||||
<td><?php echo html::input('duplicateBug', '', 'class=text-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->resolvedBuild;?></td>
|
||||
<td><?php echo html::select('resolvedBuild', $builds, '', 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->resolvedDate;?></td>
|
||||
<td><?php echo html::input('resolvedDate', helper::now(), "class='select-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->assignedTo;?></td>
|
||||
<td><?php echo html::select('assignedTo', $users, $bug->openedBy, 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->comment;?></td>
|
||||
<td><?php echo html::textarea('comment', '', "rows='6' class='area-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'>
|
||||
<?php echo html::submitButton();?>
|
||||
<input type='button' value='<?php echo $lang->bug->buttonToList;?>' class='button-s'
|
||||
onclick='location.href="<?php echo $this->session->bugList;?>"' />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,39 +1,39 @@
|
||||
<?php
|
||||
/**
|
||||
* The mail file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<table width='98%' align='center'>
|
||||
<tr class='header'>
|
||||
<td>
|
||||
BUG #<?php echo $bug->id . "=>$bug->assignedTo " . html::a(common::getSysURL() . $this->createLink('bug', 'view', "bugID=$bug->id"), $bug->title);?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendSteps;?></legend>
|
||||
<div class='content'>
|
||||
<?php
|
||||
if(strpos($bug->steps, 'src="data/upload'))
|
||||
{
|
||||
$bug->steps = str_replace('<img src="', '<img src="http://' . $this->server->http_host . $this->config->webRoot, $bug->steps);
|
||||
$bug->steps = str_replace('<img alt="" src="', '<img src="http://' . $this->server->http_host . $this->config->webRoot, $bug->steps);
|
||||
}
|
||||
echo $bug->steps;
|
||||
?>
|
||||
</div>
|
||||
</fieldset>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php include '../../common/view/mail.html.php';?></td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php
|
||||
/**
|
||||
* The mail file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<table width='98%' align='center'>
|
||||
<tr class='header'>
|
||||
<td>
|
||||
BUG #<?php echo $bug->id . "=>$bug->assignedTo " . html::a(common::getSysURL() . $this->createLink('bug', 'view', "bugID=$bug->id"), $bug->title);?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendSteps;?></legend>
|
||||
<div class='content'>
|
||||
<?php
|
||||
if(strpos($bug->steps, 'src="data/upload'))
|
||||
{
|
||||
$bug->steps = str_replace('<img src="', '<img src="http://' . $this->server->http_host . $this->config->webRoot, $bug->steps);
|
||||
$bug->steps = str_replace('<img alt="" src="', '<img src="http://' . $this->server->http_host . $this->config->webRoot, $bug->steps);
|
||||
}
|
||||
echo $bug->steps;
|
||||
?>
|
||||
</div>
|
||||
</fieldset>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php include '../../common/view/mail.html.php';?></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -1,286 +1,286 @@
|
||||
<?php
|
||||
/**
|
||||
* The view file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<div id='titlebar'>
|
||||
<div id='main' <?php if($bug->deleted) echo "class='deleted'";?>>BUG #<?php echo $bug->id . ' ' . $bug->title;?></div>
|
||||
<div>
|
||||
<?php
|
||||
$browseLink = $app->session->bugList != false ? $app->session->bugList : inlink('browse', "productID=$bug->product");
|
||||
$params = "bugID=$bug->id";
|
||||
$copyParams = "productID=$productID&extras=bugID=$bug->id";
|
||||
$convertParams = "productID=$productID&moduleID=0&from=bug&bugID=$bug->id";
|
||||
if(!$bug->deleted)
|
||||
{
|
||||
ob_start();
|
||||
common::printIcon('bug', 'confirmBug', $params, $bug);
|
||||
common::printIcon('bug', 'assignTo', $params);
|
||||
common::printIcon('bug', 'resolve', $params, $bug);
|
||||
common::printIcon('bug', 'close', $params, $bug);
|
||||
common::printIcon('bug', 'activate', $params, $bug);
|
||||
|
||||
common::printIcon('bug', 'toStory', "product=$bug->product&module=0&story=0&project=0&bugID=$bug->id", $bug, 'button', 'toStory');
|
||||
common::printIcon('bug', 'createCase', $convertParams, '', 'button', 'createCase');
|
||||
|
||||
common::printDivider();
|
||||
common::printIcon('bug', 'edit', $params);
|
||||
common::printCommentIcon('bug');
|
||||
common::printIcon('bug', 'create', $copyParams, '', 'button', 'copy');
|
||||
common::printIcon('bug', 'delete', $params, '', 'button', '', 'hiddenwin');
|
||||
|
||||
common::printDivider();
|
||||
common::printRPN($browseLink, $preAndNext);
|
||||
|
||||
$actionLinks = ob_get_contents();
|
||||
ob_end_clean();
|
||||
echo $actionLinks;
|
||||
}
|
||||
else
|
||||
{
|
||||
common::printRPN($browseLink);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table class='cont-rt5'>
|
||||
<tr valign='top'>
|
||||
<td>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendSteps;?></legend>
|
||||
<div class='content'><?php echo str_replace('<p>[', '<p class="stepTitle">[', $bug->steps);?></div>
|
||||
</fieldset>
|
||||
<?php echo $this->fetch('file', 'printFiles', array('files' => $bug->files, 'fieldset' => 'true'));?>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
<div class='a-center actionlink'><?php if(!$bug->deleted) echo $actionLinks;?></div>
|
||||
<div id='comment' class='hidden'>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->comment;?></legend>
|
||||
<form method='post' action='<?php echo inlink('edit', "bugID=$bug->id&comment=true")?>'>
|
||||
<table align='center' class='table-1'>
|
||||
<tr><td><?php echo html::textarea('comment', '',"rows='5' class='w-p100'");?></td></tr>
|
||||
<tr><td><?php echo html::submitButton() . html::resetButton();?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
</fieldset>
|
||||
</div>
|
||||
</td>
|
||||
<td class='divider'></td>
|
||||
<td class='side'>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendBasicInfo;?></legend>
|
||||
<table class='table-1 a-left'>
|
||||
<tr valign='middle'>
|
||||
<th class='rowhead'><?php echo $lang->bug->product;?></th>
|
||||
<td><?php if(!common::printLink('bug', 'browse', "productID=$bug->product", $productName)) echo $productName;?>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->module;?></th>
|
||||
<td>
|
||||
<?php
|
||||
if(empty($modulePath))
|
||||
{
|
||||
echo "/";
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach($modulePath as $key => $module)
|
||||
{
|
||||
if(!common::printLink('bug', 'browse', "productID=$bug->product&browseType=byModule¶m=$module->id", $module->name)) echo $module->name;
|
||||
if(isset($modulePath[$key + 1])) echo $lang->arrow;
|
||||
}
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->type;?></td>
|
||||
<td><?php if(isset($lang->bug->typeList[$bug->type])) echo $lang->bug->typeList[$bug->type]; else echo $bug->type;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->severity;?></td>
|
||||
<td><strong><?php echo $lang->bug->severityList[$bug->severity];?></strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->pri;?></td>
|
||||
<td><strong><?php echo $lang->bug->priList[$bug->pri];?></strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->status;?></td>
|
||||
<td><strong><?php echo $lang->bug->statusList[$bug->status];?></strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->activatedCount;?></td>
|
||||
<td><?php echo $bug->activatedCount;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->confirmed;?></td>
|
||||
<td><?php echo $lang->bug->confirmedList[$bug->confirmed];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->lblAssignedTo;?></td>
|
||||
<td><?php if($bug->assignedTo) echo $users[$bug->assignedTo] . $lang->at . $bug->assignedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->os;?></td>
|
||||
<td><?php echo $lang->bug->osList[$bug->os];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->browser;?></td>
|
||||
<td><?php echo $lang->bug->browserList[$bug->browser];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->keywords;?></td>
|
||||
<td><?php echo $bug->keywords;?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->case;?></legend>
|
||||
<table class='table-1 a-left'>
|
||||
<tr>
|
||||
<td class='rowhead w-p20'><?php echo $lang->bug->fromCase;?></td>
|
||||
<td><?php if($bug->case) echo html::a($this->createLink('case', 'view', "caseID=$bug->case"), $bug->caseTitle);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" class='rowhead w-p20'><?php echo $lang->bug->toCase;?></td>
|
||||
<td>
|
||||
<?php
|
||||
foreach($bug->toCases as $caseID => $case)
|
||||
{
|
||||
echo '<p style="margin-bottom:0;">' . html::a($this->createLink('testcase', 'view', "caseID=$caseID"), $case) . '</p>';
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendLife;?></legend>
|
||||
<table class='table-1 a-left fixed'>
|
||||
<tr>
|
||||
<th class='rowhead w-p20'><?php echo $lang->bug->openedBy;?></th>
|
||||
<td> <?php echo $users[$bug->openedBy] . $lang->at . $bug->openedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->openedBuild;?></th>
|
||||
<td>
|
||||
<?php
|
||||
if($bug->openedBuild)
|
||||
{
|
||||
$openedBuilds = explode(',', $bug->openedBuild);
|
||||
foreach($openedBuilds as $openedBuild) isset($builds[$openedBuild]) ? print($builds[$openedBuild] . '<br />') : print($openedBuild . '<br />');
|
||||
}
|
||||
else
|
||||
{
|
||||
echo $bug->openedBuild;
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->lblResolved;?></th>
|
||||
<td><?php if($bug->resolvedBy) echo $users[$bug->resolvedBy] . $lang->at . $bug->resolvedDate;?>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->resolvedBuild;?></th>
|
||||
<td><?php if(isset($builds[$bug->resolvedBuild])) echo $builds[$bug->resolvedBuild]; else echo $bug->resolvedBuild;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->resolution;?></th>
|
||||
<td>
|
||||
<?php
|
||||
echo $lang->bug->resolutionList[$bug->resolution];
|
||||
if(isset($bug->duplicateBugTitle)) echo " #$bug->duplicateBug:" . html::a($this->createLink('bug', 'view', "bugID=$bug->duplicateBug"), $bug->duplicateBugTitle);
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->closedBy;?></th>
|
||||
<td><?php if($bug->closedBy) echo $users[$bug->closedBy] . $lang->at . $bug->closedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->lblLastEdited;?></th>
|
||||
<td><?php if($bug->lastEditedBy) echo $users[$bug->lastEditedBy] . $lang->at . $bug->lastEditedDate?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendPrjStoryTask;?></legend>
|
||||
<table class='table-1 a-left fixed'>
|
||||
<tr>
|
||||
<td class='rowhead w-p20'><?php echo $lang->bug->project;?></td>
|
||||
<td><?php if($bug->project) echo html::a($this->createLink('project', 'browse', "projectid=$bug->project"), $bug->projectName);?></td>
|
||||
</tr>
|
||||
<tr class='nofixed'>
|
||||
<td class='rowhead'><?php echo $lang->bug->story;?></td>
|
||||
<td>
|
||||
<?php
|
||||
if($bug->story) echo html::a($this->createLink('story', 'view', "storyID=$bug->story"), "#$bug->story $bug->storyTitle");
|
||||
if($bug->storyStatus == 'active' and $bug->latestStoryVersion > $bug->storyVersion)
|
||||
{
|
||||
echo "(<span class='warning'>{$lang->story->changed}</span> ";
|
||||
echo html::a($this->createLink('bug', 'confirmStoryChange', "bugID=$bug->id"), $lang->confirm, 'hiddenwin');
|
||||
echo ")";
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->task;?></td>
|
||||
<td><?php if($bug->task) echo html::a($this->createLink('task', 'view', "taskID=$bug->task"), $bug->taskName);?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendMisc;?></legend>
|
||||
<table class='table-1 a-left fixed'>
|
||||
<tr>
|
||||
<td class='rowhead w-p20'><?php echo $lang->bug->mailto;?></td>
|
||||
<td><?php $mailto = explode(',', str_replace(' ', '', $bug->mailto)); foreach($mailto as $account) echo ' ' . $users[$account]; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->linkBug;?></td>
|
||||
<td>
|
||||
<?php
|
||||
if(isset($bug->linkBugTitles))
|
||||
{
|
||||
foreach($bug->linkBugTitles as $linkBugID => $linkBugTitle)
|
||||
{
|
||||
echo html::a($this->createLink('bug', 'view', "bugID=$linkBugID"), "#$linkBugID $linkBugTitle", '_blank') . '<br />';
|
||||
}
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->case;?></td>
|
||||
<td><?php if(isset($bug->caseTitle)) echo html::a($this->createLink('testcase', 'view', "caseID=$bug->case"), "#$bug->case $bug->caseTitle", '_blank');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->toStory;?></td>
|
||||
<td><?php if($bug->toStory != 0) echo html::a($this->createLink('story', 'view', "storyID=$bug->toStory"), "#$bug->toStory $bug->toStoryTitle", '_blank');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->toTask;?></td>
|
||||
<td><?php if($bug->toTask != 0) echo html::a($this->createLink('task', 'view', "taskID=$bug->toTask"), "#$bug->toTask $bug->toTaskTitle", '_blank');?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/syntaxhighlighter.html.php';?>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The view file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<div id='titlebar'>
|
||||
<div id='main' <?php if($bug->deleted) echo "class='deleted'";?>>BUG #<?php echo $bug->id . ' ' . $bug->title;?></div>
|
||||
<div>
|
||||
<?php
|
||||
$browseLink = $app->session->bugList != false ? $app->session->bugList : inlink('browse', "productID=$bug->product");
|
||||
$params = "bugID=$bug->id";
|
||||
$copyParams = "productID=$productID&extras=bugID=$bug->id";
|
||||
$convertParams = "productID=$productID&moduleID=0&from=bug&bugID=$bug->id";
|
||||
if(!$bug->deleted)
|
||||
{
|
||||
ob_start();
|
||||
common::printIcon('bug', 'confirmBug', $params, $bug);
|
||||
common::printIcon('bug', 'assignTo', $params);
|
||||
common::printIcon('bug', 'resolve', $params, $bug);
|
||||
common::printIcon('bug', 'close', $params, $bug);
|
||||
common::printIcon('bug', 'activate', $params, $bug);
|
||||
|
||||
common::printIcon('bug', 'toStory', "product=$bug->product&module=0&story=0&project=0&bugID=$bug->id", $bug, 'button', 'toStory');
|
||||
common::printIcon('bug', 'createCase', $convertParams, '', 'button', 'createCase');
|
||||
|
||||
common::printDivider();
|
||||
common::printIcon('bug', 'edit', $params);
|
||||
common::printCommentIcon('bug');
|
||||
common::printIcon('bug', 'create', $copyParams, '', 'button', 'copy');
|
||||
common::printIcon('bug', 'delete', $params, '', 'button', '', 'hiddenwin');
|
||||
|
||||
common::printDivider();
|
||||
common::printRPN($browseLink, $preAndNext);
|
||||
|
||||
$actionLinks = ob_get_contents();
|
||||
ob_end_clean();
|
||||
echo $actionLinks;
|
||||
}
|
||||
else
|
||||
{
|
||||
common::printRPN($browseLink);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table class='cont-rt5'>
|
||||
<tr valign='top'>
|
||||
<td>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendSteps;?></legend>
|
||||
<div class='content'><?php echo str_replace('<p>[', '<p class="stepTitle">[', $bug->steps);?></div>
|
||||
</fieldset>
|
||||
<?php echo $this->fetch('file', 'printFiles', array('files' => $bug->files, 'fieldset' => 'true'));?>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
<div class='a-center actionlink'><?php if(!$bug->deleted) echo $actionLinks;?></div>
|
||||
<div id='comment' class='hidden'>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->comment;?></legend>
|
||||
<form method='post' action='<?php echo inlink('edit', "bugID=$bug->id&comment=true")?>'>
|
||||
<table align='center' class='table-1'>
|
||||
<tr><td><?php echo html::textarea('comment', '',"rows='5' class='w-p100'");?></td></tr>
|
||||
<tr><td><?php echo html::submitButton() . html::resetButton();?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
</fieldset>
|
||||
</div>
|
||||
</td>
|
||||
<td class='divider'></td>
|
||||
<td class='side'>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendBasicInfo;?></legend>
|
||||
<table class='table-1 a-left'>
|
||||
<tr valign='middle'>
|
||||
<th class='rowhead'><?php echo $lang->bug->product;?></th>
|
||||
<td><?php if(!common::printLink('bug', 'browse', "productID=$bug->product", $productName)) echo $productName;?>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->module;?></th>
|
||||
<td>
|
||||
<?php
|
||||
if(empty($modulePath))
|
||||
{
|
||||
echo "/";
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach($modulePath as $key => $module)
|
||||
{
|
||||
if(!common::printLink('bug', 'browse', "productID=$bug->product&browseType=byModule¶m=$module->id", $module->name)) echo $module->name;
|
||||
if(isset($modulePath[$key + 1])) echo $lang->arrow;
|
||||
}
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->type;?></td>
|
||||
<td><?php if(isset($lang->bug->typeList[$bug->type])) echo $lang->bug->typeList[$bug->type]; else echo $bug->type;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->severity;?></td>
|
||||
<td><strong><?php echo $lang->bug->severityList[$bug->severity];?></strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->pri;?></td>
|
||||
<td><strong><?php echo $lang->bug->priList[$bug->pri];?></strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->status;?></td>
|
||||
<td><strong><?php echo $lang->bug->statusList[$bug->status];?></strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->activatedCount;?></td>
|
||||
<td><?php echo $bug->activatedCount;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->confirmed;?></td>
|
||||
<td><?php echo $lang->bug->confirmedList[$bug->confirmed];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->lblAssignedTo;?></td>
|
||||
<td><?php if($bug->assignedTo) echo $users[$bug->assignedTo] . $lang->at . $bug->assignedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->os;?></td>
|
||||
<td><?php echo $lang->bug->osList[$bug->os];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->browser;?></td>
|
||||
<td><?php echo $lang->bug->browserList[$bug->browser];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->keywords;?></td>
|
||||
<td><?php echo $bug->keywords;?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->case;?></legend>
|
||||
<table class='table-1 a-left'>
|
||||
<tr>
|
||||
<td class='rowhead w-p20'><?php echo $lang->bug->fromCase;?></td>
|
||||
<td><?php if($bug->case) echo html::a($this->createLink('case', 'view', "caseID=$bug->case"), $bug->caseTitle);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" class='rowhead w-p20'><?php echo $lang->bug->toCase;?></td>
|
||||
<td>
|
||||
<?php
|
||||
foreach($bug->toCases as $caseID => $case)
|
||||
{
|
||||
echo '<p style="margin-bottom:0;">' . html::a($this->createLink('testcase', 'view', "caseID=$caseID"), $case) . '</p>';
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendLife;?></legend>
|
||||
<table class='table-1 a-left fixed'>
|
||||
<tr>
|
||||
<th class='rowhead w-p20'><?php echo $lang->bug->openedBy;?></th>
|
||||
<td> <?php echo $users[$bug->openedBy] . $lang->at . $bug->openedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->openedBuild;?></th>
|
||||
<td>
|
||||
<?php
|
||||
if($bug->openedBuild)
|
||||
{
|
||||
$openedBuilds = explode(',', $bug->openedBuild);
|
||||
foreach($openedBuilds as $openedBuild) isset($builds[$openedBuild]) ? print($builds[$openedBuild] . '<br />') : print($openedBuild . '<br />');
|
||||
}
|
||||
else
|
||||
{
|
||||
echo $bug->openedBuild;
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->lblResolved;?></th>
|
||||
<td><?php if($bug->resolvedBy) echo $users[$bug->resolvedBy] . $lang->at . $bug->resolvedDate;?>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->resolvedBuild;?></th>
|
||||
<td><?php if(isset($builds[$bug->resolvedBuild])) echo $builds[$bug->resolvedBuild]; else echo $bug->resolvedBuild;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->resolution;?></th>
|
||||
<td>
|
||||
<?php
|
||||
echo $lang->bug->resolutionList[$bug->resolution];
|
||||
if(isset($bug->duplicateBugTitle)) echo " #$bug->duplicateBug:" . html::a($this->createLink('bug', 'view', "bugID=$bug->duplicateBug"), $bug->duplicateBugTitle);
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->closedBy;?></th>
|
||||
<td><?php if($bug->closedBy) echo $users[$bug->closedBy] . $lang->at . $bug->closedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->lblLastEdited;?></th>
|
||||
<td><?php if($bug->lastEditedBy) echo $users[$bug->lastEditedBy] . $lang->at . $bug->lastEditedDate?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendPrjStoryTask;?></legend>
|
||||
<table class='table-1 a-left fixed'>
|
||||
<tr>
|
||||
<td class='rowhead w-p20'><?php echo $lang->bug->project;?></td>
|
||||
<td><?php if($bug->project) echo html::a($this->createLink('project', 'browse', "projectid=$bug->project"), $bug->projectName);?></td>
|
||||
</tr>
|
||||
<tr class='nofixed'>
|
||||
<td class='rowhead'><?php echo $lang->bug->story;?></td>
|
||||
<td>
|
||||
<?php
|
||||
if($bug->story) echo html::a($this->createLink('story', 'view', "storyID=$bug->story"), "#$bug->story $bug->storyTitle");
|
||||
if($bug->storyStatus == 'active' and $bug->latestStoryVersion > $bug->storyVersion)
|
||||
{
|
||||
echo "(<span class='warning'>{$lang->story->changed}</span> ";
|
||||
echo html::a($this->createLink('bug', 'confirmStoryChange', "bugID=$bug->id"), $lang->confirm, 'hiddenwin');
|
||||
echo ")";
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->task;?></td>
|
||||
<td><?php if($bug->task) echo html::a($this->createLink('task', 'view', "taskID=$bug->task"), $bug->taskName);?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendMisc;?></legend>
|
||||
<table class='table-1 a-left fixed'>
|
||||
<tr>
|
||||
<td class='rowhead w-p20'><?php echo $lang->bug->mailto;?></td>
|
||||
<td><?php $mailto = explode(',', str_replace(' ', '', $bug->mailto)); foreach($mailto as $account) echo ' ' . $users[$account]; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->linkBug;?></td>
|
||||
<td>
|
||||
<?php
|
||||
if(isset($bug->linkBugTitles))
|
||||
{
|
||||
foreach($bug->linkBugTitles as $linkBugID => $linkBugTitle)
|
||||
{
|
||||
echo html::a($this->createLink('bug', 'view', "bugID=$linkBugID"), "#$linkBugID $linkBugTitle", '_blank') . '<br />';
|
||||
}
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->case;?></td>
|
||||
<td><?php if(isset($bug->caseTitle)) echo html::a($this->createLink('testcase', 'view', "caseID=$bug->case"), "#$bug->case $bug->caseTitle", '_blank');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->toStory;?></td>
|
||||
<td><?php if($bug->toStory != 0) echo html::a($this->createLink('story', 'view', "storyID=$bug->toStory"), "#$bug->toStory $bug->toStoryTitle", '_blank');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->toTask;?></td>
|
||||
<td><?php if($bug->toTask != 0) echo html::a($this->createLink('task', 'view', "taskID=$bug->toTask"), "#$bug->toTask $bug->toTaskTitle", '_blank');?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/syntaxhighlighter.html.php';?>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,192 +1,192 @@
|
||||
<?php
|
||||
/**
|
||||
* The control file of build module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package build
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class build extends control
|
||||
{
|
||||
/**
|
||||
* Create a buld.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create($projectID)
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$buildID = $this->build->create($projectID);
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
$this->loadModel('action')->create('build', $buildID, 'opened');
|
||||
die(js::locate($this->createLink('project', 'build', "project=$projectID"), 'parent'));
|
||||
}
|
||||
|
||||
/* Load these models. */
|
||||
$this->loadModel('story');
|
||||
$this->loadModel('bug');
|
||||
$this->loadModel('task');
|
||||
$this->loadModel('project');
|
||||
$this->loadModel('user');
|
||||
|
||||
/* Set menu. */
|
||||
$this->project->setMenu($this->project->getPairs(), $projectID);
|
||||
|
||||
/* Get stories and bugs. */
|
||||
$orderBy = 'status_asc, stage_asc, id_desc';
|
||||
$stories = $this->story->getProjectStories($projectID, $orderBy);
|
||||
$bugs = $this->bug->getProjectBugs($projectID);
|
||||
|
||||
/* Assign. */
|
||||
$this->view->header->title = $this->lang->build->create;
|
||||
$this->view->products = $this->project->getProducts($projectID);
|
||||
$this->view->projectID = $projectID;
|
||||
$this->view->users = $this->user->getPairs();
|
||||
$this->view->stories = $stories;
|
||||
$this->view->bugs = $bugs;
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit a build.
|
||||
*
|
||||
* @param int $buildID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function edit($buildID)
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$changes = $this->build->update($buildID);
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
if($changes)
|
||||
{
|
||||
$actionID = $this->loadModel('action')->create('build', $buildID, 'edited');
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
}
|
||||
die(js::locate(inlink('view', "buildID=$buildID"), 'parent'));
|
||||
}
|
||||
|
||||
$this->loadModel('story');
|
||||
$this->loadModel('bug');
|
||||
$this->loadModel('project');
|
||||
|
||||
/* Set menu. */
|
||||
$build = $this->build->getById((int)$buildID);
|
||||
$this->project->setMenu($this->project->getPairs(), $build->project);
|
||||
|
||||
/* Get stories and bugs. */
|
||||
$orderBy = 'status_asc, stage_asc, id_desc';
|
||||
$stories = $this->story->getProjectStories($build->project, $orderBy);
|
||||
$bugs = $this->bug->getProjectBugs($build->project);
|
||||
|
||||
/* Assign. */
|
||||
$this->view->header->title = $this->lang->build->edit;
|
||||
$this->view->position[] = $this->lang->build->edit;
|
||||
$this->view->products = $this->project->getProducts($build->project);
|
||||
$this->view->users = $this->loadModel('user')->getPairs();
|
||||
$this->view->build = $build;
|
||||
$this->view->stories = $stories;
|
||||
$this->view->bugs = $bugs;
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* View a build.
|
||||
*
|
||||
* @param int $buildID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function view($buildID)
|
||||
{
|
||||
$this->loadModel('story');
|
||||
$this->loadModel('bug');
|
||||
|
||||
/* Set menu. */
|
||||
$build = $this->build->getById((int)$buildID, true);
|
||||
if(!$build) die(js::error($this->lang->notFound) . js::locate('back'));
|
||||
|
||||
$stories = $this->dao->select('*')->from(TABLE_STORY)->where('id')->in($build->stories)->fetchAll();
|
||||
$this->loadModel('common')->saveQueryCondition($this->dao->get(), 'story');
|
||||
|
||||
$bugs = $this->dao->select('*')->from(TABLE_BUG)->where('id')->in($build->bugs)->fetchAll();
|
||||
$this->loadModel('common')->saveQueryCondition($this->dao->get(), 'bug');
|
||||
|
||||
$this->loadModel('project')->setMenu($this->project->getPairs(), $build->project);
|
||||
|
||||
/* Assign. */
|
||||
$projects = $this->project->getPairs();
|
||||
$this->view->header->title = "BUILD #$build->id $build->name - " . $projects[$build->project];
|
||||
$this->view->position[] = $this->lang->build->view;
|
||||
$this->view->products = $this->project->getProducts($build->project);
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noletter');
|
||||
$this->view->build = $build;
|
||||
$this->view->stories = $stories;
|
||||
$this->view->bugs = $bugs;
|
||||
$this->view->actions = $this->loadModel('action')->getList('build', $buildID);
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a build.
|
||||
*
|
||||
* @param int $buildID
|
||||
* @param string $confirm yes|noe
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function delete($buildID, $confirm = 'no')
|
||||
{
|
||||
if($confirm == 'no')
|
||||
{
|
||||
die(js::confirm($this->lang->build->confirmDelete, $this->createLink('build', 'delete', "buildID=$buildID&confirm=yes")));
|
||||
}
|
||||
else
|
||||
{
|
||||
$build = $this->build->getById($buildID);
|
||||
$this->build->delete(TABLE_BUILD, $buildID);
|
||||
die(js::locate($this->createLink('project', 'build', "projectID=$build->project"), 'parent'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* AJAX: get builds of a product in html select.
|
||||
*
|
||||
* @param int $productID
|
||||
* @param string $varName the name of the select object to create
|
||||
* @param string $build build to selected
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function ajaxGetProductBuilds($productID, $varName, $build = '')
|
||||
{
|
||||
if($varName == 'openedBuild') die(html::select($varName . '[]', $this->build->getProductBuildPairs($productID, 'noempty'), $build, 'size=4 class=select-3 multiple'));
|
||||
if($varName == 'resolvedBuild') die(html::select($varName, $this->build->getProductBuildPairs($productID, 'noempty'), $build, 'class=select-3'));
|
||||
}
|
||||
|
||||
/**
|
||||
* AJAX: get builds of a project in html select.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @param string $varName the name of the select object to create
|
||||
* @param string $build build to selected
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function ajaxGetProjectBuilds($projectID, $productID, $varName, $build = '')
|
||||
{
|
||||
if($varName == 'openedBuild') die(html::select($varName . '[]', $this->build->getProjectBuildPairs($projectID, $productID, 'noempty'), $build, 'size=4 class=select-3 multiple'));
|
||||
if($varName == 'resolvedBuild') die(html::select($varName, $this->build->getProjectBuildPairs($projectID, $productID, 'noempty'), $build, 'class=select-3'));
|
||||
if($varName == 'testTaskBuild') die(html::select('build', $this->build->getProjectBuildPairs($projectID, $productID, 'noempty'), $build, 'class=select-3'));
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The control file of build module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package build
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class build extends control
|
||||
{
|
||||
/**
|
||||
* Create a buld.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create($projectID)
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$buildID = $this->build->create($projectID);
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
$this->loadModel('action')->create('build', $buildID, 'opened');
|
||||
die(js::locate($this->createLink('project', 'build', "project=$projectID"), 'parent'));
|
||||
}
|
||||
|
||||
/* Load these models. */
|
||||
$this->loadModel('story');
|
||||
$this->loadModel('bug');
|
||||
$this->loadModel('task');
|
||||
$this->loadModel('project');
|
||||
$this->loadModel('user');
|
||||
|
||||
/* Set menu. */
|
||||
$this->project->setMenu($this->project->getPairs(), $projectID);
|
||||
|
||||
/* Get stories and bugs. */
|
||||
$orderBy = 'status_asc, stage_asc, id_desc';
|
||||
$stories = $this->story->getProjectStories($projectID, $orderBy);
|
||||
$bugs = $this->bug->getProjectBugs($projectID);
|
||||
|
||||
/* Assign. */
|
||||
$this->view->header->title = $this->lang->build->create;
|
||||
$this->view->products = $this->project->getProducts($projectID);
|
||||
$this->view->projectID = $projectID;
|
||||
$this->view->users = $this->user->getPairs();
|
||||
$this->view->stories = $stories;
|
||||
$this->view->bugs = $bugs;
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit a build.
|
||||
*
|
||||
* @param int $buildID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function edit($buildID)
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$changes = $this->build->update($buildID);
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
if($changes)
|
||||
{
|
||||
$actionID = $this->loadModel('action')->create('build', $buildID, 'edited');
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
}
|
||||
die(js::locate(inlink('view', "buildID=$buildID"), 'parent'));
|
||||
}
|
||||
|
||||
$this->loadModel('story');
|
||||
$this->loadModel('bug');
|
||||
$this->loadModel('project');
|
||||
|
||||
/* Set menu. */
|
||||
$build = $this->build->getById((int)$buildID);
|
||||
$this->project->setMenu($this->project->getPairs(), $build->project);
|
||||
|
||||
/* Get stories and bugs. */
|
||||
$orderBy = 'status_asc, stage_asc, id_desc';
|
||||
$stories = $this->story->getProjectStories($build->project, $orderBy);
|
||||
$bugs = $this->bug->getProjectBugs($build->project);
|
||||
|
||||
/* Assign. */
|
||||
$this->view->header->title = $this->lang->build->edit;
|
||||
$this->view->position[] = $this->lang->build->edit;
|
||||
$this->view->products = $this->project->getProducts($build->project);
|
||||
$this->view->users = $this->loadModel('user')->getPairs();
|
||||
$this->view->build = $build;
|
||||
$this->view->stories = $stories;
|
||||
$this->view->bugs = $bugs;
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* View a build.
|
||||
*
|
||||
* @param int $buildID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function view($buildID)
|
||||
{
|
||||
$this->loadModel('story');
|
||||
$this->loadModel('bug');
|
||||
|
||||
/* Set menu. */
|
||||
$build = $this->build->getById((int)$buildID, true);
|
||||
if(!$build) die(js::error($this->lang->notFound) . js::locate('back'));
|
||||
|
||||
$stories = $this->dao->select('*')->from(TABLE_STORY)->where('id')->in($build->stories)->fetchAll();
|
||||
$this->loadModel('common')->saveQueryCondition($this->dao->get(), 'story');
|
||||
|
||||
$bugs = $this->dao->select('*')->from(TABLE_BUG)->where('id')->in($build->bugs)->fetchAll();
|
||||
$this->loadModel('common')->saveQueryCondition($this->dao->get(), 'bug');
|
||||
|
||||
$this->loadModel('project')->setMenu($this->project->getPairs(), $build->project);
|
||||
|
||||
/* Assign. */
|
||||
$projects = $this->project->getPairs();
|
||||
$this->view->header->title = "BUILD #$build->id $build->name - " . $projects[$build->project];
|
||||
$this->view->position[] = $this->lang->build->view;
|
||||
$this->view->products = $this->project->getProducts($build->project);
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noletter');
|
||||
$this->view->build = $build;
|
||||
$this->view->stories = $stories;
|
||||
$this->view->bugs = $bugs;
|
||||
$this->view->actions = $this->loadModel('action')->getList('build', $buildID);
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a build.
|
||||
*
|
||||
* @param int $buildID
|
||||
* @param string $confirm yes|noe
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function delete($buildID, $confirm = 'no')
|
||||
{
|
||||
if($confirm == 'no')
|
||||
{
|
||||
die(js::confirm($this->lang->build->confirmDelete, $this->createLink('build', 'delete', "buildID=$buildID&confirm=yes")));
|
||||
}
|
||||
else
|
||||
{
|
||||
$build = $this->build->getById($buildID);
|
||||
$this->build->delete(TABLE_BUILD, $buildID);
|
||||
die(js::locate($this->createLink('project', 'build', "projectID=$build->project"), 'parent'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* AJAX: get builds of a product in html select.
|
||||
*
|
||||
* @param int $productID
|
||||
* @param string $varName the name of the select object to create
|
||||
* @param string $build build to selected
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function ajaxGetProductBuilds($productID, $varName, $build = '')
|
||||
{
|
||||
if($varName == 'openedBuild') die(html::select($varName . '[]', $this->build->getProductBuildPairs($productID, 'noempty'), $build, 'size=4 class=select-3 multiple'));
|
||||
if($varName == 'resolvedBuild') die(html::select($varName, $this->build->getProductBuildPairs($productID, 'noempty'), $build, 'class=select-3'));
|
||||
}
|
||||
|
||||
/**
|
||||
* AJAX: get builds of a project in html select.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @param string $varName the name of the select object to create
|
||||
* @param string $build build to selected
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function ajaxGetProjectBuilds($projectID, $productID, $varName, $build = '')
|
||||
{
|
||||
if($varName == 'openedBuild') die(html::select($varName . '[]', $this->build->getProjectBuildPairs($projectID, $productID, 'noempty'), $build, 'size=4 class=select-3 multiple'));
|
||||
if($varName == 'resolvedBuild') die(html::select($varName, $this->build->getProjectBuildPairs($projectID, $productID, 'noempty'), $build, 'class=select-3'));
|
||||
if($varName == 'testTaskBuild') die(html::select('build', $this->build->getProjectBuildPairs($projectID, $productID, 'noempty'), $build, 'class=select-3'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,42 +1,42 @@
|
||||
<?php
|
||||
/**
|
||||
* The build module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package build
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->build->common = 'Build';
|
||||
$lang->build->create = "Create";
|
||||
$lang->build->edit = "Edit";
|
||||
$lang->build->delete = "Delete";
|
||||
$lang->build->view = "Info";
|
||||
$lang->build->ajaxGetProductBuilds = 'API:Product builds';
|
||||
$lang->build->ajaxGetProjectBuilds = 'API:Project builds';
|
||||
|
||||
$lang->build->confirmDelete = "Are sure to delete this build?";
|
||||
|
||||
$lang->build->basicInfo='Basic Info';
|
||||
|
||||
$lang->build->id = 'ID';
|
||||
$lang->build->product = 'Product';
|
||||
$lang->build->project = 'Project';
|
||||
$lang->build->name = 'Name';
|
||||
$lang->build->date = 'Build date';
|
||||
$lang->build->builder = 'Builder';
|
||||
$lang->build->scmPath = 'Source code path';
|
||||
$lang->build->filePath = 'Package file path';
|
||||
$lang->build->desc = 'Desc';
|
||||
$lang->build->linkStoriesAndBugs = 'stories and bugs';
|
||||
$lang->build->linkStories = 'Stories';
|
||||
$lang->build->linkBugs = 'Bugs';
|
||||
$lang->build->stories = 'Linked stories';
|
||||
$lang->build->bugs = 'Linked bugs';
|
||||
|
||||
$lang->build->finishStories = 'The total demand for a complete %s';
|
||||
$lang->build->resolvedBugs = 'The total solution of bug%s';
|
||||
|
||||
$lang->build->notice = "Please create a build in project view's build page.";
|
||||
<?php
|
||||
/**
|
||||
* The build module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package build
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->build->common = 'Build';
|
||||
$lang->build->create = "Create";
|
||||
$lang->build->edit = "Edit";
|
||||
$lang->build->delete = "Delete";
|
||||
$lang->build->view = "Info";
|
||||
$lang->build->ajaxGetProductBuilds = 'API:Product builds';
|
||||
$lang->build->ajaxGetProjectBuilds = 'API:Project builds';
|
||||
|
||||
$lang->build->confirmDelete = "Are sure to delete this build?";
|
||||
|
||||
$lang->build->basicInfo='Basic Info';
|
||||
|
||||
$lang->build->id = 'ID';
|
||||
$lang->build->product = 'Product';
|
||||
$lang->build->project = 'Project';
|
||||
$lang->build->name = 'Name';
|
||||
$lang->build->date = 'Build date';
|
||||
$lang->build->builder = 'Builder';
|
||||
$lang->build->scmPath = 'Source code path';
|
||||
$lang->build->filePath = 'Package file path';
|
||||
$lang->build->desc = 'Desc';
|
||||
$lang->build->linkStoriesAndBugs = 'stories and bugs';
|
||||
$lang->build->linkStories = 'Stories';
|
||||
$lang->build->linkBugs = 'Bugs';
|
||||
$lang->build->stories = 'Linked stories';
|
||||
$lang->build->bugs = 'Linked bugs';
|
||||
|
||||
$lang->build->finishStories = 'The total demand for a complete %s';
|
||||
$lang->build->resolvedBugs = 'The total solution of bug%s';
|
||||
|
||||
$lang->build->notice = "Please create a build in project view's build page.";
|
||||
|
||||
@@ -1,42 +1,42 @@
|
||||
<?php
|
||||
/**
|
||||
* The build module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package build
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->build->common = "Build";
|
||||
$lang->build->create = "创建版本";
|
||||
$lang->build->edit = "编辑版本";
|
||||
$lang->build->delete = "删除版本";
|
||||
$lang->build->view = "版本详情";
|
||||
$lang->build->ajaxGetProductBuilds = '接口:产品版本列表';
|
||||
$lang->build->ajaxGetProjectBuilds = '接口:项目版本列表';
|
||||
|
||||
$lang->build->confirmDelete = "您确认删除该版本吗?";
|
||||
|
||||
$lang->build->basicInfo ='基本信息';
|
||||
|
||||
$lang->build->id = 'ID';
|
||||
$lang->build->product = '产品';
|
||||
$lang->build->project = '项目';
|
||||
$lang->build->name = '名称编号';
|
||||
$lang->build->date = '打包日期';
|
||||
$lang->build->builder = '构建者';
|
||||
$lang->build->scmPath = '源代码地址';
|
||||
$lang->build->filePath = '存储地址';
|
||||
$lang->build->desc = '描述';
|
||||
$lang->build->linkStoriesAndBugs = '关联需求和Bug';
|
||||
$lang->build->linkStories = '相关需求';
|
||||
$lang->build->linkBugs = '相关Bug';
|
||||
$lang->build->stories = '已关联需求';
|
||||
$lang->build->bugs = '已关联Bug';
|
||||
|
||||
$lang->build->finishStories = '本次共完成需求%s个';
|
||||
$lang->build->resolvedBugs = '本次共解决Bug%s个';
|
||||
|
||||
$lang->build->notice = '版本请到[项目视图]-[版本]创建。';
|
||||
<?php
|
||||
/**
|
||||
* The build module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package build
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->build->common = "Build";
|
||||
$lang->build->create = "创建版本";
|
||||
$lang->build->edit = "编辑版本";
|
||||
$lang->build->delete = "删除版本";
|
||||
$lang->build->view = "版本详情";
|
||||
$lang->build->ajaxGetProductBuilds = '接口:产品版本列表';
|
||||
$lang->build->ajaxGetProjectBuilds = '接口:项目版本列表';
|
||||
|
||||
$lang->build->confirmDelete = "您确认删除该版本吗?";
|
||||
|
||||
$lang->build->basicInfo ='基本信息';
|
||||
|
||||
$lang->build->id = 'ID';
|
||||
$lang->build->product = '产品';
|
||||
$lang->build->project = '项目';
|
||||
$lang->build->name = '名称编号';
|
||||
$lang->build->date = '打包日期';
|
||||
$lang->build->builder = '构建者';
|
||||
$lang->build->scmPath = '源代码地址';
|
||||
$lang->build->filePath = '存储地址';
|
||||
$lang->build->desc = '描述';
|
||||
$lang->build->linkStoriesAndBugs = '关联需求和Bug';
|
||||
$lang->build->linkStories = '相关需求';
|
||||
$lang->build->linkBugs = '相关Bug';
|
||||
$lang->build->stories = '已关联需求';
|
||||
$lang->build->bugs = '已关联Bug';
|
||||
|
||||
$lang->build->finishStories = '本次共完成需求%s个';
|
||||
$lang->build->resolvedBugs = '本次共解决Bug%s个';
|
||||
|
||||
$lang->build->notice = '版本请到[项目视图]-[版本]创建。';
|
||||
|
||||
@@ -1,42 +1,42 @@
|
||||
<?php
|
||||
/**
|
||||
* The build module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package build
|
||||
* @version $Id: zh-tw.php 3309 2012-07-03 02:53:55Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->build->common = "Build";
|
||||
$lang->build->create = "創建版本";
|
||||
$lang->build->edit = "編輯版本";
|
||||
$lang->build->delete = "刪除版本";
|
||||
$lang->build->view = "版本詳情";
|
||||
$lang->build->ajaxGetProductBuilds = '介面:產品版本列表';
|
||||
$lang->build->ajaxGetProjectBuilds = '介面:項目版本列表';
|
||||
|
||||
$lang->build->confirmDelete = "您確認刪除該版本嗎?";
|
||||
|
||||
$lang->build->basicInfo ='基本信息';
|
||||
|
||||
$lang->build->id = 'ID';
|
||||
$lang->build->product = '產品';
|
||||
$lang->build->project = '項目';
|
||||
$lang->build->name = '名稱編號';
|
||||
$lang->build->date = '打包日期';
|
||||
$lang->build->builder = '構建者';
|
||||
$lang->build->scmPath = '原始碼地址';
|
||||
$lang->build->filePath = '存儲地址';
|
||||
$lang->build->desc = '描述';
|
||||
$lang->build->linkStoriesAndBugs = '關聯需求和Bug';
|
||||
$lang->build->linkStories = '相關需求';
|
||||
$lang->build->linkBugs = '相關Bug';
|
||||
$lang->build->stories = '已關聯需求';
|
||||
$lang->build->bugs = '已關聯Bug';
|
||||
|
||||
$lang->build->finishStories = '本次共完成需求%s個';
|
||||
$lang->build->resolvedBugs = '本次共解決Bug%s個';
|
||||
|
||||
$lang->build->notice = '版本請到[項目視圖]-[版本]創建。';
|
||||
<?php
|
||||
/**
|
||||
* The build module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package build
|
||||
* @version $Id: zh-tw.php 3309 2012-07-03 02:53:55Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->build->common = "Build";
|
||||
$lang->build->create = "創建版本";
|
||||
$lang->build->edit = "編輯版本";
|
||||
$lang->build->delete = "刪除版本";
|
||||
$lang->build->view = "版本詳情";
|
||||
$lang->build->ajaxGetProductBuilds = '介面:產品版本列表';
|
||||
$lang->build->ajaxGetProjectBuilds = '介面:項目版本列表';
|
||||
|
||||
$lang->build->confirmDelete = "您確認刪除該版本嗎?";
|
||||
|
||||
$lang->build->basicInfo ='基本信息';
|
||||
|
||||
$lang->build->id = 'ID';
|
||||
$lang->build->product = '產品';
|
||||
$lang->build->project = '項目';
|
||||
$lang->build->name = '名稱編號';
|
||||
$lang->build->date = '打包日期';
|
||||
$lang->build->builder = '構建者';
|
||||
$lang->build->scmPath = '原始碼地址';
|
||||
$lang->build->filePath = '存儲地址';
|
||||
$lang->build->desc = '描述';
|
||||
$lang->build->linkStoriesAndBugs = '關聯需求和Bug';
|
||||
$lang->build->linkStories = '相關需求';
|
||||
$lang->build->linkBugs = '相關Bug';
|
||||
$lang->build->stories = '已關聯需求';
|
||||
$lang->build->bugs = '已關聯Bug';
|
||||
|
||||
$lang->build->finishStories = '本次共完成需求%s個';
|
||||
$lang->build->resolvedBugs = '本次共解決Bug%s個';
|
||||
|
||||
$lang->build->notice = '版本請到[項目視圖]-[版本]創建。';
|
||||
|
||||
@@ -1,154 +1,154 @@
|
||||
<?php
|
||||
/**
|
||||
* The model file of build module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package build
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
class buildModel extends model
|
||||
{
|
||||
/**
|
||||
* Get build info.
|
||||
*
|
||||
* @param int $buildID
|
||||
* @param bool $setImgSize
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getByID($buildID, $setImgSize = false)
|
||||
{
|
||||
$build = $this->dao->select('t1.*, t2.name as projectName, t3.name as productName')
|
||||
->from(TABLE_BUILD)->alias('t1')
|
||||
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id')
|
||||
->leftJoin(TABLE_PRODUCT)->alias('t3')->on('t1.product = t3.id')
|
||||
->where('t1.id')->eq((int)$buildID)
|
||||
->fetch();
|
||||
if(!$build) return false;
|
||||
if($setImgSize) $build->desc = $this->loadModel('file')->setImgSize($build->desc);
|
||||
return $build;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get builds of a project.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getProjectBuilds($projectID)
|
||||
{
|
||||
return $this->dao->select('t1.*, t2.name as projectName, t3.name as productName')
|
||||
->from(TABLE_BUILD)->alias('t1')
|
||||
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id')
|
||||
->leftJoin(TABLE_PRODUCT)->alias('t3')->on('t1.product = t3.id')
|
||||
->where('t1.project')->eq((int)$projectID)
|
||||
->andWhere('t1.deleted')->eq(0)
|
||||
->orderBy('t1.date DESC, t1.id desc')
|
||||
->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get builds of a project in pairs.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @param int $productID
|
||||
* @param string $params noempty|notrunk, can be a set of them
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getProjectBuildPairs($projectID, $productID, $params = '')
|
||||
{
|
||||
$sysBuilds = array();
|
||||
if(strpos($params, 'noempty') === false) $sysBuilds = array('' => '');
|
||||
if(strpos($params, 'notrunk') === false) $sysBuilds = $sysBuilds + array('trunk' => 'Trunk');
|
||||
|
||||
$builds = $this->dao->select('id,name')->from(TABLE_BUILD)
|
||||
->where('project')->eq((int)$projectID)
|
||||
->beginIF($productID)->andWhere('product')->eq((int)$productID)->fi()
|
||||
->andWhere('deleted')->eq(0)
|
||||
->orderBy('date desc, id desc')->fetchPairs();
|
||||
if(!$builds) return $sysBuilds;
|
||||
$releases = $this->dao->select('build,name')->from(TABLE_RELEASE)
|
||||
->where('build')->in(array_keys($builds))
|
||||
->andWhere('deleted')->eq(0)
|
||||
->fetchPairs();
|
||||
foreach($releases as $buildID => $releaseName) $builds[$buildID] = $releaseName;
|
||||
return $sysBuilds + $builds;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get builds of a product in pairs.
|
||||
*
|
||||
* @param mix $products int|array
|
||||
* @param string $params noempty|notrunk, can be a set of them
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function getProductBuildPairs($products, $params = '')
|
||||
{
|
||||
$sysBuilds = array();
|
||||
if(strpos($params, 'noempty') === false) $sysBuilds = array('' => '');
|
||||
if(strpos($params, 'notrunk') === false) $sysBuilds = $sysBuilds + array('trunk' => 'Trunk');
|
||||
|
||||
$builds = $this->dao->select('id,name')->from(TABLE_BUILD)
|
||||
->where('product')->in($products)
|
||||
->andWhere('deleted')->eq(0)
|
||||
->orderBy('date desc, id desc')->fetchPairs();
|
||||
if(!$builds) return $sysBuilds;
|
||||
return $sysBuilds + $builds;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a build
|
||||
*
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create($projectID)
|
||||
{
|
||||
$build->stories = '';
|
||||
$build->bugs = '';
|
||||
|
||||
$build = fixer::input('post')->stripTags('name')
|
||||
->join('stories', ',')
|
||||
->join('bugs', ',')
|
||||
->remove('allchecker')
|
||||
->add('project', (int)$projectID)->get();
|
||||
$this->dao->insert(TABLE_BUILD)->data($build)->autoCheck()->batchCheck($this->config->build->create->requiredFields, 'notempty')->check('name','unique')->exec();
|
||||
if(!dao::isError()) return $this->dao->lastInsertID();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a build.
|
||||
*
|
||||
* @param int $buildID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function update($buildID)
|
||||
{
|
||||
$oldBuild = $this->getByID($buildID);
|
||||
$build = fixer::input('post')
|
||||
->stripTags('name')
|
||||
->setDefault('stories', '')
|
||||
->setDefault('bugs', '')
|
||||
->join('stories', ',')
|
||||
->join('bugs', ',')
|
||||
->remove('allchecker')
|
||||
->get();
|
||||
$this->dao->update(TABLE_BUILD)->data($build)
|
||||
->autoCheck()
|
||||
->batchCheck($this->config->build->edit->requiredFields, 'notempty')
|
||||
->where('id')->eq((int)$buildID)
|
||||
->check('name','unique', "id != $buildID")
|
||||
->exec();
|
||||
if(!dao::isError()) return common::createChanges($oldBuild, $build);
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The model file of build module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package build
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
class buildModel extends model
|
||||
{
|
||||
/**
|
||||
* Get build info.
|
||||
*
|
||||
* @param int $buildID
|
||||
* @param bool $setImgSize
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getByID($buildID, $setImgSize = false)
|
||||
{
|
||||
$build = $this->dao->select('t1.*, t2.name as projectName, t3.name as productName')
|
||||
->from(TABLE_BUILD)->alias('t1')
|
||||
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id')
|
||||
->leftJoin(TABLE_PRODUCT)->alias('t3')->on('t1.product = t3.id')
|
||||
->where('t1.id')->eq((int)$buildID)
|
||||
->fetch();
|
||||
if(!$build) return false;
|
||||
if($setImgSize) $build->desc = $this->loadModel('file')->setImgSize($build->desc);
|
||||
return $build;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get builds of a project.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getProjectBuilds($projectID)
|
||||
{
|
||||
return $this->dao->select('t1.*, t2.name as projectName, t3.name as productName')
|
||||
->from(TABLE_BUILD)->alias('t1')
|
||||
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id')
|
||||
->leftJoin(TABLE_PRODUCT)->alias('t3')->on('t1.product = t3.id')
|
||||
->where('t1.project')->eq((int)$projectID)
|
||||
->andWhere('t1.deleted')->eq(0)
|
||||
->orderBy('t1.date DESC, t1.id desc')
|
||||
->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get builds of a project in pairs.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @param int $productID
|
||||
* @param string $params noempty|notrunk, can be a set of them
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getProjectBuildPairs($projectID, $productID, $params = '')
|
||||
{
|
||||
$sysBuilds = array();
|
||||
if(strpos($params, 'noempty') === false) $sysBuilds = array('' => '');
|
||||
if(strpos($params, 'notrunk') === false) $sysBuilds = $sysBuilds + array('trunk' => 'Trunk');
|
||||
|
||||
$builds = $this->dao->select('id,name')->from(TABLE_BUILD)
|
||||
->where('project')->eq((int)$projectID)
|
||||
->beginIF($productID)->andWhere('product')->eq((int)$productID)->fi()
|
||||
->andWhere('deleted')->eq(0)
|
||||
->orderBy('date desc, id desc')->fetchPairs();
|
||||
if(!$builds) return $sysBuilds;
|
||||
$releases = $this->dao->select('build,name')->from(TABLE_RELEASE)
|
||||
->where('build')->in(array_keys($builds))
|
||||
->andWhere('deleted')->eq(0)
|
||||
->fetchPairs();
|
||||
foreach($releases as $buildID => $releaseName) $builds[$buildID] = $releaseName;
|
||||
return $sysBuilds + $builds;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get builds of a product in pairs.
|
||||
*
|
||||
* @param mix $products int|array
|
||||
* @param string $params noempty|notrunk, can be a set of them
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function getProductBuildPairs($products, $params = '')
|
||||
{
|
||||
$sysBuilds = array();
|
||||
if(strpos($params, 'noempty') === false) $sysBuilds = array('' => '');
|
||||
if(strpos($params, 'notrunk') === false) $sysBuilds = $sysBuilds + array('trunk' => 'Trunk');
|
||||
|
||||
$builds = $this->dao->select('id,name')->from(TABLE_BUILD)
|
||||
->where('product')->in($products)
|
||||
->andWhere('deleted')->eq(0)
|
||||
->orderBy('date desc, id desc')->fetchPairs();
|
||||
if(!$builds) return $sysBuilds;
|
||||
return $sysBuilds + $builds;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a build
|
||||
*
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create($projectID)
|
||||
{
|
||||
$build->stories = '';
|
||||
$build->bugs = '';
|
||||
|
||||
$build = fixer::input('post')->stripTags('name')
|
||||
->join('stories', ',')
|
||||
->join('bugs', ',')
|
||||
->remove('allchecker')
|
||||
->add('project', (int)$projectID)->get();
|
||||
$this->dao->insert(TABLE_BUILD)->data($build)->autoCheck()->batchCheck($this->config->build->create->requiredFields, 'notempty')->check('name','unique')->exec();
|
||||
if(!dao::isError()) return $this->dao->lastInsertID();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a build.
|
||||
*
|
||||
* @param int $buildID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function update($buildID)
|
||||
{
|
||||
$oldBuild = $this->getByID($buildID);
|
||||
$build = fixer::input('post')
|
||||
->stripTags('name')
|
||||
->setDefault('stories', '')
|
||||
->setDefault('bugs', '')
|
||||
->join('stories', ',')
|
||||
->join('bugs', ',')
|
||||
->remove('allchecker')
|
||||
->get();
|
||||
$this->dao->update(TABLE_BUILD)->data($build)
|
||||
->autoCheck()
|
||||
->batchCheck($this->config->build->edit->requiredFields, 'notempty')
|
||||
->where('id')->eq((int)$buildID)
|
||||
->check('name','unique', "id != $buildID")
|
||||
->exec();
|
||||
if(!dao::isError()) return common::createChanges($oldBuild, $build);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,132 +1,132 @@
|
||||
<?php
|
||||
/**
|
||||
* The create view of build module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package build
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/datepicker.html.php';?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<form method='post' target='hiddenwin' id='dataform'>
|
||||
<table class='table-1 fixed'>
|
||||
<caption><?php echo $lang->build->create;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->product;?></th>
|
||||
<td><?php echo html::select('product', $products, '', "class='select-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->name;?></th>
|
||||
<td><?php echo html::input('name', '', "class='text-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->builder;?></th>
|
||||
<td><?php echo html::select('builder', $users, $app->user->account, 'class="select-3"');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->date;?></th>
|
||||
<td><?php echo html::input('date', helper::today(), "class='text-3 date'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->scmPath;?></th>
|
||||
<td><?php echo html::input('scmPath', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->filePath;?></th>
|
||||
<td><?php echo html::input('filePath', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->linkStoriesAndBugs;?></th>
|
||||
<td>
|
||||
<div class="w-p90">
|
||||
|
||||
<div class='half-left'>
|
||||
<table class='mainTable'>
|
||||
<tr style='border-bottom:none'>
|
||||
<td style='border-bottom:none; padding:0px'>
|
||||
<table class='headTable'>
|
||||
<caption><?php echo $lang->build->linkStories;?></caption>
|
||||
<tr>
|
||||
<th class='w-id a-left'> <?php echo html::selectAll('story', 'checkbox') . $lang->idAB;?></th>
|
||||
<th><?php echo $lang->story->title;?></th>
|
||||
<th class='w-hour'><?php echo $lang->statusAB;?></th>
|
||||
<th class='w-100px'><?php echo $lang->story->stageAB;?></th>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style='border-bottom:none'>
|
||||
<td style='border-bottom:none; padding:0px'>
|
||||
<div class='contentDiv'>
|
||||
<table class='f-left table-1 fixed' id='story'>
|
||||
<?php foreach($stories as $key => $story):?>
|
||||
<?php
|
||||
$storyLink = $this->createLink('story', 'view', "storyID=$story->id");
|
||||
?>
|
||||
<tr class='a-center'>
|
||||
<td class='w-id a-left'>
|
||||
<input type='checkbox' name='stories[]' value="<?php echo $story->id;?>" <?php if($story->stage == 'developed' or $story->status == 'closed') echo 'checked';?>> <?php echo sprintf('%03d', $story->id);?>
|
||||
</td>
|
||||
<td class='a-left nobr'><?php echo html::a($storyLink,$story->title, '', "class='preview'");?></td>
|
||||
<td class='<?php echo $story->status;?> w-50px'><?php echo $lang->story->statusList[$story->status];?></td>
|
||||
<td class='w-80px'><?php echo $lang->story->stageList[$story->stage];?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</table>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class='half-right'>
|
||||
<table class='mainTable'>
|
||||
<tr style='border-bottom:none'>
|
||||
<td style='border-bottom:none; padding:0px'>
|
||||
<table class='headTable'>
|
||||
<caption><?php echo $lang->build->linkBugs;?></caption>
|
||||
<tr>
|
||||
<th class='w-id a-left'><?php echo html::selectAll('bug', 'checkbox') . $lang->idAB;?></th>
|
||||
<th><?php echo $lang->bug->title;?></th>
|
||||
<th class='w-100px'><?php echo $lang->bug->status;?></th>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style='border-bottom:none'>
|
||||
<td style='border-bottom:none; padding:0px'>
|
||||
<div class='contentDiv'>
|
||||
<table class='f-left table-1 fixed' id='bug'>
|
||||
<?php foreach($bugs as $bug):?>
|
||||
<?php $bugLink = $this->createLink('bug', 'view', "bugID=$bug->id");?>
|
||||
<tr class='a-center'>
|
||||
<td class='w-id a-left'>
|
||||
<input type='checkbox' name='bugs[]' value="<?php echo $bug->id;?>" <?php if($bug->status == 'resolved' or $bug->status == 'closed') echo "checked";?>> <?php echo sprintf('%03d', $bug->id);?>
|
||||
</td>
|
||||
<td class='a-left nobr'><?php echo html::a($bugLink, $bug->title, '', "class='preview'");?></td>
|
||||
<td class='w-80px'><?php echo $lang->bug->statusList[$bug->status];?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</table>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->desc;?></th>
|
||||
<td><?php echo html::textarea('desc', '', "rows='10' class='area-1'");?></td>
|
||||
</tr>
|
||||
<tr><td colspan='2' class='a-center'><?php echo html::submitButton() . html::resetButton();?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The create view of build module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package build
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/datepicker.html.php';?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<form method='post' target='hiddenwin' id='dataform'>
|
||||
<table class='table-1 fixed'>
|
||||
<caption><?php echo $lang->build->create;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->product;?></th>
|
||||
<td><?php echo html::select('product', $products, '', "class='select-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->name;?></th>
|
||||
<td><?php echo html::input('name', '', "class='text-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->builder;?></th>
|
||||
<td><?php echo html::select('builder', $users, $app->user->account, 'class="select-3"');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->date;?></th>
|
||||
<td><?php echo html::input('date', helper::today(), "class='text-3 date'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->scmPath;?></th>
|
||||
<td><?php echo html::input('scmPath', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->filePath;?></th>
|
||||
<td><?php echo html::input('filePath', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->linkStoriesAndBugs;?></th>
|
||||
<td>
|
||||
<div class="w-p90">
|
||||
|
||||
<div class='half-left'>
|
||||
<table class='mainTable'>
|
||||
<tr style='border-bottom:none'>
|
||||
<td style='border-bottom:none; padding:0px'>
|
||||
<table class='headTable'>
|
||||
<caption><?php echo $lang->build->linkStories;?></caption>
|
||||
<tr>
|
||||
<th class='w-id a-left'> <?php echo html::selectAll('story', 'checkbox') . $lang->idAB;?></th>
|
||||
<th><?php echo $lang->story->title;?></th>
|
||||
<th class='w-hour'><?php echo $lang->statusAB;?></th>
|
||||
<th class='w-100px'><?php echo $lang->story->stageAB;?></th>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style='border-bottom:none'>
|
||||
<td style='border-bottom:none; padding:0px'>
|
||||
<div class='contentDiv'>
|
||||
<table class='f-left table-1 fixed' id='story'>
|
||||
<?php foreach($stories as $key => $story):?>
|
||||
<?php
|
||||
$storyLink = $this->createLink('story', 'view', "storyID=$story->id");
|
||||
?>
|
||||
<tr class='a-center'>
|
||||
<td class='w-id a-left'>
|
||||
<input type='checkbox' name='stories[]' value="<?php echo $story->id;?>" <?php if($story->stage == 'developed' or $story->status == 'closed') echo 'checked';?>> <?php echo sprintf('%03d', $story->id);?>
|
||||
</td>
|
||||
<td class='a-left nobr'><?php echo html::a($storyLink,$story->title, '', "class='preview'");?></td>
|
||||
<td class='<?php echo $story->status;?> w-50px'><?php echo $lang->story->statusList[$story->status];?></td>
|
||||
<td class='w-80px'><?php echo $lang->story->stageList[$story->stage];?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</table>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class='half-right'>
|
||||
<table class='mainTable'>
|
||||
<tr style='border-bottom:none'>
|
||||
<td style='border-bottom:none; padding:0px'>
|
||||
<table class='headTable'>
|
||||
<caption><?php echo $lang->build->linkBugs;?></caption>
|
||||
<tr>
|
||||
<th class='w-id a-left'><?php echo html::selectAll('bug', 'checkbox') . $lang->idAB;?></th>
|
||||
<th><?php echo $lang->bug->title;?></th>
|
||||
<th class='w-100px'><?php echo $lang->bug->status;?></th>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style='border-bottom:none'>
|
||||
<td style='border-bottom:none; padding:0px'>
|
||||
<div class='contentDiv'>
|
||||
<table class='f-left table-1 fixed' id='bug'>
|
||||
<?php foreach($bugs as $bug):?>
|
||||
<?php $bugLink = $this->createLink('bug', 'view', "bugID=$bug->id");?>
|
||||
<tr class='a-center'>
|
||||
<td class='w-id a-left'>
|
||||
<input type='checkbox' name='bugs[]' value="<?php echo $bug->id;?>" <?php if($bug->status == 'resolved' or $bug->status == 'closed') echo "checked";?>> <?php echo sprintf('%03d', $bug->id);?>
|
||||
</td>
|
||||
<td class='a-left nobr'><?php echo html::a($bugLink, $bug->title, '', "class='preview'");?></td>
|
||||
<td class='w-80px'><?php echo $lang->bug->statusList[$bug->status];?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</table>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->desc;?></th>
|
||||
<td><?php echo html::textarea('desc', '', "rows='10' class='area-1'");?></td>
|
||||
</tr>
|
||||
<tr><td colspan='2' class='a-center'><?php echo html::submitButton() . html::resetButton();?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,126 +1,126 @@
|
||||
<?php
|
||||
/**
|
||||
* The edit view of build module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package build
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/datepicker.html.php';?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<form method='post' target='hiddenwin' id='dataform'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $lang->build->edit;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->product;?></th>
|
||||
<td><?php echo html::select('product', $products, $build->product, "class='select-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->name;?></th>
|
||||
<td><?php echo html::input('name', $build->name, "class='text-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->builder;?></th>
|
||||
<td><?php echo html::select('builder', $users, $build->builder, 'class="select-3"');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->date;?></th>
|
||||
<td><?php echo html::input('date', $build->date, "class='text-3 date'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->scmPath;?></th>
|
||||
<td><?php echo html::input('scmPath', $build->scmPath, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->filePath;?></th>
|
||||
<td><?php echo html::input('filePath', $build->filePath, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->linkStoriesAndBugs;?></th>
|
||||
<td>
|
||||
<div class="w-p90">
|
||||
|
||||
<div class='half-left'>
|
||||
<table class='mainTable'>
|
||||
<tr style='border-bottom:none'>
|
||||
<td style='border-bottom:none;padding:0px'>
|
||||
<table class='headTable'>
|
||||
<caption><?php echo $lang->build->linkStories;?></caption>
|
||||
<tr>
|
||||
<th class='w-id a-left'><?php echo html::selectAll('story', 'checkbox') . $lang->idAB;?></th>
|
||||
<th><?php echo $lang->story->title;?></th>
|
||||
<th class='w-hour'><?php echo $lang->statusAB;?></th>
|
||||
<th class='w-100px'><?php echo $lang->story->stageAB;?></th>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style='border-bottom:none'>
|
||||
<td style='border-bottom:none; padding:0px'>
|
||||
<div class="contentDiv">
|
||||
<table class='f-left table-1 fixed'>
|
||||
<?php foreach($stories as $key => $story):?>
|
||||
<?php $storyLink = $this->createLink('story', 'view', "storyID=$story->id");?>
|
||||
<tr class='a-center'>
|
||||
<td class='w-id a-left' id='story'><input type='checkbox' name='stories[]' value="<?php echo $story->id;?>" <?php if(strpos(',' . $build->stories . ',', ',' . $story->id . ',') !== false) echo 'checked';?>> <?php echo sprintf('%03d', $story->id);?></td>
|
||||
<td class='a-left nobr'><?php echo html::a($storyLink, $story->title, '', "class='preview'");?></td>
|
||||
<td class='<?php echo $story->status;?> w-50px'><?php echo $lang->story->statusList[$story->status];?></td>
|
||||
<td class='w-80px'><?php echo $lang->story->stageList[$story->stage];?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</table>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class='half-right'>
|
||||
<table class='mainTable'>
|
||||
<tr style='border-bottom:none'>
|
||||
<td style='border-bottom:none; padding:0px'>
|
||||
<table class='headTable'>
|
||||
<caption><?php echo $lang->build->linkBugs;?></caption>
|
||||
<tr>
|
||||
<th class='w-id a-left'><?php echo html::selectAll('bug', 'checkbox') . $lang->idAB;?></th>
|
||||
<th><?php echo $lang->bug->title;?></th>
|
||||
<th class='w-100px'><?php echo $lang->bug->status;?></th>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style='border-bottom:none'>
|
||||
<td style='border-bottom:none; padding:0px'>
|
||||
<div class='contentDiv'>
|
||||
<table class='f-left table-1 fixed'>
|
||||
<?php foreach($bugs as $bug):?>
|
||||
<?php $bugLink = $this->createLink('bug', 'view', "bugID=$bug->id");?>
|
||||
<tr class='a-center'>
|
||||
<td class='w-id a-left' id='bug'><input type='checkbox' name='bugs[]' value="<?php echo $bug->id;?>" <?php if(strpos(',' . $build->bugs . ',', ',' . $bug->id . ',') !== false) echo 'checked';?>> <?php echo sprintf('%03d', $bug->id);?></td>
|
||||
<td class='a-left nobr'><?php echo html::a($bugLink, $bug->title, '', "class='preview'");?></td>
|
||||
<td class='w-80px'><?php echo $lang->bug->statusList[$bug->status];?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</table>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->desc;?></th>
|
||||
<td><?php echo html::textarea('desc', htmlspecialchars($build->desc), "rows='15' class='area-1'");?></td>
|
||||
</tr>
|
||||
<tr><td colspan='2' class='a-center'><?php echo html::submitButton() . html::resetButton() .html::hidden('project', $build->project);?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The edit view of build module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package build
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/datepicker.html.php';?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<form method='post' target='hiddenwin' id='dataform'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $lang->build->edit;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->product;?></th>
|
||||
<td><?php echo html::select('product', $products, $build->product, "class='select-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->name;?></th>
|
||||
<td><?php echo html::input('name', $build->name, "class='text-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->builder;?></th>
|
||||
<td><?php echo html::select('builder', $users, $build->builder, 'class="select-3"');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->date;?></th>
|
||||
<td><?php echo html::input('date', $build->date, "class='text-3 date'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->scmPath;?></th>
|
||||
<td><?php echo html::input('scmPath', $build->scmPath, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->filePath;?></th>
|
||||
<td><?php echo html::input('filePath', $build->filePath, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->linkStoriesAndBugs;?></th>
|
||||
<td>
|
||||
<div class="w-p90">
|
||||
|
||||
<div class='half-left'>
|
||||
<table class='mainTable'>
|
||||
<tr style='border-bottom:none'>
|
||||
<td style='border-bottom:none;padding:0px'>
|
||||
<table class='headTable'>
|
||||
<caption><?php echo $lang->build->linkStories;?></caption>
|
||||
<tr>
|
||||
<th class='w-id a-left'><?php echo html::selectAll('story', 'checkbox') . $lang->idAB;?></th>
|
||||
<th><?php echo $lang->story->title;?></th>
|
||||
<th class='w-hour'><?php echo $lang->statusAB;?></th>
|
||||
<th class='w-100px'><?php echo $lang->story->stageAB;?></th>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style='border-bottom:none'>
|
||||
<td style='border-bottom:none; padding:0px'>
|
||||
<div class="contentDiv">
|
||||
<table class='f-left table-1 fixed'>
|
||||
<?php foreach($stories as $key => $story):?>
|
||||
<?php $storyLink = $this->createLink('story', 'view', "storyID=$story->id");?>
|
||||
<tr class='a-center'>
|
||||
<td class='w-id a-left' id='story'><input type='checkbox' name='stories[]' value="<?php echo $story->id;?>" <?php if(strpos(',' . $build->stories . ',', ',' . $story->id . ',') !== false) echo 'checked';?>> <?php echo sprintf('%03d', $story->id);?></td>
|
||||
<td class='a-left nobr'><?php echo html::a($storyLink, $story->title, '', "class='preview'");?></td>
|
||||
<td class='<?php echo $story->status;?> w-50px'><?php echo $lang->story->statusList[$story->status];?></td>
|
||||
<td class='w-80px'><?php echo $lang->story->stageList[$story->stage];?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</table>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class='half-right'>
|
||||
<table class='mainTable'>
|
||||
<tr style='border-bottom:none'>
|
||||
<td style='border-bottom:none; padding:0px'>
|
||||
<table class='headTable'>
|
||||
<caption><?php echo $lang->build->linkBugs;?></caption>
|
||||
<tr>
|
||||
<th class='w-id a-left'><?php echo html::selectAll('bug', 'checkbox') . $lang->idAB;?></th>
|
||||
<th><?php echo $lang->bug->title;?></th>
|
||||
<th class='w-100px'><?php echo $lang->bug->status;?></th>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style='border-bottom:none'>
|
||||
<td style='border-bottom:none; padding:0px'>
|
||||
<div class='contentDiv'>
|
||||
<table class='f-left table-1 fixed'>
|
||||
<?php foreach($bugs as $bug):?>
|
||||
<?php $bugLink = $this->createLink('bug', 'view', "bugID=$bug->id");?>
|
||||
<tr class='a-center'>
|
||||
<td class='w-id a-left' id='bug'><input type='checkbox' name='bugs[]' value="<?php echo $bug->id;?>" <?php if(strpos(',' . $build->bugs . ',', ',' . $bug->id . ',') !== false) echo 'checked';?>> <?php echo sprintf('%03d', $bug->id);?></td>
|
||||
<td class='a-left nobr'><?php echo html::a($bugLink, $bug->title, '', "class='preview'");?></td>
|
||||
<td class='w-80px'><?php echo $lang->bug->statusList[$bug->status];?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</table>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->desc;?></th>
|
||||
<td><?php echo html::textarea('desc', htmlspecialchars($build->desc), "rows='15' class='area-1'");?></td>
|
||||
</tr>
|
||||
<tr><td colspan='2' class='a-center'><?php echo html::submitButton() . html::resetButton() .html::hidden('project', $build->project);?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,119 +1,119 @@
|
||||
<?php
|
||||
/**
|
||||
* The view file of build module's view method of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package build
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<table class='cont-rt5'>
|
||||
<caption class='<?php if($build->deleted) echo 'deleted';?>'>BUILD #<?php echo $build->id . ' ' . $build->name;?></caption>
|
||||
<tr valign='top'>
|
||||
<td>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->build->desc;?></legend>
|
||||
<div class='content'><?php echo $build->desc;?></div>
|
||||
</fieldset>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
<div class='a-center f-16px strong mb-10px'>
|
||||
<?php
|
||||
$browseLink = $this->session->buildList ? $this->session->buildList : $this->createLink('project', 'build', "projectID=$build->project");
|
||||
if(!$build->deleted)
|
||||
{
|
||||
common::printIcon('build', 'edit', "buildID=$build->id");
|
||||
common::printIcon('build', 'delete', "buildID=$build->id", '', 'button', '', 'hiddenwin');
|
||||
}
|
||||
echo common::printRPN($browseLink);
|
||||
?>
|
||||
</div>
|
||||
<table class='table-1 fixed'>
|
||||
<caption class='caption-t1'><?php echo $lang->build->stories;?></caption>
|
||||
<tr>
|
||||
<th class='w-id'><?php echo $lang->idAB;?></th>
|
||||
<th class='w-pri'><?php echo $lang->priAB;?></th>
|
||||
<th><?php echo $lang->story->title;?></th>
|
||||
<th class='w-user'><?php echo $lang->openedByAB;?></th>
|
||||
<th class='w-hour'><?php echo $lang->story->estimateAB;?></th>
|
||||
<th class='w-hour'><?php echo $lang->statusAB;?></th>
|
||||
<th class='w-100px'><?php echo $lang->story->stageAB;?></th>
|
||||
</tr>
|
||||
<?php foreach($stories as $storyID => $story):?>
|
||||
<?php $storyLink = $this->createLink('story', 'view', "storyID=$story->id");?>
|
||||
<tr class='a-center'>
|
||||
<td><?php echo sprintf('%03d', $story->id);?></td>
|
||||
<td><span class='<?php echo 'pri' . $lang->story->priList[$story->pri]?>'><?php echo $lang->story->priList[$story->pri];?></span></td>
|
||||
<td class='a-left nobr'><?php echo html::a($storyLink,$story->title, '', "class='preview'");?></td>
|
||||
<td><?php echo $users[$story->openedBy];?></td>
|
||||
<td><?php echo $story->estimate;?></td>
|
||||
<td class='<?php echo $story->status;?>'><?php echo $lang->story->statusList[$story->status];?></td>
|
||||
<td><?php echo $lang->story->stageList[$story->stage];?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
<tr><td colspan=7 class='a-left strong'><?php echo sprintf($lang->build->finishStories, count($stories));?></td></tr>
|
||||
</table>
|
||||
<table class='table-1 fixed'>
|
||||
<caption class='caption-t1'><?php echo $lang->build->bugs;?></caption>
|
||||
<tr>
|
||||
<th class='w-id'><?php echo $lang->idAB;?></th>
|
||||
<th><?php echo $lang->bug->title;?></th>
|
||||
<th class='w-100px'><?php echo $lang->bug->status;?></th>
|
||||
<th class='w-user'><?php echo $lang->openedByAB;?></th>
|
||||
<th class='w-date'><?php echo $lang->bug->openedDateAB;?></th>
|
||||
<th class='w-user'><?php echo $lang->bug->resolvedByAB;?></th>
|
||||
<th class='w-date'><?php echo $lang->bug->resolvedDateAB;?></th>
|
||||
</tr>
|
||||
<?php foreach($bugs as $bug):?>
|
||||
<?php $bugLink = $this->createLink('bug', 'view', "bugID=$bug->id");?>
|
||||
<tr class='a-center'>
|
||||
<td><?php echo sprintf('%03d', $bug->id);?></td>
|
||||
<td class='a-left nobr'><?php echo html::a($bugLink, $bug->title, '', "class='preview'");?></td>
|
||||
<td><?php echo $lang->bug->statusList[$bug->status];?></td>
|
||||
<td><?php echo $users[$bug->openedBy];?></td>
|
||||
<td><?php echo substr($bug->openedDate, 5, 11)?></td>
|
||||
<td><?php echo $users[$bug->resolvedBy];?></td>
|
||||
<td><?php echo substr($bug->resolvedDate, 5, 11)?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
<tr><td colspan=7 class='a-left strong'><?php echo sprintf($lang->build->resolvedBugs, count($bugs));?></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="divider"></td>
|
||||
<td class="side">
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->build->basicInfo?></legend>
|
||||
<table class='table-1 a-left'>
|
||||
<tr>
|
||||
<th width='25%' class='a-right'><?php echo $lang->build->product;?></th>
|
||||
<td><?php echo $build->productName;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->name;?></th>
|
||||
<td><?php echo $build->name;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->builder;?></th>
|
||||
<td><?php echo $users[$build->builder];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->date;?></th>
|
||||
<td><?php echo $build->date;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->scmPath;?></th>
|
||||
<td><?php strpos($build->scmPath, 'http') === 0 ? printf(html::a($build->scmPath)) : printf($build->scmPath);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->filePath;?></th>
|
||||
<td><?php strpos($build->filePath, 'http') === 0 ? printf(html::a($build->filePath)) : printf($build->filePath);?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The view file of build module's view method of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package build
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<table class='cont-rt5'>
|
||||
<caption class='<?php if($build->deleted) echo 'deleted';?>'>BUILD #<?php echo $build->id . ' ' . $build->name;?></caption>
|
||||
<tr valign='top'>
|
||||
<td>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->build->desc;?></legend>
|
||||
<div class='content'><?php echo $build->desc;?></div>
|
||||
</fieldset>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
<div class='a-center f-16px strong mb-10px'>
|
||||
<?php
|
||||
$browseLink = $this->session->buildList ? $this->session->buildList : $this->createLink('project', 'build', "projectID=$build->project");
|
||||
if(!$build->deleted)
|
||||
{
|
||||
common::printIcon('build', 'edit', "buildID=$build->id");
|
||||
common::printIcon('build', 'delete', "buildID=$build->id", '', 'button', '', 'hiddenwin');
|
||||
}
|
||||
echo common::printRPN($browseLink);
|
||||
?>
|
||||
</div>
|
||||
<table class='table-1 fixed'>
|
||||
<caption class='caption-t1'><?php echo $lang->build->stories;?></caption>
|
||||
<tr>
|
||||
<th class='w-id'><?php echo $lang->idAB;?></th>
|
||||
<th class='w-pri'><?php echo $lang->priAB;?></th>
|
||||
<th><?php echo $lang->story->title;?></th>
|
||||
<th class='w-user'><?php echo $lang->openedByAB;?></th>
|
||||
<th class='w-hour'><?php echo $lang->story->estimateAB;?></th>
|
||||
<th class='w-hour'><?php echo $lang->statusAB;?></th>
|
||||
<th class='w-100px'><?php echo $lang->story->stageAB;?></th>
|
||||
</tr>
|
||||
<?php foreach($stories as $storyID => $story):?>
|
||||
<?php $storyLink = $this->createLink('story', 'view', "storyID=$story->id");?>
|
||||
<tr class='a-center'>
|
||||
<td><?php echo sprintf('%03d', $story->id);?></td>
|
||||
<td><span class='<?php echo 'pri' . $lang->story->priList[$story->pri]?>'><?php echo $lang->story->priList[$story->pri];?></span></td>
|
||||
<td class='a-left nobr'><?php echo html::a($storyLink,$story->title, '', "class='preview'");?></td>
|
||||
<td><?php echo $users[$story->openedBy];?></td>
|
||||
<td><?php echo $story->estimate;?></td>
|
||||
<td class='<?php echo $story->status;?>'><?php echo $lang->story->statusList[$story->status];?></td>
|
||||
<td><?php echo $lang->story->stageList[$story->stage];?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
<tr><td colspan=7 class='a-left strong'><?php echo sprintf($lang->build->finishStories, count($stories));?></td></tr>
|
||||
</table>
|
||||
<table class='table-1 fixed'>
|
||||
<caption class='caption-t1'><?php echo $lang->build->bugs;?></caption>
|
||||
<tr>
|
||||
<th class='w-id'><?php echo $lang->idAB;?></th>
|
||||
<th><?php echo $lang->bug->title;?></th>
|
||||
<th class='w-100px'><?php echo $lang->bug->status;?></th>
|
||||
<th class='w-user'><?php echo $lang->openedByAB;?></th>
|
||||
<th class='w-date'><?php echo $lang->bug->openedDateAB;?></th>
|
||||
<th class='w-user'><?php echo $lang->bug->resolvedByAB;?></th>
|
||||
<th class='w-date'><?php echo $lang->bug->resolvedDateAB;?></th>
|
||||
</tr>
|
||||
<?php foreach($bugs as $bug):?>
|
||||
<?php $bugLink = $this->createLink('bug', 'view', "bugID=$bug->id");?>
|
||||
<tr class='a-center'>
|
||||
<td><?php echo sprintf('%03d', $bug->id);?></td>
|
||||
<td class='a-left nobr'><?php echo html::a($bugLink, $bug->title, '', "class='preview'");?></td>
|
||||
<td><?php echo $lang->bug->statusList[$bug->status];?></td>
|
||||
<td><?php echo $users[$bug->openedBy];?></td>
|
||||
<td><?php echo substr($bug->openedDate, 5, 11)?></td>
|
||||
<td><?php echo $users[$bug->resolvedBy];?></td>
|
||||
<td><?php echo substr($bug->resolvedDate, 5, 11)?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
<tr><td colspan=7 class='a-left strong'><?php echo sprintf($lang->build->resolvedBugs, count($bugs));?></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="divider"></td>
|
||||
<td class="side">
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->build->basicInfo?></legend>
|
||||
<table class='table-1 a-left'>
|
||||
<tr>
|
||||
<th width='25%' class='a-right'><?php echo $lang->build->product;?></th>
|
||||
<td><?php echo $build->productName;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->name;?></th>
|
||||
<td><?php echo $build->name;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->builder;?></th>
|
||||
<td><?php echo $users[$build->builder];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->date;?></th>
|
||||
<td><?php echo $build->date;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->scmPath;?></th>
|
||||
<td><?php strpos($build->scmPath, 'http') === 0 ? printf(html::a($build->scmPath)) : printf($build->scmPath);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->filePath;?></th>
|
||||
<td><?php strpos($build->filePath, 'http') === 0 ? printf(html::a($build->filePath)) : printf($build->filePath);?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,414 +1,414 @@
|
||||
<?php
|
||||
/**
|
||||
* The control file of common module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package common
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class common extends control
|
||||
{
|
||||
/**
|
||||
* The construc method, to do some auto things.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->common->startSession();
|
||||
$this->common->sendHeader();
|
||||
$this->common->setCompany();
|
||||
$this->common->setUser();
|
||||
$this->common->loadConfigFromDB();
|
||||
$this->app->loadLang('company');
|
||||
}
|
||||
|
||||
/**
|
||||
* Check the user has permission to access this method, if not, locate to the login page or deny page.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function checkPriv()
|
||||
{
|
||||
$module = $this->app->getModuleName();
|
||||
$method = $this->app->getMethodName();
|
||||
if($this->common->isOpenMethod($module, $method)) return true;
|
||||
if(!$this->loadModel('user')->isLogon() and $this->server->php_auth_user) $this->user->identifyByPhpAuth();
|
||||
if(!$this->loadModel('user')->isLogon() and $this->cookie->za) $this->user->identifyByCookie();
|
||||
|
||||
if(isset($this->app->user))
|
||||
{
|
||||
if(!common::hasPriv($module, $method)) $this->common->deny($module, $method);
|
||||
}
|
||||
else
|
||||
{
|
||||
$referer = helper::safe64Encode($this->app->getURI(true));
|
||||
$this->locate($this->createLink('user', 'login', "referer=$referer"));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check upgrade's status file is ok or not.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function checkUpgradeStatus()
|
||||
{
|
||||
$statusFile = $this->app->getAppRoot() . 'www' . $this->pathFix . 'ok';
|
||||
if(!file_exists($statusFile) or time() - filemtime($statusFile) > 3600)
|
||||
{
|
||||
$this->app->loadLang('upgrade');
|
||||
echo "<html><head><meta http-equiv='Content-Type' content='text/html; charset=utf-8' /></head><body>";
|
||||
echo "<table align='center' style='margin-top:100px; border:1px solid gray; font-size:14px;'><tr><td>";
|
||||
printf($this->lang->upgrade->setStatusFile, $statusFile, $statusFile, $statusFile);
|
||||
die('</td></tr></table></body></html>');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check the user has permisson of one method of one module.
|
||||
*
|
||||
* @param string $module
|
||||
* @param string $method
|
||||
* @static
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public static function hasPriv($module, $method)
|
||||
{
|
||||
global $app;
|
||||
|
||||
/* Check is the super admin or not. */
|
||||
$account = ',' . $app->user->account . ',';
|
||||
if(strpos($app->company->admins, $account) !== false) return true;
|
||||
|
||||
/* If not super admin, check the rights. */
|
||||
$rights = $app->user->rights;
|
||||
if(isset($rights[strtolower($module)][strtolower($method)])) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Replace the %s of one key of a menu by $params.
|
||||
*
|
||||
* All the menus are defined in the common's language file. But there're many dynamic params, so in the defination,
|
||||
* we used %s as placeholder. These %s should be setted in one module.
|
||||
*
|
||||
* The items of one module's menu may be an string or array. For example, please see module/common/lang.
|
||||
*
|
||||
* @param string $object the menus of one module
|
||||
* @param string $key the menu item to be replaced
|
||||
* @param string $params the params passed to the menu item
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setMenuVars($menu, $key, $params)
|
||||
{
|
||||
if(is_array($params))
|
||||
{
|
||||
if(is_array($menu->$key))
|
||||
{
|
||||
$menu->$key = (object)$menu->$key;
|
||||
$menu->$key->link = vsprintf($menu->$key->link, $params);
|
||||
$menu->$key = (array)$menu->$key;
|
||||
}
|
||||
else
|
||||
{
|
||||
$menu->$key = vsprintf($menu->$key, $params);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(is_array($menu->$key))
|
||||
{
|
||||
$menu->$key = (object)$menu->$key;
|
||||
$menu->$key->link = sprintf($menu->$key->link, $params);
|
||||
$menu->$key = (array)$menu->$key;
|
||||
}
|
||||
else
|
||||
{
|
||||
$menu->$key = sprintf($menu->$key, $params);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Print the link contains orderBy field.
|
||||
*
|
||||
* This method will auto set the orderby param according the params. Fox example, if the order by is desc,
|
||||
* will be changed to asc.
|
||||
*
|
||||
* @param string $fieldName the field name to sort by
|
||||
* @param string $orderBy the order by string
|
||||
* @param string $vars the vars to be passed
|
||||
* @param string $label the label of the link
|
||||
* @param string $module the module name
|
||||
* @param string $method the method name
|
||||
* @static
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public static function printOrderLink($fieldName, $orderBy, $vars, $label, $module = '', $method = '')
|
||||
{
|
||||
global $lang, $app;
|
||||
if(empty($module)) $module= $app->getModuleName();
|
||||
if(empty($method)) $method= $app->getMethodName();
|
||||
$className = 'header';
|
||||
|
||||
if(strpos($orderBy, $fieldName) !== false)
|
||||
{
|
||||
if(stripos($orderBy, 'desc') !== false)
|
||||
{
|
||||
$orderBy = str_ireplace('desc', 'asc', $orderBy);
|
||||
$className = 'headerSortUp';
|
||||
}
|
||||
elseif(stripos($orderBy, 'asc') !== false)
|
||||
{
|
||||
$orderBy = str_ireplace('asc', 'desc', $orderBy);
|
||||
$className = 'headerSortDown';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$orderBy = $fieldName . '_' . 'asc';
|
||||
$className = 'header';
|
||||
}
|
||||
$link = helper::createLink($module, $method, sprintf($vars, $orderBy));
|
||||
echo "<div class='$className'>" . html::a($link, $label) . '</div>';
|
||||
}
|
||||
|
||||
/**
|
||||
* Print link to an modules' methd.
|
||||
*
|
||||
* Before printing, check the privilege first. If no privilege, return fasle. Else, print the link, return true.
|
||||
*
|
||||
* @param string $module the module name
|
||||
* @param string $method the method
|
||||
* @param string $vars vars to be passed
|
||||
* @param string $label the label of the link
|
||||
* @param string $target the target of the link
|
||||
* @param string $misc others
|
||||
* @param bool $newline
|
||||
* @static
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public static function printLink($module, $method, $vars = '', $label, $target = '', $misc = '', $newline = true, $onlyBody = false)
|
||||
{
|
||||
if(!common::hasPriv($module, $method)) return false;
|
||||
echo html::a(helper::createLink($module, $method, $vars, '', $onlyBody), $label, $target, $misc, $newline);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Print icon of split line.
|
||||
*
|
||||
* @static
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public static function printDivider()
|
||||
{
|
||||
echo " ";
|
||||
}
|
||||
|
||||
/**
|
||||
* Print icon of comment.
|
||||
*
|
||||
* @param string $module
|
||||
* @static
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public static function printCommentIcon($module)
|
||||
{
|
||||
global $lang;
|
||||
|
||||
if(!common::hasPriv($module, 'edit')) return false;
|
||||
echo "<span class='link-button'>";
|
||||
echo html::a('#comment', ' ', '', "class='icon-green-common-comment' title='$lang->comment' onclick='setComment()'");
|
||||
echo "</span>";
|
||||
}
|
||||
|
||||
/**
|
||||
* Print link icon.
|
||||
*
|
||||
* @param string $module
|
||||
* @param string $method
|
||||
* @param string $vars
|
||||
* @param object $object
|
||||
* @param string $type button|list
|
||||
* @param string $icon
|
||||
* @param string $target
|
||||
* @static
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public static function printIcon($module, $method, $vars = '', $object = '', $type = 'button', $icon = '', $target = '', $extraClass = '', $onlyBody = false)
|
||||
{
|
||||
global $app, $lang;
|
||||
|
||||
/* Judge the $method of $module clickable or not, default is clickable. */
|
||||
$clickable = true;
|
||||
if(is_object($object))
|
||||
{
|
||||
if($app->getModuleName() != $module) $app->control->loadModel($module);
|
||||
$modelClass = class_exists("ext{$module}Model") ? "ext{$module}Model" : $module . "Model";
|
||||
if(class_exists($modelClass) and is_callable(array($modelClass, 'isClickable')))
|
||||
{
|
||||
$clickable = call_user_func_array(array($modelClass, 'isClickable'), array('object' => $object, 'method' => $method));
|
||||
}
|
||||
}
|
||||
|
||||
/* Set module and method, then create link to it. */
|
||||
if(strtolower($module) == 'testcase' and strtolower($method) == 'createbug') ($module = 'bug') and ($method = 'create');
|
||||
if(strtolower($module) == 'story' and strtolower($method) == 'createcase') ($module = 'testcase') and ($method = 'create');
|
||||
if(strtolower($module) == 'bug' and strtolower($method) == 'tostory') ($module = 'story') and ($method = 'create');
|
||||
if(strtolower($module) == 'bug' and strtolower($method) == 'createcase') ($module = 'testcase') and ($method = 'create');
|
||||
if(!common::hasPriv($module, $method)) return false;
|
||||
$link = helper::createLink($module, $method, $vars, '', $onlyBody);
|
||||
|
||||
/* Set the icon title, try search the $method defination in $module's lang or $common's lang. */
|
||||
$title = $method;
|
||||
if($method == 'create' and $icon == 'copy') $method = 'copy';
|
||||
if(isset($lang->$method) and is_string($lang->$method)) $title = $lang->$method;
|
||||
if((isset($lang->$module->$method) or $app->loadLang($module)) and isset($lang->$module->$method))
|
||||
{
|
||||
$title = $method == 'report' ? $lang->$module->$method->common : $lang->$module->$method;
|
||||
}
|
||||
if($icon == 'toStory') $title = $lang->bug->toStory;
|
||||
if($icon == 'createBug') $title = $lang->testtask->createBug;
|
||||
|
||||
/* set the class. */
|
||||
if(!$icon) $icon = $method;
|
||||
if(strpos(',edit,copy,report,export,delete,', ",$icon,") !== false) $module = 'common';
|
||||
$color = $type == 'button' ? 'green' : ($clickable ? 'green' : 'gray');
|
||||
$extraClass = strpos(',export,customFields,runCase,results,', ",$method,") !== false ? $method : $extraClass;
|
||||
$class = $extraClass ? "icon-$color-$module-$icon $extraClass" : "icon-$color-$module-$icon";
|
||||
|
||||
/* Create the icon link. */
|
||||
if($clickable)
|
||||
{
|
||||
if($type == 'button')
|
||||
{
|
||||
echo "<span class='link-button'>";
|
||||
echo html::a($link, ' ', $target, "class='$class' title='$title'", true);
|
||||
if($method != 'edit' and $method != 'copy' and $method != 'delete')
|
||||
{
|
||||
echo html::a($link, $title, $target, "class='$extraClass'", true);
|
||||
}
|
||||
echo "</span>";
|
||||
}
|
||||
else
|
||||
{
|
||||
echo html::a($link, ' ', $target, "class='$class' title='$title'", false);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if($type == 'list')
|
||||
{
|
||||
echo "<span class='$class' title='$title'> </span>";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Print backLink and preLink and nextLink.
|
||||
*
|
||||
* @param string $backLink
|
||||
* @param object $preAndNext
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function printRPN($backLink, $preAndNext = '')
|
||||
{
|
||||
global $lang;
|
||||
|
||||
echo "<span class='link-button'>";
|
||||
echo html::a($backLink, ' ', '', "class='icon-goback' title={$lang->goback}");
|
||||
echo "</span>";
|
||||
|
||||
if(isset($preAndNext->pre) and $preAndNext->pre)
|
||||
{
|
||||
$title = isset($preAndNext->pre->title) ? $preAndNext->pre->title : $preAndNext->pre->name;
|
||||
$title = '#' . $preAndNext->pre->id . ' ' . $title;
|
||||
echo "<span class='link-button'>";
|
||||
echo html::a($this->inLink('view', "ID={$preAndNext->pre->id}"), ' ', '', "id='pre' class='icon-pre' title='{$title}'");
|
||||
echo "</span>";
|
||||
}
|
||||
if(isset($preAndNext->next) and $preAndNext->next)
|
||||
{
|
||||
$title = isset($preAndNext->next->title) ? $preAndNext->next->title : $preAndNext->next->name;
|
||||
$title = '#' . $preAndNext->next->id . ' ' . $title;
|
||||
echo "<span class='link-button'>";
|
||||
echo html::a($this->inLink('view', "ID={$preAndNext->next->id}"), ' ', '', "id='next' class='icon-next' title='$title'");
|
||||
echo "</span>";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create changes of one object.
|
||||
*
|
||||
* @param mixed $old the old object
|
||||
* @param mixed $new the new object
|
||||
* @static
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public static function createChanges($old, $new)
|
||||
{
|
||||
global $config;
|
||||
$changes = array();
|
||||
$magicQuote = get_magic_quotes_gpc();
|
||||
foreach($new as $key => $value)
|
||||
{
|
||||
if(strtolower($key) == 'lastediteddate') continue;
|
||||
if(strtolower($key) == 'lasteditedby') continue;
|
||||
if(strtolower($key) == 'assigneddate') continue;
|
||||
if(strtolower($key) == 'editedby') continue;
|
||||
if(strtolower($key) == 'editeddate') continue;
|
||||
|
||||
if($magicQuote) $value = stripslashes($value);
|
||||
if($value != stripslashes($old->$key))
|
||||
{
|
||||
$diff = '';
|
||||
if(substr_count($value, "\n") > 1 or substr_count($old->$key, "\n") > 1 or strpos('name,title,desc,spec,steps,content,digest,verify', strtolower($key)) !== false) $diff = commonModel::diff($old->$key, $value);
|
||||
$changes[] = array('field' => $key, 'old' => $old->$key, 'new' => $value, 'diff' => $diff);
|
||||
}
|
||||
}
|
||||
return $changes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the full url of the system.
|
||||
*
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function getSysURL()
|
||||
{
|
||||
$httpType = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == 'on') ? 'https' : 'http';
|
||||
$httpHost = $_SERVER['HTTP_HOST'];
|
||||
return "$httpType://$httpHost";
|
||||
}
|
||||
|
||||
/**
|
||||
* Print the run info.
|
||||
*
|
||||
* @param mixed $startTime the start time.
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function printRunInfo($startTime)
|
||||
{
|
||||
vprintf($this->lang->runInfo, $this->common->getRunInfo($startTime));
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The control file of common module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package common
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class common extends control
|
||||
{
|
||||
/**
|
||||
* The construc method, to do some auto things.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->common->startSession();
|
||||
$this->common->sendHeader();
|
||||
$this->common->setCompany();
|
||||
$this->common->setUser();
|
||||
$this->common->loadConfigFromDB();
|
||||
$this->app->loadLang('company');
|
||||
}
|
||||
|
||||
/**
|
||||
* Check the user has permission to access this method, if not, locate to the login page or deny page.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function checkPriv()
|
||||
{
|
||||
$module = $this->app->getModuleName();
|
||||
$method = $this->app->getMethodName();
|
||||
if($this->common->isOpenMethod($module, $method)) return true;
|
||||
if(!$this->loadModel('user')->isLogon() and $this->server->php_auth_user) $this->user->identifyByPhpAuth();
|
||||
if(!$this->loadModel('user')->isLogon() and $this->cookie->za) $this->user->identifyByCookie();
|
||||
|
||||
if(isset($this->app->user))
|
||||
{
|
||||
if(!common::hasPriv($module, $method)) $this->common->deny($module, $method);
|
||||
}
|
||||
else
|
||||
{
|
||||
$referer = helper::safe64Encode($this->app->getURI(true));
|
||||
$this->locate($this->createLink('user', 'login', "referer=$referer"));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check upgrade's status file is ok or not.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function checkUpgradeStatus()
|
||||
{
|
||||
$statusFile = $this->app->getAppRoot() . 'www' . $this->pathFix . 'ok';
|
||||
if(!file_exists($statusFile) or time() - filemtime($statusFile) > 3600)
|
||||
{
|
||||
$this->app->loadLang('upgrade');
|
||||
echo "<html><head><meta http-equiv='Content-Type' content='text/html; charset=utf-8' /></head><body>";
|
||||
echo "<table align='center' style='margin-top:100px; border:1px solid gray; font-size:14px;'><tr><td>";
|
||||
printf($this->lang->upgrade->setStatusFile, $statusFile, $statusFile, $statusFile);
|
||||
die('</td></tr></table></body></html>');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check the user has permisson of one method of one module.
|
||||
*
|
||||
* @param string $module
|
||||
* @param string $method
|
||||
* @static
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public static function hasPriv($module, $method)
|
||||
{
|
||||
global $app;
|
||||
|
||||
/* Check is the super admin or not. */
|
||||
$account = ',' . $app->user->account . ',';
|
||||
if(strpos($app->company->admins, $account) !== false) return true;
|
||||
|
||||
/* If not super admin, check the rights. */
|
||||
$rights = $app->user->rights;
|
||||
if(isset($rights[strtolower($module)][strtolower($method)])) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Replace the %s of one key of a menu by $params.
|
||||
*
|
||||
* All the menus are defined in the common's language file. But there're many dynamic params, so in the defination,
|
||||
* we used %s as placeholder. These %s should be setted in one module.
|
||||
*
|
||||
* The items of one module's menu may be an string or array. For example, please see module/common/lang.
|
||||
*
|
||||
* @param string $object the menus of one module
|
||||
* @param string $key the menu item to be replaced
|
||||
* @param string $params the params passed to the menu item
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setMenuVars($menu, $key, $params)
|
||||
{
|
||||
if(is_array($params))
|
||||
{
|
||||
if(is_array($menu->$key))
|
||||
{
|
||||
$menu->$key = (object)$menu->$key;
|
||||
$menu->$key->link = vsprintf($menu->$key->link, $params);
|
||||
$menu->$key = (array)$menu->$key;
|
||||
}
|
||||
else
|
||||
{
|
||||
$menu->$key = vsprintf($menu->$key, $params);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(is_array($menu->$key))
|
||||
{
|
||||
$menu->$key = (object)$menu->$key;
|
||||
$menu->$key->link = sprintf($menu->$key->link, $params);
|
||||
$menu->$key = (array)$menu->$key;
|
||||
}
|
||||
else
|
||||
{
|
||||
$menu->$key = sprintf($menu->$key, $params);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Print the link contains orderBy field.
|
||||
*
|
||||
* This method will auto set the orderby param according the params. Fox example, if the order by is desc,
|
||||
* will be changed to asc.
|
||||
*
|
||||
* @param string $fieldName the field name to sort by
|
||||
* @param string $orderBy the order by string
|
||||
* @param string $vars the vars to be passed
|
||||
* @param string $label the label of the link
|
||||
* @param string $module the module name
|
||||
* @param string $method the method name
|
||||
* @static
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public static function printOrderLink($fieldName, $orderBy, $vars, $label, $module = '', $method = '')
|
||||
{
|
||||
global $lang, $app;
|
||||
if(empty($module)) $module= $app->getModuleName();
|
||||
if(empty($method)) $method= $app->getMethodName();
|
||||
$className = 'header';
|
||||
|
||||
if(strpos($orderBy, $fieldName) !== false)
|
||||
{
|
||||
if(stripos($orderBy, 'desc') !== false)
|
||||
{
|
||||
$orderBy = str_ireplace('desc', 'asc', $orderBy);
|
||||
$className = 'headerSortUp';
|
||||
}
|
||||
elseif(stripos($orderBy, 'asc') !== false)
|
||||
{
|
||||
$orderBy = str_ireplace('asc', 'desc', $orderBy);
|
||||
$className = 'headerSortDown';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$orderBy = $fieldName . '_' . 'asc';
|
||||
$className = 'header';
|
||||
}
|
||||
$link = helper::createLink($module, $method, sprintf($vars, $orderBy));
|
||||
echo "<div class='$className'>" . html::a($link, $label) . '</div>';
|
||||
}
|
||||
|
||||
/**
|
||||
* Print link to an modules' methd.
|
||||
*
|
||||
* Before printing, check the privilege first. If no privilege, return fasle. Else, print the link, return true.
|
||||
*
|
||||
* @param string $module the module name
|
||||
* @param string $method the method
|
||||
* @param string $vars vars to be passed
|
||||
* @param string $label the label of the link
|
||||
* @param string $target the target of the link
|
||||
* @param string $misc others
|
||||
* @param bool $newline
|
||||
* @static
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public static function printLink($module, $method, $vars = '', $label, $target = '', $misc = '', $newline = true, $onlyBody = false)
|
||||
{
|
||||
if(!common::hasPriv($module, $method)) return false;
|
||||
echo html::a(helper::createLink($module, $method, $vars, '', $onlyBody), $label, $target, $misc, $newline);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Print icon of split line.
|
||||
*
|
||||
* @static
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public static function printDivider()
|
||||
{
|
||||
echo " ";
|
||||
}
|
||||
|
||||
/**
|
||||
* Print icon of comment.
|
||||
*
|
||||
* @param string $module
|
||||
* @static
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public static function printCommentIcon($module)
|
||||
{
|
||||
global $lang;
|
||||
|
||||
if(!common::hasPriv($module, 'edit')) return false;
|
||||
echo "<span class='link-button'>";
|
||||
echo html::a('#comment', ' ', '', "class='icon-green-common-comment' title='$lang->comment' onclick='setComment()'");
|
||||
echo "</span>";
|
||||
}
|
||||
|
||||
/**
|
||||
* Print link icon.
|
||||
*
|
||||
* @param string $module
|
||||
* @param string $method
|
||||
* @param string $vars
|
||||
* @param object $object
|
||||
* @param string $type button|list
|
||||
* @param string $icon
|
||||
* @param string $target
|
||||
* @static
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public static function printIcon($module, $method, $vars = '', $object = '', $type = 'button', $icon = '', $target = '', $extraClass = '', $onlyBody = false)
|
||||
{
|
||||
global $app, $lang;
|
||||
|
||||
/* Judge the $method of $module clickable or not, default is clickable. */
|
||||
$clickable = true;
|
||||
if(is_object($object))
|
||||
{
|
||||
if($app->getModuleName() != $module) $app->control->loadModel($module);
|
||||
$modelClass = class_exists("ext{$module}Model") ? "ext{$module}Model" : $module . "Model";
|
||||
if(class_exists($modelClass) and is_callable(array($modelClass, 'isClickable')))
|
||||
{
|
||||
$clickable = call_user_func_array(array($modelClass, 'isClickable'), array('object' => $object, 'method' => $method));
|
||||
}
|
||||
}
|
||||
|
||||
/* Set module and method, then create link to it. */
|
||||
if(strtolower($module) == 'testcase' and strtolower($method) == 'createbug') ($module = 'bug') and ($method = 'create');
|
||||
if(strtolower($module) == 'story' and strtolower($method) == 'createcase') ($module = 'testcase') and ($method = 'create');
|
||||
if(strtolower($module) == 'bug' and strtolower($method) == 'tostory') ($module = 'story') and ($method = 'create');
|
||||
if(strtolower($module) == 'bug' and strtolower($method) == 'createcase') ($module = 'testcase') and ($method = 'create');
|
||||
if(!common::hasPriv($module, $method)) return false;
|
||||
$link = helper::createLink($module, $method, $vars, '', $onlyBody);
|
||||
|
||||
/* Set the icon title, try search the $method defination in $module's lang or $common's lang. */
|
||||
$title = $method;
|
||||
if($method == 'create' and $icon == 'copy') $method = 'copy';
|
||||
if(isset($lang->$method) and is_string($lang->$method)) $title = $lang->$method;
|
||||
if((isset($lang->$module->$method) or $app->loadLang($module)) and isset($lang->$module->$method))
|
||||
{
|
||||
$title = $method == 'report' ? $lang->$module->$method->common : $lang->$module->$method;
|
||||
}
|
||||
if($icon == 'toStory') $title = $lang->bug->toStory;
|
||||
if($icon == 'createBug') $title = $lang->testtask->createBug;
|
||||
|
||||
/* set the class. */
|
||||
if(!$icon) $icon = $method;
|
||||
if(strpos(',edit,copy,report,export,delete,', ",$icon,") !== false) $module = 'common';
|
||||
$color = $type == 'button' ? 'green' : ($clickable ? 'green' : 'gray');
|
||||
$extraClass = strpos(',export,customFields,runCase,results,', ",$method,") !== false ? $method : $extraClass;
|
||||
$class = $extraClass ? "icon-$color-$module-$icon $extraClass" : "icon-$color-$module-$icon";
|
||||
|
||||
/* Create the icon link. */
|
||||
if($clickable)
|
||||
{
|
||||
if($type == 'button')
|
||||
{
|
||||
echo "<span class='link-button'>";
|
||||
echo html::a($link, ' ', $target, "class='$class' title='$title'", true);
|
||||
if($method != 'edit' and $method != 'copy' and $method != 'delete')
|
||||
{
|
||||
echo html::a($link, $title, $target, "class='$extraClass'", true);
|
||||
}
|
||||
echo "</span>";
|
||||
}
|
||||
else
|
||||
{
|
||||
echo html::a($link, ' ', $target, "class='$class' title='$title'", false);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if($type == 'list')
|
||||
{
|
||||
echo "<span class='$class' title='$title'> </span>";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Print backLink and preLink and nextLink.
|
||||
*
|
||||
* @param string $backLink
|
||||
* @param object $preAndNext
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function printRPN($backLink, $preAndNext = '')
|
||||
{
|
||||
global $lang;
|
||||
|
||||
echo "<span class='link-button'>";
|
||||
echo html::a($backLink, ' ', '', "class='icon-goback' title={$lang->goback}");
|
||||
echo "</span>";
|
||||
|
||||
if(isset($preAndNext->pre) and $preAndNext->pre)
|
||||
{
|
||||
$title = isset($preAndNext->pre->title) ? $preAndNext->pre->title : $preAndNext->pre->name;
|
||||
$title = '#' . $preAndNext->pre->id . ' ' . $title;
|
||||
echo "<span class='link-button'>";
|
||||
echo html::a($this->inLink('view', "ID={$preAndNext->pre->id}"), ' ', '', "id='pre' class='icon-pre' title='{$title}'");
|
||||
echo "</span>";
|
||||
}
|
||||
if(isset($preAndNext->next) and $preAndNext->next)
|
||||
{
|
||||
$title = isset($preAndNext->next->title) ? $preAndNext->next->title : $preAndNext->next->name;
|
||||
$title = '#' . $preAndNext->next->id . ' ' . $title;
|
||||
echo "<span class='link-button'>";
|
||||
echo html::a($this->inLink('view', "ID={$preAndNext->next->id}"), ' ', '', "id='next' class='icon-next' title='$title'");
|
||||
echo "</span>";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create changes of one object.
|
||||
*
|
||||
* @param mixed $old the old object
|
||||
* @param mixed $new the new object
|
||||
* @static
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public static function createChanges($old, $new)
|
||||
{
|
||||
global $config;
|
||||
$changes = array();
|
||||
$magicQuote = get_magic_quotes_gpc();
|
||||
foreach($new as $key => $value)
|
||||
{
|
||||
if(strtolower($key) == 'lastediteddate') continue;
|
||||
if(strtolower($key) == 'lasteditedby') continue;
|
||||
if(strtolower($key) == 'assigneddate') continue;
|
||||
if(strtolower($key) == 'editedby') continue;
|
||||
if(strtolower($key) == 'editeddate') continue;
|
||||
|
||||
if($magicQuote) $value = stripslashes($value);
|
||||
if($value != stripslashes($old->$key))
|
||||
{
|
||||
$diff = '';
|
||||
if(substr_count($value, "\n") > 1 or substr_count($old->$key, "\n") > 1 or strpos('name,title,desc,spec,steps,content,digest,verify', strtolower($key)) !== false) $diff = commonModel::diff($old->$key, $value);
|
||||
$changes[] = array('field' => $key, 'old' => $old->$key, 'new' => $value, 'diff' => $diff);
|
||||
}
|
||||
}
|
||||
return $changes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the full url of the system.
|
||||
*
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function getSysURL()
|
||||
{
|
||||
$httpType = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == 'on') ? 'https' : 'http';
|
||||
$httpHost = $_SERVER['HTTP_HOST'];
|
||||
return "$httpType://$httpHost";
|
||||
}
|
||||
|
||||
/**
|
||||
* Print the run info.
|
||||
*
|
||||
* @param mixed $startTime the start time.
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function printRunInfo($startTime)
|
||||
{
|
||||
vprintf($this->lang->runInfo, $this->common->getRunInfo($startTime));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,395 +1,395 @@
|
||||
<?php
|
||||
/**
|
||||
* The common simplified chinese file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package ZenTaoPMS
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->arrow = '<span class="icon-arrow"> </span>';
|
||||
$lang->colon = '::';
|
||||
$lang->comma = ',';
|
||||
$lang->dot = '.';
|
||||
$lang->at = ' at ';
|
||||
$lang->downArrow = '↓';
|
||||
|
||||
$lang->ZenTaoPMS = 'ZenTaoPMS';
|
||||
$lang->welcome = "Welcome to『%s』{$lang->colon} {$lang->ZenTaoPMS}";
|
||||
$lang->myControl = "Dashboard";
|
||||
$lang->currentPos = 'Current';
|
||||
$lang->logout = 'Logout';
|
||||
$lang->login = 'Login';
|
||||
$lang->aboutZenTao = 'About';
|
||||
$lang->todayIs = '%s, ';
|
||||
$lang->runInfo = "<div class='row'><div class='u-1 a-center' id='debugbar'>Time: %s ms, Memory: %s KB, Queries: %s. </div></div>";
|
||||
|
||||
$lang->reset = 'Reset';
|
||||
$lang->edit = 'Edit';
|
||||
$lang->copy = 'Copy';
|
||||
$lang->delete = 'Delete';
|
||||
$lang->close = 'Close';
|
||||
$lang->link = 'Link';
|
||||
$lang->unlink = 'Unlink';
|
||||
$lang->import = 'Import';
|
||||
$lang->export = 'Export';
|
||||
$lang->exportType = 'Exprot Type';
|
||||
$lang->setFileName = 'Filename:';
|
||||
$lang->activate = 'Activate';
|
||||
$lang->submitting = 'Saving...';
|
||||
$lang->save = 'Save';
|
||||
$lang->confirm = 'Confirm';
|
||||
$lang->preview = 'View';
|
||||
$lang->goback = 'Back';
|
||||
$lang->go = 'GO';
|
||||
$lang->more = 'More';
|
||||
|
||||
$lang->actions = 'Actions';
|
||||
$lang->comment = 'Comment';
|
||||
$lang->history = 'History';
|
||||
$lang->attatch = 'Attatch';
|
||||
$lang->reverse = 'Reverse';
|
||||
$lang->switchDisplay= 'Toggle Show';
|
||||
$lang->switchHelp = 'Toggle Help';
|
||||
$lang->addFiles = 'Add Files';
|
||||
$lang->files = 'Files ';
|
||||
$lang->unfold = '+';
|
||||
$lang->fold = '-';
|
||||
|
||||
$lang->selectAll = 'Select All';
|
||||
$lang->selectReverse = 'Select Reverse';
|
||||
$lang->notFound = 'Sorry, the object not found.';
|
||||
$lang->showAll = '++ Show All ++';
|
||||
$lang->hideClosed = '-- Show Progressing --';
|
||||
|
||||
$lang->future = 'Future';
|
||||
$lang->year = 'Year';
|
||||
$lang->workingHour = 'Hour';
|
||||
|
||||
$lang->idAB = 'ID';
|
||||
$lang->priAB = 'P';
|
||||
$lang->statusAB = 'Status';
|
||||
$lang->openedByAB = 'Open';
|
||||
$lang->assignedToAB = 'To';
|
||||
$lang->typeAB = 'Type';
|
||||
|
||||
$lang->common = new stdclass();
|
||||
$lang->common->common = 'Common module';
|
||||
|
||||
/* The main menu. */
|
||||
$lang->menu = new stdclass();
|
||||
$lang->menu->my = '<span id="mainbg"> </span>Dashboard|my|index';
|
||||
$lang->menu->product = 'Product|product|index';
|
||||
$lang->menu->project = 'Project|project|index';
|
||||
$lang->menu->qa = 'Test|qa|index';
|
||||
$lang->menu->doc = 'Doc|doc|index';
|
||||
$lang->menu->report = 'Report|report|index';
|
||||
$lang->menu->webapp = 'Web App|webapp|index';
|
||||
$lang->menu->company = 'Company|company|index';
|
||||
$lang->menu->admin = 'Admin|admin|index';
|
||||
|
||||
/* The objects in the search box. */
|
||||
$lang->searchObjects['bug'] = 'Bug';
|
||||
$lang->searchObjects['story'] = 'Story';
|
||||
$lang->searchObjects['task'] = 'Task';
|
||||
$lang->searchObjects['testcase'] = 'Test Case';
|
||||
$lang->searchObjects['project'] = 'Project';
|
||||
$lang->searchObjects['product'] = 'Product';
|
||||
$lang->searchObjects['user'] = 'User';
|
||||
$lang->searchObjects['build'] = 'Build';
|
||||
$lang->searchObjects['release'] = 'Release';
|
||||
$lang->searchObjects['productplan'] = 'Plan';
|
||||
$lang->searchObjects['testtask'] = 'Test Task';
|
||||
$lang->searchObjects['doc'] = 'Doc';
|
||||
$lang->searchTips = 'Id here(ctrl+g)';
|
||||
|
||||
/* Encode list of impot. */
|
||||
$lang->importEncodeList['gbk'] = 'GBK';
|
||||
$lang->importEncodeList['big5'] = 'BIG5';
|
||||
$lang->importEncodeList['utf-8'] = 'UTF-8';
|
||||
|
||||
/* File type of export. */
|
||||
$lang->exportFileTypeList['csv'] = 'csv';
|
||||
$lang->exportFileTypeList['xml'] = 'xml';
|
||||
$lang->exportFileTypeList['html'] = 'html';
|
||||
|
||||
$lang->exportTypeList['all'] = 'Export ALL';
|
||||
$lang->exportTypeList['selected'] = 'Export Checked';
|
||||
|
||||
/* Support charset. */
|
||||
$lang->exportEncodeList['gbk'] = 'GBK';
|
||||
$lang->exportEncodeList['big5'] = 'BIG5';
|
||||
$lang->exportEncodeList['utf-8'] = 'UTF-8';
|
||||
|
||||
/* Themes. */
|
||||
$lang->themes['default'] = 'Default';
|
||||
$lang->themes['green'] = 'Green';
|
||||
$lang->themes['red'] = 'Red';
|
||||
$lang->themes['classblue'] = 'Blue';
|
||||
|
||||
/* Index mododule menu. */
|
||||
$lang->index = new stdclass();
|
||||
$lang->index->menu = new stdclass();
|
||||
|
||||
$lang->index->menu->product = 'Products|product|browse';
|
||||
$lang->index->menu->project = 'Projects|project|browse';
|
||||
|
||||
/* Dashboard menu. */
|
||||
$lang->my = new stdclass();
|
||||
$lang->my->menu = new stdclass();
|
||||
|
||||
$lang->my->menu->account = '<span id="mybg"> </span>%s' . $lang->arrow;
|
||||
$lang->my->menu->index = 'Index|my|index';
|
||||
$lang->my->menu->todo = array('link' => 'Todo|my|todo|', 'subModule' => 'todo');
|
||||
$lang->my->menu->task = 'Task|my|task|';
|
||||
$lang->my->menu->bug = 'Bug|my|bug|';
|
||||
$lang->my->menu->testtask = array('link' => 'Test|my|testtask|', 'alias' => 'testcase');
|
||||
$lang->my->menu->story = 'Story|my|story|';
|
||||
$lang->my->menu->myProject = 'Project|my|project|';
|
||||
$lang->my->menu->dynamic = 'Dynamic|my|dynamic|';
|
||||
$lang->my->menu->profile = array('link' => 'Profile|my|profile|', 'alias' => 'editprofile');
|
||||
$lang->my->menu->changePassword = 'Change Password|my|changepassword|';
|
||||
|
||||
$lang->todo = new stdclass();
|
||||
$lang->todo->menu = $lang->my->menu;
|
||||
|
||||
/* Product menu. */
|
||||
$lang->product = new stdclass();
|
||||
$lang->product->menu = new stdclass();
|
||||
|
||||
$lang->product->menu->list = '%s';
|
||||
$lang->product->menu->story = array('link' => 'Story|product|browse|productID=%s', 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->menu->dynamic = 'Dynamic|product|dynamic|productID=%s';
|
||||
$lang->product->menu->plan = array('link' => 'Plan|productplan|browse|productID=%s', 'subModule' => 'productplan');
|
||||
$lang->product->menu->release = array('link' => 'Release|release|browse|productID=%s', 'subModule' => 'release');
|
||||
$lang->product->menu->roadmap = 'Roadmap|product|roadmap|productID=%s';
|
||||
$lang->product->menu->doc = array('link' => 'Doc|product|doc|productID=%s', 'subModule' => 'doc');
|
||||
$lang->product->menu->view = array('link' => 'Manage|product|view|productID=%s', 'alias' => 'edit');
|
||||
$lang->product->menu->module = 'Modules|tree|browse|productID=%s&view=story';
|
||||
$lang->product->menu->project = 'Projects|product|project|status=all&productID=%s';
|
||||
$lang->product->menu->order = 'Order|product|order|productID=%s';
|
||||
$lang->product->menu->create = array('link' => '<span class="icon-add1"> </span>New|product|create', 'float' => 'right');
|
||||
$lang->product->menu->all = array('link' => '<span class="icon-all"> </span>All|product|index|locate=no&productID=%s', 'float' => 'right');
|
||||
|
||||
$lang->story = new stdclass();
|
||||
$lang->productplan = new stdclass();
|
||||
$lang->release = new stdclass();
|
||||
|
||||
$lang->story->menu = $lang->product->menu;
|
||||
$lang->productplan->menu = $lang->product->menu;
|
||||
$lang->release->menu = $lang->product->menu;
|
||||
|
||||
/* Project menu. */
|
||||
$lang->project = new stdclass();
|
||||
$lang->project->menu = new stdclass();
|
||||
|
||||
$lang->project->menu->list = '%s';
|
||||
$lang->project->menu->task = array('link' => 'Task|project|task|projectID=%s', 'subModule' => 'task', 'alias' => 'grouptask,importtask,importbug,burn');
|
||||
$lang->project->menu->story = array('link' => 'Story|project|story|projectID=%s', 'subModule' => 'story', 'alias' => 'linkstory');
|
||||
$lang->project->menu->bug = 'Bug|project|bug|projectID=%s';
|
||||
$lang->project->menu->dynamic = 'Dynamic|project|dynamic|projectID=%s';
|
||||
$lang->project->menu->build = array('link' => 'Build|project|build|projectID=%s', 'subModule' => 'build');
|
||||
$lang->project->menu->testtask = 'Testtask|project|testtask|projectID=%s';
|
||||
$lang->project->menu->team = array('link' => 'Team|project|team|projectID=%s', 'alias' => 'managemembers');
|
||||
$lang->project->menu->doc = array('link' => 'Doc|project|doc|porjectID=%s', 'subModule' => 'doc');
|
||||
$lang->project->menu->product = array('link' => 'Product|project|manageproducts|projectID=%s', 'alias' => 'edit,start,suspend,delay,close');
|
||||
$lang->project->menu->view = 'Manage|project|view|projectID=%s';
|
||||
$lang->project->menu->order = 'Order|project|order|projectID=%s';
|
||||
$lang->project->menu->create = array('link' => '<span class="icon-add"> </span>New|project|create', 'float' => 'right');
|
||||
$lang->project->menu->all = array('link' => '<span class="icon-allProjects"> </span>Projects|project|index|locate=no&status=all&projectID=%s', 'float' => 'right');
|
||||
|
||||
$lang->task = new stdclass();
|
||||
$lang->build = new stdclass();
|
||||
$lang->task->menu = $lang->project->menu;
|
||||
$lang->build->menu = $lang->project->menu;
|
||||
|
||||
/* QA menu. */
|
||||
$lang->bug = new stdclass();
|
||||
$lang->bug->menu = new stdclass();
|
||||
|
||||
$lang->bug->menu->product = '%s';
|
||||
$lang->bug->menu->bug = array('link' => 'Bug|bug|browse|productID=%s', 'alias' => 'view,create,edit,resolve,close,activate,report,batchedit,confirmbug,assignto', 'subModule' => 'tree');
|
||||
$lang->bug->menu->testcase = array('link' => 'Test Case|testcase|browse|productID=%s', 'alias' => 'view,create,edit');
|
||||
$lang->bug->menu->testtask = array('link' => 'Test Task|testtask|browse|productID=%s');
|
||||
|
||||
$lang->testcase = new stdclass();
|
||||
$lang->testcase->menu = new stdclass();
|
||||
|
||||
$lang->testcase->menu->product = '%s';
|
||||
$lang->testcase->menu->bug = array('link' => 'Bug|bug|browse|productID=%s');
|
||||
$lang->testcase->menu->testcase = array('link' => 'Test Case|testcase|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit,batchedit', 'subModule' => 'tree');
|
||||
$lang->testcase->menu->testtask = array('link' => 'Test Task|testtask|browse|productID=%s', 'alias' => 'view,create,edit,linkcase,cases');
|
||||
|
||||
$lang->testtask = new stdclass();
|
||||
$lang->testtask->menu = $lang->testcase->menu;
|
||||
|
||||
/* Doc menu. */
|
||||
$lang->doc = new stdclass();
|
||||
$lang->doc->menu = new stdclass();
|
||||
|
||||
$lang->doc->menu->list = '%s';
|
||||
$lang->doc->menu->browse = array('link' => 'Doc|doc|browse|libID=%s', 'alias' => 'view,create,edit');
|
||||
$lang->doc->menu->edit = 'Edit Library|doc|editLib|libID=%s';
|
||||
$lang->doc->menu->module = 'Modules|tree|browse|libID=%s&viewType=doc';
|
||||
$lang->doc->menu->delete = array('link' => 'Delete Library|doc|deleteLib|libID=%s', 'target' => 'hiddenwin');
|
||||
$lang->doc->menu->create = array('link' => '<span class="icon-add1"> </span>New Library|doc|createLib', 'float' => 'right');
|
||||
|
||||
/* Report menu. */
|
||||
$lang->report = new stdclass();
|
||||
$lang->report->menu = new stdclass();
|
||||
|
||||
$lang->report->menu->product = array('link' => 'Product|report|productinfo');
|
||||
$lang->report->menu->prj = array('link' => 'Project|report|projectdeviation');
|
||||
$lang->report->menu->test = array('link' => 'Test|report|bugsummary', 'alias' => 'bugassign');
|
||||
$lang->report->menu->staff = array('link' => 'Company|report|workload');
|
||||
|
||||
/* Resource menu. */
|
||||
$lang->webapp = new stdclass();
|
||||
$lang->webapp->menu = new stdclass();
|
||||
$lang->webapp->menu->obtain = array('link' => 'App Store|webapp|obtain');
|
||||
|
||||
/* Company menu. */
|
||||
$lang->company = new stdclass();
|
||||
$lang->company->menu = new stdclass();
|
||||
$lang->company->menu->name = '%s' . $lang->arrow;
|
||||
$lang->company->menu->browseUser = array('link' => 'Users|company|browse', 'subModule' => 'user');
|
||||
$lang->company->menu->dept = array('link' => 'Department|dept|browse', 'subModule' => 'dept');
|
||||
$lang->company->menu->browseGroup = array('link' => 'Group|group|browse', 'subModule' => 'group');
|
||||
$lang->company->menu->edit = array('link' => 'Company|company|edit');
|
||||
$lang->company->menu->dynamic = 'Dynamic|company|dynamic|';
|
||||
$lang->company->menu->addGroup = array('link' => '<span class="icon-add1"> </span>Add Group|group|create', 'float' => 'right');
|
||||
$lang->company->menu->batchAddUser = array('link' => '<span class="icon-add1"> </span>Batch Add|user|batchCreate', 'subModule' => 'user', 'float' => 'right');
|
||||
$lang->company->menu->addUser = array('link' => '<span class="icon-add1"> </span>Add User|user|create|dept=%s&from=company', 'subModule' => 'user', 'float' => 'right');
|
||||
|
||||
$lang->dept = new stdclass();
|
||||
$lang->group = new stdclass();
|
||||
$lang->user = new stdclass();
|
||||
|
||||
$lang->dept->menu = $lang->company->menu;
|
||||
$lang->group->menu = $lang->company->menu;
|
||||
$lang->user->menu = $lang->company->menu;
|
||||
|
||||
/* Admin 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');
|
||||
$lang->admin->menu->editor = array('link' => 'Scaffold|editor|index', 'subModule' => 'editor');
|
||||
$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->trashes = array('link' => 'Trash|action|trash', 'subModule' => 'action');
|
||||
|
||||
$lang->convert = new stdclass();
|
||||
$lang->upgrade = new stdclass();
|
||||
$lang->action = new stdclass();
|
||||
$lang->extension = new stdclass();
|
||||
$lang->editor = new stdclass();
|
||||
$lang->mail = new stdclass();
|
||||
|
||||
$lang->convert->menu = $lang->admin->menu;
|
||||
$lang->upgrade->menu = $lang->admin->menu;
|
||||
$lang->action->menu = $lang->admin->menu;
|
||||
$lang->extension->menu = $lang->admin->menu;
|
||||
$lang->editor->menu = $lang->admin->menu;
|
||||
$lang->mail->menu = $lang->admin->menu;
|
||||
|
||||
/* Groups. */
|
||||
$lang->menugroup = new stdclass();
|
||||
$lang->menugroup->release = 'product';
|
||||
$lang->menugroup->story = 'product';
|
||||
$lang->menugroup->productplan = 'product';
|
||||
$lang->menugroup->task = 'project';
|
||||
$lang->menugroup->build = 'project';
|
||||
$lang->menugroup->convert = 'admin';
|
||||
$lang->menugroup->upgrade = 'admin';
|
||||
$lang->menugroup->user = 'company';
|
||||
$lang->menugroup->group = 'company';
|
||||
$lang->menugroup->bug = 'qa';
|
||||
$lang->menugroup->testcase = 'qa';
|
||||
$lang->menugroup->testtask = 'qa';
|
||||
$lang->menugroup->people = 'company';
|
||||
$lang->menugroup->dept = 'company';
|
||||
$lang->menugroup->todo = 'my';
|
||||
$lang->menugroup->action = 'admin';
|
||||
$lang->menugroup->extension = 'admin';
|
||||
$lang->menugroup->editor = 'admin';
|
||||
$lang->menugroup->mail = 'admin';
|
||||
|
||||
/* Error info. */
|
||||
$lang->error = new stdclass();
|
||||
$lang->error->companyNotFound = "The domain %s does not exist.";
|
||||
$lang->error->length = array("『%s』length should be『%s』", "『%s』length should between『%s』and 『%s』.");
|
||||
$lang->error->reg = "『%s』should like『%s』";
|
||||
$lang->error->unique = "『%s』has『%s』already. If you are sure this record has been deleted, you can restore it in admin panel, trash page.";
|
||||
$lang->error->gt = "『%s』must greater than『%s』.";
|
||||
$lang->error->ge = "『%s』must greater than or equal『%s』.";
|
||||
$lang->error->notempty = "『%s』can not be empty.";
|
||||
$lang->error->empty = "『%s』 must be empty.";
|
||||
$lang->error->equal = "『%s』must be『%s』.";
|
||||
$lang->error->int = array("『%s』should be interger", "『%s』should between『%s-%s』.");
|
||||
$lang->error->float = "『%s』should be a interger or float.";
|
||||
$lang->error->email = "『%s』should be email.";
|
||||
$lang->error->date = "『%s』should be date";
|
||||
$lang->error->account = "『%s』should be a valid account.";
|
||||
$lang->error->passwordsame = "Two passwords must be the same";
|
||||
$lang->error->passwordrule = "Password should more than six letters.";
|
||||
$lang->error->accessDenied = 'No purview';
|
||||
|
||||
/* Pager. */
|
||||
$lang->pager = new stdclass();
|
||||
$lang->pager->noRecord = "No records yet.";
|
||||
$lang->pager->digest = "<strong>%s</strong> records, <strong>%s</strong> per page, <strong>%s/%s</strong> ";
|
||||
$lang->pager->first = "First";
|
||||
$lang->pager->pre = "Previous";
|
||||
$lang->pager->next = "Next";
|
||||
$lang->pager->last = "Last";
|
||||
$lang->pager->locate = "GO!";
|
||||
|
||||
$lang->zentaoSite = "Official Site";
|
||||
$lang->chinaScrum = "<a href='http://www.zentao.net/goto.php?item=chinascrum' target='_blank'>Scrum community</a> ";
|
||||
$lang->agileTraining = "<a href='http://www.zentao.net/goto.php?item=agiletrain' target='_blank'>Training</a> ";
|
||||
$lang->donate = "<a href='http://www.zentao.net/goto.php?item=donate' target='_blank'>Donate</a> ";
|
||||
$lang->proVersion = "<a href='http://www.zentao.net/goto.php?item=proversion&from=footer' target='_blank' class='red f-14px'>Try pro version!</a> ";
|
||||
$lang->downNotify = "Down notify";
|
||||
|
||||
$lang->suhosinInfo = "Warming:data is too large! Please enlarge the setting of <font color=red>sohusin.post.max_vars</font> and <font color=red>sohusin.request.max_vars</font> in php.ini. Otherwise partial data can't be saved.";
|
||||
|
||||
$lang->noResultsMatch = "No results match";
|
||||
|
||||
/* Date times. */
|
||||
define('DT_DATETIME1', 'Y-m-d H:i:s');
|
||||
define('DT_DATETIME2', 'y-m-d H:i');
|
||||
define('DT_MONTHTIME1', 'n/d H:i');
|
||||
define('DT_MONTHTIME2', 'F j, H:i');
|
||||
define('DT_DATE1', 'Y-m-d');
|
||||
define('DT_DATE2', 'Ymd');
|
||||
define('DT_DATE3', 'F j, Y ');
|
||||
define('DT_DATE4', 'M j');
|
||||
define('DT_TIME1', 'H:i:s');
|
||||
define('DT_TIME2', 'H:i');
|
||||
|
||||
/* datepicker 时间*/
|
||||
$lang->datepicker = new stdclass();
|
||||
|
||||
$lang->datepicker->dpText = new stdclass();
|
||||
$lang->datepicker->dpText->TEXT_OR = 'Or ';
|
||||
$lang->datepicker->dpText->TEXT_PREV_YEAR = 'Last year';
|
||||
$lang->datepicker->dpText->TEXT_PREV_MONTH = 'Last month';
|
||||
$lang->datepicker->dpText->TEXT_PREV_WEEK = 'Last week';
|
||||
$lang->datepicker->dpText->TEXT_YESTERDAY = 'Yesterday';
|
||||
$lang->datepicker->dpText->TEXT_THIS_MONTH = 'This month';
|
||||
$lang->datepicker->dpText->TEXT_THIS_WEEK = 'This week';
|
||||
$lang->datepicker->dpText->TEXT_TODAY = 'Today';
|
||||
$lang->datepicker->dpText->TEXT_NEXT_YEAR = 'Next year';
|
||||
$lang->datepicker->dpText->TEXT_NEXT_MONTH = 'Next month';
|
||||
$lang->datepicker->dpText->TEXT_CLOSE = 'Close';
|
||||
$lang->datepicker->dpText->TEXT_DATE = 'Please select date range';
|
||||
$lang->datepicker->dpText->TEXT_CHOOSE_DATE = 'Choose date';
|
||||
|
||||
$lang->datepicker->dayNames = array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
|
||||
$lang->datepicker->abbrDayNames = array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
|
||||
$lang->datepicker->monthNames = array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
|
||||
|
||||
include (dirname(__FILE__) . '/menuOrder.php');
|
||||
<?php
|
||||
/**
|
||||
* The common simplified chinese file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package ZenTaoPMS
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->arrow = '<span class="icon-arrow"> </span>';
|
||||
$lang->colon = '::';
|
||||
$lang->comma = ',';
|
||||
$lang->dot = '.';
|
||||
$lang->at = ' at ';
|
||||
$lang->downArrow = '↓';
|
||||
|
||||
$lang->ZenTaoPMS = 'ZenTaoPMS';
|
||||
$lang->welcome = "Welcome to『%s』{$lang->colon} {$lang->ZenTaoPMS}";
|
||||
$lang->myControl = "Dashboard";
|
||||
$lang->currentPos = 'Current';
|
||||
$lang->logout = 'Logout';
|
||||
$lang->login = 'Login';
|
||||
$lang->aboutZenTao = 'About';
|
||||
$lang->todayIs = '%s, ';
|
||||
$lang->runInfo = "<div class='row'><div class='u-1 a-center' id='debugbar'>Time: %s ms, Memory: %s KB, Queries: %s. </div></div>";
|
||||
|
||||
$lang->reset = 'Reset';
|
||||
$lang->edit = 'Edit';
|
||||
$lang->copy = 'Copy';
|
||||
$lang->delete = 'Delete';
|
||||
$lang->close = 'Close';
|
||||
$lang->link = 'Link';
|
||||
$lang->unlink = 'Unlink';
|
||||
$lang->import = 'Import';
|
||||
$lang->export = 'Export';
|
||||
$lang->exportType = 'Exprot Type';
|
||||
$lang->setFileName = 'Filename:';
|
||||
$lang->activate = 'Activate';
|
||||
$lang->submitting = 'Saving...';
|
||||
$lang->save = 'Save';
|
||||
$lang->confirm = 'Confirm';
|
||||
$lang->preview = 'View';
|
||||
$lang->goback = 'Back';
|
||||
$lang->go = 'GO';
|
||||
$lang->more = 'More';
|
||||
|
||||
$lang->actions = 'Actions';
|
||||
$lang->comment = 'Comment';
|
||||
$lang->history = 'History';
|
||||
$lang->attatch = 'Attatch';
|
||||
$lang->reverse = 'Reverse';
|
||||
$lang->switchDisplay= 'Toggle Show';
|
||||
$lang->switchHelp = 'Toggle Help';
|
||||
$lang->addFiles = 'Add Files';
|
||||
$lang->files = 'Files ';
|
||||
$lang->unfold = '+';
|
||||
$lang->fold = '-';
|
||||
|
||||
$lang->selectAll = 'Select All';
|
||||
$lang->selectReverse = 'Select Reverse';
|
||||
$lang->notFound = 'Sorry, the object not found.';
|
||||
$lang->showAll = '++ Show All ++';
|
||||
$lang->hideClosed = '-- Show Progressing --';
|
||||
|
||||
$lang->future = 'Future';
|
||||
$lang->year = 'Year';
|
||||
$lang->workingHour = 'Hour';
|
||||
|
||||
$lang->idAB = 'ID';
|
||||
$lang->priAB = 'P';
|
||||
$lang->statusAB = 'Status';
|
||||
$lang->openedByAB = 'Open';
|
||||
$lang->assignedToAB = 'To';
|
||||
$lang->typeAB = 'Type';
|
||||
|
||||
$lang->common = new stdclass();
|
||||
$lang->common->common = 'Common module';
|
||||
|
||||
/* The main menu. */
|
||||
$lang->menu = new stdclass();
|
||||
$lang->menu->my = '<span id="mainbg"> </span>Dashboard|my|index';
|
||||
$lang->menu->product = 'Product|product|index';
|
||||
$lang->menu->project = 'Project|project|index';
|
||||
$lang->menu->qa = 'Test|qa|index';
|
||||
$lang->menu->doc = 'Doc|doc|index';
|
||||
$lang->menu->report = 'Report|report|index';
|
||||
$lang->menu->webapp = 'Web App|webapp|index';
|
||||
$lang->menu->company = 'Company|company|index';
|
||||
$lang->menu->admin = 'Admin|admin|index';
|
||||
|
||||
/* The objects in the search box. */
|
||||
$lang->searchObjects['bug'] = 'Bug';
|
||||
$lang->searchObjects['story'] = 'Story';
|
||||
$lang->searchObjects['task'] = 'Task';
|
||||
$lang->searchObjects['testcase'] = 'Test Case';
|
||||
$lang->searchObjects['project'] = 'Project';
|
||||
$lang->searchObjects['product'] = 'Product';
|
||||
$lang->searchObjects['user'] = 'User';
|
||||
$lang->searchObjects['build'] = 'Build';
|
||||
$lang->searchObjects['release'] = 'Release';
|
||||
$lang->searchObjects['productplan'] = 'Plan';
|
||||
$lang->searchObjects['testtask'] = 'Test Task';
|
||||
$lang->searchObjects['doc'] = 'Doc';
|
||||
$lang->searchTips = 'Id here(ctrl+g)';
|
||||
|
||||
/* Encode list of impot. */
|
||||
$lang->importEncodeList['gbk'] = 'GBK';
|
||||
$lang->importEncodeList['big5'] = 'BIG5';
|
||||
$lang->importEncodeList['utf-8'] = 'UTF-8';
|
||||
|
||||
/* File type of export. */
|
||||
$lang->exportFileTypeList['csv'] = 'csv';
|
||||
$lang->exportFileTypeList['xml'] = 'xml';
|
||||
$lang->exportFileTypeList['html'] = 'html';
|
||||
|
||||
$lang->exportTypeList['all'] = 'Export ALL';
|
||||
$lang->exportTypeList['selected'] = 'Export Checked';
|
||||
|
||||
/* Support charset. */
|
||||
$lang->exportEncodeList['gbk'] = 'GBK';
|
||||
$lang->exportEncodeList['big5'] = 'BIG5';
|
||||
$lang->exportEncodeList['utf-8'] = 'UTF-8';
|
||||
|
||||
/* Themes. */
|
||||
$lang->themes['default'] = 'Default';
|
||||
$lang->themes['green'] = 'Green';
|
||||
$lang->themes['red'] = 'Red';
|
||||
$lang->themes['classblue'] = 'Blue';
|
||||
|
||||
/* Index mododule menu. */
|
||||
$lang->index = new stdclass();
|
||||
$lang->index->menu = new stdclass();
|
||||
|
||||
$lang->index->menu->product = 'Products|product|browse';
|
||||
$lang->index->menu->project = 'Projects|project|browse';
|
||||
|
||||
/* Dashboard menu. */
|
||||
$lang->my = new stdclass();
|
||||
$lang->my->menu = new stdclass();
|
||||
|
||||
$lang->my->menu->account = '<span id="mybg"> </span>%s' . $lang->arrow;
|
||||
$lang->my->menu->index = 'Index|my|index';
|
||||
$lang->my->menu->todo = array('link' => 'Todo|my|todo|', 'subModule' => 'todo');
|
||||
$lang->my->menu->task = 'Task|my|task|';
|
||||
$lang->my->menu->bug = 'Bug|my|bug|';
|
||||
$lang->my->menu->testtask = array('link' => 'Test|my|testtask|', 'alias' => 'testcase');
|
||||
$lang->my->menu->story = 'Story|my|story|';
|
||||
$lang->my->menu->myProject = 'Project|my|project|';
|
||||
$lang->my->menu->dynamic = 'Dynamic|my|dynamic|';
|
||||
$lang->my->menu->profile = array('link' => 'Profile|my|profile|', 'alias' => 'editprofile');
|
||||
$lang->my->menu->changePassword = 'Change Password|my|changepassword|';
|
||||
|
||||
$lang->todo = new stdclass();
|
||||
$lang->todo->menu = $lang->my->menu;
|
||||
|
||||
/* Product menu. */
|
||||
$lang->product = new stdclass();
|
||||
$lang->product->menu = new stdclass();
|
||||
|
||||
$lang->product->menu->list = '%s';
|
||||
$lang->product->menu->story = array('link' => 'Story|product|browse|productID=%s', 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->menu->dynamic = 'Dynamic|product|dynamic|productID=%s';
|
||||
$lang->product->menu->plan = array('link' => 'Plan|productplan|browse|productID=%s', 'subModule' => 'productplan');
|
||||
$lang->product->menu->release = array('link' => 'Release|release|browse|productID=%s', 'subModule' => 'release');
|
||||
$lang->product->menu->roadmap = 'Roadmap|product|roadmap|productID=%s';
|
||||
$lang->product->menu->doc = array('link' => 'Doc|product|doc|productID=%s', 'subModule' => 'doc');
|
||||
$lang->product->menu->view = array('link' => 'Manage|product|view|productID=%s', 'alias' => 'edit');
|
||||
$lang->product->menu->module = 'Modules|tree|browse|productID=%s&view=story';
|
||||
$lang->product->menu->project = 'Projects|product|project|status=all&productID=%s';
|
||||
$lang->product->menu->order = 'Order|product|order|productID=%s';
|
||||
$lang->product->menu->create = array('link' => '<span class="icon-add1"> </span>New|product|create', 'float' => 'right');
|
||||
$lang->product->menu->all = array('link' => '<span class="icon-all"> </span>All|product|index|locate=no&productID=%s', 'float' => 'right');
|
||||
|
||||
$lang->story = new stdclass();
|
||||
$lang->productplan = new stdclass();
|
||||
$lang->release = new stdclass();
|
||||
|
||||
$lang->story->menu = $lang->product->menu;
|
||||
$lang->productplan->menu = $lang->product->menu;
|
||||
$lang->release->menu = $lang->product->menu;
|
||||
|
||||
/* Project menu. */
|
||||
$lang->project = new stdclass();
|
||||
$lang->project->menu = new stdclass();
|
||||
|
||||
$lang->project->menu->list = '%s';
|
||||
$lang->project->menu->task = array('link' => 'Task|project|task|projectID=%s', 'subModule' => 'task', 'alias' => 'grouptask,importtask,importbug,burn');
|
||||
$lang->project->menu->story = array('link' => 'Story|project|story|projectID=%s', 'subModule' => 'story', 'alias' => 'linkstory');
|
||||
$lang->project->menu->bug = 'Bug|project|bug|projectID=%s';
|
||||
$lang->project->menu->dynamic = 'Dynamic|project|dynamic|projectID=%s';
|
||||
$lang->project->menu->build = array('link' => 'Build|project|build|projectID=%s', 'subModule' => 'build');
|
||||
$lang->project->menu->testtask = 'Testtask|project|testtask|projectID=%s';
|
||||
$lang->project->menu->team = array('link' => 'Team|project|team|projectID=%s', 'alias' => 'managemembers');
|
||||
$lang->project->menu->doc = array('link' => 'Doc|project|doc|porjectID=%s', 'subModule' => 'doc');
|
||||
$lang->project->menu->product = array('link' => 'Product|project|manageproducts|projectID=%s', 'alias' => 'edit,start,suspend,delay,close');
|
||||
$lang->project->menu->view = 'Manage|project|view|projectID=%s';
|
||||
$lang->project->menu->order = 'Order|project|order|projectID=%s';
|
||||
$lang->project->menu->create = array('link' => '<span class="icon-add"> </span>New|project|create', 'float' => 'right');
|
||||
$lang->project->menu->all = array('link' => '<span class="icon-allProjects"> </span>Projects|project|index|locate=no&status=all&projectID=%s', 'float' => 'right');
|
||||
|
||||
$lang->task = new stdclass();
|
||||
$lang->build = new stdclass();
|
||||
$lang->task->menu = $lang->project->menu;
|
||||
$lang->build->menu = $lang->project->menu;
|
||||
|
||||
/* QA menu. */
|
||||
$lang->bug = new stdclass();
|
||||
$lang->bug->menu = new stdclass();
|
||||
|
||||
$lang->bug->menu->product = '%s';
|
||||
$lang->bug->menu->bug = array('link' => 'Bug|bug|browse|productID=%s', 'alias' => 'view,create,edit,resolve,close,activate,report,batchedit,confirmbug,assignto', 'subModule' => 'tree');
|
||||
$lang->bug->menu->testcase = array('link' => 'Test Case|testcase|browse|productID=%s', 'alias' => 'view,create,edit');
|
||||
$lang->bug->menu->testtask = array('link' => 'Test Task|testtask|browse|productID=%s');
|
||||
|
||||
$lang->testcase = new stdclass();
|
||||
$lang->testcase->menu = new stdclass();
|
||||
|
||||
$lang->testcase->menu->product = '%s';
|
||||
$lang->testcase->menu->bug = array('link' => 'Bug|bug|browse|productID=%s');
|
||||
$lang->testcase->menu->testcase = array('link' => 'Test Case|testcase|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit,batchedit', 'subModule' => 'tree');
|
||||
$lang->testcase->menu->testtask = array('link' => 'Test Task|testtask|browse|productID=%s', 'alias' => 'view,create,edit,linkcase,cases');
|
||||
|
||||
$lang->testtask = new stdclass();
|
||||
$lang->testtask->menu = $lang->testcase->menu;
|
||||
|
||||
/* Doc menu. */
|
||||
$lang->doc = new stdclass();
|
||||
$lang->doc->menu = new stdclass();
|
||||
|
||||
$lang->doc->menu->list = '%s';
|
||||
$lang->doc->menu->browse = array('link' => 'Doc|doc|browse|libID=%s', 'alias' => 'view,create,edit');
|
||||
$lang->doc->menu->edit = 'Edit Library|doc|editLib|libID=%s';
|
||||
$lang->doc->menu->module = 'Modules|tree|browse|libID=%s&viewType=doc';
|
||||
$lang->doc->menu->delete = array('link' => 'Delete Library|doc|deleteLib|libID=%s', 'target' => 'hiddenwin');
|
||||
$lang->doc->menu->create = array('link' => '<span class="icon-add1"> </span>New Library|doc|createLib', 'float' => 'right');
|
||||
|
||||
/* Report menu. */
|
||||
$lang->report = new stdclass();
|
||||
$lang->report->menu = new stdclass();
|
||||
|
||||
$lang->report->menu->product = array('link' => 'Product|report|productinfo');
|
||||
$lang->report->menu->prj = array('link' => 'Project|report|projectdeviation');
|
||||
$lang->report->menu->test = array('link' => 'Test|report|bugsummary', 'alias' => 'bugassign');
|
||||
$lang->report->menu->staff = array('link' => 'Company|report|workload');
|
||||
|
||||
/* Resource menu. */
|
||||
$lang->webapp = new stdclass();
|
||||
$lang->webapp->menu = new stdclass();
|
||||
$lang->webapp->menu->obtain = array('link' => 'App Store|webapp|obtain');
|
||||
|
||||
/* Company menu. */
|
||||
$lang->company = new stdclass();
|
||||
$lang->company->menu = new stdclass();
|
||||
$lang->company->menu->name = '%s' . $lang->arrow;
|
||||
$lang->company->menu->browseUser = array('link' => 'Users|company|browse', 'subModule' => 'user');
|
||||
$lang->company->menu->dept = array('link' => 'Department|dept|browse', 'subModule' => 'dept');
|
||||
$lang->company->menu->browseGroup = array('link' => 'Group|group|browse', 'subModule' => 'group');
|
||||
$lang->company->menu->edit = array('link' => 'Company|company|edit');
|
||||
$lang->company->menu->dynamic = 'Dynamic|company|dynamic|';
|
||||
$lang->company->menu->addGroup = array('link' => '<span class="icon-add1"> </span>Add Group|group|create', 'float' => 'right');
|
||||
$lang->company->menu->batchAddUser = array('link' => '<span class="icon-add1"> </span>Batch Add|user|batchCreate', 'subModule' => 'user', 'float' => 'right');
|
||||
$lang->company->menu->addUser = array('link' => '<span class="icon-add1"> </span>Add User|user|create|dept=%s&from=company', 'subModule' => 'user', 'float' => 'right');
|
||||
|
||||
$lang->dept = new stdclass();
|
||||
$lang->group = new stdclass();
|
||||
$lang->user = new stdclass();
|
||||
|
||||
$lang->dept->menu = $lang->company->menu;
|
||||
$lang->group->menu = $lang->company->menu;
|
||||
$lang->user->menu = $lang->company->menu;
|
||||
|
||||
/* Admin 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');
|
||||
$lang->admin->menu->editor = array('link' => 'Scaffold|editor|index', 'subModule' => 'editor');
|
||||
$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->trashes = array('link' => 'Trash|action|trash', 'subModule' => 'action');
|
||||
|
||||
$lang->convert = new stdclass();
|
||||
$lang->upgrade = new stdclass();
|
||||
$lang->action = new stdclass();
|
||||
$lang->extension = new stdclass();
|
||||
$lang->editor = new stdclass();
|
||||
$lang->mail = new stdclass();
|
||||
|
||||
$lang->convert->menu = $lang->admin->menu;
|
||||
$lang->upgrade->menu = $lang->admin->menu;
|
||||
$lang->action->menu = $lang->admin->menu;
|
||||
$lang->extension->menu = $lang->admin->menu;
|
||||
$lang->editor->menu = $lang->admin->menu;
|
||||
$lang->mail->menu = $lang->admin->menu;
|
||||
|
||||
/* Groups. */
|
||||
$lang->menugroup = new stdclass();
|
||||
$lang->menugroup->release = 'product';
|
||||
$lang->menugroup->story = 'product';
|
||||
$lang->menugroup->productplan = 'product';
|
||||
$lang->menugroup->task = 'project';
|
||||
$lang->menugroup->build = 'project';
|
||||
$lang->menugroup->convert = 'admin';
|
||||
$lang->menugroup->upgrade = 'admin';
|
||||
$lang->menugroup->user = 'company';
|
||||
$lang->menugroup->group = 'company';
|
||||
$lang->menugroup->bug = 'qa';
|
||||
$lang->menugroup->testcase = 'qa';
|
||||
$lang->menugroup->testtask = 'qa';
|
||||
$lang->menugroup->people = 'company';
|
||||
$lang->menugroup->dept = 'company';
|
||||
$lang->menugroup->todo = 'my';
|
||||
$lang->menugroup->action = 'admin';
|
||||
$lang->menugroup->extension = 'admin';
|
||||
$lang->menugroup->editor = 'admin';
|
||||
$lang->menugroup->mail = 'admin';
|
||||
|
||||
/* Error info. */
|
||||
$lang->error = new stdclass();
|
||||
$lang->error->companyNotFound = "The domain %s does not exist.";
|
||||
$lang->error->length = array("『%s』length should be『%s』", "『%s』length should between『%s』and 『%s』.");
|
||||
$lang->error->reg = "『%s』should like『%s』";
|
||||
$lang->error->unique = "『%s』has『%s』already. If you are sure this record has been deleted, you can restore it in admin panel, trash page.";
|
||||
$lang->error->gt = "『%s』must greater than『%s』.";
|
||||
$lang->error->ge = "『%s』must greater than or equal『%s』.";
|
||||
$lang->error->notempty = "『%s』can not be empty.";
|
||||
$lang->error->empty = "『%s』 must be empty.";
|
||||
$lang->error->equal = "『%s』must be『%s』.";
|
||||
$lang->error->int = array("『%s』should be interger", "『%s』should between『%s-%s』.");
|
||||
$lang->error->float = "『%s』should be a interger or float.";
|
||||
$lang->error->email = "『%s』should be email.";
|
||||
$lang->error->date = "『%s』should be date";
|
||||
$lang->error->account = "『%s』should be a valid account.";
|
||||
$lang->error->passwordsame = "Two passwords must be the same";
|
||||
$lang->error->passwordrule = "Password should more than six letters.";
|
||||
$lang->error->accessDenied = 'No purview';
|
||||
|
||||
/* Pager. */
|
||||
$lang->pager = new stdclass();
|
||||
$lang->pager->noRecord = "No records yet.";
|
||||
$lang->pager->digest = "<strong>%s</strong> records, <strong>%s</strong> per page, <strong>%s/%s</strong> ";
|
||||
$lang->pager->first = "First";
|
||||
$lang->pager->pre = "Previous";
|
||||
$lang->pager->next = "Next";
|
||||
$lang->pager->last = "Last";
|
||||
$lang->pager->locate = "GO!";
|
||||
|
||||
$lang->zentaoSite = "Official Site";
|
||||
$lang->chinaScrum = "<a href='http://www.zentao.net/goto.php?item=chinascrum' target='_blank'>Scrum community</a> ";
|
||||
$lang->agileTraining = "<a href='http://www.zentao.net/goto.php?item=agiletrain' target='_blank'>Training</a> ";
|
||||
$lang->donate = "<a href='http://www.zentao.net/goto.php?item=donate' target='_blank'>Donate</a> ";
|
||||
$lang->proVersion = "<a href='http://www.zentao.net/goto.php?item=proversion&from=footer' target='_blank' class='red f-14px'>Try pro version!</a> ";
|
||||
$lang->downNotify = "Down notify";
|
||||
|
||||
$lang->suhosinInfo = "Warming:data is too large! Please enlarge the setting of <font color=red>sohusin.post.max_vars</font> and <font color=red>sohusin.request.max_vars</font> in php.ini. Otherwise partial data can't be saved.";
|
||||
|
||||
$lang->noResultsMatch = "No results match";
|
||||
|
||||
/* Date times. */
|
||||
define('DT_DATETIME1', 'Y-m-d H:i:s');
|
||||
define('DT_DATETIME2', 'y-m-d H:i');
|
||||
define('DT_MONTHTIME1', 'n/d H:i');
|
||||
define('DT_MONTHTIME2', 'F j, H:i');
|
||||
define('DT_DATE1', 'Y-m-d');
|
||||
define('DT_DATE2', 'Ymd');
|
||||
define('DT_DATE3', 'F j, Y ');
|
||||
define('DT_DATE4', 'M j');
|
||||
define('DT_TIME1', 'H:i:s');
|
||||
define('DT_TIME2', 'H:i');
|
||||
|
||||
/* datepicker 时间*/
|
||||
$lang->datepicker = new stdclass();
|
||||
|
||||
$lang->datepicker->dpText = new stdclass();
|
||||
$lang->datepicker->dpText->TEXT_OR = 'Or ';
|
||||
$lang->datepicker->dpText->TEXT_PREV_YEAR = 'Last year';
|
||||
$lang->datepicker->dpText->TEXT_PREV_MONTH = 'Last month';
|
||||
$lang->datepicker->dpText->TEXT_PREV_WEEK = 'Last week';
|
||||
$lang->datepicker->dpText->TEXT_YESTERDAY = 'Yesterday';
|
||||
$lang->datepicker->dpText->TEXT_THIS_MONTH = 'This month';
|
||||
$lang->datepicker->dpText->TEXT_THIS_WEEK = 'This week';
|
||||
$lang->datepicker->dpText->TEXT_TODAY = 'Today';
|
||||
$lang->datepicker->dpText->TEXT_NEXT_YEAR = 'Next year';
|
||||
$lang->datepicker->dpText->TEXT_NEXT_MONTH = 'Next month';
|
||||
$lang->datepicker->dpText->TEXT_CLOSE = 'Close';
|
||||
$lang->datepicker->dpText->TEXT_DATE = 'Please select date range';
|
||||
$lang->datepicker->dpText->TEXT_CHOOSE_DATE = 'Choose date';
|
||||
|
||||
$lang->datepicker->dayNames = array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
|
||||
$lang->datepicker->abbrDayNames = array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
|
||||
$lang->datepicker->monthNames = array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
|
||||
|
||||
include (dirname(__FILE__) . '/menuOrder.php');
|
||||
|
||||
@@ -1,395 +1,395 @@
|
||||
<?php
|
||||
/**
|
||||
* The common simplified chinese file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package ZenTaoPMS
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->arrow = '<span class="icon-arrow"> </span>';
|
||||
$lang->colon = '::';
|
||||
$lang->comma = ',';
|
||||
$lang->dot = '。';
|
||||
$lang->at = ' 于 ';
|
||||
$lang->downArrow = '↓';
|
||||
|
||||
$lang->ZenTaoPMS = '禅道管理';
|
||||
$lang->welcome = "欢迎使用『%s』{$lang->colon} {$lang->ZenTaoPMS}";
|
||||
$lang->myControl = "我的地盘";
|
||||
$lang->currentPos = '当前位置:';
|
||||
$lang->logout = '退出';
|
||||
$lang->login = '登录';
|
||||
$lang->aboutZenTao = '关于';
|
||||
$lang->todayIs = '今天是%s,';
|
||||
$lang->runInfo = "<div class='row'><div class='u-1 a-center' id='debugbar'>时间: %s 毫秒, 内存: %s KB, 查询: %s. </div></div>";
|
||||
|
||||
$lang->reset = '重填';
|
||||
$lang->edit = '编辑';
|
||||
$lang->copy = '复制';
|
||||
$lang->delete = '删除';
|
||||
$lang->close = '关闭';
|
||||
$lang->link = '关联';
|
||||
$lang->unlink = '移除';
|
||||
$lang->import = '导入';
|
||||
$lang->export = '导出';
|
||||
$lang->exportType = '导出类型';
|
||||
$lang->setFileName = '文件名:';
|
||||
$lang->activate = '激活';
|
||||
$lang->submitting = '稍候...';
|
||||
$lang->save = '保存';
|
||||
$lang->confirm = '确认';
|
||||
$lang->preview = '查看';
|
||||
$lang->goback = '返回';
|
||||
$lang->go = 'GO';
|
||||
$lang->more = '更多';
|
||||
|
||||
$lang->actions = '操作';
|
||||
$lang->comment = '备注';
|
||||
$lang->history = '历史记录';
|
||||
$lang->attatch = '附件';
|
||||
$lang->reverse = '切换顺序';
|
||||
$lang->switchDisplay= '切换显示';
|
||||
$lang->switchHelp = '切换帮助';
|
||||
$lang->addFiles = '上传了附件 ';
|
||||
$lang->files = '附件 ';
|
||||
$lang->unfold = '+';
|
||||
$lang->fold = '-';
|
||||
|
||||
$lang->selectAll = '全选';
|
||||
$lang->selectReverse = '反选';
|
||||
$lang->notFound = '抱歉,您访问的对象并不存在!';
|
||||
$lang->showAll = '++ 全部显示 ++';
|
||||
$lang->hideClosed = '-- 显示进行中 --';
|
||||
|
||||
$lang->future = '未来';
|
||||
$lang->year = '年';
|
||||
$lang->workingHour = '工时';
|
||||
|
||||
$lang->idAB = 'ID';
|
||||
$lang->priAB = 'P';
|
||||
$lang->statusAB = '状态';
|
||||
$lang->openedByAB = '创建';
|
||||
$lang->assignedToAB = '指派';
|
||||
$lang->typeAB = '类型';
|
||||
|
||||
$lang->common = new stdclass();
|
||||
$lang->common->common = '公有模块';
|
||||
|
||||
/* 主导航菜单。*/
|
||||
$lang->menu = new stdclass();
|
||||
$lang->menu->my = '<span id="mainbg"> </span>我的地盘|my|index';
|
||||
$lang->menu->product = '产品|product|index';
|
||||
$lang->menu->project = '项目|project|index';
|
||||
$lang->menu->qa = '测试|qa|index';
|
||||
$lang->menu->doc = '文档|doc|index';
|
||||
$lang->menu->report = '统计|report|index';
|
||||
$lang->menu->webapp = '应用|webapp|index';
|
||||
$lang->menu->company = '组织|company|index';
|
||||
$lang->menu->admin = '后台|admin|index';
|
||||
|
||||
/* 查询条中可以选择的对象列表。*/
|
||||
$lang->searchObjects['bug'] = 'B:Bug';
|
||||
$lang->searchObjects['story'] = 'S:需求';
|
||||
$lang->searchObjects['task'] = 'T:任务';
|
||||
$lang->searchObjects['testcase'] = 'C:用例';
|
||||
$lang->searchObjects['project'] = 'P:项目';
|
||||
$lang->searchObjects['product'] = 'P:产品';
|
||||
$lang->searchObjects['user'] = 'U:用户';
|
||||
$lang->searchObjects['build'] = 'B:版本';
|
||||
$lang->searchObjects['release'] = 'R:发布';
|
||||
$lang->searchObjects['productplan'] = 'P:产品计划';
|
||||
$lang->searchObjects['testtask'] = 'T:测试任务';
|
||||
$lang->searchObjects['doc'] = 'D:文档';
|
||||
$lang->searchTips = '编号(ctrl+g)';
|
||||
|
||||
/* 导入支持的编码格式。*/
|
||||
$lang->importEncodeList['gbk'] = 'GBK';
|
||||
$lang->importEncodeList['big5'] = 'BIG5';
|
||||
$lang->importEncodeList['utf-8'] = 'UTF-8';
|
||||
|
||||
/* 导出文件的类型列表。*/
|
||||
$lang->exportFileTypeList['csv'] = 'csv';
|
||||
$lang->exportFileTypeList['xml'] = 'xml';
|
||||
$lang->exportFileTypeList['html'] = 'html';
|
||||
|
||||
$lang->exportTypeList['all'] = '导出全部';
|
||||
$lang->exportTypeList['selected'] = '导出选中';
|
||||
|
||||
/* 支持的编码格式。*/
|
||||
$lang->exportEncodeList['gbk'] = 'GBK';
|
||||
$lang->exportEncodeList['big5'] = 'BIG5';
|
||||
$lang->exportEncodeList['utf-8'] = 'UTF-8';
|
||||
|
||||
/* 风格列表。*/
|
||||
$lang->themes['default'] = '默认';
|
||||
$lang->themes['green'] = '绿色';
|
||||
$lang->themes['red'] = '红色';
|
||||
$lang->themes['classblue'] = '经典蓝';
|
||||
|
||||
/* 首页菜单设置。*/
|
||||
$lang->index = new stdclass();
|
||||
$lang->index->menu = new stdclass();
|
||||
|
||||
$lang->index->menu->product = '浏览产品|product|browse';
|
||||
$lang->index->menu->project = '浏览项目|project|browse';
|
||||
|
||||
/* 我的地盘菜单设置。*/
|
||||
$lang->my = new stdclass();
|
||||
$lang->my->menu = new stdclass();
|
||||
|
||||
$lang->my->menu->account = '<span id="mybg"> </span>%s' . $lang->arrow;
|
||||
$lang->my->menu->index = '首页|my|index';
|
||||
$lang->my->menu->todo = array('link' => '待办|my|todo|', 'subModule' => 'todo');
|
||||
$lang->my->menu->task = '任务|my|task|';
|
||||
$lang->my->menu->bug = 'Bug|my|bug|';
|
||||
$lang->my->menu->testtask = array('link' => '测试|my|testtask|', 'alias' => 'testcase');
|
||||
$lang->my->menu->story = '需求|my|story|';
|
||||
$lang->my->menu->myProject = '项目|my|project|';
|
||||
$lang->my->menu->dynamic = '动态|my|dynamic|';
|
||||
$lang->my->menu->profile = array('link' => '档案|my|profile|', 'alias' => 'editprofile');
|
||||
$lang->my->menu->changePassword = '密码|my|changepassword|';
|
||||
|
||||
$lang->todo = new stdclass();
|
||||
$lang->todo->menu = $lang->my->menu;
|
||||
|
||||
/* 产品视图设置。*/
|
||||
$lang->product = new stdclass();
|
||||
$lang->product->menu = new stdclass();
|
||||
|
||||
$lang->product->menu->list = '%s';
|
||||
$lang->product->menu->story = array('link' => '需求|product|browse|productID=%s', 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->menu->dynamic = '动态|product|dynamic|productID=%s';
|
||||
$lang->product->menu->plan = array('link' => '计划|productplan|browse|productID=%s', 'subModule' => 'productplan');
|
||||
$lang->product->menu->release = array('link' => '发布|release|browse|productID=%s', 'subModule' => 'release');
|
||||
$lang->product->menu->roadmap = '路线图|product|roadmap|productID=%s';
|
||||
$lang->product->menu->doc = array('link' => '文档|product|doc|productID=%s', 'subModule' => 'doc');
|
||||
$lang->product->menu->view = array('link' => '维护|product|view|productID=%s', 'alias' => 'edit');
|
||||
$lang->product->menu->module = '模块|tree|browse|productID=%s&view=story';
|
||||
$lang->product->menu->project = '项目|product|project|status=all&productID=%s';
|
||||
$lang->product->menu->order = '排序|product|order|productID=%s';
|
||||
$lang->product->menu->create = array('link' => '<span class="icon-add"> </span>添加产品|product|create', 'float' => 'right');
|
||||
$lang->product->menu->all = array('link' => '<span class="icon-allProducts"> </span>所有产品|product|index|locate=no&productID=%s', 'float' => 'right');
|
||||
|
||||
$lang->story = new stdclass();
|
||||
$lang->productplan = new stdclass();
|
||||
$lang->release = new stdclass();
|
||||
|
||||
$lang->story->menu = $lang->product->menu;
|
||||
$lang->productplan->menu = $lang->product->menu;
|
||||
$lang->release->menu = $lang->product->menu;
|
||||
|
||||
/* 项目视图菜单设置。*/
|
||||
$lang->project = new stdclass();
|
||||
$lang->project->menu = new stdclass();
|
||||
|
||||
$lang->project->menu->list = '%s';
|
||||
$lang->project->menu->task = array('link' => '任务|project|task|projectID=%s', 'subModule' => 'task', 'alias' => 'grouptask,importtask,burn,importbug');
|
||||
$lang->project->menu->story = array('link' => '需求|project|story|projectID=%s', 'subModule' => 'story', 'alias' => 'linkstory');
|
||||
$lang->project->menu->bug = 'Bug|project|bug|projectID=%s';
|
||||
$lang->project->menu->dynamic = '动态|project|dynamic|projectID=%s';
|
||||
$lang->project->menu->build = array('link' => '版本|project|build|projectID=%s', 'subModule' => 'build');
|
||||
$lang->project->menu->testtask = '测试|project|testtask|projectID=%s';
|
||||
$lang->project->menu->team = array('link' => '团队|project|team|projectID=%s', 'alias' => 'managemembers');
|
||||
$lang->project->menu->doc = array('link' => '文档|project|doc|porjectID=%s', 'subModule' => 'doc');
|
||||
$lang->project->menu->product = '产品|project|manageproducts|projectID=%s';
|
||||
$lang->project->menu->view = array('link' => '维护|project|view|projectID=%s', 'alias' => 'edit,start,suspend,delay,close');
|
||||
$lang->project->menu->order = '排序|project|order|projectID=%s';
|
||||
$lang->project->menu->create = array('link' => '<span class="icon-add"> </span>添加项目|project|create', 'float' => 'right');
|
||||
$lang->project->menu->all = array('link' => '<span class="icon-allProjects"> </span>所有项目|project|index|locate=no&status=all&projectID=%s', 'float' => 'right');
|
||||
|
||||
$lang->task = new stdclass();
|
||||
$lang->build = new stdclass();
|
||||
$lang->task->menu = $lang->project->menu;
|
||||
$lang->build->menu = $lang->project->menu;
|
||||
|
||||
/* QA视图菜单设置。*/
|
||||
$lang->bug = new stdclass();
|
||||
$lang->bug->menu = new stdclass();
|
||||
|
||||
$lang->bug->menu->product = '%s';
|
||||
$lang->bug->menu->bug = array('link' => 'Bug|bug|browse|productID=%s', 'alias' => 'view,create,edit,resolve,close,activate,report,batchedit,confirmbug,assignto', 'subModule' => 'tree');
|
||||
$lang->bug->menu->testcase = array('link' => '用例|testcase|browse|productID=%s', 'alias' => 'view,create,edit');
|
||||
$lang->bug->menu->testtask = array('link' => '测试任务|testtask|browse|productID=%s');
|
||||
|
||||
$lang->testcase = new stdclass();
|
||||
$lang->testcase->menu = new stdclass();
|
||||
|
||||
$lang->testcase->menu->product = '%s';
|
||||
$lang->testcase->menu->bug = array('link' => 'Bug|bug|browse|productID=%s');
|
||||
$lang->testcase->menu->testcase = array('link' => '用例|testcase|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit,batchedit', 'subModule' => 'tree');
|
||||
$lang->testcase->menu->testtask = array('link' => '测试任务|testtask|browse|productID=%s', 'alias' => 'view,create,edit,linkcase,cases');
|
||||
|
||||
$lang->testtask = new stdclass();
|
||||
$lang->testtask->menu = $lang->testcase->menu;
|
||||
|
||||
/* 文档视图菜单设置。*/
|
||||
$lang->doc = new stdclass();
|
||||
$lang->doc->menu = new stdclass();
|
||||
|
||||
$lang->doc->menu->list = '%s';
|
||||
$lang->doc->menu->browse = array('link' => '文档|doc|browse|libID=%s', 'alias' => 'view,create,edit');
|
||||
$lang->doc->menu->edit = '编辑|doc|editLib|libID=%s';
|
||||
$lang->doc->menu->module = '分类|tree|browse|libID=%s&viewType=doc';
|
||||
$lang->doc->menu->delete = array('link' => '删除|doc|deleteLib|libID=%s', 'target' => 'hiddenwin');
|
||||
$lang->doc->menu->create = array('link' => '<span class="icon-add"> </span>添加文档库|doc|createLib', 'float' => 'right');
|
||||
|
||||
/* 统计视图菜单设置。*/
|
||||
$lang->report = new stdclass();
|
||||
$lang->report->menu = new stdclass();
|
||||
|
||||
$lang->report->menu->product = array('link' => '产品|report|productinfo');
|
||||
$lang->report->menu->prj = array('link' => '项目|report|projectdeviation');
|
||||
$lang->report->menu->test = array('link' => '测试|report|bugsummary', 'alias' => 'bugassign');
|
||||
$lang->report->menu->staff = array('link' => '组织|report|workload');
|
||||
|
||||
/* 资源视图菜单设置。*/
|
||||
$lang->webapp = new stdclass();
|
||||
$lang->webapp->menu = new stdclass();
|
||||
$lang->webapp->menu->obtain = array('link' => '应用商店|webapp|obtain', 'float' => 'right');
|
||||
|
||||
/* 组织结构视图菜单设置。*/
|
||||
$lang->company = new stdclass();
|
||||
$lang->company->menu = new stdclass();
|
||||
$lang->company->menu->name = '%s' . $lang->arrow;
|
||||
$lang->company->menu->browseUser = array('link' => '用户|company|browse', 'subModule' => 'user');
|
||||
$lang->company->menu->dept = array('link' => '部门|dept|browse', 'subModule' => 'dept');
|
||||
$lang->company->menu->browseGroup = array('link' => '权限|group|browse', 'subModule' => 'group');
|
||||
$lang->company->menu->edit = array('link' => '公司|company|edit');
|
||||
$lang->company->menu->dynamic = '动态|company|dynamic|';
|
||||
$lang->company->menu->addGroup = array('link' => '<span class="icon-add"> </span>添加分组|group|create', 'float' => 'right');
|
||||
$lang->company->menu->batchAddUser = array('link' => '<span class="icon-add"> </span>批量添加|user|batchCreate', 'subModule' => 'user', 'float' => 'right');
|
||||
$lang->company->menu->addUser = array('link' => '<span class="icon-add"> </span>添加用户|user|create|dept=%s', 'subModule' => 'user', 'float' => 'right');
|
||||
|
||||
$lang->dept = new stdclass();
|
||||
$lang->group = new stdclass();
|
||||
$lang->user = new stdclass();
|
||||
|
||||
$lang->dept->menu = $lang->company->menu;
|
||||
$lang->group->menu = $lang->company->menu;
|
||||
$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');
|
||||
$lang->admin->menu->editor = array('link' => '扩展编辑器|editor|index', 'subModule' => 'editor');
|
||||
$lang->admin->menu->mail = array('link' => '发信|mail|index', 'subModule' => 'mail');
|
||||
$lang->admin->menu->convert = array('link' => '导入|convert|index', 'subModule' => 'convert');
|
||||
$lang->admin->menu->trashes = array('link' => '回收站|action|trash', 'subModule' => 'action');
|
||||
|
||||
$lang->convert = new stdclass();
|
||||
$lang->upgrade = new stdclass();
|
||||
$lang->action = new stdclass();
|
||||
$lang->extension = new stdclass();
|
||||
$lang->editor = new stdclass();
|
||||
$lang->mail = new stdclass();
|
||||
|
||||
$lang->convert->menu = $lang->admin->menu;
|
||||
$lang->upgrade->menu = $lang->admin->menu;
|
||||
$lang->action->menu = $lang->admin->menu;
|
||||
$lang->extension->menu = $lang->admin->menu;
|
||||
$lang->editor->menu = $lang->admin->menu;
|
||||
$lang->mail->menu = $lang->admin->menu;
|
||||
|
||||
/* 菜单分组。*/
|
||||
$lang->menugroup = new stdclass();
|
||||
$lang->menugroup->release = 'product';
|
||||
$lang->menugroup->story = 'product';
|
||||
$lang->menugroup->productplan = 'product';
|
||||
$lang->menugroup->task = 'project';
|
||||
$lang->menugroup->build = 'project';
|
||||
$lang->menugroup->convert = 'admin';
|
||||
$lang->menugroup->upgrade = 'admin';
|
||||
$lang->menugroup->user = 'company';
|
||||
$lang->menugroup->group = 'company';
|
||||
$lang->menugroup->bug = 'qa';
|
||||
$lang->menugroup->testcase = 'qa';
|
||||
$lang->menugroup->testtask = 'qa';
|
||||
$lang->menugroup->people = 'company';
|
||||
$lang->menugroup->dept = 'company';
|
||||
$lang->menugroup->todo = 'my';
|
||||
$lang->menugroup->action = 'admin';
|
||||
$lang->menugroup->extension = 'admin';
|
||||
$lang->menugroup->editor = 'admin';
|
||||
$lang->menugroup->mail = 'admin';
|
||||
|
||||
/* 错误提示信息。*/
|
||||
$lang->error = new stdclass();
|
||||
$lang->error->companyNotFound = "您访问的域名 %s 没有对应的公司。";
|
||||
$lang->error->length = array("『%s』长度错误,应当为『%s』", "『%s』长度应当不超过『%s』,且不小于『%s』。");
|
||||
$lang->error->reg = "『%s』不符合格式,应当为:『%s』。";
|
||||
$lang->error->unique = "『%s』已经有『%s』这条记录了。如果您确定该记录已删除,请到后台管理-回收站还原。。";
|
||||
$lang->error->gt = "『%s』应当大于『%s』。";
|
||||
$lang->error->ge = "『%s』应当不小于『%s』。";
|
||||
$lang->error->notempty = "『%s』不能为空。";
|
||||
$lang->error->empty = "『%s』必须为空。";
|
||||
$lang->error->equal = "『%s』必须为『%s』。";
|
||||
$lang->error->int = array("『%s』应当是数字。", "『%s』应当介于『%s-%s』之间。");
|
||||
$lang->error->float = "『%s』应当是数字,可以是小数。";
|
||||
$lang->error->email = "『%s』应当为合法的EMAIL。";
|
||||
$lang->error->date = "『%s』应当为合法的日期。";
|
||||
$lang->error->account = "『%s』应当为合法的用户名。";
|
||||
$lang->error->passwordsame = "两次密码应当相等。";
|
||||
$lang->error->passwordrule = "密码应该符合规则,长度至少为六位。";
|
||||
$lang->error->accessDenied = '您没有访问权限';
|
||||
|
||||
/* 分页信息。*/
|
||||
$lang->pager = new stdclass();
|
||||
$lang->pager->noRecord = "暂时没有记录";
|
||||
$lang->pager->digest = "共<strong>%s</strong>条记录,每页 <strong>%s</strong>条,<strong>%s/%s</strong> ";
|
||||
$lang->pager->first = "首页";
|
||||
$lang->pager->pre = "上页";
|
||||
$lang->pager->next = "下页";
|
||||
$lang->pager->last = "末页";
|
||||
$lang->pager->locate = "GO!";
|
||||
|
||||
$lang->zentaoSite = "官方网站";
|
||||
$lang->chinaScrum = "<a href='http://www.zentao.net/goto.php?item=chinascrum' target='_blank'>Scrum社区</a> ";
|
||||
$lang->agileTraining = "<a href='http://www.zentao.net/goto.php?item=agiletrain' target='_blank'>培训</a> ";
|
||||
$lang->donate = "<a href='http://www.zentao.net/goto.php?item=donate' target='_blank'>捐赠</a> ";
|
||||
$lang->proVersion = "<a href='http://www.zentao.net/goto.php?item=proversion&from=footer' target='_blank' class='red'>购买专业版(特惠)!</a> ";
|
||||
$lang->downNotify = "下载桌面提醒";
|
||||
|
||||
$lang->suhosinInfo = "警告:数据太多,请在php.ini中修改<font color=red>sohusin.post.max_vars</font>和<font color=red>sohusin.request.max_vars</font>(设置更大的数)。 保存并重新启动apache,否则会造成部分数据无法保存。";
|
||||
|
||||
$lang->noResultsMatch = "没有匹配结果";
|
||||
|
||||
/* 时间格式设置。*/
|
||||
define('DT_DATETIME1', 'Y-m-d H:i:s');
|
||||
define('DT_DATETIME2', 'y-m-d H:i');
|
||||
define('DT_MONTHTIME1', 'n/d H:i');
|
||||
define('DT_MONTHTIME2', 'n月d日 H:i');
|
||||
define('DT_DATE1', 'Y-m-d');
|
||||
define('DT_DATE2', 'Ymd');
|
||||
define('DT_DATE3', 'Y年m月d日');
|
||||
define('DT_DATE4', 'n月j日');
|
||||
define('DT_TIME1', 'H:i:s');
|
||||
define('DT_TIME2', 'H:i');
|
||||
|
||||
/* datepicker 时间*/
|
||||
$lang->datepicker = new stdclass();
|
||||
|
||||
$lang->datepicker->dpText = new stdclass();
|
||||
$lang->datepicker->dpText->TEXT_OR = '或 ';
|
||||
$lang->datepicker->dpText->TEXT_PREV_YEAR = '去年';
|
||||
$lang->datepicker->dpText->TEXT_PREV_MONTH = '上月';
|
||||
$lang->datepicker->dpText->TEXT_PREV_WEEK = '上周';
|
||||
$lang->datepicker->dpText->TEXT_YESTERDAY = '昨天';
|
||||
$lang->datepicker->dpText->TEXT_THIS_MONTH = '本月';
|
||||
$lang->datepicker->dpText->TEXT_THIS_WEEK = '本周';
|
||||
$lang->datepicker->dpText->TEXT_TODAY = '今天';
|
||||
$lang->datepicker->dpText->TEXT_NEXT_YEAR = '明年';
|
||||
$lang->datepicker->dpText->TEXT_NEXT_MONTH = '下月';
|
||||
$lang->datepicker->dpText->TEXT_CLOSE = '关闭';
|
||||
$lang->datepicker->dpText->TEXT_DATE = '选择时间段';
|
||||
$lang->datepicker->dpText->TEXT_CHOOSE_DATE = '选择日期';
|
||||
|
||||
$lang->datepicker->dayNames = array('日', '一', '二', '三', '四', '五', '六');
|
||||
$lang->datepicker->abbrDayNames = array('日', '一', '二', '三', '四', '五', '六');
|
||||
$lang->datepicker->monthNames = array('一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月');
|
||||
|
||||
include (dirname(__FILE__) . '/menuOrder.php');
|
||||
<?php
|
||||
/**
|
||||
* The common simplified chinese file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package ZenTaoPMS
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->arrow = '<span class="icon-arrow"> </span>';
|
||||
$lang->colon = '::';
|
||||
$lang->comma = ',';
|
||||
$lang->dot = '。';
|
||||
$lang->at = ' 于 ';
|
||||
$lang->downArrow = '↓';
|
||||
|
||||
$lang->ZenTaoPMS = '禅道管理';
|
||||
$lang->welcome = "欢迎使用『%s』{$lang->colon} {$lang->ZenTaoPMS}";
|
||||
$lang->myControl = "我的地盘";
|
||||
$lang->currentPos = '当前位置:';
|
||||
$lang->logout = '退出';
|
||||
$lang->login = '登录';
|
||||
$lang->aboutZenTao = '关于';
|
||||
$lang->todayIs = '今天是%s,';
|
||||
$lang->runInfo = "<div class='row'><div class='u-1 a-center' id='debugbar'>时间: %s 毫秒, 内存: %s KB, 查询: %s. </div></div>";
|
||||
|
||||
$lang->reset = '重填';
|
||||
$lang->edit = '编辑';
|
||||
$lang->copy = '复制';
|
||||
$lang->delete = '删除';
|
||||
$lang->close = '关闭';
|
||||
$lang->link = '关联';
|
||||
$lang->unlink = '移除';
|
||||
$lang->import = '导入';
|
||||
$lang->export = '导出';
|
||||
$lang->exportType = '导出类型';
|
||||
$lang->setFileName = '文件名:';
|
||||
$lang->activate = '激活';
|
||||
$lang->submitting = '稍候...';
|
||||
$lang->save = '保存';
|
||||
$lang->confirm = '确认';
|
||||
$lang->preview = '查看';
|
||||
$lang->goback = '返回';
|
||||
$lang->go = 'GO';
|
||||
$lang->more = '更多';
|
||||
|
||||
$lang->actions = '操作';
|
||||
$lang->comment = '备注';
|
||||
$lang->history = '历史记录';
|
||||
$lang->attatch = '附件';
|
||||
$lang->reverse = '切换顺序';
|
||||
$lang->switchDisplay= '切换显示';
|
||||
$lang->switchHelp = '切换帮助';
|
||||
$lang->addFiles = '上传了附件 ';
|
||||
$lang->files = '附件 ';
|
||||
$lang->unfold = '+';
|
||||
$lang->fold = '-';
|
||||
|
||||
$lang->selectAll = '全选';
|
||||
$lang->selectReverse = '反选';
|
||||
$lang->notFound = '抱歉,您访问的对象并不存在!';
|
||||
$lang->showAll = '++ 全部显示 ++';
|
||||
$lang->hideClosed = '-- 显示进行中 --';
|
||||
|
||||
$lang->future = '未来';
|
||||
$lang->year = '年';
|
||||
$lang->workingHour = '工时';
|
||||
|
||||
$lang->idAB = 'ID';
|
||||
$lang->priAB = 'P';
|
||||
$lang->statusAB = '状态';
|
||||
$lang->openedByAB = '创建';
|
||||
$lang->assignedToAB = '指派';
|
||||
$lang->typeAB = '类型';
|
||||
|
||||
$lang->common = new stdclass();
|
||||
$lang->common->common = '公有模块';
|
||||
|
||||
/* 主导航菜单。*/
|
||||
$lang->menu = new stdclass();
|
||||
$lang->menu->my = '<span id="mainbg"> </span>我的地盘|my|index';
|
||||
$lang->menu->product = '产品|product|index';
|
||||
$lang->menu->project = '项目|project|index';
|
||||
$lang->menu->qa = '测试|qa|index';
|
||||
$lang->menu->doc = '文档|doc|index';
|
||||
$lang->menu->report = '统计|report|index';
|
||||
$lang->menu->webapp = '应用|webapp|index';
|
||||
$lang->menu->company = '组织|company|index';
|
||||
$lang->menu->admin = '后台|admin|index';
|
||||
|
||||
/* 查询条中可以选择的对象列表。*/
|
||||
$lang->searchObjects['bug'] = 'B:Bug';
|
||||
$lang->searchObjects['story'] = 'S:需求';
|
||||
$lang->searchObjects['task'] = 'T:任务';
|
||||
$lang->searchObjects['testcase'] = 'C:用例';
|
||||
$lang->searchObjects['project'] = 'P:项目';
|
||||
$lang->searchObjects['product'] = 'P:产品';
|
||||
$lang->searchObjects['user'] = 'U:用户';
|
||||
$lang->searchObjects['build'] = 'B:版本';
|
||||
$lang->searchObjects['release'] = 'R:发布';
|
||||
$lang->searchObjects['productplan'] = 'P:产品计划';
|
||||
$lang->searchObjects['testtask'] = 'T:测试任务';
|
||||
$lang->searchObjects['doc'] = 'D:文档';
|
||||
$lang->searchTips = '编号(ctrl+g)';
|
||||
|
||||
/* 导入支持的编码格式。*/
|
||||
$lang->importEncodeList['gbk'] = 'GBK';
|
||||
$lang->importEncodeList['big5'] = 'BIG5';
|
||||
$lang->importEncodeList['utf-8'] = 'UTF-8';
|
||||
|
||||
/* 导出文件的类型列表。*/
|
||||
$lang->exportFileTypeList['csv'] = 'csv';
|
||||
$lang->exportFileTypeList['xml'] = 'xml';
|
||||
$lang->exportFileTypeList['html'] = 'html';
|
||||
|
||||
$lang->exportTypeList['all'] = '导出全部';
|
||||
$lang->exportTypeList['selected'] = '导出选中';
|
||||
|
||||
/* 支持的编码格式。*/
|
||||
$lang->exportEncodeList['gbk'] = 'GBK';
|
||||
$lang->exportEncodeList['big5'] = 'BIG5';
|
||||
$lang->exportEncodeList['utf-8'] = 'UTF-8';
|
||||
|
||||
/* 风格列表。*/
|
||||
$lang->themes['default'] = '默认';
|
||||
$lang->themes['green'] = '绿色';
|
||||
$lang->themes['red'] = '红色';
|
||||
$lang->themes['classblue'] = '经典蓝';
|
||||
|
||||
/* 首页菜单设置。*/
|
||||
$lang->index = new stdclass();
|
||||
$lang->index->menu = new stdclass();
|
||||
|
||||
$lang->index->menu->product = '浏览产品|product|browse';
|
||||
$lang->index->menu->project = '浏览项目|project|browse';
|
||||
|
||||
/* 我的地盘菜单设置。*/
|
||||
$lang->my = new stdclass();
|
||||
$lang->my->menu = new stdclass();
|
||||
|
||||
$lang->my->menu->account = '<span id="mybg"> </span>%s' . $lang->arrow;
|
||||
$lang->my->menu->index = '首页|my|index';
|
||||
$lang->my->menu->todo = array('link' => '待办|my|todo|', 'subModule' => 'todo');
|
||||
$lang->my->menu->task = '任务|my|task|';
|
||||
$lang->my->menu->bug = 'Bug|my|bug|';
|
||||
$lang->my->menu->testtask = array('link' => '测试|my|testtask|', 'alias' => 'testcase');
|
||||
$lang->my->menu->story = '需求|my|story|';
|
||||
$lang->my->menu->myProject = '项目|my|project|';
|
||||
$lang->my->menu->dynamic = '动态|my|dynamic|';
|
||||
$lang->my->menu->profile = array('link' => '档案|my|profile|', 'alias' => 'editprofile');
|
||||
$lang->my->menu->changePassword = '密码|my|changepassword|';
|
||||
|
||||
$lang->todo = new stdclass();
|
||||
$lang->todo->menu = $lang->my->menu;
|
||||
|
||||
/* 产品视图设置。*/
|
||||
$lang->product = new stdclass();
|
||||
$lang->product->menu = new stdclass();
|
||||
|
||||
$lang->product->menu->list = '%s';
|
||||
$lang->product->menu->story = array('link' => '需求|product|browse|productID=%s', 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->menu->dynamic = '动态|product|dynamic|productID=%s';
|
||||
$lang->product->menu->plan = array('link' => '计划|productplan|browse|productID=%s', 'subModule' => 'productplan');
|
||||
$lang->product->menu->release = array('link' => '发布|release|browse|productID=%s', 'subModule' => 'release');
|
||||
$lang->product->menu->roadmap = '路线图|product|roadmap|productID=%s';
|
||||
$lang->product->menu->doc = array('link' => '文档|product|doc|productID=%s', 'subModule' => 'doc');
|
||||
$lang->product->menu->view = array('link' => '维护|product|view|productID=%s', 'alias' => 'edit');
|
||||
$lang->product->menu->module = '模块|tree|browse|productID=%s&view=story';
|
||||
$lang->product->menu->project = '项目|product|project|status=all&productID=%s';
|
||||
$lang->product->menu->order = '排序|product|order|productID=%s';
|
||||
$lang->product->menu->create = array('link' => '<span class="icon-add"> </span>添加产品|product|create', 'float' => 'right');
|
||||
$lang->product->menu->all = array('link' => '<span class="icon-allProducts"> </span>所有产品|product|index|locate=no&productID=%s', 'float' => 'right');
|
||||
|
||||
$lang->story = new stdclass();
|
||||
$lang->productplan = new stdclass();
|
||||
$lang->release = new stdclass();
|
||||
|
||||
$lang->story->menu = $lang->product->menu;
|
||||
$lang->productplan->menu = $lang->product->menu;
|
||||
$lang->release->menu = $lang->product->menu;
|
||||
|
||||
/* 项目视图菜单设置。*/
|
||||
$lang->project = new stdclass();
|
||||
$lang->project->menu = new stdclass();
|
||||
|
||||
$lang->project->menu->list = '%s';
|
||||
$lang->project->menu->task = array('link' => '任务|project|task|projectID=%s', 'subModule' => 'task', 'alias' => 'grouptask,importtask,burn,importbug');
|
||||
$lang->project->menu->story = array('link' => '需求|project|story|projectID=%s', 'subModule' => 'story', 'alias' => 'linkstory');
|
||||
$lang->project->menu->bug = 'Bug|project|bug|projectID=%s';
|
||||
$lang->project->menu->dynamic = '动态|project|dynamic|projectID=%s';
|
||||
$lang->project->menu->build = array('link' => '版本|project|build|projectID=%s', 'subModule' => 'build');
|
||||
$lang->project->menu->testtask = '测试|project|testtask|projectID=%s';
|
||||
$lang->project->menu->team = array('link' => '团队|project|team|projectID=%s', 'alias' => 'managemembers');
|
||||
$lang->project->menu->doc = array('link' => '文档|project|doc|porjectID=%s', 'subModule' => 'doc');
|
||||
$lang->project->menu->product = '产品|project|manageproducts|projectID=%s';
|
||||
$lang->project->menu->view = array('link' => '维护|project|view|projectID=%s', 'alias' => 'edit,start,suspend,delay,close');
|
||||
$lang->project->menu->order = '排序|project|order|projectID=%s';
|
||||
$lang->project->menu->create = array('link' => '<span class="icon-add"> </span>添加项目|project|create', 'float' => 'right');
|
||||
$lang->project->menu->all = array('link' => '<span class="icon-allProjects"> </span>所有项目|project|index|locate=no&status=all&projectID=%s', 'float' => 'right');
|
||||
|
||||
$lang->task = new stdclass();
|
||||
$lang->build = new stdclass();
|
||||
$lang->task->menu = $lang->project->menu;
|
||||
$lang->build->menu = $lang->project->menu;
|
||||
|
||||
/* QA视图菜单设置。*/
|
||||
$lang->bug = new stdclass();
|
||||
$lang->bug->menu = new stdclass();
|
||||
|
||||
$lang->bug->menu->product = '%s';
|
||||
$lang->bug->menu->bug = array('link' => 'Bug|bug|browse|productID=%s', 'alias' => 'view,create,edit,resolve,close,activate,report,batchedit,confirmbug,assignto', 'subModule' => 'tree');
|
||||
$lang->bug->menu->testcase = array('link' => '用例|testcase|browse|productID=%s', 'alias' => 'view,create,edit');
|
||||
$lang->bug->menu->testtask = array('link' => '测试任务|testtask|browse|productID=%s');
|
||||
|
||||
$lang->testcase = new stdclass();
|
||||
$lang->testcase->menu = new stdclass();
|
||||
|
||||
$lang->testcase->menu->product = '%s';
|
||||
$lang->testcase->menu->bug = array('link' => 'Bug|bug|browse|productID=%s');
|
||||
$lang->testcase->menu->testcase = array('link' => '用例|testcase|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit,batchedit', 'subModule' => 'tree');
|
||||
$lang->testcase->menu->testtask = array('link' => '测试任务|testtask|browse|productID=%s', 'alias' => 'view,create,edit,linkcase,cases');
|
||||
|
||||
$lang->testtask = new stdclass();
|
||||
$lang->testtask->menu = $lang->testcase->menu;
|
||||
|
||||
/* 文档视图菜单设置。*/
|
||||
$lang->doc = new stdclass();
|
||||
$lang->doc->menu = new stdclass();
|
||||
|
||||
$lang->doc->menu->list = '%s';
|
||||
$lang->doc->menu->browse = array('link' => '文档|doc|browse|libID=%s', 'alias' => 'view,create,edit');
|
||||
$lang->doc->menu->edit = '编辑|doc|editLib|libID=%s';
|
||||
$lang->doc->menu->module = '分类|tree|browse|libID=%s&viewType=doc';
|
||||
$lang->doc->menu->delete = array('link' => '删除|doc|deleteLib|libID=%s', 'target' => 'hiddenwin');
|
||||
$lang->doc->menu->create = array('link' => '<span class="icon-add"> </span>添加文档库|doc|createLib', 'float' => 'right');
|
||||
|
||||
/* 统计视图菜单设置。*/
|
||||
$lang->report = new stdclass();
|
||||
$lang->report->menu = new stdclass();
|
||||
|
||||
$lang->report->menu->product = array('link' => '产品|report|productinfo');
|
||||
$lang->report->menu->prj = array('link' => '项目|report|projectdeviation');
|
||||
$lang->report->menu->test = array('link' => '测试|report|bugsummary', 'alias' => 'bugassign');
|
||||
$lang->report->menu->staff = array('link' => '组织|report|workload');
|
||||
|
||||
/* 资源视图菜单设置。*/
|
||||
$lang->webapp = new stdclass();
|
||||
$lang->webapp->menu = new stdclass();
|
||||
$lang->webapp->menu->obtain = array('link' => '应用商店|webapp|obtain', 'float' => 'right');
|
||||
|
||||
/* 组织结构视图菜单设置。*/
|
||||
$lang->company = new stdclass();
|
||||
$lang->company->menu = new stdclass();
|
||||
$lang->company->menu->name = '%s' . $lang->arrow;
|
||||
$lang->company->menu->browseUser = array('link' => '用户|company|browse', 'subModule' => 'user');
|
||||
$lang->company->menu->dept = array('link' => '部门|dept|browse', 'subModule' => 'dept');
|
||||
$lang->company->menu->browseGroup = array('link' => '权限|group|browse', 'subModule' => 'group');
|
||||
$lang->company->menu->edit = array('link' => '公司|company|edit');
|
||||
$lang->company->menu->dynamic = '动态|company|dynamic|';
|
||||
$lang->company->menu->addGroup = array('link' => '<span class="icon-add"> </span>添加分组|group|create', 'float' => 'right');
|
||||
$lang->company->menu->batchAddUser = array('link' => '<span class="icon-add"> </span>批量添加|user|batchCreate', 'subModule' => 'user', 'float' => 'right');
|
||||
$lang->company->menu->addUser = array('link' => '<span class="icon-add"> </span>添加用户|user|create|dept=%s', 'subModule' => 'user', 'float' => 'right');
|
||||
|
||||
$lang->dept = new stdclass();
|
||||
$lang->group = new stdclass();
|
||||
$lang->user = new stdclass();
|
||||
|
||||
$lang->dept->menu = $lang->company->menu;
|
||||
$lang->group->menu = $lang->company->menu;
|
||||
$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');
|
||||
$lang->admin->menu->editor = array('link' => '扩展编辑器|editor|index', 'subModule' => 'editor');
|
||||
$lang->admin->menu->mail = array('link' => '发信|mail|index', 'subModule' => 'mail');
|
||||
$lang->admin->menu->convert = array('link' => '导入|convert|index', 'subModule' => 'convert');
|
||||
$lang->admin->menu->trashes = array('link' => '回收站|action|trash', 'subModule' => 'action');
|
||||
|
||||
$lang->convert = new stdclass();
|
||||
$lang->upgrade = new stdclass();
|
||||
$lang->action = new stdclass();
|
||||
$lang->extension = new stdclass();
|
||||
$lang->editor = new stdclass();
|
||||
$lang->mail = new stdclass();
|
||||
|
||||
$lang->convert->menu = $lang->admin->menu;
|
||||
$lang->upgrade->menu = $lang->admin->menu;
|
||||
$lang->action->menu = $lang->admin->menu;
|
||||
$lang->extension->menu = $lang->admin->menu;
|
||||
$lang->editor->menu = $lang->admin->menu;
|
||||
$lang->mail->menu = $lang->admin->menu;
|
||||
|
||||
/* 菜单分组。*/
|
||||
$lang->menugroup = new stdclass();
|
||||
$lang->menugroup->release = 'product';
|
||||
$lang->menugroup->story = 'product';
|
||||
$lang->menugroup->productplan = 'product';
|
||||
$lang->menugroup->task = 'project';
|
||||
$lang->menugroup->build = 'project';
|
||||
$lang->menugroup->convert = 'admin';
|
||||
$lang->menugroup->upgrade = 'admin';
|
||||
$lang->menugroup->user = 'company';
|
||||
$lang->menugroup->group = 'company';
|
||||
$lang->menugroup->bug = 'qa';
|
||||
$lang->menugroup->testcase = 'qa';
|
||||
$lang->menugroup->testtask = 'qa';
|
||||
$lang->menugroup->people = 'company';
|
||||
$lang->menugroup->dept = 'company';
|
||||
$lang->menugroup->todo = 'my';
|
||||
$lang->menugroup->action = 'admin';
|
||||
$lang->menugroup->extension = 'admin';
|
||||
$lang->menugroup->editor = 'admin';
|
||||
$lang->menugroup->mail = 'admin';
|
||||
|
||||
/* 错误提示信息。*/
|
||||
$lang->error = new stdclass();
|
||||
$lang->error->companyNotFound = "您访问的域名 %s 没有对应的公司。";
|
||||
$lang->error->length = array("『%s』长度错误,应当为『%s』", "『%s』长度应当不超过『%s』,且不小于『%s』。");
|
||||
$lang->error->reg = "『%s』不符合格式,应当为:『%s』。";
|
||||
$lang->error->unique = "『%s』已经有『%s』这条记录了。如果您确定该记录已删除,请到后台管理-回收站还原。。";
|
||||
$lang->error->gt = "『%s』应当大于『%s』。";
|
||||
$lang->error->ge = "『%s』应当不小于『%s』。";
|
||||
$lang->error->notempty = "『%s』不能为空。";
|
||||
$lang->error->empty = "『%s』必须为空。";
|
||||
$lang->error->equal = "『%s』必须为『%s』。";
|
||||
$lang->error->int = array("『%s』应当是数字。", "『%s』应当介于『%s-%s』之间。");
|
||||
$lang->error->float = "『%s』应当是数字,可以是小数。";
|
||||
$lang->error->email = "『%s』应当为合法的EMAIL。";
|
||||
$lang->error->date = "『%s』应当为合法的日期。";
|
||||
$lang->error->account = "『%s』应当为合法的用户名。";
|
||||
$lang->error->passwordsame = "两次密码应当相等。";
|
||||
$lang->error->passwordrule = "密码应该符合规则,长度至少为六位。";
|
||||
$lang->error->accessDenied = '您没有访问权限';
|
||||
|
||||
/* 分页信息。*/
|
||||
$lang->pager = new stdclass();
|
||||
$lang->pager->noRecord = "暂时没有记录";
|
||||
$lang->pager->digest = "共<strong>%s</strong>条记录,每页 <strong>%s</strong>条,<strong>%s/%s</strong> ";
|
||||
$lang->pager->first = "首页";
|
||||
$lang->pager->pre = "上页";
|
||||
$lang->pager->next = "下页";
|
||||
$lang->pager->last = "末页";
|
||||
$lang->pager->locate = "GO!";
|
||||
|
||||
$lang->zentaoSite = "官方网站";
|
||||
$lang->chinaScrum = "<a href='http://www.zentao.net/goto.php?item=chinascrum' target='_blank'>Scrum社区</a> ";
|
||||
$lang->agileTraining = "<a href='http://www.zentao.net/goto.php?item=agiletrain' target='_blank'>培训</a> ";
|
||||
$lang->donate = "<a href='http://www.zentao.net/goto.php?item=donate' target='_blank'>捐赠</a> ";
|
||||
$lang->proVersion = "<a href='http://www.zentao.net/goto.php?item=proversion&from=footer' target='_blank' class='red'>购买专业版(特惠)!</a> ";
|
||||
$lang->downNotify = "下载桌面提醒";
|
||||
|
||||
$lang->suhosinInfo = "警告:数据太多,请在php.ini中修改<font color=red>sohusin.post.max_vars</font>和<font color=red>sohusin.request.max_vars</font>(设置更大的数)。 保存并重新启动apache,否则会造成部分数据无法保存。";
|
||||
|
||||
$lang->noResultsMatch = "没有匹配结果";
|
||||
|
||||
/* 时间格式设置。*/
|
||||
define('DT_DATETIME1', 'Y-m-d H:i:s');
|
||||
define('DT_DATETIME2', 'y-m-d H:i');
|
||||
define('DT_MONTHTIME1', 'n/d H:i');
|
||||
define('DT_MONTHTIME2', 'n月d日 H:i');
|
||||
define('DT_DATE1', 'Y-m-d');
|
||||
define('DT_DATE2', 'Ymd');
|
||||
define('DT_DATE3', 'Y年m月d日');
|
||||
define('DT_DATE4', 'n月j日');
|
||||
define('DT_TIME1', 'H:i:s');
|
||||
define('DT_TIME2', 'H:i');
|
||||
|
||||
/* datepicker 时间*/
|
||||
$lang->datepicker = new stdclass();
|
||||
|
||||
$lang->datepicker->dpText = new stdclass();
|
||||
$lang->datepicker->dpText->TEXT_OR = '或 ';
|
||||
$lang->datepicker->dpText->TEXT_PREV_YEAR = '去年';
|
||||
$lang->datepicker->dpText->TEXT_PREV_MONTH = '上月';
|
||||
$lang->datepicker->dpText->TEXT_PREV_WEEK = '上周';
|
||||
$lang->datepicker->dpText->TEXT_YESTERDAY = '昨天';
|
||||
$lang->datepicker->dpText->TEXT_THIS_MONTH = '本月';
|
||||
$lang->datepicker->dpText->TEXT_THIS_WEEK = '本周';
|
||||
$lang->datepicker->dpText->TEXT_TODAY = '今天';
|
||||
$lang->datepicker->dpText->TEXT_NEXT_YEAR = '明年';
|
||||
$lang->datepicker->dpText->TEXT_NEXT_MONTH = '下月';
|
||||
$lang->datepicker->dpText->TEXT_CLOSE = '关闭';
|
||||
$lang->datepicker->dpText->TEXT_DATE = '选择时间段';
|
||||
$lang->datepicker->dpText->TEXT_CHOOSE_DATE = '选择日期';
|
||||
|
||||
$lang->datepicker->dayNames = array('日', '一', '二', '三', '四', '五', '六');
|
||||
$lang->datepicker->abbrDayNames = array('日', '一', '二', '三', '四', '五', '六');
|
||||
$lang->datepicker->monthNames = array('一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月');
|
||||
|
||||
include (dirname(__FILE__) . '/menuOrder.php');
|
||||
|
||||
@@ -1,396 +1,396 @@
|
||||
<?php
|
||||
/**
|
||||
* The common simplified chinese file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package ZenTaoPMS
|
||||
* @version $Id: zh-tw.php 3864 2012-12-20 08:00:07Z wyd621@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->arrow = '<span class="icon-arrow"> </span>';
|
||||
$lang->colon = '::';
|
||||
$lang->comma = ',';
|
||||
$lang->dot = '。';
|
||||
$lang->at = ' 于 ';
|
||||
$lang->downArrow = '↓';
|
||||
|
||||
$lang->ZenTaoPMS = '禪道管理';
|
||||
$lang->welcome = "歡迎使用『%s』{$lang->colon} {$lang->ZenTaoPMS}";
|
||||
$lang->myControl = "我的地盤";
|
||||
$lang->currentPos = '當前位置:';
|
||||
$lang->logout = '退出';
|
||||
$lang->login = '登錄';
|
||||
$lang->aboutZenTao = '關於';
|
||||
$lang->todayIs = '今天是%s,';
|
||||
$lang->runInfo = "<div class='row'><div class='u-1 a-center' id='debugbar'>時間: %s 毫秒, 內存: %s KB, 查詢: %s. </div></div>";
|
||||
|
||||
$lang->reset = '重填';
|
||||
$lang->edit = '編輯';
|
||||
$lang->copy = '複製';
|
||||
$lang->delete = '刪除';
|
||||
$lang->close = '關閉';
|
||||
$lang->link = '關聯';
|
||||
$lang->unlink = '移除';
|
||||
$lang->import = '導入';
|
||||
$lang->export = '導出';
|
||||
$lang->exportType = '導出類型';
|
||||
$lang->setFileName = '檔案名:';
|
||||
$lang->activate = '激活';
|
||||
$lang->submitting = '稍候...';
|
||||
$lang->save = '保存';
|
||||
$lang->confirm = '確認';
|
||||
$lang->preview = '查看';
|
||||
$lang->goback = '返回';
|
||||
$lang->go = 'GO';
|
||||
$lang->more = '更多';
|
||||
|
||||
$lang->actions = '操作';
|
||||
$lang->comment = '備註';
|
||||
$lang->history = '歷史記錄';
|
||||
$lang->attatch = '附件';
|
||||
$lang->reverse = '切換順序';
|
||||
$lang->switchDisplay= '切換顯示';
|
||||
$lang->switchHelp = '切換幫助';
|
||||
$lang->addFiles = '上傳了附件 ';
|
||||
$lang->files = '附件 ';
|
||||
$lang->unfold = '+';
|
||||
$lang->fold = '-';
|
||||
|
||||
$lang->selectAll = '全選';
|
||||
$lang->selectReverse = '反選';
|
||||
$lang->notFound = '抱歉,您訪問的對象並不存在!';
|
||||
$lang->showAll = '++ 全部顯示 ++';
|
||||
$lang->hideClosed = '-- 隱藏已結束 --';
|
||||
|
||||
$lang->future = '未來';
|
||||
$lang->year = '年';
|
||||
$lang->workingHour = '工時';
|
||||
|
||||
$lang->idAB = 'ID';
|
||||
$lang->priAB = 'P';
|
||||
$lang->statusAB = '狀態';
|
||||
$lang->openedByAB = '創建';
|
||||
$lang->assignedToAB = '指派';
|
||||
$lang->typeAB = '類型';
|
||||
|
||||
$lang->common = new stdclass();
|
||||
$lang->common->common = '公有模組';
|
||||
|
||||
/* 主導航菜單。*/
|
||||
$lang->menu = new stdclass();
|
||||
$lang->menu->my = '<span id="mainbg"> </span>我的地盤|my|index';
|
||||
$lang->menu->product = '產品|product|index';
|
||||
$lang->menu->project = '項目|project|index';
|
||||
$lang->menu->qa = '測試|qa|index';
|
||||
$lang->menu->doc = '文檔|doc|index';
|
||||
$lang->menu->report = '統計|report|index';
|
||||
//$lang->menu->webapp = '應用中心|webapp|index';
|
||||
$lang->menu->company = '組織|company|index';
|
||||
$lang->menu->admin = '管理|admin|index';
|
||||
|
||||
/* 查詢條中可以選擇的對象列表。*/
|
||||
$lang->searchObjects['bug'] = 'B:Bug';
|
||||
$lang->searchObjects['story'] = 'S:需求';
|
||||
$lang->searchObjects['task'] = 'T:任務';
|
||||
$lang->searchObjects['testcase'] = 'C:用例';
|
||||
$lang->searchObjects['project'] = 'P:項目';
|
||||
$lang->searchObjects['product'] = 'P:產品';
|
||||
$lang->searchObjects['user'] = 'U:用戶';
|
||||
$lang->searchObjects['build'] = 'B:版本';
|
||||
$lang->searchObjects['release'] = 'R:發佈';
|
||||
$lang->searchObjects['productplan'] = 'P:產品計劃';
|
||||
$lang->searchObjects['testtask'] = 'T:測試任務';
|
||||
$lang->searchObjects['doc'] = 'D:文檔';
|
||||
$lang->searchTips = '編號(ctrl+g)';
|
||||
|
||||
/* 導入支持的編碼格式。*/
|
||||
$lang->importEncodeList['gbk'] = 'GBK';
|
||||
$lang->importEncodeList['big5'] = 'BIG5';
|
||||
$lang->importEncodeList['utf-8'] = 'UTF-8';
|
||||
|
||||
/* 導出檔案的類型列表。*/
|
||||
$lang->exportFileTypeList['csv'] = 'csv';
|
||||
$lang->exportFileTypeList['xml'] = 'xml';
|
||||
$lang->exportFileTypeList['html'] = 'html';
|
||||
|
||||
$lang->exportTypeList['all'] = '導出全部';
|
||||
$lang->exportTypeList['selected'] = '導出選中';
|
||||
|
||||
/* 支持的編碼格式。*/
|
||||
$lang->exportEncodeList['gbk'] = 'GBK';
|
||||
$lang->exportEncodeList['big5'] = 'BIG5';
|
||||
$lang->exportEncodeList['utf-8'] = 'UTF-8';
|
||||
|
||||
/* 風格列表。*/
|
||||
$lang->themes['default'] = '預設';
|
||||
$lang->themes['green'] = '綠色';
|
||||
$lang->themes['red'] = '紅色';
|
||||
$lang->themes['classblue'] = '經典藍';
|
||||
|
||||
/* 首頁菜單設置。*/
|
||||
$lang->index = new stdclass();
|
||||
$lang->index->menu = new stdclass();
|
||||
|
||||
$lang->index->menu->product = '瀏覽產品|product|browse';
|
||||
$lang->index->menu->project = '瀏覽項目|project|browse';
|
||||
|
||||
/* 我的地盤菜單設置。*/
|
||||
$lang->my = new stdclass();
|
||||
$lang->my->menu = new stdclass();
|
||||
|
||||
$lang->my->menu->account = '<span id="mybg"> </span>%s' . $lang->arrow;
|
||||
$lang->my->menu->index = '首頁|my|index';
|
||||
$lang->my->menu->todo = array('link' => '待辦|my|todo|', 'subModule' => 'todo');
|
||||
$lang->my->menu->task = '任務|my|task|';
|
||||
$lang->my->menu->bug = '缺陷|my|bug|';
|
||||
$lang->my->menu->testtask = array('link' => '測試|my|testtask|', 'alias' => 'testcase');
|
||||
$lang->my->menu->story = '需求|my|story|';
|
||||
$lang->my->menu->myProject = '項目|my|project|';
|
||||
$lang->my->menu->dynamic = '動態|my|dynamic|';
|
||||
$lang->my->menu->profile = array('link' => '檔案|my|profile|', 'alias' => 'editprofile');
|
||||
$lang->my->menu->changePassword = '密碼|my|changepassword|';
|
||||
|
||||
$lang->todo = new stdclass();
|
||||
$lang->todo->menu = $lang->my->menu;
|
||||
|
||||
/* 產品視圖設置。*/
|
||||
$lang->product = new stdclass();
|
||||
$lang->product->menu = new stdclass();
|
||||
|
||||
$lang->product->menu->list = '%s';
|
||||
$lang->product->menu->story = array('link' => '需求|product|browse|productID=%s', 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->menu->dynamic = '動態|product|dynamic|productID=%s';
|
||||
$lang->product->menu->plan = array('link' => '計劃|productplan|browse|productID=%s', 'subModule' => 'productplan');
|
||||
$lang->product->menu->release = array('link' => '發佈|release|browse|productID=%s', 'subModule' => 'release');
|
||||
$lang->product->menu->roadmap = '路線圖|product|roadmap|productID=%s';
|
||||
$lang->product->menu->doc = array('link' => '文檔|product|doc|productID=%s', 'subModule' => 'doc');
|
||||
$lang->product->menu->view = array('link' => '維護|product|view|productID=%s', 'alias' => 'edit');
|
||||
$lang->product->menu->module = '模組|tree|browse|productID=%s&view=story';
|
||||
$lang->product->menu->project = '項目|product|project|status=all&productID=%s';
|
||||
$lang->product->menu->order = '排序|product|order|productID=%s';
|
||||
$lang->product->menu->create = array('link' => '<span class="icon-addProduct"> </span>新增產品|product|create', 'float' => 'right');
|
||||
$lang->product->menu->all = array('link' => '<span class="icon-allProducts"> </span>所有產品|product|index|locate=no&productID=%s', 'float' => 'right');
|
||||
|
||||
$lang->story = new stdclass();
|
||||
$lang->productplan = new stdclass();
|
||||
$lang->release = new stdclass();
|
||||
|
||||
$lang->story->menu = $lang->product->menu;
|
||||
$lang->productplan->menu = $lang->product->menu;
|
||||
$lang->release->menu = $lang->product->menu;
|
||||
|
||||
/* 項目視圖菜單設置。*/
|
||||
$lang->project = new stdclass();
|
||||
$lang->project->menu = new stdclass();
|
||||
|
||||
$lang->project->menu->list = '%s';
|
||||
$lang->project->menu->task = array('link' => '任務|project|task|projectID=%s', 'subModule' => 'task', 'alias' => 'grouptask,importtask,burn,importbug');
|
||||
$lang->project->menu->story = array('link' => '需求|project|story|projectID=%s', 'subModule' => 'story', 'alias' => 'linkstory');
|
||||
$lang->project->menu->bug = 'Bug|project|bug|projectID=%s';
|
||||
$lang->project->menu->dynamic = '動態|project|dynamic|projectID=%s';
|
||||
$lang->project->menu->build = array('link' => '版本|project|build|projectID=%s', 'subModule' => 'build');
|
||||
$lang->project->menu->testtask = '測試|project|testtask|projectID=%s';
|
||||
$lang->project->menu->team = array('link' => '團隊|project|team|projectID=%s', 'alias' => 'managemembers');
|
||||
$lang->project->menu->doc = array('link' => '文檔|project|doc|porjectID=%s', 'subModule' => 'doc');
|
||||
$lang->project->menu->product = '產品|project|manageproducts|projectID=%s';
|
||||
$lang->project->menu->view = array('link' => '維護|project|view|projectID=%s', 'alias' => 'edit');
|
||||
$lang->project->menu->order = '排序|project|order|projectID=%s';
|
||||
$lang->project->menu->create = array('link' => '<span class="icon-addProject"> </span>新增項目|project|create', 'float' => 'right');
|
||||
$lang->project->menu->all = array('link' => '<span class="icon-allProjects"> </span>所有項目|project|index|locate=no&status=undone&projectID=%s', 'float' => 'right');
|
||||
|
||||
$lang->task = new stdclass();
|
||||
$lang->build = new stdclass();
|
||||
$lang->task->menu = $lang->project->menu;
|
||||
$lang->build->menu = $lang->project->menu;
|
||||
|
||||
/* QA視圖菜單設置。*/
|
||||
$lang->bug = new stdclass();
|
||||
$lang->bug->menu = new stdclass();
|
||||
|
||||
$lang->bug->menu->product = '%s';
|
||||
$lang->bug->menu->bug = array('link' => '缺陷管理|bug|browse|productID=%s', 'alias' => 'view,create,edit,resolve,close,activate,report,batchedit', 'subModule' => 'tree');
|
||||
$lang->bug->menu->testcase = array('link' => '用例管理|testcase|browse|productID=%s', 'alias' => 'view,create,edit');
|
||||
$lang->bug->menu->testtask = array('link' => '測試任務|testtask|browse|productID=%s');
|
||||
|
||||
$lang->testcase = new stdclass();
|
||||
$lang->testcase->menu = new stdclass();
|
||||
|
||||
$lang->testcase->menu->product = '%s';
|
||||
$lang->testcase->menu->bug = array('link' => '缺陷管理|bug|browse|productID=%s');
|
||||
$lang->testcase->menu->testcase = array('link' => '用例管理|testcase|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit,batchedit', 'subModule' => 'tree');
|
||||
$lang->testcase->menu->testtask = array('link' => '測試任務|testtask|browse|productID=%s', 'alias' => 'view,create,edit,linkcase,cases');
|
||||
|
||||
$lang->testtask = new stdclass();
|
||||
$lang->testtask->menu = $lang->testcase->menu;
|
||||
|
||||
/* 文檔視圖菜單設置。*/
|
||||
$lang->doc = new stdclass();
|
||||
$lang->doc->menu = new stdclass();
|
||||
|
||||
$lang->doc->menu->list = '%s';
|
||||
$lang->doc->menu->browse = array('link' => '文檔列表|doc|browse|libID=%s', 'alias' => 'view,create,edit');
|
||||
$lang->doc->menu->edit = '編輯文檔庫|doc|editLib|libID=%s';
|
||||
$lang->doc->menu->module = '維護模組|tree|browse|libID=%s&viewType=doc';
|
||||
$lang->doc->menu->delete = array('link' => '刪除文檔庫|doc|deleteLib|libID=%s', 'target' => 'hiddenwin');
|
||||
$lang->doc->menu->create = array('link' => '<span class="icon-add1"> </span>新增文檔庫|doc|createLib', 'float' => 'right');
|
||||
|
||||
/* 統計視圖菜單設置。*/
|
||||
$lang->report = new stdclass();
|
||||
$lang->report->menu = new stdclass();
|
||||
|
||||
$lang->report->menu->product = array('link' => '產品|report|productinfo');
|
||||
$lang->report->menu->prj = array('link' => '項目|report|projectdeviation');
|
||||
$lang->report->menu->test = array('link' => '測試|report|bugsummary', 'alias' => 'bugassign');
|
||||
$lang->report->menu->staff = array('link' => '組織|report|workload');
|
||||
|
||||
/* 資源視圖菜單設置。*/
|
||||
$lang->webapp = new stdclass();
|
||||
$lang->webapp->menu = new stdclass();
|
||||
//$lang->webapp->menu->obtain = array('link' => '應用商店|webapp|obtain', 'float' => 'right');
|
||||
|
||||
/* 組織結構視圖菜單設置。*/
|
||||
$lang->company = new stdclass();
|
||||
$lang->company->menu = new stdclass();
|
||||
$lang->company->menu->name = '%s' . $lang->arrow;
|
||||
$lang->company->menu->browseUser = array('link' => '用戶|company|browse', 'subModule' => 'user');
|
||||
$lang->company->menu->dept = array('link' => '部門|dept|browse', 'subModule' => 'dept');
|
||||
$lang->company->menu->browseGroup = array('link' => '權限|group|browse', 'subModule' => 'group');
|
||||
$lang->company->menu->edit = array('link' => '公司|company|edit');
|
||||
$lang->company->menu->dynamic = '動態|company|dynamic|';
|
||||
$lang->company->menu->addGroup = array('link' => '<span class="icon-add1"> </span>添加分組|group|create', 'float' => 'right');
|
||||
$lang->company->menu->batchAddUser = array('link' => '<span class="icon-add1"> </span>批量添加|user|batchCreate', 'subModule' => 'user', 'float' => 'right');
|
||||
$lang->company->menu->addUser = array('link' => '<span class="icon-add1"> </span>添加用戶|user|create|dept=%s', 'subModule' => 'user', 'float' => 'right');
|
||||
|
||||
$lang->dept = new stdclass();
|
||||
$lang->group = new stdclass();
|
||||
$lang->user = new stdclass();
|
||||
|
||||
$lang->dept->menu = $lang->company->menu;
|
||||
$lang->group->menu = $lang->company->menu;
|
||||
$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');
|
||||
$lang->admin->menu->editor = array('link' => '擴展編輯器|editor|index', 'subModule' => 'editor');
|
||||
$lang->admin->menu->mail = array('link' => '發信|mail|index', 'subModule' => 'mail');
|
||||
$lang->admin->menu->clearData = array('link' => '重置|admin|cleardata');
|
||||
$lang->admin->menu->convert = array('link' => '導入|convert|index', 'subModule' => 'convert');
|
||||
$lang->admin->menu->trashes = array('link' => '資源回收筒|action|trash', 'subModule' => 'action');
|
||||
|
||||
$lang->convert = new stdclass();
|
||||
$lang->upgrade = new stdclass();
|
||||
$lang->action = new stdclass();
|
||||
$lang->extension = new stdclass();
|
||||
$lang->editor = new stdclass();
|
||||
$lang->mail = new stdclass();
|
||||
|
||||
$lang->convert->menu = $lang->admin->menu;
|
||||
$lang->upgrade->menu = $lang->admin->menu;
|
||||
$lang->action->menu = $lang->admin->menu;
|
||||
$lang->extension->menu = $lang->admin->menu;
|
||||
$lang->editor->menu = $lang->admin->menu;
|
||||
$lang->mail->menu = $lang->admin->menu;
|
||||
|
||||
/* 菜單分組。*/
|
||||
$lang->menugroup = new stdclass();
|
||||
$lang->menugroup->release = 'product';
|
||||
$lang->menugroup->story = 'product';
|
||||
$lang->menugroup->productplan = 'product';
|
||||
$lang->menugroup->task = 'project';
|
||||
$lang->menugroup->build = 'project';
|
||||
$lang->menugroup->convert = 'admin';
|
||||
$lang->menugroup->upgrade = 'admin';
|
||||
$lang->menugroup->user = 'company';
|
||||
$lang->menugroup->group = 'company';
|
||||
$lang->menugroup->bug = 'qa';
|
||||
$lang->menugroup->testcase = 'qa';
|
||||
$lang->menugroup->testtask = 'qa';
|
||||
$lang->menugroup->people = 'company';
|
||||
$lang->menugroup->dept = 'company';
|
||||
$lang->menugroup->todo = 'my';
|
||||
$lang->menugroup->action = 'admin';
|
||||
$lang->menugroup->extension = 'admin';
|
||||
$lang->menugroup->editor = 'admin';
|
||||
$lang->menugroup->mail = 'admin';
|
||||
|
||||
/* 錯誤提示信息。*/
|
||||
$lang->error = new stdclass();
|
||||
$lang->error->companyNotFound = "您訪問的域名 %s 沒有對應的公司。";
|
||||
$lang->error->length = array("『%s』長度錯誤,應當為『%s』", "『%s』長度應當不超過『%s』,且不小於『%s』。");
|
||||
$lang->error->reg = "『%s』不符合格式,應當為:『%s』。";
|
||||
$lang->error->unique = "『%s』已經有『%s』這條記錄了。如果您確定該記錄已刪除,請到後台管理-資源回收筒還原。。";
|
||||
$lang->error->gt = "『%s』應當大於『%s』。";
|
||||
$lang->error->ge = "『%s』應當不小於『%s』。";
|
||||
$lang->error->notempty = "『%s』不能為空。";
|
||||
$lang->error->empty = "『%s』必須為空。";
|
||||
$lang->error->equal = "『%s』必須為『%s』。";
|
||||
$lang->error->int = array("『%s』應當是數字。", "『%s』應當介於『%s-%s』之間。");
|
||||
$lang->error->float = "『%s』應當是數字,可以是小數。";
|
||||
$lang->error->email = "『%s』應當為合法的EMAIL。";
|
||||
$lang->error->date = "『%s』應當為合法的日期。";
|
||||
$lang->error->account = "『%s』應當為合法的用戶名。";
|
||||
$lang->error->passwordsame = "兩次密碼應當相等。";
|
||||
$lang->error->passwordrule = "密碼應該符合規則,長度至少為六位。";
|
||||
$lang->error->accessDenied = '您沒有訪問權限';
|
||||
|
||||
/* 分頁信息。*/
|
||||
$lang->pager = new stdclass();
|
||||
$lang->pager->noRecord = "暫時沒有記錄";
|
||||
$lang->pager->digest = "共<strong>%s</strong>條記錄,每頁 <strong>%s</strong>條,<strong>%s/%s</strong> ";
|
||||
$lang->pager->first = "首頁";
|
||||
$lang->pager->pre = "上頁";
|
||||
$lang->pager->next = "下頁";
|
||||
$lang->pager->last = "末頁";
|
||||
$lang->pager->locate = "GO!";
|
||||
|
||||
$lang->zentaoSite = "官方網站";
|
||||
$lang->chinaScrum = "<a href='http://www.zentao.net/goto.php?item=chinascrum' target='_blank'>Scrum社區</a> ";
|
||||
$lang->agileTraining = "<a href='http://www.zentao.net/goto.php?item=agiletrain' target='_blank'>培訓</a> ";
|
||||
$lang->donate = "<a href='http://www.zentao.net/goto.php?item=donate' target='_blank'>捐贈</a> ";
|
||||
$lang->proVersion = "<a href='http://www.zentao.net/goto.php?item=proversion&from=footer' target='_blank' class='red'>購買專業版(特惠)!</a> ";
|
||||
$lang->downNotify = "下載桌面提醒";
|
||||
|
||||
$lang->suhosinInfo = "警告:數據太多,請在php.ini中修改<font color=red>sohusin.post.max_vars</font>和<font color=red>sohusin.request.max_vars</font>(設置更大的數)。 保存並重新啟動apache,否則會造成部分數據無法保存。";
|
||||
|
||||
$lang->noResultsMatch = "沒有匹配結果";
|
||||
|
||||
/* 時間格式設置。*/
|
||||
define('DT_DATETIME1', 'Y-m-d H:i:s');
|
||||
define('DT_DATETIME2', 'y-m-d H:i');
|
||||
define('DT_MONTHTIME1', 'n/d H:i');
|
||||
define('DT_MONTHTIME2', 'n月d日 H:i');
|
||||
define('DT_DATE1', 'Y-m-d');
|
||||
define('DT_DATE2', 'Ymd');
|
||||
define('DT_DATE3', 'Y年m月d日');
|
||||
define('DT_DATE4', 'n月j日');
|
||||
define('DT_TIME1', 'H:i:s');
|
||||
define('DT_TIME2', 'H:i');
|
||||
|
||||
/* datepicker 時間*/
|
||||
$lang->datepicker = new stdclass();
|
||||
|
||||
$lang->datepicker->dpText = new stdclass();
|
||||
$lang->datepicker->dpText->TEXT_OR = '或 ';
|
||||
$lang->datepicker->dpText->TEXT_PREV_YEAR = '去年';
|
||||
$lang->datepicker->dpText->TEXT_PREV_MONTH = '上月';
|
||||
$lang->datepicker->dpText->TEXT_PREV_WEEK = '上周';
|
||||
$lang->datepicker->dpText->TEXT_YESTERDAY = '昨天';
|
||||
$lang->datepicker->dpText->TEXT_THIS_MONTH = '本月';
|
||||
$lang->datepicker->dpText->TEXT_THIS_WEEK = '本週';
|
||||
$lang->datepicker->dpText->TEXT_TODAY = '今天';
|
||||
$lang->datepicker->dpText->TEXT_NEXT_YEAR = '明年';
|
||||
$lang->datepicker->dpText->TEXT_NEXT_MONTH = '下月';
|
||||
$lang->datepicker->dpText->TEXT_CLOSE = '關閉';
|
||||
$lang->datepicker->dpText->TEXT_DATE = '選擇時間段';
|
||||
$lang->datepicker->dpText->TEXT_CHOOSE_DATE = '選擇日期';
|
||||
|
||||
$lang->datepicker->dayNames = array('日', '一', '二', '三', '四', '五', '六');
|
||||
$lang->datepicker->abbrDayNames = array('日', '一', '二', '三', '四', '五', '六');
|
||||
$lang->datepicker->monthNames = array('一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月');
|
||||
|
||||
include (dirname(__FILE__) . '/menuOrder.php');
|
||||
<?php
|
||||
/**
|
||||
* The common simplified chinese file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package ZenTaoPMS
|
||||
* @version $Id: zh-tw.php 3864 2012-12-20 08:00:07Z wyd621@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->arrow = '<span class="icon-arrow"> </span>';
|
||||
$lang->colon = '::';
|
||||
$lang->comma = ',';
|
||||
$lang->dot = '。';
|
||||
$lang->at = ' 于 ';
|
||||
$lang->downArrow = '↓';
|
||||
|
||||
$lang->ZenTaoPMS = '禪道管理';
|
||||
$lang->welcome = "歡迎使用『%s』{$lang->colon} {$lang->ZenTaoPMS}";
|
||||
$lang->myControl = "我的地盤";
|
||||
$lang->currentPos = '當前位置:';
|
||||
$lang->logout = '退出';
|
||||
$lang->login = '登錄';
|
||||
$lang->aboutZenTao = '關於';
|
||||
$lang->todayIs = '今天是%s,';
|
||||
$lang->runInfo = "<div class='row'><div class='u-1 a-center' id='debugbar'>時間: %s 毫秒, 內存: %s KB, 查詢: %s. </div></div>";
|
||||
|
||||
$lang->reset = '重填';
|
||||
$lang->edit = '編輯';
|
||||
$lang->copy = '複製';
|
||||
$lang->delete = '刪除';
|
||||
$lang->close = '關閉';
|
||||
$lang->link = '關聯';
|
||||
$lang->unlink = '移除';
|
||||
$lang->import = '導入';
|
||||
$lang->export = '導出';
|
||||
$lang->exportType = '導出類型';
|
||||
$lang->setFileName = '檔案名:';
|
||||
$lang->activate = '激活';
|
||||
$lang->submitting = '稍候...';
|
||||
$lang->save = '保存';
|
||||
$lang->confirm = '確認';
|
||||
$lang->preview = '查看';
|
||||
$lang->goback = '返回';
|
||||
$lang->go = 'GO';
|
||||
$lang->more = '更多';
|
||||
|
||||
$lang->actions = '操作';
|
||||
$lang->comment = '備註';
|
||||
$lang->history = '歷史記錄';
|
||||
$lang->attatch = '附件';
|
||||
$lang->reverse = '切換順序';
|
||||
$lang->switchDisplay= '切換顯示';
|
||||
$lang->switchHelp = '切換幫助';
|
||||
$lang->addFiles = '上傳了附件 ';
|
||||
$lang->files = '附件 ';
|
||||
$lang->unfold = '+';
|
||||
$lang->fold = '-';
|
||||
|
||||
$lang->selectAll = '全選';
|
||||
$lang->selectReverse = '反選';
|
||||
$lang->notFound = '抱歉,您訪問的對象並不存在!';
|
||||
$lang->showAll = '++ 全部顯示 ++';
|
||||
$lang->hideClosed = '-- 隱藏已結束 --';
|
||||
|
||||
$lang->future = '未來';
|
||||
$lang->year = '年';
|
||||
$lang->workingHour = '工時';
|
||||
|
||||
$lang->idAB = 'ID';
|
||||
$lang->priAB = 'P';
|
||||
$lang->statusAB = '狀態';
|
||||
$lang->openedByAB = '創建';
|
||||
$lang->assignedToAB = '指派';
|
||||
$lang->typeAB = '類型';
|
||||
|
||||
$lang->common = new stdclass();
|
||||
$lang->common->common = '公有模組';
|
||||
|
||||
/* 主導航菜單。*/
|
||||
$lang->menu = new stdclass();
|
||||
$lang->menu->my = '<span id="mainbg"> </span>我的地盤|my|index';
|
||||
$lang->menu->product = '產品|product|index';
|
||||
$lang->menu->project = '項目|project|index';
|
||||
$lang->menu->qa = '測試|qa|index';
|
||||
$lang->menu->doc = '文檔|doc|index';
|
||||
$lang->menu->report = '統計|report|index';
|
||||
//$lang->menu->webapp = '應用中心|webapp|index';
|
||||
$lang->menu->company = '組織|company|index';
|
||||
$lang->menu->admin = '管理|admin|index';
|
||||
|
||||
/* 查詢條中可以選擇的對象列表。*/
|
||||
$lang->searchObjects['bug'] = 'B:Bug';
|
||||
$lang->searchObjects['story'] = 'S:需求';
|
||||
$lang->searchObjects['task'] = 'T:任務';
|
||||
$lang->searchObjects['testcase'] = 'C:用例';
|
||||
$lang->searchObjects['project'] = 'P:項目';
|
||||
$lang->searchObjects['product'] = 'P:產品';
|
||||
$lang->searchObjects['user'] = 'U:用戶';
|
||||
$lang->searchObjects['build'] = 'B:版本';
|
||||
$lang->searchObjects['release'] = 'R:發佈';
|
||||
$lang->searchObjects['productplan'] = 'P:產品計劃';
|
||||
$lang->searchObjects['testtask'] = 'T:測試任務';
|
||||
$lang->searchObjects['doc'] = 'D:文檔';
|
||||
$lang->searchTips = '編號(ctrl+g)';
|
||||
|
||||
/* 導入支持的編碼格式。*/
|
||||
$lang->importEncodeList['gbk'] = 'GBK';
|
||||
$lang->importEncodeList['big5'] = 'BIG5';
|
||||
$lang->importEncodeList['utf-8'] = 'UTF-8';
|
||||
|
||||
/* 導出檔案的類型列表。*/
|
||||
$lang->exportFileTypeList['csv'] = 'csv';
|
||||
$lang->exportFileTypeList['xml'] = 'xml';
|
||||
$lang->exportFileTypeList['html'] = 'html';
|
||||
|
||||
$lang->exportTypeList['all'] = '導出全部';
|
||||
$lang->exportTypeList['selected'] = '導出選中';
|
||||
|
||||
/* 支持的編碼格式。*/
|
||||
$lang->exportEncodeList['gbk'] = 'GBK';
|
||||
$lang->exportEncodeList['big5'] = 'BIG5';
|
||||
$lang->exportEncodeList['utf-8'] = 'UTF-8';
|
||||
|
||||
/* 風格列表。*/
|
||||
$lang->themes['default'] = '預設';
|
||||
$lang->themes['green'] = '綠色';
|
||||
$lang->themes['red'] = '紅色';
|
||||
$lang->themes['classblue'] = '經典藍';
|
||||
|
||||
/* 首頁菜單設置。*/
|
||||
$lang->index = new stdclass();
|
||||
$lang->index->menu = new stdclass();
|
||||
|
||||
$lang->index->menu->product = '瀏覽產品|product|browse';
|
||||
$lang->index->menu->project = '瀏覽項目|project|browse';
|
||||
|
||||
/* 我的地盤菜單設置。*/
|
||||
$lang->my = new stdclass();
|
||||
$lang->my->menu = new stdclass();
|
||||
|
||||
$lang->my->menu->account = '<span id="mybg"> </span>%s' . $lang->arrow;
|
||||
$lang->my->menu->index = '首頁|my|index';
|
||||
$lang->my->menu->todo = array('link' => '待辦|my|todo|', 'subModule' => 'todo');
|
||||
$lang->my->menu->task = '任務|my|task|';
|
||||
$lang->my->menu->bug = '缺陷|my|bug|';
|
||||
$lang->my->menu->testtask = array('link' => '測試|my|testtask|', 'alias' => 'testcase');
|
||||
$lang->my->menu->story = '需求|my|story|';
|
||||
$lang->my->menu->myProject = '項目|my|project|';
|
||||
$lang->my->menu->dynamic = '動態|my|dynamic|';
|
||||
$lang->my->menu->profile = array('link' => '檔案|my|profile|', 'alias' => 'editprofile');
|
||||
$lang->my->menu->changePassword = '密碼|my|changepassword|';
|
||||
|
||||
$lang->todo = new stdclass();
|
||||
$lang->todo->menu = $lang->my->menu;
|
||||
|
||||
/* 產品視圖設置。*/
|
||||
$lang->product = new stdclass();
|
||||
$lang->product->menu = new stdclass();
|
||||
|
||||
$lang->product->menu->list = '%s';
|
||||
$lang->product->menu->story = array('link' => '需求|product|browse|productID=%s', 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->menu->dynamic = '動態|product|dynamic|productID=%s';
|
||||
$lang->product->menu->plan = array('link' => '計劃|productplan|browse|productID=%s', 'subModule' => 'productplan');
|
||||
$lang->product->menu->release = array('link' => '發佈|release|browse|productID=%s', 'subModule' => 'release');
|
||||
$lang->product->menu->roadmap = '路線圖|product|roadmap|productID=%s';
|
||||
$lang->product->menu->doc = array('link' => '文檔|product|doc|productID=%s', 'subModule' => 'doc');
|
||||
$lang->product->menu->view = array('link' => '維護|product|view|productID=%s', 'alias' => 'edit');
|
||||
$lang->product->menu->module = '模組|tree|browse|productID=%s&view=story';
|
||||
$lang->product->menu->project = '項目|product|project|status=all&productID=%s';
|
||||
$lang->product->menu->order = '排序|product|order|productID=%s';
|
||||
$lang->product->menu->create = array('link' => '<span class="icon-addProduct"> </span>新增產品|product|create', 'float' => 'right');
|
||||
$lang->product->menu->all = array('link' => '<span class="icon-allProducts"> </span>所有產品|product|index|locate=no&productID=%s', 'float' => 'right');
|
||||
|
||||
$lang->story = new stdclass();
|
||||
$lang->productplan = new stdclass();
|
||||
$lang->release = new stdclass();
|
||||
|
||||
$lang->story->menu = $lang->product->menu;
|
||||
$lang->productplan->menu = $lang->product->menu;
|
||||
$lang->release->menu = $lang->product->menu;
|
||||
|
||||
/* 項目視圖菜單設置。*/
|
||||
$lang->project = new stdclass();
|
||||
$lang->project->menu = new stdclass();
|
||||
|
||||
$lang->project->menu->list = '%s';
|
||||
$lang->project->menu->task = array('link' => '任務|project|task|projectID=%s', 'subModule' => 'task', 'alias' => 'grouptask,importtask,burn,importbug');
|
||||
$lang->project->menu->story = array('link' => '需求|project|story|projectID=%s', 'subModule' => 'story', 'alias' => 'linkstory');
|
||||
$lang->project->menu->bug = 'Bug|project|bug|projectID=%s';
|
||||
$lang->project->menu->dynamic = '動態|project|dynamic|projectID=%s';
|
||||
$lang->project->menu->build = array('link' => '版本|project|build|projectID=%s', 'subModule' => 'build');
|
||||
$lang->project->menu->testtask = '測試|project|testtask|projectID=%s';
|
||||
$lang->project->menu->team = array('link' => '團隊|project|team|projectID=%s', 'alias' => 'managemembers');
|
||||
$lang->project->menu->doc = array('link' => '文檔|project|doc|porjectID=%s', 'subModule' => 'doc');
|
||||
$lang->project->menu->product = '產品|project|manageproducts|projectID=%s';
|
||||
$lang->project->menu->view = array('link' => '維護|project|view|projectID=%s', 'alias' => 'edit');
|
||||
$lang->project->menu->order = '排序|project|order|projectID=%s';
|
||||
$lang->project->menu->create = array('link' => '<span class="icon-addProject"> </span>新增項目|project|create', 'float' => 'right');
|
||||
$lang->project->menu->all = array('link' => '<span class="icon-allProjects"> </span>所有項目|project|index|locate=no&status=undone&projectID=%s', 'float' => 'right');
|
||||
|
||||
$lang->task = new stdclass();
|
||||
$lang->build = new stdclass();
|
||||
$lang->task->menu = $lang->project->menu;
|
||||
$lang->build->menu = $lang->project->menu;
|
||||
|
||||
/* QA視圖菜單設置。*/
|
||||
$lang->bug = new stdclass();
|
||||
$lang->bug->menu = new stdclass();
|
||||
|
||||
$lang->bug->menu->product = '%s';
|
||||
$lang->bug->menu->bug = array('link' => '缺陷管理|bug|browse|productID=%s', 'alias' => 'view,create,edit,resolve,close,activate,report,batchedit', 'subModule' => 'tree');
|
||||
$lang->bug->menu->testcase = array('link' => '用例管理|testcase|browse|productID=%s', 'alias' => 'view,create,edit');
|
||||
$lang->bug->menu->testtask = array('link' => '測試任務|testtask|browse|productID=%s');
|
||||
|
||||
$lang->testcase = new stdclass();
|
||||
$lang->testcase->menu = new stdclass();
|
||||
|
||||
$lang->testcase->menu->product = '%s';
|
||||
$lang->testcase->menu->bug = array('link' => '缺陷管理|bug|browse|productID=%s');
|
||||
$lang->testcase->menu->testcase = array('link' => '用例管理|testcase|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit,batchedit', 'subModule' => 'tree');
|
||||
$lang->testcase->menu->testtask = array('link' => '測試任務|testtask|browse|productID=%s', 'alias' => 'view,create,edit,linkcase,cases');
|
||||
|
||||
$lang->testtask = new stdclass();
|
||||
$lang->testtask->menu = $lang->testcase->menu;
|
||||
|
||||
/* 文檔視圖菜單設置。*/
|
||||
$lang->doc = new stdclass();
|
||||
$lang->doc->menu = new stdclass();
|
||||
|
||||
$lang->doc->menu->list = '%s';
|
||||
$lang->doc->menu->browse = array('link' => '文檔列表|doc|browse|libID=%s', 'alias' => 'view,create,edit');
|
||||
$lang->doc->menu->edit = '編輯文檔庫|doc|editLib|libID=%s';
|
||||
$lang->doc->menu->module = '維護模組|tree|browse|libID=%s&viewType=doc';
|
||||
$lang->doc->menu->delete = array('link' => '刪除文檔庫|doc|deleteLib|libID=%s', 'target' => 'hiddenwin');
|
||||
$lang->doc->menu->create = array('link' => '<span class="icon-add1"> </span>新增文檔庫|doc|createLib', 'float' => 'right');
|
||||
|
||||
/* 統計視圖菜單設置。*/
|
||||
$lang->report = new stdclass();
|
||||
$lang->report->menu = new stdclass();
|
||||
|
||||
$lang->report->menu->product = array('link' => '產品|report|productinfo');
|
||||
$lang->report->menu->prj = array('link' => '項目|report|projectdeviation');
|
||||
$lang->report->menu->test = array('link' => '測試|report|bugsummary', 'alias' => 'bugassign');
|
||||
$lang->report->menu->staff = array('link' => '組織|report|workload');
|
||||
|
||||
/* 資源視圖菜單設置。*/
|
||||
$lang->webapp = new stdclass();
|
||||
$lang->webapp->menu = new stdclass();
|
||||
//$lang->webapp->menu->obtain = array('link' => '應用商店|webapp|obtain', 'float' => 'right');
|
||||
|
||||
/* 組織結構視圖菜單設置。*/
|
||||
$lang->company = new stdclass();
|
||||
$lang->company->menu = new stdclass();
|
||||
$lang->company->menu->name = '%s' . $lang->arrow;
|
||||
$lang->company->menu->browseUser = array('link' => '用戶|company|browse', 'subModule' => 'user');
|
||||
$lang->company->menu->dept = array('link' => '部門|dept|browse', 'subModule' => 'dept');
|
||||
$lang->company->menu->browseGroup = array('link' => '權限|group|browse', 'subModule' => 'group');
|
||||
$lang->company->menu->edit = array('link' => '公司|company|edit');
|
||||
$lang->company->menu->dynamic = '動態|company|dynamic|';
|
||||
$lang->company->menu->addGroup = array('link' => '<span class="icon-add1"> </span>添加分組|group|create', 'float' => 'right');
|
||||
$lang->company->menu->batchAddUser = array('link' => '<span class="icon-add1"> </span>批量添加|user|batchCreate', 'subModule' => 'user', 'float' => 'right');
|
||||
$lang->company->menu->addUser = array('link' => '<span class="icon-add1"> </span>添加用戶|user|create|dept=%s', 'subModule' => 'user', 'float' => 'right');
|
||||
|
||||
$lang->dept = new stdclass();
|
||||
$lang->group = new stdclass();
|
||||
$lang->user = new stdclass();
|
||||
|
||||
$lang->dept->menu = $lang->company->menu;
|
||||
$lang->group->menu = $lang->company->menu;
|
||||
$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');
|
||||
$lang->admin->menu->editor = array('link' => '擴展編輯器|editor|index', 'subModule' => 'editor');
|
||||
$lang->admin->menu->mail = array('link' => '發信|mail|index', 'subModule' => 'mail');
|
||||
$lang->admin->menu->clearData = array('link' => '重置|admin|cleardata');
|
||||
$lang->admin->menu->convert = array('link' => '導入|convert|index', 'subModule' => 'convert');
|
||||
$lang->admin->menu->trashes = array('link' => '資源回收筒|action|trash', 'subModule' => 'action');
|
||||
|
||||
$lang->convert = new stdclass();
|
||||
$lang->upgrade = new stdclass();
|
||||
$lang->action = new stdclass();
|
||||
$lang->extension = new stdclass();
|
||||
$lang->editor = new stdclass();
|
||||
$lang->mail = new stdclass();
|
||||
|
||||
$lang->convert->menu = $lang->admin->menu;
|
||||
$lang->upgrade->menu = $lang->admin->menu;
|
||||
$lang->action->menu = $lang->admin->menu;
|
||||
$lang->extension->menu = $lang->admin->menu;
|
||||
$lang->editor->menu = $lang->admin->menu;
|
||||
$lang->mail->menu = $lang->admin->menu;
|
||||
|
||||
/* 菜單分組。*/
|
||||
$lang->menugroup = new stdclass();
|
||||
$lang->menugroup->release = 'product';
|
||||
$lang->menugroup->story = 'product';
|
||||
$lang->menugroup->productplan = 'product';
|
||||
$lang->menugroup->task = 'project';
|
||||
$lang->menugroup->build = 'project';
|
||||
$lang->menugroup->convert = 'admin';
|
||||
$lang->menugroup->upgrade = 'admin';
|
||||
$lang->menugroup->user = 'company';
|
||||
$lang->menugroup->group = 'company';
|
||||
$lang->menugroup->bug = 'qa';
|
||||
$lang->menugroup->testcase = 'qa';
|
||||
$lang->menugroup->testtask = 'qa';
|
||||
$lang->menugroup->people = 'company';
|
||||
$lang->menugroup->dept = 'company';
|
||||
$lang->menugroup->todo = 'my';
|
||||
$lang->menugroup->action = 'admin';
|
||||
$lang->menugroup->extension = 'admin';
|
||||
$lang->menugroup->editor = 'admin';
|
||||
$lang->menugroup->mail = 'admin';
|
||||
|
||||
/* 錯誤提示信息。*/
|
||||
$lang->error = new stdclass();
|
||||
$lang->error->companyNotFound = "您訪問的域名 %s 沒有對應的公司。";
|
||||
$lang->error->length = array("『%s』長度錯誤,應當為『%s』", "『%s』長度應當不超過『%s』,且不小於『%s』。");
|
||||
$lang->error->reg = "『%s』不符合格式,應當為:『%s』。";
|
||||
$lang->error->unique = "『%s』已經有『%s』這條記錄了。如果您確定該記錄已刪除,請到後台管理-資源回收筒還原。。";
|
||||
$lang->error->gt = "『%s』應當大於『%s』。";
|
||||
$lang->error->ge = "『%s』應當不小於『%s』。";
|
||||
$lang->error->notempty = "『%s』不能為空。";
|
||||
$lang->error->empty = "『%s』必須為空。";
|
||||
$lang->error->equal = "『%s』必須為『%s』。";
|
||||
$lang->error->int = array("『%s』應當是數字。", "『%s』應當介於『%s-%s』之間。");
|
||||
$lang->error->float = "『%s』應當是數字,可以是小數。";
|
||||
$lang->error->email = "『%s』應當為合法的EMAIL。";
|
||||
$lang->error->date = "『%s』應當為合法的日期。";
|
||||
$lang->error->account = "『%s』應當為合法的用戶名。";
|
||||
$lang->error->passwordsame = "兩次密碼應當相等。";
|
||||
$lang->error->passwordrule = "密碼應該符合規則,長度至少為六位。";
|
||||
$lang->error->accessDenied = '您沒有訪問權限';
|
||||
|
||||
/* 分頁信息。*/
|
||||
$lang->pager = new stdclass();
|
||||
$lang->pager->noRecord = "暫時沒有記錄";
|
||||
$lang->pager->digest = "共<strong>%s</strong>條記錄,每頁 <strong>%s</strong>條,<strong>%s/%s</strong> ";
|
||||
$lang->pager->first = "首頁";
|
||||
$lang->pager->pre = "上頁";
|
||||
$lang->pager->next = "下頁";
|
||||
$lang->pager->last = "末頁";
|
||||
$lang->pager->locate = "GO!";
|
||||
|
||||
$lang->zentaoSite = "官方網站";
|
||||
$lang->chinaScrum = "<a href='http://www.zentao.net/goto.php?item=chinascrum' target='_blank'>Scrum社區</a> ";
|
||||
$lang->agileTraining = "<a href='http://www.zentao.net/goto.php?item=agiletrain' target='_blank'>培訓</a> ";
|
||||
$lang->donate = "<a href='http://www.zentao.net/goto.php?item=donate' target='_blank'>捐贈</a> ";
|
||||
$lang->proVersion = "<a href='http://www.zentao.net/goto.php?item=proversion&from=footer' target='_blank' class='red'>購買專業版(特惠)!</a> ";
|
||||
$lang->downNotify = "下載桌面提醒";
|
||||
|
||||
$lang->suhosinInfo = "警告:數據太多,請在php.ini中修改<font color=red>sohusin.post.max_vars</font>和<font color=red>sohusin.request.max_vars</font>(設置更大的數)。 保存並重新啟動apache,否則會造成部分數據無法保存。";
|
||||
|
||||
$lang->noResultsMatch = "沒有匹配結果";
|
||||
|
||||
/* 時間格式設置。*/
|
||||
define('DT_DATETIME1', 'Y-m-d H:i:s');
|
||||
define('DT_DATETIME2', 'y-m-d H:i');
|
||||
define('DT_MONTHTIME1', 'n/d H:i');
|
||||
define('DT_MONTHTIME2', 'n月d日 H:i');
|
||||
define('DT_DATE1', 'Y-m-d');
|
||||
define('DT_DATE2', 'Ymd');
|
||||
define('DT_DATE3', 'Y年m月d日');
|
||||
define('DT_DATE4', 'n月j日');
|
||||
define('DT_TIME1', 'H:i:s');
|
||||
define('DT_TIME2', 'H:i');
|
||||
|
||||
/* datepicker 時間*/
|
||||
$lang->datepicker = new stdclass();
|
||||
|
||||
$lang->datepicker->dpText = new stdclass();
|
||||
$lang->datepicker->dpText->TEXT_OR = '或 ';
|
||||
$lang->datepicker->dpText->TEXT_PREV_YEAR = '去年';
|
||||
$lang->datepicker->dpText->TEXT_PREV_MONTH = '上月';
|
||||
$lang->datepicker->dpText->TEXT_PREV_WEEK = '上周';
|
||||
$lang->datepicker->dpText->TEXT_YESTERDAY = '昨天';
|
||||
$lang->datepicker->dpText->TEXT_THIS_MONTH = '本月';
|
||||
$lang->datepicker->dpText->TEXT_THIS_WEEK = '本週';
|
||||
$lang->datepicker->dpText->TEXT_TODAY = '今天';
|
||||
$lang->datepicker->dpText->TEXT_NEXT_YEAR = '明年';
|
||||
$lang->datepicker->dpText->TEXT_NEXT_MONTH = '下月';
|
||||
$lang->datepicker->dpText->TEXT_CLOSE = '關閉';
|
||||
$lang->datepicker->dpText->TEXT_DATE = '選擇時間段';
|
||||
$lang->datepicker->dpText->TEXT_CHOOSE_DATE = '選擇日期';
|
||||
|
||||
$lang->datepicker->dayNames = array('日', '一', '二', '三', '四', '五', '六');
|
||||
$lang->datepicker->abbrDayNames = array('日', '一', '二', '三', '四', '五', '六');
|
||||
$lang->datepicker->monthNames = array('一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月');
|
||||
|
||||
include (dirname(__FILE__) . '/menuOrder.php');
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,280 +1,280 @@
|
||||
<?php
|
||||
/**
|
||||
* The control file of company module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package company
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class company extends control
|
||||
{
|
||||
/**
|
||||
* Construct function, load dept and user models auto.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->loadModel('dept');
|
||||
$this->company->setMenu();
|
||||
}
|
||||
|
||||
/**
|
||||
* Index page, header to browse.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$this->locate($this->createLink('company', 'browse'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Browse departments and users of a company.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function browse($param = 0, $type = 'bydept', $orderBy = 'id', $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
{
|
||||
$this->loadModel('search');
|
||||
$this->lang->set('menugroup.company', 'company');
|
||||
|
||||
$deptID = $type == 'bydept' ? (int)$param : 0;
|
||||
$this->company->setMenu($deptID);
|
||||
|
||||
/* Set the pager. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$pager = pager::init($recTotal, $recPerPage, $pageID);
|
||||
|
||||
/* Build the search form. */
|
||||
$queryID = $type == 'bydept' ? 0 : (int)$param;
|
||||
$this->config->company->browse->search['actionURL'] = $this->createLink('company', 'browse', "param=myQueryID&type=bysearch");
|
||||
$this->config->company->browse->search['queryID'] = $queryID;
|
||||
$this->config->company->browse->search['params']['dept']['values'] = array('' => '') + $this->dept->getOptionMenu();
|
||||
|
||||
$header['title'] = $this->lang->company->index . $this->lang->colon . $this->lang->dept->common;
|
||||
$position[] = $this->lang->dept->common;
|
||||
|
||||
if($type == 'bydept')
|
||||
{
|
||||
$childDeptIds = $this->dept->getAllChildID($deptID);
|
||||
$users = $this->dept->getUsers($childDeptIds, $pager, $orderBy);
|
||||
}
|
||||
else
|
||||
{
|
||||
if($queryID)
|
||||
{
|
||||
$query = $this->search->getQuery($queryID);
|
||||
if($query)
|
||||
{
|
||||
$this->session->set('userQuery', $query->sql);
|
||||
$this->session->set('userForm', $query->form);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->session->set('userQuery', ' 1 = 1');
|
||||
}
|
||||
}
|
||||
$users = $this->loadModel('user')->getByQuery($this->session->userQuery, $pager, $orderBy);
|
||||
}
|
||||
|
||||
$this->view->header = $header;
|
||||
$this->view->position = $position;
|
||||
$this->view->users = $users;
|
||||
$this->view->searchForm = $this->fetch('search', 'buildForm', $this->config->company->browse->search);
|
||||
$this->view->deptTree = $this->dept->getTreeMenu($rooteDeptID = 0, array('deptModel', 'createMemberLink'));
|
||||
$this->view->parentDepts = $this->dept->getParents($deptID);
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->deptID = $deptID;
|
||||
$this->view->pager = $pager;
|
||||
$this->view->param = $param;
|
||||
$this->view->type = $type;
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a company.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$this->company->create();
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
die(js::locate($this->createLink('admin', 'browsecompany'), 'parent'));
|
||||
}
|
||||
|
||||
$this->lang->set('menugroup.company', 'admin');
|
||||
$this->lang->company->menu = $this->lang->admin->menu;
|
||||
$this->lang->company->menuOrder = $this->lang->admin->menuOrder;
|
||||
|
||||
$header['title'] = $this->lang->admin->common . $this->lang->colon . $this->lang->company->create;
|
||||
$position[] = html::a($this->createLink('admin', 'browsecompany'), $this->lang->admin->company);
|
||||
$position[] = $this->lang->company->create;
|
||||
$this->view->header = $header;
|
||||
$this->view->position = $position;
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit a company.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function edit()
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$this->company->update();
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
|
||||
/* reset company in session. */
|
||||
$company = $this->loadModel('company')->getByDomain();
|
||||
$this->session->set('company', $company);
|
||||
|
||||
die(js::alert($this->lang->company->successSaved));
|
||||
}
|
||||
|
||||
$header['title'] = $this->lang->company->common . $this->lang->colon . $this->lang->company->edit;
|
||||
$position[] = $this->lang->company->edit;
|
||||
$this->view->header = $header;
|
||||
$this->view->position = $position;
|
||||
$this->view->company = $this->company->getById($this->app->company->id);
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a company.
|
||||
*
|
||||
* @param int $companyID
|
||||
* @param string $confirm yes|no
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function delete($companyID, $confirm = 'no')
|
||||
{
|
||||
if($confirm == 'no')
|
||||
{
|
||||
echo js::confirm($this->lang->company->confirmDelete, $this->createLink('company', 'delete', "companyID=$companyID&confirm=yes"));
|
||||
exit;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->company->delete($companyID);
|
||||
echo js::locate($this->createLink('admin', 'browseCompany'), 'parent');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Company dynamic.
|
||||
*
|
||||
* @param string $browseType
|
||||
* @param string $orderBy
|
||||
* @param int $recTotal
|
||||
* @param int $recPerPage
|
||||
* @param int $pageID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function dynamic($browseType = 'today', $param = '', $orderBy = 'date_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
{
|
||||
$this->app->loadLang('user');
|
||||
$this->app->loadLang('project');
|
||||
$this->loadModel('action');
|
||||
|
||||
/* Save session. */
|
||||
$uri = $this->app->getURI(true);
|
||||
$this->session->set('productList', $uri);
|
||||
$this->session->set('productPlanList', $uri);
|
||||
$this->session->set('releaseList', $uri);
|
||||
$this->session->set('storyList', $uri);
|
||||
$this->session->set('projectList', $uri);
|
||||
$this->session->set('taskList', $uri);
|
||||
$this->session->set('buildList', $uri);
|
||||
$this->session->set('bugList', $uri);
|
||||
$this->session->set('caseList', $uri);
|
||||
$this->session->set('testtaskList', $uri);
|
||||
|
||||
/* Set the pager. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$pager = pager::init($recTotal, $recPerPage, $pageID);
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->pager = $pager;
|
||||
|
||||
/* Set the user and type. */
|
||||
$account = $browseType == 'account' ? $param : 'all';
|
||||
$product = $browseType == 'product' ? $param : 'all';
|
||||
$project = $browseType == 'project' ? $param : 'all';
|
||||
$period = ($browseType == 'account' or $browseType == 'product' or $browseType == 'project') ? 'all' : $browseType;
|
||||
$queryID = ($browseType == 'bysearch') ? (int)$param : 0;
|
||||
|
||||
/* Get products' list.*/
|
||||
$products = $this->loadModel('product')->getPairs();
|
||||
$products = array($this->lang->product->select) + $products;
|
||||
$this->view->products = $products;
|
||||
|
||||
/* Get projects' list.*/
|
||||
$projects = $this->loadModel('project')->getPairs();
|
||||
$projects = array($this->lang->project->select) + $projects;
|
||||
$this->view->projects = $projects;
|
||||
|
||||
/* Get users.*/
|
||||
$users = $this->loadModel('user')->getPairs('nodeleted|noclosed');
|
||||
$users[''] = $this->lang->user->select;
|
||||
$this->view->users = $users;
|
||||
|
||||
/* The header and position. */
|
||||
$this->view->header->title = $this->lang->company->common . $this->lang->colon . $this->lang->company->dynamic;
|
||||
$this->view->position[] = $this->lang->company->dynamic;
|
||||
|
||||
/* Get actions. */
|
||||
if($browseType != 'bysearch')
|
||||
{
|
||||
$actions = $this->action->getDynamic($account, $period, $orderBy, $pager, $product, $project);
|
||||
}
|
||||
else
|
||||
{
|
||||
$actions = $this->action->getDynamicBySearch($products, $projects, $queryID, $orderBy, $pager);
|
||||
}
|
||||
|
||||
/* Build search form. */
|
||||
$projects[0] = '';
|
||||
$products[0] = '';
|
||||
$users[''] = '';
|
||||
ksort($projects);
|
||||
ksort($products);
|
||||
$projects['all'] = $this->lang->project->allProject;
|
||||
$products['all'] = $this->lang->product->allProduct;
|
||||
$this->config->company->dynamic->search['actionURL'] = $this->createLink('company', 'dynamic', "browseType=bysearch¶m=myQueryID");
|
||||
$this->config->company->dynamic->search['queryID'] = $queryID;
|
||||
$this->config->company->dynamic->search['params']['project']['values'] = $projects;
|
||||
$this->config->company->dynamic->search['params']['product']['values'] = $products;
|
||||
$this->config->company->dynamic->search['params']['actor']['values'] = $users;
|
||||
$this->loadModel('search')->setSearchParams($this->config->company->dynamic->search);
|
||||
|
||||
/* Assign. */
|
||||
$this->view->browseType = $browseType;
|
||||
$this->view->account = $account;
|
||||
$this->view->product = $product;
|
||||
$this->view->project = $project;
|
||||
$this->view->queryID = $queryID;
|
||||
$this->view->actions = $actions;
|
||||
$this->display();
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The control file of company module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package company
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class company extends control
|
||||
{
|
||||
/**
|
||||
* Construct function, load dept and user models auto.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->loadModel('dept');
|
||||
$this->company->setMenu();
|
||||
}
|
||||
|
||||
/**
|
||||
* Index page, header to browse.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$this->locate($this->createLink('company', 'browse'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Browse departments and users of a company.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function browse($param = 0, $type = 'bydept', $orderBy = 'id', $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
{
|
||||
$this->loadModel('search');
|
||||
$this->lang->set('menugroup.company', 'company');
|
||||
|
||||
$deptID = $type == 'bydept' ? (int)$param : 0;
|
||||
$this->company->setMenu($deptID);
|
||||
|
||||
/* Set the pager. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$pager = pager::init($recTotal, $recPerPage, $pageID);
|
||||
|
||||
/* Build the search form. */
|
||||
$queryID = $type == 'bydept' ? 0 : (int)$param;
|
||||
$this->config->company->browse->search['actionURL'] = $this->createLink('company', 'browse', "param=myQueryID&type=bysearch");
|
||||
$this->config->company->browse->search['queryID'] = $queryID;
|
||||
$this->config->company->browse->search['params']['dept']['values'] = array('' => '') + $this->dept->getOptionMenu();
|
||||
|
||||
$header['title'] = $this->lang->company->index . $this->lang->colon . $this->lang->dept->common;
|
||||
$position[] = $this->lang->dept->common;
|
||||
|
||||
if($type == 'bydept')
|
||||
{
|
||||
$childDeptIds = $this->dept->getAllChildID($deptID);
|
||||
$users = $this->dept->getUsers($childDeptIds, $pager, $orderBy);
|
||||
}
|
||||
else
|
||||
{
|
||||
if($queryID)
|
||||
{
|
||||
$query = $this->search->getQuery($queryID);
|
||||
if($query)
|
||||
{
|
||||
$this->session->set('userQuery', $query->sql);
|
||||
$this->session->set('userForm', $query->form);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->session->set('userQuery', ' 1 = 1');
|
||||
}
|
||||
}
|
||||
$users = $this->loadModel('user')->getByQuery($this->session->userQuery, $pager, $orderBy);
|
||||
}
|
||||
|
||||
$this->view->header = $header;
|
||||
$this->view->position = $position;
|
||||
$this->view->users = $users;
|
||||
$this->view->searchForm = $this->fetch('search', 'buildForm', $this->config->company->browse->search);
|
||||
$this->view->deptTree = $this->dept->getTreeMenu($rooteDeptID = 0, array('deptModel', 'createMemberLink'));
|
||||
$this->view->parentDepts = $this->dept->getParents($deptID);
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->deptID = $deptID;
|
||||
$this->view->pager = $pager;
|
||||
$this->view->param = $param;
|
||||
$this->view->type = $type;
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a company.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$this->company->create();
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
die(js::locate($this->createLink('admin', 'browsecompany'), 'parent'));
|
||||
}
|
||||
|
||||
$this->lang->set('menugroup.company', 'admin');
|
||||
$this->lang->company->menu = $this->lang->admin->menu;
|
||||
$this->lang->company->menuOrder = $this->lang->admin->menuOrder;
|
||||
|
||||
$header['title'] = $this->lang->admin->common . $this->lang->colon . $this->lang->company->create;
|
||||
$position[] = html::a($this->createLink('admin', 'browsecompany'), $this->lang->admin->company);
|
||||
$position[] = $this->lang->company->create;
|
||||
$this->view->header = $header;
|
||||
$this->view->position = $position;
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit a company.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function edit()
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$this->company->update();
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
|
||||
/* reset company in session. */
|
||||
$company = $this->loadModel('company')->getByDomain();
|
||||
$this->session->set('company', $company);
|
||||
|
||||
die(js::alert($this->lang->company->successSaved));
|
||||
}
|
||||
|
||||
$header['title'] = $this->lang->company->common . $this->lang->colon . $this->lang->company->edit;
|
||||
$position[] = $this->lang->company->edit;
|
||||
$this->view->header = $header;
|
||||
$this->view->position = $position;
|
||||
$this->view->company = $this->company->getById($this->app->company->id);
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a company.
|
||||
*
|
||||
* @param int $companyID
|
||||
* @param string $confirm yes|no
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function delete($companyID, $confirm = 'no')
|
||||
{
|
||||
if($confirm == 'no')
|
||||
{
|
||||
echo js::confirm($this->lang->company->confirmDelete, $this->createLink('company', 'delete', "companyID=$companyID&confirm=yes"));
|
||||
exit;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->company->delete($companyID);
|
||||
echo js::locate($this->createLink('admin', 'browseCompany'), 'parent');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Company dynamic.
|
||||
*
|
||||
* @param string $browseType
|
||||
* @param string $orderBy
|
||||
* @param int $recTotal
|
||||
* @param int $recPerPage
|
||||
* @param int $pageID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function dynamic($browseType = 'today', $param = '', $orderBy = 'date_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
{
|
||||
$this->app->loadLang('user');
|
||||
$this->app->loadLang('project');
|
||||
$this->loadModel('action');
|
||||
|
||||
/* Save session. */
|
||||
$uri = $this->app->getURI(true);
|
||||
$this->session->set('productList', $uri);
|
||||
$this->session->set('productPlanList', $uri);
|
||||
$this->session->set('releaseList', $uri);
|
||||
$this->session->set('storyList', $uri);
|
||||
$this->session->set('projectList', $uri);
|
||||
$this->session->set('taskList', $uri);
|
||||
$this->session->set('buildList', $uri);
|
||||
$this->session->set('bugList', $uri);
|
||||
$this->session->set('caseList', $uri);
|
||||
$this->session->set('testtaskList', $uri);
|
||||
|
||||
/* Set the pager. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$pager = pager::init($recTotal, $recPerPage, $pageID);
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->pager = $pager;
|
||||
|
||||
/* Set the user and type. */
|
||||
$account = $browseType == 'account' ? $param : 'all';
|
||||
$product = $browseType == 'product' ? $param : 'all';
|
||||
$project = $browseType == 'project' ? $param : 'all';
|
||||
$period = ($browseType == 'account' or $browseType == 'product' or $browseType == 'project') ? 'all' : $browseType;
|
||||
$queryID = ($browseType == 'bysearch') ? (int)$param : 0;
|
||||
|
||||
/* Get products' list.*/
|
||||
$products = $this->loadModel('product')->getPairs();
|
||||
$products = array($this->lang->product->select) + $products;
|
||||
$this->view->products = $products;
|
||||
|
||||
/* Get projects' list.*/
|
||||
$projects = $this->loadModel('project')->getPairs();
|
||||
$projects = array($this->lang->project->select) + $projects;
|
||||
$this->view->projects = $projects;
|
||||
|
||||
/* Get users.*/
|
||||
$users = $this->loadModel('user')->getPairs('nodeleted|noclosed');
|
||||
$users[''] = $this->lang->user->select;
|
||||
$this->view->users = $users;
|
||||
|
||||
/* The header and position. */
|
||||
$this->view->header->title = $this->lang->company->common . $this->lang->colon . $this->lang->company->dynamic;
|
||||
$this->view->position[] = $this->lang->company->dynamic;
|
||||
|
||||
/* Get actions. */
|
||||
if($browseType != 'bysearch')
|
||||
{
|
||||
$actions = $this->action->getDynamic($account, $period, $orderBy, $pager, $product, $project);
|
||||
}
|
||||
else
|
||||
{
|
||||
$actions = $this->action->getDynamicBySearch($products, $projects, $queryID, $orderBy, $pager);
|
||||
}
|
||||
|
||||
/* Build search form. */
|
||||
$projects[0] = '';
|
||||
$products[0] = '';
|
||||
$users[''] = '';
|
||||
ksort($projects);
|
||||
ksort($products);
|
||||
$projects['all'] = $this->lang->project->allProject;
|
||||
$products['all'] = $this->lang->product->allProduct;
|
||||
$this->config->company->dynamic->search['actionURL'] = $this->createLink('company', 'dynamic', "browseType=bysearch¶m=myQueryID");
|
||||
$this->config->company->dynamic->search['queryID'] = $queryID;
|
||||
$this->config->company->dynamic->search['params']['project']['values'] = $projects;
|
||||
$this->config->company->dynamic->search['params']['product']['values'] = $products;
|
||||
$this->config->company->dynamic->search['params']['actor']['values'] = $users;
|
||||
$this->loadModel('search')->setSearchParams($this->config->company->dynamic->search);
|
||||
|
||||
/* Assign. */
|
||||
$this->view->browseType = $browseType;
|
||||
$this->view->account = $account;
|
||||
$this->view->product = $product;
|
||||
$this->view->project = $project;
|
||||
$this->view->queryID = $queryID;
|
||||
$this->view->actions = $actions;
|
||||
$this->display();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,39 +1,39 @@
|
||||
<?php
|
||||
/**
|
||||
* The company module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package company
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->company->common = 'Company';
|
||||
$lang->company->index = "Index";
|
||||
$lang->company->create = "Create";
|
||||
$lang->company->edit = "Edit";
|
||||
$lang->company->read = "Info";
|
||||
$lang->company->update = "Update";
|
||||
$lang->company->delete = "Delete";
|
||||
$lang->company->browse = "User";
|
||||
$lang->company->dynamic = "Dynamic";
|
||||
$lang->company->depts = "Dept";
|
||||
$lang->company->orgView = 'Company';
|
||||
|
||||
$lang->company->confirmDelete = "Are you sure to delete this company?";
|
||||
$lang->company->successSaved = "Success saved";
|
||||
|
||||
$lang->company->id = 'ID';
|
||||
$lang->company->name = 'Name';
|
||||
$lang->company->phone = 'Phone';
|
||||
$lang->company->fax = 'Fax';
|
||||
$lang->company->address = 'Address';
|
||||
$lang->company->zipcode = 'Zipcode';
|
||||
$lang->company->website = 'Web site';
|
||||
$lang->company->backyard = 'Internal Site';
|
||||
$lang->company->pms = 'ZenTaoPMS Site';
|
||||
$lang->company->guest = 'Guest visit';
|
||||
|
||||
$lang->company->guestList[0] = 'Deny';
|
||||
$lang->company->guestList[1] = 'Allow';
|
||||
<?php
|
||||
/**
|
||||
* The company module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package company
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->company->common = 'Company';
|
||||
$lang->company->index = "Index";
|
||||
$lang->company->create = "Create";
|
||||
$lang->company->edit = "Edit";
|
||||
$lang->company->read = "Info";
|
||||
$lang->company->update = "Update";
|
||||
$lang->company->delete = "Delete";
|
||||
$lang->company->browse = "User";
|
||||
$lang->company->dynamic = "Dynamic";
|
||||
$lang->company->depts = "Dept";
|
||||
$lang->company->orgView = 'Company';
|
||||
|
||||
$lang->company->confirmDelete = "Are you sure to delete this company?";
|
||||
$lang->company->successSaved = "Success saved";
|
||||
|
||||
$lang->company->id = 'ID';
|
||||
$lang->company->name = 'Name';
|
||||
$lang->company->phone = 'Phone';
|
||||
$lang->company->fax = 'Fax';
|
||||
$lang->company->address = 'Address';
|
||||
$lang->company->zipcode = 'Zipcode';
|
||||
$lang->company->website = 'Web site';
|
||||
$lang->company->backyard = 'Internal Site';
|
||||
$lang->company->pms = 'ZenTaoPMS Site';
|
||||
$lang->company->guest = 'Guest visit';
|
||||
|
||||
$lang->company->guestList[0] = 'Deny';
|
||||
$lang->company->guestList[1] = 'Allow';
|
||||
|
||||
@@ -1,39 +1,39 @@
|
||||
<?php
|
||||
/**
|
||||
* The company module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package company
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->company->common = '组织视图';
|
||||
$lang->company->index = "组织视图首页";
|
||||
$lang->company->create = "新增公司";
|
||||
$lang->company->edit = "编辑公司";
|
||||
$lang->company->read = "公司信息";
|
||||
$lang->company->update = "更新公司";
|
||||
$lang->company->delete = "删除公司";
|
||||
$lang->company->browse = "用户列表";
|
||||
$lang->company->dynamic = "组织动态";
|
||||
$lang->company->depts = "部门列表";
|
||||
$lang->company->orgView = '组织视图';
|
||||
|
||||
$lang->company->confirmDelete = "您确定删除该公司吗?";
|
||||
$lang->company->successSaved = "成功保存";
|
||||
|
||||
$lang->company->id = '编号';
|
||||
$lang->company->name = '公司名称';
|
||||
$lang->company->phone = '联系电话';
|
||||
$lang->company->fax = '传真';
|
||||
$lang->company->address = '通讯地址';
|
||||
$lang->company->zipcode = '邮政编码';
|
||||
$lang->company->website = '公司官网';
|
||||
$lang->company->backyard = '公司内网';
|
||||
$lang->company->pms = 'PMS网站';
|
||||
$lang->company->guest = '匿名登录';
|
||||
|
||||
$lang->company->guestList[0] = '不允许';
|
||||
$lang->company->guestList[1] = '允许';
|
||||
<?php
|
||||
/**
|
||||
* The company module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package company
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->company->common = '组织视图';
|
||||
$lang->company->index = "组织视图首页";
|
||||
$lang->company->create = "新增公司";
|
||||
$lang->company->edit = "编辑公司";
|
||||
$lang->company->read = "公司信息";
|
||||
$lang->company->update = "更新公司";
|
||||
$lang->company->delete = "删除公司";
|
||||
$lang->company->browse = "用户列表";
|
||||
$lang->company->dynamic = "组织动态";
|
||||
$lang->company->depts = "部门列表";
|
||||
$lang->company->orgView = '组织视图';
|
||||
|
||||
$lang->company->confirmDelete = "您确定删除该公司吗?";
|
||||
$lang->company->successSaved = "成功保存";
|
||||
|
||||
$lang->company->id = '编号';
|
||||
$lang->company->name = '公司名称';
|
||||
$lang->company->phone = '联系电话';
|
||||
$lang->company->fax = '传真';
|
||||
$lang->company->address = '通讯地址';
|
||||
$lang->company->zipcode = '邮政编码';
|
||||
$lang->company->website = '公司官网';
|
||||
$lang->company->backyard = '公司内网';
|
||||
$lang->company->pms = 'PMS网站';
|
||||
$lang->company->guest = '匿名登录';
|
||||
|
||||
$lang->company->guestList[0] = '不允许';
|
||||
$lang->company->guestList[1] = '允许';
|
||||
|
||||
@@ -1,40 +1,40 @@
|
||||
<?php
|
||||
/**
|
||||
* The company module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package company
|
||||
* @version $Id: zh-tw.php 3536 2012-09-21 03:09:38Z zhujinyonging@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->company->common = '組織視圖';
|
||||
$lang->company->index = "組織視圖首頁";
|
||||
$lang->company->create = "新增公司";
|
||||
$lang->company->edit = "編輯公司";
|
||||
$lang->company->read = "公司信息";
|
||||
$lang->company->update = "更新公司";
|
||||
$lang->company->delete = "刪除公司";
|
||||
$lang->company->browse = "用戶列表";
|
||||
$lang->company->dynamic = "組織動態";
|
||||
$lang->company->depts = "部門列表";
|
||||
$lang->company->orgView = '組織視圖';
|
||||
|
||||
$lang->company->confirmDelete = "您確定刪除該公司嗎?";
|
||||
$lang->company->successSaved = "成功保存";
|
||||
|
||||
$lang->company->id = '編號';
|
||||
$lang->company->name = '公司名稱';
|
||||
$lang->company->phone = '聯繫電話';
|
||||
$lang->company->fax = '傳真';
|
||||
$lang->company->address = '通訊地址';
|
||||
$lang->company->zipcode = '郵政編碼';
|
||||
$lang->company->website = '公司官網';
|
||||
$lang->company->backyard = '公司內網';
|
||||
$lang->company->pms = 'PMS網站';
|
||||
$lang->company->guest = '匿名登錄';
|
||||
$lang->company->unlock = '解鎖';
|
||||
|
||||
$lang->company->guestList[0] = '不允許';
|
||||
$lang->company->guestList[1] = '允許';
|
||||
<?php
|
||||
/**
|
||||
* The company module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package company
|
||||
* @version $Id: zh-tw.php 3536 2012-09-21 03:09:38Z zhujinyonging@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->company->common = '組織視圖';
|
||||
$lang->company->index = "組織視圖首頁";
|
||||
$lang->company->create = "新增公司";
|
||||
$lang->company->edit = "編輯公司";
|
||||
$lang->company->read = "公司信息";
|
||||
$lang->company->update = "更新公司";
|
||||
$lang->company->delete = "刪除公司";
|
||||
$lang->company->browse = "用戶列表";
|
||||
$lang->company->dynamic = "組織動態";
|
||||
$lang->company->depts = "部門列表";
|
||||
$lang->company->orgView = '組織視圖';
|
||||
|
||||
$lang->company->confirmDelete = "您確定刪除該公司嗎?";
|
||||
$lang->company->successSaved = "成功保存";
|
||||
|
||||
$lang->company->id = '編號';
|
||||
$lang->company->name = '公司名稱';
|
||||
$lang->company->phone = '聯繫電話';
|
||||
$lang->company->fax = '傳真';
|
||||
$lang->company->address = '通訊地址';
|
||||
$lang->company->zipcode = '郵政編碼';
|
||||
$lang->company->website = '公司官網';
|
||||
$lang->company->backyard = '公司內網';
|
||||
$lang->company->pms = 'PMS網站';
|
||||
$lang->company->guest = '匿名登錄';
|
||||
$lang->company->unlock = '解鎖';
|
||||
|
||||
$lang->company->guestList[0] = '不允許';
|
||||
$lang->company->guestList[1] = '允許';
|
||||
|
||||
@@ -1,123 +1,123 @@
|
||||
<?php
|
||||
/**
|
||||
* The model file of company module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package company
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
class companyModel extends model
|
||||
{
|
||||
/**
|
||||
* Set menu.
|
||||
*
|
||||
* @param int $dept
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setMenu($dept = 0)
|
||||
{
|
||||
common::setMenuVars($this->lang->company->menu, 'name', array($this->app->company->name));
|
||||
common::setMenuVars($this->lang->company->menu, 'addUser', array($dept));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get company list.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getList()
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_COMPANY)->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the first company.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getFirst()
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_COMPANY)->orderBy('id')->limit(1)->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* get company by domain.
|
||||
*
|
||||
* @param string $domain if empty, use current HTTP_HOST.
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getByDomain($domain = '')
|
||||
{
|
||||
if(empty($domain)) $domain = $this->server->http_host;
|
||||
return $this->dao->findByPMS($domain)->from(TABLE_COMPANY)->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get company info by id.
|
||||
*
|
||||
* @param int $companyID
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getByID($companyID = '')
|
||||
{
|
||||
return $this->dao->findById((int)$companyID)->from(TABLE_COMPANY)->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a company.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
$company = fixer::input('post')->get();
|
||||
$this->dao->insert(TABLE_COMPANY)
|
||||
->data($company)
|
||||
->autoCheck()
|
||||
->batchCheck($this->config->company->create->requiredFields, 'notempty')
|
||||
->batchCheck('name,pms', 'unique')
|
||||
->exec();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a company.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function update()
|
||||
{
|
||||
$company = fixer::input('post')->stripTags('name')->get();
|
||||
$companyID = $this->app->company->id;
|
||||
$this->dao->update(TABLE_COMPANY)
|
||||
->data($company)
|
||||
->autoCheck()
|
||||
->batchCheck($this->config->company->edit->requiredFields, 'notempty')
|
||||
->batchCheck('name,pms', 'unique', "id != '$companyID'")
|
||||
->where('id')->eq($companyID)
|
||||
->exec();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a company.
|
||||
*
|
||||
* @param int $companyID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function delete($companyID)
|
||||
{
|
||||
return $this->dao->delete()->from(TABLE_COMPANY)->where('id')->eq((int)$companyID)->limit(1)->exec();
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The model file of company module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package company
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
class companyModel extends model
|
||||
{
|
||||
/**
|
||||
* Set menu.
|
||||
*
|
||||
* @param int $dept
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setMenu($dept = 0)
|
||||
{
|
||||
common::setMenuVars($this->lang->company->menu, 'name', array($this->app->company->name));
|
||||
common::setMenuVars($this->lang->company->menu, 'addUser', array($dept));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get company list.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getList()
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_COMPANY)->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the first company.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getFirst()
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_COMPANY)->orderBy('id')->limit(1)->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* get company by domain.
|
||||
*
|
||||
* @param string $domain if empty, use current HTTP_HOST.
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getByDomain($domain = '')
|
||||
{
|
||||
if(empty($domain)) $domain = $this->server->http_host;
|
||||
return $this->dao->findByPMS($domain)->from(TABLE_COMPANY)->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get company info by id.
|
||||
*
|
||||
* @param int $companyID
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getByID($companyID = '')
|
||||
{
|
||||
return $this->dao->findById((int)$companyID)->from(TABLE_COMPANY)->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a company.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
$company = fixer::input('post')->get();
|
||||
$this->dao->insert(TABLE_COMPANY)
|
||||
->data($company)
|
||||
->autoCheck()
|
||||
->batchCheck($this->config->company->create->requiredFields, 'notempty')
|
||||
->batchCheck('name,pms', 'unique')
|
||||
->exec();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a company.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function update()
|
||||
{
|
||||
$company = fixer::input('post')->stripTags('name')->get();
|
||||
$companyID = $this->app->company->id;
|
||||
$this->dao->update(TABLE_COMPANY)
|
||||
->data($company)
|
||||
->autoCheck()
|
||||
->batchCheck($this->config->company->edit->requiredFields, 'notempty')
|
||||
->batchCheck('name,pms', 'unique', "id != '$companyID'")
|
||||
->where('id')->eq($companyID)
|
||||
->exec();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a company.
|
||||
*
|
||||
* @param int $companyID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function delete($companyID)
|
||||
{
|
||||
return $this->dao->delete()->from(TABLE_COMPANY)->where('id')->eq((int)$companyID)->limit(1)->exec();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,92 +1,92 @@
|
||||
<?php
|
||||
/**
|
||||
* The browse view file of product dept of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package product
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
include '../../common/view/header.html.php';
|
||||
include '../../common/view/treeview.html.php';
|
||||
include '../../common/view/colorize.html.php';
|
||||
js::set('deptID', $deptID);
|
||||
?>
|
||||
<table class='cont-lt1'>
|
||||
<tr><td colspan='3'><div id='querybox'><?php echo $searchForm?></div></td></tr>
|
||||
<tr valign='top'>
|
||||
<td class='side'>
|
||||
<div class='box-title'><?php echo $lang->dept->common;?></div>
|
||||
<div class='box-content'>
|
||||
<?php echo $deptTree;?>
|
||||
<div class='a-right'><?php common::printLink('dept', 'browse', '', $lang->dept->manage);?></div>
|
||||
</div>
|
||||
</td>
|
||||
<td class='divider'></td>
|
||||
<td>
|
||||
<table class='table-1 tablesorter colored'>
|
||||
<thead>
|
||||
<tr class='colhead'>
|
||||
<?php $vars = "param=$param&type=$type&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}";?>
|
||||
<th class='w-id'><?php common::printorderlink('id', $orderBy, $vars, $lang->idAB);?></th>
|
||||
<th><?php common::printorderlink('realname', $orderBy, $vars, $lang->user->realname);?></th>
|
||||
<th><?php common::printOrderLink('account', $orderBy, $vars, $lang->user->account);?></th>
|
||||
<th><?php common::printOrderLink('role', $orderBy, $vars, $lang->user->role);?></th>
|
||||
<th><?php common::printOrderLink('email', $orderBy, $vars, $lang->user->email);?></th>
|
||||
<th><?php common::printOrderLink('gander', $orderBy, $vars, $lang->user->gender);?></th>
|
||||
<th><?php common::printOrderLink('phone', $orderBy, $vars, $lang->user->phone);?></th>
|
||||
<th><?php common::printOrderLink('join', $orderBy, $vars, $lang->user->join);?></th>
|
||||
<th><?php common::printOrderLink('last', $orderBy, $vars, $lang->user->last);?></th>
|
||||
<th><?php common::printOrderLink('visits', $orderBy, $vars, $lang->user->visits);?></th>
|
||||
<th class='w-80px'><?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<form action='<?php echo $this->createLink('user', 'batchEdit', "deptID=$deptID")?>' method='post' id='userListForm'>
|
||||
<?php foreach($users as $user):?>
|
||||
<tr class='a-center'>
|
||||
<td><?php echo "<input type='checkbox' name='users[]' value='$user->account'> "; printf('%03d', $user->id);?></td>
|
||||
<td><?php if(!common::printLink('user', 'view', "account=$user->account", $user->realname)) echo $user->realname;?></td>
|
||||
<td><?php echo $user->account;?></td>
|
||||
<td><?php echo $lang->user->roleList[$user->role];?></td>
|
||||
<td><?php echo html::mailto($user->email);?></td>
|
||||
<td><?php if(isset($lang->user->genderList[$user->gender])) echo $lang->user->genderList[$user->gender];?></td>
|
||||
<td><?php echo $user->phone;?></td>
|
||||
<td><?php echo $user->join;?></td>
|
||||
<td><?php echo date('Y-m-d', $user->last);?></td>
|
||||
<td><?php echo $user->visits;?></td>
|
||||
<td class='a-left'>
|
||||
<?php
|
||||
common::printIcon('user', 'edit', "userID=$user->id&from=company", '', 'list');
|
||||
common::printIcon('user', 'delete', "userID=$user->id", '', 'list', '', "hiddenwin");
|
||||
if((strtotime(date('Y-m-d H:i:s')) - strtotime($user->locked)) < $this->config->user->lockMinutes * 60)
|
||||
{
|
||||
common::printIcon('user', 'unlock', "userID=$user->account", '', 'list', '', "hiddenwin");
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan='11'>
|
||||
<?php
|
||||
echo html::selectAll() . html::selectReverse();
|
||||
echo html::submitButton($lang->user->batchEdit, 'onclick=batchEdit()');
|
||||
echo html::submitButton($lang->user->contacts->manage, 'onclick=manageContacts()');
|
||||
$pager->show();
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<script lanugage='javascript'>$('#dept<?php echo $deptID;?>').addClass('active');</script>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The browse view file of product dept of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package product
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
include '../../common/view/header.html.php';
|
||||
include '../../common/view/treeview.html.php';
|
||||
include '../../common/view/colorize.html.php';
|
||||
js::set('deptID', $deptID);
|
||||
?>
|
||||
<table class='cont-lt1'>
|
||||
<tr><td colspan='3'><div id='querybox'><?php echo $searchForm?></div></td></tr>
|
||||
<tr valign='top'>
|
||||
<td class='side'>
|
||||
<div class='box-title'><?php echo $lang->dept->common;?></div>
|
||||
<div class='box-content'>
|
||||
<?php echo $deptTree;?>
|
||||
<div class='a-right'><?php common::printLink('dept', 'browse', '', $lang->dept->manage);?></div>
|
||||
</div>
|
||||
</td>
|
||||
<td class='divider'></td>
|
||||
<td>
|
||||
<table class='table-1 tablesorter colored'>
|
||||
<thead>
|
||||
<tr class='colhead'>
|
||||
<?php $vars = "param=$param&type=$type&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}";?>
|
||||
<th class='w-id'><?php common::printorderlink('id', $orderBy, $vars, $lang->idAB);?></th>
|
||||
<th><?php common::printorderlink('realname', $orderBy, $vars, $lang->user->realname);?></th>
|
||||
<th><?php common::printOrderLink('account', $orderBy, $vars, $lang->user->account);?></th>
|
||||
<th><?php common::printOrderLink('role', $orderBy, $vars, $lang->user->role);?></th>
|
||||
<th><?php common::printOrderLink('email', $orderBy, $vars, $lang->user->email);?></th>
|
||||
<th><?php common::printOrderLink('gander', $orderBy, $vars, $lang->user->gender);?></th>
|
||||
<th><?php common::printOrderLink('phone', $orderBy, $vars, $lang->user->phone);?></th>
|
||||
<th><?php common::printOrderLink('join', $orderBy, $vars, $lang->user->join);?></th>
|
||||
<th><?php common::printOrderLink('last', $orderBy, $vars, $lang->user->last);?></th>
|
||||
<th><?php common::printOrderLink('visits', $orderBy, $vars, $lang->user->visits);?></th>
|
||||
<th class='w-80px'><?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<form action='<?php echo $this->createLink('user', 'batchEdit', "deptID=$deptID")?>' method='post' id='userListForm'>
|
||||
<?php foreach($users as $user):?>
|
||||
<tr class='a-center'>
|
||||
<td><?php echo "<input type='checkbox' name='users[]' value='$user->account'> "; printf('%03d', $user->id);?></td>
|
||||
<td><?php if(!common::printLink('user', 'view', "account=$user->account", $user->realname)) echo $user->realname;?></td>
|
||||
<td><?php echo $user->account;?></td>
|
||||
<td><?php echo $lang->user->roleList[$user->role];?></td>
|
||||
<td><?php echo html::mailto($user->email);?></td>
|
||||
<td><?php if(isset($lang->user->genderList[$user->gender])) echo $lang->user->genderList[$user->gender];?></td>
|
||||
<td><?php echo $user->phone;?></td>
|
||||
<td><?php echo $user->join;?></td>
|
||||
<td><?php echo date('Y-m-d', $user->last);?></td>
|
||||
<td><?php echo $user->visits;?></td>
|
||||
<td class='a-left'>
|
||||
<?php
|
||||
common::printIcon('user', 'edit', "userID=$user->id&from=company", '', 'list');
|
||||
common::printIcon('user', 'delete', "userID=$user->id", '', 'list', '', "hiddenwin");
|
||||
if((strtotime(date('Y-m-d H:i:s')) - strtotime($user->locked)) < $this->config->user->lockMinutes * 60)
|
||||
{
|
||||
common::printIcon('user', 'unlock', "userID=$user->account", '', 'list', '', "hiddenwin");
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan='11'>
|
||||
<?php
|
||||
echo html::selectAll() . html::selectReverse();
|
||||
echo html::submitButton($lang->user->batchEdit, 'onclick=batchEdit()');
|
||||
echo html::submitButton($lang->user->contacts->manage, 'onclick=manageContacts()');
|
||||
$pager->show();
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<script lanugage='javascript'>$('#dept<?php echo $deptID;?>').addClass('active');</script>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,56 +1,56 @@
|
||||
<?php
|
||||
/**
|
||||
* The create view of company module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package company
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' target='hiddenwin' id='dataform'>
|
||||
<table align='center' class='table-5'>
|
||||
<caption><?php echo $lang->company->create;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->name;?></th>
|
||||
<td><?php echo html::input('name', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->phone;?></th>
|
||||
<td><?php echo html::input('phone', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->fax;?></th>
|
||||
<td><?php echo html::input('fax', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->address;?></th>
|
||||
<td><?php echo html::input('address', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->zipcode;?></th>
|
||||
<td><?php echo html::input('zipcode', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->website;?></th>
|
||||
<td><?php echo html::input('website', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->backyard;?></th>
|
||||
<td><?php echo html::input('backyard', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->pms;?></th>
|
||||
<td><?php echo html::input('pms', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->guest;?></th>
|
||||
<td><?php echo html::radio('guest', $lang->company->guestList);?></td>
|
||||
</tr>
|
||||
<tr><td colspan='2' class='a-center'><?php echo html::submitButton();?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The create view of company module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package company
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' target='hiddenwin' id='dataform'>
|
||||
<table align='center' class='table-5'>
|
||||
<caption><?php echo $lang->company->create;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->name;?></th>
|
||||
<td><?php echo html::input('name', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->phone;?></th>
|
||||
<td><?php echo html::input('phone', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->fax;?></th>
|
||||
<td><?php echo html::input('fax', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->address;?></th>
|
||||
<td><?php echo html::input('address', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->zipcode;?></th>
|
||||
<td><?php echo html::input('zipcode', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->website;?></th>
|
||||
<td><?php echo html::input('website', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->backyard;?></th>
|
||||
<td><?php echo html::input('backyard', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->pms;?></th>
|
||||
<td><?php echo html::input('pms', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->guest;?></th>
|
||||
<td><?php echo html::radio('guest', $lang->company->guestList);?></td>
|
||||
</tr>
|
||||
<tr><td colspan='2' class='a-center'><?php echo html::submitButton();?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,62 +1,62 @@
|
||||
<?php
|
||||
/**
|
||||
* The action->dynamic view file of dashboard module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package dashboard
|
||||
* @version $Id: action->dynamic.html.php 1477 2011-03-01 15:25:50Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/tablesorter.html.php';?>
|
||||
<script language='Javascript'>
|
||||
var browseType = '<?php echo $browseType;?>';
|
||||
</script>
|
||||
<div id='featurebar'>
|
||||
<?php
|
||||
echo '<span id="today">' . html::a(inlink('dynamic', "browseType=today"), $lang->action->dynamic->today) . '</span>';
|
||||
echo '<span id="yesterday">' . html::a(inlink('dynamic', "browseType=yesterday"), $lang->action->dynamic->yesterday) . '</span>';
|
||||
echo '<span id="twodaysago">' . html::a(inlink('dynamic', "browseType=twodaysago"), $lang->action->dynamic->twoDaysAgo) . '</span>';
|
||||
echo '<span id="thisweek">' . html::a(inlink('dynamic', "browseType=thisweek"), $lang->action->dynamic->thisWeek) . '</span>';
|
||||
echo '<span id="lastweek">' . html::a(inlink('dynamic', "browseType=lastweek"), $lang->action->dynamic->lastWeek) . '</span>';
|
||||
echo '<span id="thismonth">' . html::a(inlink('dynamic', "browseType=thismonth"), $lang->action->dynamic->thisMonth) . '</span>';
|
||||
echo '<span id="lastmonth">' . html::a(inlink('dynamic', "browseType=lastmonth"), $lang->action->dynamic->lastMonth) . '</span>';
|
||||
echo '<span id="all">' . html::a(inlink('dynamic', "browseType=all"), $lang->action->dynamic->all) . '</span>';
|
||||
echo "<span id='account'>" . html::select('account', $users, $account, 'onchange=changeUser(this.value)') . '</span>';
|
||||
echo "<span id='product'>" . html::select('product', $products, $product, 'onchange=changeProduct(this.value)') . '</span>';
|
||||
echo "<span id='project'>" . html::select('project', $projects, $project, 'onchange=changeProject(this.value)') . '</span>';
|
||||
echo "<span id='bysearchTab'>" . html::a('#', '<span class="icon-search"></span>' . $lang->action->dynamic->search) . "</span>";
|
||||
?>
|
||||
</div>
|
||||
<div id='querybox' class='<?php if($browseType !='bysearch') echo 'hidden';?>'></div>
|
||||
<table class='table-1 colored tablesorter'>
|
||||
<thead>
|
||||
<tr class='colhead'>
|
||||
<th class='w-150px'><?php echo $lang->action->date;?></th>
|
||||
<th class='w-user'> <?php echo $lang->action->actor;?></th>
|
||||
<th class='w-100px'><?php echo $lang->action->action;?></th>
|
||||
<th class='w-80px'> <?php echo $lang->action->objectType;?></th>
|
||||
<th class='w-id'> <?php echo $lang->idAB;?></th>
|
||||
<th><?php echo $lang->action->objectName;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($actions as $action):?>
|
||||
<?php $module = $action->objectType == 'case' ? 'testcase' : $action->objectType;?>
|
||||
<tr class='a-center'>
|
||||
<td><?php echo $action->date;?></td>
|
||||
<td><?php echo substr(isset($users[$action->actor]) ? $users[$action->actor] : $action->actor, 2);?></td>
|
||||
<td><?php echo $action->actionLabel;?></td>
|
||||
<td><?php echo $lang->action->objectTypes[$action->objectType];?></td>
|
||||
<td><?php echo $action->objectID;?></td>
|
||||
<td class='a-left'><?php echo html::a($action->objectLink, $action->objectName);?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
<tfoot><tr><td colspan='6'><?php $pager->show();?></td></tr></tfoot>
|
||||
</table>
|
||||
<script>$('#<?php echo $browseType;?>').addClass('active')</script>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The action->dynamic view file of dashboard module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package dashboard
|
||||
* @version $Id: action->dynamic.html.php 1477 2011-03-01 15:25:50Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/tablesorter.html.php';?>
|
||||
<script language='Javascript'>
|
||||
var browseType = '<?php echo $browseType;?>';
|
||||
</script>
|
||||
<div id='featurebar'>
|
||||
<?php
|
||||
echo '<span id="today">' . html::a(inlink('dynamic', "browseType=today"), $lang->action->dynamic->today) . '</span>';
|
||||
echo '<span id="yesterday">' . html::a(inlink('dynamic', "browseType=yesterday"), $lang->action->dynamic->yesterday) . '</span>';
|
||||
echo '<span id="twodaysago">' . html::a(inlink('dynamic', "browseType=twodaysago"), $lang->action->dynamic->twoDaysAgo) . '</span>';
|
||||
echo '<span id="thisweek">' . html::a(inlink('dynamic', "browseType=thisweek"), $lang->action->dynamic->thisWeek) . '</span>';
|
||||
echo '<span id="lastweek">' . html::a(inlink('dynamic', "browseType=lastweek"), $lang->action->dynamic->lastWeek) . '</span>';
|
||||
echo '<span id="thismonth">' . html::a(inlink('dynamic', "browseType=thismonth"), $lang->action->dynamic->thisMonth) . '</span>';
|
||||
echo '<span id="lastmonth">' . html::a(inlink('dynamic', "browseType=lastmonth"), $lang->action->dynamic->lastMonth) . '</span>';
|
||||
echo '<span id="all">' . html::a(inlink('dynamic', "browseType=all"), $lang->action->dynamic->all) . '</span>';
|
||||
echo "<span id='account'>" . html::select('account', $users, $account, 'onchange=changeUser(this.value)') . '</span>';
|
||||
echo "<span id='product'>" . html::select('product', $products, $product, 'onchange=changeProduct(this.value)') . '</span>';
|
||||
echo "<span id='project'>" . html::select('project', $projects, $project, 'onchange=changeProject(this.value)') . '</span>';
|
||||
echo "<span id='bysearchTab'>" . html::a('#', '<span class="icon-search"></span>' . $lang->action->dynamic->search) . "</span>";
|
||||
?>
|
||||
</div>
|
||||
<div id='querybox' class='<?php if($browseType !='bysearch') echo 'hidden';?>'></div>
|
||||
<table class='table-1 colored tablesorter'>
|
||||
<thead>
|
||||
<tr class='colhead'>
|
||||
<th class='w-150px'><?php echo $lang->action->date;?></th>
|
||||
<th class='w-user'> <?php echo $lang->action->actor;?></th>
|
||||
<th class='w-100px'><?php echo $lang->action->action;?></th>
|
||||
<th class='w-80px'> <?php echo $lang->action->objectType;?></th>
|
||||
<th class='w-id'> <?php echo $lang->idAB;?></th>
|
||||
<th><?php echo $lang->action->objectName;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($actions as $action):?>
|
||||
<?php $module = $action->objectType == 'case' ? 'testcase' : $action->objectType;?>
|
||||
<tr class='a-center'>
|
||||
<td><?php echo $action->date;?></td>
|
||||
<td><?php echo substr(isset($users[$action->actor]) ? $users[$action->actor] : $action->actor, 2);?></td>
|
||||
<td><?php echo $action->actionLabel;?></td>
|
||||
<td><?php echo $lang->action->objectTypes[$action->objectType];?></td>
|
||||
<td><?php echo $action->objectID;?></td>
|
||||
<td class='a-left'><?php echo html::a($action->objectLink, $action->objectName);?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
<tfoot><tr><td colspan='6'><?php $pager->show();?></td></tr></tfoot>
|
||||
</table>
|
||||
<script>$('#<?php echo $browseType;?>').addClass('active')</script>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,56 +1,56 @@
|
||||
<?php
|
||||
/**
|
||||
* The edit view of company module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package company
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' target='hiddenwin' id='dataform'>
|
||||
<table align='center' class='table-5'>
|
||||
<caption><?php echo $lang->company->edit;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->name;?></th>
|
||||
<td><?php echo html::input('name', $company->name, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->phone;?></th>
|
||||
<td><?php echo html::input('phone', $company->phone, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->fax;?></th>
|
||||
<td><?php echo html::input('fax', $company->fax, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->address;?></th>
|
||||
<td><?php echo html::input('address', $company->address, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->zipcode;?></th>
|
||||
<td><?php echo html::input('zipcode', $company->zipcode, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->website;?></th>
|
||||
<td><?php echo html::input('website', $company->website, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->backyard;?></th>
|
||||
<td><?php echo html::input('backyard', $company->backyard, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->pms;?></th>
|
||||
<td><?php echo html::input('pms', $company->pms, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->guest;?></th>
|
||||
<td><?php echo html::radio('guest', $lang->company->guestList, $company->guest);?></td>
|
||||
</tr>
|
||||
<tr><td colspan='2' class='a-center'><?php echo html::submitButton();?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The edit view of company module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package company
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' target='hiddenwin' id='dataform'>
|
||||
<table align='center' class='table-5'>
|
||||
<caption><?php echo $lang->company->edit;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->name;?></th>
|
||||
<td><?php echo html::input('name', $company->name, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->phone;?></th>
|
||||
<td><?php echo html::input('phone', $company->phone, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->fax;?></th>
|
||||
<td><?php echo html::input('fax', $company->fax, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->address;?></th>
|
||||
<td><?php echo html::input('address', $company->address, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->zipcode;?></th>
|
||||
<td><?php echo html::input('zipcode', $company->zipcode, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->website;?></th>
|
||||
<td><?php echo html::input('website', $company->website, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->backyard;?></th>
|
||||
<td><?php echo html::input('backyard', $company->backyard, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->pms;?></th>
|
||||
<td><?php echo html::input('pms', $company->pms, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->guest;?></th>
|
||||
<td><?php echo html::radio('guest', $lang->company->guestList, $company->guest);?></td>
|
||||
</tr>
|
||||
<tr><td colspan='2' class='a-center'><?php echo html::submitButton();?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,240 +1,240 @@
|
||||
<?php
|
||||
/**
|
||||
* The control file of convert currentModule of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class convert extends control
|
||||
{
|
||||
/**
|
||||
* Index page of convert.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$this->convert->saveState();
|
||||
$this->view->header->title = $this->lang->convert->common;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Select the source system.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function selectSource()
|
||||
{
|
||||
$this->view->header->title = $this->lang->convert->common . $this->lang->colon;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set configs of converter.
|
||||
*
|
||||
* This is the extrance of every system. It will call the set function of corresponding module.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setConfig()
|
||||
{
|
||||
if(!$this->post->source)
|
||||
{
|
||||
echo js::alert($this->lang->convert->mustSelectSource);
|
||||
die(js::locate('back'));
|
||||
}
|
||||
list($sourceName, $version) = explode('_', $this->post->source);
|
||||
$setFunc = "set$sourceName";
|
||||
$this->view->header->title = $this->lang->convert->setting;
|
||||
$this->view->source = $sourceName;
|
||||
$this->view->version = $version;
|
||||
$this->view->setting = $this->fetch('convert', $setFunc, "version=$version");
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* The setting page of bugfree.
|
||||
*
|
||||
* @param string $version
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setBugFree($version)
|
||||
{
|
||||
$this->view->source = 'BugFree';
|
||||
$this->view->version = $version;
|
||||
$this->view->tablePrefix = $version > 1 ? 'bf_' : '';
|
||||
$this->view->dbName = $version > 1 ? 'bugfree2' : 'BugFree';
|
||||
$this->view->dbCharset = 'utf8';
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* The setting page of Redmine.
|
||||
*
|
||||
* @param string $version
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setRedmine($version)
|
||||
{
|
||||
$this->view->source = 'Redmine';
|
||||
$this->view->version = $version;
|
||||
$this->view->dbName = 'redmine';
|
||||
$this->view->dbCharset = 'utf8';
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check config. Same as setConfig.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function checkConfig()
|
||||
{
|
||||
$checkFunc = 'check' . $this->post->source;
|
||||
$this->view->header->title = $this->lang->convert->checkConfig;
|
||||
$this->view->source = $this->post->source;
|
||||
$this->view->checkResult = $this->fetch('convert', $checkFunc, "version={$this->post->version}");
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check settings of bugfree.
|
||||
*
|
||||
* @param int $version
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function checkBugFree($version)
|
||||
{
|
||||
helper::import('./converter/bugfree.php');
|
||||
$converter = new bugfreeConvertModel();
|
||||
|
||||
/* Check it. */
|
||||
$checkInfo['db'] = $converter->connectDB();
|
||||
//if(is_object($checkInfo['db'])) $checkInfo['table'] = $converter->checkTables();
|
||||
$checkInfo['path'] = $converter->checkPath();
|
||||
|
||||
/* Compute the checking result. */
|
||||
$result = 'pass';
|
||||
if(!is_object($checkInfo['db']) or !$checkInfo['path']) $result = 'fail';
|
||||
|
||||
/* Assign. */
|
||||
$this->view->version = $version;
|
||||
$this->view->source = 'bugfree';
|
||||
$this->view->result = $result;
|
||||
$this->view->checkInfo = $checkInfo;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check settings of Redmine.
|
||||
*
|
||||
* @param int $version
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function checkRedmine($version)
|
||||
{
|
||||
helper::import('./converter/redmine.php');
|
||||
$converter = new redmineConvertModel();
|
||||
|
||||
/* Check it. */
|
||||
$checkInfo['db'] = $converter->connectDB();
|
||||
$checkInfo['path'] = $converter->checkPath();
|
||||
|
||||
$this->view->trackers = $this->dao->dbh($converter->sourceDBH)->select('id, name')->from('trackers')->fetchAll('id', $autoCompany = false);
|
||||
$this->view->statuses = $this->dao->dbh($converter->sourceDBH)->select('id, name')->from('issue_statuses')->fetchAll('id', $autoCompany = false);
|
||||
$this->view->pries = $this->dao->dbh($converter->sourceDBH)->select('id, name')->from('enumerations')->where('type')->eq('IssuePriority')->fetchAll('id', $autoCompany = false);
|
||||
/* Compute the checking result. */
|
||||
$result = 'pass';
|
||||
if(!is_object($checkInfo['db']) or !$checkInfo['path']) $result = 'fail';
|
||||
|
||||
$this->app->loadLang('bug');
|
||||
$this->app->loadLang('story');
|
||||
$this->app->loadLang('task');
|
||||
$this->view->aimTypeList['bug'] = 'bug';
|
||||
$this->view->aimTypeList['task'] = 'task';
|
||||
$this->view->aimTypeList['story'] = 'story';
|
||||
|
||||
/* Assign. */
|
||||
$this->view->version = $version;
|
||||
$this->view->source = 'Redmine';
|
||||
$this->view->result = $result;
|
||||
$this->view->checkInfo = $checkInfo;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the converting.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function execute()
|
||||
{
|
||||
$convertFunc = 'convert' . $this->post->source;
|
||||
$this->view->header->title = $this->lang->convert->execute;
|
||||
$this->view->source = $this->post->source;
|
||||
$this->view->version = $this->post->version;
|
||||
|
||||
$this->view->executeResult = $this->fetch('convert', $convertFunc, "version={$this->post->version}");
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert bugfree.
|
||||
*
|
||||
* @param int $version
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function convertBugFree($version)
|
||||
{
|
||||
helper::import('./converter/bugfree.php');
|
||||
helper::import("./converter/bugfree$version.php");
|
||||
$className = "bugfree{$version}ConvertModel";
|
||||
$converter = new $className();
|
||||
$this->view->version = $version;
|
||||
$this->view->result = $converter->execute($version);
|
||||
$this->view->info = bugfreeConvertModel::$info;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* convert redmine
|
||||
*
|
||||
* @param int $version
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function convertRedmine($version)
|
||||
{
|
||||
helper::import('./converter/redmine.php');
|
||||
helper::import("./converter/redmine$version.php");
|
||||
$className = "redmine11ConvertModel";
|
||||
$redmine->aimTypes = $this->post->aimTypes;
|
||||
$redmine->statusTypes['bug'] = $this->post->statusTypesOfBug;
|
||||
$redmine->statusTypes['story'] = $this->post->statusTypesOfStory;
|
||||
$redmine->statusTypes['task'] = $this->post->statusTypesOfTask;
|
||||
$redmine->priTypes['bug'] = $this->post->priTypesOfBug;
|
||||
$redmine->priTypes['story'] = $this->post->priTypesOfStory;
|
||||
$redmine->priTypes['task'] = $this->post->priTypesOfTask;
|
||||
|
||||
$converter = new $className($redmine);
|
||||
$this->view->version = $version;
|
||||
$this->view->result = $converter->execute($version);
|
||||
$this->view->info = redmineConvertModel::$info;
|
||||
$this->display();
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The control file of convert currentModule of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class convert extends control
|
||||
{
|
||||
/**
|
||||
* Index page of convert.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$this->convert->saveState();
|
||||
$this->view->header->title = $this->lang->convert->common;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Select the source system.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function selectSource()
|
||||
{
|
||||
$this->view->header->title = $this->lang->convert->common . $this->lang->colon;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set configs of converter.
|
||||
*
|
||||
* This is the extrance of every system. It will call the set function of corresponding module.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setConfig()
|
||||
{
|
||||
if(!$this->post->source)
|
||||
{
|
||||
echo js::alert($this->lang->convert->mustSelectSource);
|
||||
die(js::locate('back'));
|
||||
}
|
||||
list($sourceName, $version) = explode('_', $this->post->source);
|
||||
$setFunc = "set$sourceName";
|
||||
$this->view->header->title = $this->lang->convert->setting;
|
||||
$this->view->source = $sourceName;
|
||||
$this->view->version = $version;
|
||||
$this->view->setting = $this->fetch('convert', $setFunc, "version=$version");
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* The setting page of bugfree.
|
||||
*
|
||||
* @param string $version
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setBugFree($version)
|
||||
{
|
||||
$this->view->source = 'BugFree';
|
||||
$this->view->version = $version;
|
||||
$this->view->tablePrefix = $version > 1 ? 'bf_' : '';
|
||||
$this->view->dbName = $version > 1 ? 'bugfree2' : 'BugFree';
|
||||
$this->view->dbCharset = 'utf8';
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* The setting page of Redmine.
|
||||
*
|
||||
* @param string $version
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setRedmine($version)
|
||||
{
|
||||
$this->view->source = 'Redmine';
|
||||
$this->view->version = $version;
|
||||
$this->view->dbName = 'redmine';
|
||||
$this->view->dbCharset = 'utf8';
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check config. Same as setConfig.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function checkConfig()
|
||||
{
|
||||
$checkFunc = 'check' . $this->post->source;
|
||||
$this->view->header->title = $this->lang->convert->checkConfig;
|
||||
$this->view->source = $this->post->source;
|
||||
$this->view->checkResult = $this->fetch('convert', $checkFunc, "version={$this->post->version}");
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check settings of bugfree.
|
||||
*
|
||||
* @param int $version
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function checkBugFree($version)
|
||||
{
|
||||
helper::import('./converter/bugfree.php');
|
||||
$converter = new bugfreeConvertModel();
|
||||
|
||||
/* Check it. */
|
||||
$checkInfo['db'] = $converter->connectDB();
|
||||
//if(is_object($checkInfo['db'])) $checkInfo['table'] = $converter->checkTables();
|
||||
$checkInfo['path'] = $converter->checkPath();
|
||||
|
||||
/* Compute the checking result. */
|
||||
$result = 'pass';
|
||||
if(!is_object($checkInfo['db']) or !$checkInfo['path']) $result = 'fail';
|
||||
|
||||
/* Assign. */
|
||||
$this->view->version = $version;
|
||||
$this->view->source = 'bugfree';
|
||||
$this->view->result = $result;
|
||||
$this->view->checkInfo = $checkInfo;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check settings of Redmine.
|
||||
*
|
||||
* @param int $version
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function checkRedmine($version)
|
||||
{
|
||||
helper::import('./converter/redmine.php');
|
||||
$converter = new redmineConvertModel();
|
||||
|
||||
/* Check it. */
|
||||
$checkInfo['db'] = $converter->connectDB();
|
||||
$checkInfo['path'] = $converter->checkPath();
|
||||
|
||||
$this->view->trackers = $this->dao->dbh($converter->sourceDBH)->select('id, name')->from('trackers')->fetchAll('id', $autoCompany = false);
|
||||
$this->view->statuses = $this->dao->dbh($converter->sourceDBH)->select('id, name')->from('issue_statuses')->fetchAll('id', $autoCompany = false);
|
||||
$this->view->pries = $this->dao->dbh($converter->sourceDBH)->select('id, name')->from('enumerations')->where('type')->eq('IssuePriority')->fetchAll('id', $autoCompany = false);
|
||||
/* Compute the checking result. */
|
||||
$result = 'pass';
|
||||
if(!is_object($checkInfo['db']) or !$checkInfo['path']) $result = 'fail';
|
||||
|
||||
$this->app->loadLang('bug');
|
||||
$this->app->loadLang('story');
|
||||
$this->app->loadLang('task');
|
||||
$this->view->aimTypeList['bug'] = 'bug';
|
||||
$this->view->aimTypeList['task'] = 'task';
|
||||
$this->view->aimTypeList['story'] = 'story';
|
||||
|
||||
/* Assign. */
|
||||
$this->view->version = $version;
|
||||
$this->view->source = 'Redmine';
|
||||
$this->view->result = $result;
|
||||
$this->view->checkInfo = $checkInfo;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the converting.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function execute()
|
||||
{
|
||||
$convertFunc = 'convert' . $this->post->source;
|
||||
$this->view->header->title = $this->lang->convert->execute;
|
||||
$this->view->source = $this->post->source;
|
||||
$this->view->version = $this->post->version;
|
||||
|
||||
$this->view->executeResult = $this->fetch('convert', $convertFunc, "version={$this->post->version}");
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert bugfree.
|
||||
*
|
||||
* @param int $version
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function convertBugFree($version)
|
||||
{
|
||||
helper::import('./converter/bugfree.php');
|
||||
helper::import("./converter/bugfree$version.php");
|
||||
$className = "bugfree{$version}ConvertModel";
|
||||
$converter = new $className();
|
||||
$this->view->version = $version;
|
||||
$this->view->result = $converter->execute($version);
|
||||
$this->view->info = bugfreeConvertModel::$info;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* convert redmine
|
||||
*
|
||||
* @param int $version
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function convertRedmine($version)
|
||||
{
|
||||
helper::import('./converter/redmine.php');
|
||||
helper::import("./converter/redmine$version.php");
|
||||
$className = "redmine11ConvertModel";
|
||||
$redmine->aimTypes = $this->post->aimTypes;
|
||||
$redmine->statusTypes['bug'] = $this->post->statusTypesOfBug;
|
||||
$redmine->statusTypes['story'] = $this->post->statusTypesOfStory;
|
||||
$redmine->statusTypes['task'] = $this->post->statusTypesOfTask;
|
||||
$redmine->priTypes['bug'] = $this->post->priTypesOfBug;
|
||||
$redmine->priTypes['story'] = $this->post->priTypesOfStory;
|
||||
$redmine->priTypes['task'] = $this->post->priTypesOfTask;
|
||||
|
||||
$converter = new $className($redmine);
|
||||
$this->view->version = $version;
|
||||
$this->view->result = $converter->execute($version);
|
||||
$this->view->info = redmineConvertModel::$info;
|
||||
$this->display();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,88 +1,88 @@
|
||||
<?php
|
||||
/**
|
||||
* The baisc model file of bugfree convert of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class bugfreeConvertModel extends convertModel
|
||||
{
|
||||
public $map = array();
|
||||
public $filePath = '';
|
||||
static public $info = array();
|
||||
|
||||
/**
|
||||
* Connect to db auto.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
parent::connectDB();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check table.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function checkTables()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check the install path.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function checkPath()
|
||||
{
|
||||
$this->setPath();
|
||||
return file_exists($this->filePath);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the path of attachments.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function setPath()
|
||||
{
|
||||
$this->filePath = realpath($this->post->installPath) . $this->app->getPathFix() . 'BugFile' . $this->app->getPathFix();
|
||||
}
|
||||
|
||||
/**
|
||||
* Excute the convert.
|
||||
*
|
||||
* @param int $version
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function execute($version)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear rows added in converting.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function clear()
|
||||
{
|
||||
foreach($this->session->state as $table => $maxID)
|
||||
{
|
||||
$this->dao->dbh($this->dbh)->delete()->from($table)->where('id')->gt($maxID)->exec();
|
||||
}
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The baisc model file of bugfree convert of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class bugfreeConvertModel extends convertModel
|
||||
{
|
||||
public $map = array();
|
||||
public $filePath = '';
|
||||
static public $info = array();
|
||||
|
||||
/**
|
||||
* Connect to db auto.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
parent::connectDB();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check table.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function checkTables()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check the install path.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function checkPath()
|
||||
{
|
||||
$this->setPath();
|
||||
return file_exists($this->filePath);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the path of attachments.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function setPath()
|
||||
{
|
||||
$this->filePath = realpath($this->post->installPath) . $this->app->getPathFix() . 'BugFile' . $this->app->getPathFix();
|
||||
}
|
||||
|
||||
/**
|
||||
* Excute the convert.
|
||||
*
|
||||
* @param int $version
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function execute($version)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear rows added in converting.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function clear()
|
||||
{
|
||||
foreach($this->session->state as $table => $maxID)
|
||||
{
|
||||
$this->dao->dbh($this->dbh)->delete()->from($table)->where('id')->gt($maxID)->exec();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,318 +1,318 @@
|
||||
<?php
|
||||
/**
|
||||
* The model file of bugfree version 1 convert of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class bugfree1ConvertModel extends bugfreeConvertModel
|
||||
{
|
||||
/**
|
||||
* Execute the convert.
|
||||
*
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function execute()
|
||||
{
|
||||
$this->clear();
|
||||
$this->convertGroup();
|
||||
$result['users'] = $this->convertUser();
|
||||
$result['projects'] = $this->convertProject();
|
||||
$result['modules'] = $this->convertModule();
|
||||
$result['bugs'] = $this->convertBug();
|
||||
$result['actions'] = $this->convertAction();
|
||||
$result['files'] = $this->convertFile();
|
||||
$this->dao->dbh($this->dbh);
|
||||
$this->loadModel('tree')->fixModulePath();
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert groups.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function convertGroup()
|
||||
{
|
||||
$groups = $this->dao->dbh($this->sourceDBH)
|
||||
->select("groupID AS id, groupName AS name, groupUser AS users")
|
||||
->from('BugGroup')
|
||||
->fetchAll('id', $autoCompany = false);
|
||||
foreach($groups as $groupID => $group)
|
||||
{
|
||||
/* Explode into array. */
|
||||
$groupUsers = explode(',', $group->users);
|
||||
unset($group->id);
|
||||
unset($group->users);
|
||||
|
||||
/* Insert the group. */
|
||||
$this->dao->dbh($this->dbh)->insert(TABLE_GROUP)->data($group)->exec();
|
||||
$zentaoGroupID = $this->dao->lastInsertId();
|
||||
|
||||
/* Insert account. */
|
||||
foreach($groupUsers as $account)
|
||||
{
|
||||
if(empty($account)) continue;
|
||||
$this->dao->dbh($this->dbh)->insert(TABLE_USERGROUP)->set('`group`')->eq($zentaoGroupID)->set('account')->eq($account)->exec();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert user.
|
||||
*
|
||||
* @access public
|
||||
* @return int converted user count
|
||||
*/
|
||||
public function convertUser()
|
||||
{
|
||||
/* Get users exist in the system. */
|
||||
$activeUsers = $this->dao
|
||||
->dbh($this->sourceDBH)
|
||||
->select("username AS account, userpassword AS password, realname, email")
|
||||
->from('BugUser')
|
||||
->orderBy('userID ASC')
|
||||
->fetchAll('account', $autoCompany = false);
|
||||
|
||||
/* Get users in histories. */
|
||||
$allUsers = $this->dao->select("distinct(username) AS account")->from('BugHistory')->fetchPairs('', '', $autoCompany = false);
|
||||
|
||||
/* Merge them. */
|
||||
foreach($allUsers as $key => $account)
|
||||
{
|
||||
if(isset($activeUsers[$account]))
|
||||
{
|
||||
$allUsers[$key] = $activeUsers[$account];
|
||||
}
|
||||
else
|
||||
{
|
||||
$allUsers[$key] = array('account' => $account, 'realname' => $account, 'deleted' => '1');
|
||||
}
|
||||
}
|
||||
foreach($activeUsers as $account => $user) if(!isset($allUsers[$account])) $allUsers[$account] = $user;
|
||||
|
||||
/* Insert into zentao. */
|
||||
$convertCount = 0;
|
||||
foreach($allUsers as $account => $user)
|
||||
{
|
||||
if(!$this->dao->dbh($this->dbh)->findByAccount($account)->from(TABLE_USER)->fetch('account'))
|
||||
{
|
||||
$this->dao->dbh($this->dbh)->insert(TABLE_USER)->data($user)->exec();
|
||||
$convertCount ++;
|
||||
}
|
||||
else
|
||||
{
|
||||
self::$info['users'][] = sprintf($this->lang->convert->errorUserExists, $account);
|
||||
}
|
||||
}
|
||||
return $convertCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert project in bugfree to product in zentao.
|
||||
*
|
||||
* @access public
|
||||
* @return int converted project count
|
||||
*/
|
||||
public function convertProject()
|
||||
{
|
||||
$projects = $this->dao->dbh($this->sourceDBH)->select("projectID AS id, projectName AS name")->from('BugProject')->fetchAll('id', $autoCompany = false);
|
||||
foreach($projects as $projectID => $project)
|
||||
{
|
||||
unset($project->id);
|
||||
$this->dao->dbh($this->dbh)->insert(TABLE_PRODUCT)->data($project)->exec();
|
||||
$this->map['product'][$projectID] = $this->dao->lastInsertID();
|
||||
}
|
||||
return count($projects);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert modules.
|
||||
*
|
||||
* @access public
|
||||
* @return int converted modules count
|
||||
*/
|
||||
public function convertModule()
|
||||
{
|
||||
$this->map['module'][0] = 0;
|
||||
$modules = $this->dao
|
||||
->dbh($this->sourceDBH)
|
||||
->select(
|
||||
'moduleID AS id,
|
||||
projectID AS root,
|
||||
moduleName AS name,
|
||||
moduleGrade AS grade,
|
||||
parentID AS parent,
|
||||
"bug" AS type')
|
||||
->from('BugModule')
|
||||
->orderBy('id ASC')
|
||||
->fetchAll('id', $autoCompany = false);
|
||||
foreach($modules as $moduleID => $module)
|
||||
{
|
||||
$module->root = $this->map['product'][$module->root];
|
||||
unset($module->id);
|
||||
$this->dao->dbh($this->dbh)->insert(TABLE_MODULE)->data($module)->exec();
|
||||
$this->map['module'][$moduleID] = $this->dao->lastInsertID();
|
||||
}
|
||||
|
||||
/* Update parents. */
|
||||
foreach($modules as $oldModuleID => $module)
|
||||
{
|
||||
$newModuleID = $this->map['module'][$oldModuleID];
|
||||
$newParentID = $this->map['module'][$module->parent];
|
||||
$this->dao->dbh($this->dbh)->update(TABLE_MODULE)->set('parent')->eq($newParentID)->where('id')->eq($newModuleID)->exec();
|
||||
}
|
||||
return count($modules);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert bugs.
|
||||
*
|
||||
* @access public
|
||||
* @return int converted bugs count.
|
||||
*/
|
||||
public function convertBug()
|
||||
{
|
||||
$bugs = $this->dao
|
||||
->dbh($this->sourceDBH)
|
||||
->select('
|
||||
bugID AS id,
|
||||
projectID AS product,
|
||||
moduleID AS module,
|
||||
bugTitle AS title,
|
||||
bugSeverity AS severity,
|
||||
bugType AS type,
|
||||
bugOS AS os,
|
||||
bugStatus AS status,
|
||||
mailto,
|
||||
openedBy, openedDate, openedBuild,
|
||||
assignedTo, assignedDate,
|
||||
resolvedBy, resolution, resolvedBuild, resolvedDate,
|
||||
closedBy, closedDate,
|
||||
lastEditedBy, lastEditedDate,
|
||||
linkID as duplicateBug
|
||||
')
|
||||
->from('BugInfo')
|
||||
->orderBy('bugID')
|
||||
->fetchAll('id', $autoCompany = false);
|
||||
foreach($bugs as $bugID => $bug)
|
||||
{
|
||||
/* Adjust some fields of bug. */
|
||||
$bugID = (int)$bugID;
|
||||
unset($bug->id);
|
||||
if($bug->assignedTo == 'Closed') $bug->assignedTo = 'closed';
|
||||
$bug->type = strtolower($bug->type);
|
||||
$bug->os = strtolower($bug->os);
|
||||
$bug->browser = 'all';
|
||||
$bug->resolution = str_replace(' ','', strtolower($bug->resolution));
|
||||
$bug->product = $this->map['product'][$bug->product];
|
||||
$bug->module = $this->map['module'][$bug->module];
|
||||
$this->dao->dbh($this->dbh)->insert(TABLE_BUG)->data($bug)->exec();
|
||||
$this->map['bug'][$bugID] = $this->dao->lastInsertID();
|
||||
}
|
||||
|
||||
/* Update duplicated bugs. */
|
||||
foreach($this->map['bug'] as $oldBugID => $newBugID)
|
||||
{
|
||||
$this->dao->dbh($this->dbh)->update(TABLE_BUG)->set('duplicateBug')->eq($newBugID)->where('duplicateBug')->eq($oldBugID)->exec();
|
||||
}
|
||||
return count($bugs);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert actions.
|
||||
*
|
||||
* @access public
|
||||
* @return int converted actions count.
|
||||
*/
|
||||
public function convertAction()
|
||||
{
|
||||
$actions = $this->dao
|
||||
->dbh($this->sourceDBH)
|
||||
->select("
|
||||
'bug' AS objectType,
|
||||
bugID AS objectID,
|
||||
userName AS actor,
|
||||
action,
|
||||
fullInfo AS comment,
|
||||
actionDate AS date")
|
||||
->from('BugHistory')
|
||||
->orderBy('bugID, historyID')
|
||||
->fetchGroup('objectID', '', $autoCompany = false);
|
||||
$convertCount = 0;
|
||||
foreach($actions as $bugID => $bugActions)
|
||||
{
|
||||
/* Get the related bugID. */
|
||||
$bugID = (int)$bugID;
|
||||
$zentaoBugID = $this->map['bug'][$bugID];
|
||||
|
||||
/* Process actions. */
|
||||
foreach($bugActions as $key => $action)
|
||||
{
|
||||
$action->objectID = $zentaoBugID;
|
||||
if($key == 0)
|
||||
{
|
||||
$this->dao->dbh($this->dbh)->update(TABLE_BUG)->set('steps')->eq(nl2br($action->comment))->where('id')->eq($zentaoBugID)->exec();
|
||||
$action->comment = '';
|
||||
}
|
||||
$this->dao->dbh($this->dbh)->insert(TABLE_ACTION)->data($action)->exec();
|
||||
$convertCount ++;
|
||||
}
|
||||
}
|
||||
return $convertCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert files.
|
||||
*
|
||||
* @access public
|
||||
* @return int converted files count.
|
||||
*/
|
||||
public function convertFile()
|
||||
{
|
||||
$this->setPath();
|
||||
$files = $this->dao->dbh($this->sourceDBH)
|
||||
->select("
|
||||
fileName AS pathname,
|
||||
fileTitle AS title,
|
||||
fileType AS extension,
|
||||
fileSize AS size,
|
||||
'bug' AS objectType,
|
||||
bugID AS objectID,
|
||||
addUser AS addedBy,
|
||||
addDate AS addedDate
|
||||
")
|
||||
->from('BugFile')
|
||||
->orderBy('fileID')
|
||||
->fetchAll('', $autoCompany = false);
|
||||
foreach($files as $file)
|
||||
{
|
||||
$file->objectID = $this->map['bug'][(int)$file->objectID];
|
||||
if(strpos($file->size, 'KB')) $file->size = (int)(str_replace('KB', '', $file->size) * 1024);
|
||||
if(strpos($file->size, 'MB')) $file->size = (int)(str_replace('MB', '', $file->size) * 1024 * 1024);
|
||||
$this->dao->dbh($this->dbh)->insert(TABLE_FILE)->data($file)->exec();
|
||||
|
||||
/* Copy files. */
|
||||
$soureFile = $this->filePath . $file->pathname;
|
||||
if(!file_exists($soureFile))
|
||||
{
|
||||
self::$info['files'][] = sprintf($this->lang->convert->errorFileNotExits, $soureFile);
|
||||
continue;
|
||||
}
|
||||
$targetFile = $this->app->getAppRoot() . "www/data/upload/{$this->app->company->id}/" . $file->pathname;
|
||||
$targetPath = dirname($targetFile);
|
||||
if(!is_dir($targetPath)) mkdir($targetPath, 0777, true);
|
||||
if(!copy($soureFile, $targetFile))
|
||||
{
|
||||
self::$info['files'][] = sprintf($this->lang->convert->errorCopyFailed, $targetFile);
|
||||
}
|
||||
}
|
||||
return count($files);
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The model file of bugfree version 1 convert of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class bugfree1ConvertModel extends bugfreeConvertModel
|
||||
{
|
||||
/**
|
||||
* Execute the convert.
|
||||
*
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function execute()
|
||||
{
|
||||
$this->clear();
|
||||
$this->convertGroup();
|
||||
$result['users'] = $this->convertUser();
|
||||
$result['projects'] = $this->convertProject();
|
||||
$result['modules'] = $this->convertModule();
|
||||
$result['bugs'] = $this->convertBug();
|
||||
$result['actions'] = $this->convertAction();
|
||||
$result['files'] = $this->convertFile();
|
||||
$this->dao->dbh($this->dbh);
|
||||
$this->loadModel('tree')->fixModulePath();
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert groups.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function convertGroup()
|
||||
{
|
||||
$groups = $this->dao->dbh($this->sourceDBH)
|
||||
->select("groupID AS id, groupName AS name, groupUser AS users")
|
||||
->from('BugGroup')
|
||||
->fetchAll('id', $autoCompany = false);
|
||||
foreach($groups as $groupID => $group)
|
||||
{
|
||||
/* Explode into array. */
|
||||
$groupUsers = explode(',', $group->users);
|
||||
unset($group->id);
|
||||
unset($group->users);
|
||||
|
||||
/* Insert the group. */
|
||||
$this->dao->dbh($this->dbh)->insert(TABLE_GROUP)->data($group)->exec();
|
||||
$zentaoGroupID = $this->dao->lastInsertId();
|
||||
|
||||
/* Insert account. */
|
||||
foreach($groupUsers as $account)
|
||||
{
|
||||
if(empty($account)) continue;
|
||||
$this->dao->dbh($this->dbh)->insert(TABLE_USERGROUP)->set('`group`')->eq($zentaoGroupID)->set('account')->eq($account)->exec();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert user.
|
||||
*
|
||||
* @access public
|
||||
* @return int converted user count
|
||||
*/
|
||||
public function convertUser()
|
||||
{
|
||||
/* Get users exist in the system. */
|
||||
$activeUsers = $this->dao
|
||||
->dbh($this->sourceDBH)
|
||||
->select("username AS account, userpassword AS password, realname, email")
|
||||
->from('BugUser')
|
||||
->orderBy('userID ASC')
|
||||
->fetchAll('account', $autoCompany = false);
|
||||
|
||||
/* Get users in histories. */
|
||||
$allUsers = $this->dao->select("distinct(username) AS account")->from('BugHistory')->fetchPairs('', '', $autoCompany = false);
|
||||
|
||||
/* Merge them. */
|
||||
foreach($allUsers as $key => $account)
|
||||
{
|
||||
if(isset($activeUsers[$account]))
|
||||
{
|
||||
$allUsers[$key] = $activeUsers[$account];
|
||||
}
|
||||
else
|
||||
{
|
||||
$allUsers[$key] = array('account' => $account, 'realname' => $account, 'deleted' => '1');
|
||||
}
|
||||
}
|
||||
foreach($activeUsers as $account => $user) if(!isset($allUsers[$account])) $allUsers[$account] = $user;
|
||||
|
||||
/* Insert into zentao. */
|
||||
$convertCount = 0;
|
||||
foreach($allUsers as $account => $user)
|
||||
{
|
||||
if(!$this->dao->dbh($this->dbh)->findByAccount($account)->from(TABLE_USER)->fetch('account'))
|
||||
{
|
||||
$this->dao->dbh($this->dbh)->insert(TABLE_USER)->data($user)->exec();
|
||||
$convertCount ++;
|
||||
}
|
||||
else
|
||||
{
|
||||
self::$info['users'][] = sprintf($this->lang->convert->errorUserExists, $account);
|
||||
}
|
||||
}
|
||||
return $convertCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert project in bugfree to product in zentao.
|
||||
*
|
||||
* @access public
|
||||
* @return int converted project count
|
||||
*/
|
||||
public function convertProject()
|
||||
{
|
||||
$projects = $this->dao->dbh($this->sourceDBH)->select("projectID AS id, projectName AS name")->from('BugProject')->fetchAll('id', $autoCompany = false);
|
||||
foreach($projects as $projectID => $project)
|
||||
{
|
||||
unset($project->id);
|
||||
$this->dao->dbh($this->dbh)->insert(TABLE_PRODUCT)->data($project)->exec();
|
||||
$this->map['product'][$projectID] = $this->dao->lastInsertID();
|
||||
}
|
||||
return count($projects);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert modules.
|
||||
*
|
||||
* @access public
|
||||
* @return int converted modules count
|
||||
*/
|
||||
public function convertModule()
|
||||
{
|
||||
$this->map['module'][0] = 0;
|
||||
$modules = $this->dao
|
||||
->dbh($this->sourceDBH)
|
||||
->select(
|
||||
'moduleID AS id,
|
||||
projectID AS root,
|
||||
moduleName AS name,
|
||||
moduleGrade AS grade,
|
||||
parentID AS parent,
|
||||
"bug" AS type')
|
||||
->from('BugModule')
|
||||
->orderBy('id ASC')
|
||||
->fetchAll('id', $autoCompany = false);
|
||||
foreach($modules as $moduleID => $module)
|
||||
{
|
||||
$module->root = $this->map['product'][$module->root];
|
||||
unset($module->id);
|
||||
$this->dao->dbh($this->dbh)->insert(TABLE_MODULE)->data($module)->exec();
|
||||
$this->map['module'][$moduleID] = $this->dao->lastInsertID();
|
||||
}
|
||||
|
||||
/* Update parents. */
|
||||
foreach($modules as $oldModuleID => $module)
|
||||
{
|
||||
$newModuleID = $this->map['module'][$oldModuleID];
|
||||
$newParentID = $this->map['module'][$module->parent];
|
||||
$this->dao->dbh($this->dbh)->update(TABLE_MODULE)->set('parent')->eq($newParentID)->where('id')->eq($newModuleID)->exec();
|
||||
}
|
||||
return count($modules);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert bugs.
|
||||
*
|
||||
* @access public
|
||||
* @return int converted bugs count.
|
||||
*/
|
||||
public function convertBug()
|
||||
{
|
||||
$bugs = $this->dao
|
||||
->dbh($this->sourceDBH)
|
||||
->select('
|
||||
bugID AS id,
|
||||
projectID AS product,
|
||||
moduleID AS module,
|
||||
bugTitle AS title,
|
||||
bugSeverity AS severity,
|
||||
bugType AS type,
|
||||
bugOS AS os,
|
||||
bugStatus AS status,
|
||||
mailto,
|
||||
openedBy, openedDate, openedBuild,
|
||||
assignedTo, assignedDate,
|
||||
resolvedBy, resolution, resolvedBuild, resolvedDate,
|
||||
closedBy, closedDate,
|
||||
lastEditedBy, lastEditedDate,
|
||||
linkID as duplicateBug
|
||||
')
|
||||
->from('BugInfo')
|
||||
->orderBy('bugID')
|
||||
->fetchAll('id', $autoCompany = false);
|
||||
foreach($bugs as $bugID => $bug)
|
||||
{
|
||||
/* Adjust some fields of bug. */
|
||||
$bugID = (int)$bugID;
|
||||
unset($bug->id);
|
||||
if($bug->assignedTo == 'Closed') $bug->assignedTo = 'closed';
|
||||
$bug->type = strtolower($bug->type);
|
||||
$bug->os = strtolower($bug->os);
|
||||
$bug->browser = 'all';
|
||||
$bug->resolution = str_replace(' ','', strtolower($bug->resolution));
|
||||
$bug->product = $this->map['product'][$bug->product];
|
||||
$bug->module = $this->map['module'][$bug->module];
|
||||
$this->dao->dbh($this->dbh)->insert(TABLE_BUG)->data($bug)->exec();
|
||||
$this->map['bug'][$bugID] = $this->dao->lastInsertID();
|
||||
}
|
||||
|
||||
/* Update duplicated bugs. */
|
||||
foreach($this->map['bug'] as $oldBugID => $newBugID)
|
||||
{
|
||||
$this->dao->dbh($this->dbh)->update(TABLE_BUG)->set('duplicateBug')->eq($newBugID)->where('duplicateBug')->eq($oldBugID)->exec();
|
||||
}
|
||||
return count($bugs);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert actions.
|
||||
*
|
||||
* @access public
|
||||
* @return int converted actions count.
|
||||
*/
|
||||
public function convertAction()
|
||||
{
|
||||
$actions = $this->dao
|
||||
->dbh($this->sourceDBH)
|
||||
->select("
|
||||
'bug' AS objectType,
|
||||
bugID AS objectID,
|
||||
userName AS actor,
|
||||
action,
|
||||
fullInfo AS comment,
|
||||
actionDate AS date")
|
||||
->from('BugHistory')
|
||||
->orderBy('bugID, historyID')
|
||||
->fetchGroup('objectID', '', $autoCompany = false);
|
||||
$convertCount = 0;
|
||||
foreach($actions as $bugID => $bugActions)
|
||||
{
|
||||
/* Get the related bugID. */
|
||||
$bugID = (int)$bugID;
|
||||
$zentaoBugID = $this->map['bug'][$bugID];
|
||||
|
||||
/* Process actions. */
|
||||
foreach($bugActions as $key => $action)
|
||||
{
|
||||
$action->objectID = $zentaoBugID;
|
||||
if($key == 0)
|
||||
{
|
||||
$this->dao->dbh($this->dbh)->update(TABLE_BUG)->set('steps')->eq(nl2br($action->comment))->where('id')->eq($zentaoBugID)->exec();
|
||||
$action->comment = '';
|
||||
}
|
||||
$this->dao->dbh($this->dbh)->insert(TABLE_ACTION)->data($action)->exec();
|
||||
$convertCount ++;
|
||||
}
|
||||
}
|
||||
return $convertCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert files.
|
||||
*
|
||||
* @access public
|
||||
* @return int converted files count.
|
||||
*/
|
||||
public function convertFile()
|
||||
{
|
||||
$this->setPath();
|
||||
$files = $this->dao->dbh($this->sourceDBH)
|
||||
->select("
|
||||
fileName AS pathname,
|
||||
fileTitle AS title,
|
||||
fileType AS extension,
|
||||
fileSize AS size,
|
||||
'bug' AS objectType,
|
||||
bugID AS objectID,
|
||||
addUser AS addedBy,
|
||||
addDate AS addedDate
|
||||
")
|
||||
->from('BugFile')
|
||||
->orderBy('fileID')
|
||||
->fetchAll('', $autoCompany = false);
|
||||
foreach($files as $file)
|
||||
{
|
||||
$file->objectID = $this->map['bug'][(int)$file->objectID];
|
||||
if(strpos($file->size, 'KB')) $file->size = (int)(str_replace('KB', '', $file->size) * 1024);
|
||||
if(strpos($file->size, 'MB')) $file->size = (int)(str_replace('MB', '', $file->size) * 1024 * 1024);
|
||||
$this->dao->dbh($this->dbh)->insert(TABLE_FILE)->data($file)->exec();
|
||||
|
||||
/* Copy files. */
|
||||
$soureFile = $this->filePath . $file->pathname;
|
||||
if(!file_exists($soureFile))
|
||||
{
|
||||
self::$info['files'][] = sprintf($this->lang->convert->errorFileNotExits, $soureFile);
|
||||
continue;
|
||||
}
|
||||
$targetFile = $this->app->getAppRoot() . "www/data/upload/{$this->app->company->id}/" . $file->pathname;
|
||||
$targetPath = dirname($targetFile);
|
||||
if(!is_dir($targetPath)) mkdir($targetPath, 0777, true);
|
||||
if(!copy($soureFile, $targetFile))
|
||||
{
|
||||
self::$info['files'][] = sprintf($this->lang->convert->errorCopyFailed, $targetFile);
|
||||
}
|
||||
}
|
||||
return count($files);
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,88 +1,88 @@
|
||||
<?php
|
||||
/**
|
||||
* The baisc model file of bugfree convert of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Yangyang Shi <shiyangyang@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class redmineConvertModel extends convertModel
|
||||
{
|
||||
public $map = array();
|
||||
public $filePath = '';
|
||||
static public $info = array();
|
||||
|
||||
/**
|
||||
* Connect to db auto.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
parent::connectDB();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check table.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function checkTables()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check the install path.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function checkPath()
|
||||
{
|
||||
$this->setPath();
|
||||
return file_exists($this->filePath);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the path of attachments.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function setPath()
|
||||
{
|
||||
$this->filePath = realpath($this->post->installPath) . $this->app->getPathFix() . 'files' . $this->app->getPathFix();
|
||||
}
|
||||
|
||||
/**
|
||||
* Excute the convert.
|
||||
*
|
||||
* @param int $version
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function execute($version)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear rows added in converting.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function clear()
|
||||
{
|
||||
foreach($this->session->state as $table => $maxID)
|
||||
{
|
||||
$this->dao->dbh($this->dbh)->delete()->from($table)->where('id')->gt($maxID)->exec();
|
||||
}
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The baisc model file of bugfree convert of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Yangyang Shi <shiyangyang@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class redmineConvertModel extends convertModel
|
||||
{
|
||||
public $map = array();
|
||||
public $filePath = '';
|
||||
static public $info = array();
|
||||
|
||||
/**
|
||||
* Connect to db auto.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
parent::connectDB();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check table.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function checkTables()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check the install path.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function checkPath()
|
||||
{
|
||||
$this->setPath();
|
||||
return file_exists($this->filePath);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the path of attachments.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function setPath()
|
||||
{
|
||||
$this->filePath = realpath($this->post->installPath) . $this->app->getPathFix() . 'files' . $this->app->getPathFix();
|
||||
}
|
||||
|
||||
/**
|
||||
* Excute the convert.
|
||||
*
|
||||
* @param int $version
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function execute($version)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear rows added in converting.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function clear()
|
||||
{
|
||||
foreach($this->session->state as $table => $maxID)
|
||||
{
|
||||
$this->dao->dbh($this->dbh)->delete()->from($table)->where('id')->gt($maxID)->exec();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,124 +1,124 @@
|
||||
<?php
|
||||
/**
|
||||
* The convert module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->convert->common = 'Import';
|
||||
$lang->convert->index = 'Index';
|
||||
$lang->convert->next = 'Next';
|
||||
$lang->convert->pre = 'Back';
|
||||
$lang->convert->reload = 'Reload';
|
||||
$lang->convert->error = 'Error ';
|
||||
|
||||
$lang->convert->start = 'Begin import';
|
||||
$lang->convert->desc = <<<EOT
|
||||
<p>Welcome to use this convert wizard which will help you to import other system data to ZenTaoPMS.</p>
|
||||
<strong>Importing is dangerous. Be sure to backup your database and other data files and sure nobody is using pms when importing.</strong>
|
||||
EOT;
|
||||
|
||||
$lang->convert->setConfig = 'Source config';
|
||||
$lang->convert->setBugfree = 'Bugfree config';
|
||||
$lang->convert->setRedmine = 'Redmine config';
|
||||
$lang->convert->checkBugFree = 'Check Bugfree';
|
||||
$lang->convert->checkRedmine = 'Check Redmine';
|
||||
$lang->convert->convertRedmine = 'Convert Redmine';
|
||||
$lang->convert->convertBugFree = 'Convert BugFree';
|
||||
|
||||
$lang->convert->selectSource = 'Select source system and version';
|
||||
$lang->convert->source = 'Source system';
|
||||
$lang->convert->version = 'Version';
|
||||
$lang->convert->mustSelectSource = "Must select a source system";
|
||||
|
||||
$lang->convert->direction = 'Please select the direction of issue in Redmine';
|
||||
$lang->convert->questionTypeOfRedmine = 'Types of issue in Redmine';
|
||||
$lang->convert->aimTypeOfZentao = 'Aim type in Zentao';
|
||||
|
||||
$lang->convert->directionList['bug'] = 'Bug';
|
||||
$lang->convert->directionList['task'] = 'Task';
|
||||
$lang->convert->directionList['story'] = 'Story';
|
||||
|
||||
$lang->convert->sourceList['BugFree'] = array('bugfree_1' => '1.x', 'bugfree_2' => '2.x');
|
||||
$lang->convert->sourceList['Redmine'] = array('Redmine_1_1' => '1.1');
|
||||
|
||||
$lang->convert->setting = 'Setting';
|
||||
$lang->convert->checkConfig = 'Check setting';
|
||||
|
||||
$lang->convert->ok = 'Check passed(√)';
|
||||
$lang->convert->fail = 'Check failed(×)';
|
||||
|
||||
$lang->convert->settingDB = 'Set database';
|
||||
$lang->convert->dbHost = 'Database server';
|
||||
$lang->convert->dbPort = 'Server port';
|
||||
$lang->convert->dbUser = 'Database user';
|
||||
$lang->convert->dbPassword = 'Database password';
|
||||
$lang->convert->dbName = '%s database';
|
||||
$lang->convert->dbCharset = '%s charset';
|
||||
$lang->convert->dbPrefix = '%s table prefix';
|
||||
$lang->convert->installPath = '%s installed path';
|
||||
|
||||
$lang->convert->checkDB = 'Database';
|
||||
$lang->convert->checkTable = 'Table';
|
||||
$lang->convert->checkPath = 'Installed path';
|
||||
|
||||
$lang->convert->execute = 'Execute import';
|
||||
$lang->convert->item = 'Imported items';
|
||||
$lang->convert->count = 'Count';
|
||||
$lang->convert->info = 'Info';
|
||||
|
||||
$lang->convert->bugfree = new stdclass();
|
||||
$lang->convert->bugfree->users = 'User';
|
||||
$lang->convert->bugfree->projects = 'Project';
|
||||
$lang->convert->bugfree->modules = 'Module';
|
||||
$lang->convert->bugfree->bugs = 'Bug';
|
||||
$lang->convert->bugfree->cases = 'Case';
|
||||
$lang->convert->bugfree->results = 'Result';
|
||||
$lang->convert->bugfree->actions = 'History';
|
||||
$lang->convert->bugfree->files = 'File';
|
||||
|
||||
$lang->convert->redmine = new stdclass();
|
||||
$lang->convert->redmine->users = 'Users';
|
||||
$lang->convert->redmine->groups = 'Groups';
|
||||
$lang->convert->redmine->products = 'Products';
|
||||
$lang->convert->redmine->projects = 'Projects';
|
||||
$lang->convert->redmine->stories = 'Stories';
|
||||
$lang->convert->redmine->tasks = 'Tasks';
|
||||
$lang->convert->redmine->bugs = 'Bugs';
|
||||
$lang->convert->redmine->productPlans = 'ProductPlans';
|
||||
$lang->convert->redmine->teams = 'Teams';
|
||||
$lang->convert->redmine->releases = 'Releases';
|
||||
$lang->convert->redmine->builds = 'Builds';
|
||||
$lang->convert->redmine->docLibs = 'DocLibs';
|
||||
$lang->convert->redmine->docs = 'Docs';
|
||||
$lang->convert->redmine->files = 'files';
|
||||
|
||||
$lang->convert->errorConnectDB = 'Connect to database server failed.';
|
||||
$lang->convert->errorFileNotExits = 'File %s not exits.';
|
||||
$lang->convert->errorUserExists = 'User %s exits already.';
|
||||
$lang->convert->errorGroupExists = 'Group %s exits already.';
|
||||
$lang->convert->errorBuildExists = 'Build %s exits already.';
|
||||
$lang->convert->errorReleaseExists = 'Release %s exits already.';
|
||||
$lang->convert->errorCopyFailed = 'file %s copy failed.';
|
||||
|
||||
$lang->convert->setParam = 'Please set params';
|
||||
|
||||
$lang->convert->statusType = new stdclass();
|
||||
$lang->convert->priType = new stdclass();
|
||||
|
||||
$lang->convert->aimType = 'Issue types goto';
|
||||
$lang->convert->statusType->bug = 'Status types goto(status of Bug)';
|
||||
$lang->convert->statusType->story = 'Status types goto(status of story)';
|
||||
$lang->convert->statusType->task = 'Status types goto(status of task)';
|
||||
$lang->convert->priType->bug = 'Priority types goto(priority of Bug)';
|
||||
$lang->convert->priType->story = 'Priority types goto(priority of story)';
|
||||
$lang->convert->priType->task = 'Priority types goto(priority of task)';
|
||||
|
||||
$lang->convert->issue = new stdclass();
|
||||
$lang->convert->issue->redmine = 'Redmine';
|
||||
$lang->convert->issue->zentao = 'ZenTao';
|
||||
$lang->convert->issue->goto = 'Goto';
|
||||
<?php
|
||||
/**
|
||||
* The convert module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->convert->common = 'Import';
|
||||
$lang->convert->index = 'Index';
|
||||
$lang->convert->next = 'Next';
|
||||
$lang->convert->pre = 'Back';
|
||||
$lang->convert->reload = 'Reload';
|
||||
$lang->convert->error = 'Error ';
|
||||
|
||||
$lang->convert->start = 'Begin import';
|
||||
$lang->convert->desc = <<<EOT
|
||||
<p>Welcome to use this convert wizard which will help you to import other system data to ZenTaoPMS.</p>
|
||||
<strong>Importing is dangerous. Be sure to backup your database and other data files and sure nobody is using pms when importing.</strong>
|
||||
EOT;
|
||||
|
||||
$lang->convert->setConfig = 'Source config';
|
||||
$lang->convert->setBugfree = 'Bugfree config';
|
||||
$lang->convert->setRedmine = 'Redmine config';
|
||||
$lang->convert->checkBugFree = 'Check Bugfree';
|
||||
$lang->convert->checkRedmine = 'Check Redmine';
|
||||
$lang->convert->convertRedmine = 'Convert Redmine';
|
||||
$lang->convert->convertBugFree = 'Convert BugFree';
|
||||
|
||||
$lang->convert->selectSource = 'Select source system and version';
|
||||
$lang->convert->source = 'Source system';
|
||||
$lang->convert->version = 'Version';
|
||||
$lang->convert->mustSelectSource = "Must select a source system";
|
||||
|
||||
$lang->convert->direction = 'Please select the direction of issue in Redmine';
|
||||
$lang->convert->questionTypeOfRedmine = 'Types of issue in Redmine';
|
||||
$lang->convert->aimTypeOfZentao = 'Aim type in Zentao';
|
||||
|
||||
$lang->convert->directionList['bug'] = 'Bug';
|
||||
$lang->convert->directionList['task'] = 'Task';
|
||||
$lang->convert->directionList['story'] = 'Story';
|
||||
|
||||
$lang->convert->sourceList['BugFree'] = array('bugfree_1' => '1.x', 'bugfree_2' => '2.x');
|
||||
$lang->convert->sourceList['Redmine'] = array('Redmine_1_1' => '1.1');
|
||||
|
||||
$lang->convert->setting = 'Setting';
|
||||
$lang->convert->checkConfig = 'Check setting';
|
||||
|
||||
$lang->convert->ok = 'Check passed(√)';
|
||||
$lang->convert->fail = 'Check failed(×)';
|
||||
|
||||
$lang->convert->settingDB = 'Set database';
|
||||
$lang->convert->dbHost = 'Database server';
|
||||
$lang->convert->dbPort = 'Server port';
|
||||
$lang->convert->dbUser = 'Database user';
|
||||
$lang->convert->dbPassword = 'Database password';
|
||||
$lang->convert->dbName = '%s database';
|
||||
$lang->convert->dbCharset = '%s charset';
|
||||
$lang->convert->dbPrefix = '%s table prefix';
|
||||
$lang->convert->installPath = '%s installed path';
|
||||
|
||||
$lang->convert->checkDB = 'Database';
|
||||
$lang->convert->checkTable = 'Table';
|
||||
$lang->convert->checkPath = 'Installed path';
|
||||
|
||||
$lang->convert->execute = 'Execute import';
|
||||
$lang->convert->item = 'Imported items';
|
||||
$lang->convert->count = 'Count';
|
||||
$lang->convert->info = 'Info';
|
||||
|
||||
$lang->convert->bugfree = new stdclass();
|
||||
$lang->convert->bugfree->users = 'User';
|
||||
$lang->convert->bugfree->projects = 'Project';
|
||||
$lang->convert->bugfree->modules = 'Module';
|
||||
$lang->convert->bugfree->bugs = 'Bug';
|
||||
$lang->convert->bugfree->cases = 'Case';
|
||||
$lang->convert->bugfree->results = 'Result';
|
||||
$lang->convert->bugfree->actions = 'History';
|
||||
$lang->convert->bugfree->files = 'File';
|
||||
|
||||
$lang->convert->redmine = new stdclass();
|
||||
$lang->convert->redmine->users = 'Users';
|
||||
$lang->convert->redmine->groups = 'Groups';
|
||||
$lang->convert->redmine->products = 'Products';
|
||||
$lang->convert->redmine->projects = 'Projects';
|
||||
$lang->convert->redmine->stories = 'Stories';
|
||||
$lang->convert->redmine->tasks = 'Tasks';
|
||||
$lang->convert->redmine->bugs = 'Bugs';
|
||||
$lang->convert->redmine->productPlans = 'ProductPlans';
|
||||
$lang->convert->redmine->teams = 'Teams';
|
||||
$lang->convert->redmine->releases = 'Releases';
|
||||
$lang->convert->redmine->builds = 'Builds';
|
||||
$lang->convert->redmine->docLibs = 'DocLibs';
|
||||
$lang->convert->redmine->docs = 'Docs';
|
||||
$lang->convert->redmine->files = 'files';
|
||||
|
||||
$lang->convert->errorConnectDB = 'Connect to database server failed.';
|
||||
$lang->convert->errorFileNotExits = 'File %s not exits.';
|
||||
$lang->convert->errorUserExists = 'User %s exits already.';
|
||||
$lang->convert->errorGroupExists = 'Group %s exits already.';
|
||||
$lang->convert->errorBuildExists = 'Build %s exits already.';
|
||||
$lang->convert->errorReleaseExists = 'Release %s exits already.';
|
||||
$lang->convert->errorCopyFailed = 'file %s copy failed.';
|
||||
|
||||
$lang->convert->setParam = 'Please set params';
|
||||
|
||||
$lang->convert->statusType = new stdclass();
|
||||
$lang->convert->priType = new stdclass();
|
||||
|
||||
$lang->convert->aimType = 'Issue types goto';
|
||||
$lang->convert->statusType->bug = 'Status types goto(status of Bug)';
|
||||
$lang->convert->statusType->story = 'Status types goto(status of story)';
|
||||
$lang->convert->statusType->task = 'Status types goto(status of task)';
|
||||
$lang->convert->priType->bug = 'Priority types goto(priority of Bug)';
|
||||
$lang->convert->priType->story = 'Priority types goto(priority of story)';
|
||||
$lang->convert->priType->task = 'Priority types goto(priority of task)';
|
||||
|
||||
$lang->convert->issue = new stdclass();
|
||||
$lang->convert->issue->redmine = 'Redmine';
|
||||
$lang->convert->issue->zentao = 'ZenTao';
|
||||
$lang->convert->issue->goto = 'Goto';
|
||||
|
||||
@@ -1,124 +1,124 @@
|
||||
<?php
|
||||
/**
|
||||
* The convert module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->convert->common = '从其他系统导入';
|
||||
$lang->convert->index = '首页';
|
||||
$lang->convert->next = '下一步';
|
||||
$lang->convert->pre = '返回';
|
||||
$lang->convert->reload = '刷新';
|
||||
$lang->convert->error = '错误 ';
|
||||
|
||||
$lang->convert->start = '开始转换';
|
||||
$lang->convert->desc = <<<EOT
|
||||
<p>欢迎使用系统转换向导,本程序会帮助您将其他系统的数据转换到禅道项目管理系统中。</p>
|
||||
<strong>转换存在一定的风险,转换之前,我们强烈建议您备份数据库及相应的数据文件,并保证转换的时候,没有其他人进行操作。</strong>
|
||||
EOT;
|
||||
|
||||
$lang->convert->setConfig = '来源系统配置';
|
||||
$lang->convert->setBugfree = 'Bugfree配置';
|
||||
$lang->convert->setRedmine = 'Redmine配置';
|
||||
$lang->convert->checkBugFree = '检查Bugfree';
|
||||
$lang->convert->checkRedmine = '检查Redmine';
|
||||
$lang->convert->convertRedmine = '转换Redmine';
|
||||
$lang->convert->convertBugFree = '转换BugFree';
|
||||
|
||||
$lang->convert->selectSource = '选择来源系统及版本';
|
||||
$lang->convert->source = '来源系统';
|
||||
$lang->convert->version = '版本';
|
||||
$lang->convert->mustSelectSource = "必须选择一个来源。";
|
||||
|
||||
$lang->convert->direction = '请选择项目问题转换方向';
|
||||
$lang->convert->questionTypeOfRedmine = 'Redmine中问题类型';
|
||||
$lang->convert->aimTypeOfZentao = '转化为Zentao中的类型';
|
||||
|
||||
$lang->convert->directionList['bug'] = 'Bug';
|
||||
$lang->convert->directionList['task'] = '任务';
|
||||
$lang->convert->directionList['story'] = '需求';
|
||||
|
||||
$lang->convert->sourceList['BugFree'] = array('bugfree_1' => '1.x', 'bugfree_2' => '2.x');
|
||||
$lang->convert->sourceList['Redmine'] = array('Redmine_1.1' => '1.1');
|
||||
|
||||
$lang->convert->setting = '设置';
|
||||
$lang->convert->checkConfig = '检查配置';
|
||||
|
||||
$lang->convert->ok = '检查通过(√)';
|
||||
$lang->convert->fail = '检查失败(×)';
|
||||
|
||||
$lang->convert->settingDB = '设置数据库';
|
||||
$lang->convert->dbHost = '数据库服务器';
|
||||
$lang->convert->dbPort = '服务器端口';
|
||||
$lang->convert->dbUser = '数据库用户名';
|
||||
$lang->convert->dbPassword = '数据库密码';
|
||||
$lang->convert->dbName = '%s使用的库';
|
||||
$lang->convert->dbCharset = '%s数据库编码';
|
||||
$lang->convert->dbPrefix = '%s表前缀';
|
||||
$lang->convert->installPath = '%s安装的根目录';
|
||||
|
||||
$lang->convert->checkDB = '数据库';
|
||||
$lang->convert->checkTable = '表';
|
||||
$lang->convert->checkPath = '安装路径';
|
||||
|
||||
$lang->convert->execute = '执行转换';
|
||||
$lang->convert->item = '转换项';
|
||||
$lang->convert->count = '转换数量';
|
||||
$lang->convert->info = '转换信息';
|
||||
|
||||
$lang->convert->bugfree = new stdclass();
|
||||
$lang->convert->bugfree->users = '用户';
|
||||
$lang->convert->bugfree->projects = '项目';
|
||||
$lang->convert->bugfree->modules = '模块';
|
||||
$lang->convert->bugfree->bugs = 'Bug';
|
||||
$lang->convert->bugfree->cases = '测试用例';
|
||||
$lang->convert->bugfree->results = '测试结果';
|
||||
$lang->convert->bugfree->actions = '历史记录';
|
||||
$lang->convert->bugfree->files = '附件';
|
||||
|
||||
$lang->convert->redmine = new stdclass();
|
||||
$lang->convert->redmine->users = '用户';
|
||||
$lang->convert->redmine->groups = '用户分组';
|
||||
$lang->convert->redmine->products = '产品';
|
||||
$lang->convert->redmine->projects = '项目';
|
||||
$lang->convert->redmine->stories = '需求';
|
||||
$lang->convert->redmine->tasks = '任务';
|
||||
$lang->convert->redmine->bugs = 'Bug';
|
||||
$lang->convert->redmine->productPlans = '产品计划';
|
||||
$lang->convert->redmine->teams = '团队';
|
||||
$lang->convert->redmine->releases = '发布';
|
||||
$lang->convert->redmine->builds = 'Build';
|
||||
$lang->convert->redmine->docLibs = '文档库';
|
||||
$lang->convert->redmine->docs = '文档';
|
||||
$lang->convert->redmine->files = '附件';
|
||||
|
||||
$lang->convert->errorConnectDB = '数据库连接失败 ';
|
||||
$lang->convert->errorFileNotExits = '文件 %s 不存在';
|
||||
$lang->convert->errorUserExists = '用户 %s 已存在';
|
||||
$lang->convert->errorGroupExists = '分组 %s 已存在';
|
||||
$lang->convert->errorBuildExists = 'Build %s 已存在';
|
||||
$lang->convert->errorReleaseExists = '发布 %s 已存在';
|
||||
$lang->convert->errorCopyFailed = '文件 %s 拷贝失败';
|
||||
|
||||
$lang->convert->setParam = '请设置转换参数';
|
||||
|
||||
$lang->convert->statusType = new stdclass();
|
||||
$lang->convert->priType = new stdclass();
|
||||
|
||||
$lang->convert->aimType = '问题类型转换';
|
||||
$lang->convert->statusType->bug = '状态类型转换(Bug状态)';
|
||||
$lang->convert->statusType->story = '状态类型转换(Story状态)';
|
||||
$lang->convert->statusType->task = '状态类型转换(Task状态)';
|
||||
$lang->convert->priType->bug = '优先级类型转换(Bug状态)';
|
||||
$lang->convert->priType->story = '优先级类型转换(Story状态)';
|
||||
$lang->convert->priType->task = '优先级类型转换(Task状态)';
|
||||
|
||||
$lang->convert->issue = new stdclass();
|
||||
$lang->convert->issue->redmine = 'Redmine';
|
||||
$lang->convert->issue->zentao = '禅道';
|
||||
$lang->convert->issue->goto = '转换为';
|
||||
<?php
|
||||
/**
|
||||
* The convert module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->convert->common = '从其他系统导入';
|
||||
$lang->convert->index = '首页';
|
||||
$lang->convert->next = '下一步';
|
||||
$lang->convert->pre = '返回';
|
||||
$lang->convert->reload = '刷新';
|
||||
$lang->convert->error = '错误 ';
|
||||
|
||||
$lang->convert->start = '开始转换';
|
||||
$lang->convert->desc = <<<EOT
|
||||
<p>欢迎使用系统转换向导,本程序会帮助您将其他系统的数据转换到禅道项目管理系统中。</p>
|
||||
<strong>转换存在一定的风险,转换之前,我们强烈建议您备份数据库及相应的数据文件,并保证转换的时候,没有其他人进行操作。</strong>
|
||||
EOT;
|
||||
|
||||
$lang->convert->setConfig = '来源系统配置';
|
||||
$lang->convert->setBugfree = 'Bugfree配置';
|
||||
$lang->convert->setRedmine = 'Redmine配置';
|
||||
$lang->convert->checkBugFree = '检查Bugfree';
|
||||
$lang->convert->checkRedmine = '检查Redmine';
|
||||
$lang->convert->convertRedmine = '转换Redmine';
|
||||
$lang->convert->convertBugFree = '转换BugFree';
|
||||
|
||||
$lang->convert->selectSource = '选择来源系统及版本';
|
||||
$lang->convert->source = '来源系统';
|
||||
$lang->convert->version = '版本';
|
||||
$lang->convert->mustSelectSource = "必须选择一个来源。";
|
||||
|
||||
$lang->convert->direction = '请选择项目问题转换方向';
|
||||
$lang->convert->questionTypeOfRedmine = 'Redmine中问题类型';
|
||||
$lang->convert->aimTypeOfZentao = '转化为Zentao中的类型';
|
||||
|
||||
$lang->convert->directionList['bug'] = 'Bug';
|
||||
$lang->convert->directionList['task'] = '任务';
|
||||
$lang->convert->directionList['story'] = '需求';
|
||||
|
||||
$lang->convert->sourceList['BugFree'] = array('bugfree_1' => '1.x', 'bugfree_2' => '2.x');
|
||||
$lang->convert->sourceList['Redmine'] = array('Redmine_1.1' => '1.1');
|
||||
|
||||
$lang->convert->setting = '设置';
|
||||
$lang->convert->checkConfig = '检查配置';
|
||||
|
||||
$lang->convert->ok = '检查通过(√)';
|
||||
$lang->convert->fail = '检查失败(×)';
|
||||
|
||||
$lang->convert->settingDB = '设置数据库';
|
||||
$lang->convert->dbHost = '数据库服务器';
|
||||
$lang->convert->dbPort = '服务器端口';
|
||||
$lang->convert->dbUser = '数据库用户名';
|
||||
$lang->convert->dbPassword = '数据库密码';
|
||||
$lang->convert->dbName = '%s使用的库';
|
||||
$lang->convert->dbCharset = '%s数据库编码';
|
||||
$lang->convert->dbPrefix = '%s表前缀';
|
||||
$lang->convert->installPath = '%s安装的根目录';
|
||||
|
||||
$lang->convert->checkDB = '数据库';
|
||||
$lang->convert->checkTable = '表';
|
||||
$lang->convert->checkPath = '安装路径';
|
||||
|
||||
$lang->convert->execute = '执行转换';
|
||||
$lang->convert->item = '转换项';
|
||||
$lang->convert->count = '转换数量';
|
||||
$lang->convert->info = '转换信息';
|
||||
|
||||
$lang->convert->bugfree = new stdclass();
|
||||
$lang->convert->bugfree->users = '用户';
|
||||
$lang->convert->bugfree->projects = '项目';
|
||||
$lang->convert->bugfree->modules = '模块';
|
||||
$lang->convert->bugfree->bugs = 'Bug';
|
||||
$lang->convert->bugfree->cases = '测试用例';
|
||||
$lang->convert->bugfree->results = '测试结果';
|
||||
$lang->convert->bugfree->actions = '历史记录';
|
||||
$lang->convert->bugfree->files = '附件';
|
||||
|
||||
$lang->convert->redmine = new stdclass();
|
||||
$lang->convert->redmine->users = '用户';
|
||||
$lang->convert->redmine->groups = '用户分组';
|
||||
$lang->convert->redmine->products = '产品';
|
||||
$lang->convert->redmine->projects = '项目';
|
||||
$lang->convert->redmine->stories = '需求';
|
||||
$lang->convert->redmine->tasks = '任务';
|
||||
$lang->convert->redmine->bugs = 'Bug';
|
||||
$lang->convert->redmine->productPlans = '产品计划';
|
||||
$lang->convert->redmine->teams = '团队';
|
||||
$lang->convert->redmine->releases = '发布';
|
||||
$lang->convert->redmine->builds = 'Build';
|
||||
$lang->convert->redmine->docLibs = '文档库';
|
||||
$lang->convert->redmine->docs = '文档';
|
||||
$lang->convert->redmine->files = '附件';
|
||||
|
||||
$lang->convert->errorConnectDB = '数据库连接失败 ';
|
||||
$lang->convert->errorFileNotExits = '文件 %s 不存在';
|
||||
$lang->convert->errorUserExists = '用户 %s 已存在';
|
||||
$lang->convert->errorGroupExists = '分组 %s 已存在';
|
||||
$lang->convert->errorBuildExists = 'Build %s 已存在';
|
||||
$lang->convert->errorReleaseExists = '发布 %s 已存在';
|
||||
$lang->convert->errorCopyFailed = '文件 %s 拷贝失败';
|
||||
|
||||
$lang->convert->setParam = '请设置转换参数';
|
||||
|
||||
$lang->convert->statusType = new stdclass();
|
||||
$lang->convert->priType = new stdclass();
|
||||
|
||||
$lang->convert->aimType = '问题类型转换';
|
||||
$lang->convert->statusType->bug = '状态类型转换(Bug状态)';
|
||||
$lang->convert->statusType->story = '状态类型转换(Story状态)';
|
||||
$lang->convert->statusType->task = '状态类型转换(Task状态)';
|
||||
$lang->convert->priType->bug = '优先级类型转换(Bug状态)';
|
||||
$lang->convert->priType->story = '优先级类型转换(Story状态)';
|
||||
$lang->convert->priType->task = '优先级类型转换(Task状态)';
|
||||
|
||||
$lang->convert->issue = new stdclass();
|
||||
$lang->convert->issue->redmine = 'Redmine';
|
||||
$lang->convert->issue->zentao = '禅道';
|
||||
$lang->convert->issue->goto = '转换为';
|
||||
|
||||
@@ -1,124 +1,124 @@
|
||||
<?php
|
||||
/**
|
||||
* The convert module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id: zh-tw.php 3772 2012-12-12 02:18:16Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->convert->common = '從其他系統導入';
|
||||
$lang->convert->index = '首頁';
|
||||
$lang->convert->next = '下一步';
|
||||
$lang->convert->pre = '返回';
|
||||
$lang->convert->reload = '刷新';
|
||||
$lang->convert->error = '錯誤 ';
|
||||
|
||||
$lang->convert->start = '開始轉換';
|
||||
$lang->convert->desc = <<<EOT
|
||||
<p>歡迎使用系統轉換嚮導,本程序會幫助您將其他系統的數據轉換到禪道項目管理系統中。</p>
|
||||
<strong>轉換存在一定的風險,轉換之前,我們強烈建議您備份資料庫及相應的數據檔案,並保證轉換的時候,沒有其他人進行操作。</strong>
|
||||
EOT;
|
||||
|
||||
$lang->convert->setConfig = '來源系統配置';
|
||||
$lang->convert->setBugfree = 'Bugfree配置';
|
||||
$lang->convert->setRedmine = 'Redmine配置';
|
||||
$lang->convert->checkBugFree = '檢查Bugfree';
|
||||
$lang->convert->checkRedmine = '檢查Redmine';
|
||||
$lang->convert->convertRedmine = '轉換Redmine';
|
||||
$lang->convert->convertBugFree = '轉換BugFree';
|
||||
|
||||
$lang->convert->selectSource = '選擇來源系統及版本';
|
||||
$lang->convert->source = '來源系統';
|
||||
$lang->convert->version = '版本';
|
||||
$lang->convert->mustSelectSource = "必須選擇一個來源。";
|
||||
|
||||
$lang->convert->direction = '請選擇項目問題轉換方向';
|
||||
$lang->convert->questionTypeOfRedmine = 'Redmine中問題類型';
|
||||
$lang->convert->aimTypeOfZentao = '轉化為Zentao中的類型';
|
||||
|
||||
$lang->convert->directionList['bug'] = 'Bug';
|
||||
$lang->convert->directionList['task'] = '任務';
|
||||
$lang->convert->directionList['story'] = '需求';
|
||||
|
||||
$lang->convert->sourceList['BugFree'] = array('bugfree_1' => '1.x', 'bugfree_2' => '2.x');
|
||||
$lang->convert->sourceList['Redmine'] = array('Redmine_1.1' => '1.1');
|
||||
|
||||
$lang->convert->setting = '設置';
|
||||
$lang->convert->checkConfig = '檢查配置';
|
||||
|
||||
$lang->convert->ok = '檢查通過(√)';
|
||||
$lang->convert->fail = '檢查失敗(×)';
|
||||
|
||||
$lang->convert->settingDB = '設置資料庫';
|
||||
$lang->convert->dbHost = '資料庫伺服器';
|
||||
$lang->convert->dbPort = '伺服器連接埠';
|
||||
$lang->convert->dbUser = '資料庫用戶名';
|
||||
$lang->convert->dbPassword = '資料庫密碼';
|
||||
$lang->convert->dbName = '%s使用的庫';
|
||||
$lang->convert->dbCharset = '%s資料庫編碼';
|
||||
$lang->convert->dbPrefix = '%s表首碼';
|
||||
$lang->convert->installPath = '%s安裝的根目錄';
|
||||
|
||||
$lang->convert->checkDB = '資料庫';
|
||||
$lang->convert->checkTable = '表';
|
||||
$lang->convert->checkPath = '安裝路徑';
|
||||
|
||||
$lang->convert->execute = '執行轉換';
|
||||
$lang->convert->item = '轉換項';
|
||||
$lang->convert->count = '轉換數量';
|
||||
$lang->convert->info = '轉換信息';
|
||||
|
||||
$lang->convert->bugfree = new stdclass();
|
||||
$lang->convert->bugfree->users = '用戶';
|
||||
$lang->convert->bugfree->projects = '項目';
|
||||
$lang->convert->bugfree->modules = '模組';
|
||||
$lang->convert->bugfree->bugs = 'Bug';
|
||||
$lang->convert->bugfree->cases = '測試用例';
|
||||
$lang->convert->bugfree->results = '測試結果';
|
||||
$lang->convert->bugfree->actions = '歷史記錄';
|
||||
$lang->convert->bugfree->files = '附件';
|
||||
|
||||
$lang->convert->redmine = new stdclass();
|
||||
$lang->convert->redmine->users = '用戶';
|
||||
$lang->convert->redmine->groups = '用戶分組';
|
||||
$lang->convert->redmine->products = '產品';
|
||||
$lang->convert->redmine->projects = '項目';
|
||||
$lang->convert->redmine->stories = '需求';
|
||||
$lang->convert->redmine->tasks = '任務';
|
||||
$lang->convert->redmine->bugs = 'Bug';
|
||||
$lang->convert->redmine->productPlans = '產品計劃';
|
||||
$lang->convert->redmine->teams = '團隊';
|
||||
$lang->convert->redmine->releases = '發佈';
|
||||
$lang->convert->redmine->builds = 'Build';
|
||||
$lang->convert->redmine->docLibs = '文檔庫';
|
||||
$lang->convert->redmine->docs = '文檔';
|
||||
$lang->convert->redmine->files = '附件';
|
||||
|
||||
$lang->convert->errorConnectDB = '資料庫連接失敗 ';
|
||||
$lang->convert->errorFileNotExits = '檔案 %s 不存在';
|
||||
$lang->convert->errorUserExists = '用戶 %s 已存在';
|
||||
$lang->convert->errorGroupExists = '分組 %s 已存在';
|
||||
$lang->convert->errorBuildExists = 'Build %s 已存在';
|
||||
$lang->convert->errorReleaseExists = '發佈 %s 已存在';
|
||||
$lang->convert->errorCopyFailed = '檔案 %s 拷貝失敗';
|
||||
|
||||
$lang->convert->setParam = '請設置轉換參數';
|
||||
|
||||
$lang->convert->statusType = new stdclass();
|
||||
$lang->convert->priType = new stdclass();
|
||||
|
||||
$lang->convert->aimType = '問題類型轉換';
|
||||
$lang->convert->statusType->bug = '狀態類型轉換(Bug狀態)';
|
||||
$lang->convert->statusType->story = '狀態類型轉換(Story狀態)';
|
||||
$lang->convert->statusType->task = '狀態類型轉換(Task狀態)';
|
||||
$lang->convert->priType->bug = '優先順序類型轉換(Bug狀態)';
|
||||
$lang->convert->priType->story = '優先順序類型轉換(Story狀態)';
|
||||
$lang->convert->priType->task = '優先順序類型轉換(Task狀態)';
|
||||
|
||||
$lang->convert->issue = new stdclass();
|
||||
$lang->convert->issue->redmine = 'Redmine';
|
||||
$lang->convert->issue->zentao = '禪道';
|
||||
$lang->convert->issue->goto = '轉換為';
|
||||
<?php
|
||||
/**
|
||||
* The convert module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id: zh-tw.php 3772 2012-12-12 02:18:16Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->convert->common = '從其他系統導入';
|
||||
$lang->convert->index = '首頁';
|
||||
$lang->convert->next = '下一步';
|
||||
$lang->convert->pre = '返回';
|
||||
$lang->convert->reload = '刷新';
|
||||
$lang->convert->error = '錯誤 ';
|
||||
|
||||
$lang->convert->start = '開始轉換';
|
||||
$lang->convert->desc = <<<EOT
|
||||
<p>歡迎使用系統轉換嚮導,本程序會幫助您將其他系統的數據轉換到禪道項目管理系統中。</p>
|
||||
<strong>轉換存在一定的風險,轉換之前,我們強烈建議您備份資料庫及相應的數據檔案,並保證轉換的時候,沒有其他人進行操作。</strong>
|
||||
EOT;
|
||||
|
||||
$lang->convert->setConfig = '來源系統配置';
|
||||
$lang->convert->setBugfree = 'Bugfree配置';
|
||||
$lang->convert->setRedmine = 'Redmine配置';
|
||||
$lang->convert->checkBugFree = '檢查Bugfree';
|
||||
$lang->convert->checkRedmine = '檢查Redmine';
|
||||
$lang->convert->convertRedmine = '轉換Redmine';
|
||||
$lang->convert->convertBugFree = '轉換BugFree';
|
||||
|
||||
$lang->convert->selectSource = '選擇來源系統及版本';
|
||||
$lang->convert->source = '來源系統';
|
||||
$lang->convert->version = '版本';
|
||||
$lang->convert->mustSelectSource = "必須選擇一個來源。";
|
||||
|
||||
$lang->convert->direction = '請選擇項目問題轉換方向';
|
||||
$lang->convert->questionTypeOfRedmine = 'Redmine中問題類型';
|
||||
$lang->convert->aimTypeOfZentao = '轉化為Zentao中的類型';
|
||||
|
||||
$lang->convert->directionList['bug'] = 'Bug';
|
||||
$lang->convert->directionList['task'] = '任務';
|
||||
$lang->convert->directionList['story'] = '需求';
|
||||
|
||||
$lang->convert->sourceList['BugFree'] = array('bugfree_1' => '1.x', 'bugfree_2' => '2.x');
|
||||
$lang->convert->sourceList['Redmine'] = array('Redmine_1.1' => '1.1');
|
||||
|
||||
$lang->convert->setting = '設置';
|
||||
$lang->convert->checkConfig = '檢查配置';
|
||||
|
||||
$lang->convert->ok = '檢查通過(√)';
|
||||
$lang->convert->fail = '檢查失敗(×)';
|
||||
|
||||
$lang->convert->settingDB = '設置資料庫';
|
||||
$lang->convert->dbHost = '資料庫伺服器';
|
||||
$lang->convert->dbPort = '伺服器連接埠';
|
||||
$lang->convert->dbUser = '資料庫用戶名';
|
||||
$lang->convert->dbPassword = '資料庫密碼';
|
||||
$lang->convert->dbName = '%s使用的庫';
|
||||
$lang->convert->dbCharset = '%s資料庫編碼';
|
||||
$lang->convert->dbPrefix = '%s表首碼';
|
||||
$lang->convert->installPath = '%s安裝的根目錄';
|
||||
|
||||
$lang->convert->checkDB = '資料庫';
|
||||
$lang->convert->checkTable = '表';
|
||||
$lang->convert->checkPath = '安裝路徑';
|
||||
|
||||
$lang->convert->execute = '執行轉換';
|
||||
$lang->convert->item = '轉換項';
|
||||
$lang->convert->count = '轉換數量';
|
||||
$lang->convert->info = '轉換信息';
|
||||
|
||||
$lang->convert->bugfree = new stdclass();
|
||||
$lang->convert->bugfree->users = '用戶';
|
||||
$lang->convert->bugfree->projects = '項目';
|
||||
$lang->convert->bugfree->modules = '模組';
|
||||
$lang->convert->bugfree->bugs = 'Bug';
|
||||
$lang->convert->bugfree->cases = '測試用例';
|
||||
$lang->convert->bugfree->results = '測試結果';
|
||||
$lang->convert->bugfree->actions = '歷史記錄';
|
||||
$lang->convert->bugfree->files = '附件';
|
||||
|
||||
$lang->convert->redmine = new stdclass();
|
||||
$lang->convert->redmine->users = '用戶';
|
||||
$lang->convert->redmine->groups = '用戶分組';
|
||||
$lang->convert->redmine->products = '產品';
|
||||
$lang->convert->redmine->projects = '項目';
|
||||
$lang->convert->redmine->stories = '需求';
|
||||
$lang->convert->redmine->tasks = '任務';
|
||||
$lang->convert->redmine->bugs = 'Bug';
|
||||
$lang->convert->redmine->productPlans = '產品計劃';
|
||||
$lang->convert->redmine->teams = '團隊';
|
||||
$lang->convert->redmine->releases = '發佈';
|
||||
$lang->convert->redmine->builds = 'Build';
|
||||
$lang->convert->redmine->docLibs = '文檔庫';
|
||||
$lang->convert->redmine->docs = '文檔';
|
||||
$lang->convert->redmine->files = '附件';
|
||||
|
||||
$lang->convert->errorConnectDB = '資料庫連接失敗 ';
|
||||
$lang->convert->errorFileNotExits = '檔案 %s 不存在';
|
||||
$lang->convert->errorUserExists = '用戶 %s 已存在';
|
||||
$lang->convert->errorGroupExists = '分組 %s 已存在';
|
||||
$lang->convert->errorBuildExists = 'Build %s 已存在';
|
||||
$lang->convert->errorReleaseExists = '發佈 %s 已存在';
|
||||
$lang->convert->errorCopyFailed = '檔案 %s 拷貝失敗';
|
||||
|
||||
$lang->convert->setParam = '請設置轉換參數';
|
||||
|
||||
$lang->convert->statusType = new stdclass();
|
||||
$lang->convert->priType = new stdclass();
|
||||
|
||||
$lang->convert->aimType = '問題類型轉換';
|
||||
$lang->convert->statusType->bug = '狀態類型轉換(Bug狀態)';
|
||||
$lang->convert->statusType->story = '狀態類型轉換(Story狀態)';
|
||||
$lang->convert->statusType->task = '狀態類型轉換(Task狀態)';
|
||||
$lang->convert->priType->bug = '優先順序類型轉換(Bug狀態)';
|
||||
$lang->convert->priType->story = '優先順序類型轉換(Story狀態)';
|
||||
$lang->convert->priType->task = '優先順序類型轉換(Task狀態)';
|
||||
|
||||
$lang->convert->issue = new stdclass();
|
||||
$lang->convert->issue->redmine = 'Redmine';
|
||||
$lang->convert->issue->zentao = '禪道';
|
||||
$lang->convert->issue->goto = '轉換為';
|
||||
|
||||
@@ -1,94 +1,94 @@
|
||||
<?php
|
||||
/**
|
||||
* The model file of convert module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
class convertModel extends model
|
||||
{
|
||||
/**
|
||||
* Connect to db.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function connectDB()
|
||||
{
|
||||
$dsn = "mysql:host={$this->post->dbHost}; port={$this->post->dbPort};dbname={$this->post->dbName}";
|
||||
try
|
||||
{
|
||||
$dbh = new PDO($dsn, $this->post->dbUser, $this->post->dbPassword);
|
||||
$dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
|
||||
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||
$dbh->exec("SET NAMES {$this->post->dbCharset}");
|
||||
$this->sourceDBH = $dbh;
|
||||
return $dbh;
|
||||
}
|
||||
catch (PDOException $exception)
|
||||
{
|
||||
return $exception->getMessage();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check database exits or not.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function dbExists()
|
||||
{
|
||||
$sql = "SHOW DATABASES like '{$this->post->db->name}'";
|
||||
return $this->dbh->query($sql)->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check table exits or not.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function tableExists($table)
|
||||
{
|
||||
$sql = "SHOW tables like '$table'";
|
||||
return $this->dbh->query($sql)->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* Save the max id of every table. Thus when we convert again, when can delete id larger then the saved max id.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function saveState()
|
||||
{
|
||||
/* Get user defined tables. */
|
||||
$constants = get_defined_constants(true);
|
||||
$userConstants = $constants['user'];
|
||||
|
||||
/* These tables needn't save. */
|
||||
unset($userConstants['TABLE_BURN']);
|
||||
unset($userConstants['TABLE_GROUPPRIV']);
|
||||
unset($userConstants['TABLE_PROJECTPRODUCT']);
|
||||
unset($userConstants['TABLE_PROJECTSTORY']);
|
||||
unset($userConstants['TABLE_STORYSPEC']);
|
||||
unset($userConstants['TABLE_TEAM']);
|
||||
unset($userConstants['TABLE_USERGROUP']);
|
||||
|
||||
/* Get max id of every table. */
|
||||
foreach($userConstants as $key => $value)
|
||||
{
|
||||
if(strpos($key, 'TABLE') === false) continue;
|
||||
if($key == 'TABLE_COMPANY') continue;
|
||||
$state[$value] = (int)$this->dao->select('MAX(id) AS id')->from($value)->fetch('id');
|
||||
}
|
||||
$this->session->set('state', $state);
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The model file of convert module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
class convertModel extends model
|
||||
{
|
||||
/**
|
||||
* Connect to db.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function connectDB()
|
||||
{
|
||||
$dsn = "mysql:host={$this->post->dbHost}; port={$this->post->dbPort};dbname={$this->post->dbName}";
|
||||
try
|
||||
{
|
||||
$dbh = new PDO($dsn, $this->post->dbUser, $this->post->dbPassword);
|
||||
$dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
|
||||
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||
$dbh->exec("SET NAMES {$this->post->dbCharset}");
|
||||
$this->sourceDBH = $dbh;
|
||||
return $dbh;
|
||||
}
|
||||
catch (PDOException $exception)
|
||||
{
|
||||
return $exception->getMessage();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check database exits or not.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function dbExists()
|
||||
{
|
||||
$sql = "SHOW DATABASES like '{$this->post->db->name}'";
|
||||
return $this->dbh->query($sql)->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check table exits or not.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function tableExists($table)
|
||||
{
|
||||
$sql = "SHOW tables like '$table'";
|
||||
return $this->dbh->query($sql)->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* Save the max id of every table. Thus when we convert again, when can delete id larger then the saved max id.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function saveState()
|
||||
{
|
||||
/* Get user defined tables. */
|
||||
$constants = get_defined_constants(true);
|
||||
$userConstants = $constants['user'];
|
||||
|
||||
/* These tables needn't save. */
|
||||
unset($userConstants['TABLE_BURN']);
|
||||
unset($userConstants['TABLE_GROUPPRIV']);
|
||||
unset($userConstants['TABLE_PROJECTPRODUCT']);
|
||||
unset($userConstants['TABLE_PROJECTSTORY']);
|
||||
unset($userConstants['TABLE_STORYSPEC']);
|
||||
unset($userConstants['TABLE_TEAM']);
|
||||
unset($userConstants['TABLE_USERGROUP']);
|
||||
|
||||
/* Get max id of every table. */
|
||||
foreach($userConstants as $key => $value)
|
||||
{
|
||||
if(strpos($key, 'TABLE') === false) continue;
|
||||
if($key == 'TABLE_COMPANY') continue;
|
||||
$state[$value] = (int)$this->dao->select('MAX(id) AS id')->from($value)->fetch('id');
|
||||
}
|
||||
$this->session->set('state', $state);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,29 +1,29 @@
|
||||
<?php
|
||||
/**
|
||||
* The html template file of check config method of convert module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' action='<?php echo inlink('execute');?>'>
|
||||
<table align='center' class='w-p65 f-14px'>
|
||||
<caption><?php echo $lang->convert->checkConfig . $lang->colon . strtoupper($source);?></caption>
|
||||
<?php echo $checkResult;?>
|
||||
</table>
|
||||
<?php
|
||||
echo html::hidden('dbHost', $this->post->dbHost);
|
||||
echo html::hidden('dbPort', $this->post->dbPort);
|
||||
echo html::hidden('dbUser', $this->post->dbUser);
|
||||
echo html::hidden('dbPassword', $this->post->dbPassword);
|
||||
echo html::hidden('dbName', $this->post->dbName);
|
||||
echo html::hidden('dbCharset', $this->post->dbCharset);
|
||||
echo html::hidden('dbPrefix', $this->post->dbPrefix);
|
||||
echo html::hidden('installPath',$this->post->installPath);
|
||||
?>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The html template file of check config method of convert module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' action='<?php echo inlink('execute');?>'>
|
||||
<table align='center' class='w-p65 f-14px'>
|
||||
<caption><?php echo $lang->convert->checkConfig . $lang->colon . strtoupper($source);?></caption>
|
||||
<?php echo $checkResult;?>
|
||||
</table>
|
||||
<?php
|
||||
echo html::hidden('dbHost', $this->post->dbHost);
|
||||
echo html::hidden('dbPort', $this->post->dbPort);
|
||||
echo html::hidden('dbUser', $this->post->dbUser);
|
||||
echo html::hidden('dbPassword', $this->post->dbPassword);
|
||||
echo html::hidden('dbName', $this->post->dbName);
|
||||
echo html::hidden('dbCharset', $this->post->dbCharset);
|
||||
echo html::hidden('dbPrefix', $this->post->dbPrefix);
|
||||
echo html::hidden('installPath',$this->post->installPath);
|
||||
?>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
<?php
|
||||
/**
|
||||
* The html template file of execute method of convert module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<table align='center' class='f-14px'>
|
||||
<caption><?php echo $lang->convert->execute . $lang->colon . strtoupper($source);?></caption>
|
||||
<?php echo $executeResult;?>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The html template file of execute method of convert module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<table align='center' class='f-14px'>
|
||||
<caption><?php echo $lang->convert->execute . $lang->colon . strtoupper($source);?></caption>
|
||||
<?php echo $executeResult;?>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
<?php
|
||||
/**
|
||||
* The html template file of index method of convert module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package ZenTaoPMS
|
||||
* @version $Id$
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<table align='center' class='table-5'>
|
||||
<caption><?php echo $lang->convert->common;?></caption>
|
||||
<tr><td><?php echo nl2br($lang->convert->desc);?></td></tr>
|
||||
<tr><td><h3 class='a-center'><?php echo html::a($this->createLink('convert', 'selectsource'), $lang->convert->start);?></h3></td></tr>
|
||||
</table>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The html template file of index method of convert module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package ZenTaoPMS
|
||||
* @version $Id$
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<table align='center' class='table-5'>
|
||||
<caption><?php echo $lang->convert->common;?></caption>
|
||||
<tr><td><?php echo nl2br($lang->convert->desc);?></td></tr>
|
||||
<tr><td><h3 class='a-center'><?php echo html::a($this->createLink('convert', 'selectsource'), $lang->convert->start);?></h3></td></tr>
|
||||
</table>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,31 +1,31 @@
|
||||
<?php
|
||||
/**
|
||||
* The html template file of select source method of convert module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' action='<?php echo inlink('setConfig');?>'>
|
||||
<table align='center' class='table-5 f-14px'>
|
||||
<caption><?php echo $lang->convert->selectSource;?></caption>
|
||||
<tr>
|
||||
<th class='w-p20'><?php echo $lang->convert->source;?></th>
|
||||
<th><?php echo $lang->convert->version;?></th>
|
||||
</tr>
|
||||
<?php foreach($lang->convert->sourceList as $name => $versions):?>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $name;?></th>
|
||||
<td><?php echo html::radio('source', $versions);?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'><?php echo html::submitButton();?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The html template file of select source method of convert module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' action='<?php echo inlink('setConfig');?>'>
|
||||
<table align='center' class='table-5 f-14px'>
|
||||
<caption><?php echo $lang->convert->selectSource;?></caption>
|
||||
<tr>
|
||||
<th class='w-p20'><?php echo $lang->convert->source;?></th>
|
||||
<th><?php echo $lang->convert->version;?></th>
|
||||
</tr>
|
||||
<?php foreach($lang->convert->sourceList as $name => $versions):?>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $name;?></th>
|
||||
<td><?php echo html::radio('source', $versions);?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'><?php echo html::submitButton();?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
<?php
|
||||
/**
|
||||
* The html template file of setconfig method of convert module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' action='<?php echo inlink('checkconfig');?>'>
|
||||
<table align='center' class='table-5 f-14px'>
|
||||
<caption><?php echo $lang->convert->setting . $lang->colon . strtoupper($source);?></caption>
|
||||
<?php echo $setting;?>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'><?php echo html::submitButton();?></td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php echo html::hidden('source', $source) . html::hidden('version', $version);?>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The html template file of setconfig method of convert module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' action='<?php echo inlink('checkconfig');?>'>
|
||||
<table align='center' class='table-5 f-14px'>
|
||||
<caption><?php echo $lang->convert->setting . $lang->colon . strtoupper($source);?></caption>
|
||||
<?php echo $setting;?>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'><?php echo html::submitButton();?></td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php echo html::hidden('source', $source) . html::hidden('version', $version);?>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,101 +1,101 @@
|
||||
<?php
|
||||
/**
|
||||
* The control file of dept module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package dept
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class dept extends control
|
||||
{
|
||||
const NEW_CHILD_COUNT = 10;
|
||||
|
||||
/**
|
||||
* Construct function, set menu.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->loadModel('company')->setMenu();
|
||||
}
|
||||
|
||||
/**
|
||||
* Browse a department.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function browse($deptID = 0)
|
||||
{
|
||||
$header['title'] = $this->lang->dept->manage . $this->lang->colon . $this->app->company->name;
|
||||
$position[] = $this->lang->dept->manage;
|
||||
|
||||
$parentDepts = $this->dept->getParents($deptID);
|
||||
$this->view->header = $header;
|
||||
$this->view->position = $position;
|
||||
$this->view->deptID = $deptID;
|
||||
$this->view->depts = $this->dept->getTreeMenu($rootDeptID = 0, array('deptmodel', 'createManageLink'));
|
||||
$this->view->parentDepts = $parentDepts;
|
||||
$this->view->sons = $this->dept->getSons($deptID);
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the departments order.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function updateOrder()
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$this->dept->updateOrder($_POST['orders']);
|
||||
die(js::reload('parent'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Manage childs.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function manageChild()
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$this->dept->manageChild($_POST['parentDeptID'], $_POST['depts']);
|
||||
die(js::reload('parent'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a department.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @param string $confirm yes|no
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function delete($deptID, $confirm = 'no')
|
||||
{
|
||||
if($confirm == 'no')
|
||||
{
|
||||
echo js::confirm($this->lang->dept->confirmDelete, $this->createLink('dept', 'delete', "deptID=$deptID&confirm=yes"));
|
||||
exit;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->dept->delete($deptID);
|
||||
die(js::reload('parent'));
|
||||
}
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The control file of dept module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package dept
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class dept extends control
|
||||
{
|
||||
const NEW_CHILD_COUNT = 10;
|
||||
|
||||
/**
|
||||
* Construct function, set menu.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->loadModel('company')->setMenu();
|
||||
}
|
||||
|
||||
/**
|
||||
* Browse a department.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function browse($deptID = 0)
|
||||
{
|
||||
$header['title'] = $this->lang->dept->manage . $this->lang->colon . $this->app->company->name;
|
||||
$position[] = $this->lang->dept->manage;
|
||||
|
||||
$parentDepts = $this->dept->getParents($deptID);
|
||||
$this->view->header = $header;
|
||||
$this->view->position = $position;
|
||||
$this->view->deptID = $deptID;
|
||||
$this->view->depts = $this->dept->getTreeMenu($rootDeptID = 0, array('deptmodel', 'createManageLink'));
|
||||
$this->view->parentDepts = $parentDepts;
|
||||
$this->view->sons = $this->dept->getSons($deptID);
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the departments order.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function updateOrder()
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$this->dept->updateOrder($_POST['orders']);
|
||||
die(js::reload('parent'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Manage childs.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function manageChild()
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$this->dept->manageChild($_POST['parentDeptID'], $_POST['depts']);
|
||||
die(js::reload('parent'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a department.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @param string $confirm yes|no
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function delete($deptID, $confirm = 'no')
|
||||
{
|
||||
if($confirm == 'no')
|
||||
{
|
||||
echo js::confirm($this->lang->dept->confirmDelete, $this->createLink('dept', 'delete', "deptID=$deptID&confirm=yes"));
|
||||
exit;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->dept->delete($deptID);
|
||||
die(js::reload('parent'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
<?php
|
||||
/**
|
||||
* The dept module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package dept
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->dept->common = 'Department';
|
||||
$lang->dept->add = "Add";
|
||||
$lang->dept->addChild = "Add child department";
|
||||
$lang->dept->manageChild = "Child deprtment";
|
||||
$lang->dept->delete = "Delete";
|
||||
$lang->dept->browse = "Manage";
|
||||
$lang->dept->manage = "Manage";
|
||||
$lang->dept->updateOrder = "Update order";
|
||||
$lang->dept->users = "Users";
|
||||
|
||||
$lang->dept->saveButton = " Save (S) ";
|
||||
$lang->dept->confirmDelete = "Are you sure to delete this department?";
|
||||
<?php
|
||||
/**
|
||||
* The dept module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package dept
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->dept->common = 'Department';
|
||||
$lang->dept->add = "Add";
|
||||
$lang->dept->addChild = "Add child department";
|
||||
$lang->dept->manageChild = "Child deprtment";
|
||||
$lang->dept->delete = "Delete";
|
||||
$lang->dept->browse = "Manage";
|
||||
$lang->dept->manage = "Manage";
|
||||
$lang->dept->updateOrder = "Update order";
|
||||
$lang->dept->users = "Users";
|
||||
|
||||
$lang->dept->saveButton = " Save (S) ";
|
||||
$lang->dept->confirmDelete = "Are you sure to delete this department?";
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
<?php
|
||||
/**
|
||||
* The dept module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package dept
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->dept->common = '部门结构';
|
||||
$lang->dept->add = "添加";
|
||||
$lang->dept->addChild = "添加下级部门";
|
||||
$lang->dept->manageChild = "下级部门";
|
||||
$lang->dept->delete = "删除部门";
|
||||
$lang->dept->browse = "部门维护";
|
||||
$lang->dept->manage = "维护部门结构";
|
||||
$lang->dept->updateOrder = "更新排序";
|
||||
$lang->dept->users = "成员列表";
|
||||
|
||||
$lang->dept->saveButton = " 保存 (S) ";
|
||||
$lang->dept->confirmDelete = " 您确定删除该部门吗?";
|
||||
<?php
|
||||
/**
|
||||
* The dept module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package dept
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->dept->common = '部门结构';
|
||||
$lang->dept->add = "添加";
|
||||
$lang->dept->addChild = "添加下级部门";
|
||||
$lang->dept->manageChild = "下级部门";
|
||||
$lang->dept->delete = "删除部门";
|
||||
$lang->dept->browse = "部门维护";
|
||||
$lang->dept->manage = "维护部门结构";
|
||||
$lang->dept->updateOrder = "更新排序";
|
||||
$lang->dept->users = "成员列表";
|
||||
|
||||
$lang->dept->saveButton = " 保存 (S) ";
|
||||
$lang->dept->confirmDelete = " 您确定删除该部门吗?";
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
<?php
|
||||
/**
|
||||
* The dept module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package dept
|
||||
* @version $Id: zh-tw.php 2605 2012-02-21 07:22:58Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->dept->common = '部門結構';
|
||||
$lang->dept->add = "添加";
|
||||
$lang->dept->addChild = "添加下級部門";
|
||||
$lang->dept->manageChild = "下級部門";
|
||||
$lang->dept->delete = "刪除部門";
|
||||
$lang->dept->browse = "部門維護";
|
||||
$lang->dept->manage = "維護部門結構";
|
||||
$lang->dept->updateOrder = "更新排序";
|
||||
$lang->dept->users = "成員列表";
|
||||
|
||||
$lang->dept->saveButton = " 保存 (S) ";
|
||||
$lang->dept->confirmDelete = " 您確定刪除該部門嗎?";
|
||||
<?php
|
||||
/**
|
||||
* The dept module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package dept
|
||||
* @version $Id: zh-tw.php 2605 2012-02-21 07:22:58Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->dept->common = '部門結構';
|
||||
$lang->dept->add = "添加";
|
||||
$lang->dept->addChild = "添加下級部門";
|
||||
$lang->dept->manageChild = "下級部門";
|
||||
$lang->dept->delete = "刪除部門";
|
||||
$lang->dept->browse = "部門維護";
|
||||
$lang->dept->manage = "維護部門結構";
|
||||
$lang->dept->updateOrder = "更新排序";
|
||||
$lang->dept->users = "成員列表";
|
||||
|
||||
$lang->dept->saveButton = " 保存 (S) ";
|
||||
$lang->dept->confirmDelete = " 您確定刪除該部門嗎?";
|
||||
|
||||
@@ -1,308 +1,308 @@
|
||||
<?php
|
||||
/**
|
||||
* The model file of dept dept of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package dept
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
class deptModel extends model
|
||||
{
|
||||
/**
|
||||
* Get a department by id.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getByID($deptID)
|
||||
{
|
||||
return $this->dao->findById($deptID)->from(TABLE_DEPT)->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* Build the query.
|
||||
*
|
||||
* @param int $rootDeptID
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function buildMenuQuery($rootDeptID)
|
||||
{
|
||||
$rootDept = $this->getByID($rootDeptID);
|
||||
if(!$rootDept)
|
||||
{
|
||||
$rootDept = new stdclass();
|
||||
$rootDept->path = '';
|
||||
}
|
||||
|
||||
return $this->dao->select('*')->from(TABLE_DEPT)
|
||||
->beginIF($rootDeptID > 0)->where('path')->like($rootDept->path . '%')->fi()
|
||||
->orderBy('grade desc, `order`')
|
||||
->get();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get option menu of departments.
|
||||
*
|
||||
* @param int $rootDeptID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getOptionMenu($rootDeptID = 0)
|
||||
{
|
||||
$deptMenu = array();
|
||||
$stmt = $this->dbh->query($this->buildMenuQuery($rootDeptID));
|
||||
$depts = array();
|
||||
while($dept = $stmt->fetch()) $depts[$dept->id] = $dept;
|
||||
|
||||
foreach($depts as $dept)
|
||||
{
|
||||
$parentDepts = explode(',', $dept->path);
|
||||
$deptName = '/';
|
||||
foreach($parentDepts as $parentDeptID)
|
||||
{
|
||||
if(empty($parentDeptID)) continue;
|
||||
$deptName .= $depts[$parentDeptID]->name . '/';
|
||||
}
|
||||
$deptName = rtrim($deptName, '/');
|
||||
$deptName .= "|$dept->id\n";
|
||||
|
||||
if(isset($deptMenu[$dept->id]) and !empty($deptMenu[$dept->id]))
|
||||
{
|
||||
if(isset($deptMenu[$dept->parent]))
|
||||
{
|
||||
$deptMenu[$dept->parent] .= $deptName;
|
||||
}
|
||||
else
|
||||
{
|
||||
$deptMenu[$dept->parent] = $deptName;;
|
||||
}
|
||||
$deptMenu[$dept->parent] .= $deptMenu[$dept->id];
|
||||
}
|
||||
else
|
||||
{
|
||||
if(isset($deptMenu[$dept->parent]) and !empty($deptMenu[$dept->parent]))
|
||||
{
|
||||
$deptMenu[$dept->parent] .= $deptName;
|
||||
}
|
||||
else
|
||||
{
|
||||
$deptMenu[$dept->parent] = $deptName;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$topMenu = @array_pop($deptMenu);
|
||||
$topMenu = explode("\n", trim($topMenu));
|
||||
$lastMenu[] = '/';
|
||||
foreach($topMenu as $menu)
|
||||
{
|
||||
if(!strpos($menu, '|')) continue;
|
||||
list($label, $deptID) = explode('|', $menu);
|
||||
$lastMenu[$deptID] = $label;
|
||||
}
|
||||
return $lastMenu;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the treemenu of departments.
|
||||
*
|
||||
* @param int $rootDeptID
|
||||
* @param string $userFunc
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function getTreeMenu($rootDeptID = 0, $userFunc)
|
||||
{
|
||||
$deptMenu = array();
|
||||
$stmt = $this->dbh->query($this->buildMenuQuery($rootDeptID));
|
||||
while($dept = $stmt->fetch())
|
||||
{
|
||||
$linkHtml = call_user_func($userFunc, $dept);
|
||||
|
||||
if(isset($deptMenu[$dept->id]) and !empty($deptMenu[$dept->id]))
|
||||
{
|
||||
if(!isset($deptMenu[$dept->parent])) $deptMenu[$dept->parent] = '';
|
||||
$deptMenu[$dept->parent] .= "<li>$linkHtml";
|
||||
$deptMenu[$dept->parent] .= "<ul>".$deptMenu[$dept->id]."</ul>\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
if(isset($deptMenu[$dept->parent]) and !empty($deptMenu[$dept->parent]))
|
||||
{
|
||||
$deptMenu[$dept->parent] .= "<li>$linkHtml\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
$deptMenu[$dept->parent] = "<li>$linkHtml\n";
|
||||
}
|
||||
}
|
||||
$deptMenu[$dept->parent] .= "</li>\n";
|
||||
}
|
||||
|
||||
$lastMenu = "<ul id='tree'>" . @array_pop($deptMenu) . "</ul>\n";
|
||||
return $lastMenu;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the manage link.
|
||||
*
|
||||
* @param int $dept
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function createManageLink($dept)
|
||||
{
|
||||
$linkHtml = $dept->name;
|
||||
$linkHtml .= ' ' . html::a(helper::createLink('dept', 'browse', "deptid={$dept->id}"), $this->lang->dept->manageChild);
|
||||
$linkHtml .= ' ' . html::a(helper::createLink('dept', 'delete', "deptid={$dept->id}"), $this->lang->dept->delete, 'hiddenwin');
|
||||
$linkHtml .= ' ' . html::input("orders[$dept->id]", $dept->order, 'style="width:30px;text-align:center"');
|
||||
return $linkHtml;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the member link.
|
||||
*
|
||||
* @param int $dept
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function createMemberLink($dept)
|
||||
{
|
||||
$linkHtml = html::a(helper::createLink('company', 'browse', "dept={$dept->id}"), $dept->name, '_self', "id='dept{$dept->id}'");
|
||||
return $linkHtml;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get sons of a department.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getSons($deptID)
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_DEPT)->where('parent')->eq($deptID)->orderBy('`order`')->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all childs.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getAllChildId($deptID)
|
||||
{
|
||||
if($deptID == 0) return array();
|
||||
$dept = $this->getById($deptID);
|
||||
$childs = $this->dao->select('id')->from(TABLE_DEPT)->where('path')->like($dept->path . '%')->fetchPairs();
|
||||
return array_keys($childs);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get parents.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getParents($deptID)
|
||||
{
|
||||
if($deptID == 0) return array();
|
||||
$path = $this->dao->select('path')->from(TABLE_DEPT)->where('id')->eq($deptID)->fetch('path');
|
||||
$path = substr($path, 1, -1);
|
||||
if(empty($path)) return array();
|
||||
return $this->dao->select('*')->from(TABLE_DEPT)->where('id')->in($path)->orderBy('grade')->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update order.
|
||||
*
|
||||
* @param int $orders
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function updateOrder($orders)
|
||||
{
|
||||
foreach($orders as $deptID => $order) $this->dao->update(TABLE_DEPT)->set('`order`')->eq($order)->where('id')->eq($deptID)->exec();
|
||||
}
|
||||
|
||||
/**
|
||||
* Manage childs.
|
||||
*
|
||||
* @param int $parentDeptID
|
||||
* @param string $childs
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function manageChild($parentDeptID, $childs)
|
||||
{
|
||||
$parentDept = $this->getByID($parentDeptID);
|
||||
if($parentDept)
|
||||
{
|
||||
$grade = $parentDept->grade + 1;
|
||||
$parentPath = $parentDept->path;
|
||||
}
|
||||
else
|
||||
{
|
||||
$grade = 1;
|
||||
$parentPath = ',';
|
||||
}
|
||||
|
||||
foreach($childs as $deptID => $deptName)
|
||||
{
|
||||
if(empty($deptName)) continue;
|
||||
if(is_numeric($deptID))
|
||||
{
|
||||
$dept->name = strip_tags($deptName);
|
||||
$dept->parent = $parentDeptID;
|
||||
$dept->grade = $grade;
|
||||
$this->dao->insert(TABLE_DEPT)->data($dept)->exec();
|
||||
$deptID = $this->dao->lastInsertID();
|
||||
$childPath = $parentPath . "$deptID,";
|
||||
$this->dao->update(TABLE_DEPT)->set('path')->eq($childPath)->where('id')->eq($deptID)->exec();
|
||||
}
|
||||
else
|
||||
{
|
||||
$deptID = str_replace('id', '', $deptID);
|
||||
$this->dao->update(TABLE_DEPT)->set('name')->eq(strip_tags($deptName))->where('id')->eq($deptID)->exec();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get users of a deparment.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getUsers($deptID, $pager = null, $orderBy = 'id')
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_USER)
|
||||
->where('deleted')->eq(0)
|
||||
->beginIF($deptID)->andWhere('dept')->in($deptID)->fi()
|
||||
->orderBy($orderBy)
|
||||
->page($pager)
|
||||
->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a department.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function delete($deptID)
|
||||
{
|
||||
$this->dao->delete()->from(TABLE_DEPT)->where('id')->eq($deptID)->exec();
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The model file of dept dept of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package dept
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
class deptModel extends model
|
||||
{
|
||||
/**
|
||||
* Get a department by id.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getByID($deptID)
|
||||
{
|
||||
return $this->dao->findById($deptID)->from(TABLE_DEPT)->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* Build the query.
|
||||
*
|
||||
* @param int $rootDeptID
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function buildMenuQuery($rootDeptID)
|
||||
{
|
||||
$rootDept = $this->getByID($rootDeptID);
|
||||
if(!$rootDept)
|
||||
{
|
||||
$rootDept = new stdclass();
|
||||
$rootDept->path = '';
|
||||
}
|
||||
|
||||
return $this->dao->select('*')->from(TABLE_DEPT)
|
||||
->beginIF($rootDeptID > 0)->where('path')->like($rootDept->path . '%')->fi()
|
||||
->orderBy('grade desc, `order`')
|
||||
->get();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get option menu of departments.
|
||||
*
|
||||
* @param int $rootDeptID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getOptionMenu($rootDeptID = 0)
|
||||
{
|
||||
$deptMenu = array();
|
||||
$stmt = $this->dbh->query($this->buildMenuQuery($rootDeptID));
|
||||
$depts = array();
|
||||
while($dept = $stmt->fetch()) $depts[$dept->id] = $dept;
|
||||
|
||||
foreach($depts as $dept)
|
||||
{
|
||||
$parentDepts = explode(',', $dept->path);
|
||||
$deptName = '/';
|
||||
foreach($parentDepts as $parentDeptID)
|
||||
{
|
||||
if(empty($parentDeptID)) continue;
|
||||
$deptName .= $depts[$parentDeptID]->name . '/';
|
||||
}
|
||||
$deptName = rtrim($deptName, '/');
|
||||
$deptName .= "|$dept->id\n";
|
||||
|
||||
if(isset($deptMenu[$dept->id]) and !empty($deptMenu[$dept->id]))
|
||||
{
|
||||
if(isset($deptMenu[$dept->parent]))
|
||||
{
|
||||
$deptMenu[$dept->parent] .= $deptName;
|
||||
}
|
||||
else
|
||||
{
|
||||
$deptMenu[$dept->parent] = $deptName;;
|
||||
}
|
||||
$deptMenu[$dept->parent] .= $deptMenu[$dept->id];
|
||||
}
|
||||
else
|
||||
{
|
||||
if(isset($deptMenu[$dept->parent]) and !empty($deptMenu[$dept->parent]))
|
||||
{
|
||||
$deptMenu[$dept->parent] .= $deptName;
|
||||
}
|
||||
else
|
||||
{
|
||||
$deptMenu[$dept->parent] = $deptName;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$topMenu = @array_pop($deptMenu);
|
||||
$topMenu = explode("\n", trim($topMenu));
|
||||
$lastMenu[] = '/';
|
||||
foreach($topMenu as $menu)
|
||||
{
|
||||
if(!strpos($menu, '|')) continue;
|
||||
list($label, $deptID) = explode('|', $menu);
|
||||
$lastMenu[$deptID] = $label;
|
||||
}
|
||||
return $lastMenu;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the treemenu of departments.
|
||||
*
|
||||
* @param int $rootDeptID
|
||||
* @param string $userFunc
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function getTreeMenu($rootDeptID = 0, $userFunc)
|
||||
{
|
||||
$deptMenu = array();
|
||||
$stmt = $this->dbh->query($this->buildMenuQuery($rootDeptID));
|
||||
while($dept = $stmt->fetch())
|
||||
{
|
||||
$linkHtml = call_user_func($userFunc, $dept);
|
||||
|
||||
if(isset($deptMenu[$dept->id]) and !empty($deptMenu[$dept->id]))
|
||||
{
|
||||
if(!isset($deptMenu[$dept->parent])) $deptMenu[$dept->parent] = '';
|
||||
$deptMenu[$dept->parent] .= "<li>$linkHtml";
|
||||
$deptMenu[$dept->parent] .= "<ul>".$deptMenu[$dept->id]."</ul>\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
if(isset($deptMenu[$dept->parent]) and !empty($deptMenu[$dept->parent]))
|
||||
{
|
||||
$deptMenu[$dept->parent] .= "<li>$linkHtml\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
$deptMenu[$dept->parent] = "<li>$linkHtml\n";
|
||||
}
|
||||
}
|
||||
$deptMenu[$dept->parent] .= "</li>\n";
|
||||
}
|
||||
|
||||
$lastMenu = "<ul id='tree'>" . @array_pop($deptMenu) . "</ul>\n";
|
||||
return $lastMenu;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the manage link.
|
||||
*
|
||||
* @param int $dept
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function createManageLink($dept)
|
||||
{
|
||||
$linkHtml = $dept->name;
|
||||
$linkHtml .= ' ' . html::a(helper::createLink('dept', 'browse', "deptid={$dept->id}"), $this->lang->dept->manageChild);
|
||||
$linkHtml .= ' ' . html::a(helper::createLink('dept', 'delete', "deptid={$dept->id}"), $this->lang->dept->delete, 'hiddenwin');
|
||||
$linkHtml .= ' ' . html::input("orders[$dept->id]", $dept->order, 'style="width:30px;text-align:center"');
|
||||
return $linkHtml;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the member link.
|
||||
*
|
||||
* @param int $dept
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function createMemberLink($dept)
|
||||
{
|
||||
$linkHtml = html::a(helper::createLink('company', 'browse', "dept={$dept->id}"), $dept->name, '_self', "id='dept{$dept->id}'");
|
||||
return $linkHtml;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get sons of a department.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getSons($deptID)
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_DEPT)->where('parent')->eq($deptID)->orderBy('`order`')->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all childs.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getAllChildId($deptID)
|
||||
{
|
||||
if($deptID == 0) return array();
|
||||
$dept = $this->getById($deptID);
|
||||
$childs = $this->dao->select('id')->from(TABLE_DEPT)->where('path')->like($dept->path . '%')->fetchPairs();
|
||||
return array_keys($childs);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get parents.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getParents($deptID)
|
||||
{
|
||||
if($deptID == 0) return array();
|
||||
$path = $this->dao->select('path')->from(TABLE_DEPT)->where('id')->eq($deptID)->fetch('path');
|
||||
$path = substr($path, 1, -1);
|
||||
if(empty($path)) return array();
|
||||
return $this->dao->select('*')->from(TABLE_DEPT)->where('id')->in($path)->orderBy('grade')->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update order.
|
||||
*
|
||||
* @param int $orders
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function updateOrder($orders)
|
||||
{
|
||||
foreach($orders as $deptID => $order) $this->dao->update(TABLE_DEPT)->set('`order`')->eq($order)->where('id')->eq($deptID)->exec();
|
||||
}
|
||||
|
||||
/**
|
||||
* Manage childs.
|
||||
*
|
||||
* @param int $parentDeptID
|
||||
* @param string $childs
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function manageChild($parentDeptID, $childs)
|
||||
{
|
||||
$parentDept = $this->getByID($parentDeptID);
|
||||
if($parentDept)
|
||||
{
|
||||
$grade = $parentDept->grade + 1;
|
||||
$parentPath = $parentDept->path;
|
||||
}
|
||||
else
|
||||
{
|
||||
$grade = 1;
|
||||
$parentPath = ',';
|
||||
}
|
||||
|
||||
foreach($childs as $deptID => $deptName)
|
||||
{
|
||||
if(empty($deptName)) continue;
|
||||
if(is_numeric($deptID))
|
||||
{
|
||||
$dept->name = strip_tags($deptName);
|
||||
$dept->parent = $parentDeptID;
|
||||
$dept->grade = $grade;
|
||||
$this->dao->insert(TABLE_DEPT)->data($dept)->exec();
|
||||
$deptID = $this->dao->lastInsertID();
|
||||
$childPath = $parentPath . "$deptID,";
|
||||
$this->dao->update(TABLE_DEPT)->set('path')->eq($childPath)->where('id')->eq($deptID)->exec();
|
||||
}
|
||||
else
|
||||
{
|
||||
$deptID = str_replace('id', '', $deptID);
|
||||
$this->dao->update(TABLE_DEPT)->set('name')->eq(strip_tags($deptName))->where('id')->eq($deptID)->exec();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get users of a deparment.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getUsers($deptID, $pager = null, $orderBy = 'id')
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_USER)
|
||||
->where('deleted')->eq(0)
|
||||
->beginIF($deptID)->andWhere('dept')->in($deptID)->fi()
|
||||
->orderBy($orderBy)
|
||||
->page($pager)
|
||||
->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a department.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function delete($deptID)
|
||||
{
|
||||
$this->dao->delete()->from(TABLE_DEPT)->where('id')->eq($deptID)->exec();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,67 +1,67 @@
|
||||
<?php
|
||||
/**
|
||||
* The browse view file of dept module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package dept
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/treeview.html.php';?>
|
||||
<table class="cont-lt4">
|
||||
<tr valign='top'>
|
||||
<td class='side'>
|
||||
<form method='post' target='hiddenwin' action='<?php echo $this->createLink('dept', 'updateOrder');?>'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $header->title;?></caption>
|
||||
<tr>
|
||||
<td>
|
||||
<div id='main'><?php echo $depts;?></div>
|
||||
<div class='a-center'><?php echo html::submitButton($lang->dept->updateOrder);?></div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</td>
|
||||
<td class='divider'></td>
|
||||
<td>
|
||||
<form method='post' target='hiddenwin' action='<?php echo $this->createLink('dept', 'manageChild');?>'>
|
||||
<table align='center' class='table-1'>
|
||||
<caption><?php echo $lang->dept->manageChild;?></caption>
|
||||
<tr>
|
||||
<td width='10%'>
|
||||
<nobr>
|
||||
<?php
|
||||
echo html::a($this->createLink('dept', 'browse'), $this->app->company->name);
|
||||
echo $lang->arrow;
|
||||
foreach($parentDepts as $dept)
|
||||
{
|
||||
echo html::a($this->createLink('dept', 'browse', "deptID=$dept->id"), $dept->name);
|
||||
echo $lang->arrow;
|
||||
}
|
||||
?>
|
||||
</nobr>
|
||||
</td>
|
||||
<td>
|
||||
<?php
|
||||
foreach($sons as $sonDept) echo html::input("depts[id$sonDept->id]", $sonDept->name) . '<br />';
|
||||
for($i = 0; $i < DEPT::NEW_CHILD_COUNT ; $i ++) echo html::input("depts[]") . '<br />';
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='a-center' colspan='2'>
|
||||
<?php echo html::submitButton() . html::resetButton();?>
|
||||
<input type='hidden' value='<?php echo $deptID;?>' name='parentDeptID' />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The browse view file of dept module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package dept
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/treeview.html.php';?>
|
||||
<table class="cont-lt4">
|
||||
<tr valign='top'>
|
||||
<td class='side'>
|
||||
<form method='post' target='hiddenwin' action='<?php echo $this->createLink('dept', 'updateOrder');?>'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $header->title;?></caption>
|
||||
<tr>
|
||||
<td>
|
||||
<div id='main'><?php echo $depts;?></div>
|
||||
<div class='a-center'><?php echo html::submitButton($lang->dept->updateOrder);?></div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</td>
|
||||
<td class='divider'></td>
|
||||
<td>
|
||||
<form method='post' target='hiddenwin' action='<?php echo $this->createLink('dept', 'manageChild');?>'>
|
||||
<table align='center' class='table-1'>
|
||||
<caption><?php echo $lang->dept->manageChild;?></caption>
|
||||
<tr>
|
||||
<td width='10%'>
|
||||
<nobr>
|
||||
<?php
|
||||
echo html::a($this->createLink('dept', 'browse'), $this->app->company->name);
|
||||
echo $lang->arrow;
|
||||
foreach($parentDepts as $dept)
|
||||
{
|
||||
echo html::a($this->createLink('dept', 'browse', "deptID=$dept->id"), $dept->name);
|
||||
echo $lang->arrow;
|
||||
}
|
||||
?>
|
||||
</nobr>
|
||||
</td>
|
||||
<td>
|
||||
<?php
|
||||
foreach($sons as $sonDept) echo html::input("depts[id$sonDept->id]", $sonDept->name) . '<br />';
|
||||
for($i = 0; $i < DEPT::NEW_CHILD_COUNT ; $i ++) echo html::input("depts[]") . '<br />';
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='a-center' colspan='2'>
|
||||
<?php echo html::submitButton() . html::resetButton();?>
|
||||
<input type='hidden' value='<?php echo $deptID;?>' name='parentDeptID' />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,425 +1,425 @@
|
||||
<?php
|
||||
/**
|
||||
* The control file of doc module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: control.php 933 2010-07-06 06:53:40Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class doc extends control
|
||||
{
|
||||
/**
|
||||
* Construct function, load user, tree, action auto.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->loadModel('user');
|
||||
$this->loadModel('tree');
|
||||
$this->loadModel('action');
|
||||
$this->loadModel('product');
|
||||
$this->loadModel('project');
|
||||
$this->libs = $this->doc->getLibs();
|
||||
}
|
||||
|
||||
/**
|
||||
* Go to browse page.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$this->locate(inlink('browse'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Browse docs.
|
||||
*
|
||||
* @param string|int $libID product|project or the int id of custom library
|
||||
* @param int $moduleID
|
||||
* @param int $productID
|
||||
* @param int $projectID
|
||||
* @param string $orderBy
|
||||
* @param int $recTotal
|
||||
* @param int $recPerPage
|
||||
* @param int $pageID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function browse($libID = 'product', $moduleID = 0, $productID = 0, $projectID = 0, $browseType = 'byModule', $param = 0, $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
{
|
||||
/* Set browseType.*/
|
||||
$browseType = strtolower($browseType);
|
||||
$queryID = ($browseType == 'bysearch') ? (int)$param : 0;
|
||||
|
||||
/* Set menu, save session. */
|
||||
$this->doc->setMenu($this->libs, $libID, 'doc');
|
||||
$this->session->set('docList', $this->app->getURI(true));
|
||||
|
||||
/* Set header and position. */
|
||||
$this->view->header->title = $this->lang->doc->index . $this->lang->colon . $this->libs[$libID];
|
||||
$this->view->position[] = $this->libs[$libID];
|
||||
|
||||
/* Load pager. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$pager = new pager($recTotal, $recPerPage, $pageID);
|
||||
|
||||
/* Get docs. */
|
||||
$modules = 0;
|
||||
$docs=array();
|
||||
if($browseType == "bymodule")
|
||||
{
|
||||
if($moduleID) $modules = $this->tree->getAllChildID($moduleID);
|
||||
$docs = $this->doc->getDocs($libID, $productID, $projectID, $modules, $orderBy, $pager);
|
||||
}
|
||||
elseif($browseType == "bysearch")
|
||||
{
|
||||
if($queryID)
|
||||
{
|
||||
$query = $this->loadModel('search')->getQuery($queryID);
|
||||
if($query)
|
||||
{
|
||||
$this->session->set('docQuery', $query->sql);
|
||||
$this->session->set('docForm', $query->form);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->session->set('docQuery', ' 1 = 1');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if($this->session->docQuery == false) $this->session->set('docQuery', ' 1 = 1');
|
||||
}
|
||||
$docQuery = str_replace("`product` = 'all'", '1', $this->session->docQuery); // Search all producti.
|
||||
$docQuery = str_replace("`project` = 'all'", '1', $docQuery); // Search all project.
|
||||
$docQuery = $this->loadModel('search')->replaceDynamic($docQuery);
|
||||
$docs = $this->dao->select('*')->from(TABLE_DOC)->where($docQuery)
|
||||
->andWhere('deleted')->eq(0)
|
||||
->orderBy($orderBy)->page($pager)->fetchAll();
|
||||
}
|
||||
|
||||
/* Get the tree menu. */
|
||||
if($libID == 'product')
|
||||
{
|
||||
$moduleTree = $this->tree->getProductDocTreeMenu();
|
||||
}
|
||||
elseif($libID == 'project')
|
||||
{
|
||||
$moduleTree = $this->tree->getProjectDocTreeMenu();
|
||||
}
|
||||
else
|
||||
{
|
||||
$moduleTree = $this->tree->getTreeMenu($libID, $viewType = 'customdoc', $startModuleID = 0, array('treeModel', 'createDocLink'));
|
||||
}
|
||||
|
||||
/* Build the search form. */
|
||||
$this->config->doc->search['actionURL'] = $this->createLink('doc', 'browse', "libID=$libID&moduleID=$moduleID&procuctID=$productID&projectID=$projectID&browseType=bySearch&queryID=myQueryID");
|
||||
$this->config->doc->search['queryID'] = $queryID;
|
||||
$this->config->doc->search['params']['product']['values'] = array(''=>'') + $this->product->getPairs() + array('all'=>$this->lang->doc->allProduct);
|
||||
$this->config->doc->search['params']['project']['values'] = array(''=>'') + $this->project->getPairs() + array('all'=>$this->lang->doc->allProject);
|
||||
$this->config->doc->search['params']['lib']['values'] = array(''=>'') + $this->libs;
|
||||
$this->config->doc->search['params']['type']['values'] = array(''=>'') + $this->config->doc->search['params']['type']['values'];
|
||||
$this->loadModel('search')->setSearchParams($this->config->doc->search);
|
||||
|
||||
/* Get the modules. */
|
||||
if($libID == 'product' or $libID == 'project')
|
||||
{
|
||||
$moduleOptionMenu = $this->tree->getOptionMenu(0, $libID . 'doc', $startModuleID = 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
$moduleOptionMenu = $this->tree->getOptionMenu($libID, 'customdoc', $startModuleID = 0);
|
||||
}
|
||||
$this->config->doc->search['params']['module']['values'] = array(''=>'') + $moduleOptionMenu;
|
||||
|
||||
$this->view->libID = $libID;
|
||||
$this->view->libName = $this->libs[$libID];
|
||||
$this->view->moduleID = $moduleID;
|
||||
$this->view->moduleTree = $moduleTree;
|
||||
$this->view->parentModules = $this->tree->getParents($moduleID);
|
||||
$this->view->docs = $docs;
|
||||
$this->view->pager = $pager;
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noletter');
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->productID = $productID;
|
||||
$this->view->projectID = $projectID;
|
||||
$this->view->browseType = $browseType;
|
||||
$this->view->param = $param;
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a library.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function createLib()
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$libID = $this->doc->createLib();
|
||||
if(!dao::isError())
|
||||
{
|
||||
$this->loadModel('action')->create('docLib', $libID, 'Created');
|
||||
die(js::locate($this->createLink($this->moduleName, 'browse', "libID=$libID"), 'parent'));
|
||||
}
|
||||
else
|
||||
{
|
||||
echo js::error(dao::getError());
|
||||
}
|
||||
}
|
||||
die($this->display());
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit a library.
|
||||
*
|
||||
* @param int $libID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function editLib($libID)
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$changes = $this->doc->updateLib($libID);
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
if($changes)
|
||||
{
|
||||
$actionID = $this->loadModel('action')->create('docLib', $libID, 'edited');
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
}
|
||||
die(js::locate($this->createLink($this->moduleName, 'browse', "libID=$libID"), 'parent'));
|
||||
}
|
||||
|
||||
$lib = $this->doc->getLibByID($libID);
|
||||
$this->view->libName = empty($lib) ? $libID : $lib->name;
|
||||
$this->view->libID = $libID;
|
||||
|
||||
die($this->display());
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a library.
|
||||
*
|
||||
* @param int $libID
|
||||
* @param string $confirm yes|no
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function deleteLib($libID, $confirm = 'no')
|
||||
{
|
||||
if($libID == 'product' or $libID == 'project') die();
|
||||
if($confirm == 'no')
|
||||
{
|
||||
die(js::confirm($this->lang->doc->confirmDeleteLib, $this->createLink('doc', 'deleteLib', "libID=$libID&confirm=yes")));
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->doc->delete(TABLE_DOCLIB, $libID);
|
||||
die(js::locate($this->createLink('doc', 'browse'), 'parent'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a doc.
|
||||
*
|
||||
* @param int|string $libID
|
||||
* @param int $moduleID
|
||||
* @param int $productID
|
||||
* @param int $projectID
|
||||
* @param string $from
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create($libID, $moduleID = 0, $productID = 0, $projectID = 0, $from = 'doc')
|
||||
{
|
||||
$projectID = (int)$projectID;
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$docID = $this->doc->create();
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
$this->action->create('doc', $docID, 'Created');
|
||||
|
||||
if($from == 'product') $link = $this->createLink('product', 'doc', "productID={$this->post->product}");
|
||||
if($from == 'project') $link = $this->createLink('project', 'doc', "projectID={$this->post->project}");
|
||||
if($from == 'doc')
|
||||
{
|
||||
$productID = intval($this->post->product);
|
||||
$projectID = intval($this->post->project);
|
||||
$vars = "libID=$libID&moduleID={$this->post->module}&productID=$productID&projectID=$projectID";
|
||||
$link = $this->createLink('doc', 'browse', $vars);
|
||||
}
|
||||
die(js::locate($link, 'parent'));
|
||||
}
|
||||
|
||||
$this->loadModel('product');
|
||||
$this->loadModel('project');
|
||||
|
||||
/* According the from, set menus. */
|
||||
if($from == 'product')
|
||||
{
|
||||
$this->lang->doc->menu = $this->lang->product->menu;
|
||||
$this->lang->doc->menuOrder = $this->lang->product->menuOrder;
|
||||
$this->product->setMenu($this->product->getPairs(), $productID);
|
||||
$this->lang->set('menugroup.doc', 'product');
|
||||
}
|
||||
elseif($from == 'project')
|
||||
{
|
||||
$this->lang->doc->menu = $this->lang->project->menu;
|
||||
$this->lang->doc->menuOrder = $this->lang->project->menuOrder;
|
||||
$this->project->setMenu($this->project->getPairs('nocode'), $projectID);
|
||||
$this->lang->set('menugroup.doc', 'project');
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->doc->setMenu($this->libs, $libID);
|
||||
}
|
||||
|
||||
/* Get the modules. */
|
||||
if($libID == 'product' or $libID == 'project')
|
||||
{
|
||||
$moduleOptionMenu = $this->tree->getOptionMenu(0, $libID . 'doc', $startModuleID = 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
$moduleOptionMenu = $this->tree->getOptionMenu($libID, 'customdoc', $startModuleID = 0);
|
||||
}
|
||||
|
||||
$this->view->header->title = $this->libs[$libID] . $this->lang->colon . $this->lang->doc->create;
|
||||
$this->view->position[] = html::a($this->createLink('doc', 'browse', "libID=$libID"), $this->libs[$libID]);
|
||||
$this->view->position[] = $this->lang->doc->create;
|
||||
|
||||
$this->view->libID = $libID;
|
||||
$this->view->moduleOptionMenu = $moduleOptionMenu;
|
||||
$this->view->moduleID = $moduleID;
|
||||
$this->view->productID = $productID;
|
||||
$this->view->projectID = $projectID;
|
||||
$this->view->products = $projectID == 0 ? $this->product->getPairs() : $this->project->getProducts($projectID);
|
||||
$this->view->projects = $this->loadModel('project')->getPairs('all');
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit a doc.
|
||||
*
|
||||
* @param int $docID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function edit($docID)
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$changes = $this->doc->update($docID);
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
$files = $this->loadModel('file')->saveUpload('doc', $docID);
|
||||
if($this->post->comment != '' or !empty($changes) or !empty($files))
|
||||
{
|
||||
$action = !empty($changes) ? 'Edited' : 'Commented';
|
||||
$fileAction = '';
|
||||
if(!empty($files)) $fileAction = $this->lang->addFiles . join(',', $files) . "\n" ;
|
||||
$actionID = $this->action->create('doc', $docID, $action, $fileAction . $this->post->comment);
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
}
|
||||
die(js::locate($this->createLink('doc', 'view', "docID=$docID"), 'parent'));
|
||||
}
|
||||
|
||||
/* Get doc and set menu. */
|
||||
$doc = $this->doc->getById($docID);
|
||||
$libID = $doc->lib;
|
||||
$this->doc->setMenu($this->libs, $libID);
|
||||
|
||||
/* Get modules. */
|
||||
if($libID == 'product' or $libID == 'project')
|
||||
{
|
||||
$moduleOptionMenu = $this->tree->getOptionMenu(0, $libID . 'doc', $startModuleID = 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
$moduleOptionMenu = $this->tree->getOptionMenu($libID, 'customdoc', $startModuleID = 0);
|
||||
}
|
||||
|
||||
$this->view->header->title = $this->libs[$libID] . $this->lang->colon . $this->lang->doc->create;
|
||||
$this->view->position[] = html::a($this->createLink('doc', 'browse', "libID=$libID"), $this->libs[$libID]);
|
||||
$this->view->position[] = $this->lang->doc->edit;
|
||||
|
||||
$this->view->doc = $doc;
|
||||
$this->view->libID = $libID;
|
||||
$this->view->users = $this->user->getPairs('noclosed,nodeleted');
|
||||
$this->view->moduleOptionMenu = $moduleOptionMenu;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* View a doc.
|
||||
*
|
||||
* @param int $docID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function view($docID)
|
||||
{
|
||||
/* Get doc. */
|
||||
$doc = $this->doc->getById($docID, true);
|
||||
if(!$doc) die(js::error($this->lang->notFound) . js::locate('back'));
|
||||
if($doc->project != 0 and !$this->project->checkPriv($this->project->getById($doc->project)))
|
||||
{
|
||||
echo(js::alert($this->lang->error->accessDenied));
|
||||
die(js::locate('back'));
|
||||
}
|
||||
|
||||
/* Get library. */
|
||||
$lib = $doc->libName;
|
||||
if($doc->lib == 'product') $lib = $doc->productName;
|
||||
if($doc->lib == 'project') $lib = $doc->productName . $this->lang->arrow . $doc->projectName;
|
||||
|
||||
/* Set menu. */
|
||||
$this->doc->setMenu($this->libs, $doc->lib);
|
||||
|
||||
$this->view->header->title = "DOC #$doc->id $doc->title - " . $this->libs[$doc->lib];
|
||||
$this->view->position[] = html::a($this->createLink('doc', 'browse', "libID=$doc->lib"), $this->libs[$doc->lib]);
|
||||
$this->view->position[] = $this->lang->doc->view;
|
||||
|
||||
$this->view->doc = $doc;
|
||||
$this->view->lib = $lib;
|
||||
$this->view->actions = $this->loadModel('action')->getList('doc', $docID);
|
||||
$this->view->users = $this->user->getPairs('noclosed,nodeleted,noletter');
|
||||
$this->view->preAndNext = $this->loadModel('common')->getPreAndNextObject('doc', $docID);
|
||||
$this->view->keTableCSS = $this->doc->extractKETableCSS($doc->content);
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a doc.
|
||||
*
|
||||
* @param int $docID
|
||||
* @param string $confirm yes|no
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function delete($docID, $confirm = 'no')
|
||||
{
|
||||
if($confirm == 'no')
|
||||
{
|
||||
die(js::confirm($this->lang->doc->confirmDelete, inlink('delete', "docID=$docID&confirm=yes")));
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->doc->delete(TABLE_DOC, $docID);
|
||||
die(js::locate($this->session->docList, 'parent'));
|
||||
}
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The control file of doc module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: control.php 933 2010-07-06 06:53:40Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class doc extends control
|
||||
{
|
||||
/**
|
||||
* Construct function, load user, tree, action auto.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->loadModel('user');
|
||||
$this->loadModel('tree');
|
||||
$this->loadModel('action');
|
||||
$this->loadModel('product');
|
||||
$this->loadModel('project');
|
||||
$this->libs = $this->doc->getLibs();
|
||||
}
|
||||
|
||||
/**
|
||||
* Go to browse page.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$this->locate(inlink('browse'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Browse docs.
|
||||
*
|
||||
* @param string|int $libID product|project or the int id of custom library
|
||||
* @param int $moduleID
|
||||
* @param int $productID
|
||||
* @param int $projectID
|
||||
* @param string $orderBy
|
||||
* @param int $recTotal
|
||||
* @param int $recPerPage
|
||||
* @param int $pageID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function browse($libID = 'product', $moduleID = 0, $productID = 0, $projectID = 0, $browseType = 'byModule', $param = 0, $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
{
|
||||
/* Set browseType.*/
|
||||
$browseType = strtolower($browseType);
|
||||
$queryID = ($browseType == 'bysearch') ? (int)$param : 0;
|
||||
|
||||
/* Set menu, save session. */
|
||||
$this->doc->setMenu($this->libs, $libID, 'doc');
|
||||
$this->session->set('docList', $this->app->getURI(true));
|
||||
|
||||
/* Set header and position. */
|
||||
$this->view->header->title = $this->lang->doc->index . $this->lang->colon . $this->libs[$libID];
|
||||
$this->view->position[] = $this->libs[$libID];
|
||||
|
||||
/* Load pager. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$pager = new pager($recTotal, $recPerPage, $pageID);
|
||||
|
||||
/* Get docs. */
|
||||
$modules = 0;
|
||||
$docs=array();
|
||||
if($browseType == "bymodule")
|
||||
{
|
||||
if($moduleID) $modules = $this->tree->getAllChildID($moduleID);
|
||||
$docs = $this->doc->getDocs($libID, $productID, $projectID, $modules, $orderBy, $pager);
|
||||
}
|
||||
elseif($browseType == "bysearch")
|
||||
{
|
||||
if($queryID)
|
||||
{
|
||||
$query = $this->loadModel('search')->getQuery($queryID);
|
||||
if($query)
|
||||
{
|
||||
$this->session->set('docQuery', $query->sql);
|
||||
$this->session->set('docForm', $query->form);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->session->set('docQuery', ' 1 = 1');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if($this->session->docQuery == false) $this->session->set('docQuery', ' 1 = 1');
|
||||
}
|
||||
$docQuery = str_replace("`product` = 'all'", '1', $this->session->docQuery); // Search all producti.
|
||||
$docQuery = str_replace("`project` = 'all'", '1', $docQuery); // Search all project.
|
||||
$docQuery = $this->loadModel('search')->replaceDynamic($docQuery);
|
||||
$docs = $this->dao->select('*')->from(TABLE_DOC)->where($docQuery)
|
||||
->andWhere('deleted')->eq(0)
|
||||
->orderBy($orderBy)->page($pager)->fetchAll();
|
||||
}
|
||||
|
||||
/* Get the tree menu. */
|
||||
if($libID == 'product')
|
||||
{
|
||||
$moduleTree = $this->tree->getProductDocTreeMenu();
|
||||
}
|
||||
elseif($libID == 'project')
|
||||
{
|
||||
$moduleTree = $this->tree->getProjectDocTreeMenu();
|
||||
}
|
||||
else
|
||||
{
|
||||
$moduleTree = $this->tree->getTreeMenu($libID, $viewType = 'customdoc', $startModuleID = 0, array('treeModel', 'createDocLink'));
|
||||
}
|
||||
|
||||
/* Build the search form. */
|
||||
$this->config->doc->search['actionURL'] = $this->createLink('doc', 'browse', "libID=$libID&moduleID=$moduleID&procuctID=$productID&projectID=$projectID&browseType=bySearch&queryID=myQueryID");
|
||||
$this->config->doc->search['queryID'] = $queryID;
|
||||
$this->config->doc->search['params']['product']['values'] = array(''=>'') + $this->product->getPairs() + array('all'=>$this->lang->doc->allProduct);
|
||||
$this->config->doc->search['params']['project']['values'] = array(''=>'') + $this->project->getPairs() + array('all'=>$this->lang->doc->allProject);
|
||||
$this->config->doc->search['params']['lib']['values'] = array(''=>'') + $this->libs;
|
||||
$this->config->doc->search['params']['type']['values'] = array(''=>'') + $this->config->doc->search['params']['type']['values'];
|
||||
$this->loadModel('search')->setSearchParams($this->config->doc->search);
|
||||
|
||||
/* Get the modules. */
|
||||
if($libID == 'product' or $libID == 'project')
|
||||
{
|
||||
$moduleOptionMenu = $this->tree->getOptionMenu(0, $libID . 'doc', $startModuleID = 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
$moduleOptionMenu = $this->tree->getOptionMenu($libID, 'customdoc', $startModuleID = 0);
|
||||
}
|
||||
$this->config->doc->search['params']['module']['values'] = array(''=>'') + $moduleOptionMenu;
|
||||
|
||||
$this->view->libID = $libID;
|
||||
$this->view->libName = $this->libs[$libID];
|
||||
$this->view->moduleID = $moduleID;
|
||||
$this->view->moduleTree = $moduleTree;
|
||||
$this->view->parentModules = $this->tree->getParents($moduleID);
|
||||
$this->view->docs = $docs;
|
||||
$this->view->pager = $pager;
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noletter');
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->productID = $productID;
|
||||
$this->view->projectID = $projectID;
|
||||
$this->view->browseType = $browseType;
|
||||
$this->view->param = $param;
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a library.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function createLib()
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$libID = $this->doc->createLib();
|
||||
if(!dao::isError())
|
||||
{
|
||||
$this->loadModel('action')->create('docLib', $libID, 'Created');
|
||||
die(js::locate($this->createLink($this->moduleName, 'browse', "libID=$libID"), 'parent'));
|
||||
}
|
||||
else
|
||||
{
|
||||
echo js::error(dao::getError());
|
||||
}
|
||||
}
|
||||
die($this->display());
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit a library.
|
||||
*
|
||||
* @param int $libID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function editLib($libID)
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$changes = $this->doc->updateLib($libID);
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
if($changes)
|
||||
{
|
||||
$actionID = $this->loadModel('action')->create('docLib', $libID, 'edited');
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
}
|
||||
die(js::locate($this->createLink($this->moduleName, 'browse', "libID=$libID"), 'parent'));
|
||||
}
|
||||
|
||||
$lib = $this->doc->getLibByID($libID);
|
||||
$this->view->libName = empty($lib) ? $libID : $lib->name;
|
||||
$this->view->libID = $libID;
|
||||
|
||||
die($this->display());
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a library.
|
||||
*
|
||||
* @param int $libID
|
||||
* @param string $confirm yes|no
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function deleteLib($libID, $confirm = 'no')
|
||||
{
|
||||
if($libID == 'product' or $libID == 'project') die();
|
||||
if($confirm == 'no')
|
||||
{
|
||||
die(js::confirm($this->lang->doc->confirmDeleteLib, $this->createLink('doc', 'deleteLib', "libID=$libID&confirm=yes")));
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->doc->delete(TABLE_DOCLIB, $libID);
|
||||
die(js::locate($this->createLink('doc', 'browse'), 'parent'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a doc.
|
||||
*
|
||||
* @param int|string $libID
|
||||
* @param int $moduleID
|
||||
* @param int $productID
|
||||
* @param int $projectID
|
||||
* @param string $from
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create($libID, $moduleID = 0, $productID = 0, $projectID = 0, $from = 'doc')
|
||||
{
|
||||
$projectID = (int)$projectID;
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$docID = $this->doc->create();
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
$this->action->create('doc', $docID, 'Created');
|
||||
|
||||
if($from == 'product') $link = $this->createLink('product', 'doc', "productID={$this->post->product}");
|
||||
if($from == 'project') $link = $this->createLink('project', 'doc', "projectID={$this->post->project}");
|
||||
if($from == 'doc')
|
||||
{
|
||||
$productID = intval($this->post->product);
|
||||
$projectID = intval($this->post->project);
|
||||
$vars = "libID=$libID&moduleID={$this->post->module}&productID=$productID&projectID=$projectID";
|
||||
$link = $this->createLink('doc', 'browse', $vars);
|
||||
}
|
||||
die(js::locate($link, 'parent'));
|
||||
}
|
||||
|
||||
$this->loadModel('product');
|
||||
$this->loadModel('project');
|
||||
|
||||
/* According the from, set menus. */
|
||||
if($from == 'product')
|
||||
{
|
||||
$this->lang->doc->menu = $this->lang->product->menu;
|
||||
$this->lang->doc->menuOrder = $this->lang->product->menuOrder;
|
||||
$this->product->setMenu($this->product->getPairs(), $productID);
|
||||
$this->lang->set('menugroup.doc', 'product');
|
||||
}
|
||||
elseif($from == 'project')
|
||||
{
|
||||
$this->lang->doc->menu = $this->lang->project->menu;
|
||||
$this->lang->doc->menuOrder = $this->lang->project->menuOrder;
|
||||
$this->project->setMenu($this->project->getPairs('nocode'), $projectID);
|
||||
$this->lang->set('menugroup.doc', 'project');
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->doc->setMenu($this->libs, $libID);
|
||||
}
|
||||
|
||||
/* Get the modules. */
|
||||
if($libID == 'product' or $libID == 'project')
|
||||
{
|
||||
$moduleOptionMenu = $this->tree->getOptionMenu(0, $libID . 'doc', $startModuleID = 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
$moduleOptionMenu = $this->tree->getOptionMenu($libID, 'customdoc', $startModuleID = 0);
|
||||
}
|
||||
|
||||
$this->view->header->title = $this->libs[$libID] . $this->lang->colon . $this->lang->doc->create;
|
||||
$this->view->position[] = html::a($this->createLink('doc', 'browse', "libID=$libID"), $this->libs[$libID]);
|
||||
$this->view->position[] = $this->lang->doc->create;
|
||||
|
||||
$this->view->libID = $libID;
|
||||
$this->view->moduleOptionMenu = $moduleOptionMenu;
|
||||
$this->view->moduleID = $moduleID;
|
||||
$this->view->productID = $productID;
|
||||
$this->view->projectID = $projectID;
|
||||
$this->view->products = $projectID == 0 ? $this->product->getPairs() : $this->project->getProducts($projectID);
|
||||
$this->view->projects = $this->loadModel('project')->getPairs('all');
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit a doc.
|
||||
*
|
||||
* @param int $docID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function edit($docID)
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$changes = $this->doc->update($docID);
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
$files = $this->loadModel('file')->saveUpload('doc', $docID);
|
||||
if($this->post->comment != '' or !empty($changes) or !empty($files))
|
||||
{
|
||||
$action = !empty($changes) ? 'Edited' : 'Commented';
|
||||
$fileAction = '';
|
||||
if(!empty($files)) $fileAction = $this->lang->addFiles . join(',', $files) . "\n" ;
|
||||
$actionID = $this->action->create('doc', $docID, $action, $fileAction . $this->post->comment);
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
}
|
||||
die(js::locate($this->createLink('doc', 'view', "docID=$docID"), 'parent'));
|
||||
}
|
||||
|
||||
/* Get doc and set menu. */
|
||||
$doc = $this->doc->getById($docID);
|
||||
$libID = $doc->lib;
|
||||
$this->doc->setMenu($this->libs, $libID);
|
||||
|
||||
/* Get modules. */
|
||||
if($libID == 'product' or $libID == 'project')
|
||||
{
|
||||
$moduleOptionMenu = $this->tree->getOptionMenu(0, $libID . 'doc', $startModuleID = 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
$moduleOptionMenu = $this->tree->getOptionMenu($libID, 'customdoc', $startModuleID = 0);
|
||||
}
|
||||
|
||||
$this->view->header->title = $this->libs[$libID] . $this->lang->colon . $this->lang->doc->create;
|
||||
$this->view->position[] = html::a($this->createLink('doc', 'browse', "libID=$libID"), $this->libs[$libID]);
|
||||
$this->view->position[] = $this->lang->doc->edit;
|
||||
|
||||
$this->view->doc = $doc;
|
||||
$this->view->libID = $libID;
|
||||
$this->view->users = $this->user->getPairs('noclosed,nodeleted');
|
||||
$this->view->moduleOptionMenu = $moduleOptionMenu;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* View a doc.
|
||||
*
|
||||
* @param int $docID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function view($docID)
|
||||
{
|
||||
/* Get doc. */
|
||||
$doc = $this->doc->getById($docID, true);
|
||||
if(!$doc) die(js::error($this->lang->notFound) . js::locate('back'));
|
||||
if($doc->project != 0 and !$this->project->checkPriv($this->project->getById($doc->project)))
|
||||
{
|
||||
echo(js::alert($this->lang->error->accessDenied));
|
||||
die(js::locate('back'));
|
||||
}
|
||||
|
||||
/* Get library. */
|
||||
$lib = $doc->libName;
|
||||
if($doc->lib == 'product') $lib = $doc->productName;
|
||||
if($doc->lib == 'project') $lib = $doc->productName . $this->lang->arrow . $doc->projectName;
|
||||
|
||||
/* Set menu. */
|
||||
$this->doc->setMenu($this->libs, $doc->lib);
|
||||
|
||||
$this->view->header->title = "DOC #$doc->id $doc->title - " . $this->libs[$doc->lib];
|
||||
$this->view->position[] = html::a($this->createLink('doc', 'browse', "libID=$doc->lib"), $this->libs[$doc->lib]);
|
||||
$this->view->position[] = $this->lang->doc->view;
|
||||
|
||||
$this->view->doc = $doc;
|
||||
$this->view->lib = $lib;
|
||||
$this->view->actions = $this->loadModel('action')->getList('doc', $docID);
|
||||
$this->view->users = $this->user->getPairs('noclosed,nodeleted,noletter');
|
||||
$this->view->preAndNext = $this->loadModel('common')->getPreAndNextObject('doc', $docID);
|
||||
$this->view->keTableCSS = $this->doc->extractKETableCSS($doc->content);
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a doc.
|
||||
*
|
||||
* @param int $docID
|
||||
* @param string $confirm yes|no
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function delete($docID, $confirm = 'no')
|
||||
{
|
||||
if($confirm == 'no')
|
||||
{
|
||||
die(js::confirm($this->lang->doc->confirmDelete, inlink('delete', "docID=$docID&confirm=yes")));
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->doc->delete(TABLE_DOC, $docID);
|
||||
die(js::locate($this->session->docList, 'parent'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,71 +1,71 @@
|
||||
<?php
|
||||
/**
|
||||
* The doc module english file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: en.php 824 2010-05-02 15:32:06Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* Fields. */
|
||||
$lang->doc->common = 'Doc';
|
||||
$lang->doc->id = 'ID';
|
||||
$lang->doc->product = 'Product';
|
||||
$lang->doc->project = 'Project';
|
||||
$lang->doc->lib = 'Library';
|
||||
$lang->doc->module = 'Module';
|
||||
$lang->doc->title = 'Title';
|
||||
$lang->doc->digest = 'Digest';
|
||||
$lang->doc->comment = 'Comment';
|
||||
$lang->doc->type = 'Type';
|
||||
$lang->doc->content = 'Content';
|
||||
$lang->doc->keywords = 'Keywords';
|
||||
$lang->doc->url = 'URL';
|
||||
$lang->doc->files = 'File';
|
||||
$lang->doc->views = 'Views';
|
||||
$lang->doc->addedBy = 'Added by';
|
||||
$lang->doc->addedDate = 'Added date';
|
||||
$lang->doc->editedBy = 'Edited by';
|
||||
$lang->doc->editedDate = 'Edited date';
|
||||
$lang->doc->basicInfo = 'Basic Info';
|
||||
|
||||
$lang->doc->moduleDoc = 'By module';
|
||||
$lang->doc->searchDoc = 'By search';
|
||||
//$lang->doc->allDoc = 'All document';
|
||||
|
||||
$lang->doc->moduleName = 'Module name';
|
||||
$lang->doc->moduleOrder = 'Module order';
|
||||
|
||||
/* Actions. */
|
||||
$lang->doc->index = 'Index';
|
||||
$lang->doc->create = 'Create doc';
|
||||
$lang->doc->edit = 'Edit doc';
|
||||
$lang->doc->delete = 'Delete doc';
|
||||
$lang->doc->browse = 'Browse doc';
|
||||
$lang->doc->view = 'View doc';
|
||||
$lang->doc->manageType = 'Manage type';
|
||||
|
||||
$lang->doc->libName = 'Library name';
|
||||
$lang->doc->createLib = 'Create library';
|
||||
$lang->doc->editLib = 'Edit library';
|
||||
$lang->doc->deleteLib = 'Delete library';
|
||||
|
||||
/* Browse tabs. */
|
||||
$lang->doc->allProduct = 'All products';
|
||||
$lang->doc->allProject = 'All projects';
|
||||
|
||||
$lang->doc->systemLibs['product'] = 'Product doc';
|
||||
$lang->doc->systemLibs['project'] = 'Project doc';
|
||||
|
||||
$lang->doc->types['file'] = 'File';
|
||||
$lang->doc->types['url'] = 'Link';
|
||||
$lang->doc->types['text'] = 'Html';
|
||||
|
||||
$lang->doc->confirmDelete = "Are you sure to delete this doc?";
|
||||
$lang->doc->confirmDeleteLib = " Are you sure to delete this doc library?";
|
||||
$lang->doc->errorEditSystemDoc = "System doc library needn't edit";
|
||||
|
||||
$lang->doc->placeholder = new stdclass();
|
||||
$lang->doc->placeholder->url = 'url';
|
||||
<?php
|
||||
/**
|
||||
* The doc module english file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: en.php 824 2010-05-02 15:32:06Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* Fields. */
|
||||
$lang->doc->common = 'Doc';
|
||||
$lang->doc->id = 'ID';
|
||||
$lang->doc->product = 'Product';
|
||||
$lang->doc->project = 'Project';
|
||||
$lang->doc->lib = 'Library';
|
||||
$lang->doc->module = 'Module';
|
||||
$lang->doc->title = 'Title';
|
||||
$lang->doc->digest = 'Digest';
|
||||
$lang->doc->comment = 'Comment';
|
||||
$lang->doc->type = 'Type';
|
||||
$lang->doc->content = 'Content';
|
||||
$lang->doc->keywords = 'Keywords';
|
||||
$lang->doc->url = 'URL';
|
||||
$lang->doc->files = 'File';
|
||||
$lang->doc->views = 'Views';
|
||||
$lang->doc->addedBy = 'Added by';
|
||||
$lang->doc->addedDate = 'Added date';
|
||||
$lang->doc->editedBy = 'Edited by';
|
||||
$lang->doc->editedDate = 'Edited date';
|
||||
$lang->doc->basicInfo = 'Basic Info';
|
||||
|
||||
$lang->doc->moduleDoc = 'By module';
|
||||
$lang->doc->searchDoc = 'By search';
|
||||
//$lang->doc->allDoc = 'All document';
|
||||
|
||||
$lang->doc->moduleName = 'Module name';
|
||||
$lang->doc->moduleOrder = 'Module order';
|
||||
|
||||
/* Actions. */
|
||||
$lang->doc->index = 'Index';
|
||||
$lang->doc->create = 'Create doc';
|
||||
$lang->doc->edit = 'Edit doc';
|
||||
$lang->doc->delete = 'Delete doc';
|
||||
$lang->doc->browse = 'Browse doc';
|
||||
$lang->doc->view = 'View doc';
|
||||
$lang->doc->manageType = 'Manage type';
|
||||
|
||||
$lang->doc->libName = 'Library name';
|
||||
$lang->doc->createLib = 'Create library';
|
||||
$lang->doc->editLib = 'Edit library';
|
||||
$lang->doc->deleteLib = 'Delete library';
|
||||
|
||||
/* Browse tabs. */
|
||||
$lang->doc->allProduct = 'All products';
|
||||
$lang->doc->allProject = 'All projects';
|
||||
|
||||
$lang->doc->systemLibs['product'] = 'Product doc';
|
||||
$lang->doc->systemLibs['project'] = 'Project doc';
|
||||
|
||||
$lang->doc->types['file'] = 'File';
|
||||
$lang->doc->types['url'] = 'Link';
|
||||
$lang->doc->types['text'] = 'Html';
|
||||
|
||||
$lang->doc->confirmDelete = "Are you sure to delete this doc?";
|
||||
$lang->doc->confirmDeleteLib = " Are you sure to delete this doc library?";
|
||||
$lang->doc->errorEditSystemDoc = "System doc library needn't edit";
|
||||
|
||||
$lang->doc->placeholder = new stdclass();
|
||||
$lang->doc->placeholder->url = 'url';
|
||||
|
||||
@@ -1,71 +1,71 @@
|
||||
<?php
|
||||
/**
|
||||
* The doc module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: zh-cn.php 824 2010-05-02 15:32:06Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* 字段列表。*/
|
||||
$lang->doc->common = '文档视图';
|
||||
$lang->doc->id = '文档编号';
|
||||
$lang->doc->product = '所属产品';
|
||||
$lang->doc->project = '所属项目';
|
||||
$lang->doc->lib = '所属文档库';
|
||||
$lang->doc->module = '所属分类';
|
||||
$lang->doc->title = '文档标题';
|
||||
$lang->doc->digest = '文档摘要';
|
||||
$lang->doc->comment = '文档备注';
|
||||
$lang->doc->type = '文档类型';
|
||||
$lang->doc->content = '文档正文';
|
||||
$lang->doc->keywords = '关键字';
|
||||
$lang->doc->url = '文档URL';
|
||||
$lang->doc->files = '附件';
|
||||
$lang->doc->views = '查阅次数';
|
||||
$lang->doc->addedBy = '由谁添加';
|
||||
$lang->doc->addedDate = '添加时间';
|
||||
$lang->doc->editedBy = '由谁编辑';
|
||||
$lang->doc->editedDate = '编辑时间';
|
||||
$lang->doc->basicInfo = '基本信息';
|
||||
|
||||
$lang->doc->moduleDoc = '按模块浏览';
|
||||
$lang->doc->searchDoc = '搜索';
|
||||
//$lang->doc->allDoc = '所有文档';
|
||||
|
||||
$lang->doc->moduleName = '模块名称';
|
||||
$lang->doc->moduleOrder = '模块排序';
|
||||
|
||||
/* 方法列表。*/
|
||||
$lang->doc->index = '首页';
|
||||
$lang->doc->create = '创建文档';
|
||||
$lang->doc->edit = '编辑文档';
|
||||
$lang->doc->delete = '删除文档';
|
||||
$lang->doc->browse = '文档列表';
|
||||
$lang->doc->view = '文档详情';
|
||||
$lang->doc->manageType = '维护分类';
|
||||
|
||||
$lang->doc->libName = '文档库名称';
|
||||
$lang->doc->createLib = '创建文档库';
|
||||
$lang->doc->editLib = '编辑文档库';
|
||||
$lang->doc->deleteLib = '删除文档库';
|
||||
|
||||
/* 查询条件列表 */
|
||||
$lang->doc->allProduct = '所有产品';
|
||||
$lang->doc->allProject = '所有项目';
|
||||
|
||||
$lang->doc->systemLibs['product'] = '产品文档库';
|
||||
$lang->doc->systemLibs['project'] = '项目文档库';
|
||||
|
||||
$lang->doc->types['file'] = '文件';
|
||||
$lang->doc->types['url'] = '链接';
|
||||
$lang->doc->types['text'] = '网页';
|
||||
|
||||
$lang->doc->confirmDelete = "您确定删除该文档吗?";
|
||||
$lang->doc->confirmDeleteLib = " 您确定删除该文档库吗?";
|
||||
$lang->doc->errorEditSystemDoc = "系统文档库无需修改。";
|
||||
|
||||
$lang->doc->placeholder = new stdclass();
|
||||
$lang->doc->placeholder->url = '相应的链接地址';
|
||||
<?php
|
||||
/**
|
||||
* The doc module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: zh-cn.php 824 2010-05-02 15:32:06Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* 字段列表。*/
|
||||
$lang->doc->common = '文档视图';
|
||||
$lang->doc->id = '文档编号';
|
||||
$lang->doc->product = '所属产品';
|
||||
$lang->doc->project = '所属项目';
|
||||
$lang->doc->lib = '所属文档库';
|
||||
$lang->doc->module = '所属分类';
|
||||
$lang->doc->title = '文档标题';
|
||||
$lang->doc->digest = '文档摘要';
|
||||
$lang->doc->comment = '文档备注';
|
||||
$lang->doc->type = '文档类型';
|
||||
$lang->doc->content = '文档正文';
|
||||
$lang->doc->keywords = '关键字';
|
||||
$lang->doc->url = '文档URL';
|
||||
$lang->doc->files = '附件';
|
||||
$lang->doc->views = '查阅次数';
|
||||
$lang->doc->addedBy = '由谁添加';
|
||||
$lang->doc->addedDate = '添加时间';
|
||||
$lang->doc->editedBy = '由谁编辑';
|
||||
$lang->doc->editedDate = '编辑时间';
|
||||
$lang->doc->basicInfo = '基本信息';
|
||||
|
||||
$lang->doc->moduleDoc = '按模块浏览';
|
||||
$lang->doc->searchDoc = '搜索';
|
||||
//$lang->doc->allDoc = '所有文档';
|
||||
|
||||
$lang->doc->moduleName = '模块名称';
|
||||
$lang->doc->moduleOrder = '模块排序';
|
||||
|
||||
/* 方法列表。*/
|
||||
$lang->doc->index = '首页';
|
||||
$lang->doc->create = '创建文档';
|
||||
$lang->doc->edit = '编辑文档';
|
||||
$lang->doc->delete = '删除文档';
|
||||
$lang->doc->browse = '文档列表';
|
||||
$lang->doc->view = '文档详情';
|
||||
$lang->doc->manageType = '维护分类';
|
||||
|
||||
$lang->doc->libName = '文档库名称';
|
||||
$lang->doc->createLib = '创建文档库';
|
||||
$lang->doc->editLib = '编辑文档库';
|
||||
$lang->doc->deleteLib = '删除文档库';
|
||||
|
||||
/* 查询条件列表 */
|
||||
$lang->doc->allProduct = '所有产品';
|
||||
$lang->doc->allProject = '所有项目';
|
||||
|
||||
$lang->doc->systemLibs['product'] = '产品文档库';
|
||||
$lang->doc->systemLibs['project'] = '项目文档库';
|
||||
|
||||
$lang->doc->types['file'] = '文件';
|
||||
$lang->doc->types['url'] = '链接';
|
||||
$lang->doc->types['text'] = '网页';
|
||||
|
||||
$lang->doc->confirmDelete = "您确定删除该文档吗?";
|
||||
$lang->doc->confirmDeleteLib = " 您确定删除该文档库吗?";
|
||||
$lang->doc->errorEditSystemDoc = "系统文档库无需修改。";
|
||||
|
||||
$lang->doc->placeholder = new stdclass();
|
||||
$lang->doc->placeholder->url = '相应的链接地址';
|
||||
|
||||
@@ -1,71 +1,71 @@
|
||||
<?php
|
||||
/**
|
||||
* The doc module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: zh-tw.php 824 2010-05-02 15:32:06Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* 欄位列表。*/
|
||||
$lang->doc->common = '文檔視圖';
|
||||
$lang->doc->id = '文檔編號';
|
||||
$lang->doc->product = '所屬產品';
|
||||
$lang->doc->project = '所屬項目';
|
||||
$lang->doc->lib = '所屬文檔庫';
|
||||
$lang->doc->module = '所屬分類';
|
||||
$lang->doc->title = '文檔標題';
|
||||
$lang->doc->digest = '文檔摘要';
|
||||
$lang->doc->comment = '文檔備註';
|
||||
$lang->doc->type = '文檔類型';
|
||||
$lang->doc->content = '文檔正文';
|
||||
$lang->doc->keywords = '關鍵字';
|
||||
$lang->doc->url = '文檔URL';
|
||||
$lang->doc->files = '附件';
|
||||
$lang->doc->views = '查閲次數';
|
||||
$lang->doc->addedBy = '由誰添加';
|
||||
$lang->doc->addedDate = '添加時間';
|
||||
$lang->doc->editedBy = '由誰編輯';
|
||||
$lang->doc->editedDate = '編輯時間';
|
||||
$lang->doc->basicInfo = '基本信息';
|
||||
|
||||
$lang->doc->moduleDoc = '按模組瀏覽';
|
||||
$lang->doc->searchDoc = '搜索';
|
||||
//$lang->doc->allDoc = '所有文檔';
|
||||
|
||||
$lang->doc->moduleName = '模組名稱';
|
||||
$lang->doc->moduleOrder = '模組排序';
|
||||
|
||||
/* 方法列表。*/
|
||||
$lang->doc->index = '首頁';
|
||||
$lang->doc->create = '創建文檔';
|
||||
$lang->doc->edit = '編輯文檔';
|
||||
$lang->doc->delete = '刪除文檔';
|
||||
$lang->doc->browse = '文檔列表';
|
||||
$lang->doc->view = '文檔詳情';
|
||||
$lang->doc->manageType = '維護分類';
|
||||
|
||||
$lang->doc->libName = '文檔庫名稱';
|
||||
$lang->doc->createLib = '創建文檔庫';
|
||||
$lang->doc->editLib = '編輯文檔庫';
|
||||
$lang->doc->deleteLib = '刪除文檔庫';
|
||||
|
||||
/* 查詢條件列表 */
|
||||
$lang->doc->allProduct = '所有產品';
|
||||
$lang->doc->allProject = '所有項目';
|
||||
|
||||
$lang->doc->systemLibs['product'] = '產品文檔庫';
|
||||
$lang->doc->systemLibs['project'] = '項目文檔庫';
|
||||
|
||||
$lang->doc->types['file'] = '檔案';
|
||||
$lang->doc->types['url'] = '連結';
|
||||
$lang->doc->types['text'] = '網頁';
|
||||
|
||||
$lang->doc->confirmDelete = "您確定刪除該文檔嗎?";
|
||||
$lang->doc->confirmDeleteLib = " 您確定刪除該文檔庫嗎?";
|
||||
$lang->doc->errorEditSystemDoc = "系統文檔庫無需修改。";
|
||||
|
||||
$lang->doc->placeholder = new stdclass();
|
||||
$lang->doc->placeholder->url = '相應的連結地址';
|
||||
<?php
|
||||
/**
|
||||
* The doc module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: zh-tw.php 824 2010-05-02 15:32:06Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* 欄位列表。*/
|
||||
$lang->doc->common = '文檔視圖';
|
||||
$lang->doc->id = '文檔編號';
|
||||
$lang->doc->product = '所屬產品';
|
||||
$lang->doc->project = '所屬項目';
|
||||
$lang->doc->lib = '所屬文檔庫';
|
||||
$lang->doc->module = '所屬分類';
|
||||
$lang->doc->title = '文檔標題';
|
||||
$lang->doc->digest = '文檔摘要';
|
||||
$lang->doc->comment = '文檔備註';
|
||||
$lang->doc->type = '文檔類型';
|
||||
$lang->doc->content = '文檔正文';
|
||||
$lang->doc->keywords = '關鍵字';
|
||||
$lang->doc->url = '文檔URL';
|
||||
$lang->doc->files = '附件';
|
||||
$lang->doc->views = '查閲次數';
|
||||
$lang->doc->addedBy = '由誰添加';
|
||||
$lang->doc->addedDate = '添加時間';
|
||||
$lang->doc->editedBy = '由誰編輯';
|
||||
$lang->doc->editedDate = '編輯時間';
|
||||
$lang->doc->basicInfo = '基本信息';
|
||||
|
||||
$lang->doc->moduleDoc = '按模組瀏覽';
|
||||
$lang->doc->searchDoc = '搜索';
|
||||
//$lang->doc->allDoc = '所有文檔';
|
||||
|
||||
$lang->doc->moduleName = '模組名稱';
|
||||
$lang->doc->moduleOrder = '模組排序';
|
||||
|
||||
/* 方法列表。*/
|
||||
$lang->doc->index = '首頁';
|
||||
$lang->doc->create = '創建文檔';
|
||||
$lang->doc->edit = '編輯文檔';
|
||||
$lang->doc->delete = '刪除文檔';
|
||||
$lang->doc->browse = '文檔列表';
|
||||
$lang->doc->view = '文檔詳情';
|
||||
$lang->doc->manageType = '維護分類';
|
||||
|
||||
$lang->doc->libName = '文檔庫名稱';
|
||||
$lang->doc->createLib = '創建文檔庫';
|
||||
$lang->doc->editLib = '編輯文檔庫';
|
||||
$lang->doc->deleteLib = '刪除文檔庫';
|
||||
|
||||
/* 查詢條件列表 */
|
||||
$lang->doc->allProduct = '所有產品';
|
||||
$lang->doc->allProject = '所有項目';
|
||||
|
||||
$lang->doc->systemLibs['product'] = '產品文檔庫';
|
||||
$lang->doc->systemLibs['project'] = '項目文檔庫';
|
||||
|
||||
$lang->doc->types['file'] = '檔案';
|
||||
$lang->doc->types['url'] = '連結';
|
||||
$lang->doc->types['text'] = '網頁';
|
||||
|
||||
$lang->doc->confirmDelete = "您確定刪除該文檔嗎?";
|
||||
$lang->doc->confirmDeleteLib = " 您確定刪除該文檔庫嗎?";
|
||||
$lang->doc->errorEditSystemDoc = "系統文檔庫無需修改。";
|
||||
|
||||
$lang->doc->placeholder = new stdclass();
|
||||
$lang->doc->placeholder->url = '相應的連結地址';
|
||||
|
||||
@@ -1,319 +1,319 @@
|
||||
<?php
|
||||
/**
|
||||
* The model file of doc module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: model.php 881 2010-06-22 06:50:32Z chencongzhi520 $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
class docModel extends model
|
||||
{
|
||||
/**
|
||||
* Set menus
|
||||
*
|
||||
* @param array $libs
|
||||
* @param int $libID
|
||||
* @param string $extra
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setMenu($libs, $libID, $extra = '')
|
||||
{
|
||||
$currentModule = $this->app->getModuleName();
|
||||
$currentMethod = $this->app->getMethodName();
|
||||
|
||||
$selectHtml = html::select('libID', $libs, $libID, "onchange=\"switchDocLib(this.value, '$currentModule', '$currentMethod', '$extra');\"");
|
||||
common::setMenuVars($this->lang->doc->menu, 'list', $selectHtml . $this->lang->arrow);
|
||||
foreach($this->lang->doc->menu as $key => $menu)
|
||||
{
|
||||
if($key != 'list') common::setMenuVars($this->lang->doc->menu, $key, $libID);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get library by id.
|
||||
*
|
||||
* @param int $libID
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getLibById($libID)
|
||||
{
|
||||
return $this->dao->findByID($libID)->from(TABLE_DOCLIB)->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get libraries.
|
||||
*
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getLibs()
|
||||
{
|
||||
$libs = $this->dao->select('id, name')->from(TABLE_DOCLIB)->where('deleted')->eq(0)->fetchPairs();
|
||||
return $this->lang->doc->systemLibs + $libs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a library.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function createLib()
|
||||
{
|
||||
$lib = fixer::input('post')->stripTags('name')->get();
|
||||
$this->dao->insert(TABLE_DOCLIB)
|
||||
->data($lib)
|
||||
->autoCheck()
|
||||
->batchCheck('name', 'notempty')
|
||||
->check('name', 'unique')
|
||||
->exec();
|
||||
return $this->dao->lastInsertID();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a library.
|
||||
*
|
||||
* @param int $libID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function updateLib($libID)
|
||||
{
|
||||
$libID = (int)$libID;
|
||||
$oldLib = $this->getLibById($libID);
|
||||
$lib = fixer::input('post')->stripTags('name')->get();
|
||||
$this->dao->update(TABLE_DOCLIB)
|
||||
->data($lib)
|
||||
->autoCheck()
|
||||
->batchCheck('name', 'notempty')
|
||||
->check('name', 'unique', "id != $libID")
|
||||
->where('id')->eq($libID)
|
||||
->exec();
|
||||
if(!dao::isError()) return common::createChanges($oldLib, $lib);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get docs.
|
||||
*
|
||||
* @param int|string $libID
|
||||
* @param int $productID
|
||||
* @param int $projectID
|
||||
* @param int $module
|
||||
* @param string $orderBy
|
||||
* @param object $pager
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getDocs($libID, $productID, $projectID, $module, $orderBy, $pager)
|
||||
{
|
||||
$products = $this->loadModel('product')->getPairs();
|
||||
$projects = $this->loadModel('project')->getPairs();
|
||||
$keysOfProducts = array_keys($products);
|
||||
$keysOfProjects = array_keys($projects);
|
||||
$allKeysOfProjects = $keysOfProjects;
|
||||
$allKeysOfProjects[] = 0;
|
||||
|
||||
return $this->dao->select('*')->from(TABLE_DOC)
|
||||
->where('deleted')->eq(0)
|
||||
->beginIF(is_numeric($libID))->andWhere('lib')->eq($libID)->fi()
|
||||
->beginIF($libID == 'product')->andWhere('product')->in($keysOfProducts)->andWhere('project')->in($allKeysOfProjects)->fi()
|
||||
->beginIF($libID == 'project')->andWhere('project')->in($keysOfProjects)->fi()
|
||||
->beginIF($productID > 0)->andWhere('product')->eq($productID)->fi()
|
||||
->beginIF($projectID > 0)->andWhere('project')->eq($projectID)->fi()
|
||||
->beginIF((string)$projectID == 'int')->andWhere('project')->gt(0)->fi()
|
||||
->beginIF($module)->andWhere('module')->in($module)->fi()
|
||||
->orderBy($orderBy)
|
||||
->page($pager)
|
||||
->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get doc info by id.
|
||||
*
|
||||
* @param int $docID
|
||||
* @param bool $setImgSize
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getById($docID, $setImgSize = false)
|
||||
{
|
||||
$doc = $this->dao->select('*')
|
||||
->from(TABLE_DOC)
|
||||
->where('id')->eq((int)$docID)
|
||||
->fetch();
|
||||
if(!$doc) return false;
|
||||
if($setImgSize) $doc->content = $this->loadModel('file')->setImgSize($doc->content);
|
||||
$doc->files = $this->loadModel('file')->getByObject('doc', $docID);
|
||||
|
||||
$doc->libName = '';
|
||||
$doc->productName = '';
|
||||
$doc->projectName = '';
|
||||
$doc->moduleName = '';
|
||||
if($doc->lib) $doc->libName = $this->dao->findByID($doc->lib)->from(TABLE_DOCLIB)->fetch('name');
|
||||
if($doc->product) $doc->productName = $this->dao->findByID($doc->product)->from(TABLE_PRODUCT)->fetch('name');
|
||||
if($doc->project) $doc->projectName = $this->dao->findByID($doc->project)->from(TABLE_PROJECT)->fetch('name');
|
||||
if($doc->module) $doc->moduleName = $this->dao->findByID($doc->module)->from(TABLE_MODULE)->fetch('name');
|
||||
return $doc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a doc.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
$now = helper::now();
|
||||
$doc = fixer::input('post')
|
||||
->add('addedBy', $this->app->user->account)
|
||||
->add('addedDate', $now)
|
||||
->setDefault('product, project, module', 0)
|
||||
->specialChars('title, digest, keywords')
|
||||
->encodeURL('url')
|
||||
->cleanInt('product, project, module')
|
||||
->remove('files, labels')
|
||||
->get();
|
||||
$condition = "lib = '$doc->lib' AND module = $doc->module";
|
||||
$this->dao->insert(TABLE_DOC)
|
||||
->data($doc)
|
||||
->autoCheck()
|
||||
->batchCheck($this->config->doc->create->requiredFields, 'notempty')
|
||||
->check('title', 'unique', $condition)
|
||||
->exec();
|
||||
if(!dao::isError())
|
||||
{
|
||||
$docID = $this->dao->lastInsertID();
|
||||
$this->loadModel('file')->saveUpload('doc', $docID);
|
||||
return $docID;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a doc.
|
||||
*
|
||||
* @param int $docID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function update($docID)
|
||||
{
|
||||
$oldDoc = $this->getById($docID);
|
||||
$now = helper::now();
|
||||
$doc = fixer::input('post')
|
||||
->cleanInt('module')
|
||||
->setDefault('module', 0)
|
||||
->specialChars('title, digest, keywords')
|
||||
->encodeURL('url')
|
||||
->remove('comment,files, labels')
|
||||
->add('editedBy', $this->app->user->account)
|
||||
->add('editedDate', $now)
|
||||
->get();
|
||||
|
||||
$condition = "lib = '$doc->lib' AND module = $doc->module AND id != $docID";
|
||||
$this->dao->update(TABLE_DOC)->data($doc)
|
||||
->autoCheck()
|
||||
->batchCheck($this->config->doc->edit->requiredFields, 'notempty')
|
||||
->check('title', 'unique', $condition)
|
||||
->where('id')->eq((int)$docID)
|
||||
->exec();
|
||||
if(!dao::isError()) return common::createChanges($oldDoc, $doc);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get docs of a product.
|
||||
*
|
||||
* @param int $productID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getProductDocs($productID)
|
||||
{
|
||||
return $this->dao->select('t1.*, t2.name as module')
|
||||
->from(TABLE_DOC)->alias('t1')
|
||||
->leftjoin(TABLE_MODULE)->alias('t2')->on('t1.module = t2.id')
|
||||
->where('t1.product')->eq($productID)
|
||||
->andWhere('t1.deleted')->eq(0)
|
||||
->orderBy('t1.id_desc')
|
||||
->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get docs of a project.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getProjectDocs($projectID)
|
||||
{
|
||||
return $this->dao->findByProject($projectID)->from(TABLE_DOC)->andWhere('deleted')->eq(0)->orderBy('id_desc')->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get pairs of product modules.
|
||||
*
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getProductModulePairs()
|
||||
{
|
||||
return $this->dao->findByType('productdoc')->from(TABLE_MODULE)->fetchPairs('id', 'name');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get pairs of project modules.
|
||||
*
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getProjectModulePairs()
|
||||
{
|
||||
return $this->dao->findByType('projectdoc')->from(TABLE_MODULE)->andWhere('type')->eq('projectdoc')->fetchPairs('id', 'name');
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract css styles for tables created in kindeditor.
|
||||
*
|
||||
* Like this: <table class="ke-table1" style="width:100%;" cellpadding="2" cellspacing="0" border="1" bordercolor="#000000">
|
||||
*
|
||||
* @param string $content
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function extractKETableCSS($content)
|
||||
{
|
||||
$css = '';
|
||||
$rule = '/<table class="ke(.*)" .*/';
|
||||
if(preg_match_all($rule, $content, $results))
|
||||
{
|
||||
foreach($results[0] as $tableLine)
|
||||
{
|
||||
$attributes = explode(' ', str_replace('"', '', $tableLine));
|
||||
foreach($attributes as $attribute)
|
||||
{
|
||||
if(strpos($attribute, '=') === false) continue;
|
||||
list($attributeName, $attributeValue) = explode('=', $attribute);
|
||||
$$attributeName = $attributeValue;
|
||||
}
|
||||
|
||||
if(!isset($class)) continue;
|
||||
$className = $class;
|
||||
$borderSize = isset($border) ? $border . 'px' : '1px';
|
||||
$borderColor = isset($bordercolor) ? $bordercolor : 'gray';
|
||||
$borderStyle = "{border:$borderSize $borderColor solid}\n";
|
||||
$css .= ".$className$borderStyle";
|
||||
$css .= ".$className td$borderStyle";
|
||||
}
|
||||
}
|
||||
return $css;
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The model file of doc module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: model.php 881 2010-06-22 06:50:32Z chencongzhi520 $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
class docModel extends model
|
||||
{
|
||||
/**
|
||||
* Set menus
|
||||
*
|
||||
* @param array $libs
|
||||
* @param int $libID
|
||||
* @param string $extra
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setMenu($libs, $libID, $extra = '')
|
||||
{
|
||||
$currentModule = $this->app->getModuleName();
|
||||
$currentMethod = $this->app->getMethodName();
|
||||
|
||||
$selectHtml = html::select('libID', $libs, $libID, "onchange=\"switchDocLib(this.value, '$currentModule', '$currentMethod', '$extra');\"");
|
||||
common::setMenuVars($this->lang->doc->menu, 'list', $selectHtml . $this->lang->arrow);
|
||||
foreach($this->lang->doc->menu as $key => $menu)
|
||||
{
|
||||
if($key != 'list') common::setMenuVars($this->lang->doc->menu, $key, $libID);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get library by id.
|
||||
*
|
||||
* @param int $libID
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getLibById($libID)
|
||||
{
|
||||
return $this->dao->findByID($libID)->from(TABLE_DOCLIB)->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get libraries.
|
||||
*
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getLibs()
|
||||
{
|
||||
$libs = $this->dao->select('id, name')->from(TABLE_DOCLIB)->where('deleted')->eq(0)->fetchPairs();
|
||||
return $this->lang->doc->systemLibs + $libs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a library.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function createLib()
|
||||
{
|
||||
$lib = fixer::input('post')->stripTags('name')->get();
|
||||
$this->dao->insert(TABLE_DOCLIB)
|
||||
->data($lib)
|
||||
->autoCheck()
|
||||
->batchCheck('name', 'notempty')
|
||||
->check('name', 'unique')
|
||||
->exec();
|
||||
return $this->dao->lastInsertID();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a library.
|
||||
*
|
||||
* @param int $libID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function updateLib($libID)
|
||||
{
|
||||
$libID = (int)$libID;
|
||||
$oldLib = $this->getLibById($libID);
|
||||
$lib = fixer::input('post')->stripTags('name')->get();
|
||||
$this->dao->update(TABLE_DOCLIB)
|
||||
->data($lib)
|
||||
->autoCheck()
|
||||
->batchCheck('name', 'notempty')
|
||||
->check('name', 'unique', "id != $libID")
|
||||
->where('id')->eq($libID)
|
||||
->exec();
|
||||
if(!dao::isError()) return common::createChanges($oldLib, $lib);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get docs.
|
||||
*
|
||||
* @param int|string $libID
|
||||
* @param int $productID
|
||||
* @param int $projectID
|
||||
* @param int $module
|
||||
* @param string $orderBy
|
||||
* @param object $pager
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getDocs($libID, $productID, $projectID, $module, $orderBy, $pager)
|
||||
{
|
||||
$products = $this->loadModel('product')->getPairs();
|
||||
$projects = $this->loadModel('project')->getPairs();
|
||||
$keysOfProducts = array_keys($products);
|
||||
$keysOfProjects = array_keys($projects);
|
||||
$allKeysOfProjects = $keysOfProjects;
|
||||
$allKeysOfProjects[] = 0;
|
||||
|
||||
return $this->dao->select('*')->from(TABLE_DOC)
|
||||
->where('deleted')->eq(0)
|
||||
->beginIF(is_numeric($libID))->andWhere('lib')->eq($libID)->fi()
|
||||
->beginIF($libID == 'product')->andWhere('product')->in($keysOfProducts)->andWhere('project')->in($allKeysOfProjects)->fi()
|
||||
->beginIF($libID == 'project')->andWhere('project')->in($keysOfProjects)->fi()
|
||||
->beginIF($productID > 0)->andWhere('product')->eq($productID)->fi()
|
||||
->beginIF($projectID > 0)->andWhere('project')->eq($projectID)->fi()
|
||||
->beginIF((string)$projectID == 'int')->andWhere('project')->gt(0)->fi()
|
||||
->beginIF($module)->andWhere('module')->in($module)->fi()
|
||||
->orderBy($orderBy)
|
||||
->page($pager)
|
||||
->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get doc info by id.
|
||||
*
|
||||
* @param int $docID
|
||||
* @param bool $setImgSize
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getById($docID, $setImgSize = false)
|
||||
{
|
||||
$doc = $this->dao->select('*')
|
||||
->from(TABLE_DOC)
|
||||
->where('id')->eq((int)$docID)
|
||||
->fetch();
|
||||
if(!$doc) return false;
|
||||
if($setImgSize) $doc->content = $this->loadModel('file')->setImgSize($doc->content);
|
||||
$doc->files = $this->loadModel('file')->getByObject('doc', $docID);
|
||||
|
||||
$doc->libName = '';
|
||||
$doc->productName = '';
|
||||
$doc->projectName = '';
|
||||
$doc->moduleName = '';
|
||||
if($doc->lib) $doc->libName = $this->dao->findByID($doc->lib)->from(TABLE_DOCLIB)->fetch('name');
|
||||
if($doc->product) $doc->productName = $this->dao->findByID($doc->product)->from(TABLE_PRODUCT)->fetch('name');
|
||||
if($doc->project) $doc->projectName = $this->dao->findByID($doc->project)->from(TABLE_PROJECT)->fetch('name');
|
||||
if($doc->module) $doc->moduleName = $this->dao->findByID($doc->module)->from(TABLE_MODULE)->fetch('name');
|
||||
return $doc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a doc.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
$now = helper::now();
|
||||
$doc = fixer::input('post')
|
||||
->add('addedBy', $this->app->user->account)
|
||||
->add('addedDate', $now)
|
||||
->setDefault('product, project, module', 0)
|
||||
->specialChars('title, digest, keywords')
|
||||
->encodeURL('url')
|
||||
->cleanInt('product, project, module')
|
||||
->remove('files, labels')
|
||||
->get();
|
||||
$condition = "lib = '$doc->lib' AND module = $doc->module";
|
||||
$this->dao->insert(TABLE_DOC)
|
||||
->data($doc)
|
||||
->autoCheck()
|
||||
->batchCheck($this->config->doc->create->requiredFields, 'notempty')
|
||||
->check('title', 'unique', $condition)
|
||||
->exec();
|
||||
if(!dao::isError())
|
||||
{
|
||||
$docID = $this->dao->lastInsertID();
|
||||
$this->loadModel('file')->saveUpload('doc', $docID);
|
||||
return $docID;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a doc.
|
||||
*
|
||||
* @param int $docID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function update($docID)
|
||||
{
|
||||
$oldDoc = $this->getById($docID);
|
||||
$now = helper::now();
|
||||
$doc = fixer::input('post')
|
||||
->cleanInt('module')
|
||||
->setDefault('module', 0)
|
||||
->specialChars('title, digest, keywords')
|
||||
->encodeURL('url')
|
||||
->remove('comment,files, labels')
|
||||
->add('editedBy', $this->app->user->account)
|
||||
->add('editedDate', $now)
|
||||
->get();
|
||||
|
||||
$condition = "lib = '$doc->lib' AND module = $doc->module AND id != $docID";
|
||||
$this->dao->update(TABLE_DOC)->data($doc)
|
||||
->autoCheck()
|
||||
->batchCheck($this->config->doc->edit->requiredFields, 'notempty')
|
||||
->check('title', 'unique', $condition)
|
||||
->where('id')->eq((int)$docID)
|
||||
->exec();
|
||||
if(!dao::isError()) return common::createChanges($oldDoc, $doc);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get docs of a product.
|
||||
*
|
||||
* @param int $productID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getProductDocs($productID)
|
||||
{
|
||||
return $this->dao->select('t1.*, t2.name as module')
|
||||
->from(TABLE_DOC)->alias('t1')
|
||||
->leftjoin(TABLE_MODULE)->alias('t2')->on('t1.module = t2.id')
|
||||
->where('t1.product')->eq($productID)
|
||||
->andWhere('t1.deleted')->eq(0)
|
||||
->orderBy('t1.id_desc')
|
||||
->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get docs of a project.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getProjectDocs($projectID)
|
||||
{
|
||||
return $this->dao->findByProject($projectID)->from(TABLE_DOC)->andWhere('deleted')->eq(0)->orderBy('id_desc')->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get pairs of product modules.
|
||||
*
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getProductModulePairs()
|
||||
{
|
||||
return $this->dao->findByType('productdoc')->from(TABLE_MODULE)->fetchPairs('id', 'name');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get pairs of project modules.
|
||||
*
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getProjectModulePairs()
|
||||
{
|
||||
return $this->dao->findByType('projectdoc')->from(TABLE_MODULE)->andWhere('type')->eq('projectdoc')->fetchPairs('id', 'name');
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract css styles for tables created in kindeditor.
|
||||
*
|
||||
* Like this: <table class="ke-table1" style="width:100%;" cellpadding="2" cellspacing="0" border="1" bordercolor="#000000">
|
||||
*
|
||||
* @param string $content
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function extractKETableCSS($content)
|
||||
{
|
||||
$css = '';
|
||||
$rule = '/<table class="ke(.*)" .*/';
|
||||
if(preg_match_all($rule, $content, $results))
|
||||
{
|
||||
foreach($results[0] as $tableLine)
|
||||
{
|
||||
$attributes = explode(' ', str_replace('"', '', $tableLine));
|
||||
foreach($attributes as $attribute)
|
||||
{
|
||||
if(strpos($attribute, '=') === false) continue;
|
||||
list($attributeName, $attributeValue) = explode('=', $attribute);
|
||||
$$attributeName = $attributeValue;
|
||||
}
|
||||
|
||||
if(!isset($class)) continue;
|
||||
$className = $class;
|
||||
$borderSize = isset($border) ? $border . 'px' : '1px';
|
||||
$borderColor = isset($bordercolor) ? $bordercolor : 'gray';
|
||||
$borderStyle = "{border:$borderSize $borderColor solid}\n";
|
||||
$css .= ".$className$borderStyle";
|
||||
$css .= ".$className td$borderStyle";
|
||||
}
|
||||
}
|
||||
return $css;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,84 +1,84 @@
|
||||
<?php
|
||||
/**
|
||||
* The browse view file of doc module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package lib
|
||||
* @version $Id: browse.html.php 958 2010-07-22 08:09:42Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/datepicker.html.php';?>
|
||||
<?php include '../../common/view/treeview.html.php';?>
|
||||
<?php include '../../common/view/colorize.html.php';?>
|
||||
<script language='Javascript'>
|
||||
var browseType = '<?php echo $browseType;?>';
|
||||
</script>
|
||||
<div id='featurebar'>
|
||||
<div class='f-left'>
|
||||
<span id='bymoduleTab' onclick='browseByModule()'><a href='#'><?php echo $lang->doc->moduleDoc;?></a></span>
|
||||
<span id='bysearchTab'><a href='#'><span class='icon-search'></span><?php echo $lang->doc->searchDoc;?></a></span>
|
||||
</div>
|
||||
<div class='f-right'>
|
||||
<?php common::printLink('doc', 'create', "libID=$libID&moduleID=$moduleID&productID=$productID&projectID=$projectID&from=doc", $lang->doc->create);?>
|
||||
</div>
|
||||
</div>
|
||||
<div id='querybox' class='<?php if($browseType !='bysearch') echo 'hidden';?>'></div>
|
||||
|
||||
<table class='cont-lt3'>
|
||||
<tr valign='top'>
|
||||
<td class='side' id='treebox'>
|
||||
<div class='box-title'><?php echo $libName;?></div>
|
||||
<div class='box-content'>
|
||||
<?php echo $moduleTree;?>
|
||||
<div class='a-right'>
|
||||
<?php common::printLink('tree', 'browse', "rootID=$libID&view=doc", $lang->doc->manageType);?>
|
||||
<?php if(is_numeric($libID)) common::printLink('tree', 'fix', "root=$libID&type=customdoc", $lang->tree->fix, 'hiddenwin');?>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td class='divider'></td>
|
||||
<td>
|
||||
<table class='table-1 fixed colored tablesorter datatable'>
|
||||
<thead>
|
||||
<tr class='colhead'>
|
||||
<?php $vars = "libID=$libID&module=$moduleID&productID=$productID&projectID=$projectID&browseType=$browseType¶m=$param&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}";?>
|
||||
<th class='w-id'> <?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?></th>
|
||||
<th><?php common::printOrderLink('title', $orderBy, $vars, $lang->doc->title);?></th>
|
||||
<th class='w-100px'><?php common::printOrderLink('type', $orderBy, $vars, $lang->doc->type);?></th>
|
||||
<th class='w-100px'><?php common::printOrderLink('addedBy', $orderBy, $vars, $lang->doc->addedBy);?></th>
|
||||
<th class='w-120px'><?php common::printOrderLink('addedDate', $orderBy, $vars, $lang->doc->addedDate);?></th>
|
||||
<th class='w-100px {sorter:false}'><?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($docs as $key => $doc):?>
|
||||
<?php
|
||||
$viewLink = $this->createLink('doc', 'view', "docID=$doc->id");
|
||||
$canView = common::hasPriv('doc', 'view');
|
||||
?>
|
||||
<tr class='a-center'>
|
||||
<td><?php if($canView) echo html::a($viewLink, sprintf('%03d', $doc->id)); else printf('%03d', $doc->id);?></td>
|
||||
<td class='a-left' title="<?php echo $doc->title?>"><nobr><?php echo html::a($viewLink, $doc->title);?></nobr></td>
|
||||
<td><?php echo $lang->doc->types[$doc->type];?></td>
|
||||
<td><?php isset($users[$doc->addedBy]) ? print($users[$doc->addedBy]) : print($doc->addedBy);?></td>
|
||||
<td><?php echo date("m-d H:i", strtotime($doc->addedDate));?></td>
|
||||
<td>
|
||||
<?php
|
||||
$vars = "doc={$doc->id}";
|
||||
common::printIcon('doc', 'edit', $vars, '', 'list');
|
||||
common::printIcon('doc', 'delete', $vars, '', 'list', '', 'hiddenwin');
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
<tfoot><tr><td colspan='6'><?php $pager->show();?></td></tr></tfoot>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The browse view file of doc module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package lib
|
||||
* @version $Id: browse.html.php 958 2010-07-22 08:09:42Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/datepicker.html.php';?>
|
||||
<?php include '../../common/view/treeview.html.php';?>
|
||||
<?php include '../../common/view/colorize.html.php';?>
|
||||
<script language='Javascript'>
|
||||
var browseType = '<?php echo $browseType;?>';
|
||||
</script>
|
||||
<div id='featurebar'>
|
||||
<div class='f-left'>
|
||||
<span id='bymoduleTab' onclick='browseByModule()'><a href='#'><?php echo $lang->doc->moduleDoc;?></a></span>
|
||||
<span id='bysearchTab'><a href='#'><span class='icon-search'></span><?php echo $lang->doc->searchDoc;?></a></span>
|
||||
</div>
|
||||
<div class='f-right'>
|
||||
<?php common::printLink('doc', 'create', "libID=$libID&moduleID=$moduleID&productID=$productID&projectID=$projectID&from=doc", $lang->doc->create);?>
|
||||
</div>
|
||||
</div>
|
||||
<div id='querybox' class='<?php if($browseType !='bysearch') echo 'hidden';?>'></div>
|
||||
|
||||
<table class='cont-lt3'>
|
||||
<tr valign='top'>
|
||||
<td class='side' id='treebox'>
|
||||
<div class='box-title'><?php echo $libName;?></div>
|
||||
<div class='box-content'>
|
||||
<?php echo $moduleTree;?>
|
||||
<div class='a-right'>
|
||||
<?php common::printLink('tree', 'browse', "rootID=$libID&view=doc", $lang->doc->manageType);?>
|
||||
<?php if(is_numeric($libID)) common::printLink('tree', 'fix', "root=$libID&type=customdoc", $lang->tree->fix, 'hiddenwin');?>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td class='divider'></td>
|
||||
<td>
|
||||
<table class='table-1 fixed colored tablesorter datatable'>
|
||||
<thead>
|
||||
<tr class='colhead'>
|
||||
<?php $vars = "libID=$libID&module=$moduleID&productID=$productID&projectID=$projectID&browseType=$browseType¶m=$param&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}";?>
|
||||
<th class='w-id'> <?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?></th>
|
||||
<th><?php common::printOrderLink('title', $orderBy, $vars, $lang->doc->title);?></th>
|
||||
<th class='w-100px'><?php common::printOrderLink('type', $orderBy, $vars, $lang->doc->type);?></th>
|
||||
<th class='w-100px'><?php common::printOrderLink('addedBy', $orderBy, $vars, $lang->doc->addedBy);?></th>
|
||||
<th class='w-120px'><?php common::printOrderLink('addedDate', $orderBy, $vars, $lang->doc->addedDate);?></th>
|
||||
<th class='w-100px {sorter:false}'><?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($docs as $key => $doc):?>
|
||||
<?php
|
||||
$viewLink = $this->createLink('doc', 'view', "docID=$doc->id");
|
||||
$canView = common::hasPriv('doc', 'view');
|
||||
?>
|
||||
<tr class='a-center'>
|
||||
<td><?php if($canView) echo html::a($viewLink, sprintf('%03d', $doc->id)); else printf('%03d', $doc->id);?></td>
|
||||
<td class='a-left' title="<?php echo $doc->title?>"><nobr><?php echo html::a($viewLink, $doc->title);?></nobr></td>
|
||||
<td><?php echo $lang->doc->types[$doc->type];?></td>
|
||||
<td><?php isset($users[$doc->addedBy]) ? print($users[$doc->addedBy]) : print($doc->addedBy);?></td>
|
||||
<td><?php echo date("m-d H:i", strtotime($doc->addedDate));?></td>
|
||||
<td>
|
||||
<?php
|
||||
$vars = "doc={$doc->id}";
|
||||
common::printIcon('doc', 'edit', $vars, '', 'list');
|
||||
common::printIcon('doc', 'delete', $vars, '', 'list', '', 'hiddenwin');
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
<tfoot><tr><td colspan='6'><?php $pager->show();?></td></tr></tfoot>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,71 +1,71 @@
|
||||
<?php
|
||||
/**
|
||||
* The create view of doc module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Jia Fu <fujia@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: create.html.php 975 2010-07-29 03:30:25Z jajacn@126.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<?php js::set('holders ', $lang->doc->placeholder, 'json');?>
|
||||
<form method='post' enctype='multipart/form-data' target='hiddenwin' id='dataform'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $lang->doc->create;?></caption>
|
||||
<?php if($libID == 'product'):?>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->product;?></th>
|
||||
<td><?php echo html::select('product', $products, $productID, "class='select-3'");?></td>
|
||||
</tr>
|
||||
<?php elseif($libID == 'project'):?>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->project;?></th>
|
||||
<td><?php echo html::select('project', $projects, $projectID, "class='select-3' onchange=loadProducts(this.value);");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->product;?></th>
|
||||
<td><span id='productBox'><?php echo html::select('product', $products, '', "class='select-3'");?></span></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->module;?></th>
|
||||
<td><?php echo html::select('module', $moduleOptionMenu, $moduleID, "class='select-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->type;?></th>
|
||||
<td><?php echo html::radio('type', $lang->doc->types, 'file', "onclick=setType(this.value)");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->title;?></th>
|
||||
<td><?php echo html::input('title', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr id='urlBox' class='hidden'>
|
||||
<th class='rowhead'><?php echo $lang->doc->url;?></th>
|
||||
<td><?php echo html::input('url', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr id='contentBox' class='hidden'>
|
||||
<th class='rowhead'><?php echo $lang->doc->content;?></th>
|
||||
<td><?php echo html::textarea('content', '', "class='area-1' style='width:90%; height:200px'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->keywords;?></th>
|
||||
<td><?php echo html::input('keywords', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->digest;?></th>
|
||||
<td><?php echo html::textarea('digest', '', "class='text-1' rows=3");?></td>
|
||||
</tr>
|
||||
<tr id='fileBox'>
|
||||
<th class='rowhead'><?php echo $lang->doc->files;?></th>
|
||||
<td><?php echo $this->fetch('file', 'buildform', 'fileCount=2');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'><?php echo html::submitButton() . html::resetButton() . html::hidden('lib', $libID);?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The create view of doc module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Jia Fu <fujia@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: create.html.php 975 2010-07-29 03:30:25Z jajacn@126.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<?php js::set('holders ', $lang->doc->placeholder, 'json');?>
|
||||
<form method='post' enctype='multipart/form-data' target='hiddenwin' id='dataform'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $lang->doc->create;?></caption>
|
||||
<?php if($libID == 'product'):?>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->product;?></th>
|
||||
<td><?php echo html::select('product', $products, $productID, "class='select-3'");?></td>
|
||||
</tr>
|
||||
<?php elseif($libID == 'project'):?>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->project;?></th>
|
||||
<td><?php echo html::select('project', $projects, $projectID, "class='select-3' onchange=loadProducts(this.value);");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->product;?></th>
|
||||
<td><span id='productBox'><?php echo html::select('product', $products, '', "class='select-3'");?></span></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->module;?></th>
|
||||
<td><?php echo html::select('module', $moduleOptionMenu, $moduleID, "class='select-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->type;?></th>
|
||||
<td><?php echo html::radio('type', $lang->doc->types, 'file', "onclick=setType(this.value)");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->title;?></th>
|
||||
<td><?php echo html::input('title', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr id='urlBox' class='hidden'>
|
||||
<th class='rowhead'><?php echo $lang->doc->url;?></th>
|
||||
<td><?php echo html::input('url', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr id='contentBox' class='hidden'>
|
||||
<th class='rowhead'><?php echo $lang->doc->content;?></th>
|
||||
<td><?php echo html::textarea('content', '', "class='area-1' style='width:90%; height:200px'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->keywords;?></th>
|
||||
<td><?php echo html::input('keywords', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->digest;?></th>
|
||||
<td><?php echo html::textarea('digest', '', "class='text-1' rows=3");?></td>
|
||||
</tr>
|
||||
<tr id='fileBox'>
|
||||
<th class='rowhead'><?php echo $lang->doc->files;?></th>
|
||||
<td><?php echo $this->fetch('file', 'buildform', 'fileCount=2');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'><?php echo html::submitButton() . html::resetButton() . html::hidden('lib', $libID);?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
<?php
|
||||
/**
|
||||
* The createlib view of doc module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Jia Fu <fujia@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: createlib.html.php 975 2010-07-29 03:30:25Z jajacn@126.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.lite.html.php';?>
|
||||
<form method='post'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $lang->doc->createLib;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->libName;?></th>
|
||||
<td><?php echo html::input('name', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'><?php echo html::submitButton();?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.lite.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The createlib view of doc module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Jia Fu <fujia@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: createlib.html.php 975 2010-07-29 03:30:25Z jajacn@126.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.lite.html.php';?>
|
||||
<form method='post'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $lang->doc->createLib;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->libName;?></th>
|
||||
<td><?php echo html::input('name', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'><?php echo html::submitButton();?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.lite.html.php';?>
|
||||
|
||||
@@ -1,68 +1,68 @@
|
||||
<?php
|
||||
/**
|
||||
* The edit view of doc module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Jia Fu <fujia@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: edit.html.php 975 2010-07-29 03:30:25Z jajacn@126.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<script language='javascript'>
|
||||
var type = '<?php echo $doc->type;?>';
|
||||
$(document).ready(function()
|
||||
{
|
||||
setType(type);
|
||||
});
|
||||
</script>
|
||||
<form method='post' enctype='multipart/form-data' target='hiddenwin' id='dataform'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $lang->doc->edit;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->module;?></th>
|
||||
<td><?php echo html::select('module', $moduleOptionMenu, $doc->module, "class='select-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->type;?></th>
|
||||
<td><?php echo $lang->doc->types[$doc->type];?></td>
|
||||
</tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->title;?></th>
|
||||
<td><?php echo html::input('title', $doc->title, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->keywords;?></th>
|
||||
<td><?php echo html::input('keywords', $doc->keywords, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr id='urlBox' class='hidden'>
|
||||
<th class='rowhead'><?php echo $lang->doc->url;?></th>
|
||||
<td><?php echo html::input('url', urldecode($doc->url), "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr id='contentBox' class='hidden'>
|
||||
<th class='rowhead'><?php echo $lang->doc->content;?></th>
|
||||
<td><?php echo html::textarea('content', htmlspecialchars($doc->content), "class='text-1' rows='8' style='width:90%; height:200px'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->digest;?></th>
|
||||
<td><?php echo html::textarea('digest', $doc->digest, "class='text-1' rows=3");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->comment;?></th>
|
||||
<td><?php echo html::textarea('comment','', "class='text-1' rows=3");?></td>
|
||||
</tr>
|
||||
<tr id='fileBox' class='hidden'>
|
||||
<th class='rowhead'><?php echo $lang->doc->files;?></th>
|
||||
<td><?php echo $this->fetch('file', 'buildform', 'fileCount=2');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'>
|
||||
<?php echo html::submitButton() . html::resetButton() . html::hidden('lib', $libID);?>
|
||||
<?php echo html::hidden('product', $doc->product) . html::hidden('project', $doc->project);?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The edit view of doc module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Jia Fu <fujia@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: edit.html.php 975 2010-07-29 03:30:25Z jajacn@126.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<script language='javascript'>
|
||||
var type = '<?php echo $doc->type;?>';
|
||||
$(document).ready(function()
|
||||
{
|
||||
setType(type);
|
||||
});
|
||||
</script>
|
||||
<form method='post' enctype='multipart/form-data' target='hiddenwin' id='dataform'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $lang->doc->edit;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->module;?></th>
|
||||
<td><?php echo html::select('module', $moduleOptionMenu, $doc->module, "class='select-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->type;?></th>
|
||||
<td><?php echo $lang->doc->types[$doc->type];?></td>
|
||||
</tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->title;?></th>
|
||||
<td><?php echo html::input('title', $doc->title, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->keywords;?></th>
|
||||
<td><?php echo html::input('keywords', $doc->keywords, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr id='urlBox' class='hidden'>
|
||||
<th class='rowhead'><?php echo $lang->doc->url;?></th>
|
||||
<td><?php echo html::input('url', urldecode($doc->url), "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr id='contentBox' class='hidden'>
|
||||
<th class='rowhead'><?php echo $lang->doc->content;?></th>
|
||||
<td><?php echo html::textarea('content', htmlspecialchars($doc->content), "class='text-1' rows='8' style='width:90%; height:200px'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->digest;?></th>
|
||||
<td><?php echo html::textarea('digest', $doc->digest, "class='text-1' rows=3");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->comment;?></th>
|
||||
<td><?php echo html::textarea('comment','', "class='text-1' rows=3");?></td>
|
||||
</tr>
|
||||
<tr id='fileBox' class='hidden'>
|
||||
<th class='rowhead'><?php echo $lang->doc->files;?></th>
|
||||
<td><?php echo $this->fetch('file', 'buildform', 'fileCount=2');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'>
|
||||
<?php echo html::submitButton() . html::resetButton() . html::hidden('lib', $libID);?>
|
||||
<?php echo html::hidden('product', $doc->product) . html::hidden('project', $doc->project);?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,28 +1,28 @@
|
||||
<?php
|
||||
/**
|
||||
* The editlib file of doc module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Jia Fu <fujia@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: editlib.html.php 975 2010-07-29 03:30:25Z jajacn@126.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.lite.html.php';?>
|
||||
<?php if($libID == 'product' or $libID == 'project'):?>
|
||||
<p class='a-center strong mt-10px'><?php echo $lang->doc->errorEditSystemDoc;?></p>
|
||||
<?php else:?>
|
||||
<form method='post'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $lang->doc->editLib;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->libName;?></th>
|
||||
<td><?php echo html::input('name', $libName, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr><td colspan='2' class='a-center'><?php echo html::submitButton();?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php endif;?>
|
||||
<?php include '../../common/view/footer.lite.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The editlib file of doc module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Jia Fu <fujia@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: editlib.html.php 975 2010-07-29 03:30:25Z jajacn@126.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.lite.html.php';?>
|
||||
<?php if($libID == 'product' or $libID == 'project'):?>
|
||||
<p class='a-center strong mt-10px'><?php echo $lang->doc->errorEditSystemDoc;?></p>
|
||||
<?php else:?>
|
||||
<form method='post'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $lang->doc->editLib;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->libName;?></th>
|
||||
<td><?php echo html::input('name', $libName, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr><td colspan='2' class='a-center'><?php echo html::submitButton();?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php endif;?>
|
||||
<?php include '../../common/view/footer.lite.html.php';?>
|
||||
|
||||
@@ -1,110 +1,110 @@
|
||||
<?php
|
||||
/**
|
||||
* The view of doc module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Jia Fu <fujia@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: view.html.php 975 2010-07-29 03:30:25Z jajacn@126.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php echo css::internal($keTableCSS);?>
|
||||
<div id='titlebar'>
|
||||
<div id='main' <?php if($doc->deleted) echo "class='deleted'";?>>DOC #<?php echo $doc->id . ' ' . $doc->title;?></div>
|
||||
<div>
|
||||
<div class='a-center f-16px strong'>
|
||||
<?php
|
||||
$browseLink = $this->session->docList ? $this->session->docList : inlink('browse');
|
||||
$params = "docID=$doc->id";
|
||||
if(!$doc->deleted)
|
||||
{
|
||||
ob_start();
|
||||
common::printIcon('doc', 'edit', $params);
|
||||
common::printIcon('doc', 'delete', $params, '', 'button', '', 'hiddenwin');
|
||||
common::printDivider();
|
||||
common::printRPN($browseLink, $preAndNext);
|
||||
|
||||
$actionLinks = ob_get_contents();
|
||||
ob_end_clean();
|
||||
echo $actionLinks;
|
||||
}
|
||||
else
|
||||
{
|
||||
common::printRPN($browseLink);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table class='cont-rt5'>
|
||||
<tr valign='top'>
|
||||
<td>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->doc->digest;?></legend>
|
||||
<div><?php echo $doc->digest;?></div>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->doc->keywords;?></legend>
|
||||
<div><?php echo $doc->keywords;?></div>
|
||||
</fieldset>
|
||||
<?php if($doc->type == 'url'):?>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->doc->url;?></legend>
|
||||
<div><?php echo html::a(urldecode($doc->url), '', '_blank');?></div>
|
||||
</fieldset>
|
||||
<?php endif;?>
|
||||
<?php if($doc->type == 'text'):?>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->doc->content;?></legend>
|
||||
<div class='content'><?php echo $doc->content;?></div>
|
||||
</fieldset>
|
||||
<?php endif;?>
|
||||
<?php if($doc->type == 'file'):?>
|
||||
<?php echo $this->fetch('file', 'printFiles', array('files' => $doc->files, 'fieldset' => 'true'));?>
|
||||
<?php endif;?>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
<div class='a-center actionlink'><?php if(!$doc->deleted) echo $actionLinks;?></div>
|
||||
</td>
|
||||
<td class='divider'></td>
|
||||
<td class='side'>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->doc->basicInfo;?></legend>
|
||||
<table class='table-1 a-left fixed'>
|
||||
<tr>
|
||||
<th class='rowhead w-200'><?php echo $lang->doc->lib;?></th>
|
||||
<td><?php echo $lib;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->module;?></th>
|
||||
<td><?php echo $doc->moduleName ? $doc->moduleName : '/';?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->type;?></th>
|
||||
<td><?php echo $lang->doc->types[$doc->type];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->addedBy;?></th>
|
||||
<td><?php echo $users[$doc->addedBy];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->addedDate;?></th>
|
||||
<td><?php echo $doc->addedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->editedBy;?></th>
|
||||
<td><?php echo $users[$doc->editedBy];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->editedDate;?></th>
|
||||
<td><?php echo $doc->editedDate;?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/syntaxhighlighter.html.php';?>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The view of doc module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Jia Fu <fujia@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: view.html.php 975 2010-07-29 03:30:25Z jajacn@126.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php echo css::internal($keTableCSS);?>
|
||||
<div id='titlebar'>
|
||||
<div id='main' <?php if($doc->deleted) echo "class='deleted'";?>>DOC #<?php echo $doc->id . ' ' . $doc->title;?></div>
|
||||
<div>
|
||||
<div class='a-center f-16px strong'>
|
||||
<?php
|
||||
$browseLink = $this->session->docList ? $this->session->docList : inlink('browse');
|
||||
$params = "docID=$doc->id";
|
||||
if(!$doc->deleted)
|
||||
{
|
||||
ob_start();
|
||||
common::printIcon('doc', 'edit', $params);
|
||||
common::printIcon('doc', 'delete', $params, '', 'button', '', 'hiddenwin');
|
||||
common::printDivider();
|
||||
common::printRPN($browseLink, $preAndNext);
|
||||
|
||||
$actionLinks = ob_get_contents();
|
||||
ob_end_clean();
|
||||
echo $actionLinks;
|
||||
}
|
||||
else
|
||||
{
|
||||
common::printRPN($browseLink);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table class='cont-rt5'>
|
||||
<tr valign='top'>
|
||||
<td>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->doc->digest;?></legend>
|
||||
<div><?php echo $doc->digest;?></div>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->doc->keywords;?></legend>
|
||||
<div><?php echo $doc->keywords;?></div>
|
||||
</fieldset>
|
||||
<?php if($doc->type == 'url'):?>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->doc->url;?></legend>
|
||||
<div><?php echo html::a(urldecode($doc->url), '', '_blank');?></div>
|
||||
</fieldset>
|
||||
<?php endif;?>
|
||||
<?php if($doc->type == 'text'):?>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->doc->content;?></legend>
|
||||
<div class='content'><?php echo $doc->content;?></div>
|
||||
</fieldset>
|
||||
<?php endif;?>
|
||||
<?php if($doc->type == 'file'):?>
|
||||
<?php echo $this->fetch('file', 'printFiles', array('files' => $doc->files, 'fieldset' => 'true'));?>
|
||||
<?php endif;?>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
<div class='a-center actionlink'><?php if(!$doc->deleted) echo $actionLinks;?></div>
|
||||
</td>
|
||||
<td class='divider'></td>
|
||||
<td class='side'>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->doc->basicInfo;?></legend>
|
||||
<table class='table-1 a-left fixed'>
|
||||
<tr>
|
||||
<th class='rowhead w-200'><?php echo $lang->doc->lib;?></th>
|
||||
<td><?php echo $lib;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->module;?></th>
|
||||
<td><?php echo $doc->moduleName ? $doc->moduleName : '/';?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->type;?></th>
|
||||
<td><?php echo $lang->doc->types[$doc->type];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->addedBy;?></th>
|
||||
<td><?php echo $users[$doc->addedBy];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->addedDate;?></th>
|
||||
<td><?php echo $doc->addedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->editedBy;?></th>
|
||||
<td><?php echo $users[$doc->editedBy];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->editedDate;?></th>
|
||||
<td><?php echo $doc->editedDate;?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/syntaxhighlighter.html.php';?>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,164 +1,164 @@
|
||||
<?php
|
||||
/**
|
||||
* The control file of editor of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Yidong Wang <yidong@cnezsoft.com>
|
||||
* @package editor
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class editor extends control
|
||||
{
|
||||
/**
|
||||
* Show module files and edit them.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$this->view->moduleList = $this->editor->getModules();
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Show files and methods of the module.
|
||||
*
|
||||
* @param string $moduleDir
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function extend($moduleDir = '')
|
||||
{
|
||||
$moduleFiles = $this->editor->getModuleFiles($moduleDir);
|
||||
$this->view->module = $moduleDir;
|
||||
$this->view->tree = $this->editor->printTree($moduleFiles);
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit extend.
|
||||
*
|
||||
* @param string $filePath
|
||||
* @param string $action
|
||||
* @param string $isExtends
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function edit($filePath = '', $action = '', $isExtends = '')
|
||||
{
|
||||
$this->view->safeFilePath = $filePath;
|
||||
$fileContent = '';
|
||||
if($filePath)
|
||||
{
|
||||
$filePath = helper::safe64Decode($filePath);
|
||||
if($action == 'extendOther' and file_exists($filePath))
|
||||
{
|
||||
$this->view->showContent = htmlspecialchars(file_get_contents($filePath));
|
||||
}
|
||||
if($action == 'edit' or $action == 'override')
|
||||
{
|
||||
if(file_exists($filePath))
|
||||
{
|
||||
$fileContent = file_get_contents($filePath);
|
||||
if($action == 'override')
|
||||
{
|
||||
$fileContent = str_replace('../../', '../../../', $fileContent);
|
||||
$fileContent = str_replace(array('\'./', '"./'), array('\'../../view/', '"../../view'), $fileContent);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$filePath = '';
|
||||
}
|
||||
}
|
||||
elseif($action == 'extendModel')
|
||||
{
|
||||
$fileContent = $this->editor->extendModel($filePath);
|
||||
}
|
||||
elseif($action == 'extendControl')
|
||||
{
|
||||
$okUrl = $this->editor->getExtendLink($filePath, 'extendControl', 'yes');
|
||||
$cancelUrl = $this->editor->getExtendLink($filePath, 'extendControl', 'no');
|
||||
if(!$isExtends) die(js::confirm($this->lang->editor->extendConfirm, $okUrl, $cancelUrl));
|
||||
$fileContent = $this->editor->extendControl($filePath, $isExtends);
|
||||
}
|
||||
elseif($action == 'newPage')
|
||||
{
|
||||
$fileContent = $this->editor->newControl($filePath);
|
||||
}
|
||||
elseif(strrpos(basename($filePath), '.php') !== false and empty($fileContent))
|
||||
{
|
||||
$fileContent = "<?php\n";
|
||||
}
|
||||
}
|
||||
$this->view->fileContent = $fileContent;
|
||||
$this->view->filePath = $filePath;
|
||||
$this->view->action = $action;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Page name.
|
||||
*
|
||||
* @param string $filePath
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function newPage($filePath)
|
||||
{
|
||||
$filePath = helper::safe64Decode($filePath);
|
||||
if($_POST)
|
||||
{
|
||||
$saveFilePath = $this->editor->getSavePath($filePath, 'newMethod');
|
||||
$extendLink = $this->editor->getExtendLink($saveFilePath, 'newPage');
|
||||
if(file_exists($saveFilePath) and !$this->post->override) die(js::confirm($this->lang->editor->repeatPage, $extendLink, '', 'parent'));
|
||||
die(js::locate($extendLink, 'parent'));
|
||||
}
|
||||
$this->view->filePath = $filePath;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Save file to extension.
|
||||
*
|
||||
* @param string $filePath
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function save($filePath = '', $action = '')
|
||||
{
|
||||
if($filePath and $_POST)
|
||||
{
|
||||
$filePath = helper::safe64Decode($filePath);
|
||||
if($action != 'edit' and $action != 'newPage') $filePath = $this->editor->getSavePath($filePath, $action);
|
||||
if($action != 'edit' and $action != 'newPage' and file_exists($filePath) and !$this->post->override) die(js::error($this->lang->editor->repeatFile));
|
||||
$this->editor->save($filePath);
|
||||
echo js::reload('parent.parent.extendWin');
|
||||
die(js::locate(inlink('edit', "filePath=" . helper::safe64Encode($filePath) . "&action=edit"), 'parent'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete extension file.
|
||||
*
|
||||
* @param string $filePath
|
||||
* @param string $confirm
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function delete($filePath = '', $confirm = 'no')
|
||||
{
|
||||
if($confirm == 'no')
|
||||
{
|
||||
die(js::confirm($this->lang->editor->deleteConfirm, inlink('delete', "filePath=$filePath&confirm=yes")));
|
||||
}
|
||||
$filePath = helper::safe64Decode($filePath);
|
||||
if(file_exists($filePath) and unlink($filePath)) die(js::reload('parent'));
|
||||
die(js::alert($this->lang->editor->notDelete));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
<?php
|
||||
/**
|
||||
* The control file of editor of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Yidong Wang <yidong@cnezsoft.com>
|
||||
* @package editor
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class editor extends control
|
||||
{
|
||||
/**
|
||||
* Show module files and edit them.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$this->view->moduleList = $this->editor->getModules();
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Show files and methods of the module.
|
||||
*
|
||||
* @param string $moduleDir
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function extend($moduleDir = '')
|
||||
{
|
||||
$moduleFiles = $this->editor->getModuleFiles($moduleDir);
|
||||
$this->view->module = $moduleDir;
|
||||
$this->view->tree = $this->editor->printTree($moduleFiles);
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit extend.
|
||||
*
|
||||
* @param string $filePath
|
||||
* @param string $action
|
||||
* @param string $isExtends
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function edit($filePath = '', $action = '', $isExtends = '')
|
||||
{
|
||||
$this->view->safeFilePath = $filePath;
|
||||
$fileContent = '';
|
||||
if($filePath)
|
||||
{
|
||||
$filePath = helper::safe64Decode($filePath);
|
||||
if($action == 'extendOther' and file_exists($filePath))
|
||||
{
|
||||
$this->view->showContent = htmlspecialchars(file_get_contents($filePath));
|
||||
}
|
||||
if($action == 'edit' or $action == 'override')
|
||||
{
|
||||
if(file_exists($filePath))
|
||||
{
|
||||
$fileContent = file_get_contents($filePath);
|
||||
if($action == 'override')
|
||||
{
|
||||
$fileContent = str_replace('../../', '../../../', $fileContent);
|
||||
$fileContent = str_replace(array('\'./', '"./'), array('\'../../view/', '"../../view'), $fileContent);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$filePath = '';
|
||||
}
|
||||
}
|
||||
elseif($action == 'extendModel')
|
||||
{
|
||||
$fileContent = $this->editor->extendModel($filePath);
|
||||
}
|
||||
elseif($action == 'extendControl')
|
||||
{
|
||||
$okUrl = $this->editor->getExtendLink($filePath, 'extendControl', 'yes');
|
||||
$cancelUrl = $this->editor->getExtendLink($filePath, 'extendControl', 'no');
|
||||
if(!$isExtends) die(js::confirm($this->lang->editor->extendConfirm, $okUrl, $cancelUrl));
|
||||
$fileContent = $this->editor->extendControl($filePath, $isExtends);
|
||||
}
|
||||
elseif($action == 'newPage')
|
||||
{
|
||||
$fileContent = $this->editor->newControl($filePath);
|
||||
}
|
||||
elseif(strrpos(basename($filePath), '.php') !== false and empty($fileContent))
|
||||
{
|
||||
$fileContent = "<?php\n";
|
||||
}
|
||||
}
|
||||
$this->view->fileContent = $fileContent;
|
||||
$this->view->filePath = $filePath;
|
||||
$this->view->action = $action;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Page name.
|
||||
*
|
||||
* @param string $filePath
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function newPage($filePath)
|
||||
{
|
||||
$filePath = helper::safe64Decode($filePath);
|
||||
if($_POST)
|
||||
{
|
||||
$saveFilePath = $this->editor->getSavePath($filePath, 'newMethod');
|
||||
$extendLink = $this->editor->getExtendLink($saveFilePath, 'newPage');
|
||||
if(file_exists($saveFilePath) and !$this->post->override) die(js::confirm($this->lang->editor->repeatPage, $extendLink, '', 'parent'));
|
||||
die(js::locate($extendLink, 'parent'));
|
||||
}
|
||||
$this->view->filePath = $filePath;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Save file to extension.
|
||||
*
|
||||
* @param string $filePath
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function save($filePath = '', $action = '')
|
||||
{
|
||||
if($filePath and $_POST)
|
||||
{
|
||||
$filePath = helper::safe64Decode($filePath);
|
||||
if($action != 'edit' and $action != 'newPage') $filePath = $this->editor->getSavePath($filePath, $action);
|
||||
if($action != 'edit' and $action != 'newPage' and file_exists($filePath) and !$this->post->override) die(js::error($this->lang->editor->repeatFile));
|
||||
$this->editor->save($filePath);
|
||||
echo js::reload('parent.parent.extendWin');
|
||||
die(js::locate(inlink('edit', "filePath=" . helper::safe64Encode($filePath) . "&action=edit"), 'parent'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete extension file.
|
||||
*
|
||||
* @param string $filePath
|
||||
* @param string $confirm
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function delete($filePath = '', $confirm = 'no')
|
||||
{
|
||||
if($confirm == 'no')
|
||||
{
|
||||
die(js::confirm($this->lang->editor->deleteConfirm, inlink('delete', "filePath=$filePath&confirm=yes")));
|
||||
}
|
||||
$filePath = helper::safe64Decode($filePath);
|
||||
if(file_exists($filePath) and unlink($filePath)) die(js::reload('parent'));
|
||||
die(js::alert($this->lang->editor->notDelete));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user