Merge branch 'zentaopms_304' into 'master'
Zentaopms 304 See merge request easycorp/zentaopms!7518
This commit is contained in:
@@ -73,6 +73,7 @@ $filter->tree = new stdclass();
|
||||
$filter->productplan = new stdclass();
|
||||
$filter->projectplan = new stdclass();
|
||||
$filter->kanban = new stdclass();
|
||||
$filter->group = new stdclass();
|
||||
|
||||
$filter->index->index = new stdclass();
|
||||
$filter->block->default = new stdclass();
|
||||
@@ -182,6 +183,7 @@ $filter->projectplan->browse = new stdclass();
|
||||
$filter->kanban->space = new stdclass();
|
||||
$filter->execution->kanban = new stdclass();
|
||||
$filter->execution->all = new stdclass();
|
||||
$filter->group->editmanagepriv = new stdclass();
|
||||
|
||||
$filter->index->index->get['open'] = 'reg::base64';
|
||||
|
||||
@@ -464,3 +466,5 @@ $filter->tree->browse->cookie['preProductID'] = 'int';
|
||||
$filter->tree->browse->cookie['preBranch'] = 'reg::word';
|
||||
|
||||
$filter->kanban->space->cookie['showClosed'] = 'code';
|
||||
|
||||
$filter->group->editmanagepriv->cookie['managePrivEditType'] = 'string';
|
||||
|
||||
+18
-2
@@ -229,6 +229,13 @@ $config->openMethods[] = 'task.editteam';
|
||||
$config->openMethods[] = 'feedback.mergeproductmodule';
|
||||
$config->openMethods[] = 'zanode.nodelist';
|
||||
$config->openMethods[] = 'action.restoreStages';
|
||||
$config->openMethods[] = 'execution.browse';
|
||||
$config->openMethods[] = 'testcase.showImport';
|
||||
$config->openMethods[] = 'testsuite.index';
|
||||
$config->openMethods[] = 'caselib.index';
|
||||
$config->openMethods[] = 'company.index';
|
||||
$config->openMethods[] = 'user.cropAvatar';
|
||||
$config->openMethods[] = 'custom.index';
|
||||
$config->openMethods[] = 'testcase.getXmindImport';
|
||||
$config->openMethods[] = 'testcase.showXMindImport';
|
||||
$config->openMethods[] = 'testcase.saveXmindImport';
|
||||
@@ -365,6 +372,11 @@ define('VIEW_SCENECASE', '`ztv_scenecase`');
|
||||
|
||||
define('CHANGEVALUE', 100000000);
|
||||
|
||||
define('TABLE_PRIV', '`' . $config->db->prefix . 'priv`');
|
||||
define('TABLE_PRIVLANG', '`' . $config->db->prefix . 'privlang`');
|
||||
define('TABLE_PRIVMANAGER', '`' . $config->db->prefix . 'privmanager`');
|
||||
define('TABLE_PRIVRELATION', '`' . $config->db->prefix . 'privrelation`');
|
||||
|
||||
$config->objectTables['product'] = TABLE_PRODUCT;
|
||||
$config->objectTables['productplan'] = TABLE_PRODUCTPLAN;
|
||||
$config->objectTables['story'] = TABLE_STORY;
|
||||
@@ -418,6 +430,10 @@ $config->objectTables['zahost'] = TABLE_ZAHOST;
|
||||
$config->objectTables['zanode'] = TABLE_ZAHOST;
|
||||
$config->objectTables['automation'] = TABLE_AUTOMATION;
|
||||
$config->objectTables['stepResult'] = TABLE_TESTRUN;
|
||||
$config->objectTables['priv'] = TABLE_PRIV;
|
||||
$config->objectTables['privlang'] = TABLE_PRIVLANG;
|
||||
$config->objectTables['privmanager'] = TABLE_PRIVMANAGER;
|
||||
$config->objectTables['privrelation'] = TABLE_PRIVRELATION;
|
||||
$config->objectTables['scene'] = TABLE_SCENE;
|
||||
|
||||
$config->newFeatures = array('introduction', 'tutorial', 'youngBlueTheme', 'visions');
|
||||
@@ -428,8 +444,8 @@ $config->pipelineTypeList = array('gitlab', 'gogs', 'gitea', 'jenkins', 'sonarqu
|
||||
|
||||
/* Program privs.*/
|
||||
$config->programPriv = new stdclass();
|
||||
$config->programPriv->noSprint = array('task', 'story', 'tree', 'project', 'execution', 'build', 'bug', 'testcase', 'testreport', 'doc', 'repo', 'stakeholder', 'projectrelease', 'requirement');
|
||||
$config->programPriv->scrum = array('story', 'requirement', 'productplan', 'tree', 'projectplan', 'projectstory', 'projectrelease', 'project', 'execution', 'build', 'bug', 'testcase', 'testreport', 'doc', 'repo', 'meeting', 'stakeholder', 'testtask');
|
||||
$config->programPriv->noSprint = array('task', 'story', 'tree', 'project', 'execution', 'projectbuild', 'bug', 'testcase', 'testreport', 'doc', 'repo', 'stakeholder', 'projectrelease', 'requirement');
|
||||
$config->programPriv->scrum = array('story', 'requirement', 'productplan', 'tree', 'projectplan', 'projectstory', 'projectrelease', 'project', 'execution', 'projectbuild', 'bug', 'testcase', 'testreport', 'doc', 'repo', 'meeting', 'stakeholder', 'testtask');
|
||||
$config->programPriv->waterfall = array_merge($config->programPriv->scrum, array('workestimation', 'durationestimation', 'budget', 'programplan', 'review', 'reviewissue', 'weekly', 'cm', 'milestone', 'design', 'issue', 'risk', 'opportunity', 'measrecord', 'auditplan', 'trainplan', 'gapanalysis', 'pssp', 'researchplan', 'researchreport'));
|
||||
$config->programPriv->agileplus = $config->programPriv->scrum;
|
||||
$config->programPriv->waterfallplus = $config->programPriv->waterfall;
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -647,7 +647,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(1,'feedback','adminView'),
|
||||
(1,'feedback','assignTo'),
|
||||
(1,'feedback','batchAssignTo'),
|
||||
(1,'feedback','batchChangeModule'),
|
||||
(1,'feedback','batchClose'),
|
||||
(1,'feedback','batchEdit'),
|
||||
(1,'feedback','batchReview'),
|
||||
@@ -1004,7 +1003,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(4,'feedback','adminView'),
|
||||
(4,'feedback','assignTo'),
|
||||
(4,'feedback','batchAssignTo'),
|
||||
(4,'feedback','batchChangeModule'),
|
||||
(4,'feedback','batchClose'),
|
||||
(4,'feedback','batchEdit'),
|
||||
(4,'feedback','batchReview'),
|
||||
@@ -1135,7 +1133,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(5,'feedback','adminView'),
|
||||
(5,'feedback','assignTo'),
|
||||
(5,'feedback','batchAssignTo'),
|
||||
(5,'feedback','batchChangeModule'),
|
||||
(5,'feedback','batchClose'),
|
||||
(5,'feedback','batchEdit'),
|
||||
(5,'feedback','batchReview'),
|
||||
|
||||
@@ -975,7 +975,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(1,'auditresult','showimport'),
|
||||
(1,'auditresult','unlink'),
|
||||
(1,'auditresult','view'),
|
||||
(1,'baseline','articleview'),
|
||||
(1,'baseline','catalog'),
|
||||
(1,'baseline','createTemplate'),
|
||||
(1,'baseline','delete'),
|
||||
@@ -1132,8 +1131,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(1,'measurement','editBasic'),
|
||||
(1,'measurement','editDerivation'),
|
||||
(1,'measurement','editTemplate'),
|
||||
(1,'measurement','execCrontabQueue'),
|
||||
(1,'measurement','initCrontabQueue'),
|
||||
(1,'measurement','searchMeas'),
|
||||
(1,'measurement','setSQL'),
|
||||
(1,'measurement','settips'),
|
||||
@@ -1287,7 +1284,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(1,'reviewissue','resolved'),
|
||||
(1,'reviewissue','updateStatus'),
|
||||
(1,'reviewissue','view'),
|
||||
(1,'reviewsetting','reviewer'),
|
||||
(1,'reviewsetting','version'),
|
||||
(1,'risk','activate'),
|
||||
(1,'risk','assignTo'),
|
||||
@@ -1489,7 +1485,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(2,'auditresult','showimport'),
|
||||
(2,'auditresult','unlink'),
|
||||
(2,'auditresult','view'),
|
||||
(2,'baseline','articleview'),
|
||||
(2,'baseline','catalog'),
|
||||
(2,'baseline','createTemplate'),
|
||||
(2,'baseline','editBook'),
|
||||
@@ -1642,7 +1637,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(2,'reviewissue','resolved'),
|
||||
(2,'reviewissue','updateStatus'),
|
||||
(2,'reviewissue','view'),
|
||||
(2,'reviewsetting','reviewer'),
|
||||
(2,'reviewsetting','version'),
|
||||
(2,'risk','activate'),
|
||||
(2,'risk','browse'),
|
||||
@@ -1784,7 +1778,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(3,'auditresult','showimport'),
|
||||
(3,'auditresult','unlink'),
|
||||
(3,'auditresult','view'),
|
||||
(3,'baseline','articleview'),
|
||||
(3,'baseline','catalog'),
|
||||
(3,'baseline','createTemplate'),
|
||||
(3,'baseline','editBook'),
|
||||
@@ -1924,7 +1917,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(3,'reviewissue','resolved'),
|
||||
(3,'reviewissue','updateStatus'),
|
||||
(3,'reviewissue','view'),
|
||||
(3,'reviewsetting','reviewer'),
|
||||
(3,'reviewsetting','version'),
|
||||
(3,'risk','activate'),
|
||||
(3,'risk','browse'),
|
||||
@@ -2011,7 +2003,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(4,'auditresult','showimport'),
|
||||
(4,'auditresult','unlink'),
|
||||
(4,'auditresult','view'),
|
||||
(4,'baseline','articleview'),
|
||||
(4,'baseline','catalog'),
|
||||
(4,'baseline','createTemplate'),
|
||||
(4,'baseline','editBook'),
|
||||
@@ -2194,7 +2185,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(4,'reviewissue','resolved'),
|
||||
(4,'reviewissue','updateStatus'),
|
||||
(4,'reviewissue','view'),
|
||||
(4,'reviewsetting','reviewer'),
|
||||
(4,'reviewsetting','version'),
|
||||
(4,'risk','activate'),
|
||||
(4,'risk','assignTo'),
|
||||
@@ -2341,7 +2331,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(5,'auditresult','showimport'),
|
||||
(5,'auditresult','unlink'),
|
||||
(5,'auditresult','view'),
|
||||
(5,'baseline','articleview'),
|
||||
(5,'baseline','catalog'),
|
||||
(5,'baseline','createTemplate'),
|
||||
(5,'baseline','editBook'),
|
||||
@@ -2394,8 +2383,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(5,'measurement','editBasic'),
|
||||
(5,'measurement','editDerivation'),
|
||||
(5,'measurement','editTemplate'),
|
||||
(5,'measurement','execCrontabQueue'),
|
||||
(5,'measurement','initCrontabQueue'),
|
||||
(5,'measurement','searchMeas'),
|
||||
(5,'measurement','template'),
|
||||
(5,'measurement','viewTemplate'),
|
||||
@@ -2521,7 +2508,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(5,'reviewissue','resolved'),
|
||||
(5,'reviewissue','updateStatus'),
|
||||
(5,'reviewissue','view'),
|
||||
(5,'reviewsetting','reviewer'),
|
||||
(5,'reviewsetting','version'),
|
||||
(5,'risk','activate'),
|
||||
(5,'risk','assignTo'),
|
||||
@@ -2622,7 +2608,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(6,'auditresult','showimport'),
|
||||
(6,'auditresult','unlink'),
|
||||
(6,'auditresult','view'),
|
||||
(6,'baseline','articleview'),
|
||||
(6,'baseline','catalog'),
|
||||
(6,'baseline','createTemplate'),
|
||||
(6,'baseline','editBook'),
|
||||
@@ -2785,7 +2770,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(6,'reviewissue','resolved'),
|
||||
(6,'reviewissue','updateStatus'),
|
||||
(6,'reviewissue','view'),
|
||||
(6,'reviewsetting','reviewer'),
|
||||
(6,'reviewsetting','version'),
|
||||
(6,'risk','activate'),
|
||||
(6,'risk','assignTo'),
|
||||
@@ -2889,7 +2873,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(7,'auditresult','showimport'),
|
||||
(7,'auditresult','unlink'),
|
||||
(7,'auditresult','view'),
|
||||
(7,'baseline','articleview'),
|
||||
(7,'baseline','catalog'),
|
||||
(7,'baseline','createTemplate'),
|
||||
(7,'baseline','editBook'),
|
||||
@@ -2954,8 +2937,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(7,'measurement','editBasic'),
|
||||
(7,'measurement','editDerivation'),
|
||||
(7,'measurement','editTemplate'),
|
||||
(7,'measurement','execCrontabQueue'),
|
||||
(7,'measurement','initCrontabQueue'),
|
||||
(7,'measurement','searchMeas'),
|
||||
(7,'measurement','template'),
|
||||
(7,'measurement','viewTemplate'),
|
||||
@@ -3069,7 +3050,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(7,'reviewissue','resolved'),
|
||||
(7,'reviewissue','updateStatus'),
|
||||
(7,'reviewissue','view'),
|
||||
(7,'reviewsetting','reviewer'),
|
||||
(7,'reviewsetting','version'),
|
||||
(7,'risk','activate'),
|
||||
(7,'risk','assignTo'),
|
||||
@@ -3168,7 +3148,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(8,'auditresult','showimport'),
|
||||
(8,'auditresult','unlink'),
|
||||
(8,'auditresult','view'),
|
||||
(8,'baseline','articleview'),
|
||||
(8,'baseline','catalog'),
|
||||
(8,'baseline','createTemplate'),
|
||||
(8,'baseline','editBook'),
|
||||
@@ -3328,7 +3307,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(8,'reviewissue','resolved'),
|
||||
(8,'reviewissue','updateStatus'),
|
||||
(8,'reviewissue','view'),
|
||||
(8,'reviewsetting','reviewer'),
|
||||
(8,'reviewsetting','version'),
|
||||
(8,'risk','activate'),
|
||||
(8,'risk','assignTo'),
|
||||
@@ -3516,7 +3494,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(9,'auditresult','showimport'),
|
||||
(9,'auditresult','unlink'),
|
||||
(9,'auditresult','view'),
|
||||
(9,'baseline','articleview'),
|
||||
(9,'baseline','catalog'),
|
||||
(9,'baseline','createTemplate'),
|
||||
(9,'baseline','delete'),
|
||||
@@ -3675,7 +3652,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(9,'reviewissue','resolved'),
|
||||
(9,'reviewissue','updateStatus'),
|
||||
(9,'reviewissue','view'),
|
||||
(9,'reviewsetting','reviewer'),
|
||||
(9,'reviewsetting','version'),
|
||||
(9,'risk','activate'),
|
||||
(9,'risk','assignTo'),
|
||||
|
||||
+46
-3
File diff suppressed because one or more lines are too long
@@ -61,7 +61,7 @@ $lang->my->menu = new stdclass();
|
||||
$lang->my->menu->index = array('link' => "$lang->dashboard|my|index");
|
||||
$lang->my->menu->calendar = array('link' => "$lang->calendar|my|calendar|", 'subModule' => 'todo', 'alias' => 'todo');
|
||||
$lang->my->menu->task = array('link' => "{$lang->task->common}|my|contribute|mode=task&type=assignedTo", 'subModule' => 'task');
|
||||
$lang->my->menu->contacts = array('link' => "$lang->contact|my|managecontacts|");
|
||||
$lang->my->menu->contacts = array('link' => "{$lang->contact->common}|my|managecontacts|");
|
||||
|
||||
global $config;
|
||||
if($config->edition != 'open') $lang->my->menu->effort = array('link' => 'Effort|effort|calendar|', 'exclude' => 'my-todo');
|
||||
|
||||
@@ -61,7 +61,7 @@ $lang->my->menu = new stdclass();
|
||||
$lang->my->menu->index = array('link' => "$lang->dashboard|my|index");
|
||||
$lang->my->menu->calendar = array('link' => "$lang->calendar|my|calendar|", 'subModule' => 'todo', 'alias' => 'todo');
|
||||
$lang->my->menu->task = array('link' => "{$lang->task->common}|my|contribute|mode=task&type=assignedTo", 'subModule' => 'task');
|
||||
$lang->my->menu->contacts = array('link' => "$lang->contact|my|managecontacts|");
|
||||
$lang->my->menu->contacts = array('link' => "{$lang->contact->common}|my|managecontacts|");
|
||||
|
||||
global $config;
|
||||
if($config->edition != 'open') $lang->my->menu->effort = array('link' => 'Effort|effort|calendar|', 'exclude' => 'my-todo');
|
||||
|
||||
@@ -61,7 +61,7 @@ $lang->my->menu = new stdclass();
|
||||
$lang->my->menu->index = array('link' => "$lang->dashboard|my|index");
|
||||
$lang->my->menu->calendar = array('link' => "$lang->calendar|my|calendar|", 'subModule' => 'todo', 'alias' => 'todo');
|
||||
$lang->my->menu->task = array('link' => "{$lang->task->common}|my|contribute|mode=task&type=assignedTo", 'subModule' => 'task');
|
||||
$lang->my->menu->contacts = array('link' => "$lang->contact|my|managecontacts|");
|
||||
$lang->my->menu->contacts = array('link' => "{$lang->contact->common}|my|managecontacts|");
|
||||
|
||||
global $config;
|
||||
if($config->edition != 'open') $lang->my->menu->effort = array('link' => 'Effort|effort|calendar|', 'exclude' => 'my-todo');
|
||||
|
||||
@@ -61,7 +61,7 @@ $lang->my->menu = new stdclass();
|
||||
$lang->my->menu->index = array('link' => "$lang->dashboard|my|index");
|
||||
$lang->my->menu->calendar = array('link' => "$lang->calendar|my|calendar|", 'subModule' => 'todo', 'alias' => 'todo');
|
||||
$lang->my->menu->task = array('link' => "{$lang->task->common}|my|contribute|mode=task&type=assignedTo", 'subModule' => 'task');
|
||||
$lang->my->menu->contacts = array('link' => "$lang->contact|my|managecontacts|");
|
||||
$lang->my->menu->contacts = array('link' => "{$lang->contact->common}|my|managecontacts|");
|
||||
|
||||
global $config;
|
||||
if($config->edition != 'open') $lang->my->menu->effort = array('link' => '日志|effort|calendar|', 'exclude' => 'my-todo');
|
||||
|
||||
@@ -82,7 +82,7 @@ $lang->resource->my->manageContacts = 'manageContacts';
|
||||
$lang->resource->my->deleteContacts = 'deleteContacts';
|
||||
$lang->resource->my->score = 'score';
|
||||
$lang->resource->my->team = 'team';
|
||||
$lang->resource->my->requirement = 'requirement';
|
||||
//$lang->resource->my->requirement = 'requirement';
|
||||
$lang->resource->my->story = 'story';
|
||||
$lang->resource->my->task = 'task';
|
||||
//$lang->resource->my->bug = 'bug';
|
||||
@@ -107,7 +107,7 @@ $lang->my->methodOrder[60] = 'deleteContacts';
|
||||
$lang->my->methodOrder[65] = 'score';
|
||||
$lang->my->methodOrder[70] = 'unbind';
|
||||
$lang->my->methodOrder[75] = 'team';
|
||||
$lang->my->methodOrder[80] = 'requirement';
|
||||
//$lang->my->methodOrder[80] = 'requirement';
|
||||
$lang->my->methodOrder[85] = 'story';
|
||||
$lang->my->methodOrder[90] = 'task';
|
||||
$lang->my->methodOrder[95] = 'bug';
|
||||
@@ -141,13 +141,11 @@ $lang->resource->personnel->accessible = 'accessible';
|
||||
$lang->resource->personnel->invest = 'invest';
|
||||
$lang->resource->personnel->whitelist = 'whitelist';
|
||||
$lang->resource->personnel->addWhitelist = 'addWhitelist';
|
||||
$lang->resource->personnel->unbindWhitelist = 'unbindWhitelist';
|
||||
|
||||
$lang->personnel->methodOrder[5] = 'accessible';
|
||||
$lang->personnel->methodOrder[10] = 'invest';
|
||||
$lang->personnel->methodOrder[15] = 'whitelist';
|
||||
$lang->personnel->methodOrder[20] = 'addWhitelist';
|
||||
$lang->personnel->methodOrder[25] = 'unbindWhitelist';
|
||||
|
||||
if($config->systemMode == 'ALM')
|
||||
{
|
||||
@@ -187,7 +185,6 @@ if($config->systemMode == 'ALM')
|
||||
// $lang->resource->project->testreport = 'testreport';
|
||||
$lang->resource->project->execution = 'execution';
|
||||
$lang->resource->project->export = 'export';
|
||||
$lang->resource->project->createGuide = 'createGuide';
|
||||
$lang->resource->project->updateOrder = 'updateOrder';
|
||||
$lang->resource->project->team = 'teamAction';
|
||||
$lang->resource->project->unlinkMember = 'unlinkMember';
|
||||
@@ -226,7 +223,6 @@ if($config->systemMode == 'ALM')
|
||||
$lang->project->methodOrder[160] = 'testreport';
|
||||
$lang->project->methodOrder[165] = 'execution';
|
||||
$lang->project->methodOrder[170] = 'export';
|
||||
$lang->project->methodOrder[175] = 'createGuide';
|
||||
$lang->project->methodOrder[180] = 'updateOrder';
|
||||
$lang->project->methodOrder[185] = 'team';
|
||||
$lang->project->methodOrder[190] = 'unlinkMember';
|
||||
@@ -319,7 +315,6 @@ $lang->resource->kanban->createSpace = 'createSpace';
|
||||
$lang->resource->kanban->editSpace = 'editSpace';
|
||||
$lang->resource->kanban->closeSpace = 'closeSpace';
|
||||
$lang->resource->kanban->deleteSpace = 'deleteSpace';
|
||||
$lang->resource->kanban->sortSpace = 'sortSpace';
|
||||
$lang->resource->kanban->create = 'create';
|
||||
$lang->resource->kanban->edit = 'edit';
|
||||
$lang->resource->kanban->view = 'view';
|
||||
@@ -327,7 +322,6 @@ $lang->resource->kanban->close = 'close';
|
||||
$lang->resource->kanban->delete = 'delete';
|
||||
$lang->resource->kanban->createRegion = 'createRegion';
|
||||
$lang->resource->kanban->editRegion = 'editRegion';
|
||||
$lang->resource->kanban->performable = 'performable';
|
||||
$lang->resource->kanban->sortRegion = 'sortRegion';
|
||||
$lang->resource->kanban->sortGroup = 'sortGroup';
|
||||
$lang->resource->kanban->deleteRegion = 'deleteRegion';
|
||||
@@ -354,22 +348,16 @@ $lang->resource->kanban->assigntoCard = 'assigntoCard';
|
||||
$lang->resource->kanban->deleteCard = 'deleteCard';
|
||||
$lang->resource->kanban->moveCard = 'moveCard';
|
||||
$lang->resource->kanban->setCardColor = 'setCardColor';
|
||||
$lang->resource->kanban->laneMove = 'laneMove';
|
||||
$lang->resource->kanban->viewArchivedColumn = 'viewArchivedColumn';
|
||||
$lang->resource->kanban->viewArchivedCard = 'viewArchivedCard';
|
||||
$lang->resource->kanban->restoreCard = 'restoreCard';
|
||||
$lang->resource->kanban->setLaneHeight = 'setLaneHeight';
|
||||
$lang->resource->kanban->setColumnWidth = 'setColumnWidth';
|
||||
$lang->resource->kanban->batchCreateCard = 'batchCreateCard';
|
||||
$lang->resource->kanban->import = 'import';
|
||||
$lang->resource->kanban->enableArchived = 'enableArchived';
|
||||
|
||||
$lang->kanban->methodOrder[5] = 'space';
|
||||
$lang->kanban->methodOrder[10] = 'createSpace';
|
||||
$lang->kanban->methodOrder[15] = 'editSpace';
|
||||
$lang->kanban->methodOrder[20] = 'closeSpace';
|
||||
$lang->kanban->methodOrder[25] = 'deleteSpace';
|
||||
$lang->kanban->methodOrder[30] = 'sortSpace';
|
||||
$lang->kanban->methodOrder[35] = 'create';
|
||||
$lang->kanban->methodOrder[40] = 'edit';
|
||||
$lang->kanban->methodOrder[45] = 'view';
|
||||
@@ -401,22 +389,16 @@ $lang->kanban->methodOrder[165] = 'deleteCard';
|
||||
$lang->kanban->methodOrder[170] = 'assigntoCard';
|
||||
$lang->kanban->methodOrder[175] = 'moveCard';
|
||||
$lang->kanban->methodOrder[180] = 'setCardColor';
|
||||
$lang->kanban->methodOrder[185] = 'laneMove';
|
||||
$lang->kanban->methodorder[190] = 'cardsSort';
|
||||
$lang->kanban->methodOrder[195] = 'viewArchivedColumn';
|
||||
$lang->kanban->methodorder[200] = 'viewArchivedCard';
|
||||
$lang->kanban->methodorder[205] = 'archiveColumn';
|
||||
$lang->kanban->methodorder[210] = 'restoreCard';
|
||||
$lang->kanban->methodorder[215] = 'setLaneHeight';
|
||||
$lang->kanban->methodorder[220] = 'setColumnWidth';
|
||||
$lang->kanban->methodOrder[225] = 'batchCreateCard';
|
||||
$lang->kanban->methodorder[230] = 'import';
|
||||
$lang->kanban->methodorder[235] = 'enableArchived';
|
||||
|
||||
/* Execution. */
|
||||
$lang->resource->execution = new stdclass();
|
||||
$lang->resource->execution->view = 'view';
|
||||
$lang->resource->execution->browse = 'browse';
|
||||
$lang->resource->execution->create = 'createExec';
|
||||
$lang->resource->execution->edit = 'editAction';
|
||||
$lang->resource->execution->batchedit = 'batchEditAction';
|
||||
@@ -474,7 +456,6 @@ if($config->edition != 'open') $lang->resource->execution->calendar = 'calendar'
|
||||
//$lang->execution->methodOrder[0] = 'index';
|
||||
//if($config->systemMode == 'classic') $lang->project->methodOrder[1] = 'list';
|
||||
$lang->execution->methodOrder[5] = 'view';
|
||||
$lang->execution->methodOrder[10] = 'browse';
|
||||
$lang->execution->methodOrder[15] = 'create';
|
||||
$lang->execution->methodOrder[20] = 'edit';
|
||||
$lang->execution->methodOrder[25] = 'batchedit';
|
||||
@@ -599,7 +580,6 @@ $lang->resource->doc->delete = 'delete';
|
||||
$lang->resource->doc->deleteFile = 'deleteFile';
|
||||
$lang->resource->doc->collect = 'collectAction';
|
||||
$lang->resource->doc->projectSpace = 'projectSpace';
|
||||
$lang->resource->doc->tableContents = 'teamSpace';
|
||||
$lang->resource->doc->showFiles = 'showFiles';
|
||||
$lang->resource->doc->addCatalog = 'addCatalog';
|
||||
$lang->resource->doc->editCatalog = 'editCatalog';
|
||||
@@ -621,7 +601,6 @@ $lang->doc->methodOrder[60] = 'delete';
|
||||
$lang->doc->methodOrder[65] = 'deleteFile';
|
||||
$lang->doc->methodOrder[70] = 'collect';
|
||||
$lang->doc->methodOrder[75] = 'projectSpace';
|
||||
$lang->doc->methodOrder[80] = 'tableContents';
|
||||
$lang->doc->methodOrder[85] = 'showFiles';
|
||||
$lang->doc->methodOrder[90] = 'addCatalog';
|
||||
$lang->doc->methodOrder[95] = 'editCatalog';
|
||||
@@ -630,19 +609,16 @@ $lang->doc->methodOrder[105] = 'displaySetting';
|
||||
|
||||
/* Mail. */
|
||||
$lang->resource->mail = new stdclass();
|
||||
$lang->resource->mail->index = 'index';
|
||||
$lang->resource->mail->detect = 'detectAction';
|
||||
$lang->resource->mail->edit = 'edit';
|
||||
$lang->resource->mail->save = 'saveAction';
|
||||
$lang->resource->mail->test = 'test';
|
||||
$lang->resource->mail->reset = 'resetAction';
|
||||
$lang->resource->mail->browse = 'browse';
|
||||
$lang->resource->mail->delete = 'delete';
|
||||
$lang->resource->mail->resend = 'resendAction';
|
||||
$lang->resource->mail->batchDelete = 'batchDelete';
|
||||
$lang->resource->mail->sendCloud = 'sendCloud';
|
||||
$lang->resource->mail->sendcloudUser = 'sendcloudUser';
|
||||
$lang->resource->mail->ztCloud = 'ztCloud';
|
||||
$lang->resource->mail->index = 'index';
|
||||
$lang->resource->mail->detect = 'detectAction';
|
||||
$lang->resource->mail->edit = 'edit';
|
||||
$lang->resource->mail->save = 'saveAction';
|
||||
$lang->resource->mail->test = 'test';
|
||||
$lang->resource->mail->reset = 'resetAction';
|
||||
$lang->resource->mail->browse = 'browse';
|
||||
$lang->resource->mail->delete = 'delete';
|
||||
$lang->resource->mail->resend = 'resendAction';
|
||||
$lang->resource->mail->batchDelete = 'batchDelete';
|
||||
|
||||
$lang->mail->methodOrder[5] = 'index';
|
||||
$lang->mail->methodOrder[10] = 'detect';
|
||||
@@ -654,21 +630,15 @@ $lang->mail->methodOrder[35] = 'browse';
|
||||
$lang->mail->methodOrder[40] = 'delete';
|
||||
$lang->mail->methodOrder[45] = 'batchDelete';
|
||||
$lang->mail->methodOrder[50] = 'resend';
|
||||
$lang->mail->methodOrder[55] = 'sendCloud';
|
||||
$lang->mail->methodOrder[60] = 'sendcloudUser';
|
||||
$lang->mail->methodOrder[65] = 'ztCloud';
|
||||
|
||||
/* Custom. */
|
||||
$lang->resource->custom = new stdclass();
|
||||
$lang->resource->custom->index = 'index';
|
||||
$lang->resource->custom->set = 'set';
|
||||
$lang->resource->custom->product = 'productName';
|
||||
$lang->resource->custom->execution = 'executionCommon';
|
||||
$lang->resource->custom->required = 'required';
|
||||
$lang->resource->custom->restore = 'restore';
|
||||
$lang->resource->custom->flow = 'flow';
|
||||
$lang->resource->custom->working = 'working';
|
||||
$lang->resource->custom->setPublic = 'setPublic';
|
||||
$lang->resource->custom->timezone = 'timezone';
|
||||
$lang->resource->custom->setStoryConcept = 'setStoryConcept';
|
||||
$lang->resource->custom->editStoryConcept = 'editStoryConcept';
|
||||
@@ -677,15 +647,12 @@ $lang->resource->custom->setDefaultConcept = 'setDefaultConcept';
|
||||
$lang->resource->custom->deleteStoryConcept = 'deleteStoryConcept';
|
||||
if($config->edition != 'open') $lang->resource->custom->libreoffice = 'libreOffice';
|
||||
|
||||
$lang->custom->methodOrder[5] = 'index';
|
||||
$lang->custom->methodOrder[10] = 'set';
|
||||
$lang->custom->methodOrder[15] = 'product';
|
||||
$lang->custom->methodOrder[20] = 'execution';
|
||||
$lang->custom->methodOrder[25] = 'required';
|
||||
$lang->custom->methodOrder[30] = 'restore';
|
||||
$lang->custom->methodOrder[35] = 'flow';
|
||||
$lang->custom->methodOrder[40] = 'working';
|
||||
$lang->custom->methodOrder[45] = 'setPublic';
|
||||
$lang->custom->methodOrder[50] = 'timezone';
|
||||
$lang->custom->methodOrder[55] = 'setStoryConcept';
|
||||
$lang->custom->methodOrder[60] = 'editStoryConcept';
|
||||
@@ -701,13 +668,11 @@ $lang->datatable->methodOrder[5] = 'setGlobal';
|
||||
|
||||
/* Company. */
|
||||
$lang->resource->company = new stdclass();
|
||||
$lang->resource->company->index = 'index';
|
||||
$lang->resource->company->browse = 'browse';
|
||||
$lang->resource->company->edit = 'edit';
|
||||
$lang->resource->company->view = 'view';
|
||||
$lang->resource->company->dynamic= 'dynamic';
|
||||
|
||||
$lang->company->methodOrder[0] = 'index';
|
||||
$lang->company->methodOrder[5] = 'browse';
|
||||
$lang->company->methodOrder[15] = 'edit';
|
||||
$lang->company->methodOrder[25] = 'dynamic';
|
||||
@@ -763,7 +728,6 @@ $lang->resource->user->task = 'task';
|
||||
//$lang->resource->user->testCase = 'testCase';
|
||||
$lang->resource->user->execution = 'execution';
|
||||
$lang->resource->user->dynamic = 'dynamic';
|
||||
$lang->resource->user->cropAvatar = 'cropAvatar';
|
||||
$lang->resource->user->profile = 'profile';
|
||||
$lang->resource->user->batchEdit = 'batchEdit';
|
||||
$lang->resource->user->unbind = 'unbind';
|
||||
@@ -780,7 +744,6 @@ $lang->user->methodOrder[35] = 'task';
|
||||
$lang->user->methodOrder[40] = 'bug';
|
||||
$lang->user->methodOrder[45] = 'project';
|
||||
$lang->user->methodOrder[60] = 'dynamic';
|
||||
$lang->user->methodOrder[65] = 'cropAvatar';
|
||||
$lang->user->methodOrder[70] = 'profile';
|
||||
$lang->user->methodOrder[75] = 'batchEdit';
|
||||
$lang->user->methodOrder[80] = 'unbind';
|
||||
@@ -824,20 +787,16 @@ $lang->search->methodOrder[35] = 'buildIndex';
|
||||
/* Admin. */
|
||||
$lang->resource->admin = new stdclass();
|
||||
$lang->resource->admin->index = 'index';
|
||||
$lang->resource->admin->checkDB = 'checkDB';
|
||||
$lang->resource->admin->safe = 'safeIndex';
|
||||
$lang->resource->admin->checkWeak = 'checkWeak';
|
||||
$lang->resource->admin->sso = 'ssoAction';
|
||||
$lang->resource->admin->register = 'register';
|
||||
$lang->resource->admin->ztCompany = 'ztCompany';
|
||||
|
||||
$lang->admin->methodOrder[0] = 'index';
|
||||
$lang->admin->methodOrder[5] = 'checkDB';
|
||||
$lang->admin->methodOrder[10] = 'safeIndex';
|
||||
$lang->admin->methodOrder[15] = 'checkWeak';
|
||||
$lang->admin->methodOrder[20] = 'sso';
|
||||
$lang->admin->methodOrder[25] = 'register';
|
||||
$lang->admin->methodOrder[30] = 'ztCompany';
|
||||
|
||||
if(isset($config->xuanxuan))
|
||||
{
|
||||
@@ -983,7 +942,6 @@ if($config->edition == 'biz' or $config->edition == 'max')
|
||||
|
||||
/* Feedback. */
|
||||
$lang->resource->feedback = new stdclass();
|
||||
$lang->resource->feedback->index = 'index';
|
||||
$lang->resource->feedback->create = 'create';
|
||||
$lang->resource->feedback->edit = 'edit';
|
||||
$lang->resource->feedback->browse = 'browse';
|
||||
@@ -1002,7 +960,6 @@ if($config->edition == 'biz' or $config->edition == 'max')
|
||||
|
||||
/* Ticket */
|
||||
$lang->resource->ticket = new stdclass();
|
||||
$lang->resource->ticket->index = 'index';
|
||||
$lang->resource->ticket->create = 'create';
|
||||
$lang->resource->ticket->edit = 'edit';
|
||||
$lang->resource->ticket->view = 'view';
|
||||
@@ -1052,17 +1009,17 @@ if($config->edition == 'biz' or $config->edition == 'max')
|
||||
$lang->attend->methodOrder[85] = 'edit';
|
||||
|
||||
/* Holiday */
|
||||
$lang->resource->holiday = new stdclass();
|
||||
$lang->resource->holiday->create = 'createAction';
|
||||
$lang->resource->holiday->edit = 'editAction';
|
||||
$lang->resource->holiday->delete = 'deleteAction';
|
||||
//$lang->resource->holiday = new stdclass();
|
||||
//$lang->resource->holiday->create = 'createAction';
|
||||
//$lang->resource->holiday->edit = 'editAction';
|
||||
//$lang->resource->holiday->delete = 'deleteAction';
|
||||
|
||||
$lang->resource->holiday->browse = 'browse';
|
||||
//$lang->resource->holiday->browse = 'browse';
|
||||
|
||||
$lang->holiday->methodOrder[0] = 'browse';
|
||||
$lang->holiday->methodOrder[5] = 'create';
|
||||
$lang->holiday->methodOrder[10] = 'edit';
|
||||
$lang->holiday->methodOrder[15] = 'delete';
|
||||
//$lang->holiday->methodOrder[0] = 'browse';
|
||||
//$lang->holiday->methodOrder[5] = 'create';
|
||||
//$lang->holiday->methodOrder[10] = 'edit';
|
||||
//$lang->holiday->methodOrder[15] = 'delete';
|
||||
|
||||
/* Leave */
|
||||
$lang->resource->leave = new stdclass();
|
||||
@@ -1384,7 +1341,6 @@ if($config->edition == 'biz' or $config->edition == 'max')
|
||||
$lang->workflowrule->methodOrder[20] = 'view';
|
||||
$lang->workflowrule->methodOrder[25] = 'delete';
|
||||
|
||||
$lang->resource->workflow->browse = 'browseAction';
|
||||
$lang->resource->workflow->release = 'releaseAction';
|
||||
$lang->resource->workflow->deactivate = 'deactivateAction';
|
||||
$lang->resource->workflow->activate = 'activateAction';
|
||||
|
||||
@@ -51,6 +51,7 @@ $config->action->objectNameFields['repo'] = 'name';
|
||||
$config->action->objectNameFields['dataview'] = 'name';
|
||||
$config->action->objectNameFields['zahost'] = 'name';
|
||||
$config->action->objectNameFields['zanode'] = 'name';
|
||||
$config->action->objectNameFields['privlang'] = 'name';
|
||||
$config->action->objectNameFields['scene'] = 'title';
|
||||
|
||||
$config->action->commonImgSize = 870;
|
||||
|
||||
@@ -45,6 +45,7 @@ $lang->action->create = 'Kommentar hinzufügen';
|
||||
$lang->action->comment = 'Kommentar';
|
||||
$lang->action->byQuery = 'Search';
|
||||
|
||||
$lang->action->trashAction = 'Recycle List';
|
||||
$lang->action->undeleteAction = 'Reset Data';
|
||||
$lang->action->hideOneAction = 'Hide Data';
|
||||
|
||||
@@ -159,6 +160,7 @@ $lang->action->objectTypes['stage'] = 'Stage';
|
||||
$lang->action->objectTypes['patch'] = 'Patch';
|
||||
$lang->action->objectTypes['repo'] = 'Repo';
|
||||
$lang->action->objectTypes['dataview'] = 'Data View';
|
||||
$lang->action->objectTypes['privlang'] = 'Priv';
|
||||
$lang->action->objectTypes['scene'] = 'Scene';
|
||||
|
||||
/* Used to describe operation history. */
|
||||
|
||||
@@ -45,6 +45,7 @@ $lang->action->create = 'Add Comment';
|
||||
$lang->action->comment = 'Comment';
|
||||
$lang->action->byQuery = 'Search';
|
||||
|
||||
$lang->action->trashAction = 'Recycle List';
|
||||
$lang->action->undeleteAction = 'Reset Data';
|
||||
$lang->action->hideOneAction = 'Hide Data';
|
||||
|
||||
@@ -159,6 +160,7 @@ $lang->action->objectTypes['stage'] = 'Stage';
|
||||
$lang->action->objectTypes['patch'] = 'Patch';
|
||||
$lang->action->objectTypes['repo'] = 'Repo';
|
||||
$lang->action->objectTypes['dataview'] = 'Data View';
|
||||
$lang->action->objectTypes['privlang'] = 'Priv';
|
||||
$lang->action->objectTypes['scene'] = 'Scene';
|
||||
|
||||
/* Used to describe operation history. */
|
||||
|
||||
@@ -45,6 +45,7 @@ $lang->action->create = 'Ajouter commentaire';
|
||||
$lang->action->comment = 'Commentaire';
|
||||
$lang->action->byQuery = 'Search';
|
||||
|
||||
$lang->action->trashAction = 'Recycle List';
|
||||
$lang->action->undeleteAction = 'Reset Data';
|
||||
$lang->action->hideOneAction = 'Hide Data';
|
||||
|
||||
@@ -159,6 +160,7 @@ $lang->action->objectTypes['stage'] = 'Stage';
|
||||
$lang->action->objectTypes['patch'] = 'Patch';
|
||||
$lang->action->objectTypes['repo'] = 'Repo';
|
||||
$lang->action->objectTypes['dataview'] = 'Data View';
|
||||
$lang->action->objectTypes['privlang'] = 'Priv';
|
||||
$lang->action->objectTypes['scene'] = 'Scene';
|
||||
|
||||
/* Used to describe operation history. */
|
||||
|
||||
@@ -45,6 +45,7 @@ $lang->action->create = '添加备注';
|
||||
$lang->action->comment = '备注';
|
||||
$lang->action->byQuery = '搜索';
|
||||
|
||||
$lang->action->trashAction = '回收站列表';
|
||||
$lang->action->undeleteAction = '还原数据';
|
||||
$lang->action->hideOneAction = '隐藏数据';
|
||||
|
||||
@@ -159,9 +160,9 @@ $lang->action->objectTypes['stage'] = '阶段';
|
||||
$lang->action->objectTypes['patch'] = '补丁';
|
||||
$lang->action->objectTypes['repo'] = '代码库';
|
||||
$lang->action->objectTypes['dataview'] = '中间表';
|
||||
$lang->action->objectTypes['privlang'] = '权限';
|
||||
$lang->action->objectTypes['scene'] = '场景';
|
||||
|
||||
|
||||
/* 用来描述操作历史记录。*/
|
||||
$lang->action->desc = new stdclass();
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> by <strong>$actor</strong>。' . "\n";
|
||||
|
||||
+12
-1
@@ -1424,7 +1424,6 @@ class actionModel extends model
|
||||
{
|
||||
$objectName = array();
|
||||
$relatedProject = array();
|
||||
|
||||
if(strpos(",{$this->config->action->needGetProjectType},", ",{$objectType},") !== false)
|
||||
{
|
||||
$objectInfo = $this->dao->select("id, project, $field AS name")->from($table)->where('id')->in($objectIdList)->fetchAll();
|
||||
@@ -1480,6 +1479,10 @@ class actionModel extends model
|
||||
$objectName = $this->dao->select("id,name")->from(TABLE_BRANCH)->where('id')->in($objectIdList)->fetchPairs();
|
||||
if(in_array(BRANCH_MAIN, $objectIdList)) $objectName[BRANCH_MAIN] = $this->lang->branch->main;
|
||||
}
|
||||
elseif($objectType == 'privlang')
|
||||
{
|
||||
$objectName = $this->dao->select("objectID AS id, $field AS name")->from($table)->where('objectID')->in($objectIdList)->andWhere('objectType')->eq('priv')->fetchPairs();
|
||||
}
|
||||
else
|
||||
{
|
||||
$objectName = $this->dao->select("id, $field AS name")->from($table)->where('id')->in($objectIdList)->fetchPairs();
|
||||
@@ -1713,6 +1716,14 @@ class actionModel extends model
|
||||
if($action->project) $action->objectLink = common::hasPriv('project', 'team') ? helper::createLink('project', 'team', 'projectID=' . $action->project) : '';
|
||||
if($action->execution) $action->objectLink = common::hasPriv('execution', 'team') ? helper::createLink('execution', 'team', 'executionID=' . $action->execution) : '';
|
||||
}
|
||||
elseif($action->objectType == 'privpackage')
|
||||
{
|
||||
$action->objectLink = '';
|
||||
}
|
||||
elseif($action->objectType == 'privlang')
|
||||
{
|
||||
$action->objectLink = '';
|
||||
}
|
||||
|
||||
if($action->objectType == 'stakeholder' and $action->project == 0) $action->objectLink = '';
|
||||
|
||||
|
||||
@@ -205,23 +205,6 @@ class admin extends control
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check all tables.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function checkDB()
|
||||
{
|
||||
$tables = $this->dbh->query("show full tables where Table_Type != 'VIEW'")->fetchAll(PDO::FETCH_ASSOC);
|
||||
foreach($tables as $table)
|
||||
{
|
||||
$tableName = current($table);
|
||||
$result = $this->dbh->query("REPAIR TABLE $tableName")->fetch();
|
||||
echo "Repairing TABLE: " . $result->Table . (defined('IN_SHELL') ? "\t" : " ") . $result->Msg_type . ":" . $result->Msg_text . (defined('IN_SHELL') ? "\n" : "<br />\n");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Account safe.
|
||||
*
|
||||
|
||||
@@ -10,10 +10,9 @@
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->admin->index = 'Admin Home';
|
||||
$lang->admin->checkDB = 'Datenbank prüfen';
|
||||
$lang->admin->sso = 'SSO';
|
||||
$lang->admin->ssoAction = 'Link Zdoo';
|
||||
$lang->admin->safeIndex = 'Sicherheit';
|
||||
$lang->admin->safeIndex = 'Password Security Setting';
|
||||
$lang->admin->checkWeak = 'Schwache Passwörter prüfen';
|
||||
$lang->admin->certifyMobile = 'Prüfen Sie die Mobilnummer';
|
||||
$lang->admin->certifyEmail = 'Prüfen Sie die Emailadresse';
|
||||
|
||||
@@ -10,10 +10,9 @@
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->admin->index = 'Admin Home';
|
||||
$lang->admin->checkDB = 'Check Database';
|
||||
$lang->admin->sso = 'Zdoo';
|
||||
$lang->admin->ssoAction = 'Link Zdoo';
|
||||
$lang->admin->safeIndex = 'Security';
|
||||
$lang->admin->safeIndex = 'Password Security Setting';
|
||||
$lang->admin->checkWeak = 'Check Weak Password';
|
||||
$lang->admin->certifyMobile = 'Verify your cellphone';
|
||||
$lang->admin->certifyEmail = 'Verify your Email';
|
||||
|
||||
@@ -10,10 +10,9 @@
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->admin->index = 'Admin Home';
|
||||
$lang->admin->checkDB = 'Check Database';
|
||||
$lang->admin->sso = 'Zdoo';
|
||||
$lang->admin->ssoAction = 'Link Zdoo';
|
||||
$lang->admin->safeIndex = 'Sécurité';
|
||||
$lang->admin->safeIndex = 'Password Security Setting';
|
||||
$lang->admin->checkWeak = 'Contrôle niveau de sécurité des mots de passe';
|
||||
$lang->admin->certifyMobile = 'Vérifier votre smartphone';
|
||||
$lang->admin->certifyEmail = 'Vérifier votre Email';
|
||||
|
||||
@@ -10,10 +10,9 @@
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->admin->index = '后台管理首页';
|
||||
$lang->admin->checkDB = '检查数据库';
|
||||
$lang->admin->sso = 'ZDOO集成';
|
||||
$lang->admin->ssoAction = 'ZDOO集成';
|
||||
$lang->admin->safeIndex = '安全';
|
||||
$lang->admin->safeIndex = '密码安全设置';
|
||||
$lang->admin->checkWeak = '弱口令检查';
|
||||
$lang->admin->certifyMobile = '认证手机';
|
||||
$lang->admin->certifyEmail = '认证邮箱';
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
$lang->backup->common = 'Sicherung';
|
||||
$lang->backup->index = 'Start';
|
||||
$lang->backup->index = 'Backup List';
|
||||
$lang->backup->history = 'Verlauf';
|
||||
$lang->backup->delete = 'Löschen';
|
||||
$lang->backup->backup = 'Sichern';
|
||||
@@ -10,6 +10,7 @@ $lang->backup->changeAB = 'Bearbeiten';
|
||||
$lang->backup->rmPHPHeader = 'Remove PHP header';
|
||||
$lang->backup->setting = 'Settings';
|
||||
|
||||
$lang->backup->restoreAction = 'Restore Backup';
|
||||
$lang->backup->settingAction = 'Backup Settings';
|
||||
|
||||
$lang->backup->time = 'Datum';
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
$lang->backup->common = 'Backup';
|
||||
$lang->backup->index = 'Backup Home';
|
||||
$lang->backup->index = 'Backup List';
|
||||
$lang->backup->history = 'History';
|
||||
$lang->backup->delete = 'Delete Backup';
|
||||
$lang->backup->backup = 'Backup';
|
||||
@@ -10,6 +10,7 @@ $lang->backup->changeAB = 'Edit';
|
||||
$lang->backup->rmPHPHeader = 'Remove PHP header';
|
||||
$lang->backup->setting = 'Settings';
|
||||
|
||||
$lang->backup->restoreAction = 'Restore Backup';
|
||||
$lang->backup->settingAction = 'Backup Settings';
|
||||
|
||||
$lang->backup->time = 'Date';
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
<?php
|
||||
$lang->backup->common = 'Backup';
|
||||
$lang->backup->index = 'Accueil Backup';
|
||||
$lang->backup->index = 'Backup Home';
|
||||
$lang->backup->history = 'Historique';
|
||||
$lang->backup->delete = 'Suppression Backup';
|
||||
$lang->backup->backup = 'Backup';
|
||||
$lang->backup->restore = 'Restaurer';
|
||||
$lang->backup->restore = 'Restore';
|
||||
$lang->backup->change = 'Editer Expiration';
|
||||
$lang->backup->changeAB = 'Editer';
|
||||
$lang->backup->rmPHPHeader = 'Enlever PHP header';
|
||||
$lang->backup->setting = 'Paramétrage';
|
||||
|
||||
$lang->backup->restoreAction = 'Restore Backup';
|
||||
$lang->backup->settingAction = 'Backup Settings';
|
||||
|
||||
$lang->backup->time = 'Date';
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
$lang->backup->common = '备份';
|
||||
$lang->backup->index = '备份首页';
|
||||
$lang->backup->index = '备份列表';
|
||||
$lang->backup->history = '备份历史';
|
||||
$lang->backup->delete = '删除备份';
|
||||
$lang->backup->backup = '开始备份';
|
||||
@@ -10,6 +10,7 @@ $lang->backup->changeAB = '修改';
|
||||
$lang->backup->rmPHPHeader = '去除安全设置';
|
||||
$lang->backup->setting = '设置';
|
||||
|
||||
$lang->backup->restoreAction = '还原备份';
|
||||
$lang->backup->settingAction = '备份设置';
|
||||
|
||||
$lang->backup->time = '备份时间';
|
||||
|
||||
@@ -1929,7 +1929,7 @@ class block extends control
|
||||
|
||||
foreach($objects as $k => $task)
|
||||
{
|
||||
if(in_array($task->status, array('closed', 'cancel', 'pause'))) unset($objects[$k]);
|
||||
if(in_array($task->status, array('closed', 'cancel'))) unset($objects[$k]);
|
||||
}
|
||||
if($limitCount > 0) $objects = array_slice($objects, 0, $limitCount);
|
||||
}
|
||||
|
||||
@@ -176,7 +176,7 @@ class blockModel extends model
|
||||
->markRight(1)
|
||||
->andWhere('t1.deleted')->eq('0')
|
||||
->andWhere('t3.deleted')->eq('0')
|
||||
->andWhere('t1.status')->notin('closed,cancel,pause')
|
||||
->andWhere('t1.status')->notin('closed,cancel')
|
||||
->beginIF(!$this->app->user->admin)->andWhere('t1.execution')->in($this->app->user->view->sprints)->fi()
|
||||
->beginIF($this->config->vision)->andWhere('t1.vision')->eq($this->config->vision)->fi()
|
||||
->beginIF($this->config->vision)->andWhere('t3.vision')->eq($this->config->vision)->fi()
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
$appid = isset($_GET['entry']) ? "class='app-btn' data-id='{$this->get->entry}'" : '';
|
||||
$buildViewLink = $this->createLink('build', 'view', "buildID={$build->id}");
|
||||
$productViewLink = $this->createLink('product', 'browse', "productID={$build->product}");
|
||||
$projectViewLink = $this->createLink('project', 'build', "projectID={$build->project}");
|
||||
$projectViewLink = $this->createLink('projectbuild', 'browse', "projectID={$build->project}");
|
||||
?>
|
||||
<tr <?php echo $appid?>>
|
||||
<td class='text-center'><?php echo sprintf('%03d', $build->id);?></td>
|
||||
|
||||
@@ -397,7 +397,7 @@ class build extends control
|
||||
return $this->send($response);
|
||||
}
|
||||
|
||||
$link = $this->app->tab == 'project' ? $this->createLink('project', 'build', "projectID=$build->project") : $this->createLink('execution', 'build', "executionID=$build->execution");
|
||||
$link = $this->app->tab == 'project' ? $this->createLink('projectbuild', 'browse', "projectID=$build->project") : $this->createLink('execution', 'build', "executionID=$build->execution");
|
||||
if(defined('RUN_MODE') && RUN_MODE == 'api') return $this->send(array('status' => 'success'));
|
||||
return print(js::locate($link, 'parent'));
|
||||
}
|
||||
|
||||
@@ -794,7 +794,7 @@ class buildModel extends model
|
||||
global $app;
|
||||
$tab = $app->tab;
|
||||
|
||||
$module = $build->execution ? 'build' : 'projectbuild';
|
||||
$module = $this->app->tab == 'project' ? 'projectbuild' : 'build';
|
||||
if($type == 'browse')
|
||||
{
|
||||
$executionID = $tab == 'execution' ? $extraParams['executionID'] : $build->execution;
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
<?php echo html::submitButton($lang->build->linkBug, '', 'btn btn-secondary');?>
|
||||
</div>
|
||||
<div class="btn-toolbar">
|
||||
<?php echo html::a(inlink('view', "buildID={$build->id}&type=bug") . "#app={$app->tab}", $lang->goback, '', "class='btn'");?>
|
||||
<?php echo html::a($this->createLink(($this->app->tab == 'project' ? 'projectbuild' : 'build'), 'view', "buildID={$build->id}&type=bug") . "#app={$app->tab}", $lang->goback, '', "class='btn'");?>
|
||||
</div>
|
||||
<div class='table-statistic'></div>
|
||||
<?php $pager->show('right', 'pagerjs');?>
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
<?php echo html::submitButton($lang->build->linkStory, '', 'btn btn-secondary');?>
|
||||
</div>
|
||||
<div class="btn-toolbar">
|
||||
<?php echo html::a(inlink('view', "buildID={$build->id}&type=story") . "#app={$app->tab}", $lang->goback, '', "class='btn'");?>
|
||||
<?php echo html::a($this->createLink(($this->app->tab == 'project' ? 'projectbuild' : 'build'), 'view', "buildID={$build->id}&type=story") . "#app={$app->tab}", $lang->goback, '', "class='btn'");?>
|
||||
</div>
|
||||
<div class='table-statistic'></div>
|
||||
<?php $pager->show('right', 'pagerjs');?>
|
||||
|
||||
@@ -58,7 +58,7 @@ tbody tr td:first-child input {display: none;}
|
||||
</div>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<?php $module = $build->execution ? 'build' : 'projectbuild';?>
|
||||
<?php $module = $this->app->tab == 'project' ? 'projectbuild' : 'build';?>
|
||||
<div id='mainContent' class='main-content'>
|
||||
<div class='tabs' id='tabsNav'>
|
||||
<?php $countStories = count($stories); $countBugs = count($bugs); $countGeneratedBugs = count($generatedBugs);?>
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
$lang->caselib->common = 'Case Library';
|
||||
$lang->caselib->all = 'All Case Libraries';
|
||||
|
||||
$lang->caselib->index = "Library Home";
|
||||
$lang->caselib->create = "Create Case Library";
|
||||
$lang->caselib->edit = 'Edit Case Library';
|
||||
$lang->caselib->browse = 'View Cases in Library';
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
$lang->caselib->common = 'Case Library';
|
||||
$lang->caselib->all = 'All Case Libraries';
|
||||
|
||||
$lang->caselib->index = "Library Home";
|
||||
$lang->caselib->create = "Create Case Library";
|
||||
$lang->caselib->edit = 'Edit Case Library';
|
||||
$lang->caselib->browse = 'View Cases in Library';
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
$lang->caselib->common = 'Case Library';
|
||||
$lang->caselib->all = 'All Case Libraries';
|
||||
|
||||
$lang->caselib->index = "Accueil Library";
|
||||
$lang->caselib->create = "Créer une Library";
|
||||
$lang->caselib->edit = 'Editer Library';
|
||||
$lang->caselib->browse = 'Voir CasTests dans Library';
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
$lang->caselib->common = '用例库';
|
||||
$lang->caselib->all = '所有用例库';
|
||||
|
||||
$lang->caselib->index = "用例库首页";
|
||||
$lang->caselib->create = "创建用例库";
|
||||
$lang->caselib->edit = '编辑用例库';
|
||||
$lang->caselib->browse = '浏览用例库';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
$lang->ci->common = 'CI';
|
||||
$lang->ci->common = 'TA';
|
||||
$lang->ci->commitResult = 'Interface: Commit Test Result.';
|
||||
$lang->ci->checkCompileStatus = 'Interface: Fetch Test Result.';
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
$lang->ci->common = 'CI';
|
||||
$lang->ci->common = 'TA';
|
||||
$lang->ci->commitResult = 'Interface: Commit Test Result.';
|
||||
$lang->ci->checkCompileStatus = 'Interface: Fetch Test Result.';
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
$lang->ci->common = 'CI';
|
||||
$lang->ci->common = 'TA';
|
||||
$lang->ci->commitResult = 'Interface validation des r閟ultats de tests.';
|
||||
$lang->ci->checkCompileStatus = 'Interface: Fetch Test Result.';
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
$lang->ci->common = 'CI';
|
||||
$lang->ci->common = 'TA';
|
||||
$lang->ci->commitResult = 'Interface: Commit Test Result.';
|
||||
|
||||
$lang->ci->job = 'Job';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
$lang->ci->common = '持续集成';
|
||||
$lang->ci->common = '自动化测试';
|
||||
$lang->ci->commitResult = '接口:提交测试结果';
|
||||
$lang->ci->checkCompileStatus = '接口:获取测试结果';
|
||||
|
||||
|
||||
@@ -93,8 +93,52 @@ $lang->app = new stdclass();
|
||||
$lang->zahost = new stdclass();
|
||||
$lang->zanode = new stdclass();
|
||||
$lang->holiday = new stdclass();
|
||||
$lang->contact = new stdclass();
|
||||
$lang->dimension = new stdclass();
|
||||
|
||||
$lang->programstakeholder = new stdclass();
|
||||
$lang->researchplan = new stdclass();
|
||||
$lang->workestimation = new stdclass();
|
||||
$lang->gapanalysis = new stdclass();
|
||||
$lang->executionview = new stdclass();
|
||||
$lang->managespace = new stdclass();
|
||||
$lang->managespace = new stdclass();
|
||||
$lang->systemteam = new stdclass();
|
||||
$lang->systemschedule = new stdclass();
|
||||
$lang->systemeffort = new stdclass();
|
||||
$lang->systemdynamic = new stdclass();
|
||||
$lang->systemcompany = new stdclass();
|
||||
$lang->pipeline = new stdclass();
|
||||
$lang->devopssetting = new stdclass();
|
||||
$lang->featureswitch = new stdclass();
|
||||
$lang->importdata = new stdclass();
|
||||
$lang->systemsetting = new stdclass();
|
||||
$lang->staffmanage = new stdclass();
|
||||
$lang->modelconfig = new stdclass();
|
||||
$lang->featureconfig = new stdclass();
|
||||
$lang->doctemplate = new stdclass();
|
||||
$lang->notifysetting = new stdclass();
|
||||
$lang->bidesign = new stdclass();
|
||||
$lang->personalsettings = new stdclass();
|
||||
$lang->projectsettings = new stdclass();
|
||||
$lang->dataaccess = new stdclass();
|
||||
$lang->executiongantt = new stdclass();
|
||||
$lang->executionkanban = new stdclass();
|
||||
$lang->executionburn = new stdclass();
|
||||
$lang->executioncfd = new stdclass();
|
||||
$lang->executionstory = new stdclass();
|
||||
$lang->executionqa = new stdclass();
|
||||
$lang->executionsettings = new stdclass();
|
||||
$lang->generalcomment = new stdclass();
|
||||
$lang->generalping = new stdclass();
|
||||
$lang->generaltemplate = new stdclass();
|
||||
$lang->generaleffort = new stdclass();
|
||||
$lang->productsettings = new stdclass();
|
||||
$lang->projectreview = new stdclass();
|
||||
$lang->projecttrack = new stdclass();
|
||||
$lang->projectqa = new stdclass();
|
||||
$lang->holidayseason = new stdclass();
|
||||
|
||||
$lang->projectbuild = new stdclass();
|
||||
$lang->projectrelease = new stdclass();
|
||||
$lang->projectstory = new stdclass();
|
||||
|
||||
@@ -224,6 +224,37 @@ $lang->review->common = 'Review';
|
||||
$lang->zahost->common = 'ZAhost';
|
||||
$lang->zanode->common = 'ZAnode';
|
||||
$lang->dimension->common = 'Dimension';
|
||||
$lang->contact->common = 'Contacts';
|
||||
|
||||
$lang->programstakeholder->common = 'Stakeholder';
|
||||
$lang->featureswitch->common = 'Features On/Off';
|
||||
$lang->importdata->common = 'Import data';
|
||||
$lang->systemsetting->common = 'System setting';
|
||||
$lang->staffmanage->common = 'User management';
|
||||
$lang->modelconfig->common = 'Pattern setting';
|
||||
$lang->featureconfig->common = 'Features config';
|
||||
$lang->doctemplate->common = 'Doc template';
|
||||
$lang->notifysetting->common = 'Notification';
|
||||
$lang->bidesign->common = 'BI design';
|
||||
$lang->personalsettings->common = 'Personal setting ';
|
||||
$lang->projectsettings->common = 'Setting';
|
||||
$lang->dataaccess->common = 'Data permission';
|
||||
$lang->executiongantt->common = 'Gantt chart';
|
||||
$lang->executionkanban->common = 'Kanban';
|
||||
$lang->executionburn->common = 'Burndown chart';
|
||||
$lang->executioncfd->common = 'Cumulative Flow Diagram';
|
||||
$lang->executionstory->common = 'Story';
|
||||
$lang->executionqa->common = 'QA';
|
||||
$lang->executionsettings->common = 'Setting';
|
||||
$lang->generalcomment->common = 'Comment';
|
||||
$lang->generalping->common = 'Timeout prevention';
|
||||
$lang->generaltemplate->common = 'Template';
|
||||
$lang->generaleffort->common = 'General log';
|
||||
$lang->productsettings->common = 'Product setting';
|
||||
$lang->projectreview->common = 'Review';
|
||||
$lang->projecttrack->common = 'Matrix';
|
||||
$lang->projectqa->common = 'QA';
|
||||
$lang->holidayseason->common = 'Holiday';
|
||||
|
||||
$lang->personnel->common = 'Member';
|
||||
$lang->personnel->invest = 'Investment';
|
||||
@@ -240,11 +271,22 @@ $lang->productplan->shortCommon = 'Plan';
|
||||
$lang->score->shortCommon = 'Score';
|
||||
$lang->testreport->shortCommon = 'Report';
|
||||
$lang->qa->shortCommon = 'QA';
|
||||
$lang->researchplan->common = 'Research';
|
||||
$lang->workestimation->common = 'Estimation';
|
||||
$lang->gapanalysis->common = 'Training';
|
||||
$lang->executionview->common = 'View';
|
||||
$lang->managespace->common = 'Space management';
|
||||
$lang->systemteam->common = 'System team';
|
||||
$lang->systemschedule->common = 'System calendar';
|
||||
$lang->systemeffort->common = 'System effort';
|
||||
$lang->systemdynamic->common = 'System dynamic';
|
||||
$lang->systemcompany->common = 'System company';
|
||||
$lang->pipeline->common = 'Pipeline';
|
||||
$lang->devopssetting->common = 'Setting';
|
||||
|
||||
$lang->dashboard = 'Dashboard';
|
||||
$lang->contribute = 'Contribute';
|
||||
$lang->dynamic = 'Dynamic';
|
||||
$lang->contact = 'Contacts';
|
||||
$lang->whitelist = 'Weiße Liste';
|
||||
$lang->roadmap = 'Roadmap';
|
||||
$lang->track = 'Track';
|
||||
|
||||
@@ -224,6 +224,37 @@ $lang->review->common = 'Review';
|
||||
$lang->zahost->common = 'ZAhost';
|
||||
$lang->zanode->common = 'ZAnode';
|
||||
$lang->dimension->common = 'Dimension';
|
||||
$lang->contact->common = 'Contacts';
|
||||
|
||||
$lang->programstakeholder->common = 'Stakeholder';
|
||||
$lang->featureswitch->common = 'Features On/Off';
|
||||
$lang->importdata->common = 'Import data';
|
||||
$lang->systemsetting->common = 'System setting';
|
||||
$lang->staffmanage->common = 'User management';
|
||||
$lang->modelconfig->common = 'Pattern setting';
|
||||
$lang->featureconfig->common = 'Features config';
|
||||
$lang->doctemplate->common = 'Doc template';
|
||||
$lang->notifysetting->common = 'Notification';
|
||||
$lang->bidesign->common = 'BI design';
|
||||
$lang->personalsettings->common = 'Personal setting ';
|
||||
$lang->projectsettings->common = 'Setting';
|
||||
$lang->dataaccess->common = 'Data permission';
|
||||
$lang->executiongantt->common = 'Gantt chart';
|
||||
$lang->executionkanban->common = 'Kanban';
|
||||
$lang->executionburn->common = 'Burndown chart';
|
||||
$lang->executioncfd->common = 'Cumulative Flow Diagram';
|
||||
$lang->executionstory->common = 'Story';
|
||||
$lang->executionqa->common = 'QA';
|
||||
$lang->executionsettings->common = 'Setting';
|
||||
$lang->generalcomment->common = 'Comment';
|
||||
$lang->generalping->common = 'Timeout prevention';
|
||||
$lang->generaltemplate->common = 'Template';
|
||||
$lang->generaleffort->common = 'General log';
|
||||
$lang->productsettings->common = 'Product setting';
|
||||
$lang->projectreview->common = 'Review';
|
||||
$lang->projecttrack->common = 'Matrix';
|
||||
$lang->projectqa->common = 'QA';
|
||||
$lang->holidayseason->common = 'Holiday';
|
||||
|
||||
$lang->personnel->common = 'Member';
|
||||
$lang->personnel->invest = 'Investment';
|
||||
@@ -240,11 +271,22 @@ $lang->productplan->shortCommon = 'Plan';
|
||||
$lang->score->shortCommon = 'Score';
|
||||
$lang->testreport->shortCommon = 'Report';
|
||||
$lang->qa->shortCommon = 'QA';
|
||||
$lang->researchplan->common = 'Research';
|
||||
$lang->workestimation->common = 'Estimation';
|
||||
$lang->gapanalysis->common = 'Training';
|
||||
$lang->executionview->common = 'View';
|
||||
$lang->managespace->common = 'Space management';
|
||||
$lang->systemteam->common = 'System team';
|
||||
$lang->systemschedule->common = 'System calendar';
|
||||
$lang->systemeffort->common = 'System effort';
|
||||
$lang->systemdynamic->common = 'System dynamic';
|
||||
$lang->systemcompany->common = 'System company';
|
||||
$lang->pipeline->common = 'Pipeline';
|
||||
$lang->devopssetting->common = 'Setting';
|
||||
|
||||
$lang->dashboard = 'Dashboard';
|
||||
$lang->contribute = 'Contribute';
|
||||
$lang->dynamic = 'Dynamic';
|
||||
$lang->contact = 'Contacts';
|
||||
$lang->whitelist = 'Whitelist';
|
||||
$lang->roadmap = 'Roadmap';
|
||||
$lang->track = 'Track';
|
||||
|
||||
@@ -224,6 +224,37 @@ $lang->review->common = 'Review';
|
||||
$lang->zahost->common = 'ZAhost';
|
||||
$lang->zanode->common = 'ZAnode';
|
||||
$lang->dimension->common = 'Dimension';
|
||||
$lang->contact->common = 'Contacts';
|
||||
|
||||
$lang->programstakeholder->common = 'Stakeholder';
|
||||
$lang->featureswitch->common = 'Features On/Off';
|
||||
$lang->importdata->common = 'Import data';
|
||||
$lang->systemsetting->common = 'System setting';
|
||||
$lang->staffmanage->common = 'User management';
|
||||
$lang->modelconfig->common = 'Pattern setting';
|
||||
$lang->featureconfig->common = 'Features config';
|
||||
$lang->doctemplate->common = 'Doc template';
|
||||
$lang->notifysetting->common = 'Notification';
|
||||
$lang->bidesign->common = 'BI design';
|
||||
$lang->personalsettings->common = 'Personal setting ';
|
||||
$lang->projectsettings->common = 'Setting';
|
||||
$lang->dataaccess->common = 'Data permission';
|
||||
$lang->executiongantt->common = 'Gantt chart';
|
||||
$lang->executionkanban->common = 'Kanban';
|
||||
$lang->executionburn->common = 'Burndown chart';
|
||||
$lang->executioncfd->common = 'Cumulative Flow Diagram';
|
||||
$lang->executionstory->common = 'Story';
|
||||
$lang->executionqa->common = 'QA';
|
||||
$lang->executionsettings->common = 'Setting';
|
||||
$lang->generalcomment->common = 'Comment';
|
||||
$lang->generalping->common = 'Timeout prevention';
|
||||
$lang->generaltemplate->common = 'Template';
|
||||
$lang->generaleffort->common = 'General log';
|
||||
$lang->productsettings->common = 'Product setting';
|
||||
$lang->projectreview->common = 'Review';
|
||||
$lang->projecttrack->common = 'Matrix';
|
||||
$lang->projectqa->common = 'QA';
|
||||
$lang->holidayseason->common = 'Holiday';
|
||||
|
||||
$lang->personnel->common = 'Member';
|
||||
$lang->personnel->invest = 'Investment';
|
||||
@@ -240,11 +271,22 @@ $lang->productplan->shortCommon = 'Plan';
|
||||
$lang->score->shortCommon = 'Score';
|
||||
$lang->testreport->shortCommon = 'Report';
|
||||
$lang->qa->shortCommon = 'QA';
|
||||
$lang->researchplan->common = 'Research';
|
||||
$lang->workestimation->common = 'Estimation';
|
||||
$lang->gapanalysis->common = 'Training';
|
||||
$lang->executionview->common = 'View';
|
||||
$lang->managespace->common = 'Space management';
|
||||
$lang->systemteam->common = 'System team';
|
||||
$lang->systemschedule->common = 'System calendar';
|
||||
$lang->systemeffort->common = 'System effort';
|
||||
$lang->systemdynamic->common = 'System dynamic';
|
||||
$lang->systemcompany->common = 'System company';
|
||||
$lang->pipeline->common = 'Pipeline';
|
||||
$lang->devopssetting->common = 'Setting';
|
||||
|
||||
$lang->dashboard = 'Dashboard';
|
||||
$lang->contribute = 'Contribute';
|
||||
$lang->dynamic = 'Dynamic';
|
||||
$lang->contact = 'Contacts';
|
||||
$lang->whitelist = 'Liste blanche';
|
||||
$lang->roadmap = 'Roadmap';
|
||||
$lang->track = 'Track';
|
||||
|
||||
+88
-54
@@ -74,7 +74,7 @@ $lang->my->menu->execution = array('link' => "{$lang->execution->common}|my|exe
|
||||
$lang->my->menu->contribute = array('link' => "$lang->contribute|my|contribute|mode=task");
|
||||
$lang->my->menu->dynamic = array('link' => "$lang->dynamic|my|dynamic|");
|
||||
$lang->my->menu->score = array('link' => "{$lang->score->shortCommon}|my|score|", 'subModule' => 'score');
|
||||
$lang->my->menu->contacts = array('link' => "$lang->contact|my|managecontacts|");
|
||||
$lang->my->menu->contacts = array('link' => "{$lang->contact->common}|my|managecontacts|");
|
||||
|
||||
/* My menu order. */
|
||||
$lang->my->menuOrder[5] = 'index';
|
||||
@@ -210,7 +210,7 @@ $lang->scrum->menu->projectplan = array('link' => "{$lang->productplan->shortCom
|
||||
$lang->scrum->menu->doc = array('link' => "{$lang->doc->common}|doc|projectSpace|objectID=%s", 'subModule' => 'doc,api');
|
||||
$lang->scrum->menu->qa = array('link' => "{$lang->qa->common}|project|bug|projectID=%s", 'subModule' => 'testcase,testtask,bug,testreport', 'alias' => 'bug,testtask,testcase,testreport', 'exclude' => 'execution-create,execution-batchedit');
|
||||
$lang->scrum->menu->devops = array('link' => "{$lang->repo->common}|repo|browse|repoID=0&branchID=&objectID=%s", 'subModule' => 'repo');
|
||||
$lang->scrum->menu->build = array('link' => "{$lang->build->common}|project|build|project=%s", 'subModule' => 'projectbuild');
|
||||
$lang->scrum->menu->build = array('link' => "{$lang->build->common}|projectbuild|browse|project=%s", 'subModule' => 'projectbuild');
|
||||
$lang->scrum->menu->release = array('link' => "{$lang->release->common}|projectrelease|browse|project=%s", 'subModule' => 'projectrelease');
|
||||
$lang->scrum->menu->dynamic = array('link' => "$lang->dynamic|project|dynamic|project=%s");
|
||||
$lang->scrum->menu->settings = array('link' => "$lang->settings|project|view|project=%s", 'subModule' => 'tree,stakeholder', 'alias' => 'edit,manageproducts,group,managemembers,manageview,managepriv,whitelist,addwhitelist,team', 'exclude' => 'tree-browsetask');
|
||||
@@ -250,7 +250,6 @@ $lang->scrum->menu->settings['subMenu']->whitelist = array('link' => "{$lang->
|
||||
$lang->scrum->menu->settings['subMenu']->stakeholder = array('link' => "{$lang->stakeholder->common}|stakeholder|browse|project=%s", 'subModule' => 'stakeholder');
|
||||
$lang->scrum->menu->settings['subMenu']->group = array('link' => "{$lang->priv}|project|group|project=%s", 'alias' => 'group,manageview,managepriv');
|
||||
$lang->scrum->menu->settings['subMenu']->module = array('link' => "{$lang->module}|tree|browse|product=%s&view=story");
|
||||
//$lang->scrum->menu->settings['subMenu']->managerepo = array('link' => "{$lang->repo->codeRepo}|project|managerepo|project=%s");
|
||||
|
||||
/* Waterfall menu. */
|
||||
$lang->waterfall->menu = new stdclass();
|
||||
@@ -262,7 +261,7 @@ $lang->waterfall->menu->design = array('link' => "{$lang->design->common}|de
|
||||
$lang->waterfall->menu->qa = array('link' => "{$lang->qa->common}|project|bug|projectID=%s", 'subModule' => 'testcase,testtask,bug,testreport', 'alias' => 'bug,testtask,testcase,testreport');
|
||||
$lang->waterfall->menu->doc = array('link' => "{$lang->doc->common}|doc|projectSpace|objectID=%s");
|
||||
$lang->waterfall->menu->devops = array('link' => "{$lang->repo->common}|repo|browse|repoID=0&branchID=&objectID=%s", 'subModule' => 'repo');
|
||||
$lang->waterfall->menu->build = array('link' => "{$lang->build->common}|project|build|project=%s", 'subModule' => 'projectbuild');
|
||||
$lang->waterfall->menu->build = array('link' => "{$lang->build->common}|projectbuild|browse|project=%s", 'subModule' => 'projectbuild');
|
||||
$lang->waterfall->menu->release = array('link' => "{$lang->release->common}|projectrelease|browse|project=%s", 'subModule' => 'projectrelease');
|
||||
$lang->waterfall->menu->dynamic = array('link' => "$lang->dynamic|project|dynamic|project=%s");
|
||||
$lang->waterfall->menu->settings = array('link' => "$lang->settings|project|view|project=%s", 'subModule' => 'stakeholder', 'alias' => 'edit,manageproducts,group,managemembers,manageview,managepriv,whitelist,addwhitelist,team', 'exclude' => 'tree-browsetask');
|
||||
@@ -306,7 +305,7 @@ $lang->waterfall->menu->design['subMenu']->bysearch = array('link' => '<a href="
|
||||
$lang->kanbanProject = new stdclass();
|
||||
$lang->kanbanProject->menu = new stdclass();
|
||||
$lang->kanbanProject->menu->index = array('link' => "{$lang->kanban->common}|project|index|project=%s");
|
||||
$lang->kanbanProject->menu->build = array('link' => "{$lang->build->common}|project|build|project=%s", 'subModule' => 'projectbuild');
|
||||
$lang->kanbanProject->menu->build = array('link' => "{$lang->build->common}|projectbuild|browse|project=%s", 'subModule' => 'projectbuild');
|
||||
$lang->kanbanProject->menu->settings = array('link' => "$lang->settings|project|view|project=%s", 'subModule' => 'tree,stakeholder', 'alias' => 'edit,manageproducts,group,managemembers,manageview,managepriv,whitelist,addwhitelist,team');
|
||||
|
||||
$lang->kanbanProject->dividerMenu = '';
|
||||
@@ -559,27 +558,35 @@ $lang->system->menuOrder[15] = 'dynamic';
|
||||
$lang->system->menuOrder[20] = 'view';
|
||||
|
||||
/* Nav group.*/
|
||||
$lang->navGroup = new stdclass();
|
||||
$lang->navGroup->my = 'my';
|
||||
$lang->navGroup->effort = 'my';
|
||||
$lang->navGroup->score = 'my';
|
||||
$lang->navGroup->todo = 'my';
|
||||
$lang->navGroup = new stdclass();
|
||||
$lang->navGroup->my = 'my';
|
||||
$lang->navGroup->effort = 'my';
|
||||
$lang->navGroup->score = 'my';
|
||||
$lang->navGroup->todo = 'my';
|
||||
$lang->navGroup->contact = 'my';
|
||||
$lang->navGroup->personalsettings = 'my';
|
||||
|
||||
$lang->navGroup->program = 'program';
|
||||
$lang->navGroup->personnel = 'program';
|
||||
$lang->navGroup->program = 'program';
|
||||
$lang->navGroup->personnel = 'program';
|
||||
$lang->navGroup->programstakeholder = 'program';
|
||||
|
||||
$lang->navGroup->product = 'product';
|
||||
$lang->navGroup->productplan = 'product';
|
||||
$lang->navGroup->release = 'product';
|
||||
$lang->navGroup->branch = 'product';
|
||||
$lang->navGroup->story = 'product';
|
||||
$lang->navGroup->requirement = 'product';
|
||||
$lang->navGroup->product = 'product';
|
||||
$lang->navGroup->productplan = 'product';
|
||||
$lang->navGroup->release = 'product';
|
||||
$lang->navGroup->branch = 'product';
|
||||
$lang->navGroup->story = 'product';
|
||||
$lang->navGroup->requirement = 'product';
|
||||
$lang->navGroup->productsettings = 'product';
|
||||
|
||||
$lang->navGroup->project = 'project';
|
||||
$lang->navGroup->deploy = 'project';
|
||||
$lang->navGroup->programplan = 'project';
|
||||
$lang->navGroup->design = 'project';
|
||||
$lang->navGroup->stakeholder = 'project';
|
||||
$lang->navGroup->project = 'project';
|
||||
$lang->navGroup->deploy = 'project';
|
||||
$lang->navGroup->programplan = 'project';
|
||||
$lang->navGroup->design = 'project';
|
||||
$lang->navGroup->stakeholder = 'project';
|
||||
$lang->navGroup->projectsettings = 'project';
|
||||
$lang->navGroup->projectreview = 'project';
|
||||
$lang->navGroup->projecttrack = 'project';
|
||||
$lang->navGroup->projectqa = 'project';
|
||||
|
||||
$lang->navGroup->projectbuild = 'project';
|
||||
$lang->navGroup->projectstory = 'project';
|
||||
@@ -594,12 +601,24 @@ $lang->navGroup->projectrelease = 'project';
|
||||
$lang->navGroup->build = 'project';
|
||||
$lang->navGroup->measrecord = 'project';
|
||||
$lang->navGroup->milestone = 'project';
|
||||
$lang->navGroup->researchplan = 'project';
|
||||
$lang->navGroup->workestimation = 'project';
|
||||
$lang->navGroup->gapanalysis = 'project';
|
||||
|
||||
$lang->navGroup->execution = 'execution';
|
||||
$lang->navGroup->task = 'execution';
|
||||
$lang->navGroup->build = 'execution';
|
||||
$lang->navGroup->team = 'execution';
|
||||
$lang->navGroup->execution = 'execution';
|
||||
$lang->navGroup->task = 'execution';
|
||||
$lang->navGroup->build = 'execution';
|
||||
$lang->navGroup->team = 'execution';
|
||||
$lang->navGroup->executionview = 'execution';
|
||||
$lang->navGroup->executiongantt = 'execution';
|
||||
$lang->navGroup->executionkanban = 'execution';
|
||||
$lang->navGroup->executionburn = 'execution';
|
||||
$lang->navGroup->executioncfd = 'execution';
|
||||
$lang->navGroup->executionstory = 'execution';
|
||||
$lang->navGroup->executionqa = 'execution';
|
||||
$lang->navGroup->executionsettings = 'execution';
|
||||
|
||||
$lang->navGroup->managespace = 'kanban';
|
||||
$lang->navGroup->kanbanspace = 'kanban';
|
||||
$lang->navGroup->kanban = 'kanban';
|
||||
$lang->navGroup->kanbanregion = 'kanban';
|
||||
@@ -611,10 +630,11 @@ $lang->navGroup->doc = 'doc';
|
||||
$lang->navGroup->doclib = 'doc';
|
||||
$lang->navGroup->api = 'doc';
|
||||
|
||||
$lang->navGroup->screen = 'bi';
|
||||
$lang->navGroup->pivot = 'bi';
|
||||
$lang->navGroup->chart = 'bi';
|
||||
$lang->navGroup->report = 'bi';
|
||||
$lang->navGroup->screen = 'bi';
|
||||
$lang->navGroup->pivot = 'bi';
|
||||
$lang->navGroup->chart = 'bi';
|
||||
$lang->navGroup->bidesign = 'bi';
|
||||
$lang->navGroup->report = 'bi';
|
||||
|
||||
$lang->navGroup->qa = 'qa';
|
||||
$lang->navGroup->bug = 'qa';
|
||||
@@ -643,8 +663,16 @@ $lang->navGroup->ci = 'devops';
|
||||
$lang->navGroup->svn = 'devops';
|
||||
$lang->navGroup->git = 'devops';
|
||||
$lang->navGroup->app = 'devops';
|
||||
$lang->navGroup->pipeline = 'devops';
|
||||
$lang->navGroup->devopssetting = 'devops';
|
||||
|
||||
$lang->navGroup->company = 'system';
|
||||
$lang->navGroup->company = 'system';
|
||||
$lang->navGroup->systemteam = 'system';
|
||||
$lang->navGroup->systemschedule = 'system';
|
||||
$lang->navGroup->systemeffort = 'system';
|
||||
$lang->navGroup->systemdynamic = 'system';
|
||||
$lang->navGroup->systemcompany = 'system';
|
||||
$lang->navGroup->dataaccess = 'system';
|
||||
|
||||
$lang->navGroup->attend = 'attend';
|
||||
$lang->navGroup->leave = 'attend';
|
||||
@@ -652,29 +680,36 @@ $lang->navGroup->makeup = 'attend';
|
||||
$lang->navGroup->overtime = 'attend';
|
||||
$lang->navGroup->lieu = 'attend';
|
||||
|
||||
$lang->navGroup->admin = 'admin';
|
||||
$lang->navGroup->dept = 'admin';
|
||||
$lang->navGroup->user = 'admin';
|
||||
$lang->navGroup->group = 'admin';
|
||||
$lang->navGroup->dept = 'admin';
|
||||
$lang->navGroup->webhook = 'admin';
|
||||
$lang->navGroup->sms = 'admin';
|
||||
$lang->navGroup->message = 'admin';
|
||||
$lang->navGroup->custom = 'admin';
|
||||
$lang->navGroup->cron = 'admin';
|
||||
$lang->navGroup->backup = 'admin';
|
||||
$lang->navGroup->mail = 'admin';
|
||||
$lang->navGroup->dev = 'admin';
|
||||
$lang->navGroup->editor = 'admin';
|
||||
$lang->navGroup->entry = 'admin';
|
||||
$lang->navGroup->extension = 'admin';
|
||||
$lang->navGroup->action = 'admin';
|
||||
$lang->navGroup->convert = 'admin';
|
||||
$lang->navGroup->stage = 'admin';
|
||||
$lang->navGroup->admin = 'admin';
|
||||
$lang->navGroup->dept = 'admin';
|
||||
$lang->navGroup->user = 'admin';
|
||||
$lang->navGroup->group = 'admin';
|
||||
$lang->navGroup->dept = 'admin';
|
||||
$lang->navGroup->webhook = 'admin';
|
||||
$lang->navGroup->sms = 'admin';
|
||||
$lang->navGroup->message = 'admin';
|
||||
$lang->navGroup->custom = 'admin';
|
||||
$lang->navGroup->cron = 'admin';
|
||||
$lang->navGroup->backup = 'admin';
|
||||
$lang->navGroup->mail = 'admin';
|
||||
$lang->navGroup->dev = 'admin';
|
||||
$lang->navGroup->editor = 'admin';
|
||||
$lang->navGroup->entry = 'admin';
|
||||
$lang->navGroup->extension = 'admin';
|
||||
$lang->navGroup->action = 'admin';
|
||||
$lang->navGroup->convert = 'admin';
|
||||
$lang->navGroup->stage = 'admin';
|
||||
$lang->navGroup->featureswitch = 'admin';
|
||||
$lang->navGroup->importdata = 'admin';
|
||||
$lang->navGroup->systemsetting = 'admin';
|
||||
$lang->navGroup->staffmanage = 'admin';
|
||||
$lang->navGroup->modelconfig = 'admin';
|
||||
$lang->navGroup->featureconfig = 'admin';
|
||||
$lang->navGroup->doctemplate = 'admin';
|
||||
$lang->navGroup->notifysetting = 'admin';
|
||||
$lang->navGroup->holidayseason = 'admin';
|
||||
|
||||
$lang->navGroup->search = 'search';
|
||||
$lang->navGroup->index = 'index';
|
||||
$lang->navGroup->tree = 'tree';
|
||||
$lang->navGroup->misc = 'misc';
|
||||
$lang->navGroup->upgrade = 'upgrade';
|
||||
|
||||
@@ -693,7 +728,6 @@ if(!helper::hasFeature('devops'))
|
||||
unset($lang->waterfall->menu->devops, $lang->waterfall->menuOrder[35]);
|
||||
unset($lang->execution->menu->devops, $lang->execution->menuOrder[45]);
|
||||
unset($lang->project->noMultiple->scrum->menu->devops, $lang->project->noMultiple->scrum->menuOrder[35]);
|
||||
unset($lang->scrum->menu->settings['subMenu']->managerepo);
|
||||
}
|
||||
|
||||
if(!helper::hasFeature('kanban'))
|
||||
|
||||
@@ -224,6 +224,37 @@ $lang->review->common = '审批';
|
||||
$lang->zahost->common = '宿主机';
|
||||
$lang->zanode->common = '执行节点';
|
||||
$lang->dimension->common = '维度';
|
||||
$lang->contact->common = '联系人';
|
||||
|
||||
$lang->programstakeholder->common = '干系人';
|
||||
$lang->featureswitch->common = '功能开关';
|
||||
$lang->importdata->common = '数据导入';
|
||||
$lang->systemsetting->common = '系统设置';
|
||||
$lang->staffmanage->common = '人员管理';
|
||||
$lang->modelconfig->common = '模型配置';
|
||||
$lang->featureconfig->common = '功能配置';
|
||||
$lang->doctemplate->common = '文档模板';
|
||||
$lang->notifysetting->common = '通知设置';
|
||||
$lang->bidesign->common = 'BI设计';
|
||||
$lang->personalsettings->common = '个人设置';
|
||||
$lang->projectsettings->common = '设置';
|
||||
$lang->dataaccess->common = '数据权限';
|
||||
$lang->executiongantt->common = '甘特图';
|
||||
$lang->executionkanban->common = '看板';
|
||||
$lang->executionburn->common = '燃尽图';
|
||||
$lang->executioncfd->common = '累积流图';
|
||||
$lang->executionstory->common = '研发需求';
|
||||
$lang->executionqa->common = '测试';
|
||||
$lang->executionsettings->common = '设置';
|
||||
$lang->generalcomment->common = '备注';
|
||||
$lang->generalping->common = '防超时';
|
||||
$lang->generaltemplate->common = '模板';
|
||||
$lang->generaleffort->common = '通用日志';
|
||||
$lang->productsettings->common = '产品设置';
|
||||
$lang->projectreview->common = '评审';
|
||||
$lang->projecttrack->common = '矩阵';
|
||||
$lang->projectqa->common = '测试';
|
||||
$lang->holidayseason->common = '节假日';
|
||||
|
||||
$lang->personnel->common = '人员';
|
||||
$lang->personnel->invest = '投入人员';
|
||||
@@ -240,11 +271,22 @@ $lang->productplan->shortCommon = '计划';
|
||||
$lang->score->shortCommon = '积分';
|
||||
$lang->testreport->shortCommon = '报告';
|
||||
$lang->qa->shortCommon = 'QA';
|
||||
$lang->researchplan->common = '调研';
|
||||
$lang->workestimation->common = '估算';
|
||||
$lang->gapanalysis->common = '培训';
|
||||
$lang->executionview->common = '视图';
|
||||
$lang->managespace->common = '空间管理';
|
||||
$lang->systemteam->common = '组织团队';
|
||||
$lang->systemschedule->common = '组织日程';
|
||||
$lang->systemeffort->common = '组织日志';
|
||||
$lang->systemdynamic->common = '组织动态';
|
||||
$lang->systemcompany->common = '组织公司';
|
||||
$lang->pipeline->common = '流水线';
|
||||
$lang->devopssetting->common = '设置';
|
||||
|
||||
$lang->dashboard = '仪表盘';
|
||||
$lang->contribute = '贡献';
|
||||
$lang->dynamic = '动态';
|
||||
$lang->contact = '联系人';
|
||||
$lang->whitelist = '白名单';
|
||||
$lang->roadmap = '路线图';
|
||||
$lang->track = '矩阵';
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
$lang->cron->common = 'Geplante Tasks';
|
||||
$lang->cron->id = 'ID';
|
||||
$lang->cron->buildin = 'Build In';
|
||||
$lang->cron->index = 'Home';
|
||||
$lang->cron->index = 'Geplante Tasks List';
|
||||
$lang->cron->list = 'Tasks';
|
||||
$lang->cron->create = 'Hinzufügen';
|
||||
$lang->cron->createAction = 'Add Cron';
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
$lang->cron->common = 'Cron';
|
||||
$lang->cron->id = 'ID';
|
||||
$lang->cron->buildin = 'Build In';
|
||||
$lang->cron->index = 'Cron Home';
|
||||
$lang->cron->index = 'Cron List';
|
||||
$lang->cron->list = 'Task';
|
||||
$lang->cron->create = 'Add';
|
||||
$lang->cron->createAction = 'Add Cron';
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
$lang->cron->common = 'Cron';
|
||||
$lang->cron->id = 'ID';
|
||||
$lang->cron->buildin = 'Build In';
|
||||
$lang->cron->index = 'Accueil Cron';
|
||||
$lang->cron->index = 'Accueil Cron List';
|
||||
$lang->cron->list = 'Tâches';
|
||||
$lang->cron->create = 'Ajouter';
|
||||
$lang->cron->createAction = 'Ajouter Cron';
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
$lang->cron->common = '定时任务';
|
||||
$lang->cron->id = '编号';
|
||||
$lang->cron->buildin = '内置';
|
||||
$lang->cron->index = '首页';
|
||||
$lang->cron->index = '定时任务列表';
|
||||
$lang->cron->list = '任务列表';
|
||||
$lang->cron->create = '添加';
|
||||
$lang->cron->createAction = '添加任务';
|
||||
|
||||
@@ -3,7 +3,6 @@ global $config;
|
||||
|
||||
$lang->custom->common = 'Custom';
|
||||
$lang->custom->id = 'ID';
|
||||
$lang->custom->index = 'Home';
|
||||
$lang->custom->set = 'Customize';
|
||||
$lang->custom->restore = 'Reset to Default';
|
||||
$lang->custom->key = 'Key';
|
||||
@@ -63,6 +62,7 @@ $lang->custom->percent = $lang->stage->percent;
|
||||
$lang->custom->setPercent = "Enable or Disable {$lang->stage->percent}";
|
||||
$lang->custom->beginAndEndDate = 'Begin & End';
|
||||
$lang->custom->beginAndEndDateRange = 'The Range Of Begin & End';
|
||||
$lang->custom->limitTaskDateAction = 'Set start and end date required';
|
||||
|
||||
$lang->custom->unitList['efficiency'] = 'Working Hours/';
|
||||
$lang->custom->unitList['manhour'] = 'Man-hour/';
|
||||
|
||||
@@ -3,7 +3,6 @@ global $config;
|
||||
|
||||
$lang->custom->common = 'Custom';
|
||||
$lang->custom->id = 'ID';
|
||||
$lang->custom->index = 'Home';
|
||||
$lang->custom->set = 'Customize';
|
||||
$lang->custom->restore = 'Reset';
|
||||
$lang->custom->key = 'Key';
|
||||
@@ -63,6 +62,7 @@ $lang->custom->percent = $lang->stage->percent;
|
||||
$lang->custom->setPercent = "Enable or Disable {$lang->stage->percent}";
|
||||
$lang->custom->beginAndEndDate = 'Begin & End';
|
||||
$lang->custom->beginAndEndDateRange = 'The Range Of Begin & End';
|
||||
$lang->custom->limitTaskDateAction = 'Set start and end date required';
|
||||
|
||||
$lang->custom->unitList['efficiency'] = 'Working Hours/';
|
||||
$lang->custom->unitList['manhour'] = 'Man-hour/';
|
||||
|
||||
@@ -3,7 +3,6 @@ global $config;
|
||||
|
||||
$lang->custom->common = 'Personnalisation';
|
||||
$lang->custom->id = 'ID';
|
||||
$lang->custom->index = 'Accueil';
|
||||
$lang->custom->set = 'Personnaliser';
|
||||
$lang->custom->restore = 'Réinitialiser';
|
||||
$lang->custom->key = 'Clé';
|
||||
@@ -63,6 +62,7 @@ $lang->custom->percent = $lang->stage->percent;
|
||||
$lang->custom->setPercent = "Enable or Disable {$lang->stage->percent}";
|
||||
$lang->custom->beginAndEndDate = 'Begin & End';
|
||||
$lang->custom->beginAndEndDateRange = 'The Range Of Begin & End';
|
||||
$lang->custom->limitTaskDateAction = 'Set start and end date required';
|
||||
|
||||
$lang->custom->unitList['efficiency'] = 'Working Hours/';
|
||||
$lang->custom->unitList['manhour'] = 'Man-hour/';
|
||||
|
||||
@@ -3,7 +3,6 @@ global $config;
|
||||
|
||||
$lang->custom->common = '自定义';
|
||||
$lang->custom->id = '编号';
|
||||
$lang->custom->index = '首页';
|
||||
$lang->custom->set = '自定义配置';
|
||||
$lang->custom->restore = '恢复默认';
|
||||
$lang->custom->key = '键';
|
||||
@@ -63,6 +62,7 @@ $lang->custom->percent = $lang->stage->percent;
|
||||
$lang->custom->setPercent = "是否启用{$lang->stage->percent}";
|
||||
$lang->custom->beginAndEndDate = '起止日期';
|
||||
$lang->custom->beginAndEndDateRange = '起止日期范围';
|
||||
$lang->custom->limitTaskDateAction = '设置起止日期必填';
|
||||
|
||||
$lang->custom->unitList['efficiency'] = '工时/';
|
||||
$lang->custom->unitList['manhour'] = '人时/';
|
||||
|
||||
@@ -20,13 +20,15 @@ $lang->dept->manager = "Manager";
|
||||
$lang->dept->name = "Name";
|
||||
$lang->dept->browse = "Verwalten";
|
||||
$lang->dept->manage = "Pflegen";
|
||||
$lang->dept->updateOrder = "Sortieren";
|
||||
$lang->dept->updateOrder = "Department Ranking";
|
||||
$lang->dept->add = "Hinzufügen";
|
||||
$lang->dept->grade = "Grade";
|
||||
$lang->dept->order = "Rank";
|
||||
$lang->dept->dragAndSort = "Verschieben und sortieren";
|
||||
$lang->dept->noDepartment = "No Department";
|
||||
|
||||
$lang->dept->manageChildAction = "Manage Subordinate Department";
|
||||
|
||||
$lang->dept->confirmDelete = " Möchten Sie diese Abteilung löschen?";
|
||||
$lang->dept->successSave = " Gespeichert!";
|
||||
$lang->dept->repeatDepart = " Es gibt einen doppelten Abteilungsnamen, möchten Sie ihn wirklich hinzufügen?";
|
||||
|
||||
@@ -20,13 +20,15 @@ $lang->dept->manager = "Manager";
|
||||
$lang->dept->name = "Department Name";
|
||||
$lang->dept->browse = "Manage Department";
|
||||
$lang->dept->manage = "Manage Department";
|
||||
$lang->dept->updateOrder = "Rank Department";
|
||||
$lang->dept->updateOrder = "Department Ranking";
|
||||
$lang->dept->add = "Add Department";
|
||||
$lang->dept->grade = "Department Grade";
|
||||
$lang->dept->order = "Department Order";
|
||||
$lang->dept->dragAndSort = "Drag to order";
|
||||
$lang->dept->noDepartment = "No Department";
|
||||
|
||||
$lang->dept->manageChildAction = "Manage Subordinate Department";
|
||||
|
||||
$lang->dept->confirmDelete = " Do you want to delete this department?";
|
||||
$lang->dept->successSave = " Saved!";
|
||||
$lang->dept->repeatDepart = " There is a duplicate department name, are you sure to add it?";
|
||||
|
||||
@@ -20,13 +20,15 @@ $lang->dept->manager = "Responsable";
|
||||
$lang->dept->name = "Nom du Compartiment";
|
||||
$lang->dept->browse = "Consulter Compartiment";
|
||||
$lang->dept->manage = "Gérer Compartiment";
|
||||
$lang->dept->updateOrder = "Rang Compartiment";
|
||||
$lang->dept->updateOrder = "Department Ranking";
|
||||
$lang->dept->add = "Ajout Compartiment";
|
||||
$lang->dept->grade = "Grade du Compartiment";
|
||||
$lang->dept->order = "Ordre du Compartiment";
|
||||
$lang->dept->dragAndSort = "Déplacez pour classer";
|
||||
$lang->dept->noDepartment = "No Department";
|
||||
|
||||
$lang->dept->manageChildAction = "Manage Subordinate Department";
|
||||
|
||||
$lang->dept->confirmDelete = " Confirmez que vous voulez bien supprimer ce Compartiment ?";
|
||||
$lang->dept->successSave = " Sauvé !";
|
||||
$lang->dept->repeatDepart = " Il y a un nom de département en double, êtes-vous sûr de l'ajouter ?";
|
||||
|
||||
@@ -20,13 +20,15 @@ $lang->dept->manager = "负责人";
|
||||
$lang->dept->name = "部门名称";
|
||||
$lang->dept->browse = "部门维护";
|
||||
$lang->dept->manage = "维护部门";
|
||||
$lang->dept->updateOrder = "更新排序";
|
||||
$lang->dept->updateOrder = "部门排序";
|
||||
$lang->dept->add = "添加部门";
|
||||
$lang->dept->grade = "部门级别";
|
||||
$lang->dept->order = "排序";
|
||||
$lang->dept->dragAndSort = "拖动排序";
|
||||
$lang->dept->noDepartment = "无部门";
|
||||
|
||||
$lang->dept->manageChildAction = "维护下级部门";
|
||||
|
||||
$lang->dept->confirmDelete = " 您确定删除该部门吗?";
|
||||
$lang->dept->successSave = " 修改成功。";
|
||||
$lang->dept->repeatDepart = " 存在部门名称重复,您确认添加吗?";
|
||||
|
||||
@@ -47,7 +47,7 @@ $lang->design->batchCreate = 'Batch Create';
|
||||
$lang->design->edit = 'Edit';
|
||||
$lang->design->delete = 'Delete';
|
||||
$lang->design->view = 'View';
|
||||
$lang->design->browse = 'List';
|
||||
$lang->design->browse = 'Design List';
|
||||
$lang->design->viewCommit = 'View Commit';
|
||||
$lang->design->linkCommit = 'Link Commit';
|
||||
$lang->design->unlinkCommit = 'Unlink Commit';
|
||||
|
||||
@@ -47,7 +47,7 @@ $lang->design->batchCreate = 'Batch Create';
|
||||
$lang->design->edit = 'Change';
|
||||
$lang->design->delete = 'Delete';
|
||||
$lang->design->view = 'View';
|
||||
$lang->design->browse = 'List';
|
||||
$lang->design->browse = 'Design List';
|
||||
$lang->design->viewCommit = 'View Commit';
|
||||
$lang->design->linkCommit = 'Link Commit';
|
||||
$lang->design->unlinkCommit = 'Unlink Commit';
|
||||
|
||||
@@ -47,7 +47,7 @@ $lang->design->batchCreate = 'Batch Create';
|
||||
$lang->design->edit = 'Edit';
|
||||
$lang->design->delete = 'Delete';
|
||||
$lang->design->view = 'View';
|
||||
$lang->design->browse = 'List';
|
||||
$lang->design->browse = 'Design List';
|
||||
$lang->design->viewCommit = 'View Commit';
|
||||
$lang->design->linkCommit = 'Link Commit';
|
||||
$lang->design->unlinkCommit = 'Unlink Commit';
|
||||
|
||||
@@ -46,8 +46,8 @@ $lang->design->create = '创建设计';
|
||||
$lang->design->batchCreate = '批量创建';
|
||||
$lang->design->edit = '变更';
|
||||
$lang->design->delete = '删除';
|
||||
$lang->design->view = '设计概况';
|
||||
$lang->design->browse = '浏览列表';
|
||||
$lang->design->view = '设计详情';
|
||||
$lang->design->browse = '设计列表';
|
||||
$lang->design->viewCommit = '查看提交';
|
||||
$lang->design->linkCommit = '关联提交';
|
||||
$lang->design->unlinkCommit = '取消关联';
|
||||
|
||||
@@ -96,20 +96,6 @@ class dev extends control
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Translate.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function translate()
|
||||
{
|
||||
$this->view->title = $this->lang->dev->translate;
|
||||
$this->view->position[] = $this->lang->dev->translate;
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Custom menu lang item.
|
||||
*
|
||||
|
||||
@@ -3,7 +3,6 @@ $lang->dev->common = 'Entwicklung';
|
||||
$lang->dev->api = 'API Document';
|
||||
$lang->dev->db = 'Data Dictionary';
|
||||
$lang->dev->editor = 'Bearbeiter';
|
||||
$lang->dev->translate = 'Translate';
|
||||
$lang->dev->dbList = 'Datenbank';
|
||||
$lang->dev->moduleList = 'Module';
|
||||
$lang->dev->params = 'Parameter';
|
||||
@@ -19,7 +18,6 @@ $lang->dev->paramDate = 'Date format: YY-mm-dd, e.g 2019-01-01';
|
||||
$lang->dev->paramColor = 'Color format: #RGB, e.g. #3da7f5';
|
||||
$lang->dev->paramMailto = "User account. Separate accounts by ','.";
|
||||
$lang->dev->noteEditor = "The editor is disabled for security reasons. To use this feature, Please turn on.";
|
||||
$lang->dev->noteTranslate = "The translation is disabled for security reasons. To use this feature, please go to the official website to download and install the plugin of <a href='https://www.zentao.net/extension-viewExt-151.html' target='_blank'>translation</a>.";
|
||||
$lang->dev->confirmRestore = 'Do you want to reset?';
|
||||
$lang->dev->apiTips = 'Every page can be called through the JSON interface';
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@ $lang->dev->common = 'Develop';
|
||||
$lang->dev->api = 'API Document';
|
||||
$lang->dev->db = 'Data Dictionary';
|
||||
$lang->dev->editor = 'Editor';
|
||||
$lang->dev->translate = 'Translate';
|
||||
$lang->dev->dbList = 'Database';
|
||||
$lang->dev->moduleList = 'Modules';
|
||||
$lang->dev->params = 'Parameters';
|
||||
@@ -19,7 +18,6 @@ $lang->dev->paramDate = 'Date format: YY-mm-dd, e.g 2019-01-01';
|
||||
$lang->dev->paramColor = 'Color format: #RGB, e.g. #3da7f5';
|
||||
$lang->dev->paramMailto = "User account. Separate accounts by ','.";
|
||||
$lang->dev->noteEditor = "The editor is disabled for security reasons. To use this feature, Please turn on.";
|
||||
$lang->dev->noteTranslate = "The translation is disabled for security reasons. To use this feature, please go to the official website to download and install the plugin of <a href='https://www.zentao.net/extension-viewExt-151.html' target='_blank'>translation</a>.";
|
||||
$lang->dev->confirmRestore = 'Do you want to reset?';
|
||||
$lang->dev->apiTips = 'Every page can be called through the JSON interface';
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@ $lang->dev->common = 'Develop';
|
||||
$lang->dev->api = 'API Document';
|
||||
$lang->dev->db = 'Data Dictionary';
|
||||
$lang->dev->editor = 'Editor';
|
||||
$lang->dev->translate = 'Translate';
|
||||
$lang->dev->dbList = 'Database';
|
||||
$lang->dev->moduleList = 'Modules';
|
||||
$lang->dev->params = 'Parameters';
|
||||
@@ -19,7 +18,6 @@ $lang->dev->paramDate = 'Date format: YY-mm-dd, e.g 2019-01-01';
|
||||
$lang->dev->paramColor = 'Color format: #RGB, e.g. #3da7f5';
|
||||
$lang->dev->paramMailto = "User account. Separate accounts by ','.";
|
||||
$lang->dev->noteEditor = "The editor is disabled for security reasons. To use this feature, Please turn on.";
|
||||
$lang->dev->noteTranslate = "The translation is disabled for security reasons. To use this feature, please go to the official website to download and install the plugin of <a href='https://www.zentao.net/extension-viewExt-151.html' target='_blank'>translation</a>.";
|
||||
$lang->dev->confirmRestore = 'Do you want to reset?';
|
||||
$lang->dev->apiTips = 'Every page can be called through the JSON interface';
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@ $lang->dev->common = '二次开发';
|
||||
$lang->dev->api = '接口文档';
|
||||
$lang->dev->db = '数据字典';
|
||||
$lang->dev->editor = '编辑器';
|
||||
$lang->dev->translate = '翻译';
|
||||
$lang->dev->dbList = '数据库';
|
||||
$lang->dev->moduleList = '模块列表';
|
||||
$lang->dev->params = '参数列表';
|
||||
@@ -19,7 +18,6 @@ $lang->dev->paramDate = '日期格式:YY-mm-dd,如:2019-01-01';
|
||||
$lang->dev->paramColor = '颜色格式:#RGB,如:#3da7f5';
|
||||
$lang->dev->paramMailto = "填写帐号,多个账号用','分隔。";
|
||||
$lang->dev->noteEditor = "编辑器功能存在部分安全问题,如需使用该功能,可在此开启。";
|
||||
$lang->dev->noteTranslate = "翻译功能因为安全原因被禁用。使用该功能,请到官网下载安装 <a href='https://www.zentao.net/extension-viewExt-151.html' target='_blank'>翻译</a> 插件。";
|
||||
$lang->dev->confirmRestore = '是否要恢复默认?';
|
||||
$lang->dev->apiTips = '可访问的每个页面都可通过JSON接口调取';
|
||||
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The translate view file of dev module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.cnezsoft.com)
|
||||
* @license ZPL(http://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
|
||||
* @author Yidong Wang <yidong@cnezsoft.com>
|
||||
* @package dev
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<style>
|
||||
#subNavbar li[data-id='dev'].active > a {font-weight: normal; color: #3c4353;}
|
||||
</style>
|
||||
<div id='mainContent' class='main-content'>
|
||||
<div class='alert alert-danger'><?php echo $lang->dev->noteTranslate;?></div>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
@@ -999,10 +999,6 @@ function createLaneMenu(options)
|
||||
|
||||
var items = [];
|
||||
if(priv.canSetLane) items.push({label: kanbanLang.setLane, icon: 'edit', url: $.createLink('kanban', 'setLane', 'lane=' + lane.laneID + '&executionID=' + executionID + '&from=execution'), className: 'iframe'});
|
||||
if(priv.canMoveLane) items.push(
|
||||
{label: kanbanLang.moveUp, icon: 'arrow-up', url: $.createLink('kanban', 'laneMove', 'executionID=' + executionID + '¤tLane=' + lane.id + '&targetLane=' + upTargetKanban), className: 'iframe', disabled: !$kanban.prev('.kanban').length},
|
||||
{label: kanbanLang.moveDown, icon: 'arrow-down', url: $.createLink('kanban', 'laneMove', 'executionID=' + executionID + '¤tLane=' + lane.id + '&targetLane=' + downTargetKanban), className: 'iframe', disabled: !$kanban.next('.kanban').length}
|
||||
);
|
||||
|
||||
var bounds = options.$trigger[0].getBoundingClientRect();
|
||||
items.$options = {x: bounds.right, y: bounds.top};
|
||||
|
||||
@@ -228,7 +228,6 @@ $lang->execution->testtask = 'Testaufgaben';
|
||||
$lang->execution->burn = 'Burndown';
|
||||
$lang->execution->computeBurn = 'Aktualisieren';
|
||||
$lang->execution->computeCFD = 'Compute Cumulative Flow diagrams';
|
||||
$lang->execution->burnData = 'Burndown Daten';
|
||||
$lang->execution->fixFirst = 'Bearbeite Mannstunden des ersten Tags';
|
||||
$lang->execution->team = 'Teammitglieder';
|
||||
$lang->execution->doc = 'Dok';
|
||||
|
||||
@@ -228,7 +228,6 @@ $lang->execution->testtask = 'Request';
|
||||
$lang->execution->burn = 'Burndown';
|
||||
$lang->execution->computeBurn = 'Update';
|
||||
$lang->execution->computeCFD = 'Compute Cumulative Flow diagrams';
|
||||
$lang->execution->burnData = 'Burndown Data';
|
||||
$lang->execution->fixFirst = 'Edit 1st-Day Estimates';
|
||||
$lang->execution->team = 'Members';
|
||||
$lang->execution->doc = 'Document';
|
||||
|
||||
@@ -228,7 +228,6 @@ $lang->execution->testtask = 'Request';
|
||||
$lang->execution->burn = 'Burndown';
|
||||
$lang->execution->computeBurn = 'Update';
|
||||
$lang->execution->computeCFD = 'Compute Cumulative Flow diagrams';
|
||||
$lang->execution->burnData = 'Burndown Data';
|
||||
$lang->execution->fixFirst = 'Edit 1st-Day Estimates';
|
||||
$lang->execution->team = 'Members';
|
||||
$lang->execution->doc = 'Document';
|
||||
|
||||
@@ -223,12 +223,11 @@ $lang->execution->bug = 'Bug列表';
|
||||
$lang->execution->testcase = '用例列表';
|
||||
$lang->execution->dynamic = '动态';
|
||||
$lang->execution->latestDynamic = '最新动态';
|
||||
$lang->execution->build = '所有版本';
|
||||
$lang->execution->build = '版本列表';
|
||||
$lang->execution->testtask = '测试单';
|
||||
$lang->execution->burn = '燃尽图';
|
||||
$lang->execution->computeBurn = '更新燃尽图';
|
||||
$lang->execution->computeCFD = '更新累积流图';
|
||||
$lang->execution->burnData = '燃尽图数据';
|
||||
$lang->execution->fixFirst = '修改首天工时';
|
||||
$lang->execution->team = '团队成员';
|
||||
$lang->execution->doc = '文档列表';
|
||||
|
||||
@@ -189,7 +189,6 @@ js::set('priv',
|
||||
'canEditName' => common::hasPriv('kanban', 'setColumn'),
|
||||
'canSetWIP' => common::hasPriv('kanban', 'setWIP'),
|
||||
'canSetLane' => common::hasPriv('kanban', 'setLane'),
|
||||
'canMoveLane' => common::hasPriv('kanban', 'laneMove'),
|
||||
'canSortCards' => common::hasPriv('kanban', 'cardsSort'),
|
||||
'canCreateTask' => $canCreateTask,
|
||||
'canBatchCreateTask' => $canBatchCreateTask,
|
||||
|
||||
@@ -13,4 +13,4 @@
|
||||
$lang->git->common = 'Git';
|
||||
$lang->git->cat = '查看源代码';
|
||||
$lang->git->diff = '比较源代码';
|
||||
$lang->git->apiSync = '接口:同步git日志';
|
||||
$lang->git->apiSync = '接口:同步Git日志';
|
||||
|
||||
@@ -4,7 +4,7 @@ $lang->gitea->browse = 'Gitea Browse';
|
||||
$lang->gitea->search = 'Search';
|
||||
$lang->gitea->create = 'Create Gitea';
|
||||
$lang->gitea->edit = 'Edit Gitea';
|
||||
$lang->gitea->view = 'View Gitea';
|
||||
$lang->gitea->view = 'Gitea Details';
|
||||
$lang->gitea->delete = 'Delete Gitea';
|
||||
$lang->gitea->confirmDelete = 'Do you want to delete this Gitea server?';
|
||||
$lang->gitea->bindUser = 'Bind User';
|
||||
|
||||
@@ -4,7 +4,7 @@ $lang->gitea->browse = 'Gitea Browse';
|
||||
$lang->gitea->search = 'Search';
|
||||
$lang->gitea->create = 'Create Gitea';
|
||||
$lang->gitea->edit = 'Edit Gitea';
|
||||
$lang->gitea->view = 'View Gitea';
|
||||
$lang->gitea->view = 'Gitea Details';
|
||||
$lang->gitea->delete = 'Delete Gitea';
|
||||
$lang->gitea->confirmDelete = 'Do you want to delete this Gitea server?';
|
||||
$lang->gitea->bindUser = 'Bind User';
|
||||
|
||||
@@ -4,7 +4,7 @@ $lang->gitea->browse = 'Gitea Browse';
|
||||
$lang->gitea->search = 'Search';
|
||||
$lang->gitea->create = 'Create Gitea';
|
||||
$lang->gitea->edit = 'Edit Gitea';
|
||||
$lang->gitea->view = 'View Gitea';
|
||||
$lang->gitea->view = 'Gitea Details';
|
||||
$lang->gitea->delete = 'Delete Gitea';
|
||||
$lang->gitea->confirmDelete = 'Do you want to delete this Gitea server?';
|
||||
$lang->gitea->bindUser = 'Bind User';
|
||||
|
||||
@@ -4,7 +4,7 @@ $lang->gitea->browse = '浏览Gitea';
|
||||
$lang->gitea->search = '搜索';
|
||||
$lang->gitea->create = '添加Gitea';
|
||||
$lang->gitea->edit = '编辑Gitea';
|
||||
$lang->gitea->view = '查看Gitea';
|
||||
$lang->gitea->view = 'Gitea详情';
|
||||
$lang->gitea->delete = '删除Gitea';
|
||||
$lang->gitea->confirmDelete = '确认删除该Gitea吗?';
|
||||
$lang->gitea->bindUser = '绑定用户';
|
||||
|
||||
@@ -217,20 +217,6 @@ class gitlab extends control
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Bind product and gitlab projects.
|
||||
*
|
||||
* @param int $gitlabID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function bindProduct($gitlabID)
|
||||
{
|
||||
$this->view->projectPairs = $this->gitlab->getProjectPairs($gitlabID);
|
||||
$this->view->title = $this->lang->gitlab->bindProduct;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a gitlab.
|
||||
*
|
||||
|
||||
@@ -4,10 +4,9 @@ $lang->gitlab->browse = 'GitLab Browse';
|
||||
$lang->gitlab->search = 'Search';
|
||||
$lang->gitlab->create = 'Create GitLab';
|
||||
$lang->gitlab->edit = 'Edit GitLab';
|
||||
$lang->gitlab->view = 'View GitLab';
|
||||
$lang->gitlab->view = 'GitLab Details';
|
||||
$lang->gitlab->bindUser = 'Permission Setting';
|
||||
$lang->gitlab->webhook = 'Webhook';
|
||||
$lang->gitlab->bindProduct = "Import {$lang->productCommon}";
|
||||
$lang->gitlab->webhook = 'Interface: Allow Webhook Call';
|
||||
$lang->gitlab->importIssue = 'Import Issue';
|
||||
$lang->gitlab->delete = 'Delete GitLab';
|
||||
$lang->gitlab->confirmDelete = 'Do you want to delete this GitLab server?';
|
||||
@@ -33,9 +32,9 @@ $lang->gitlab->placeholderSearch = 'Enter name';
|
||||
$lang->gitlab->browseAction = 'GitLab List';
|
||||
$lang->gitlab->deleteAction = 'Delete GitLab';
|
||||
$lang->gitlab->gitlabProject = "GitLab Project";
|
||||
$lang->gitlab->browseProject = "Project";
|
||||
$lang->gitlab->browseProject = "GitLab Project List";
|
||||
$lang->gitlab->browseUser = "User";
|
||||
$lang->gitlab->browseGroup = "Group";
|
||||
$lang->gitlab->browseGroup = "GitLab Group List";
|
||||
$lang->gitlab->browseBranch = "GitLab Branch List";
|
||||
$lang->gitlab->browseTag = "GitLab Tag List";
|
||||
$lang->gitlab->browseTagPriv = "Protected tag";
|
||||
|
||||
@@ -4,10 +4,9 @@ $lang->gitlab->browse = 'GitLab Browse';
|
||||
$lang->gitlab->search = 'Search';
|
||||
$lang->gitlab->create = 'Create GitLab';
|
||||
$lang->gitlab->edit = 'Edit GitLab';
|
||||
$lang->gitlab->view = 'View GitLab';
|
||||
$lang->gitlab->view = 'GitLab Details';
|
||||
$lang->gitlab->bindUser = 'Permission Setting';
|
||||
$lang->gitlab->webhook = 'Webhook';
|
||||
$lang->gitlab->bindProduct = "Import {$lang->productCommon}";
|
||||
$lang->gitlab->webhook = 'Interface: Allow Webhook Call';
|
||||
$lang->gitlab->importIssue = 'Import Issue';
|
||||
$lang->gitlab->delete = 'Delete GitLab';
|
||||
$lang->gitlab->confirmDelete = 'Do you want to delete this GitLab server?';
|
||||
@@ -33,9 +32,9 @@ $lang->gitlab->placeholderSearch = 'Enter name';
|
||||
$lang->gitlab->browseAction = 'GitLab List';
|
||||
$lang->gitlab->deleteAction = 'Delete GitLab';
|
||||
$lang->gitlab->gitlabProject = "GitLab Project";
|
||||
$lang->gitlab->browseProject = "Project";
|
||||
$lang->gitlab->browseProject = "GitLab Project List";
|
||||
$lang->gitlab->browseUser = "User";
|
||||
$lang->gitlab->browseGroup = "Group";
|
||||
$lang->gitlab->browseGroup = "GitLab Group List";
|
||||
$lang->gitlab->browseBranch = "GitLab Branch List";
|
||||
$lang->gitlab->browseTag = "GitLab Tag List";
|
||||
$lang->gitlab->browseTagPriv = "Protected tag";
|
||||
|
||||
@@ -4,10 +4,9 @@ $lang->gitlab->browse = 'GitLab Browse';
|
||||
$lang->gitlab->search = 'Search';
|
||||
$lang->gitlab->create = 'Create GitLab';
|
||||
$lang->gitlab->edit = 'Edit GitLab';
|
||||
$lang->gitlab->view = 'View GitLab';
|
||||
$lang->gitlab->view = 'GitLab Details';
|
||||
$lang->gitlab->bindUser = 'Permission Setting';
|
||||
$lang->gitlab->webhook = 'Webhook';
|
||||
$lang->gitlab->bindProduct = "Import {$lang->productCommon}";
|
||||
$lang->gitlab->webhook = 'Interface: Allow Webhook Call';
|
||||
$lang->gitlab->importIssue = 'Import Issue';
|
||||
$lang->gitlab->delete = 'Delete GitLab';
|
||||
$lang->gitlab->confirmDelete = 'Do you want to delete this GitLab server?';
|
||||
@@ -33,9 +32,9 @@ $lang->gitlab->placeholderSearch = 'Enter name';
|
||||
$lang->gitlab->browseAction = 'GitLab List';
|
||||
$lang->gitlab->deleteAction = 'Delete GitLab';
|
||||
$lang->gitlab->gitlabProject = "GitLab Project";
|
||||
$lang->gitlab->browseProject = "Project";
|
||||
$lang->gitlab->browseProject = "GitLab Project List";
|
||||
$lang->gitlab->browseUser = "User";
|
||||
$lang->gitlab->browseGroup = "Group";
|
||||
$lang->gitlab->browseGroup = "GitLab Group List";
|
||||
$lang->gitlab->browseBranch = "GitLab Branch List";
|
||||
$lang->gitlab->browseTag = "GitLab Tag List";
|
||||
$lang->gitlab->browseTagPriv = "Protected tag";
|
||||
|
||||
@@ -4,11 +4,10 @@ $lang->gitlab->browse = '浏览GitLab';
|
||||
$lang->gitlab->search = '搜索';
|
||||
$lang->gitlab->create = '添加GitLab';
|
||||
$lang->gitlab->edit = '编辑GitLab';
|
||||
$lang->gitlab->view = '查看GitLab';
|
||||
$lang->gitlab->view = 'GitLab详情';
|
||||
$lang->gitlab->bindUser = '权限设置';
|
||||
$lang->gitlab->webhook = 'Webhook';
|
||||
$lang->gitlab->bindProduct = "关联{$lang->productCommon}";
|
||||
$lang->gitlab->importIssue = '关联issue';
|
||||
$lang->gitlab->webhook = '接口:允许Webhook调用';
|
||||
$lang->gitlab->importIssue = '关联Issue';
|
||||
$lang->gitlab->delete = '删除GitLab';
|
||||
$lang->gitlab->confirmDelete = '确认删除该GitLab吗?';
|
||||
$lang->gitlab->gitlabAvatar = '头像';
|
||||
@@ -33,9 +32,9 @@ $lang->gitlab->placeholderSearch = '请输入名称';
|
||||
$lang->gitlab->browseAction = 'GitLab列表';
|
||||
$lang->gitlab->deleteAction = '删除GitLab';
|
||||
$lang->gitlab->gitlabProject = "{$lang->gitlab->common}项目";
|
||||
$lang->gitlab->browseProject = "项目";
|
||||
$lang->gitlab->browseProject = "GitLab项目列表";
|
||||
$lang->gitlab->browseUser = "用户";
|
||||
$lang->gitlab->browseGroup = "群组";
|
||||
$lang->gitlab->browseGroup = "GitLab群组列表";
|
||||
$lang->gitlab->browseBranch = "GitLab分支列表";
|
||||
$lang->gitlab->browseTag = "GitLab标签列表";
|
||||
$lang->gitlab->browseTagPriv = "标签保护管理";
|
||||
|
||||
@@ -4,7 +4,7 @@ $lang->gogs->browse = 'Gogs Browse';
|
||||
$lang->gogs->search = 'Search';
|
||||
$lang->gogs->create = 'Create Gogs';
|
||||
$lang->gogs->edit = 'Edit Gogs';
|
||||
$lang->gogs->view = 'View Gogs';
|
||||
$lang->gogs->view = 'Gogs Details';
|
||||
$lang->gogs->delete = 'Delete Gogs';
|
||||
$lang->gogs->confirmDelete = 'Do you want to delete this Gogs server?';
|
||||
$lang->gogs->bindUser = 'Bind User';
|
||||
|
||||
@@ -4,7 +4,7 @@ $lang->gogs->browse = 'Gogs Browse';
|
||||
$lang->gogs->search = 'Search';
|
||||
$lang->gogs->create = 'Create Gogs';
|
||||
$lang->gogs->edit = 'Edit Gogs';
|
||||
$lang->gogs->view = 'View Gogs';
|
||||
$lang->gogs->view = 'Gogs Details';
|
||||
$lang->gogs->delete = 'Delete Gogs';
|
||||
$lang->gogs->confirmDelete = 'Do you want to delete this Gogs server?';
|
||||
$lang->gogs->bindUser = 'Bind User';
|
||||
|
||||
@@ -4,7 +4,7 @@ $lang->gogs->browse = 'Gogs Browse';
|
||||
$lang->gogs->search = 'Search';
|
||||
$lang->gogs->create = 'Create Gogs';
|
||||
$lang->gogs->edit = 'Edit Gogs';
|
||||
$lang->gogs->view = 'View Gogs';
|
||||
$lang->gogs->view = 'Gogs Details';
|
||||
$lang->gogs->delete = 'Delete Gogs';
|
||||
$lang->gogs->confirmDelete = 'Do you want to delete this Gogs server?';
|
||||
$lang->gogs->bindUser = 'Bind User';
|
||||
|
||||
@@ -4,7 +4,7 @@ $lang->gogs->browse = '浏览Gogs';
|
||||
$lang->gogs->search = '搜索';
|
||||
$lang->gogs->create = '添加Gogs';
|
||||
$lang->gogs->edit = '编辑Gogs';
|
||||
$lang->gogs->view = '查看Gogs';
|
||||
$lang->gogs->view = 'Gogs详情';
|
||||
$lang->gogs->delete = '删除Gogs';
|
||||
$lang->gogs->confirmDelete = '确认删除该Gogs吗?';
|
||||
$lang->gogs->bindUser = '绑定用户';
|
||||
|
||||
@@ -11,3 +11,34 @@ $config->group->acl->objectTypes['programs'] = 'program';
|
||||
$config->group->acl->objectTypes['projects'] = 'project';
|
||||
$config->group->acl->objectTypes['products'] = 'product';
|
||||
$config->group->acl->objectTypes['sprints'] = 'sprint';
|
||||
|
||||
$config->priv = new stdclass();
|
||||
$config->priv->create = new stdclass();
|
||||
$config->priv->edit = new stdclass();
|
||||
$config->priv->create->requiredFields = 'name,moduleName,methodName,view,module';
|
||||
$config->priv->edit->requiredFields = 'name,moduleName,methodName,view,module';
|
||||
|
||||
$config->privPackage = new stdclass();
|
||||
$config->privPackage->create = new stdclass();
|
||||
$config->privPackage->edit = new stdclass();
|
||||
$config->privPackage->create->requiredFields = 'name,module';
|
||||
$config->privPackage->edit->requiredFields = 'name,module';
|
||||
|
||||
global $lang;
|
||||
$config->group->priv = new stdclass();
|
||||
$config->group->priv->search['module'] = 'priv';
|
||||
$config->group->priv->search['fields']['name'] = $lang->group->privName;
|
||||
$config->group->priv->search['fields']['view'] = $lang->group->view;
|
||||
$config->group->priv->search['fields']['module'] = $lang->group->module;
|
||||
$config->group->priv->search['fields']['package'] = $lang->privpackage->belong;
|
||||
$config->group->priv->search['fields']['recommendPrivs'] = $lang->group->recommendPrivs;
|
||||
$config->group->priv->search['fields']['dependPrivs'] = $lang->group->dependentPrivs;
|
||||
$config->group->priv->search['fields']['desc'] = $lang->group->privDesc;
|
||||
|
||||
$config->group->priv->search['params']['name'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
|
||||
$config->group->priv->search['params']['view'] = array('operator' => '=', 'control' => 'select', 'values' => '');
|
||||
$config->group->priv->search['params']['module'] = array('operator' => '=', 'control' => 'select', 'values' => '');
|
||||
$config->group->priv->search['params']['package'] = array('operator' => '=', 'control' => 'select', 'values' => '');
|
||||
$config->group->priv->search['params']['recommendPrivs'] = array('operator' => 'include', 'control' => 'select', 'values' => '');
|
||||
$config->group->priv->search['params']['dependPrivs'] = array('operator' => 'include', 'control' => 'select', 'values' => '');
|
||||
$config->group->priv->search['params']['desc'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
|
||||
|
||||
+729
-16
@@ -199,25 +199,25 @@ class group extends control
|
||||
*/
|
||||
public function managePriv($type = 'byGroup', $param = 0, $menu = '', $version = '')
|
||||
{
|
||||
if($type == 'byGroup') $groupID = $param;
|
||||
if($type == 'byGroup' or $type == 'byPackage') $groupID = $param;
|
||||
|
||||
$this->view->type = $type;
|
||||
foreach($this->lang->resource as $moduleName => $action)
|
||||
{
|
||||
if($this->group->checkMenuModule($menu, $moduleName) or $type != 'byGroup') $this->app->loadLang($moduleName);
|
||||
if($this->group->checkMenuModule($menu, $moduleName) or ($type != 'byGroup' and $type != 'byPackage')) $this->app->loadLang($moduleName);
|
||||
}
|
||||
|
||||
if(!empty($_POST))
|
||||
{
|
||||
if($type == 'byGroup') $result = $this->group->updatePrivByGroup($groupID, $menu, $version);
|
||||
if($type == 'byGroup' or $type == 'byPackage') $result = $this->group->updatePrivByGroup($groupID, $menu, $version);
|
||||
if($type == 'byModule') $result = $this->group->updatePrivByModule();
|
||||
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
|
||||
|
||||
if($type == 'byGroup') return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => 'reload'));
|
||||
if($type == 'byGroup' or $type == 'byPackage') return $this->send(array('result' => 'success', 'message' => ($result ? $this->lang->group->dependPrivsSaveTip : $this->lang->saveSuccess), 'locate' => 'reload'));
|
||||
if($type == 'byModule') return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => 'parent'));
|
||||
}
|
||||
|
||||
if($type == 'byGroup')
|
||||
if($type == 'byGroup' or $type == 'byPackage')
|
||||
{
|
||||
$this->group->sortResource();
|
||||
$group = $this->group->getById($groupID);
|
||||
@@ -229,21 +229,95 @@ class group extends control
|
||||
|
||||
/* Join changelog when be equal or greater than this version.*/
|
||||
$realVersion = str_replace('_', '.', $version);
|
||||
$changelog = array();
|
||||
$changelog = array();
|
||||
foreach($this->lang->changelog as $currentVersion => $currentChangeLog)
|
||||
{
|
||||
if(version_compare($currentVersion, $realVersion, '>=')) $changelog[] = join(',', $currentChangeLog);
|
||||
}
|
||||
$changelogs = ',' . join(',', $changelog) . ',';
|
||||
|
||||
$this->lang->custom->common = $this->lang->group->config;
|
||||
if($this->config->edition == 'max' and $this->config->vision == 'rnd' and isset($this->lang->baseline)) $this->lang->baseline->common = $this->lang->group->docTemplate;
|
||||
|
||||
$modules = $this->group->getPrivManagerPairs('module', $menu);
|
||||
|
||||
$this->view->group = $group;
|
||||
$this->view->changelogs = ',' . join(',', $changelog) . ',';
|
||||
$this->view->groupPrivs = $groupPrivs;
|
||||
$this->view->groupID = $groupID;
|
||||
$this->view->menu = $menu;
|
||||
$this->view->version = $version;
|
||||
|
||||
$privs = $this->group->getPrivsListByView($menu);
|
||||
$privs = $this->group->transformPrivLang($privs);
|
||||
$privs = $this->group->getCustomPrivs($menu, $privs);
|
||||
|
||||
$privList = $modules;
|
||||
$privMethods = array();
|
||||
$selectPrivs = array();
|
||||
$selectedPrivIdList = array();
|
||||
foreach($privs as $priv)
|
||||
{
|
||||
if(!empty($version) and strpos($changelogs, ",{$priv->module}-{$priv->method},") === false) continue;
|
||||
|
||||
if(!isset($privList[$priv->parentCode])) $privList[$priv->parentCode] = array();
|
||||
if(!is_array($privList[$priv->parentCode])) $privList[$priv->parentCode] = array();
|
||||
if(!isset($privList[$priv->parentCode][$priv->parent])) $privList[$priv->parentCode][$priv->parent] = array();
|
||||
$privList[$priv->parentCode][$priv->parent][$priv->key] = $priv;
|
||||
|
||||
if(!isset($privMethod[$priv->module])) $privMethod[$priv->module] = array();
|
||||
$privMethods[$priv->module][$priv->method] = $priv->method;
|
||||
|
||||
if(!isset($selectPrivs[$priv->parentCode])) $selectPrivs[$priv->parentCode] = array();
|
||||
if(!isset($selectPrivs[$priv->parentCode][$priv->parent])) $selectPrivs[$priv->parentCode][$priv->parent] = 0;
|
||||
if(!empty($groupPrivs[$priv->module][$priv->method]))
|
||||
{
|
||||
$selectPrivs[$priv->parentCode][$priv->parent] ++;
|
||||
if(isset($priv->id)) $selectedPrivIdList[$priv->id] = $priv->id;
|
||||
}
|
||||
}
|
||||
foreach($privList as $module => $privs)
|
||||
{
|
||||
if(!is_array($privList[$module])) unset($privList[$module]);
|
||||
}
|
||||
|
||||
if(empty($menu) or $menu == 'general')
|
||||
{
|
||||
$unassignedModule = array_diff(array_keys(get_object_vars($this->lang->resource)), array_keys($modules));
|
||||
foreach($unassignedModule as $index => $module)
|
||||
{
|
||||
if(!$this->group->checkMenuModule($menu, $module) or isset($privList[$module])) continue;
|
||||
|
||||
$selectPrivs[$module] = array();
|
||||
$selectPrivs[$module][0] = 0;
|
||||
|
||||
foreach($this->lang->resource->{$module} as $method => $methodLabel)
|
||||
{
|
||||
if(isset($privMethods[$module][$method])) continue;
|
||||
$privMethods[$module][$method] = $method;
|
||||
|
||||
$privList[$module][0]["{$module}-$method"] = new stdclass();
|
||||
$privList[$module][0]["{$module}-$method"]->module = $module;
|
||||
$privList[$module][0]["{$module}-$method"]->method = $method;
|
||||
$privList[$module][0]["{$module}-$method"]->name = $this->lang->{$module}->{$methodLabel};
|
||||
$privList[$module][0]["{$module}-$method"]->action = "{$module}-{$method}";
|
||||
if(!empty($groupPrivs[$module][$method])) $selectPrivs[$module][0] ++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$groupPrivsIdList = $this->group->getPrivsIdListByGroup($groupID);
|
||||
$excludePrivsIdList = array_diff(array_keys($groupPrivsIdList), $selectedPrivIdList);
|
||||
$relatedPrivData = $this->group->getRelatedPrivs($selectedPrivIdList, '', $excludePrivsIdList);
|
||||
|
||||
unset($privList['index']);
|
||||
|
||||
$this->view->privList = $privList;
|
||||
$this->view->privMethods = $privMethods;
|
||||
$this->view->selectPrivs = $selectPrivs;
|
||||
$this->view->privPackages = $this->group->getPrivManagerPairs('package');
|
||||
$this->view->selectedPrivIdList = $selectedPrivIdList;
|
||||
$this->view->relatedPrivData = $relatedPrivData;
|
||||
$this->view->excludePrivsIdList = $excludePrivsIdList;
|
||||
}
|
||||
elseif($type == 'byModule')
|
||||
{
|
||||
@@ -251,17 +325,49 @@ class group extends control
|
||||
$this->view->title = $this->lang->company->common . $this->lang->colon . $this->lang->group->managePriv;
|
||||
$this->view->position[] = $this->lang->group->managePriv;
|
||||
|
||||
foreach($this->lang->resource as $module => $moduleActions)
|
||||
$privs = $this->group->getPrivsListByView('');
|
||||
$privs = $this->group->getCustomPrivs('', $privs);
|
||||
$modules = $this->dao->select('*')->from(TABLE_PRIVMANAGER)->where('type')->eq('module')->fetchAll('code');
|
||||
$modulePairs = $this->group->getPrivManagerPairs('module');
|
||||
$unassignedModules = array_diff(array_keys(array_filter(get_object_vars($this->lang->resource), function($modulePrivs){return !empty((array)$modulePrivs);})), array_keys($modulePairs));
|
||||
foreach($unassignedModules as $unassignedModule)
|
||||
{
|
||||
$modules[$module] = $this->lang->$module->common;
|
||||
foreach($moduleActions as $key => $action)
|
||||
{
|
||||
$actions[$module][$key] = $this->lang->$module->$action;
|
||||
}
|
||||
$this->app->loadLang($unassignedModule);
|
||||
$modulePairs[$unassignedModule] = isset($this->lang->{$unassignedModule}->common) ? $this->lang->{$unassignedModule}->common : $unassignedModule;
|
||||
}
|
||||
$this->view->groups = $this->group->getPairs();
|
||||
$this->view->modules = $modules;
|
||||
$this->view->actions = $actions;
|
||||
|
||||
$packageGroup = array();
|
||||
foreach($modulePairs as $moduleCode => $moduleLang)
|
||||
{
|
||||
$modulePackages = $this->group->getPrivManagerPairs('package', $moduleCode);
|
||||
$unassignedPrivs = $this->group->getUnassignedPrivsByModule($moduleCode);
|
||||
$packageGroup[$moduleCode] = isset($modules[$moduleCode]) ? $modulePackages : array();
|
||||
$unassignedPrivPackages = isset($modules[$moduleCode]) ? $modules[$moduleCode]->id : 0;
|
||||
$packageGroup[$moduleCode] = $packageGroup[$moduleCode] + array($unassignedPrivPackages => $this->lang->group->other);
|
||||
}
|
||||
|
||||
$hasPrivModule = array();
|
||||
foreach($privs as $privKey => $priv)
|
||||
{
|
||||
if(!isset($modulePairs[$priv->module])) $modulePairs[$priv->module] = isset($this->lang->{$priv->module}->common) ? $this->lang->{$priv->module}->common : $priv->module;
|
||||
|
||||
$hasPrivModule[] = $priv->parentCode;
|
||||
}
|
||||
$emptyPrivModules = array_diff(array_keys($modulePairs), $hasPrivModule);
|
||||
foreach($emptyPrivModules as $emptyPrivModule) unset($modulePairs[$emptyPrivModule]);
|
||||
|
||||
$indexPrivs = $this->group->getPrivByParent(isset($packageGroup['index']) ? array_keys($packageGroup['index']) : $modules['index']->id);
|
||||
$indexPrivs = $this->group->transformPrivLang($indexPrivs);
|
||||
foreach($indexPrivs as $privID => $priv)
|
||||
{
|
||||
$indexPrivs["{$priv->module}-{$priv->method}"] = $priv->name;
|
||||
unset($indexPrivs[$privID]);
|
||||
}
|
||||
|
||||
$this->view->groups = $this->group->getPairs();
|
||||
$this->view->modulePairs = $modulePairs;
|
||||
$this->view->packageGroup = $packageGroup;
|
||||
$this->view->indexPrivs = $indexPrivs;
|
||||
}
|
||||
$this->display();
|
||||
}
|
||||
@@ -380,4 +486,611 @@ class group extends control
|
||||
return print(js::locate($this->createLink('group', 'browse'), 'parent'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit manage priv.
|
||||
*
|
||||
* @param string $browseType
|
||||
* @param string $view
|
||||
* @param int $paramID
|
||||
* @param int $recTotal
|
||||
* @param int $recPerPage
|
||||
* @param int $pageID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function editManagePriv($browseType = '', $view = '', $paramID = 0, $recTotal = 0, $recPerPage = 100, $pageID = 1)
|
||||
{
|
||||
if(empty($browseType) and $browseType != 'bysearch') $browseType = $this->cookie->managePrivEditType ? $this->cookie->managePrivEditType : 'bycard';
|
||||
if($browseType == 'bysearch' and $this->cookie->managePrivEditType == 'bycard') $browseType = 'bycard';
|
||||
|
||||
$moduleLang = $this->group->getMenuModules($view, true);
|
||||
|
||||
if($browseType == 'bycard')
|
||||
{
|
||||
$privs = $this->group->getPrivsListByView($view);
|
||||
$privPackages = $this->group->getPrivPackagePairs();
|
||||
$privLang = $this->group->getPrivLangPairs();
|
||||
|
||||
$privList = array();
|
||||
foreach($privs as $privID => $priv)
|
||||
{
|
||||
if(!isset($privList[$priv->module])) $privList[$priv->module] = array();
|
||||
if(!isset($privList[$priv->module][$priv->package])) $privList[$priv->module][$priv->package] = array();
|
||||
$privList[$priv->module][$priv->package][$priv->id] = $priv;
|
||||
}
|
||||
|
||||
$this->view->privLang = $privLang;
|
||||
$this->view->privPackages = $privPackages;
|
||||
}
|
||||
else
|
||||
{
|
||||
$privList = $browseType != 'bysearch' ? $this->group->getPrivsListByView($view) : $this->group->getPrivsListBySearch($paramID);
|
||||
|
||||
foreach($privList as $privID => $priv) if(!$this->group->checkMenuModule($view, $priv->module)) unset($privList[$privID]);
|
||||
|
||||
/* Pager. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$recTotal = count($privList);
|
||||
$pager = new pager($recTotal, $recPerPage, $pageID);
|
||||
$privList = array_chunk($privList, $pager->recPerPage, true);
|
||||
$privList = empty($privList) ? $privList : $privList[$pageID - 1];
|
||||
|
||||
/* Build the search form. */
|
||||
$queryID = ($browseType == 'bysearch') ? (int)$paramID : 0;
|
||||
$actionURL = $this->createLink('group', 'editManagePriv', "browseType=bysearch&view=¶mID=myQueryID&recTotal=$recTotal&recPerPage=$recPerPage");
|
||||
$this->group->buildPrivSearchForm($queryID, $actionURL);
|
||||
|
||||
$privRelations = $this->group->getPrivRelationsByIdList(array_keys($privList));
|
||||
if(!isset($privRelations['recommend'])) $privRelations['recommend'] = array();
|
||||
if(!isset($privRelations['depend'])) $privRelations['depend'] = array();
|
||||
|
||||
$this->view->pager = $pager;
|
||||
$this->view->privRelations = $privRelations;
|
||||
}
|
||||
|
||||
$this->view->title = $this->lang->group->editManagePriv;
|
||||
$this->view->browseType = $browseType;
|
||||
$this->view->privList = $privList;
|
||||
$this->view->packages = $this->group->getPrivPackagePairs($view);
|
||||
$this->view->moduleLang = $moduleLang;
|
||||
$this->view->modulePackages = $this->group->getModuleAndPackageTree();
|
||||
$this->view->view = $view;
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Batch change package.
|
||||
*
|
||||
* @param string $module
|
||||
* @param int $packageID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function batchChangePackage($module, $packageID)
|
||||
{
|
||||
if(empty($_POST['privIdList'])) return print(js::reload('parent'));
|
||||
$privIdList = array_unique($_POST['privIdList']);
|
||||
$allChanges = $this->group->batchChangePackage($privIdList, $module, $packageID);
|
||||
if(dao::isError()) return print(js::error(dao::getError()));
|
||||
|
||||
$this->loadModel('action');
|
||||
foreach($allChanges as $privID => $changes)
|
||||
{
|
||||
$actionID = $this->action->create('privlang', $privID, 'Edited');
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
}
|
||||
return print(js::reload('parent'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Manage privilege packages.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function managePrivPackage()
|
||||
{
|
||||
$this->view->title = $this->lang->group->managePrivPackage;
|
||||
$this->view->packagesTreeList = $this->group->getPrivPackageTreeList();
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a privilege package.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function createPrivPackage()
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$packageID = $this->group->createPrivPackage();
|
||||
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
|
||||
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => 'parent'));
|
||||
}
|
||||
|
||||
$this->view->title = $this->lang->group->createPrivPackage;
|
||||
$this->view->modules = $this->group->getPrivModules();
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit a privilege package.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function editPrivPackage($privPackageID)
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$changes = $this->group->updatePrivPackage($privPackageID);
|
||||
if($changes)
|
||||
{
|
||||
$actionID = $this->loadModel('action')->create('privpackage', $privPackageID, 'Edited');
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
}
|
||||
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
|
||||
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => 'parent'));
|
||||
}
|
||||
|
||||
$this->view->title = $this->lang->group->editPrivPackage;
|
||||
$this->view->privPackage = $this->group->getPrivPackageByID($privPackageID);
|
||||
$this->view->modules = $this->group->getPrivModules();
|
||||
$this->view->actions = $this->loadModel('action')->getList('privpackage', $privPackageID);
|
||||
$this->view->users = $this->loadModel('user')->getPairs();
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sort priv packages.
|
||||
*
|
||||
* @param int $parentID
|
||||
* @param string $type
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function sortPrivPackages($parentID = 0, $type = '')
|
||||
{
|
||||
$orders = $_POST['orders'];
|
||||
if(empty($orders)) return false;
|
||||
if($type == 'view')
|
||||
{
|
||||
$orders = str_replace('View,', ',', $orders);
|
||||
$orders = trim($orders, ',');
|
||||
$this->loadModel('setting')->setItem("system.priv.views", $orders);
|
||||
}
|
||||
if($type == 'module')
|
||||
{
|
||||
$orders = trim($orders, ',');
|
||||
$parentID = rtrim($parentID, 'View');
|
||||
$this->loadModel('setting')->setItem("system.priv.{$parentID}Modules", $orders);
|
||||
}
|
||||
if($type == 'package')
|
||||
{
|
||||
$orders = explode(',', $orders);
|
||||
foreach($orders as $index => $id)
|
||||
{
|
||||
if(!empty($id)) $this->dao->update(TABLE_PRIVPACKAGE)->set('order')->eq(($index + 1) * 5)->where('id')->eq($id)->exec();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a priv package.
|
||||
*
|
||||
* @param int $privPackageID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function deletePrivPackage($privPackageID, $confirm = 'no')
|
||||
{
|
||||
if($confirm == 'no')
|
||||
{
|
||||
return print(js::confirm($this->lang->group->confirmDeleteAB, $this->createLink('group', 'deletePrivPackage', "privPackageID=$privPackageID&confirm=yes")));
|
||||
}
|
||||
else
|
||||
{
|
||||
$privPackage = $this->group->getPrivPackageByID($privPackageID);
|
||||
$this->group->deletePrivPackage($privPackageID);
|
||||
if(!dao::isError()) $this->loadModel('action')->create('privpackage', $privPackageID, 'deleted', '', zget($privPackage, 'name'));
|
||||
|
||||
return print(js::reload('parent'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add recommendation.
|
||||
*
|
||||
* @param string $privIdList
|
||||
* @param string $type depend|recommend
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function addRelation($privIdList, $type)
|
||||
{
|
||||
if(strpos("depend|recommend", $type) === false) return print('Error type');
|
||||
|
||||
if($this->server->request_method == 'POST')
|
||||
{
|
||||
if(empty($_POST['relation'])) return print(js::alert($this->lang->group->noticeNoChecked));
|
||||
|
||||
$this->group->saveRelation($privIdList, $type);
|
||||
if(strpos($privIdList, ',') === false) print(js::execute("if(typeof(parent.parent.getSideRelation) == 'function') parent.parent.getSideRelation({$privIdList})"));
|
||||
return print(js::reload('parent'));
|
||||
}
|
||||
|
||||
$privs = $this->group->getPrivByIdList($privIdList);
|
||||
$modules = array();
|
||||
foreach($privs as $priv) $modules[$priv->module] = $priv->module;
|
||||
|
||||
$modulePrivs = $this->group->getPrivByModule($modules);
|
||||
$packageIdList = array();
|
||||
foreach($modulePrivs as $packagePrivs) $packageIdList = array_unique(array_merge($packageIdList, array_keys($packagePrivs)));
|
||||
|
||||
$this->view->privs = $privs;
|
||||
$this->view->modules = array('' => $this->lang->group->selectModule) + $this->group->getMenuModules(null, true);
|
||||
$this->view->packages = $this->dao->select('*')->from(TABLE_PRIVPACKAGE)->where('id')->in($packageIdList)->orderBy('`order`')->fetchPairs('id', 'name');
|
||||
$this->view->modulePrivs = $modulePrivs;
|
||||
$this->view->type = $type;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete relation.
|
||||
*
|
||||
* @param string $type recommend|depend
|
||||
* @param int $privID
|
||||
* @param int $relationPriv
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function deleteRelation($type, $privID, $relationPriv)
|
||||
{
|
||||
$this->dao->delete()->from(TABLE_PRIVRELATION)->where('type')->eq($type)->andWhere('priv')->eq($privID)->andWhere('relationPriv')->eq($relationPriv)->exec();
|
||||
}
|
||||
|
||||
/**
|
||||
* Batch delete relation.
|
||||
*
|
||||
* @param string $privIdList
|
||||
* @param string $type recommend|depend
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function batchDeleteRelation($privIdList, $type)
|
||||
{
|
||||
if(strpos("depend|recommend", $type) === false) return print('Error type');
|
||||
|
||||
if($this->server->request_method == 'POST')
|
||||
{
|
||||
if(empty($_POST['relation'])) return print(js::alert($this->lang->group->noticeNoChecked));
|
||||
|
||||
$data = fixer::input('post')->get();
|
||||
$deletedPriv = array();
|
||||
foreach($data->relation as $module => $relations) $deletedPriv = array_merge($deletedPriv, $relations);
|
||||
$this->dao->delete()->from(TABLE_PRIVRELATION)->where('type')->eq($type)->andWhere('priv')->in($privIdList)->andWhere('relationPriv')->in($deletedPriv)->exec();
|
||||
|
||||
return print(js::reload('parent'));
|
||||
}
|
||||
|
||||
$privs = $this->group->getPrivByIdList($privIdList);
|
||||
$modules = array();
|
||||
foreach($privs as $priv) $modules[$priv->module] = $priv->module;
|
||||
|
||||
$modulePrivs = $this->group->getPrivByModule($modules);
|
||||
$packageIdList = array();
|
||||
foreach($modulePrivs as $packagePrivs) $packageIdList = array_unique(array_merge($packageIdList, array_keys($packagePrivs)));
|
||||
|
||||
$this->view->privs = $privs;
|
||||
$this->view->modules = array('' => $this->lang->group->selectModule) + $this->group->getMenuModules(null, true);
|
||||
$this->view->packages = $this->dao->select('*')->from(TABLE_PRIVPACKAGE)->where('id')->in($packageIdList)->orderBy('`order`')->fetchPairs('id', 'name');
|
||||
$this->view->modulePrivs = $modulePrivs;
|
||||
$this->view->type = $type;
|
||||
$this->display('group', 'addrelation');
|
||||
}
|
||||
|
||||
/**
|
||||
* Ajax get priv tree.
|
||||
*
|
||||
* @param string $privIdList
|
||||
* @param string $module
|
||||
* @param string $type recommend|depend
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function ajaxGetPrivTree($privIdList, $module, $type = 'recommend')
|
||||
{
|
||||
if(is_string($privIdList)) $privIdList = explode(',', $privIdList);
|
||||
|
||||
$modulePrivs = $this->group->getPrivByModule($module);
|
||||
$packageIdList = array();
|
||||
foreach($modulePrivs as $packagePrivs) $packageIdList = array_unique(array_merge($packageIdList, array_keys($packagePrivs)));
|
||||
|
||||
$modules = $this->group->getMenuModules(null, true);
|
||||
$packages = $this->dao->select('*')->from(TABLE_PRIVPACKAGE)->where('id')->in($packageIdList)->orderBy('`order`')->fetchPairs('id', 'name');
|
||||
|
||||
$tree = "<ul class='tree' data-ride='tree'><li>";
|
||||
$tree .= html::a('#', $modules[$module]);
|
||||
$tree .= "<ul class='relationBox'>";
|
||||
foreach($packages as $packageID => $packageName)
|
||||
{
|
||||
if(empty($modulePrivs[$module][$packageID])) continue;
|
||||
$tree .= "<li class='clearleft'>";
|
||||
$tree .= html::a('#', $packageName);
|
||||
$tree .= '<ul>';
|
||||
|
||||
foreach($modulePrivs[$module][$packageID] as $id => $modulePriv)
|
||||
{
|
||||
$tree .= '<li>';
|
||||
$tree .= html::checkbox("relation[$module]", array($id => $modulePriv->name), '');
|
||||
$tree .= '</li>';
|
||||
}
|
||||
$tree .= '</ul></li>';
|
||||
unset($modulePrivs[$module][$packageID]);
|
||||
}
|
||||
if(!empty($modulePrivs[$module]))
|
||||
{
|
||||
$tree .= "<li class='clearleft'>";
|
||||
$tree .= html::a('#', $this->lang->group->unassigned);
|
||||
$tree .= '<ul>';
|
||||
foreach($modulePrivs[$module] as $packageID => $packagePrivs)
|
||||
{
|
||||
foreach($packagePrivs as $id => $modulePriv)
|
||||
{
|
||||
$tree .= '<li>';
|
||||
$tree .= html::checkbox("relation[$module]", array($id => $modulePriv->name), '');
|
||||
$tree .= '</li>';
|
||||
}
|
||||
}
|
||||
$tree .= '</ul></li>';
|
||||
}
|
||||
$tree .= '</ul></li></ul>';
|
||||
return print($tree);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a priv.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function createPriv()
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$packageID = $this->group->createPriv();
|
||||
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
|
||||
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => 'parent'));
|
||||
}
|
||||
$views = $this->loadModel('setting')->getItem("owner=system&module=priv&key=views");
|
||||
$views = explode(',', $views);
|
||||
$moduleLang = $this->group->getMenuModules('', true);
|
||||
foreach($views as $index => $view)
|
||||
{
|
||||
$views[$view] = isset($this->lang->{$view}->common) ? $this->lang->{$view}->common : zget($moduleLang, $view);
|
||||
unset($views[$index]);
|
||||
}
|
||||
|
||||
$this->view->title = $this->lang->group->createPriv;
|
||||
$this->view->views = array('' => '') + $views;
|
||||
$this->view->modules = array('' => '') + $this->group->getPrivModules('', 'noViewName');
|
||||
$this->view->packages = array('' => '') + $this->group->getPrivPackagePairs();
|
||||
$this->view->moduleViewPairs = $this->group->getPrivModuleViewPairs();
|
||||
$this->view->packageModulePairs = $this->group->getPrivPackagePairs('', '', 'module');
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit a priv.
|
||||
*
|
||||
* @param int $privID
|
||||
* @access public
|
||||
* @return void
|
||||
**/
|
||||
public function editPriv($privID)
|
||||
{
|
||||
$privID = intval($privID);
|
||||
$priv = $this->group->getPrivByID($privID);
|
||||
|
||||
if(!$priv)
|
||||
{
|
||||
return print(js::alert($this->lang->group->noneProject));
|
||||
}
|
||||
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$currentLang = $this->app->clientLang ? : 'zh-cn';
|
||||
$changes = $this->group->updatePriv($privID, $currentLang);
|
||||
if($changes)
|
||||
{
|
||||
$actionID = $this->loadModel('action')->create('privlang', $privID, 'Edited');
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
}
|
||||
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
|
||||
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => 'parent'));
|
||||
|
||||
$this->send(array('result' => $responseResult, 'message' => $responseMessage, 'locate' => $locate));
|
||||
}
|
||||
|
||||
$views = $this->loadModel('setting')->getItem("owner=system&module=priv&key=views");
|
||||
$views = explode(',', $views);
|
||||
$moduleLang = $this->group->getMenuModules('', true);
|
||||
foreach($views as $index => $view)
|
||||
{
|
||||
$views[$view] = isset($this->lang->{$view}->common) ? $this->lang->{$view}->common : zget($moduleLang, $view);
|
||||
unset($views[$index]);
|
||||
}
|
||||
$moduleViewPairs = $this->group->getPrivModuleViewPairs();
|
||||
$priv->view = zget($moduleViewPairs, $priv->module, '');
|
||||
|
||||
$this->view->title = $this->lang->group->editPriv;
|
||||
$this->view->views = array('' => '') + $views;
|
||||
$this->view->modules = array('' => '') + $this->group->getPrivModules($priv->view, 'noViewName');
|
||||
$this->view->packages = array('' => '') + $this->group->getPrivPackagePairs($priv->view, $priv->module);
|
||||
$this->view->moduleViewPairs = $moduleViewPairs;
|
||||
$this->view->packageModulePairs = $this->group->getPrivPackagePairs('', '', 'module');
|
||||
$this->view->priv = $priv;
|
||||
$this->view->actions = $this->loadModel('action')->getList('privlang', $privID);
|
||||
$this->view->users = $this->loadModel('user')->getPairs();
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a priv.
|
||||
*
|
||||
* @param int $privID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function deletePriv($privID, $confirm = 'no')
|
||||
{
|
||||
if($confirm == 'no')
|
||||
{
|
||||
return print(js::confirm($this->lang->group->confirmDeleteAB, $this->createLink('group', 'deletePriv', "privID=$privID&confirm=yes")));
|
||||
}
|
||||
else
|
||||
{
|
||||
$priv = $this->group->getPrivByID($privID);
|
||||
$this->group->deletePriv($privID);
|
||||
if(!dao::isError()) $this->loadModel('action')->create('privlang', $privID, 'deleted', '', "$priv->moduleName-$priv->methodName");
|
||||
|
||||
return print(js::reload('parent'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ajax get priv modules by view.
|
||||
*
|
||||
* @param string $viewName
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function ajaxGetPrivModules($viewName = '')
|
||||
{
|
||||
$modules = $this->group->getPrivModules($viewName, 'noViewName');
|
||||
echo html::select('module', array('' => '') + $modules, '', "class='form-control picker-select' onchange='loadPackages(this.value, \"module\")'");
|
||||
}
|
||||
|
||||
/**
|
||||
* Ajax get priv packages by view or module.
|
||||
*
|
||||
* @param string $object
|
||||
* @param string $type
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function ajaxGetPrivPackages($object = '', $type = 'view')
|
||||
{
|
||||
$packages = array();
|
||||
if($type == 'view') $packages = $this->group->getPrivPackagePairs($object);
|
||||
if($type == 'module') $packages = $this->group->getPrivPackagePairs('', $object);
|
||||
echo html::select('package', array('' => '') + $packages, '', "class='form-control picker-select' onchange='changeViewAndModule(this.value)'");
|
||||
}
|
||||
|
||||
/**
|
||||
* AJAX: Get priv's related priv list.
|
||||
*
|
||||
* @param int $privID
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function ajaxGetPrivRelations($privID)
|
||||
{
|
||||
$relatedPrivs = $this->group->getPrivRelation($privID);
|
||||
if(empty($relatedPrivs)) return print('');
|
||||
|
||||
$moduleLang = $this->group->getMenuModules('', true);
|
||||
$privList = array('depend' => array(), 'recommend' => array());
|
||||
foreach($relatedPrivs as $type => $relations)
|
||||
{
|
||||
foreach($relations as $relatedPriv)
|
||||
{
|
||||
$module = $relatedPriv->module;
|
||||
if(!isset($privList[$type][$module])) $privList[$type][$module] = array();
|
||||
$privList[$type][$module]['title'] = zget($moduleLang, $module, $module);
|
||||
$privList[$type][$module]['module'] = $relatedPriv->module;
|
||||
$privList[$type][$module]['children'][] = array('title' => $relatedPriv->name, 'relationPriv' => $relatedPriv->id, 'privID' => $privID);
|
||||
}
|
||||
$privList[$type] = array_values($privList[$type]);
|
||||
}
|
||||
return print(json_encode($privList));
|
||||
}
|
||||
|
||||
/**
|
||||
* AJAX: update priv order.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function ajaxUpdatePrivOrder()
|
||||
{
|
||||
if(!empty($_POST)) $this->group->updatePrivOrder();
|
||||
}
|
||||
|
||||
/**
|
||||
* AJAX: Get privs by parents.
|
||||
*
|
||||
* @param string $module
|
||||
* @param string $parentType
|
||||
* @param string $parentList
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function ajaxGetPrivByParents($module, $parentType, $parentList)
|
||||
{
|
||||
$menu = isset($this->lang->navGroup->$module) ? $this->lang->navGroup->$module : $module;
|
||||
$privList = array();
|
||||
if($parentType == 'module')
|
||||
{
|
||||
$privs = $this->group->getPrivByModule($parentList);
|
||||
foreach($privs as $moduleID => $packages)
|
||||
{
|
||||
foreach($packages as $packageID => $packagePrivs)
|
||||
{
|
||||
foreach($packagePrivs as $privID => $packagePriv)
|
||||
{
|
||||
$privList["{$packagePriv->module}-{$packagePriv->method}"] = $packagePriv;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
elseif($parentType == 'package')
|
||||
{
|
||||
$privList = $this->group->getPrivByParent(trim($parentList, ','));
|
||||
foreach($privList as $privID => $priv)
|
||||
{
|
||||
$privList["{$priv->module}-{$priv->method}"] = $priv;
|
||||
unset($privList[$privID]);
|
||||
}
|
||||
}
|
||||
|
||||
$privList = $this->group->getCustomPrivs($menu, $privList);
|
||||
foreach($privList as $privKey => $priv)
|
||||
{
|
||||
if((isset($priv->parentCode) and $priv->parentCode != $module) or (strpos($parentList, ",{$priv->parent},") === false and $parentType == 'package')) unset($privList[$privKey]);
|
||||
}
|
||||
$privList = $this->group->transformPrivLang($privList, true);
|
||||
|
||||
return print(html::select('actions[]', $privList, '', "multiple='multiple' class='form-control'"));
|
||||
}
|
||||
|
||||
/**
|
||||
* AJAX: Get priv's dependent priv list.
|
||||
*
|
||||
* @param string $privIdList
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function ajaxGetRelatedPrivs()
|
||||
{
|
||||
$privIdList = zget($_POST, 'privList');
|
||||
$recommedSelect = zget($_POST, 'recommedSelect');
|
||||
$excludeIdList = zget($_POST, 'excludeIdList');
|
||||
$privList = $this->group->getRelatedPrivs($privIdList, '', $excludeIdList, $recommedSelect);
|
||||
return print(json_encode($privList));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
.tree .relationBox > li > ul > li{float:left; width: 150px;}
|
||||
.clearleft {clear:left;}
|
||||
#dataform {min-height:240px;}
|
||||
@@ -0,0 +1 @@
|
||||
#createPrivPackage .c-name {width: 135px;}
|
||||
@@ -0,0 +1,30 @@
|
||||
.mt-m {margin-top: 16px;}
|
||||
.flex-center {display: flex; justify-content: center; align-items: center;}
|
||||
.flex-space-center {display: flex; justify-content: space-between; align-items: center;}
|
||||
#mainContent {display: flex; gap: 16px; height: calc(100vh - 120px)}
|
||||
#mainContent > .main {flex: 1 1 75%; overflow-y: auto; min-height: 480px;}
|
||||
#mainContent > .side {flex: 1 1 25%;}
|
||||
|
||||
.priv-panel {background: #fff; padding: 10px; box-shadow: 0 1px 1px rgb(0 0 0 / 5%), 0 2px 6px 0 rgb(0 0 0 / 5%);}
|
||||
.priv-panel > .panel-content {height: calc(50vh - 160px); overflow-y: auto; min-height: 140px;}
|
||||
.priv-panel > .panel-bottom {padding-top: 20px;}
|
||||
|
||||
/* permission-table */
|
||||
.td-sm {width: 120px;}
|
||||
.td-md {width: 240px;}
|
||||
.sorter-group {display: flex; flex-wrap: wrap;}
|
||||
.sorter-group > .group-item {flex: 0 0 25%; overflow: hidden;}
|
||||
.checkbox-primary > input {width: 20px;}
|
||||
.permission-row label.active {background: #e6f0ff;}
|
||||
|
||||
/* tree */
|
||||
.tree ul > li {display: inline-block; width: 50%;}
|
||||
.priv-item > .icon {padding-left: 5px;}
|
||||
.empty-tip {height: 100%;}
|
||||
|
||||
#bysearchTab {border: none;}
|
||||
#privListTable .c-name {min-width: 100px;}
|
||||
#privListTable .c-view, #privListTable .c-module, #privListTable .c-package {width: 100px;}
|
||||
#privListTable .c-privs {min-width: 180px;}
|
||||
#privListTable .c-actions {width: 50px;}
|
||||
#privListTable tbody tr td {overflow: hidden; white-space: nowrap;}
|
||||
@@ -0,0 +1 @@
|
||||
#editPriv .c-name {width: 135px;}
|
||||
@@ -1,14 +1,87 @@
|
||||
.flex-center {display: flex; justify-content: center; align-items: center;}
|
||||
#mainContainer {display: flex; gap: 16px; height: calc(100vh - 165px);}
|
||||
#mainContainer > .main {flex: 1 1 75%; overflow-y: auto; padding: 0px; border: 1px solid #FFF; box-sizing: content-box;}
|
||||
#mainContainer > .side {flex: 1 1 25%;}
|
||||
#mainContainer .main .btn-group {position: absolute; visibility: hidden; top: 2px; display: inline-block; z-index: 2;}
|
||||
.priv-panel {background: #fff; padding: 10px 16px; box-shadow: 0 1px 1px rgb(0 0 0 / 5%), 0 2px 6px 0 rgb(0 0 0 / 5%);}
|
||||
.priv-panel {height: 40%;}
|
||||
.priv-panel .table-empty-tip {padding: calc(15% - 10px) 10px;}
|
||||
.priv-panel + .priv-panel .table-empty-tip {padding: calc(30% - 20px) 10px;}
|
||||
.priv-panel + .priv-panel {margin-top: 16px; height: calc(60% - 16px);}
|
||||
.priv-panel > .panel-content {height: calc(100% - 25px); overflow-y: auto; padding-left: 4px; margin-top: 10px;}
|
||||
.priv-panel > .panel-bottom {padding-top: 20px;}
|
||||
.priv-panel > .panel-title {position: relative;}
|
||||
.priv-panel > .panel-title > .icon-help {position: absolute; top: 3px; margin-left: 8px;}
|
||||
.icon-help + .popover {font-weight: 400;}
|
||||
.menuTree li.has-list:not(:first-child) {margin-top: 20px;}
|
||||
|
||||
/* tree */
|
||||
.tree ul > li {display: inline-block; width: 50%;}
|
||||
.menuTree li > ul {margin-bottom: 0px;}
|
||||
.menuTree > li.has-list.open:before {top: 25px;}
|
||||
.priv-item > .icon {padding-left: 5px;}
|
||||
.empty-tip {height: 100%;}
|
||||
.menuTree > li {padding-left: 2px;}
|
||||
.menuTree > li.has-list.open:before {left: 9px;}
|
||||
.menuTree ul > li {padding-left: 20px; padding-top: 10px;}
|
||||
|
||||
.table-bymodule select.form-control {height: 250px;}
|
||||
.group-item {display: block; width: 220px; float: left; font-size: 14px;}
|
||||
.group-item {display: block; width: 170px; float: left; font-size: 13px;}
|
||||
.group-item .checkbox-inline label {padding-left: 8px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;}
|
||||
#privList .package label, #privList .module label {overflow: visible;}
|
||||
.table.table-form tbody > tr:last-child td {border-top: 1px solid #ddd;}
|
||||
@-moz-document url-prefix() {.table.table-form tbody > tr:last-child td, .table.table-form tbody > tr:last-child th {border-bottom: 1px solid #ddd;};}
|
||||
|
||||
#mainMenu #groupName {line-height: 33px; float: left;}
|
||||
.checkbox-right {padding-left: 0px !important;}
|
||||
|
||||
td.menus {border-right: 0; padding-right: 0; width: 220px !important;}
|
||||
td.menus + td {border-left: 0;}
|
||||
.menus .checkbox-primary {float: left; width: 220px;}
|
||||
.menus .checkbox-primary:first-child {float: left; width: auto;}
|
||||
.menus a {margin-left: 10px;}
|
||||
#privList td.menus {border-right: 0; padding-right: 0; width: 170px !important;}
|
||||
#privList td.menus + td {border-left: 0; padding-left: 0px; padding}
|
||||
#privList .menus .checkbox-primary {float: left; width: 160px;}
|
||||
#privList .menus .checkbox-primary:first-child {float: left; width: auto;}
|
||||
#privList .menus a {margin-left: 10px;}
|
||||
|
||||
#privList {margin-bottom: 0px;}
|
||||
#privList tr:hover>td {background-color: #FFF;}
|
||||
#privList th.module {width: 142px; min-width: 142px; background-color: #EDEEF28C; font-weight: 600;}
|
||||
#privList th.package {width: 142px; min-width: 142px; background-color: #F4F5F78C; font-weight: 600;}
|
||||
#privList th .checkbox-inline input {margin-left: 0px;}
|
||||
#privList .check-all {display: inline-block;}
|
||||
#privList .check-all > label {padding-left: 0; font-weight: 600;}
|
||||
#privList .text-middle.text-left {padding-left: 24px;}
|
||||
#privList tbody > tr > td {padding: 4px 20px 20px 20px;}
|
||||
#privList .group-item {margin-top: 16px;}
|
||||
#privList .group-item .checkbox-inline label {padding-left: 3px;}
|
||||
.table-bordered td, .table-bordered th {border-top-style: dashed; border-bottom-style: dashed; border-color: #FFF;}
|
||||
.table-bordered td, .table-bordered thead th:last-child {border-color: #F5F6F8;}
|
||||
.check-all>label.checkbox-indeterminate-block:before {content: ' '; opacity: 1; transform: scale(1);}
|
||||
.priv-footer {padding: 14px; z-index: 11; box-shadow: inset 0 0px 0px rgb(0 0 0 / 10%), 0 0 5px rgb(0 0 0 / 10%); position: relative; min-height: 40px; background: #fff; border-radius: 0 0 4px 4px;}
|
||||
.priv-footer .btn {margin 0px; padding-top: 7px;}
|
||||
.priv-footer .check-all {display: inline-block;}
|
||||
.priv-footer .check-all label {padding-left: 0px; margin-bottom: 0px; font-weight: 400;}
|
||||
.priv-footer #submit {margin: 0px 20px;}
|
||||
main#main {padding-bottom: 0px;}
|
||||
.side .priv-panel {padding: 16px;}
|
||||
|
||||
#privPackageList th.module {width: 142px; min-width: 142px; max-width: 142px; background-color: #EDEEF28C; font-weight: 600; padding-left: 20px; border-color: #FFF;}
|
||||
#privPackageList .module label {padding-left: 0; overflow: visible;}
|
||||
#privPackageList td.package-column {padding: 20px 16px; background-color: #FFF;}
|
||||
#privPackageList div.package {display: inline-block; width: calc(25% - 5px); padding: 10px 0;}
|
||||
#privPackageList .package + .package {padding: 0;}
|
||||
#privPackageList .package .check-all {display: inline-block; height: 20px;}
|
||||
#privPackageList .package input {margin-top: 0px; margin-left: 0px; left: 0px; height: 20px;}
|
||||
#privPackageList .package label {padding-left: 0; display: inline-block;}
|
||||
#privPackageList .privs, #privPackageList .menus-privs {padding: 20px 20px 0 20px; margin: 10px 0px;border: 1px solid #D9DBE1; background-color: #F9FAFB; position: relative; display: block; max-width: unset; box-shadow: unset; z-index: 1;}
|
||||
#privPackageList .menus-privs {margin-top: 35px; border-style: dashed;}
|
||||
#privPackageList .popover .popover-content {display: inline-block; padding: 0;}
|
||||
#privPackageList .popover .arrow {border-bottom-color: #D9DBE1; top: -10px;}
|
||||
#privPackageList .popover .arrow:after {border-bottom-color: #F9FAFB;}
|
||||
#privPackageList .group-item .checkbox-inline label {padding-left: 0}
|
||||
#privPackageList .group-item {display: inline-block; width: 158px; margin-bottom: 15px;}
|
||||
#privPackageList .group-item > .checkbox-primary {display: inline-block;}
|
||||
#privPackageList .priv-toggle.icon {width: 12px; height: 12px; position: relative; display: inline-block; color: #9EA3B0; margin-left: 4px; line-height: 12px;}
|
||||
#privPackageList .priv-toggle.icon:before {content: "\e925"; font-size: 12px; min-width: unset; transform: scale(0.5); font-weight: 900;}
|
||||
#privPackageList .priv-toggle.icon:after {position: absolute; top: 0px; right: 0px; bottom: 0px; left: 0px; display: inline-block; content: ""; border: 1px solid; border-radius: 10%;}
|
||||
#privPackageList .priv-toggle.icon.open:before {content: "\e926";}
|
||||
|
||||
.table-bymodule select option:hover {color: #fff;}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
.has-prefix {position: relative; display: flex; align-items: center;}
|
||||
.c-name {min-width: 200px;}
|
||||
.c-desc {min-width: 200px;}
|
||||
.c-order {width: 50px;}
|
||||
|
||||
#privPackageTableList.sortable-sorting > tr {opacity: 0.7}
|
||||
#privPackageTableList.sortable-sorting > tr.drag-row {opacity: 1;}
|
||||
#privPackageTableList > tr.drop-not-allowed {opacity: 0.1!important}
|
||||
tbody.sortable > tr > td.sort-handler .table-nest-toggle:before {cursor: pointer !important;}
|
||||
tbody.sortable > tr > td.sort-handler {color: #3c4353 !important;}
|
||||
.has-nest-child > td > .table-nest-toggle {opacity: unset;}
|
||||
.table-nest-toggle {opacity: 0;}
|
||||
@@ -0,0 +1,15 @@
|
||||
$(function()
|
||||
{
|
||||
$('ul.tree:first > li').addClass('open').addClass('in');
|
||||
$('ul.tree:first > li > ul > li').addClass('open').addClass('in');
|
||||
$('#module').change(function()
|
||||
{
|
||||
if($(this).val() == '') return;
|
||||
$('.treeBox').load(createLink('group', 'ajaxGetPrivTree', 'privIdList=' + privIdList + '&module=' + $(this).val() + '&type=' + type), function()
|
||||
{
|
||||
$('ul.tree').tree();
|
||||
$('ul.tree:first > li').addClass('open').addClass('in');
|
||||
$('ul.tree:first > li > ul > li').addClass('open').addClass('in');
|
||||
});
|
||||
})
|
||||
})
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user