diff --git a/extension/lite/product/ext/view/browse.html.php b/extension/lite/product/ext/view/browse.html.php index 8f2c6f2f93..4b5b79ac3e 100644 --- a/extension/lite/product/ext/view/browse.html.php +++ b/extension/lite/product/ext/view/browse.html.php @@ -17,6 +17,7 @@ body {margin-bottom: 25px;} #mainMenu .btn-toolbar .btn-group .dropdown-menu .btn-active-text:hover .text {color: #fff;} #mainMenu .btn-toolbar .btn-group .dropdown-menu .btn-active-text:hover .text:after {border-bottom: unset;} .body-modal #mainMenu>.btn-toolbar {width: auto;} +.assignedTo{border-radius: 4px !important;} @@ -411,7 +412,7 @@ $projectIDParam = $isProjectStory ? "projectID=$projectID&" : '';
- + 10; $actionLink = $this->createLink('story', 'batchAssignTo', "productID=$productID"); diff --git a/extension/lite/product/ext/view/browse.lite.html.hook.php b/extension/lite/product/ext/view/browse.lite.html.hook.php new file mode 100644 index 0000000000..df267790ba --- /dev/null +++ b/extension/lite/product/ext/view/browse.lite.html.hook.php @@ -0,0 +1,3 @@ + diff --git a/extension/lite/story/ext/view/batchcreate.html.php b/extension/lite/story/ext/view/batchcreate.html.php index 7fcedc44be..99a33b5476 100644 --- a/extension/lite/story/ext/view/batchcreate.html.php +++ b/extension/lite/story/ext/view/batchcreate.html.php @@ -46,7 +46,7 @@ '>story->spec;?> '>story->pri;?> '>story->estimate;?> - story->reviewedBy;?> + story->reviewedBy;?> '>story->keywords;?> story->getFlowExtendFields(); diff --git a/extension/lite/task/ext/view/create.html.php b/extension/lite/task/ext/view/create.html.php index 4ca65ab4ad..87766c920a 100644 --- a/extension/lite/task/ext/view/create.html.php +++ b/extension/lite/task/ext/view/create.html.php @@ -99,7 +99,7 @@ task->story;?> - task->noticeLinkStory, html::a($this->createLink('story', 'create', "productID=$productID&branch=0&moduleID=0&storyID=0&projectID=$projectID&bugID=0&planID=0&todoID=0&extra=&type=story"), $lang->execution->linkStory, '_blank', 'class="text-primary"'), html::a("javascript:loadStories($execution->id)", $lang->refresh, '', 'class="text-primary"'));?> + task->noticeLinkStory, html::a($this->createLink('story', 'create', "productID=$productID&branch=0&moduleID=0&storyID=0&projectID=$projectID&bugID=0&planID=0&todoID=0&extra=&type=story&_single"), $lang->execution->linkStory, '_blank', 'class="text-primary"'), html::a("javascript:loadStories($execution->id)", $lang->refresh, '', 'class="text-primary"'));?>
story, "class='form-control chosen' onchange='setStoryRelated();'");?> preview;?> diff --git a/extension/lite/workflowdatasource/ext/config/litevip.php b/extension/lite/workflowdatasource/ext/config/litevip.php new file mode 100644 index 0000000000..1026608ae5 --- /dev/null +++ b/extension/lite/workflowdatasource/ext/config/litevip.php @@ -0,0 +1,2 @@ +config->workflowdatasource->excludeDatasource = 'litefeedbackStatus,litefeedbackModules,litefeedbackType,litefeedbackSolution,litefeedbackclosedReason'; diff --git a/extension/lite/workflowdatasource/ext/model/getlist.php b/extension/lite/workflowdatasource/ext/model/getlist.php new file mode 100644 index 0000000000..e352913fb7 --- /dev/null +++ b/extension/lite/workflowdatasource/ext/model/getlist.php @@ -0,0 +1,19 @@ +dao->select('*')->from(TABLE_WORKFLOWDATASOURCE) + ->where(1) + ->beginIF(!empty($this->config->vision))->andWhere('vision')->eq($this->config->vision)->fi() + ->beginIF($this->config->visions == ',lite,')->andWhere('code')->notin($this->config->workflowdatasource->excludeDatasource)->fi() + ->orderBy($orderBy) + ->page($pager) + ->fetchAll(); +} diff --git a/module/block/view/productstatisticblock.html.php b/module/block/view/productstatisticblock.html.php index 8da697047a..67e8ca90b2 100644 --- a/module/block/view/productstatisticblock.html.php +++ b/module/block/view/productstatisticblock.html.php @@ -127,10 +127,10 @@ $(function()
SRCommon;?>
stories):?>
stories);?>
- id}&branch=&type=allstory", $lang->story->viewAll . '', '', 'class="btn btn-primary btn-circle btn-icon-right btn-sm"');?> + id}&branch=&type=allstory", $lang->story->viewAll . '', '', 'class="btn btn-primary btn-circle btn-icon-right btn-sm" data-app="product"');?>
0
- id}", '' . $lang->story->create, '', 'class="btn btn-primary btn-circle btn-icon-left btn-sm"');?> + id}", '' . $lang->story->create, '', 'class="btn btn-primary btn-circle btn-icon-left btn-sm" data-app="product"');?>
- id}", " " . $lang->productplan->create, '', "class='btn btn-info'");?> + id}", " " . $lang->productplan->create, '', "class='btn btn-info' data-app='product'");?>
@@ -190,7 +190,7 @@ $(function()
- id}", " " . $lang->release->create, '', "class='btn btn-info'");?> + id}", " " . $lang->release->create, '', "class='btn btn-info' data-app='product'");?>
diff --git a/module/block/view/waterfallissueblock.html.php b/module/block/view/waterfallissueblock.html.php index 3cd26cb27d..7f4ca97119 100644 --- a/module/block/view/waterfallissueblock.html.php +++ b/module/block/view/waterfallissueblock.html.php @@ -5,6 +5,8 @@ .block-issues .c-id {width: 55px;} .block-issues .c-status {width: 80px;} .block-issues.block-sm .c-status {text-align: center;} +.c-assignedTo {width: 100px; padding:0px !important;text-align:center;} +.c-severity, .c-pri {text-align:center;}
'> @@ -17,7 +19,7 @@ - + @@ -35,7 +37,7 @@ - + $value) { - $this->story->printCell($value, $story, $users, '', $storyStages, $modulePairs, $storyTasks, $storyBugs, $storyCases, $useDatatable ? 'datatable' : 'table', '', $execution, $showBranch); + $this->story->printCell($value, $story, $users, $branchOption, $storyStages, $modulePairs, $storyTasks, $storyBugs, $storyCases, $useDatatable ? 'datatable' : 'table', '', $execution, $showBranch); } ?> diff --git a/module/gitlab/config.php b/module/gitlab/config.php index 7fd742944a..ac86fa3db8 100644 --- a/module/gitlab/config.php +++ b/module/gitlab/config.php @@ -124,3 +124,7 @@ $config->gitlab->accessLevel['owner'] = 50; /* Minimum compatible version. */ $config->gitlab->minCompatibleVersion = '9.0'; + +$config->gitlab->menus['project'] = 'browseProject'; +$config->gitlab->menus['group'] = 'browseGroup'; +$config->gitlab->menus['user'] = 'browseUser'; diff --git a/module/gitlab/control.php b/module/gitlab/control.php index 942567f049..955314b974 100644 --- a/module/gitlab/control.php +++ b/module/gitlab/control.php @@ -325,8 +325,9 @@ class gitlab extends control if(!$openID) return print(js::alert($this->lang->gitlab->mustBindUser) . js::locate($this->createLink('gitlab', 'browse'))); } - $groups = $this->gitlab->apiGetGroups($gitlabID, $orderBy); - $adminGroups = $this->gitlab->apiGetGroups($gitlabID, $orderBy, 'owner'); + $keyword = fixer::input('post')->setDefault('keyword', '')->get('keyword'); + $groups = $this->gitlab->apiGetGroups($gitlabID, $orderBy, '', $keyword); + $adminGroups = $this->gitlab->apiGetGroups($gitlabID, $orderBy, 'owner', $keyword); $adminGroupIDList = array(); foreach($adminGroups as $group) $adminGroupIDList[] = $group->id; @@ -337,6 +338,7 @@ class gitlab extends control $this->view->gitlabGroupList = $groups; $this->view->adminGroupIDList = $adminGroupIDList; $this->view->orderBy = $orderBy; + $this->view->keyword = $keyword; $this->display(); } @@ -558,11 +560,22 @@ class gitlab extends control if(!$user->is_admin) $isAdmin = false; } + $keyword = fixer::input('post')->setDefault('keyword', '')->get('keyword'); + $users = $this->gitlab->apiGetUsers($gitlabID, false, $orderBy); + if($keyword) + { + foreach($users as $key => $user) + { + if(strpos($user->realname, $keyword) === false) unset($users[$key]); + } + } + $this->view->title = $this->lang->gitlab->common . $this->lang->colon . $this->lang->gitlab->browseUser; $this->view->gitlabID = $gitlabID; - $this->view->gitlabUserList = $this->gitlab->apiGetUsers($gitlabID, false, $orderBy); + $this->view->gitlabUserList = $users; $this->view->orderBy = $orderBy; $this->view->isAdmin = $isAdmin; + $this->view->keyword = $keyword; $this->display(); } diff --git a/module/gitlab/js/browseproject.js b/module/gitlab/js/browseproject.js deleted file mode 100644 index af5f37901a..0000000000 --- a/module/gitlab/js/browseproject.js +++ /dev/null @@ -1,17 +0,0 @@ -$(document).ready(function() -{ - $('#projectSearch').click(function() - { - triggerSearch(); - }); - $('#keyword').keypress(function(event) - { - if(event.which == 13) triggerSearch(); - }) - -}); - -function triggerSearch() -{ - $("#gitlabprojectForm").submit(); -} diff --git a/module/gitlab/js/common.js b/module/gitlab/js/common.js index d4c0d829bb..b339bcab90 100644 --- a/module/gitlab/js/common.js +++ b/module/gitlab/js/common.js @@ -17,4 +17,22 @@ function setAvatar() $(".avatar img").attr("src", window.URL.createObjectURL(files[0])); $(".avatar").removeClass('hidden'); }); -} \ No newline at end of file +} + +$(document).ready(function() +{ + $('#gitlabSearch').click(function() + { + triggerSearch(); + }); + $('#keyword').keypress(function(event) + { + if(event.which == 13) triggerSearch(); + }) + +}); + +function triggerSearch() +{ + $("#gitlabForm").submit(); +} diff --git a/module/gitlab/lang/de.php b/module/gitlab/lang/de.php index 9df7073538..169875c665 100644 --- a/module/gitlab/lang/de.php +++ b/module/gitlab/lang/de.php @@ -24,14 +24,14 @@ $lang->gitlab->lastUpdate = 'Last Update'; $lang->gitlab->confirmAddWebhook = 'Are you sure about creating Webhook?'; $lang->gitlab->addWebhookSuccess = 'Webhook created successfully'; $lang->gitlab->failCreateWebhook = 'Failed to create Webhook, please view the log'; -$lang->gitlab->placeholderSearch = 'Project name'; +$lang->gitlab->placeholderSearch = 'Enter name'; $lang->gitlab->browseAction = 'GitLab List'; $lang->gitlab->deleteAction = 'Delete GitLab'; $lang->gitlab->gitlabProject = "GitLab Project"; -$lang->gitlab->browseProject = "GitLab Project List"; -$lang->gitlab->browseUser = "User List"; -$lang->gitlab->browseGroup = "Group List"; +$lang->gitlab->browseProject = "Project"; +$lang->gitlab->browseUser = "User"; +$lang->gitlab->browseGroup = "Group"; $lang->gitlab->browseBranch = "GitLab Branch List"; $lang->gitlab->browseTag = "GitLab Tag List"; $lang->gitlab->browseTagPriv = "GitLab Tag protected List"; @@ -62,12 +62,13 @@ $lang->gitlab->editTagPriv = 'Edit tag protected'; $lang->gitlab->deleteTagPriv = 'Delete tag protected'; $lang->gitlab->id = 'ID'; -$lang->gitlab->name = "GitLab Server"; +$lang->gitlab->name = "Server Name"; $lang->gitlab->url = 'Server URL'; $lang->gitlab->token = 'Token'; $lang->gitlab->defaultProject = 'Default Project'; $lang->gitlab->private = 'MD5 Verify'; +$lang->gitlab->server = "Server List"; $lang->gitlab->lblCreate = 'Create GitLab Server'; $lang->gitlab->desc = 'Description'; $lang->gitlab->tokenFirst = 'When the Token is not empty, the Token will be used first'; diff --git a/module/gitlab/lang/en.php b/module/gitlab/lang/en.php index 9df7073538..169875c665 100644 --- a/module/gitlab/lang/en.php +++ b/module/gitlab/lang/en.php @@ -24,14 +24,14 @@ $lang->gitlab->lastUpdate = 'Last Update'; $lang->gitlab->confirmAddWebhook = 'Are you sure about creating Webhook?'; $lang->gitlab->addWebhookSuccess = 'Webhook created successfully'; $lang->gitlab->failCreateWebhook = 'Failed to create Webhook, please view the log'; -$lang->gitlab->placeholderSearch = 'Project name'; +$lang->gitlab->placeholderSearch = 'Enter name'; $lang->gitlab->browseAction = 'GitLab List'; $lang->gitlab->deleteAction = 'Delete GitLab'; $lang->gitlab->gitlabProject = "GitLab Project"; -$lang->gitlab->browseProject = "GitLab Project List"; -$lang->gitlab->browseUser = "User List"; -$lang->gitlab->browseGroup = "Group List"; +$lang->gitlab->browseProject = "Project"; +$lang->gitlab->browseUser = "User"; +$lang->gitlab->browseGroup = "Group"; $lang->gitlab->browseBranch = "GitLab Branch List"; $lang->gitlab->browseTag = "GitLab Tag List"; $lang->gitlab->browseTagPriv = "GitLab Tag protected List"; @@ -62,12 +62,13 @@ $lang->gitlab->editTagPriv = 'Edit tag protected'; $lang->gitlab->deleteTagPriv = 'Delete tag protected'; $lang->gitlab->id = 'ID'; -$lang->gitlab->name = "GitLab Server"; +$lang->gitlab->name = "Server Name"; $lang->gitlab->url = 'Server URL'; $lang->gitlab->token = 'Token'; $lang->gitlab->defaultProject = 'Default Project'; $lang->gitlab->private = 'MD5 Verify'; +$lang->gitlab->server = "Server List"; $lang->gitlab->lblCreate = 'Create GitLab Server'; $lang->gitlab->desc = 'Description'; $lang->gitlab->tokenFirst = 'When the Token is not empty, the Token will be used first'; diff --git a/module/gitlab/lang/fr.php b/module/gitlab/lang/fr.php index 9df7073538..169875c665 100644 --- a/module/gitlab/lang/fr.php +++ b/module/gitlab/lang/fr.php @@ -24,14 +24,14 @@ $lang->gitlab->lastUpdate = 'Last Update'; $lang->gitlab->confirmAddWebhook = 'Are you sure about creating Webhook?'; $lang->gitlab->addWebhookSuccess = 'Webhook created successfully'; $lang->gitlab->failCreateWebhook = 'Failed to create Webhook, please view the log'; -$lang->gitlab->placeholderSearch = 'Project name'; +$lang->gitlab->placeholderSearch = 'Enter name'; $lang->gitlab->browseAction = 'GitLab List'; $lang->gitlab->deleteAction = 'Delete GitLab'; $lang->gitlab->gitlabProject = "GitLab Project"; -$lang->gitlab->browseProject = "GitLab Project List"; -$lang->gitlab->browseUser = "User List"; -$lang->gitlab->browseGroup = "Group List"; +$lang->gitlab->browseProject = "Project"; +$lang->gitlab->browseUser = "User"; +$lang->gitlab->browseGroup = "Group"; $lang->gitlab->browseBranch = "GitLab Branch List"; $lang->gitlab->browseTag = "GitLab Tag List"; $lang->gitlab->browseTagPriv = "GitLab Tag protected List"; @@ -62,12 +62,13 @@ $lang->gitlab->editTagPriv = 'Edit tag protected'; $lang->gitlab->deleteTagPriv = 'Delete tag protected'; $lang->gitlab->id = 'ID'; -$lang->gitlab->name = "GitLab Server"; +$lang->gitlab->name = "Server Name"; $lang->gitlab->url = 'Server URL'; $lang->gitlab->token = 'Token'; $lang->gitlab->defaultProject = 'Default Project'; $lang->gitlab->private = 'MD5 Verify'; +$lang->gitlab->server = "Server List"; $lang->gitlab->lblCreate = 'Create GitLab Server'; $lang->gitlab->desc = 'Description'; $lang->gitlab->tokenFirst = 'When the Token is not empty, the Token will be used first'; diff --git a/module/gitlab/lang/vi.php b/module/gitlab/lang/vi.php new file mode 100644 index 0000000000..169875c665 --- /dev/null +++ b/module/gitlab/lang/vi.php @@ -0,0 +1,239 @@ +gitlab = new stdclass; +$lang->gitlab->common = 'GitLab'; +$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->bindUser = 'Bind User'; +$lang->gitlab->webhook = 'Webhook'; +$lang->gitlab->bindProduct = 'Import Product'; +$lang->gitlab->importIssue = 'Import Issue'; +$lang->gitlab->delete = 'Delete GitLab'; +$lang->gitlab->confirmDelete = 'Do you want to delete this GitLab server?'; +$lang->gitlab->gitlabAccount = 'GitLab Account'; +$lang->gitlab->zentaoAccount = 'Zentao Account'; +$lang->gitlab->bindingStatus = 'Binding Status'; +$lang->gitlab->notBind = 'Not bind'; +$lang->gitlab->binded = 'Binded'; +$lang->gitlab->bindedError = 'The bound user has been deleted or modified. Please bind again.'; +$lang->gitlab->bindDynamic = '%s and Zentao user %s'; +$lang->gitlab->serverFail = 'Connect to GitLab server failed, please check the GitLab server.'; +$lang->gitlab->lastUpdate = 'Last Update'; +$lang->gitlab->confirmAddWebhook = 'Are you sure about creating Webhook?'; +$lang->gitlab->addWebhookSuccess = 'Webhook created successfully'; +$lang->gitlab->failCreateWebhook = 'Failed to create Webhook, please view the log'; +$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->browseUser = "User"; +$lang->gitlab->browseGroup = "Group"; +$lang->gitlab->browseBranch = "GitLab Branch List"; +$lang->gitlab->browseTag = "GitLab Tag List"; +$lang->gitlab->browseTagPriv = "GitLab Tag protected List"; +$lang->gitlab->gitlabIssue = "GitLab Issue"; +$lang->gitlab->zentaoProduct = 'Zentao Product'; +$lang->gitlab->objectType = 'Type'; // task, bug, story +$lang->gitlab->manageProjectMembers = 'Manage project member'; +$lang->gitlab->createProject = 'Create GitLab project'; +$lang->gitlab->editProject = 'Eidt GitLab project'; +$lang->gitlab->deleteProject = 'Delete GitLab project'; +$lang->gitlab->createGroup = 'Create group'; +$lang->gitlab->editGroup = 'Edit group'; +$lang->gitlab->deleteGroup = 'Delete group'; +$lang->gitlab->createUser = 'Create user'; +$lang->gitlab->editUser = 'Edit user'; +$lang->gitlab->deleteUser = 'Delete user'; +$lang->gitlab->createBranch = 'Add branch'; +$lang->gitlab->manageGroupMembers = 'Manage group member'; +$lang->gitlab->createWebhook = 'Create Webhook'; +$lang->gitlab->browseBranchPriv = 'Protect branch'; +$lang->gitlab->createBranchPriv = 'Cerate branch protected'; +$lang->gitlab->editBranchPriv = 'Edit branch protected'; +$lang->gitlab->deleteBranchPriv = 'Delete branch protected'; +$lang->gitlab->createTag = 'Create Tag'; +$lang->gitlab->deleteTag = 'Delete tag'; +$lang->gitlab->createTagPriv = 'Create tag protected'; +$lang->gitlab->editTagPriv = 'Edit tag protected'; +$lang->gitlab->deleteTagPriv = 'Delete tag protected'; + +$lang->gitlab->id = 'ID'; +$lang->gitlab->name = "Server Name"; +$lang->gitlab->url = 'Server URL'; +$lang->gitlab->token = 'Token'; +$lang->gitlab->defaultProject = 'Default Project'; +$lang->gitlab->private = 'MD5 Verify'; + +$lang->gitlab->server = "Server List"; +$lang->gitlab->lblCreate = 'Create GitLab Server'; +$lang->gitlab->desc = 'Description'; +$lang->gitlab->tokenFirst = 'When the Token is not empty, the Token will be used first'; +$lang->gitlab->tips = 'When using a password, please disable the "Prevent cross-site request forgery" option in the GitLab global security settings.'; +$lang->gitlab->emptyError = " cannot be empty"; +$lang->gitlab->createSuccess = "Create success"; +$lang->gitlab->mustBindUser = 'You have not registered the GitLab account, please contact the administrator to register.'; +$lang->gitlab->noAccess = 'Permission denied'; +$lang->gitlab->notCompatible = 'The current GitLab version is not compatible with ZenTao, please upgrade the GitLab version and try again'; +$lang->gitlab->deleted = 'Deleted'; + +$lang->gitlab->placeholder = new stdclass; +$lang->gitlab->placeholder->name = ''; +$lang->gitlab->placeholder->url = "Please fill in the access address of the GitLab Server homepage, as: https://gitlab.zentao.net."; +$lang->gitlab->placeholder->token = "Please fill in the access token of an account with root privileges."; +$lang->gitlab->placeholder->projectPath = "It should contain only letters, digits, underscore, hyphen and period. It should not start with hypen, or end with .git or .atom."; + +$lang->gitlab->noImportableIssues = "There are currently no issues available for import."; +$lang->gitlab->tokenError = "The current token is not root rights."; +$lang->gitlab->tokenLimit = "The current token has no admin privilege. Please regenerate one with root user in GitLab."; +$lang->gitlab->hostError = "So the current GitLab server address is invalid or the current GitLab version is not compatible with ZenTao, please confirm that the current server can be accessed or contact the administrator to upgrade the GitLab version to %s or above and try again."; +$lang->gitlab->bindUserError = "Can not bind users repeatedly %s"; +$lang->gitlab->importIssueError = "The execution to which this issue belongs is not selected."; +$lang->gitlab->importIssueWarn = "There is a problem of import failure, you can try to import again."; + +$lang->gitlab->accessLevels[10] = 'Guest'; +$lang->gitlab->accessLevels[20] = 'Reporter'; +$lang->gitlab->accessLevels[30] = 'Developer'; +$lang->gitlab->accessLevels[40] = 'Maintainer'; +$lang->gitlab->accessLevels[50] = 'Owner'; + +$lang->gitlab->apiError[0] = 'internal is not allowed in a private group.'; +$lang->gitlab->apiError[1] = 'public is not allowed in a private group.'; +$lang->gitlab->apiError[2] = 'is too short (minimum is 8 characters)'; +$lang->gitlab->apiError[3] = "can contain only letters, digits, '_', '-' and '.'. Cannot start with '-', end in '.git' or end in '.atom'"; +$lang->gitlab->apiError[4] = 'Branch already exists'; +$lang->gitlab->apiError[5] = 'Failed to save group {:path=>["has already been taken"]}'; +$lang->gitlab->apiError[6] = '403 Forbidden'; + +$lang->gitlab->errorLang[0] = 'You cannot set Internal as its Visibility Level, if it is private in GitLab.'; +$lang->gitlab->errorLang[1] = 'You cannot set Public as its Visibility Level, if it is private in GitLab.'; +$lang->gitlab->errorLang[2] = 'Password is too short (minimum is 8 characters)'; +$lang->gitlab->errorLang[3] = 'It should contain only letters, digits, underscore, hyphen and period. It should not start with hypen, or end with .git or .atom.'; +$lang->gitlab->errorLang[4] = 'Branch already exists.'; +$lang->gitlab->errorLang[5] = 'Failed to save group, path has already been taken.'; +$lang->gitlab->errorLang[6] = $lang->gitlab->noAccess; + +$lang->gitlab->project = new stdclass; +$lang->gitlab->project->id = "Project ID"; +$lang->gitlab->project->name = "Project name"; +$lang->gitlab->project->create = "Create GitLab project"; +$lang->gitlab->project->edit = "Edit GitLab project"; +$lang->gitlab->project->url = "Project URL"; +$lang->gitlab->project->path = "Project slug"; +$lang->gitlab->project->description = "Project description"; +$lang->gitlab->project->visibility = "Visibility Level"; +$lang->gitlab->project->visibilityList['private'] = "Private(Project access must be granted explicitly to each user. If this project is part of a group, access will be granted to members of the group)"; +$lang->gitlab->project->visibilityList['internal'] = "Internal(The project can be accessed by any logged in user except external users)"; +$lang->gitlab->project->visibilityList['public'] = "Public(The project can be accessed without any authentication)"; +$lang->gitlab->project->star = "Stars"; +$lang->gitlab->project->fork = "Forks"; +$lang->gitlab->project->mergeRequests = "Merge Requests"; +$lang->gitlab->project->issues = "Issues"; +$lang->gitlab->project->tagList = "Topics"; +$lang->gitlab->project->tagListTips = "Separate topics with commas."; +$lang->gitlab->project->emptyNameError = "Project name cannot be empty."; +$lang->gitlab->project->emptyPathError = "Project slug cannot be empty."; +$lang->gitlab->project->confirmDelete = 'Do you want to delete this GitLab project?'; +$lang->gitlab->project->notbindedError = 'GitLab user has not been bound, unable to modify permissions!'; +$lang->gitlab->project->publicTip = 'The visible status of the current project will be modified to public, and the project can be accessed without any authentication in GitLab. '; + +$lang->gitlab->user = new stdclass; +$lang->gitlab->user->id = "User ID"; +$lang->gitlab->user->name = "Name"; +$lang->gitlab->user->username = "Username"; +$lang->gitlab->user->email = "Email"; +$lang->gitlab->user->password = "Password"; +$lang->gitlab->user->passwordRepeat = "Repeat Password"; +$lang->gitlab->user->projectsLimit = "Projects limit"; +$lang->gitlab->user->canCreateGroup = "Can create group"; +$lang->gitlab->user->external = "External"; +$lang->gitlab->user->externalTip = "External users cannot see internal or private projects unless access is explicitly granted. Also, external users cannot create projects, groups, or personal snippets."; +$lang->gitlab->user->bind = "Zentao user"; +$lang->gitlab->user->avatar = "Avatar"; +$lang->gitlab->user->skype = "Skype"; +$lang->gitlab->user->linkedin = "Linkedin"; +$lang->gitlab->user->twitter = "Twitter"; +$lang->gitlab->user->websiteUrl = "Website url"; +$lang->gitlab->user->note = "Note"; +$lang->gitlab->user->createOn = "Created on"; +$lang->gitlab->user->lastActivity = "Last activity"; +$lang->gitlab->user->create = "Create GitLab user"; +$lang->gitlab->user->edit = "Edit GitLab user"; +$lang->gitlab->user->emptyError = "cannot be empty"; +$lang->gitlab->user->passwordError = "The second password is inconsistent!"; +$lang->gitlab->user->bindError = "The user has been bound!"; +$lang->gitlab->user->confirmDelete = 'Do you want to delete this GitLab user?'; + +$lang->gitlab->group = new stdclass; +$lang->gitlab->group->id = "Group ID"; +$lang->gitlab->group->name = "Group name"; +$lang->gitlab->group->path = "Group URL"; +$lang->gitlab->group->pathTip = "Changing group URL can have unintended side effects."; +$lang->gitlab->group->description = "Group description"; +$lang->gitlab->group->avatar = "Group avatar"; +$lang->gitlab->group->avatarTip = 'Max file size is 200 KB.'; +$lang->gitlab->group->visibility = "Visibility level"; +$lang->gitlab->group->visibilityList['private'] = "Private(The group and its projects can only be viewed by members)"; +$lang->gitlab->group->visibilityList['internal'] = "Internal(The group and any internal projects can be viewed by any logged in user except external users)"; +$lang->gitlab->group->visibilityList['public'] = "Public(The group and any public projects can be viewed without any authentication.)"; +$lang->gitlab->group->permission = 'Permission'; +$lang->gitlab->group->requestAccessEnabledTip = "Allow users to request access (if visibility is public or internal)"; +$lang->gitlab->group->lfsEnabled = 'Large File Storage'; +$lang->gitlab->group->lfsEnabledTip = "Allow projects within this group to use Git LFS(This setting can be overridden in each project)"; +$lang->gitlab->group->projectCreationLevel = "Allowed to create projects"; +$lang->gitlab->group->projectCreationLevelList['noone'] = "No one"; +$lang->gitlab->group->projectCreationLevelList['maintainer'] = "Maintainers"; +$lang->gitlab->group->projectCreationLevelList['developer'] = "Developers + Maintainers"; +$lang->gitlab->group->subgroupCreationLevel = "Allowed to create projects"; +$lang->gitlab->group->subgroupCreationLevelList['owner'] = "Owners"; +$lang->gitlab->group->subgroupCreationLevelList['maintainer'] = "Maintainers"; +$lang->gitlab->group->create = "Create Group"; +$lang->gitlab->group->edit = "Edit Group"; +$lang->gitlab->group->createOn = "Created on"; +$lang->gitlab->group->members = "Group Members"; +$lang->gitlab->group->confirmDelete = 'Do you want to delete this GitLab group?'; +$lang->gitlab->group->emptyError = "cannot be empty"; +$lang->gitlab->group->manageMembers = 'Manage Group Members'; +$lang->gitlab->group->memberName = 'Account'; +$lang->gitlab->group->memberAccessLevel = 'Access Level'; +$lang->gitlab->group->memberExpiresAt = 'Expiration time'; +$lang->gitlab->group->repeatError = "Group members cannot be added repeatedly"; +$lang->gitlab->group->publicTip = 'The visible status of the current group will be modified to public, and the group can be accessed without any authentication in GitLab. '; + +$lang->gitlab->branch = new stdclass(); +$lang->gitlab->branch->name = 'Branch name'; +$lang->gitlab->branch->from = 'Create from'; +$lang->gitlab->branch->create = 'Create'; +$lang->gitlab->branch->lastCommitter = 'Last Committer'; +$lang->gitlab->branch->lastCommittedDate = 'Last Committed Date'; +$lang->gitlab->branch->accessLevel = "Branch protection list"; +$lang->gitlab->branch->mergeAllowed = "Merge Allowed"; +$lang->gitlab->branch->pushAllowed = "Push Allowed"; +$lang->gitlab->branch->placeholderSearch = "Branch name"; +$lang->gitlab->branch->placeholderSelect = "Branch name"; +$lang->gitlab->branch->confirmDelete = 'Branch will be writable for developers. Are you sure?'; +$lang->gitlab->branch->branchCreationLevelList[40] = "Maintainers"; +$lang->gitlab->branch->branchCreationLevelList[30] = "Developers + Maintainers"; +$lang->gitlab->branch->branchCreationLevelList[0] = "No one"; +$lang->gitlab->branch->emptyPrivNameError = "Branch cannot be empty."; +$lang->gitlab->branch->issetPrivNameError = "The protection branch already exists"; + +$lang->gitlab->tag = new stdclass(); +$lang->gitlab->tag->name = 'Tag name'; +$lang->gitlab->tag->ref = 'Create from'; +$lang->gitlab->tag->lastCommitter = 'Last Committer'; +$lang->gitlab->tag->lastCommittedDate = 'Last Committed Date'; +$lang->gitlab->tag->placeholderSearch = "Enter branch tag"; +$lang->gitlab->tag->message = 'Message'; +$lang->gitlab->tag->emptyNameError = "Name cannot be empty."; +$lang->gitlab->tag->emptyRefError = "Create from cannot be empty."; +$lang->gitlab->tag->issetNameError = "The tag already exists"; +$lang->gitlab->tag->confirmDelete = 'Do you want to delete this GitLab tag?'; +$lang->gitlab->tag->protected = 'Protected'; +$lang->gitlab->tag->accessLevel = 'Allow creation'; +$lang->gitlab->tag->protectConfirmDel = 'Do you want to delete this GitLab tag protected?'; +$lang->gitlab->tag->emptyPrivNameError = 'Tag cannot be empty.'; +$lang->gitlab->tag->issetPrivNameError = 'The protection tag already exists.'; diff --git a/module/gitlab/lang/zh-cn.php b/module/gitlab/lang/zh-cn.php index d3235a8c3a..d9ac66d15f 100644 --- a/module/gitlab/lang/zh-cn.php +++ b/module/gitlab/lang/zh-cn.php @@ -24,14 +24,14 @@ $lang->gitlab->lastUpdate = '最后更新'; $lang->gitlab->confirmAddWebhook = '您确定创建Webhook吗?'; $lang->gitlab->addWebhookSuccess = 'Webhook创建成功'; $lang->gitlab->failCreateWebhook = 'Webhook创建失败,请查看日志'; -$lang->gitlab->placeholderSearch = '请输入项目名称'; +$lang->gitlab->placeholderSearch = '请输入名称'; $lang->gitlab->browseAction = 'GitLab列表'; $lang->gitlab->deleteAction = '删除GitLab'; $lang->gitlab->gitlabProject = "{$lang->gitlab->common}项目"; -$lang->gitlab->browseProject = "{$lang->gitlab->common}项目列表"; -$lang->gitlab->browseUser = "用户列表"; -$lang->gitlab->browseGroup = "群组列表"; +$lang->gitlab->browseProject = "项目"; +$lang->gitlab->browseUser = "用户"; +$lang->gitlab->browseGroup = "群组"; $lang->gitlab->browseBranch = "GitLab分支列表"; $lang->gitlab->browseTag = "GitLab标签列表"; $lang->gitlab->browseTagPriv = "GitLab标签保护列表"; @@ -62,12 +62,13 @@ $lang->gitlab->editTagPriv = '编辑标签保护'; $lang->gitlab->deleteTagPriv = '删除标签保护'; $lang->gitlab->id = 'ID'; -$lang->gitlab->name = "{$lang->gitlab->common}服务器"; +$lang->gitlab->name = "服务器名称"; $lang->gitlab->url = '服务器地址'; $lang->gitlab->token = 'Token'; $lang->gitlab->defaultProject = '默认项目'; $lang->gitlab->private = 'MD5验证'; +$lang->gitlab->server = "服务器列表"; $lang->gitlab->lblCreate = '添加GitLab服务器'; $lang->gitlab->desc = '描述'; $lang->gitlab->tokenFirst = 'Token不为空时,优先使用Token。'; diff --git a/module/gitlab/model.php b/module/gitlab/model.php index 65f147a955..ee475629e2 100644 --- a/module/gitlab/model.php +++ b/module/gitlab/model.php @@ -601,10 +601,11 @@ class gitlabModel extends model * @param int $gitlabID * @param string $orderBy * @param string $minRole + * @param string $keyword * @access public * @return object */ - public function apiGetGroups($gitlabID, $orderBy = 'id_desc', $minRole = '') + public function apiGetGroups($gitlabID, $orderBy = 'id_desc', $minRole = '', $keyword = '') { $apiRoot = $this->getApiRoot($gitlabID); $url = sprintf($apiRoot, "/groups"); @@ -617,6 +618,8 @@ class gitlabModel extends model $url .= '&min_access_level=' . $this->config->gitlab->accessLevel[$minRole]; } + if($keyword) $url .= '&search=' . urlencode($keyword); + $order = 'id'; $sort = 'desc'; if(strpos($orderBy, '_') !== false) list($order, $sort) = explode('_', $orderBy); @@ -2854,4 +2857,43 @@ class gitlabModel extends model $apiRoot .= '&sudo=' . $users[0]->id; return $this->apiGet($apiRoot, '/user'); } + + /** + * Get gitlab menu. + * + * @param int $gitlabID + * @param string $type + * @access public + * @return void + */ + public function getGitlabMenu($gitlabID = 0, $type = 'project') + { + $html = '
'; + + /* Gitlab server list. */ + $gitlabs = $this->getPairs(); + $html .= "
"; + $tips = $gitlabID >0 ? zget($gitlabs, $gitlabID, $this->lang->gitlab->server) : $this->lang->gitlab->server; + $html .= html::a('javascript:;', $tips . " ", '', "data-toggle='dropdown' class='btn btn-link'"); + $html .= "
'; + + /* Other route. */ + foreach($this->config->gitlab->menus as $key => $method) + { + $lang = 'browse' . ucwords($key); + $title = $this->lang->gitlab->$lang; + $label = "$title"; + $active = $key == $type ? 'btn-active-text' : ''; + $html .= html::a(inlink($method, "gitlabID=$gitlabID"), $label, '', "id='{$key}' class='btn btn-link $active' title='$title'"); + } + + $html .= '
'; + return $html; + } } diff --git a/module/gitlab/view/browse.html.php b/module/gitlab/view/browse.html.php index 81b197a04c..56b57a028c 100644 --- a/module/gitlab/view/browse.html.php +++ b/module/gitlab/view/browse.html.php @@ -12,6 +12,9 @@ ?> - + @@ -43,8 +46,8 @@ - + @@ -70,9 +63,7 @@ $maintainerClass = $gitlabProject->isMaintainer ? '' : 'disabled'; $ownerClass = $gitlabProject->adminer ? '' : 'disabled'; $emptyBranchClass = $gitlabProject->default_branch ? '' : 'disabled'; - common::printLink('gitlab', 'browseBranch', "gitlabID=$gitlabID&projectID=$gitlabProject->id", " ", '', "title='{$lang->gitlab->browseBranch}' class='btn {$emptyBranchClass}'"); common::printLink('gitlab', 'browseBranchPriv', "gitlabID=$gitlabID&projectID=$gitlabProject->id", " ", '', "title='{$lang->gitlab->branch->accessLevel}' class='btn {$maintainerClass} {$emptyBranchClass}'"); - common::printLink('gitlab', 'browseTag', "gitlabID=$gitlabID&projectID=$gitlabProject->id", " ", '', "title='{$lang->gitlab->browseTag}' class='btn {$emptyBranchClass}'"); common::printLink('gitlab', 'browseTagPriv', "gitlabID=$gitlabID&projectID=$gitlabProject->id", " ", '', "title='{$lang->gitlab->browseTagPriv}' class='btn {$maintainerClass} {$emptyBranchClass}'"); common::printLink('gitlab', 'editProject', "gitlabID=$gitlabID&projectID=$gitlabProject->id", " ", '', "title='{$lang->gitlab->project->edit}' class='btn {$ownerClass}'"); if(common::hasPriv('gitlab', 'delete')) echo html::a($this->createLink('gitlab', 'deleteProject', "gitlabID=$gitlabID&projectID=$gitlabProject->id"), '', 'hiddenwin', "title='{$lang->gitlab->deleteProject}' class='btn {$ownerClass}'"); diff --git a/module/gitlab/view/browseuser.html.php b/module/gitlab/view/browseuser.html.php index e839d2f8b7..fbecaeb8ef 100644 --- a/module/gitlab/view/browseuser.html.php +++ b/module/gitlab/view/browseuser.html.php @@ -12,8 +12,12 @@ ?>
issue->severity;?> issue->pri;?> issue->owner;?>issue->assignedTo;?>issue->assignedTo;?> issue->status;?>
issue->severityList, $issue->severity, $issue->severity)?> issue->priList, $issue->pri, $issue->pri)?> owner, $issue->owner)?>assignedTo, $issue->assignedTo)?>assignedTo, $issue->assignedTo)?> issue->statusList, $issue->status);?> diff --git a/module/block/view/waterfallriskblock.html.php b/module/block/view/waterfallriskblock.html.php index a0c407cc07..47e4e9af30 100644 --- a/module/block/view/waterfallriskblock.html.php +++ b/module/block/view/waterfallriskblock.html.php @@ -3,9 +3,11 @@ diff --git a/module/common/lang/de.php b/module/common/lang/de.php index 2baf6cd3cf..9ae9956be8 100644 --- a/module/common/lang/de.php +++ b/module/common/lang/de.php @@ -84,6 +84,7 @@ $lang->waterfallModel = 'Waterfall'; $lang->scrumModel = 'Scrum'; $lang->all = 'All'; $lang->viewDetails = 'View Details'; +$lang->app = 'APP'; $lang->actions = 'Aktionen'; $lang->restore = 'Wiederherstellen'; @@ -282,6 +283,7 @@ $lang->devops->mr = 'Merge Request'; $lang->devops->repo = 'Repo'; $lang->devops->rules = 'Rule'; $lang->devops->settings = 'Setting Merge Request'; +$lang->devops->set = 'Set'; $lang->admin->system = 'System'; $lang->admin->entry = 'Application'; diff --git a/module/common/lang/en.php b/module/common/lang/en.php index 4899f0f9b4..39f7d632cf 100644 --- a/module/common/lang/en.php +++ b/module/common/lang/en.php @@ -84,6 +84,7 @@ $lang->waterfallModel = 'Waterfall'; $lang->scrumModel = 'Scrum'; $lang->all = 'All'; $lang->viewDetails = 'View Details'; +$lang->app = 'APP'; $lang->actions = 'Action'; $lang->restore = 'Reset'; @@ -282,6 +283,7 @@ $lang->devops->mr = 'Merge Request'; $lang->devops->repo = 'Repo'; $lang->devops->rules = 'Rule'; $lang->devops->settings = 'Setting Merge Request'; +$lang->devops->set = 'Set'; $lang->admin->system = 'System'; $lang->admin->entry = 'Application'; diff --git a/module/common/lang/fr.php b/module/common/lang/fr.php index 246b1300a2..4c59c89061 100644 --- a/module/common/lang/fr.php +++ b/module/common/lang/fr.php @@ -84,6 +84,7 @@ $lang->waterfallModel = 'Waterfall'; $lang->scrumModel = 'Scrum'; $lang->all = 'All'; $lang->viewDetails = 'View Details'; +$lang->app = 'APP'; $lang->actions = 'Action'; $lang->restore = 'Réinitialiser'; @@ -282,6 +283,7 @@ $lang->devops->mr = 'Merge Request'; $lang->devops->repo = 'Repo'; $lang->devops->rules = 'Rule'; $lang->devops->settings = 'Setting Merge Request'; +$lang->devops->set = 'Set'; $lang->admin->system = 'System'; $lang->admin->entry = 'Application'; diff --git a/module/common/lang/menu.php b/module/common/lang/menu.php index 43252f5b86..dd835b63c3 100644 --- a/module/common/lang/menu.php +++ b/module/common/lang/menu.php @@ -395,22 +395,25 @@ $lang->qa->dividerMenu = ',bug,testtask,caselib,'; /* DevOps menu. */ $lang->devops->menu = new stdclass(); $lang->devops->menu->code = array('link' => "{$lang->repo->common}|repo|browse|repoID=%s", 'alias' => 'diff,view,revision,log,blame,showsynccommit'); -$lang->devops->menu->compile = array('link' => "{$lang->devops->compile}|job|browse", 'subModule' => 'compile,job'); $lang->devops->menu->mr = array('link' => "{$lang->devops->mr}|mr|browse|repoID=%s"); -$lang->devops->menu->gitlab = array('link' => "GitLab|gitlab|browse", 'alias' => 'create,edit'); -$lang->devops->menu->sonarqube = array('link' => "SonarQube|sonarqube|browse"); -$lang->devops->menu->jenkins = array('link' => "Jenkins|jenkins|browse", 'alias' => 'create,edit'); -$lang->devops->menu->maintain = array('link' => "{$lang->devops->repo}|repo|maintain", 'alias' => 'create,edit'); -$lang->devops->menu->rules = array('link' => "{$lang->devops->rules}|repo|setrules"); +$lang->devops->menu->compile = array('link' => "{$lang->devops->compile}|job|browse", 'subModule' => 'compile,job'); +$lang->devops->menu->app = array('link' => "{$lang->app}|devops|app|%s"); +$lang->devops->menu->set = array('link' => "{$lang->devops->set}|repo|maintain", 'subModule' => 'gitlab,jenkins,sonarqube', 'alias' => 'setrules,create,edit'); $lang->devops->menuOrder[5] = 'code'; -$lang->devops->menuOrder[10] = 'compile'; -$lang->devops->menuOrder[15] = 'mr'; -$lang->devops->menuOrder[20] = 'gitlab'; -$lang->devops->menuOrder[25] = 'sonarqube'; -$lang->devops->menuOrder[30] = 'jenkins'; -$lang->devops->menuOrder[35] = 'maintain'; -$lang->devops->menuOrder[40] = 'rules'; +$lang->devops->menuOrder[10] = 'mr'; +$lang->devops->menuOrder[15] = 'compile'; +$lang->devops->menuOrder[20] = 'app'; +$lang->devops->menuOrder[25] = 'set'; + +$lang->devops->dividerMenu = ',set,'; + +$lang->devops->menu->set['subMenu'] = new stdclass(); +$lang->devops->menu->set['subMenu']->repo = array('link' => "{$lang->devops->repo}|repo|maintain", 'alias' => 'create,edit'); +$lang->devops->menu->set['subMenu']->gitlab = array('link' => 'GitLab|gitlab|browse', 'subModule' => 'gitlab'); +$lang->devops->menu->set['subMenu']->jenkins = array('link' => 'Jenkins|jenkins|browse', 'subModule' => ''); +$lang->devops->menu->set['subMenu']->sonarqube = array('link' => 'SonarQube|sonarqube|browse', 'subModule' => 'sonarqube'); +$lang->devops->menu->set['subMenu']->setrules = array('link' => "{$lang->devops->rules}|repo|setrules"); /* Kanban menu. */ $lang->kanban->menu = new stdclass(); diff --git a/module/common/lang/vi.php b/module/common/lang/vi.php index fca02ef095..bd2c74d203 100644 --- a/module/common/lang/vi.php +++ b/module/common/lang/vi.php @@ -65,6 +65,7 @@ $lang->noData = 'Không có dữ liệu.'; $lang->fullscreen = 'Fullscreen'; $lang->retrack = 'Retrack'; $lang->whitelist = 'Lista bianca'; +$lang->app = 'APP'; $lang->actions = 'Hành động'; $lang->restore = 'Thiết lập lại'; @@ -125,6 +126,7 @@ $lang->nameAB = 'Name'; $lang->common = new stdclass(); $lang->common->common = 'Module chung'; +$lang->devops->common = 'DevOps'; global $config; list($programModule, $programMethod) = explode('-', $config->programLink); @@ -229,6 +231,13 @@ $lang->system->menu->calendar = array('link' => 'Calendar|my|calendar|', 'subMod $lang->measurement = new stdclass(); $lang->measurement->menu = new stdclass(); +$lang->devops->compile = 'Compile'; +$lang->devops->mr = 'Merge Request'; +$lang->devops->repo = 'Repo'; +$lang->devops->rules = 'Rule'; +$lang->devops->settings = 'Setting Merge Request'; +$lang->devops->set = 'Set'; + $lang->searchTips = ''; $lang->searchAB = 'Tìm ki?m'; diff --git a/module/common/lang/zh-cn.php b/module/common/lang/zh-cn.php index 3636cacd86..afa633fae1 100644 --- a/module/common/lang/zh-cn.php +++ b/module/common/lang/zh-cn.php @@ -84,6 +84,7 @@ $lang->waterfallModel = '瀑布模型'; $lang->scrumModel = '敏捷模型'; $lang->all = '所有'; $lang->viewDetails = '查看详情'; +$lang->app = '应用'; $lang->actions = '操作'; $lang->restore = '恢复默认'; @@ -282,6 +283,7 @@ $lang->devops->mr = '合并请求'; $lang->devops->repo = '版本库'; $lang->devops->rules = '指令'; $lang->devops->settings = '合并请求设置'; +$lang->devops->set = '设置'; $lang->admin->system = '系统'; $lang->admin->entry = '应用'; diff --git a/module/common/lang/zh-tw.php b/module/common/lang/zh-tw.php index 9e94116e75..251718278e 100644 --- a/module/common/lang/zh-tw.php +++ b/module/common/lang/zh-tw.php @@ -78,6 +78,7 @@ $lang->globalSetting = '全局設置'; $lang->waterfallModel = '瀑布模型'; $lang->all = '所有'; $lang->viewDetails = '查看詳情'; +$lang->app = '應用'; $lang->actions = '操作'; $lang->restore = '恢復預設'; diff --git a/module/common/model.php b/module/common/model.php index 94b8c4d0dc..aadfd2ade5 100644 --- a/module/common/model.php +++ b/module/common/model.php @@ -2453,6 +2453,7 @@ EOD; if($module == 'company' and $method == 'dynamic') return true; if($module == 'action' and $method == 'editcomment') return true; if($module == 'action' and $method == 'comment') return true; + if($module == 'report' and $method == 'export') return true; if(!isset($acls['views'][$menu])) return false; return true; diff --git a/module/common/view/customfield.html.php b/module/common/view/customfield.html.php index a1f24662b6..ef369decb0 100644 --- a/module/common/view/customfield.html.php +++ b/module/common/view/customfield.html.php @@ -16,10 +16,12 @@ #formSettingForm .checkboxes {padding: 10px 3px;} #formSettingForm .checkbox-primary {width: 50%; float: left; margin: 3px 0;} #formSetting .btn {margin-right: 8px;} + [lang^='de'] #formSetting {min-width: 360px;} + [lang^='fr'] #formSetting {min-width: 320px;}
gitlab->id);?> gitlab->name);?> gitlab->url);?>actions;?>actions;?>
- - ">name;?> + + ">name;?> name;?> @@ -54,10 +57,7 @@ isAdminToken) ? '' : 'disabled'; $notBind = $gitlab->isBindUser ? '' : 'disabled'; - common::printLink('gitlab', 'browseProject', "gitlabID=$id", " ", '',"title='{$lang->gitlab->browseProject}' class='btn {$notBind}'"); - common::printLink('gitlab', 'browseGroup', "gitlabID=$id", " ", '', "title='{$lang->gitlab->browseGroup}' class='btn {$notBind}'"); common::printLink('gitlab', 'edit', "gitlabID=$id", " ", '',"title='{$lang->gitlab->edit}' class='btn btn-primary'"); - common::printLink('gitlab', 'browseUser', "gitlabID=$id", " ", '', "title='{$lang->gitlab->browseUser}' class='btn {$disabled} {$notBind}' ,'disabled'"); common::printLink('gitlab', 'bindUser', "id=$id", " ", '', "title='{$lang->gitlab->bindUser}' class='btn {$disabled} {$notBind}' ,'disabled'"); if(common::hasPriv('gitlab', 'delete')) echo html::a($this->createLink('gitlab', 'delete', "gitlabID=$id"), '', 'hiddenwin', "title='{$lang->gitlab->delete}' class='btn'"); ?> diff --git a/module/gitlab/view/browsegroup.html.php b/module/gitlab/view/browsegroup.html.php index c16fb9ad8b..de8a145dc9 100644 --- a/module/gitlab/view/browsegroup.html.php +++ b/module/gitlab/view/browsegroup.html.php @@ -12,8 +12,12 @@ ?> gitlab->project->name);?> gitlab->lastUpdate;?>actions;?>actions;?>
"; if($this->config->edition != 'open') $this->loadModel('flow')->printFlowCell('task', $task, $id); diff --git a/module/task/view/batchcreate.html.php b/module/task/view/batchcreate.html.php index 058d4986ea..9cef587605 100755 --- a/module/task/view/batchcreate.html.php +++ b/module/task/view/batchcreate.html.php @@ -15,6 +15,26 @@ task->addChildTask);?> +task->create->requiredFields);?> +task->create->requiredFields) as $field) +{ + if($field) + { + $requiredFields[$field] = ''; + if(strpos(",{$config->task->customBatchCreateFields},", ",{$field},") !== false) $visibleFields[$field] = ''; + } +} +$colspan = count($visibleFields) + 3; +?> +

@@ -40,32 +60,15 @@

- task->create->requiredFields) as $field) - { - if($field) - { - $requiredFields[$field] = ''; - if(strpos(",{$config->task->customBatchCreateFields},", ",{$field},") !== false) $visibleFields[$field] = ''; - } - } - $colspan = count($visibleFields) + 3; - ?>
- + type != 'ops'):?> - + type == 'kanban'):?> @@ -73,12 +76,12 @@ - - - - - - + + + + + + task->getFlowExtendFields(); foreach($extendFields as $extendField) @@ -112,13 +115,13 @@ ?> - - + type != 'ops'):?> - - - - + + - - - + + loadModel('flow'); foreach($extendFields as $extendField) echo "control == 'select' or $extendField->control == 'multi-select') ? " style='overflow:visible'" : '') . ">" . $this->flow->getFieldControl($extendField, '', $extendField->field . "[$i]") . ""; @@ -189,11 +192,11 @@ - - - - - + + - - + + loadModel('flow'); foreach($extendFields as $extendField) echo "control == 'select' or $extendField->control == 'multi-select') ? " style='overflow:visible'" : '') . ">" . $this->flow->getFieldControl($extendField, '', $extendField->field . "[%s]") . ""; diff --git a/module/task/view/create.html.php b/module/task/view/create.html.php index e9a1510f9a..0f6c3bf5a1 100644 --- a/module/task/view/create.html.php +++ b/module/task/view/create.html.php @@ -17,9 +17,17 @@ task->error->teamMember);?> vision);?> +task->create->requiredFields);?> +task->create->requiredFields) as $field) +{ + if($field and strpos($showFields, $field) === false) $showFields .= ',' . $field; +} +?> +
@@ -29,12 +37,6 @@
- task->create->requiredFields) as $field) - { - if($field and strpos($showFields, $field) === false) $showFields .= ',' . $field; - } - ?>
idAB;?>'>task->module?> moduleBox'>task->module?> '>task->story;?> storyBox'>task->story;?> task->name;?> kanbancard->lane;?> typeAB;?>'>task->assignedTo;?>'>task->estimateAB;?>'>task->estStarted;?>'>task->deadline;?>'>task->desc;?>'>task->pri;?> assignedToBox'>task->assignedTo;?> estimateBox'>task->estimateAB;?> estStartedBox'>task->estStarted;?> deadlineBox'>task->deadline;?> descBox'>task->desc;?> priBox'>task->pri;?>
style='overflow:visible'> + style='overflow: visible'> +
@@ -146,9 +149,9 @@
task->typeList, $type, 'class=form-control');?> style='overflow:visible'>>> +
> +
>>task->priList, $pri, 'class=form-control');?>task->priList, $pri, 'class=form-control');?>
%s style='overflow:visible'> + id, \"%s\")'")?> style='overflow: visible'> +
@@ -216,9 +219,9 @@
task->typeList, $type, 'class="form-control"');?> style='overflow:visible'>>> +
> +
{$lang->task->ditto}"; ?>
-
>>task->priList, $pri, 'class=form-control');?>task->priList, $pri, 'class=form-control');?>
type != 'kanban' or $this->config->vision == 'lite'):?> @@ -97,8 +99,8 @@ printExtendFields('', 'table', 'columns=3');?> - lifetime != 'ops'):?> - + lifetime != 'ops') ? '' : 'hidden'?> + - type != 'ops'):?> @@ -174,8 +175,8 @@ task->copyStoryTitle;?> - - task->pri;?> + + task->pri;?>task->priList as $priKey => $priValue) @@ -195,9 +196,9 @@ } ?> - pri, "class='form-control'");?> + pri, "class='form-control $hiddenPri'");?> -
+
@@ -206,15 +207,13 @@
- - -
+ +
task->estimateAB;?>
-
@@ -231,29 +230,23 @@ - - + - - - + + - diff --git a/module/task/view/finish.html.php b/module/task/view/finish.html.php index 6c855dff64..2ca48a2d6e 100644 --- a/module/task/view/finish.html.php +++ b/module/task/view/finish.html.php @@ -13,6 +13,8 @@ + +task->error->consumedEmptyAB);?>
team) and (!isset($task->team[$app->user->account]) or ($task->assignedTo != $app->user->account and $task->mode == 'linear'))):?> @@ -59,7 +61,7 @@
task->story;?> task->noticeLinkStory, html::a($this->createLink('execution', 'linkStory', "executionID=$execution->id"), $lang->execution->linkStory, '', 'class="text-primary"'), html::a("javascript:loadStories($execution->id)", $lang->refresh, '', 'class="text-primary"'));?> @@ -110,7 +112,6 @@
task->datePlan;?>
- - estStarted, "class='form-control form-date' placeholder='{$lang->task->estStarted}'");?> - - - ~ - - - deadline, "class='form-control form-date' placeholder='{$lang->task->deadline}'");?> - + estStarted, "class='form-control form-date $hiddenEstStarted estStartedBox' placeholder='{$lang->task->estStarted}'");?> + + ~ + deadline, "class='form-control form-date $hiddenDeadline deadlineBox' placeholder='{$lang->task->deadline}'");?>
story->mailto;?>
@@ -262,7 +255,6 @@
task->afterSubmit;?> team) ? $lang->task->consumed : $lang->task->myConsumed;?> team) ? $task->consumed : (float)$task->myConsumed;?> - " . (float)$consumed . " " . $lang->workingHour . html::hidden('consumed', $consumed); js::set('consumed', $consumed); ?> diff --git a/module/upgrade/js/confirm.js b/module/upgrade/js/confirm.js new file mode 100644 index 0000000000..ec15e38e52 --- /dev/null +++ b/module/upgrade/js/confirm.js @@ -0,0 +1,8 @@ +$(function() +{ + $('#submit').click(function() + { + $(this).addClass('disabled'); + $('#upgradingTips').removeClass('hidden'); + }); +}); diff --git a/module/upgrade/lang/de.php b/module/upgrade/lang/de.php index 3d2135e293..95d0e128e0 100644 --- a/module/upgrade/lang/de.php +++ b/module/upgrade/lang/de.php @@ -48,6 +48,7 @@ $lang->upgrade->fromVersion = 'Von Version'; $lang->upgrade->toVersion = 'Upgrade nach Version'; $lang->upgrade->confirm = 'SQL Bestätigen'; $lang->upgrade->sureExecute = 'Ausführen'; +$lang->upgrade->upgradingTips = 'The upgrade is in progress, please be patient. Do not refresh the page, blackout, or turn off your computer!'; $lang->upgrade->forbiddenExt = 'Die Erweiterung ist nicht kompatibel mit der Upgradeversion. Sie wurde deaktiviert:'; $lang->upgrade->updateFile = 'Updateinformation wurden hinzugefügt.'; $lang->upgrade->noticeSQL = 'Your database is inconsistent with the standard and it failed to fix it. Please run the following SQL and refresh.'; diff --git a/module/upgrade/lang/en.php b/module/upgrade/lang/en.php index 7af24cb5e4..d49e2a347e 100644 --- a/module/upgrade/lang/en.php +++ b/module/upgrade/lang/en.php @@ -48,6 +48,7 @@ $lang->upgrade->fromVersion = 'From'; $lang->upgrade->toVersion = 'To'; $lang->upgrade->confirm = 'Confirm SQL'; $lang->upgrade->sureExecute = 'Execute'; +$lang->upgrade->upgradingTips = 'The upgrade is in progress, please be patient. Do not refresh the page, blackout, or turn off your computer!'; $lang->upgrade->forbiddenExt = 'The extension is incompatible with the version. It has been deactivated:'; $lang->upgrade->updateFile = 'File information has to be updated.'; $lang->upgrade->noticeSQL = 'Your database is inconsistent with the standard and it failed to fix it. Please run the following SQL and refresh.'; diff --git a/module/upgrade/lang/fr.php b/module/upgrade/lang/fr.php index 1e572bae99..6ef2076719 100644 --- a/module/upgrade/lang/fr.php +++ b/module/upgrade/lang/fr.php @@ -48,6 +48,7 @@ $lang->upgrade->fromVersion = 'De'; $lang->upgrade->toVersion = 'à'; $lang->upgrade->confirm = 'Confirmez SQL'; $lang->upgrade->sureExecute = 'Executez'; +$lang->upgrade->upgradingTips = 'La mise à jour est en cours, veuillez être patient. Ne pas actualiser la page ou éteindre votre ordinateur!'; $lang->upgrade->forbiddenExt = 'Cette extension est incompatible avec la version. Elle a été désactivée :'; $lang->upgrade->updateFile = "Le fichier information a besoin d'une mise à jour."; $lang->upgrade->noticeSQL = 'Votre base de donnée est inconsistente avec le standard et il y a eu un échec pour la corriger. Exécutez la commande SQL suivante et rafraichissez.'; diff --git a/module/upgrade/lang/zh-cn.php b/module/upgrade/lang/zh-cn.php index 8b349e08e7..fe6ddff5d4 100644 --- a/module/upgrade/lang/zh-cn.php +++ b/module/upgrade/lang/zh-cn.php @@ -48,6 +48,7 @@ $lang->upgrade->fromVersion = '原来的版本'; $lang->upgrade->toVersion = '升级到'; $lang->upgrade->confirm = '确认要执行的SQL语句'; $lang->upgrade->sureExecute = '确认执行'; +$lang->upgrade->upgradingTips = '正在升级中,请耐心等待,切勿刷新页面、断电、关机!'; $lang->upgrade->forbiddenExt = '以下插件与新版本不兼容,已经自动禁用:'; $lang->upgrade->updateFile = '需要更新附件信息。'; $lang->upgrade->noticeSQL = '检查到你的数据库跟标准不一致,尝试修复失败。请执行以下SQL语句,再刷新页面检查。'; diff --git a/module/upgrade/view/confirm.html.php b/module/upgrade/view/confirm.html.php index bdbaf1ebd0..66cfe9d0dd 100644 --- a/module/upgrade/view/confirm.html.php +++ b/module/upgrade/view/confirm.html.php @@ -19,7 +19,10 @@ - + diff --git a/module/user/control.php b/module/user/control.php index 82c0715acb..0cb7472c2e 100755 --- a/module/user/control.php +++ b/module/user/control.php @@ -969,7 +969,7 @@ class user extends control } else { - $loginExpired = !(preg_match("/(m=|\/)(index)(&f=|-)(index)(&|-|\.)?/", strtolower($this->referer), $output) or $this->referer == '/' or $this->referer == '/zentao/' or empty($this->referer)); + $loginExpired = !(preg_match("/(m=|\/)(index)(&f=|-)(index)(&|-|\.)?/", strtolower($this->referer), $output) or $this->referer == $this->config->webRoot or empty($this->referer)); $this->loadModel('misc'); $this->loadModel('extension');