Merge branch 'zentaopms_304' into 'master'

Zentaopms 304

See merge request easycorp/zentaopms!7518
This commit is contained in:
王怡栋
2023-04-20 09:31:13 +00:00
219 changed files with 5832 additions and 1363 deletions
+4
View File
@@ -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
View File
@@ -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;
+49
View File
File diff suppressed because one or more lines are too long
-3
View File
@@ -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'),
-24
View File
@@ -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
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -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');
+1 -1
View File
@@ -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');
+1 -1
View File
@@ -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');
+21 -65
View File
@@ -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';
+1
View File
@@ -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;
+2
View File
@@ -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. */
+2
View File
@@ -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. */
+2
View File
@@ -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. */
+2 -1
View File
@@ -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
View File
@@ -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 = '';
-17
View File
@@ -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" : "&nbsp;&nbsp;&nbsp;&nbsp;") . $result->Msg_type . ":" . $result->Msg_text . (defined('IN_SHELL') ? "\n" : "<br />\n");
}
}
/**
* Account safe.
*
+1 -2
View File
@@ -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';
+1 -2
View File
@@ -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';
+1 -2
View File
@@ -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';
+1 -2
View File
@@ -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 = '认证邮箱';
+2 -1
View File
@@ -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';
+2 -1
View File
@@ -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';
+3 -2
View File
@@ -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';
+2 -1
View File
@@ -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 = '备份时间';
+1 -1
View File
@@ -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);
}
+1 -1
View File
@@ -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()
+1 -1
View File
@@ -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>
+1 -1
View File
@@ -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'));
}
+1 -1
View File
@@ -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;
+1 -1
View File
@@ -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');?>
+1 -1
View File
@@ -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');?>
+1 -1
View File
@@ -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);?>
-1
View File
@@ -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';
-1
View File
@@ -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';
-1
View File
@@ -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';
-1
View File
@@ -12,7 +12,6 @@
$lang->caselib->common = '用例库';
$lang->caselib->all = '所有用例库';
$lang->caselib->index = "用例库首页";
$lang->caselib->create = "创建用例库";
$lang->caselib->edit = '编辑用例库';
$lang->caselib->browse = '浏览用例库';
+1 -1
View File
@@ -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 -1
View File
@@ -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 -1
View File
@@ -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 -1
View File
@@ -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 -1
View File
@@ -1,5 +1,5 @@
<?php
$lang->ci->common = '持续集成';
$lang->ci->common = '自动化测试';
$lang->ci->commitResult = '接口:提交测试结果';
$lang->ci->checkCompileStatus = '接口:获取测试结果';
+44
View File
@@ -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();
+43 -1
View File
@@ -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';
+43 -1
View File
@@ -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';
+43 -1
View File
@@ -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
View File
@@ -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'))
+43 -1
View File
@@ -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 = '矩阵';
+1 -1
View File
@@ -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';
+1 -1
View File
@@ -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';
+1 -1
View File
@@ -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';
+1 -1
View File
@@ -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 = '添加任务';
+1 -1
View File
@@ -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/';
+1 -1
View File
@@ -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/';
+1 -1
View File
@@ -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/';
+1 -1
View File
@@ -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'] = '人时/';
+3 -1
View File
@@ -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?";
+3 -1
View File
@@ -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?";
+3 -1
View File
@@ -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 ?";
+3 -1
View File
@@ -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 = " 存在部门名称重复,您确认添加吗?";
+1 -1
View File
@@ -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';
+1 -1
View File
@@ -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';
+1 -1
View File
@@ -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';
+2 -2
View File
@@ -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 = '取消关联';
-14
View File
@@ -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.
*
-2
View File
@@ -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';
-2
View File
@@ -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';
-2
View File
@@ -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';
-2
View File
@@ -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接口调取';
-20
View File
@@ -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';?>
-4
View File
@@ -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 + '&currentLane=' + lane.id + '&targetLane=' + upTargetKanban), className: 'iframe', disabled: !$kanban.prev('.kanban').length},
{label: kanbanLang.moveDown, icon: 'arrow-down', url: $.createLink('kanban', 'laneMove', 'executionID=' + executionID + '&currentLane=' + 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};
-1
View File
@@ -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';
-1
View File
@@ -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';
-1
View File
@@ -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';
+1 -2
View File
@@ -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,
+1 -1
View File
@@ -13,4 +13,4 @@
$lang->git->common = 'Git';
$lang->git->cat = '查看源代码';
$lang->git->diff = '比较源代码';
$lang->git->apiSync = '接口:同步git日志';
$lang->git->apiSync = '接口:同步Git日志';
+1 -1
View File
@@ -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';
+1 -1
View File
@@ -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';
+1 -1
View File
@@ -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';
+1 -1
View File
@@ -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 = '绑定用户';
-14
View File
@@ -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 -5
View File
@@ -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 -5
View File
@@ -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 -5
View File
@@ -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";
+5 -6
View File
@@ -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 = "标签保护管理";
+1 -1
View File
@@ -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';
+1 -1
View File
@@ -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';
+1 -1
View File
@@ -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';
+1 -1
View File
@@ -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 = '绑定用户';
+31
View File
@@ -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
View File
@@ -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=&paramID=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));
}
}
+3
View File
@@ -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;}
+30
View File
@@ -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;}
+1
View File
@@ -0,0 +1 @@
#editPriv .c-name {width: 135px;}
+79 -6
View File
@@ -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;}
+12
View File
@@ -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;}
+15
View File
@@ -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