Merge branch 'master' of http://gitlab.zcorp.cc/easycorp/zentaopms
This commit is contained in:
@@ -1,87 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The admin module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id: en.php 4460 2013-02-26 02:28:02Z chencongzhi520@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->admin->common = 'Admin';
|
||||
$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->checkWeak = 'Schwache Passwörter prüfen';
|
||||
$lang->admin->certifyMobile = 'Prüfen Sie die Mobilnummer';
|
||||
$lang->admin->certifyEmail = 'Prüfen Sie die Emailadresse';
|
||||
$lang->admin->ztCompany = 'Prüfen Sie das Unternehmen';
|
||||
$lang->admin->captcha = 'Bestätigungscode';
|
||||
$lang->admin->getCaptcha = 'Bestätigungscode anfordern';
|
||||
$lang->admin->register = 'Register';
|
||||
|
||||
$lang->admin->api = 'API';
|
||||
$lang->admin->log = 'Log';
|
||||
$lang->admin->setting = 'Einstellungen';
|
||||
$lang->admin->days = 'Gültige Tage';
|
||||
|
||||
$lang->admin->info = new stdclass();
|
||||
$lang->admin->info->version = 'Aktuelle Version ist %s. ';
|
||||
$lang->admin->info->links = 'You can visit links below';
|
||||
$lang->admin->info->account = 'Ihr ZenTao Konto ist %s.';
|
||||
$lang->admin->info->log = 'Logs die über die Gültigen Tage hinausgehen werden gelöscht. Aufgabenplanung muss laufen (cron).';
|
||||
|
||||
$lang->admin->notice = new stdclass();
|
||||
$lang->admin->notice->register = "Hinweiß: Sie haben sich nicht bei ZenTao (www.zentao.pm) registriert. %s um die aktuellen Updates und News zu erhalten.";
|
||||
$lang->admin->notice->ignore = "Ignorieren";
|
||||
$lang->admin->notice->int = "『%s』sollte eine positive Zahl sein.";
|
||||
|
||||
$lang->admin->registerNotice = new stdclass();
|
||||
$lang->admin->registerNotice->common = 'Verbinde neues Konto';
|
||||
$lang->admin->registerNotice->caption = 'In der Zentao Community registieren';
|
||||
$lang->admin->registerNotice->click = 'Bitte registieren Sie sich hier';
|
||||
$lang->admin->registerNotice->lblAccount = 'mindestens 3 Zeichen bitte; mit Buchsten und Ziffern.';
|
||||
$lang->admin->registerNotice->lblPasswd = 'mindestens 6 Zeichen bitte; mit Buchsten und Ziffern.';
|
||||
$lang->admin->registerNotice->submit = 'Registieren';
|
||||
$lang->admin->registerNotice->bind = "Verbinde bestehendes Konto";
|
||||
$lang->admin->registerNotice->success = "Sie haben sich erfolgreich registriert!";
|
||||
|
||||
$lang->admin->bind = new stdclass();
|
||||
$lang->admin->bind->caption = 'Konto verknüpfen';
|
||||
$lang->admin->bind->success = "Konto wurde verknüpft!";
|
||||
|
||||
$lang->admin->safe = new stdclass();
|
||||
$lang->admin->safe->common = 'Sicherheits-Regeln';
|
||||
$lang->admin->safe->set = 'PasswortStärke';
|
||||
$lang->admin->safe->password = 'Passwort Stärke';
|
||||
$lang->admin->safe->weak = 'Schwache Passwörter';
|
||||
$lang->admin->safe->reason = 'Typ';
|
||||
$lang->admin->safe->checkWeak = 'Schwache Passwörter prüfen';
|
||||
$lang->admin->safe->changeWeak = 'Ihr Passwort ist schwach. Bitte ändern.';
|
||||
$lang->admin->safe->loginCaptcha = 'Login using CAPTCHA';
|
||||
$lang->admin->safe->modifyPasswordFirstLogin = 'Passwort nach der ersten Anmeldung ändern';
|
||||
|
||||
$lang->admin->safe->modeList[0] = 'N/A';
|
||||
$lang->admin->safe->modeList[1] = 'Medium';
|
||||
$lang->admin->safe->modeList[2] = 'Stark';
|
||||
|
||||
$lang->admin->safe->modeRuleList[1] = 'Beinhaltet Groß und Kleinbuchstaben sowie Ziffern. Länge >= 6';
|
||||
$lang->admin->safe->modeRuleList[2] = 'Beinhaltet Groß und Kleinbuchstaben, Ziffern sowie Sonderzeichen. Länge >= 10.';
|
||||
|
||||
$lang->admin->safe->reasonList['weak'] = 'Bekannte Schwache Passwörter';
|
||||
$lang->admin->safe->reasonList['account'] = 'Entspricht ihrem Konto';
|
||||
$lang->admin->safe->reasonList['mobile'] = 'Entspricht Ihrer Mobilnummer';
|
||||
$lang->admin->safe->reasonList['phone'] = 'Entspricht Ihrer Telefonnummer';
|
||||
$lang->admin->safe->reasonList['birthday'] = 'Entspricht Ihrem Geburtstag';
|
||||
|
||||
$lang->admin->safe->modifyPasswordList[1] = 'Ja';
|
||||
$lang->admin->safe->modifyPasswordList[0] = 'Nein';
|
||||
|
||||
$lang->admin->safe->loginCaptchaList[1] = 'Ja';
|
||||
$lang->admin->safe->loginCaptchaList[0] = 'Nein';
|
||||
|
||||
$lang->admin->safe->noticeMode = 'Password will be checked when a user logs in, or a user is added or edited.';
|
||||
$lang->admin->safe->noticeStrong = '';
|
||||
@@ -1,87 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The admin module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id: en.php 4460 2013-02-26 02:28:02Z chencongzhi520@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->admin->common = 'Admin';
|
||||
$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->checkWeak = 'Check Weak Password';
|
||||
$lang->admin->certifyMobile = 'Verify your cellphone';
|
||||
$lang->admin->certifyEmail = 'Verify your Email';
|
||||
$lang->admin->ztCompany = 'Verify your company';
|
||||
$lang->admin->captcha = 'Verification Code';
|
||||
$lang->admin->getCaptcha = 'Send Verification Code';
|
||||
$lang->admin->register = 'Register';
|
||||
|
||||
$lang->admin->api = 'API';
|
||||
$lang->admin->log = 'Log';
|
||||
$lang->admin->setting = 'Setting';
|
||||
$lang->admin->days = 'Valid Day';
|
||||
|
||||
$lang->admin->info = new stdclass();
|
||||
$lang->admin->info->version = 'Current Version is %s. ';
|
||||
$lang->admin->info->links = 'You can visit links below';
|
||||
$lang->admin->info->account = 'Your ZenTao account is %s.';
|
||||
$lang->admin->info->log = 'Log that exceeds valid days will be deleted and you have to run cron.';
|
||||
|
||||
$lang->admin->notice = new stdclass();
|
||||
$lang->admin->notice->register = "Note: You haven't registered in ZenTao official website(www.zentao.pm). %s then get the Latest ZenTao Upgrades and News.";
|
||||
$lang->admin->notice->ignore = "Ignore";
|
||||
$lang->admin->notice->int = "『%s』should be a positive integer.";
|
||||
|
||||
$lang->admin->registerNotice = new stdclass();
|
||||
$lang->admin->registerNotice->common = 'Bind Account';
|
||||
$lang->admin->registerNotice->caption = 'ZenTao Community Signup';
|
||||
$lang->admin->registerNotice->click = 'Sign Up';
|
||||
$lang->admin->registerNotice->lblAccount = '>= 3 letters and numbers';
|
||||
$lang->admin->registerNotice->lblPasswd = '>= 6 letters and numbers';
|
||||
$lang->admin->registerNotice->submit = 'Submit';
|
||||
$lang->admin->registerNotice->bind = "Bind Exsiting Account";
|
||||
$lang->admin->registerNotice->success = "You have signed up!";
|
||||
|
||||
$lang->admin->bind = new stdclass();
|
||||
$lang->admin->bind->caption = 'Link Account';
|
||||
$lang->admin->bind->success = "Account is linked!";
|
||||
|
||||
$lang->admin->safe = new stdclass();
|
||||
$lang->admin->safe->common = 'Security Policy';
|
||||
$lang->admin->safe->set = 'Password Settings';
|
||||
$lang->admin->safe->password = 'Password Strength';
|
||||
$lang->admin->safe->weak = 'Common Weak Passwords';
|
||||
$lang->admin->safe->reason = 'Type';
|
||||
$lang->admin->safe->checkWeak = 'Weak Password Scan';
|
||||
$lang->admin->safe->changeWeak = 'Force to change weak password';
|
||||
$lang->admin->safe->loginCaptcha = 'Login using CAPTCHA';
|
||||
$lang->admin->safe->modifyPasswordFirstLogin = 'Force to change password after first login';
|
||||
|
||||
$lang->admin->safe->modeList[0] = 'I don\'t care.';
|
||||
$lang->admin->safe->modeList[1] = 'Medium';
|
||||
$lang->admin->safe->modeList[2] = 'Strong';
|
||||
|
||||
$lang->admin->safe->modeRuleList[1] = ' >= 6 upper and lower case, and numbers';
|
||||
$lang->admin->safe->modeRuleList[2] = ' >= 10 upper and lower case, numbers and special characters.';
|
||||
|
||||
$lang->admin->safe->reasonList['weak'] = 'Common Weak Password';
|
||||
$lang->admin->safe->reasonList['account'] = 'Same as account';
|
||||
$lang->admin->safe->reasonList['mobile'] = 'Same as mobilephone number';
|
||||
$lang->admin->safe->reasonList['phone'] = 'Same as phone number';
|
||||
$lang->admin->safe->reasonList['birthday'] = 'Same as DOB';
|
||||
|
||||
$lang->admin->safe->modifyPasswordList[1] = 'Yes';
|
||||
$lang->admin->safe->modifyPasswordList[0] = 'No';
|
||||
|
||||
$lang->admin->safe->loginCaptchaList[1] = 'Yes'
|
||||
$lang->admin->safe->loginCaptchaList[0] = 'No';
|
||||
|
||||
$lang->admin->safe->noticeMode = 'Password will be checked when a user logs in, or a user is added or edited.';
|
||||
$lang->admin->safe->noticeStrong = '';
|
||||
@@ -1,87 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The admin module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id: en.php 4460 2013-02-26 02:28:02Z chencongzhi520@gmail.com $
|
||||
* @link https://www.zentao.pm
|
||||
*/
|
||||
$lang->admin->common = 'Admin';
|
||||
$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->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';
|
||||
$lang->admin->ztCompany = 'Vérifier votre entreprise';
|
||||
$lang->admin->captcha = 'Code de vérification';
|
||||
$lang->admin->getCaptcha = 'Obtenir le Code de vérification';
|
||||
$lang->admin->register = 'Register';
|
||||
|
||||
$lang->admin->api = 'API';
|
||||
$lang->admin->log = 'Log';
|
||||
$lang->admin->setting = 'Paramétrage';
|
||||
$lang->admin->days = 'Durée de conservation';
|
||||
|
||||
$lang->admin->info = new stdclass();
|
||||
$lang->admin->info->version = 'La version actuelle est %s customisée. ';
|
||||
$lang->admin->info->links = 'Vous pouvez visiter les liens ci-dessous';
|
||||
$lang->admin->info->account = 'Votre identifiant client ZenTao est %s.';
|
||||
$lang->admin->info->log = 'Les logs qui dépassent la durée de conservation seront supprimés et vous devrez exécuter un cron.';
|
||||
|
||||
$lang->admin->notice = new stdclass();
|
||||
$lang->admin->notice->register = "Note: Vous n'êtes pas enregistré sur le site officiel de ZenTao (www.zentao.pm). %s vous pourrez ensuite obtenir les dernières Mises à Jour de ZenTao et des informations.";
|
||||
$lang->admin->notice->ignore = "Ignorer";
|
||||
$lang->admin->notice->int = "『 %s 』 devrait être un entier positif.";
|
||||
|
||||
$lang->admin->registerNotice = new stdclass();
|
||||
$lang->admin->registerNotice->common = 'Connectez-vous avec votre nouveau compte';
|
||||
$lang->admin->registerNotice->caption = "S'enregistrer sur la communauté Zentao";
|
||||
$lang->admin->registerNotice->click = "S'enregistrer ici";
|
||||
$lang->admin->registerNotice->lblAccount = '>= 3 lettres et chiffres';
|
||||
$lang->admin->registerNotice->lblPasswd = '>= 6 lettres et chiffres';
|
||||
$lang->admin->registerNotice->submit = "S'enregistrer";
|
||||
$lang->admin->registerNotice->bind = "S'associer à un compte existant";
|
||||
$lang->admin->registerNotice->success = "Vous êtes enregistré !";
|
||||
|
||||
$lang->admin->bind = new stdclass();
|
||||
$lang->admin->bind->caption = 'Lier au compte';
|
||||
$lang->admin->bind->success = "Le compte est associé !";
|
||||
|
||||
$lang->admin->safe = new stdclass();
|
||||
$lang->admin->safe->common = 'Politique de sécurité';
|
||||
$lang->admin->safe->set = 'Paramétrages du Mot de passe';
|
||||
$lang->admin->safe->password = 'Force du Mot de passe';
|
||||
$lang->admin->safe->weak = 'Mots de passes non sécurisés courrants';
|
||||
$lang->admin->safe->reason = 'Type';
|
||||
$lang->admin->safe->checkWeak = 'Balayage des mots de passe faibles';
|
||||
$lang->admin->safe->changeWeak = 'Forcer le changement des mots de passe faibles';
|
||||
$lang->admin->safe->loginCaptcha = 'Login using CAPTCHA';
|
||||
$lang->admin->safe->modifyPasswordFirstLogin = 'Forcer le changement du mot de passe après la première connexion';
|
||||
|
||||
$lang->admin->safe->modeList[0] = "Contrôle Modéré";
|
||||
$lang->admin->safe->modeList[1] = 'Contrôle Moyen';
|
||||
$lang->admin->safe->modeList[2] = 'Contrôle Fort';
|
||||
|
||||
$lang->admin->safe->modeRuleList[1] = ' >= 6 Majuscules, minuscules et chiffres';
|
||||
$lang->admin->safe->modeRuleList[2] = ' >= 10 Majuscules, minuscules, chiffres et caractères spéciaux';
|
||||
|
||||
$lang->admin->safe->reasonList['weak'] = 'Mots de passe faibles courants';
|
||||
$lang->admin->safe->reasonList['account'] = 'Identique au compte';
|
||||
$lang->admin->safe->reasonList['mobile'] = 'Identique au numéro de mobile';
|
||||
$lang->admin->safe->reasonList['phone'] = 'Identique au téléphone fixe';
|
||||
$lang->admin->safe->reasonList['birthday'] = 'Identique à la date de naissance';
|
||||
|
||||
$lang->admin->safe->modifyPasswordList[1] = 'Oui';
|
||||
$lang->admin->safe->modifyPasswordList[0] = 'Non';
|
||||
|
||||
$lang->admin->safe->loginCaptchaList[1] = 'Oui'
|
||||
$lang->admin->safe->loginCaptchaList[0] = 'Non';
|
||||
|
||||
$lang->admin->safe->noticeMode = "Le mot de passe sera vérifié quand un utilisateur se connectera ou qu'un utilisateur sera créé ou modifier.";
|
||||
$lang->admin->safe->noticeStrong = '';
|
||||
@@ -1,87 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The admin module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Nguyễn Quốc Nho <quocnho@gmail.com>
|
||||
* @package admin
|
||||
* @version $Id: vi.php 4460 2013-02-26 02:28:02Z quocnho@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->admin->common = 'Quản trị';
|
||||
$lang->admin->index = 'Trang quản trị';
|
||||
$lang->admin->checkDB = 'Kiểm tra CSDL';
|
||||
$lang->admin->sso = 'Zdoo';
|
||||
$lang->admin->ssoAction = 'Liên kết Zdoo';
|
||||
$lang->admin->safeIndex = 'Bảo mật';
|
||||
$lang->admin->checkWeak = 'Kiểm tra độ yếu mật khẩu';
|
||||
$lang->admin->certifyMobile = 'Xác thực di động của bạn';
|
||||
$lang->admin->certifyEmail = 'Xác thực email của bạn';
|
||||
$lang->admin->ztCompany = 'Xác thực doanh nghiệp của bạn';
|
||||
$lang->admin->captcha = 'Mã xác thực';
|
||||
$lang->admin->getCaptcha = 'Gửi Mã xác thực';
|
||||
$lang->admin->register = 'Register';
|
||||
|
||||
$lang->admin->api = 'API';
|
||||
$lang->admin->log = 'Nhật ký';
|
||||
$lang->admin->setting = 'Thiết lập';
|
||||
$lang->admin->days = 'Ngày hợp lệ';
|
||||
|
||||
$lang->admin->info = new stdclass();
|
||||
$lang->admin->info->version = 'Phiên bản hiện tại là %s. ';
|
||||
$lang->admin->info->links = ' Bạn có thể ghé thăm liên kết sau';
|
||||
$lang->admin->info->account = 'Tài khoản ZenTao của bạn là %s.';
|
||||
$lang->admin->info->log = 'Nhật ký vượt quá ngày hợp lệ sẽ bị xóa và bạn phải chay Cron.';
|
||||
|
||||
$lang->admin->notice = new stdclass();
|
||||
$lang->admin->notice->register = "Chú ý: Bạn chưa đăng ký trên trang web chính thức của ZenTao (www.zentao.pm). %s sau đó nhận Bản tin và nâng cấp mới nhất của ZenTao.";
|
||||
$lang->admin->notice->ignore = "Bỏ qua";
|
||||
$lang->admin->notice->int = "『%s』 nên là số nguyên dương.";
|
||||
|
||||
$lang->admin->registerNotice = new stdclass();
|
||||
$lang->admin->registerNotice->common = 'Kết nối tài khoản';
|
||||
$lang->admin->registerNotice->caption = 'Đăng ký cộng đồng ZenTao';
|
||||
$lang->admin->registerNotice->click = 'Đăng ký';
|
||||
$lang->admin->registerNotice->lblAccount = '>= 3 chữ và số';
|
||||
$lang->admin->registerNotice->lblPasswd = '>= 6 chữ và số';
|
||||
$lang->admin->registerNotice->submit = 'Gửi';
|
||||
$lang->admin->registerNotice->bind = "Kết nối với tài khoản đang tồn tại";
|
||||
$lang->admin->registerNotice->success = "Bạn đã đăng ký!";
|
||||
|
||||
$lang->admin->bind = new stdclass();
|
||||
$lang->admin->bind->caption = 'Liên kết tài khoản';
|
||||
$lang->admin->bind->success = "Tài khoản đã được kết nối!";
|
||||
|
||||
$lang->admin->safe = new stdclass();
|
||||
$lang->admin->safe->common = 'Chính sách bảo mật';
|
||||
$lang->admin->safe->set = 'Thiết lập mật khẩu';
|
||||
$lang->admin->safe->password = 'Độ mạnh mật khẩu';
|
||||
$lang->admin->safe->weak = 'Mật khẩu yếu thường dùng';
|
||||
$lang->admin->safe->reason = 'Loại';
|
||||
$lang->admin->safe->checkWeak = 'Quét mật khẩu yếu';
|
||||
$lang->admin->safe->changeWeak = 'Chủ động thay đổi mật khẩu yếu';
|
||||
$lang->admin->safe->loginCaptcha = 'Login using CAPTCHA';
|
||||
$lang->admin->safe->modifyPasswordFirstLogin = 'Chủ động thay đổi mật khẩu sau lần đăng nhập đầu tiên';
|
||||
|
||||
$lang->admin->safe->modeList[0] = 'Yếu';
|
||||
$lang->admin->safe->modeList[1] = 'Trung bình';
|
||||
$lang->admin->safe->modeList[2] = 'Mạnh';
|
||||
|
||||
$lang->admin->safe->modeRuleList[1] = ' >= 6 chữ hoa, chữ thường và số';
|
||||
$lang->admin->safe->modeRuleList[2] = ' >= 10 chữ hoa, chữ thường, số và ký tự đặc biệt.';
|
||||
|
||||
$lang->admin->safe->reasonList['weak'] = 'Mật khẩu yếu thường dùng';
|
||||
$lang->admin->safe->reasonList['account'] = 'Giống tài khoản';
|
||||
$lang->admin->safe->reasonList['mobile'] = 'Giống số di động';
|
||||
$lang->admin->safe->reasonList['phone'] = 'Giống số điện thoại';
|
||||
$lang->admin->safe->reasonList['birthday'] = 'Giống ngày sinh';
|
||||
|
||||
$lang->admin->safe->modifyPasswordList[1] = 'Có';
|
||||
$lang->admin->safe->modifyPasswordList[0] = 'Không';
|
||||
|
||||
$lang->admin->safe->loginCaptchaList[1] = 'Yes'
|
||||
$lang->admin->safe->loginCaptchaList[0] = 'No';
|
||||
|
||||
$lang->admin->safe->noticeMode = 'Mật khẩu sẽ được kiểm tra khi người dùng đăng nhập hoặc người dùng thêm hoặc sửa.';
|
||||
$lang->admin->safe->noticeStrong = '';
|
||||
@@ -16,6 +16,196 @@ $lang->automation->description = '自动化测试解决方案';
|
||||
$lang->automation->ztf = 'ZTF自动化测试管理框架';
|
||||
$lang->automation->zendata = 'ZenData数据生成工具';
|
||||
|
||||
$lang->automation->details = '';
|
||||
$lang->automation->ztfDetails = '';
|
||||
$lang->automation->zendataDetails = '';
|
||||
$lang->automation->details = <<<EOF
|
||||
<article class="article">
|
||||
<header>
|
||||
<h1 class="text-center">自动化测试解决方案</h1>
|
||||
<div class="abstract">
|
||||
<p>
|
||||
摘要:欢迎使用禅道提供的自动化解决方案,本次为大家带来了两款工具。Zentao Testing Framework,简称ZTF,是一款开源自动化测试管理框架。
|
||||
ZenData可以用于手工测试场景下面测试数据的准备,也可以用于自动化测试脚本里面的数据生成和解析。
|
||||
</p>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<section class="content">
|
||||
<h2>ZTF自动化测试管理框架</h2>
|
||||
<p>
|
||||
Zentao Testing Framework,简称ZTF,是一款开源自动化测试管理框架。
|
||||
和市面上已有的自动化测试框架相比,ZTF更聚焦于自动化测试的管理功能。
|
||||
ZTF提供了自动化测试脚本的定义、管理、驱动、执行结果的回传、bug的创建以及和其他自动化测框架的集成。
|
||||
ZTF使用go语言开发,可以支持各种平台。ZTF支持常见的编程语言,您可以选择您喜欢用的语言来开发自动化测试脚本。
|
||||
</p>
|
||||
<div class="section">
|
||||
<div class="text-left" style="padding:25px 15px 10px 15px;">
|
||||
<p>
|
||||
<a href="https://ztf.im/index.html" class="btn btn-primary bg-primary btn-lg" target="_blank">禅道ZTF官网</a>
|
||||
<a href="https://ztf.im/ztf.html" class="btn btn-primary bg-primary btn-lg" target="_blank">ZTF框架下载</a>
|
||||
<a href="https://ztf.im/book/ztf/ztf-about-26.html" class="btn btn-primary bg-primary btn-lg" target="_blank">ZTF框架手册</a>
|
||||
</p>
|
||||
<div style="margin-top:15px;" class="text-muted">
|
||||
<p>
|
||||
我们还提供了QQ群和微信群的交流方式,官方QQ技术支持响应时间为:上午9:00—11:30,下午13:00—17:30(周六周日,节假日休息)
|
||||
</p>
|
||||
<p>
|
||||
软件测试交流群: 522506766 (添加客服微信: easycorp666,可邀请您加入软件测试微信群)
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<h2>ZenData数据生成工具</h2>
|
||||
<p>
|
||||
ZenData主要两大功能:数据生成和数据解析。通过一个配置文件,可以使用ZenData生成您想要的各种数据。
|
||||
同样也可以对某一个数据文件,指定其数据类型定义的配置文件,完成到结构化数据的解析。
|
||||
ZenData可以用于手工测试场景下面测试数据的准备,也可以用于自动化测试脚本里面的数据生成和解析。还可以一键生成海量数据用于性能和压力测试。
|
||||
</p>
|
||||
<div class="section">
|
||||
<div class="text-left" style="padding:25px 15px 10px 15px;">
|
||||
<p>
|
||||
<a href="https://www.zendata.cn/index.html" class="btn btn-primary bg-primary btn-lg" target="_blank">ZenData官网</a>
|
||||
<a href="https://www.zendata.cn/download.html" class="btn btn-primary bg-primary btn-lg" target="_blank">ZenData下载</a>
|
||||
<a href="https://www.zendata.cn/book/zendata/why-zendata-115.html" class="btn btn-primary bg-primary btn-lg" target="_blank">ZenData手册</a>
|
||||
</p>
|
||||
<div style="margin-top:15px;" class="text-muted">
|
||||
<p>
|
||||
我们还提供了QQ群和微信群的交流方式,官方QQ技术支持响应时间为:上午9:00—11:30,下午13:00—17:30(周六周日,节假日休息)
|
||||
</p>
|
||||
<p>
|
||||
软件测试交流群: 522506766 (添加客服微信: easycorp666,可邀请您加入软件测试微信群)
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</article>
|
||||
EOF;
|
||||
$lang->automation->ztfDetails = <<<EOF
|
||||
<article class="article">
|
||||
<header>
|
||||
<h1 class="text-center">ZTF自动化测试管理框架</h1>
|
||||
<div class="abstract">
|
||||
<p>
|
||||
摘要:Zentao Testing Framework,简称ZTF,是一款开源自动化测试管理框架。
|
||||
</p>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<section class="content">
|
||||
<h4>一、ZTF是什么</h4>
|
||||
<p>
|
||||
Zentao Testing Framework,简称ZTF,是一款开源自动化测试管理框架。
|
||||
和市面上已有的自动化测试框架相比,ZTF更聚焦于自动化测试的管理功能。
|
||||
ZTF提供了自动化测试脚本的定义、管理、驱动、执行结果的回传、bug的创建以及和其他自动化测框架的集成。
|
||||
ZTF使用go语言开发,可以支持各种平台。ZTF支持常见的编程语言,您可以选择您喜欢用的语言来开发自动化测试脚本。
|
||||
</p>
|
||||
<h4>二、为什么来做ZTF</h4>
|
||||
<p>
|
||||
市面上已经有很多自动化测试框架,我们为什么还要来做ZTF呢?ZTF主要是解决测试管理的问题。
|
||||
目前市面上的自动化测试框架主要分为两大类,一类是单元测试框架,一类是某种领域的自动化测试框架。
|
||||
单元测试框架是跟各个语言绑定的,比如cppunit, phpunit等。第二类框架以selenium为代表,可以用来做web的自动化测试。
|
||||
也还有做GUI或者手机应用乃至游戏等场景的自动化测试的框架。
|
||||
</p>
|
||||
<p>
|
||||
这就产生了一个问题,我们需要将这些自动化测试框架的测试脚本统一管理起来。
|
||||
每一个脚本都可以和测试管理系统里面的一个用例进行关联,脚本里面的步骤信息和管理系统里面的用例信息可以互相同步。
|
||||
测试执行的结果可以反映到测试管理系统中,失败的测试脚本可以创建bug。
|
||||
为此我们开发了ZTF测试管理框架。
|
||||
</p>
|
||||
<h4>三、ZTF和其他自动化测试框架的关系</h4>
|
||||
<p>
|
||||
ZTF和其他的自动化测试框架是互相合作的关系。
|
||||
您可以继续使用之前的自动化测试框架来进行脚本的开发,只需要通过注释的方式加入几个标签就可以转换成ztf的自动化测试脚本。
|
||||
</p>
|
||||
<h4>四、ZTF自动化测试框架的特点</h4>
|
||||
<ol>
|
||||
<li>简单:ZTF的语法标签和规则都很简单,一看就会,很容易上手。</li>
|
||||
<li>跨平台:ZTF使用GO语言开发,跨平台,只有一个可执行文件,就可以运行。</li>
|
||||
<li>跨语言:ZTF支持常见的编程语言,你喜欢用什么就用什么。</li>
|
||||
<li>跨框架:ZTF可以和市面上常见的单元测试框架、常见的自动化测试框架都可以很好的集成。</li>
|
||||
<li>工程化:使用ZTF可以真正达到工程化的自动化测试,可以大批量大规模的进行自动化测试的管理和执行。</li>
|
||||
<li>跨场景:借助于其他框架,ZTF可以用来做单元测试、接口测试、web界面测试、GUI界面测试、APP测试等多种场景。</li>
|
||||
</ol>
|
||||
<div class="section">
|
||||
<div class="text-left" style="padding:25px 15px 10px 15px;">
|
||||
<p>
|
||||
<a href="https://ztf.im/index.html" class="btn btn-primary bg-primary btn-lg" target="_blank">禅道ZTF官网</a>
|
||||
<a href="https://ztf.im/ztf.html" class="btn btn-primary bg-primary btn-lg" target="_blank">ZTF框架下载</a>
|
||||
<a href="https://ztf.im/book/ztf/ztf-about-26.html" class="btn btn-primary bg-primary btn-lg" target="_blank">ZTF框架手册</a>
|
||||
</p>
|
||||
<div style="margin-top:15px;" class="text-muted">
|
||||
<p>
|
||||
我们还提供了QQ群和微信群的交流方式,官方QQ技术支持响应时间为:上午9:00—11:30,下午13:00—17:30(周六周日,节假日休息)
|
||||
</p>
|
||||
<p>
|
||||
软件测试交流群: 522506766 (添加客服微信: easycorp666,可邀请您加入软件测试微信群)
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</article>
|
||||
EOF;
|
||||
|
||||
$lang->automation->zendataDetails = <<<EOF
|
||||
<article class="article">
|
||||
<header>
|
||||
<h1 class="text-center">ZenData数据生成工具</h1>
|
||||
<div class="abstract">
|
||||
<p>
|
||||
摘要:ZenData使用YAML来作为数据类型配置文件实现了数据的生成和解析。
|
||||
ZenData可以用于手工测试场景下面测试数据的准备,也可以用于自动化测试脚本里面的数据生成和解析。
|
||||
还可以一键生成海量数据用于性能和压力测试。
|
||||
</p>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<section class="content">
|
||||
<h4>一、ZenData的实现原理</h4>
|
||||
<p>
|
||||
ZenData使用YAML来作为数据类型配置文件。对于每一种类型的数据来讲,我们都可以将其拆分成若干的字段。
|
||||
比如我们要测试一个用户的订单表,会有订单的id,用户id或者账户名,订单的名称,订单的金额,订单的时间,订单状态等等字段。
|
||||
我们可以针对每一个字段配置其取值的范围。比如订单id,我可以定义为从1到10000,用户id可以是1-100。
|
||||
这样每一个字段都有了一个取值范围列表。当ZenData来生成数据的时候,从每一个字段里面依次取一个值,将其拼接在一起,就形成了一条记录。
|
||||
大家可以想象成每个字段都是一个转盘,按照自己的频率进行旋转,每一次旋转都从中取出一个值,和其他的字段进行组合。
|
||||
</p>
|
||||
<p>上面说的是最基本的的工作原理,ZenData还提供了步长、随机、循环、引用等多种定义方式,我们会在接下来的手册里面展开讲。</p>
|
||||
<h4>二、ZenData的用途</h4>
|
||||
<p>
|
||||
ZenData主要两大功能:数据生成和数据解析。通过一个配置文件,可以使用ZenData生成您想要的各种数据。
|
||||
同样也可以对某一个数据文件,指定其数据类型定义的配置文件,完成到结构化数据的解析。
|
||||
ZenData可以用于手工测试场景下面测试数据的准备,也可以用于自动化测试脚本里面的数据生成和解析。还可以一键生成海量数据用于性能和压力测试。
|
||||
</p>
|
||||
<h4>三、ZenData主要的特点</h4>
|
||||
<ol>
|
||||
<li>简单无依赖,只有一个可执行文件,即可满足命令行生成和HTTP接口两种数据生成服务。</li>
|
||||
<li>使用配置文件来生成数据,使用人员不需要有开发知识,即可上手应用。</li>
|
||||
<li>提供了功能强大的语法,分组、区间、步长、循环、随机、格式化和前后缀等,配置灵活性极强。</li>
|
||||
<li>支持从文本文件中读取数据,方便用户对字段取值进行精确控制。</li>
|
||||
<li>提供了Excel表格数据的标准SQL查询接口,使用更加灵活。</li>
|
||||
<li>使用预制的序列(ranges)、实例(instances)、配置(config)对定义进行复用,以解决复杂数据格式的定义。</li>
|
||||
<li>语法支持继承和扩展,为定义文件间的复用提供方便。</li>
|
||||
<li>可以反向解析数据,可以对程序的输出进行解析,方便自动化测试脚本进行比对。</li>
|
||||
<li>发行包內置了基础业务数据的定义文件(不断完善中)。</li>
|
||||
<li>提供了HTTP接口数据生成服务,各种语言都可以方便调用。</li>
|
||||
</ol>
|
||||
<div class="section">
|
||||
<div class="text-left" style="padding:25px 15px 10px 15px;">
|
||||
<p>
|
||||
<a href="https://www.zendata.cn/index.html" class="btn btn-primary bg-primary btn-lg" target="_blank">ZenData官网</a>
|
||||
<a href="https://www.zendata.cn/download.html" class="btn btn-primary bg-primary btn-lg" target="_blank">ZenData下载</a>
|
||||
<a href="https://www.zendata.cn/book/zendata/why-zendata-115.html" class="btn btn-primary bg-primary btn-lg" target="_blank">ZenData手册</a>
|
||||
</p>
|
||||
<div style="margin-top:15px;" class="text-muted">
|
||||
<p>
|
||||
我们还提供了QQ群和微信群的交流方式,官方QQ技术支持响应时间为:上午9:00—11:30,下午13:00—17:30(周六周日,节假日休息)
|
||||
</p>
|
||||
<p>
|
||||
软件测试交流群: 522506766 (添加客服微信: easycorp666,可邀请您加入软件测试微信群)
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
</article>
|
||||
EOF;
|
||||
|
||||
@@ -1,83 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The admin module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青島易軟天創網絡科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id: zh-tw.php 4767 2013-05-05 06:10:13Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->admin->common = '後台管理';
|
||||
$lang->admin->index = '後台管理首頁';
|
||||
$lang->admin->checkDB = '檢查資料庫';
|
||||
$lang->admin->sso = 'ZDOO整合';
|
||||
$lang->admin->ssoAction = 'ZDOO整合';
|
||||
$lang->admin->safeIndex = '安全';
|
||||
$lang->admin->checkWeak = '弱口令檢查';
|
||||
$lang->admin->certifyMobile = '認證手機';
|
||||
$lang->admin->certifyEmail = '認證郵箱';
|
||||
$lang->admin->ztCompany = '認證公司';
|
||||
$lang->admin->captcha = '驗證碼';
|
||||
$lang->admin->getCaptcha = '獲取驗證碼';
|
||||
$lang->admin->register = '登記';
|
||||
|
||||
$lang->admin->api = '介面';
|
||||
$lang->admin->log = '日誌';
|
||||
$lang->admin->setting = '設置';
|
||||
$lang->admin->days = '日誌保存天數';
|
||||
|
||||
$lang->admin->info = new stdclass();
|
||||
$lang->admin->info->version = '當前系統的版本是%s,';
|
||||
$lang->admin->info->links = '您可以訪問以下連結:';
|
||||
$lang->admin->info->account = "您的禪道社區賬戶為%s。";
|
||||
$lang->admin->info->log = '超出存天數的日誌會被刪除,需要開啟計劃任務。';
|
||||
|
||||
$lang->admin->notice = new stdclass();
|
||||
$lang->admin->notice->register = "友情提示:您還未在禪道社區(www.zentao.net)登記,%s進行登記,以及時獲得禪道最新信息。";
|
||||
$lang->admin->notice->ignore = "不再提示";
|
||||
$lang->admin->notice->int = "『%s』應當是正整數。";
|
||||
|
||||
$lang->admin->registerNotice = new stdclass();
|
||||
$lang->admin->registerNotice->common = '註冊新帳號綁定';
|
||||
$lang->admin->registerNotice->caption = '禪道社區登記';
|
||||
$lang->admin->registerNotice->click = '點擊此處';
|
||||
$lang->admin->registerNotice->lblAccount = '請設置您的用戶名,英文字母和數字的組合,三位以上。';
|
||||
$lang->admin->registerNotice->lblPasswd = '請設置您的密碼。數字和字母的組合,六位以上。';
|
||||
$lang->admin->registerNotice->submit = '登記';
|
||||
$lang->admin->registerNotice->bind = "綁定已有帳號";
|
||||
$lang->admin->registerNotice->success = "登記賬戶成功";
|
||||
|
||||
$lang->admin->bind = new stdclass();
|
||||
$lang->admin->bind->caption = '關聯社區帳號';
|
||||
$lang->admin->bind->success = "關聯賬戶成功";
|
||||
|
||||
$lang->admin->safe = new stdclass();
|
||||
$lang->admin->safe->common = '安全策略';
|
||||
$lang->admin->safe->set = '密碼安全設置';
|
||||
$lang->admin->safe->password = '密碼安全';
|
||||
$lang->admin->safe->weak = '常用弱口令';
|
||||
$lang->admin->safe->reason = '類型';
|
||||
$lang->admin->safe->checkWeak = '弱口令掃瞄';
|
||||
$lang->admin->safe->changeWeak = '修改弱口令密碼';
|
||||
$lang->admin->safe->modifyPasswordFirstLogin = '首次登錄修改密碼';
|
||||
|
||||
$lang->admin->safe->modeList[0] = '不檢查';
|
||||
$lang->admin->safe->modeList[1] = '中';
|
||||
$lang->admin->safe->modeList[2] = '強';
|
||||
|
||||
$lang->admin->safe->modeRuleList[1] = '6位以上,包含大小寫字母,數字。';
|
||||
$lang->admin->safe->modeRuleList[2] = '10位以上,包含字母,數字,特殊字元。';
|
||||
|
||||
$lang->admin->safe->reasonList['weak'] = '常用弱口令';
|
||||
$lang->admin->safe->reasonList['account'] = '與帳號相同';
|
||||
$lang->admin->safe->reasonList['mobile'] = '與手機相同';
|
||||
$lang->admin->safe->reasonList['phone'] = '與電話相同';
|
||||
$lang->admin->safe->reasonList['birthday'] = '與生日相同';
|
||||
|
||||
$lang->admin->safe->modifyPasswordList[1] = '必須修改';
|
||||
$lang->admin->safe->modifyPasswordList[0] = '不強制';
|
||||
|
||||
$lang->admin->safe->noticeMode = '系統會在登錄、創建和修改用戶、修改密碼的時候檢查用戶口令。';
|
||||
$lang->admin->safe->noticeStrong = '密碼長度越長,含有大寫字母或數字或特殊符號越多,密碼字母越不重複,安全度越強!';
|
||||
@@ -13,23 +13,23 @@
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<div id='mainContent' class='main-content'>
|
||||
<div class="row">
|
||||
<div class="col-xs-3">
|
||||
<div class="col-xs-2">
|
||||
<ul class="nav nav-tabs nav-stacked">
|
||||
<li class="active"><a href="###" data-target="#tab3Content1" data-toggle="tab"><?php echo $lang->automation->description;?></a></li>
|
||||
<li><a href="###" data-target="#tab3Content2" data-toggle="tab"><?php echo $lang->automation->ztf;?></a></li>
|
||||
<li><a href="###" data-target="#tab3Content3" data-toggle="tab"><?php echo $lang->automation->zendata;?></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-xs-9">
|
||||
<div class="tab-content col-xs-9">
|
||||
<div class="col-xs-10">
|
||||
<div class="tab-content col-xs-10">
|
||||
<div class="tab-pane fade active in" id="tab3Content1">
|
||||
<p>我是标签1。</p>
|
||||
<?php echo $lang->automation->details;?>
|
||||
</div>
|
||||
<div class="tab-pane fade" id="tab3Content2">
|
||||
<p>标签2的内容。</p>
|
||||
<?php echo $lang->automation->ztfDetails;?>
|
||||
</div>
|
||||
<div class="tab-pane fade" id="tab3Content3">
|
||||
<p>这是标签3的内容。</p>
|
||||
<?php echo $lang->automation->zendataDetails;?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -157,7 +157,7 @@ class bug extends control
|
||||
$productIDList = $productID ? $productID : array_keys($this->products);
|
||||
|
||||
/* Get bugs. */
|
||||
$bugs = $this->bug->getBugs($productIDList, $executions, $branch, $browseType, $moduleID, $queryID, $sort, $pager);
|
||||
$bugs = $this->bug->getBugs($productIDList, $executions, $branch, $browseType, $moduleID, $queryID, $sort, $pager, $this->session->PRJ);
|
||||
|
||||
/* Process the sql, get the conditon partion, save it to session. */
|
||||
$this->loadModel('common')->saveQueryCondition($this->dao->get(), 'bug', $browseType == 'needconfirm' ? false : true);
|
||||
|
||||
+65
-34
@@ -286,10 +286,11 @@ class bugModel extends model
|
||||
* @param int $queryID
|
||||
* @param string $sort
|
||||
* @param object $pager
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getBugs($productIDList, $executions, $branch, $browseType, $moduleID, $queryID, $sort, $pager)
|
||||
public function getBugs($productIDList, $executions, $branch, $browseType, $moduleID, $queryID, $sort, $pager, $projectID)
|
||||
{
|
||||
/* Set modules and browse type. */
|
||||
$modules = $moduleID ? $this->loadModel('tree')->getAllChildId($moduleID) : '0';
|
||||
@@ -298,21 +299,21 @@ class bugModel extends model
|
||||
|
||||
/* Get bugs by browse type. */
|
||||
$bugs = array();
|
||||
if($browseType == 'all') $bugs = $this->getAllBugs($productIDList, $branch, $modules, $executions, $sort, $pager);
|
||||
elseif($browseType == 'bymodule') $bugs = $this->getModuleBugs($productIDList, $branch, $modules, $executions, $sort, $pager);
|
||||
elseif($browseType == 'assigntome') $bugs = $this->getByAssigntome($productIDList, $branch, $modules, $executions, $sort, $pager);
|
||||
elseif($browseType == 'openedbyme') $bugs = $this->getByOpenedbyme($productIDList, $branch, $modules, $executions, $sort, $pager);
|
||||
elseif($browseType == 'resolvedbyme') $bugs = $this->getByResolvedbyme($productIDList, $branch, $modules, $executions, $sort, $pager);
|
||||
elseif($browseType == 'assigntonull') $bugs = $this->getByAssigntonull($productIDList, $branch, $modules, $executions, $sort, $pager);
|
||||
elseif($browseType == 'unconfirmed') $bugs = $this->getUnconfirmed($productIDList, $branch, $modules, $executions, $sort, $pager);
|
||||
elseif($browseType == 'unresolved') $bugs = $this->getByStatus($productIDList, $branch, $modules, $executions, 'unresolved', $sort, $pager);
|
||||
elseif($browseType == 'unclosed') $bugs = $this->getByStatus($productIDList, $branch, $modules, $executions, 'unclosed', $sort, $pager);
|
||||
elseif($browseType == 'toclosed') $bugs = $this->getByStatus($productIDList, $branch, $modules, $executions, 'toclosed', $sort, $pager);
|
||||
elseif($browseType == 'longlifebugs') $bugs = $this->getByLonglifebugs($productIDList, $branch, $modules, $executions, $sort, $pager);
|
||||
elseif($browseType == 'postponedbugs') $bugs = $this->getByPostponedbugs($productIDList, $branch, $modules, $executions, $sort, $pager);
|
||||
elseif($browseType == 'needconfirm') $bugs = $this->getByNeedconfirm($productIDList, $branch, $modules, $executions, $sort, $pager);
|
||||
elseif($browseType == 'bysearch') $bugs = $this->getBySearch($productIDList, $branch, $queryID, $sort, '', $pager);
|
||||
elseif($browseType == 'overduebugs') $bugs = $this->getOverdueBugs($productIDList, $branch, $modules, $executions, $sort, $pager);
|
||||
if($browseType == 'all') $bugs = $this->getAllBugs($productIDList, $branch, $modules, $executions, $sort, $pager, $projectID);
|
||||
elseif($browseType == 'bymodule') $bugs = $this->getModuleBugs($productIDList, $branch, $modules, $executions, $sort, $pager, $projectID);
|
||||
elseif($browseType == 'assigntome') $bugs = $this->getByAssigntome($productIDList, $branch, $modules, $executions, $sort, $pager, $projectID);
|
||||
elseif($browseType == 'openedbyme') $bugs = $this->getByOpenedbyme($productIDList, $branch, $modules, $executions, $sort, $pager, $projectID);
|
||||
elseif($browseType == 'resolvedbyme') $bugs = $this->getByResolvedbyme($productIDList, $branch, $modules, $executions, $sort, $pager, $projectID);
|
||||
elseif($browseType == 'assigntonull') $bugs = $this->getByAssigntonull($productIDList, $branch, $modules, $executions, $sort, $pager, $projectID);
|
||||
elseif($browseType == 'unconfirmed') $bugs = $this->getUnconfirmed($productIDList, $branch, $modules, $executions, $sort, $pager, $projectID);
|
||||
elseif($browseType == 'unresolved') $bugs = $this->getByStatus($productIDList, $branch, $modules, $executions, 'unresolved', $sort, $pager, $projectID);
|
||||
elseif($browseType == 'unclosed') $bugs = $this->getByStatus($productIDList, $branch, $modules, $executions, 'unclosed', $sort, $pager, $projectID);
|
||||
elseif($browseType == 'toclosed') $bugs = $this->getByStatus($productIDList, $branch, $modules, $executions, 'toclosed', $sort, $pager, $projectID);
|
||||
elseif($browseType == 'longlifebugs') $bugs = $this->getByLonglifebugs($productIDList, $branch, $modules, $executions, $sort, $pager, $projectID);
|
||||
elseif($browseType == 'postponedbugs') $bugs = $this->getByPostponedbugs($productIDList, $branch, $modules, $executions, $sort, $pager, $projectID);
|
||||
elseif($browseType == 'needconfirm') $bugs = $this->getByNeedconfirm($productIDList, $branch, $modules, $executions, $sort, $pager, $projectID);
|
||||
elseif($browseType == 'bysearch') $bugs = $this->getBySearch($productIDList, $branch, $queryID, $sort, '', $pager, $projectID);
|
||||
elseif($browseType == 'overduebugs') $bugs = $this->getOverdueBugs($productIDList, $branch, $modules, $executions, $sort, $pager, $projectID);
|
||||
|
||||
return $this->checkDelayBugs($bugs);
|
||||
}
|
||||
@@ -380,18 +381,22 @@ class bugModel extends model
|
||||
* Get bugs of a module.
|
||||
*
|
||||
* @param int|array $productIDList
|
||||
* @param int $branch
|
||||
* @param string|array $moduleIdList
|
||||
* @param array $executions
|
||||
* @param string $orderBy
|
||||
* @param object $pager
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getModuleBugs($productIDList, $branch = 0, $moduleIdList = 0, $executions, $orderBy = 'id_desc', $pager = null)
|
||||
public function getModuleBugs($productIDList, $branch = 0, $moduleIdList = 0, $executions, $orderBy = 'id_desc', $pager = null, $projectID)
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_BUG)
|
||||
->where('product')->in($productIDList)
|
||||
->beginIF(!empty($branch))->andWhere('branch')->eq($branch)->fi()
|
||||
->beginIF(!empty($moduleIdList))->andWhere('module')->in($moduleIdList)->fi()
|
||||
->beginIF($projectID)->andWhere('project')->eq($projectID)->fi()
|
||||
->andWhere('execution')->in(array_keys($executions))
|
||||
->andWhere('deleted')->eq(0)
|
||||
->orderBy($orderBy)->page($pager)->fetchAll();
|
||||
@@ -2007,10 +2012,11 @@ class bugModel extends model
|
||||
* @param array $executions
|
||||
* @param string $orderBy
|
||||
* @param object $pager
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getAllBugs($productIDList, $branch, $modules, $executions, $orderBy, $pager = null)
|
||||
public function getAllBugs($productIDList, $branch, $modules, $executions, $orderBy, $pager = null, $projectID)
|
||||
{
|
||||
$bugs = $this->dao->select('t1.*, t2.title as planTitle')->from(TABLE_BUG)->alias('t1')
|
||||
->leftJoin(TABLE_PRODUCTPLAN)->alias('t2')->on('t1.plan = t2.id')
|
||||
@@ -2018,6 +2024,7 @@ class bugModel extends model
|
||||
->andWhere('t1.execution')->in(array_keys($executions))
|
||||
->beginIF($branch)->andWhere('t1.branch')->eq($branch)->fi()
|
||||
->beginIF($modules)->andWhere('t1.module')->in($modules)->fi()
|
||||
->beginIF($projectID)->andWhere('t1.project')->eq($projectID)->fi()
|
||||
->andWhere('t1.deleted')->eq(0)
|
||||
->orderBy($orderBy)->page($pager)->fetchAll();
|
||||
|
||||
@@ -2035,14 +2042,16 @@ class bugModel extends model
|
||||
* @param array $executions
|
||||
* @param string $orderBy
|
||||
* @param object $pager
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getByAssigntome($productIDList, $branch, $modules, $executions, $orderBy, $pager)
|
||||
public function getByAssigntome($productIDList, $branch, $modules, $executions, $orderBy, $pager, $projectID)
|
||||
{
|
||||
return $this->dao->findByAssignedTo($this->app->user->account)->from(TABLE_BUG)->andWhere('product')->in($productIDList)
|
||||
->beginIF($branch)->andWhere('branch')->in($branch)->fi()
|
||||
->beginIF($modules)->andWhere('module')->in($modules)->fi()
|
||||
->beginIF($projectID)->andWhere('project')->eq($projectID)->fi()
|
||||
->andWhere('execution')->in(array_keys($executions))
|
||||
->andWhere('deleted')->eq(0)
|
||||
->orderBy($orderBy)->page($pager)->fetchAll();
|
||||
@@ -2057,14 +2066,16 @@ class bugModel extends model
|
||||
* @param array $executions
|
||||
* @param string $orderBy
|
||||
* @param object $pager
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getByOpenedbyme($productIDList, $branch, $modules, $executions, $orderBy, $pager)
|
||||
public function getByOpenedbyme($productIDList, $branch, $modules, $executions, $orderBy, $pager, $projectID)
|
||||
{
|
||||
return $this->dao->findByOpenedBy($this->app->user->account)->from(TABLE_BUG)->andWhere('product')->in($productIDList)
|
||||
->beginIF($branch)->andWhere('branch')->in($branch)->fi()
|
||||
->beginIF($modules)->andWhere('module')->in($modules)->fi()
|
||||
->beginIF($projectID)->andWhere('project')->eq($projectID)->fi()
|
||||
->andWhere('execution')->in(array_keys($executions))
|
||||
->andWhere('deleted')->eq(0)
|
||||
->orderBy($orderBy)->page($pager)->fetchAll();
|
||||
@@ -2079,14 +2090,16 @@ class bugModel extends model
|
||||
* @param array $executions
|
||||
* @param string $orderBy
|
||||
* @param object $pager
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getByResolvedbyme($productIDList, $branch, $modules, $executions, $orderBy, $pager)
|
||||
public function getByResolvedbyme($productIDList, $branch, $modules, $executions, $orderBy, $pager, $projectID)
|
||||
{
|
||||
return $this->dao->findByResolvedBy($this->app->user->account)->from(TABLE_BUG)->andWhere('product')->in($productIDList)
|
||||
->beginIF($branch)->andWhere('branch')->in($branch)->fi()
|
||||
->beginIF($modules)->andWhere('module')->in($modules)->fi()
|
||||
->beginIF($projectID)->andWhere('project')->eq($projectID)->fi()
|
||||
->andWhere('execution')->in(array_keys($executions))
|
||||
->andWhere('deleted')->eq(0)
|
||||
->orderBy($orderBy)->page($pager)->fetchAll();
|
||||
@@ -2101,15 +2114,17 @@ class bugModel extends model
|
||||
* @param array $executions
|
||||
* @param string $orderBy
|
||||
* @param object $pager
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getByAssigntonull($productIDList, $branch, $modules, $executions, $orderBy, $pager)
|
||||
public function getByAssigntonull($productIDList, $branch, $modules, $executions, $orderBy, $pager, $projectID)
|
||||
{
|
||||
|
||||
return $this->dao->findByAssignedTo('')->from(TABLE_BUG)->andWhere('product')->in($productIDList)
|
||||
->beginIF($branch)->andWhere('branch')->in($branch)->fi()
|
||||
->beginIF($modules)->andWhere('module')->in($modules)->fi()
|
||||
->beginIF($projectID)->andWhere('project')->eq($projectID)->fi()
|
||||
->andWhere('execution')->in(array_keys($executions))
|
||||
->andWhere('deleted')->eq(0)
|
||||
->orderBy($orderBy)->page($pager)->fetchAll();
|
||||
@@ -2121,18 +2136,20 @@ class bugModel extends model
|
||||
* @param array $productIDList
|
||||
* @param int $branch
|
||||
* @param array $modules
|
||||
* @param int $executions
|
||||
* @param int $orderBy
|
||||
* @param int $pager
|
||||
* @param array $executions
|
||||
* @param string $orderBy
|
||||
* @param object $pager
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getUnconfirmed($productIDList, $branch, $modules, $executions, $orderBy, $pager)
|
||||
public function getUnconfirmed($productIDList, $branch, $modules, $executions, $orderBy, $pager, $projectID)
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_BUG)
|
||||
->where('confirmed')->eq(0)
|
||||
->beginIF($branch)->andWhere('branch')->in($branch)->fi()
|
||||
->beginIF($modules)->andWhere('module')->in($modules)->fi()
|
||||
->beginIF($projectID)->andWhere('project')->eq($projectID)->fi()
|
||||
->andWhere('product')->in($productIDList)
|
||||
->andWhere('execution')->in(array_keys($executions))
|
||||
->andWhere('deleted')->eq(0)
|
||||
@@ -2149,16 +2166,18 @@ class bugModel extends model
|
||||
* @param string $status
|
||||
* @param string $orderBy
|
||||
* @param object $pager
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getOverdueBugs($productIDList, $branch, $modules, $executions, $orderBy, $pager)
|
||||
public function getOverdueBugs($productIDList, $branch, $modules, $executions, $orderBy, $pager, $projectID)
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_BUG)
|
||||
->where('execution')->in(array_keys($executions))
|
||||
->andWhere('product')->in($productIDList)
|
||||
->beginIF($branch)->andWhere('branch')->in($branch)->fi()
|
||||
->beginIF($modules)->andWhere('module')->in($modules)->fi()
|
||||
->beginIF($projectID)->andWhere('project')->eq($projectID)->fi()
|
||||
->andWhere('status')->eq('active')
|
||||
->andWhere('deleted')->eq(0)
|
||||
->andWhere('deadline')->ne('0000-00-00')
|
||||
@@ -2176,10 +2195,11 @@ class bugModel extends model
|
||||
* @param string $status
|
||||
* @param string $orderBy
|
||||
* @param object $pager
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getByStatus($productIDList, $branch, $modules, $executions, $status, $orderBy, $pager)
|
||||
public function getByStatus($productIDList, $branch, $modules, $executions, $status, $orderBy, $pager, $projectID)
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_BUG)
|
||||
->where('execution')->in(array_keys($executions))
|
||||
@@ -2189,8 +2209,10 @@ class bugModel extends model
|
||||
->beginIF($status == 'unclosed')->andWhere('status')->ne('closed')->fi()
|
||||
->beginIF($status == 'unresolved')->andWhere('status')->eq('active')->fi()
|
||||
->beginIF($status == 'toclosed')->andWhere('status')->eq('resolved')->fi()
|
||||
->beginIF($projectID)->andWhere('project')->eq($projectID)->fi()
|
||||
->andWhere('deleted')->eq(0)
|
||||
->orderBy($orderBy)->page($pager)->fetchAll();
|
||||
->orderBy($orderBy)->page($pager)
|
||||
->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2202,16 +2224,18 @@ class bugModel extends model
|
||||
* @param array $executions
|
||||
* @param string $orderBy
|
||||
* @param object $pager
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getByLonglifebugs($productIDList, $branch, $modules, $executions, $orderBy, $pager)
|
||||
public function getByLonglifebugs($productIDList, $branch, $modules, $executions, $orderBy, $pager, $projectID)
|
||||
{
|
||||
$lastEditedDate = date(DT_DATE1, time() - $this->config->bug->longlife * 24 * 3600);
|
||||
return $this->dao->findByLastEditedDate("<", $lastEditedDate)->from(TABLE_BUG)->andWhere('product')->in($productIDList)
|
||||
->andWhere('execution')->in(array_keys($executions))
|
||||
->beginIF($branch)->andWhere('branch')->in($branch)->fi()
|
||||
->beginIF($modules)->andWhere('module')->in($modules)->fi()
|
||||
->beginIF($projectID)->andWhere('project')->eq($projectID)->fi()
|
||||
->andWhere('openedDate')->lt($lastEditedDate)
|
||||
->andWhere('deleted')->eq(0)
|
||||
->andWhere('status')->ne('closed')->orderBy($orderBy)->page($pager)->fetchAll();
|
||||
@@ -2226,14 +2250,16 @@ class bugModel extends model
|
||||
* @param array $executions
|
||||
* @param string $orderBy
|
||||
* @param object $pager
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getByPostponedbugs($productIDList, $branch, $modules, $executions, $orderBy, $pager)
|
||||
public function getByPostponedbugs($productIDList, $branch, $modules, $executions, $orderBy, $pager, $projectID)
|
||||
{
|
||||
return $this->dao->findByResolution('postponed')->from(TABLE_BUG)->andWhere('product')->in($productIDList)
|
||||
->beginIF($branch)->andWhere('branch')->in($branch)->fi()
|
||||
->beginIF($modules)->andWhere('module')->in($modules)->fi()
|
||||
->beginIF($projectID)->andWhere('project')->eq($projectID)->fi()
|
||||
->andWhere('execution')->in(array_keys($executions))
|
||||
->andWhere('deleted')->eq(0)
|
||||
->orderBy($orderBy)->page($pager)->fetchAll();
|
||||
@@ -2248,16 +2274,19 @@ class bugModel extends model
|
||||
* @param array $executions
|
||||
* @param string $orderBy
|
||||
* @param object $pager
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getByNeedconfirm($productIDList, $branch, $modules, $executions, $orderBy, $pager)
|
||||
public function getByNeedconfirm($productIDList, $branch, $modules, $executions, $orderBy, $pager, $projectID)
|
||||
{
|
||||
return $this->dao->select('t1.*, t2.title AS storyTitle')->from(TABLE_BUG)->alias('t1')->leftJoin(TABLE_STORY)->alias('t2')->on('t1.story = t2.id')
|
||||
return $this->dao->select('t1.*, t2.title AS storyTitle')->from(TABLE_BUG)->alias('t1')
|
||||
->leftJoin(TABLE_STORY)->alias('t2')->on('t1.story = t2.id')
|
||||
->where("t2.status = 'active'")
|
||||
->andWhere('t1.product')->in($productIDList)
|
||||
->beginIF($branch)->andWhere('t1.branch')->in($branch)->fi()
|
||||
->beginIF($modules)->andWhere('t1.module')->in($modules)->fi()
|
||||
->beginIF($projectID)->andWhere('t1.project')->eq($projectID)->fi()
|
||||
->andWhere('t2.version > t1.storyVersion')
|
||||
->andWhere('t1.execution')->in(array_keys($executions))
|
||||
->andWhere('t1.deleted')->eq(0)
|
||||
@@ -2275,10 +2304,11 @@ class bugModel extends model
|
||||
* @param string $orderBy
|
||||
* @param string $excludeBugs
|
||||
* @param object $pager
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getBySearch($productIDList, $branch = 0, $queryID, $orderBy, $excludeBugs = '', $pager = null)
|
||||
public function getBySearch($productIDList, $branch = 0, $queryID, $orderBy, $excludeBugs = '', $pager = null, $projectID)
|
||||
{
|
||||
if($queryID)
|
||||
{
|
||||
@@ -2320,6 +2350,7 @@ class bugModel extends model
|
||||
$bugs = $this->dao->select('*')->from(TABLE_BUG)->where($bugQuery)
|
||||
->beginIF(!$this->app->user->admin)->andWhere('execution')->in('0,' . $this->app->user->view->sprints)->fi()
|
||||
->beginIF($excludeBugs)->andWhere('id')->notIN($excludeBugs)->fi()
|
||||
->beginIF($projectID)->andWhere('project')->eq($projectID)->fi()
|
||||
->andWhere('deleted')->eq(0)
|
||||
->orderBy($orderBy)->page($pager)->fetchAll();
|
||||
return $bugs;
|
||||
|
||||
@@ -346,23 +346,21 @@ $lang->execution->viewMenu->burn = array('link' => '燃尽图|execution|burn
|
||||
$lang->execution->viewMenu->view = array('link' => '视图|execution|grouptask|executionID=%s', 'alias' => 'grouptask,tree', 'class' => 'dropdown dropdown-hover');
|
||||
$lang->execution->viewMenu->story = array('link' => "{$lang->SRCommon}|execution|story|executionID=%s", 'subModule' => 'story', 'alias' => 'linkstory,storykanban');
|
||||
$lang->execution->viewMenu->qa = array('link' => '测试|qa|index|');
|
||||
$lang->execution->viewMenu->ci = array('link' => '代码|repo|browse|');
|
||||
$lang->execution->viewMenu->doc = array('link' => '文档|doc|objectLibs|type=execution&objectID=%s&from=execution', 'subModule' => 'doc');
|
||||
$lang->execution->viewMenu->build = array('link' => '版本|execution|build|executionID=%s', 'subModule' => 'build');
|
||||
$lang->execution->viewMenu->release = array('link' => '发布|projectrelease|browse|project=%s');
|
||||
$lang->execution->viewMenu->action = array('link' => '动态|execution|dynamic|executionID=%s');
|
||||
$lang->execution->viewMenu->setting = array('link' => '设置|execution|view|executionID=%s', 'subModule' => 'personnel', 'alias' => 'edit', 'class' => 'dropdown dropdown-hover');
|
||||
|
||||
$lang->execution->subMenu = new stdclass();
|
||||
$lang->execution->subMenu->view = new stdclass();
|
||||
$lang->execution->subMenu->view->groupTask = '分组视图|execution|grouptask|executionID=%s';
|
||||
$lang->execution->subMenu->view->tree = '树状图|execution|tree|executionID=%s';
|
||||
$lang->execution->groupMenu = new stdclass();
|
||||
$lang->execution->groupMenu->groupTask = '分组视图|execution|grouptask|executionID={EXECUTION}';
|
||||
$lang->execution->groupMenu->tree = '树状图|execution|tree|executionID={EXECUTION}';
|
||||
|
||||
$lang->execution->subMenu->setting = new stdclass();
|
||||
$lang->execution->subMenu->setting->vie = array('link' => '概况|execution|view|executionID=%s', 'subModule' => 'view', 'alias' => 'edit,start,suspend,putoff,close');
|
||||
$lang->execution->subMenu->setting->product = $lang->productCommon . '|execution|manageproducts|executionID=%s';
|
||||
$lang->execution->subMenu->setting->team = array('link' => '团队|execution|team|executionID=%s', 'alias' => 'managemembers');
|
||||
$lang->execution->subMenu->setting->whitelist = array('link' => '白名单|execution|whitelist|executionID=%s', 'subModule' => 'personnel', 'alias' => 'addwhitelist');
|
||||
$lang->execution->settingMenu = new stdclass();
|
||||
$lang->execution->settingMenu = new stdclass();
|
||||
$lang->execution->settingMenu->view = array('link' => '概况|execution|view|executionID={EXECUTION}', 'subModule' => 'view', 'alias' => 'edit,start,suspend,putoff,close');
|
||||
$lang->execution->settingMenu->products = $lang->productCommon . '|execution|manageproducts|executionID={EXECUTION}';
|
||||
$lang->execution->settingMenu->team = array('link' => '团队|execution|team|executionID={EXECUTION}', 'alias' => 'managemembers');
|
||||
$lang->execution->settingMenu->whitelist = array('link' => '白名单|execution|whitelist|executionID={EXECUTION}', 'subModule' => 'personnel', 'alias' => 'addwhitelist');
|
||||
|
||||
$lang->execution->dividerMenu = ',story,build,setting,';
|
||||
|
||||
@@ -664,6 +662,7 @@ $lang->navGroup->execution = 'execution';
|
||||
$lang->navGroup->task = 'execution';
|
||||
$lang->navGroup->build = 'execution';
|
||||
|
||||
$lang->navGroup->company = 'system';
|
||||
$lang->navGroup->sqlbuilder = 'system';
|
||||
$lang->navGroup->auditcl = 'system';
|
||||
$lang->navGroup->cmcl = 'system';
|
||||
@@ -685,7 +684,6 @@ $lang->navGroup->overtime = 'attend';
|
||||
$lang->navGroup->lieu = 'attend';
|
||||
|
||||
$lang->navGroup->admin = 'admin';
|
||||
$lang->navGroup->company = 'admin';
|
||||
$lang->navGroup->dept = 'admin';
|
||||
$lang->navGroup->user = 'admin';
|
||||
$lang->navGroup->group = 'admin';
|
||||
|
||||
@@ -774,12 +774,17 @@ class commonModel extends model
|
||||
if($moduleName == 'admin') return;
|
||||
if($group == 'repo' || $group == 'ops' || $group == 'feedback') return;
|
||||
if($group == 'my') self::getMyModuleMenu($moduleName, $methodName);
|
||||
if($group == 'project') self::getProgramModuleMenu($moduleName, $methodName);
|
||||
if($group == 'project') self::getProjectModuleMenu($moduleName, $methodName);
|
||||
if($group == 'product')
|
||||
{
|
||||
$lang->product->menu = $lang->product->setMenu;
|
||||
self::processMenuVars($lang->product->menu);
|
||||
}
|
||||
if($group == 'execution')
|
||||
{
|
||||
if(in_array($methodName, array('grouptask', 'tree'))) $lang->execution->menu = self::processMenuVars($lang->execution->groupMenu);
|
||||
if(in_array($methodName, array('view', 'manageproducts', 'team', 'whitelist'))) $lang->execution->menu = self::processMenuVars($lang->execution->settingMenu);
|
||||
}
|
||||
if(strpos('qa|bug|testcase|testreport|testtask', $moduleName) !== false and $group == 'project')
|
||||
{
|
||||
unset($lang->$moduleName->menu->testsuite);
|
||||
@@ -2450,7 +2455,7 @@ EOD;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get program module menu by model.
|
||||
* Get project module menu by model.
|
||||
*
|
||||
* @param varchar $moduleName
|
||||
* @param varchar $methodName
|
||||
@@ -2458,7 +2463,7 @@ EOD;
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public static function getProgramModuleMenu($moduleName, $methodName)
|
||||
public static function getProjectModuleMenu($moduleName, $methodName)
|
||||
{
|
||||
global $app, $lang, $dbh;
|
||||
$program = $dbh->query("SELECT * FROM " . TABLE_PROJECT . " WHERE `id` = '{$app->session->PRJ}'")->fetch();
|
||||
|
||||
@@ -25,7 +25,7 @@ $isQa = $rawModule == 'qa';
|
||||
<?php if($this->config->systemMode == 'new'):?>
|
||||
<?php if($isProgram) echo isset($lang->program->switcherMenu) ? $lang->program->switcherMenu : '';?>
|
||||
<?php if($isProject) echo $this->loadModel('project')->getSwitcher($this->session->PRJ, $app->rawModule, $app->rawMethod);?>
|
||||
<?php if($isExecution) echo $this->execution->getSwitcher($this->session->execution, $app->rawModule, $app->rawMethod);?>
|
||||
<?php if($isExecution) echo $this->loadModel('execution')->getSwitcher($this->session->execution, $app->rawModule, $app->rawMethod);?>
|
||||
<?php elseif($this->config->systemMode == 'classic'):?>
|
||||
<?php if($isProject) echo isset($lang->project->switcherMenu) ? $lang->project->switcherMenu : '';;?>
|
||||
<?php endif;?>
|
||||
|
||||
@@ -48,6 +48,8 @@ class company extends control
|
||||
*/
|
||||
public function browse($browseType = 'inside', $param = 0, $type = 'bydept', $orderBy = 'id', $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
{
|
||||
$this->lang->navGroup->company = 'admin';
|
||||
|
||||
$this->loadModel('search');
|
||||
$this->lang->set('menugroup.company', 'company');
|
||||
|
||||
@@ -147,8 +149,7 @@ class company extends control
|
||||
*/
|
||||
public function view()
|
||||
{
|
||||
$this->lang->navGroup->company = 'system';
|
||||
$this->lang->noMenuModule[] = 'company';
|
||||
$this->lang->noMenuModule[] = 'company';
|
||||
|
||||
$this->company->setMenu();
|
||||
$this->view->title = $this->lang->company->common . $this->lang->colon . $this->lang->company->view;
|
||||
@@ -170,8 +171,7 @@ class company extends control
|
||||
*/
|
||||
public function dynamic($browseType = 'today', $param = '', $recTotal = 0, $date = '', $direction = 'next')
|
||||
{
|
||||
$this->lang->navGroup->company = 'system';
|
||||
$this->lang->noMenuModule[] = 'company';
|
||||
$this->lang->noMenuModule[] = 'company';
|
||||
|
||||
$this->company->setMenu();
|
||||
$this->app->loadLang('user');
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
.alert-block {border-top: 1px solid #ddd;}
|
||||
.btn-toolbar.pull-left .divider {margin-left: 0px; border-color: rgba(0,0,0,.2);}
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
$(function()
|
||||
{
|
||||
$object = $('.btn-toolbar.pull-left');
|
||||
while(true)
|
||||
{
|
||||
if($object.children(':first-child').hasClass('divider'))
|
||||
{
|
||||
$object.children(':first-child').remove();
|
||||
continue;
|
||||
}
|
||||
if($object.children(':last-child').hasClass('divider'))
|
||||
{
|
||||
$object.children(':last-child').remove();
|
||||
continue;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
})
|
||||
@@ -19,7 +19,7 @@ $lang->custom->score = 'Score';
|
||||
$lang->custom->timezone = 'Timezone';
|
||||
$lang->custom->scoreReset = 'Reset Score';
|
||||
$lang->custom->scoreTitle = 'Point Feature';
|
||||
$lang->custom->execution = $lang->sprintCommon;
|
||||
$lang->custom->execution = 'Execution';
|
||||
$lang->custom->product = $lang->productCommon;
|
||||
$lang->custom->convertFactor = 'Convert factor';
|
||||
$lang->custom->region = 'Interval';
|
||||
@@ -71,12 +71,12 @@ $lang->custom->saveTips = 'After clicking save, the current %s will b
|
||||
|
||||
$lang->custom->numberError = 'The interval must be greater than zero!';
|
||||
|
||||
$lang->custom->closedExecution = 'Closed ' . $lang->sprintCommon;
|
||||
$lang->custom->closedExecution = 'Closed Executions';
|
||||
$lang->custom->closedProduct = 'Closed ' . $lang->productCommon;
|
||||
|
||||
$lang->custom->object['project'] = 'Project';
|
||||
$lang->custom->object['product'] = $lang->productCommon;
|
||||
$lang->custom->object['execution'] = $lang->sprintCommon;
|
||||
$lang->custom->object['execution'] = 'Execution';
|
||||
$lang->custom->object['story'] = 'Story';
|
||||
$lang->custom->object['task'] = 'Task';
|
||||
$lang->custom->object['bug'] = 'Bug';
|
||||
@@ -164,7 +164,7 @@ $lang->custom->notice->required = 'The selected field is required.';
|
||||
$lang->custom->notice->conceptResult = 'According to your preference, <b> %s-%s </b> is set for you. Use <b>%s</b> + <b> %s</b>。';
|
||||
$lang->custom->notice->conceptPath = 'Go to Admin -> Custom -> Concept to set it.';
|
||||
$lang->custom->notice->readOnlyOfProduct = 'If Change Forbidden, any change on stories, bugs, cases, efforts, releases and plans of the closed product is also forbidden.';
|
||||
$lang->custom->notice->readOnlyOfExecution = "If Change Forbidden, any change on tasks, builds, efforts and stories of the closed {$lang->sprintCommon} is also forbidden.";
|
||||
$lang->custom->notice->readOnlyOfExecution = "If Change Forbidden, any change on tasks, builds, efforts and stories of the closed execution is also forbidden.";
|
||||
$lang->custom->notice->URSREmpty = 'Custom requirement name can not be empty!';
|
||||
$lang->custom->notice->confirmDelete = 'Are you sure you want to delete it?';
|
||||
|
||||
@@ -221,7 +221,7 @@ $lang->custom->CRExecution[0] = 'Change Forbidden';
|
||||
|
||||
$lang->custom->moduleName['product'] = $lang->productCommon;
|
||||
$lang->custom->moduleName['productplan'] = 'Plan';
|
||||
$lang->custom->moduleName['execution'] = $lang->sprintCommon;
|
||||
$lang->custom->moduleName['execution'] = 'Execution';
|
||||
|
||||
$lang->custom->conceptQuestions['overview'] = "1. Which combination of management fits your company?";
|
||||
$lang->custom->conceptQuestions['URAndSR'] = "2. Do you want to use the concept of {$lang->URCommon} and {$lang->SRCommon} in ZenTao?";
|
||||
|
||||
@@ -19,7 +19,7 @@ $lang->custom->score = 'Point';
|
||||
$lang->custom->timezone = 'Timezone';
|
||||
$lang->custom->scoreReset = 'Reset Points';
|
||||
$lang->custom->scoreTitle = 'Point Feature';
|
||||
$lang->custom->execution = $lang->sprintCommon;
|
||||
$lang->custom->execution = 'Execution';
|
||||
$lang->custom->product = $lang->productCommon;
|
||||
$lang->custom->convertFactor = 'Convert factor';
|
||||
$lang->custom->region = 'Interval';
|
||||
@@ -71,12 +71,12 @@ $lang->custom->saveTips = 'After clicking save, the current %s will b
|
||||
|
||||
$lang->custom->numberError = 'The interval must be greater than zero!';
|
||||
|
||||
$lang->custom->closedExecution = 'Closed ' . $lang->sprintCommon;
|
||||
$lang->custom->closedExecution = 'Closed Executions';
|
||||
$lang->custom->closedProduct = 'Closed ' . $lang->productCommon;
|
||||
|
||||
$lang->custom->object['project'] = 'Project';
|
||||
$lang->custom->object['product'] = $lang->productCommon;
|
||||
$lang->custom->object['execution'] = $lang->sprintCommon;
|
||||
$lang->custom->object['execution'] = 'Execution';
|
||||
$lang->custom->object['story'] = 'Story';
|
||||
$lang->custom->object['task'] = 'Task';
|
||||
$lang->custom->object['bug'] = 'Bug';
|
||||
@@ -164,7 +164,7 @@ $lang->custom->notice->required = 'The selected field is required.';
|
||||
$lang->custom->notice->conceptResult = 'According to your preference, <b> %s-%s </b> is set for you. Use <b>%s</b> + <b> %s</b>.';
|
||||
$lang->custom->notice->conceptPath = 'Go to Admin -> Custom -> Concept to set it.';
|
||||
$lang->custom->notice->readOnlyOfProduct = 'If Change Forbidden, any change on stories, bugs, cases, efforts, releases and plans of the closed product is also forbidden.';
|
||||
$lang->custom->notice->readOnlyOfExecution = "If Change Forbidden, any change on tasks, builds, efforts and stories of the closed {$lang->sprintCommon} is also forbidden.";
|
||||
$lang->custom->notice->readOnlyOfExecution = "If Change Forbidden, any change on tasks, builds, efforts and stories of the closed execution is also forbidden.";
|
||||
$lang->custom->notice->URSREmpty = 'Custom requirement name can not be empty!';
|
||||
$lang->custom->notice->confirmDelete = 'Are you sure you want to delete it?';
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ $lang->custom->score = 'Point';
|
||||
$lang->custom->timezone = 'Timezone';
|
||||
$lang->custom->scoreReset = 'Réinit Points';
|
||||
$lang->custom->scoreTitle = 'Fonctionnalité des Points';
|
||||
$lang->custom->execution = $lang->sprintCommon;
|
||||
$lang->custom->execution = 'Execution';
|
||||
$lang->custom->product = $lang->productCommon;
|
||||
$lang->custom->convertFactor = 'Convert factor';
|
||||
$lang->custom->region = 'Interval';
|
||||
@@ -71,12 +71,12 @@ $lang->custom->saveTips = 'After clicking save, the current %s will b
|
||||
|
||||
$lang->custom->numberError = 'The interval must be greater than zero!';
|
||||
|
||||
$lang->custom->closedExecution = 'Closed ' . $lang->sprintCommon;
|
||||
$lang->custom->closedExecution = 'Closed Executions';
|
||||
$lang->custom->closedProduct = 'Closed ' . $lang->productCommon;
|
||||
|
||||
$lang->custom->object['project'] = 'Project';
|
||||
$lang->custom->object['product'] = $lang->productCommon;
|
||||
$lang->custom->object['execution'] = $lang->sprintCommon;
|
||||
$lang->custom->object['execution'] = 'Execution';
|
||||
$lang->custom->object['story'] = 'Story';
|
||||
$lang->custom->object['task'] = 'Tâche';
|
||||
$lang->custom->object['bug'] = 'Bug';
|
||||
@@ -164,7 +164,7 @@ $lang->custom->notice->required = 'Le champ sélectionné est obligat
|
||||
$lang->custom->notice->conceptResult = 'Selon votre préférence, <b> %s-%s </b> peut être fixé pour vous. Utilisez <b>%s</b> + <b> %s</b>。';
|
||||
$lang->custom->notice->conceptPath = 'Allez à Admin -> Custom -> Concept pour le paramétrer.';
|
||||
$lang->custom->notice->readOnlyOfProduct = 'If Change Forbidden, any change on stories, bugs, cases, efforts, releases and plans of the closed product is also forbidden.';
|
||||
$lang->custom->notice->readOnlyOfExecution = "If Change Forbidden, any change on tasks, builds, efforts and stories of the closed {$lang->sprintCommon} is also forbidden.";
|
||||
$lang->custom->notice->readOnlyOfExecution = "If Change Forbidden, any change on tasks, builds, efforts and stories of the closed execution is also forbidden.";
|
||||
$lang->custom->notice->URSREmpty = 'Custom requirement name can not be empty!';
|
||||
$lang->custom->notice->confirmDelete = 'Are you sure you want to delete it?';
|
||||
|
||||
@@ -221,7 +221,7 @@ $lang->custom->CRExecution[0] = 'Change Forbidden';
|
||||
|
||||
$lang->custom->moduleName['product'] = $lang->productCommon;
|
||||
$lang->custom->moduleName['productplan'] = 'Plan';
|
||||
$lang->custom->moduleName['execution'] = $lang->sprintCommon;
|
||||
$lang->custom->moduleName['execution'] = 'Execution';
|
||||
|
||||
$lang->custom->conceptQuestions['overview'] = "1. Quelle combinaison de gestion convient le mieux à votre entreprise ?";
|
||||
$lang->custom->conceptQuestions['URAndSR'] = "2. Do you want to use the concept of {$lang->URCommon} and {$lang->SRCommon} in ZenTao?";
|
||||
|
||||
@@ -19,7 +19,7 @@ $lang->custom->score = 'Điểm';
|
||||
$lang->custom->timezone = 'Timezone';
|
||||
$lang->custom->scoreReset = 'Thiết lập lại điểm';
|
||||
$lang->custom->scoreTitle = 'Tính năng điểm';
|
||||
$lang->custom->execution = $lang->sprintCommon;
|
||||
$lang->custom->execution = 'Execution';
|
||||
$lang->custom->product = $lang->productCommon;
|
||||
$lang->custom->convertFactor = 'Convert factor';
|
||||
$lang->custom->region = 'Interval';
|
||||
@@ -71,12 +71,12 @@ $lang->custom->saveTips = 'After clicking save, the current %s will b
|
||||
|
||||
$lang->custom->numberError = 'The interval must be greater than zero!';
|
||||
|
||||
$lang->custom->closedExecution = 'Closed ' . $lang->sprintCommon;
|
||||
$lang->custom->closedExecution = 'Closed Executions';
|
||||
$lang->custom->closedProduct = 'Closed ' . $lang->productCommon;
|
||||
|
||||
$lang->custom->object['project'] = 'Project';
|
||||
$lang->custom->object['product'] = $lang->productCommon;
|
||||
$lang->custom->object['execution'] = $lang->sprintCommon;
|
||||
$lang->custom->object['execution'] = 'Execution';
|
||||
$lang->custom->object['story'] = 'Câu chuyện';
|
||||
$lang->custom->object['task'] = 'Nhiệm vụ';
|
||||
$lang->custom->object['bug'] = 'Bug';
|
||||
@@ -164,7 +164,7 @@ $lang->custom->notice->required = 'Trường được chọn là bắ
|
||||
$lang->custom->notice->conceptResult = 'According to your preference, <b> %s-%s </b> is set for you. Sử dụng <b>%s</b> + <b> %s</b>.';
|
||||
$lang->custom->notice->conceptPath = 'Vào Quản trị -> Tùy biến -> Mô hình để thiết lập nó.';
|
||||
$lang->custom->notice->readOnlyOfProduct = 'If Change Forbidden, any change on stories, bugs, cases, efforts, releases and plans of the closed product is also forbidden.';
|
||||
$lang->custom->notice->readOnlyOfExecution = "If Change Forbidden, any change on tasks, builds, efforts and stories of the closed {$lang->sprintCommon} is also forbidden.";
|
||||
$lang->custom->notice->readOnlyOfExecution = "If Change Forbidden, any change on tasks, builds, efforts and stories of the closed execution is also forbidden.";
|
||||
$lang->custom->notice->URSREmpty = 'Custom requirement name can not be empty!';
|
||||
$lang->custom->notice->confirmDelete = 'Are you sure you want to delete it?';
|
||||
|
||||
@@ -221,7 +221,7 @@ $lang->custom->CRExecution[0] = 'Change Forbidden';
|
||||
|
||||
$lang->custom->moduleName['product'] = $lang->productCommon;
|
||||
$lang->custom->moduleName['productplan'] = 'Kế hoạch';
|
||||
$lang->custom->moduleName['execution'] = $lang->sprintCommon;
|
||||
$lang->custom->moduleName['execution'] = 'Execution';
|
||||
|
||||
$lang->custom->conceptQuestions['overview'] = "1. Sự kết hợp quản lý nào phù hợp với công ty của bạn?";
|
||||
$lang->custom->conceptQuestions['URAndSR'] = "2. Do you want to use the concept of {$lang->URCommon} and {$lang->SRCommon} in ZenTao?";
|
||||
|
||||
@@ -19,7 +19,7 @@ $lang->custom->score = '积分';
|
||||
$lang->custom->timezone = '时区';
|
||||
$lang->custom->scoreReset = '重置积分';
|
||||
$lang->custom->scoreTitle = '积分功能';
|
||||
$lang->custom->execution = $lang->sprintCommon;
|
||||
$lang->custom->execution = '执行';
|
||||
$lang->custom->product = $lang->productCommon;
|
||||
$lang->custom->convertFactor = '换算系数';
|
||||
$lang->custom->region = '区间';
|
||||
@@ -71,12 +71,12 @@ $lang->custom->saveTips = '点击保存后,则以当前%s为默认
|
||||
|
||||
$lang->custom->numberError = '区间必须大于零';
|
||||
|
||||
$lang->custom->closedExecution = '已关闭' . $lang->sprintCommon;
|
||||
$lang->custom->closedExecution = '已关闭执行';
|
||||
$lang->custom->closedProduct = '已关闭' . $lang->productCommon;
|
||||
|
||||
$lang->custom->object['project'] = '项目';
|
||||
$lang->custom->object['product'] = $lang->productCommon;
|
||||
$lang->custom->object['execution'] = $lang->sprintCommon;
|
||||
$lang->custom->object['execution'] = '执行';
|
||||
$lang->custom->object['story'] = $lang->SRCommon;
|
||||
$lang->custom->object['task'] = '任务';
|
||||
$lang->custom->object['bug'] = 'Bug';
|
||||
@@ -164,7 +164,7 @@ $lang->custom->notice->required = '页面提交时,选中
|
||||
$lang->custom->notice->conceptResult = '我们已经根据您的选择为您设置了<b> %s-%s </b>模式,使用<b>%s</b> + <b> %s</b>。';
|
||||
$lang->custom->notice->conceptPath = '您可以在:后台 -> 自定义 -> 流程页面修改。';
|
||||
$lang->custom->notice->readOnlyOfProduct = '禁止修改后,已关闭' . $lang->productCommon . '下的' . $lang->SRCommon . '、Bug、用例、日志、发布、计划都禁止修改。';
|
||||
$lang->custom->notice->readOnlyOfExecution = '禁止修改后,已关闭' . $lang->sprintCommon . '下的任务、版本、日志以及关联需求都禁止修改。';
|
||||
$lang->custom->notice->readOnlyOfExecution = '禁止修改后,已关闭执行下的任务、版本、日志以及关联需求都禁止修改。';
|
||||
$lang->custom->notice->URSREmpty = '自定义需求名称不能为空!';
|
||||
$lang->custom->notice->confirmDelete = '您确定要删除吗?';
|
||||
|
||||
@@ -221,7 +221,7 @@ $lang->custom->CRExecution[0] = '禁止修改';
|
||||
|
||||
$lang->custom->moduleName['product'] = $lang->productCommon;
|
||||
$lang->custom->moduleName['productplan'] = '计划';
|
||||
$lang->custom->moduleName['execution'] = $lang->sprintCommon;
|
||||
$lang->custom->moduleName['execution'] = '执行';
|
||||
|
||||
$lang->custom->conceptQuestions['overview'] = "1. 下述哪种组合方式更适合您公司的管理现状?";
|
||||
$lang->custom->conceptQuestions['URAndSR'] = "2. 是否启用{$lang->URCommon}和{$lang->SRCommon}概念?";
|
||||
|
||||
@@ -7,10 +7,12 @@
|
||||
if(strpos('story|todo|block', $object) !== false) echo "<span class='divider'></span>";
|
||||
if(strpos('execution|product', $object) !== false) common::printLink('custom', $object, "", "<span class='text'>{$lang->custom->$object}</span>", '', "class='btn btn-link' id='{$object}Tab'");
|
||||
if(strpos('execution|product', $object) === false) common::printLink('custom', 'set', "module=$object&field=" . key($lang->custom->{$object}->fields), "<span class='text'>{$name}</span>", '', "class='btn btn-link' id='{$object}Tab'");
|
||||
if($object == 'user') common::printLink('custom', 'required', "", "<span class='text'>{$lang->custom->required}</span>", '', "class='btn btn-link' id='requiredTab'");
|
||||
}
|
||||
|
||||
foreach($lang->custom->system as $sysObject)
|
||||
{
|
||||
if($sysObject == 'required') continue;
|
||||
common::printLink('custom', $sysObject, "", "<span class='text'>{$lang->custom->$sysObject}</span>", '', "class='btn btn-link' id='{$sysObject}Tab'");
|
||||
}
|
||||
if((isset($config->systemMode) and $config->systemMode == 'classic') || (isset($config->global->upgradeStep) and $config->global->upgradeStep == 'mergeProgram'))
|
||||
|
||||
@@ -265,6 +265,9 @@ class execution extends control
|
||||
*/
|
||||
public function grouptask($executionID = 0, $groupBy = 'story', $filter = '')
|
||||
{
|
||||
$moduleIndex = array_search('execution', $this->lang->noMenuModule);
|
||||
if($moduleIndex !== false) unset($this->lang->noMenuModule[$moduleIndex]);
|
||||
|
||||
$execution = $this->commonAction($executionID);
|
||||
$executionID = $execution->id;
|
||||
|
||||
@@ -1086,6 +1089,9 @@ class execution extends control
|
||||
*/
|
||||
public function team($executionID = 0)
|
||||
{
|
||||
$moduleIndex = array_search('execution', $this->lang->noMenuModule);
|
||||
if($moduleIndex !== false) unset($this->lang->noMenuModule[$moduleIndex]);
|
||||
|
||||
$execution = $this->commonAction($executionID);
|
||||
$executionID = $execution->id;
|
||||
|
||||
@@ -1645,6 +1651,9 @@ class execution extends control
|
||||
*/
|
||||
public function view($executionID)
|
||||
{
|
||||
$moduleIndex = array_search('execution', $this->lang->noMenuModule);
|
||||
if($moduleIndex !== false) unset($this->lang->noMenuModule[$moduleIndex]);
|
||||
|
||||
$execution = $this->execution->getById($executionID, true);
|
||||
if(empty($execution) || strpos('stage,sprint', $execution->type) === false) die(js::error($this->lang->notFound) . js::locate('back'));
|
||||
|
||||
@@ -1758,6 +1767,9 @@ class execution extends control
|
||||
*/
|
||||
public function tree($executionID, $type = 'task')
|
||||
{
|
||||
$moduleIndex = array_search('execution', $this->lang->noMenuModule);
|
||||
if($moduleIndex !== false) unset($this->lang->noMenuModule[$moduleIndex]);
|
||||
|
||||
$this->execution->setMenu($this->executions, $executionID);
|
||||
$execution = $this->loadModel('execution')->getById($executionID);
|
||||
$tree = $this->execution->getTree($executionID);
|
||||
@@ -1987,6 +1999,9 @@ class execution extends control
|
||||
*/
|
||||
public function manageProducts($executionID, $from = '')
|
||||
{
|
||||
$moduleIndex = array_search('execution', $this->lang->noMenuModule);
|
||||
if($moduleIndex !== false) unset($this->lang->noMenuModule[$moduleIndex]);
|
||||
|
||||
/* use first execution if executionID does not exist. */
|
||||
if(!isset($this->executions[$executionID])) $executionID = key($this->executions);
|
||||
|
||||
@@ -2485,7 +2500,8 @@ class execution extends control
|
||||
$this->view->module = $module;
|
||||
$this->view->method = $method;
|
||||
$this->view->extra = $extra;
|
||||
$this->view->executions = $this->execution->getByProject($execution->project);
|
||||
$this->view->projects = $this->project->getPairsByModel();
|
||||
$this->view->executions = $this->execution->getList();
|
||||
$this->display();
|
||||
}
|
||||
|
||||
@@ -2623,6 +2639,9 @@ class execution extends control
|
||||
*/
|
||||
public function whitelist($executionID = 0, $module='execution', $objectType = 'sprint', $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
{
|
||||
$moduleIndex = array_search('execution', $this->lang->noMenuModule);
|
||||
if($moduleIndex !== false) unset($this->lang->noMenuModule[$moduleIndex]);
|
||||
|
||||
/* use first execution if executionID does not exist. */
|
||||
if(!isset($this->executions[$executionID])) $executionID = key($this->executions);
|
||||
|
||||
|
||||
@@ -17,6 +17,8 @@ $lang->execution->id = $lang->executionCommon . '编号';
|
||||
$lang->execution->type = $lang->executionCommon . '类型';
|
||||
$lang->execution->name = $lang->executionCommon . '名称';
|
||||
$lang->execution->code = $lang->executionCommon . '代号';
|
||||
$lang->execution->execName = '执行名称';
|
||||
$lang->execution->execCode = '执行代号';
|
||||
$lang->execution->statge = '阶段';
|
||||
$lang->execution->pri = '优先级';
|
||||
$lang->execution->openedBy = '由谁创建';
|
||||
@@ -36,6 +38,7 @@ $lang->execution->workHourUnit = 'H';
|
||||
$lang->execution->totalHours = '可用工时';
|
||||
$lang->execution->totalDays = '可用工日';
|
||||
$lang->execution->status = $lang->executionCommon . '状态';
|
||||
$lang->execution->execStatus = '执行状态';
|
||||
$lang->execution->subStatus = '子状态';
|
||||
$lang->execution->desc = $lang->executionCommon . '描述';
|
||||
$lang->execution->owner = '负责人';
|
||||
|
||||
@@ -115,8 +115,8 @@ class executionModel extends model
|
||||
if($methodName == 'all') $label = $this->lang->execution->allExecutions;
|
||||
if($methodName == 'create' and $moduleName == 'execution') $label = $this->lang->execution->create;
|
||||
|
||||
$executionIndex = $this->select($executions, $executionID, null, $moduleName, $methodName, $extra);
|
||||
if($this->config->systemMode == 'new') $this->lang->modulePageNav = $executionIndex;
|
||||
//$executionIndex = $this->select($executions, $executionID, null, $moduleName, $methodName, $extra);
|
||||
//if($this->config->systemMode == 'new') $this->lang->modulePageNav = $executionIndex;
|
||||
|
||||
foreach($this->lang->execution->menu as $key => $menu)
|
||||
{
|
||||
|
||||
@@ -21,15 +21,16 @@ $executionsPinYin = common::convert2Pinyin($executionNames);
|
||||
|
||||
foreach($executions as $execution)
|
||||
{
|
||||
$executionName = zget($projects, $execution->project) . '/' . $execution->name;
|
||||
if($execution->status != 'done' and $execution->status != 'closed' and $execution->PM == $this->app->user->account)
|
||||
{
|
||||
$myProjectsHtml .= html::a(sprintf($link, $execution->id), "<i class='icon icon-{$lang->icons[$execution->type]}'></i> " . $execution->name, '', "class='text-important' title='{$execution->name}' data-key='" . zget($executionsPinYin, $execution->name, '') . "'");
|
||||
$myProjectsHtml .= html::a(sprintf($link, $execution->id), "<i class='icon icon-{$lang->icons[$execution->type]}'></i> " . $executionName, '', "class='text-important' title='{$executionName}' data-key='" . zget($executionsPinYin, $execution->name, '') . "'");
|
||||
}
|
||||
else if($execution->status != 'done' and $execution->status != 'closed' and !($execution->PM == $this->app->user->account))
|
||||
{
|
||||
$normalProjectsHtml .= html::a(sprintf($link, $execution->id), "<i class='icon icon-{$lang->icons[$execution->type]}'></i> " . $execution->name, '', "title='{$execution->name}' data-key='" . zget($executionsPinYin, $execution->name, '') . "'");
|
||||
$normalProjectsHtml .= html::a(sprintf($link, $execution->id), "<i class='icon icon-{$lang->icons[$execution->type]}'></i> " . $executionName, '', "title='{$executionName}' data-key='" . zget($executionsPinYin, $execution->name, '') . "'");
|
||||
}
|
||||
else if($execution->status == 'done' or $execution->status == 'closed') $closedProjectsHtml .= html::a(sprintf($link, $execution->id), "<i class='icon icon-{$lang->icons[$execution->type]}'></i> " . $execution->name, '', "title='{$execution->name}' data-key='" . zget($executionsPinYin, $execution->name, '') . "'");
|
||||
else if($execution->status == 'done' or $execution->status == 'closed') $closedProjectsHtml .= html::a(sprintf($link, $execution->id), "<i class='icon icon-{$lang->icons[$execution->type]}'></i> " . $executionName, '', "title='{$executionName}' data-key='" . zget($executionsPinYin, $execution->name, '') . "'");
|
||||
}
|
||||
?>
|
||||
<div class="table-row">
|
||||
|
||||
@@ -71,11 +71,11 @@
|
||||
<?php endif;?>
|
||||
<?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?>
|
||||
</th>
|
||||
<th><?php common::printOrderLink('name', $orderBy, $vars, $lang->execution->name);?></th>
|
||||
<th class='w-150px'><?php common::printOrderLink('code', $orderBy, $vars, $lang->execution->code);?></th>
|
||||
<th class='thWidth'><?php common::printOrderLink('PM', $orderBy, $vars, $lang->execution->PM);?></th>
|
||||
<th><?php common::printOrderLink('name', $orderBy, $vars, $from == 'execution' ? $lang->execution->execName : $lang->execution->name);?></th>
|
||||
<th class='w-150px'><?php common::printOrderLink('code', $orderBy, $vars, $from == 'execution' ? $lang->execution->execCode : $lang->execution->code);?></th>
|
||||
<th class='thWidth'><?php common::printOrderLink('PM', $orderBy, $vars, $lang->execution->owner);?></th>
|
||||
<th class='w-90px'><?php common::printOrderLink('end', $orderBy, $vars, $lang->execution->end);?></th>
|
||||
<th class='w-90px'><?php common::printOrderLink('status', $orderBy, $vars, $lang->execution->status);?></th>
|
||||
<th class='w-90px'><?php common::printOrderLink('status', $orderBy, $vars, $from == 'execution' ? $lang->execution->execStatus : $lang->execution->status);?></th>
|
||||
<th class='w-70px hours'><?php echo $lang->execution->totalEstimate;?></th>
|
||||
<th class='w-70px hours'><?php echo $lang->execution->totalConsumed;?></th>
|
||||
<th class='w-70px hours'><?php echo $lang->execution->totalLeft;?></th>
|
||||
|
||||
@@ -202,7 +202,7 @@
|
||||
<?php foreach($products as $productID => $product):?>
|
||||
<?php $branchName = isset($branchGroups[$productID][$product->branch]) ? '/' . $branchGroups[$productID][$product->branch] : '';?>
|
||||
<div class="col-xs-6">
|
||||
<?php echo html::a($this->createLink('product', 'browse', "productID=$productID&branch=$product->branch"), "<i class='icon icon-cube text-muted'></i> " . $product->name . $branchName);?>
|
||||
<?php echo html::a($this->createLink('product', 'browse', "productID=$productID&branch=$product->branch"), "<i class='icon icon-product text-muted'></i> " . $product->name . $branchName);?>
|
||||
</div>
|
||||
<?php endforeach;?>
|
||||
</div>
|
||||
|
||||
@@ -1063,6 +1063,7 @@ $lang->resource->custom = new stdclass();
|
||||
$lang->resource->custom->index = 'index';
|
||||
$lang->resource->custom->set = 'set';
|
||||
$lang->resource->custom->product = 'product';
|
||||
$lang->resource->custom->execution = 'execution';
|
||||
$lang->resource->custom->restore = 'restore';
|
||||
$lang->resource->custom->flow = 'flow';
|
||||
$lang->resource->custom->working = 'working';
|
||||
@@ -1076,15 +1077,16 @@ $lang->resource->custom->deleteStoryConcept = 'deleteStoryConcept';
|
||||
$lang->custom->methodOrder[5] = 'index';
|
||||
$lang->custom->methodOrder[10] = 'set';
|
||||
$lang->custom->methodOrder[15] = 'product';
|
||||
$lang->custom->methodOrder[20] = 'restore';
|
||||
$lang->custom->methodOrder[25] = 'flow';
|
||||
$lang->custom->methodOrder[30] = 'working';
|
||||
$lang->custom->methodOrder[35] = 'setPublic';
|
||||
$lang->custom->methodOrder[40] = 'timezone';
|
||||
$lang->custom->methodOrder[45] = 'setStoryContcept';
|
||||
$lang->custom->methodOrder[50] = 'editStoryContcept';
|
||||
$lang->custom->methodOrder[55] = 'browseStoryContcept';
|
||||
$lang->custom->methodOrder[60] = 'deleteStoryContcept';
|
||||
$lang->custom->methodOrder[20] = 'execution';
|
||||
$lang->custom->methodOrder[25] = 'restore';
|
||||
$lang->custom->methodOrder[30] = 'flow';
|
||||
$lang->custom->methodOrder[35] = 'working';
|
||||
$lang->custom->methodOrder[40] = 'setPublic';
|
||||
$lang->custom->methodOrder[45] = 'timezone';
|
||||
$lang->custom->methodOrder[50] = 'setStoryContcept';
|
||||
$lang->custom->methodOrder[55] = 'editStoryContcept';
|
||||
$lang->custom->methodOrder[60] = 'browseStoryContcept';
|
||||
$lang->custom->methodOrder[65] = 'deleteStoryContcept';
|
||||
|
||||
$lang->resource->datatable = new stdclass();
|
||||
$lang->resource->datatable->setGlobal = 'setGlobal';
|
||||
|
||||
@@ -122,7 +122,7 @@
|
||||
{
|
||||
if(['todo', 'team', 'calendar'].includes(methodLowerCase)) return 'system';
|
||||
}
|
||||
if(moduleName === 'company') if(methodLowerCase === 'dynamic' || methodLowerCase == 'view') return 'system';
|
||||
if(moduleName === 'company') if(methodLowerCase == 'browse') return 'admin';
|
||||
if(moduleName === 'tree')
|
||||
{
|
||||
if(methodLowerCase === 'browse')
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
.main-table thead>tr:first-of-type>th {border-left: 1px solid #ddd;}
|
||||
.main-table thead>tr>th {padding: 0px 8px; line-height: 24px;}
|
||||
tbody.sortable > tr > td > span.sort-handler {color: #999;}
|
||||
.icon-move {color: #16a8f8;}
|
||||
|
||||
+70
-277
@@ -1,178 +1,63 @@
|
||||
<?php
|
||||
/* Actions. */
|
||||
$lang->program->createGuide = 'Select Template';
|
||||
$lang->program->PRJIndex = 'Dashboard';
|
||||
$lang->program->PRJHome = 'Home';
|
||||
$lang->program->PRJCreate = 'Create Project';
|
||||
$lang->program->PRJEdit = 'Edit';
|
||||
$lang->program->PRJBatchEdit = 'Batch Edit Projects';
|
||||
$lang->program->PRJView = 'Project View';
|
||||
$lang->program->batchEdit = 'Batch Edit';
|
||||
$lang->program->PRJBrowse = 'Projects';
|
||||
$lang->program->PRJAll = 'All';
|
||||
$lang->program->PRJStart = 'Start';
|
||||
$lang->program->PRJFinish = 'Finish';
|
||||
$lang->program->PRJSuspend = 'Suspend';
|
||||
$lang->program->PRJDelete = 'Delete';
|
||||
$lang->program->PRJClose = 'Close';
|
||||
$lang->program->PRJActivate = 'Activate';
|
||||
$lang->program->PRJGroup = 'Privilege Group';
|
||||
$lang->program->PRJCreateGroup = 'Create Group';
|
||||
$lang->program->PRJEditGroup = 'Edit Group';
|
||||
$lang->program->PRJCopyGroup = 'Copy Group';
|
||||
$lang->program->PRJManageView = 'Manage View';
|
||||
$lang->program->PRJManagePriv = 'Manage Privilege';
|
||||
$lang->program->PRJManageMembers = 'Manage Team';
|
||||
$lang->program->export = 'Export';
|
||||
$lang->program->addProduct = 'Add product';
|
||||
$lang->program->PRJManageGroupMember = 'Manage Group';
|
||||
$lang->program->PRJModuleSetting = 'List Settings';
|
||||
$lang->program->PRJModuleOpen = 'Program Name';
|
||||
$lang->program->PRJUpdateOrder = 'Order';
|
||||
$lang->program->PRJSort = 'Order';
|
||||
$lang->program->PRJWhitelist = 'Project Whitelist';
|
||||
$lang->program->PRJAddWhitelist = 'Project Add Whitelist';
|
||||
$lang->program->unbindWhielist = 'Project Remove Whitelist';
|
||||
$lang->program->PRJManageProducts = 'Manage Products';
|
||||
$lang->program->view = 'Program Detail';
|
||||
$lang->program->copyTitle = 'Please select an project to copy';
|
||||
$lang->program->errorSameProducts = 'Project cannot be associated with multiple identical products.';
|
||||
$lang->program->errorNoProducts = 'At least one product is associated';
|
||||
$lang->program->copyNoProject = 'There are no items available to copy.';
|
||||
$lang->project->searchByName = 'Enter the project name to retrieve';
|
||||
|
||||
/* Fields. */
|
||||
$lang->program->common = 'Program';
|
||||
$lang->program->project = 'Project';
|
||||
$lang->program->stage = 'Stage';
|
||||
$lang->program->PM = 'Manager';
|
||||
$lang->program->PRJName = 'Name';
|
||||
$lang->program->PRJCategory = 'Category';
|
||||
$lang->program->PRJDesc = 'Description';
|
||||
$lang->program->PRJCode = 'Code';
|
||||
$lang->program->PRJCopy = 'Copy';
|
||||
$lang->program->begin = 'Begin';
|
||||
$lang->program->end = 'End';
|
||||
$lang->program->PRJStatus = 'Status';
|
||||
$lang->program->PRJPM = 'Manager';
|
||||
$lang->program->PRJBudget = 'Budget';
|
||||
$lang->program->PRJTemplate = 'Template';
|
||||
$lang->program->PRJEstimate = 'Estimates';
|
||||
$lang->program->PRJConsume = 'Cost';
|
||||
$lang->program->PRJSurplus = 'Left';
|
||||
$lang->program->PRJProgress = 'Progress';
|
||||
$lang->program->dateRange = 'Duration';
|
||||
$lang->program->to = ' to ';
|
||||
$lang->program->realEnd = 'Actual End';
|
||||
$lang->program->realBegan = 'Actual Began';
|
||||
$lang->program->bygrid = 'Kanban';
|
||||
$lang->program->bylist = 'List';
|
||||
$lang->program->mine = 'My';
|
||||
$lang->program->setPlanduration = 'Set Duration';
|
||||
$lang->program->auth = 'Access Control';
|
||||
$lang->program->durationEstimation = 'Estimated Workload';
|
||||
$lang->program->teamCount = 'Man';
|
||||
$lang->program->leftStories = 'Left Stories';
|
||||
$lang->program->leftTasks = 'Left Tasks';
|
||||
$lang->program->leftBugs = 'Left Bugs';
|
||||
$lang->program->PRJChildren = 'Child Project';
|
||||
$lang->program->PRJParent = 'Parent Project';
|
||||
$lang->program->allStories = 'All Stories';
|
||||
$lang->program->doneStories = 'Finished Stories';
|
||||
$lang->program->allInput = 'Total Input';
|
||||
$lang->program->weekly = 'Program Weekly';
|
||||
$lang->program->pv = 'PV';
|
||||
$lang->program->ev = 'EV';
|
||||
$lang->program->sv = 'SV%';
|
||||
$lang->program->ac = 'AC';
|
||||
$lang->program->cv = 'CV%';
|
||||
$lang->program->PRJTeamCount = 'Team';
|
||||
$lang->program->PRJLongTime = 'Long-Term Project';
|
||||
$lang->program->future = 'TBD';
|
||||
$lang->program->morePRJ = 'More Project';
|
||||
$lang->program->name = 'Name';
|
||||
$lang->program->template = 'Template';
|
||||
$lang->program->category = 'Type';
|
||||
$lang->program->desc = 'Description';
|
||||
$lang->program->copy = 'Copy Program';
|
||||
$lang->program->status = 'Status';
|
||||
$lang->program->PM = 'Manager';
|
||||
$lang->program->budget = 'Budget';
|
||||
$lang->program->progress = 'Progress';
|
||||
$lang->program->children = 'Child';
|
||||
$lang->program->parent = 'Parent';
|
||||
$lang->program->allInput = 'Input';
|
||||
$lang->program->teamCount = 'Team';
|
||||
$lang->program->longTime = 'Long-Term';
|
||||
$lang->program->view = 'Program Detail';
|
||||
|
||||
$lang->program->productNotEmpty = 'Please link products or create products.';
|
||||
$lang->program->existProductName = 'Product name already exists.';
|
||||
$lang->program->changeProgram = '%s > Change program';
|
||||
$lang->program->changeProgramTip = 'After modifying the program set, the products linked with the project will also modify the program set to which it belongs. Please confirm whether to modify it.';
|
||||
$lang->program->linkedProjectsTip = 'Linked projects are as follows';
|
||||
$lang->program->multiLinkedProductsTip = 'The following products linked to this project are also linked to other projects, please unlink before proceeding.';
|
||||
/* Actions. */
|
||||
$lang->program->common = 'Program';
|
||||
$lang->program->index = 'Home';
|
||||
$lang->program->create = 'Create Program';
|
||||
$lang->program->createGuide = 'Select Template';
|
||||
$lang->program->edit = 'Edit Program';
|
||||
$lang->program->browse = 'Programs';
|
||||
$lang->program->product = 'Products';
|
||||
$lang->program->project = 'Program Project List';
|
||||
$lang->program->all = 'All Programs';
|
||||
$lang->program->start = 'Start';
|
||||
$lang->program->finish = 'Finish';
|
||||
$lang->program->suspend = 'Suspend';
|
||||
$lang->program->delete = 'Delete';
|
||||
$lang->program->close = 'Close';
|
||||
$lang->program->activate = 'Activate';
|
||||
$lang->program->export = 'Export';
|
||||
$lang->program->stakeholder = 'Stakeholder';
|
||||
$lang->program->createStakeholder = 'Create Stakeholder';
|
||||
$lang->program->unlinkStakeholder = 'Unlink Stakeholder';
|
||||
$lang->program->batchUnlinkStakeholders = 'Batch Remove Stakeholder';
|
||||
$lang->program->unlink = 'Unlink';
|
||||
$lang->program->moreProgram = 'More Programs';
|
||||
$lang->program->confirmBatchUnlink = "Do you want to batch unlink these stakeholders?";
|
||||
$lang->program->stakeholderType = 'Stakeholder type';
|
||||
$lang->program->isStakeholderKey = 'Key stakeholder';
|
||||
$lang->program->importStakeholder = 'Import program';
|
||||
$lang->program->manageMembers = 'Program Team';
|
||||
$lang->program->beyondParentBudget = 'The remaining budget of the owned program has been exceeded.';
|
||||
$lang->program->parentBudget = 'Parent program surplus budget:';
|
||||
$lang->program->beginLetterParent = "Parent begin date: %s, begin date should be > = parent begin date.";
|
||||
$lang->program->endGreaterParent = "Parent end date: %s, end date should be < = parent end date.";
|
||||
$lang->program->beginGreateChild = "Child earliest begin: %s, parent begin date < = child earliest begin date.";
|
||||
$lang->program->endLetterChild = "Child latest end: %s, parent end date > = child latest end date.";
|
||||
$lang->program->closeErrorMessage = 'There are subprograms or projects that are not closed';
|
||||
|
||||
$lang->program->tenThousand = '';
|
||||
$lang->program->stakeholderTypeList['inside'] = 'Inside';
|
||||
$lang->program->stakeholderTypeList['outside'] = 'Outside';
|
||||
|
||||
$lang->program->unitList['CNY'] = 'RMB';
|
||||
$lang->program->unitList['USD'] = 'USD';
|
||||
$lang->program->unitList['HKD'] = 'HKD';
|
||||
$lang->program->unitList['NTD'] = 'New Taiwan';
|
||||
$lang->program->unitList['EUR'] = 'Euro';
|
||||
$lang->program->unitList['DEM'] = 'Deutsche Mark';
|
||||
$lang->program->unitList['CHF'] = 'Swiss Franc';
|
||||
$lang->program->unitList['FRF'] = 'French Franc';
|
||||
$lang->program->unitList['GBP'] = 'Pound';
|
||||
$lang->program->unitList['NLG'] = 'Florin';
|
||||
$lang->program->unitList['CAD'] = 'Canadian';
|
||||
$lang->program->unitList['RUR'] = 'Russian Ruble';
|
||||
$lang->program->unitList['INR'] = 'Indian';
|
||||
$lang->program->unitList['AUD'] = 'Australian';
|
||||
$lang->program->unitList['NZD'] = 'New Zealand';
|
||||
$lang->program->unitList['THB'] = 'Thai Baht';
|
||||
$lang->program->unitList['SGD'] = 'Singapore';
|
||||
|
||||
$lang->program->currencySymbol['CNY'] = '¥';
|
||||
$lang->program->currencySymbol['USD'] = '$';
|
||||
$lang->program->currencySymbol['HKD'] = 'HK$';
|
||||
$lang->program->currencySymbol['NTD'] = 'NT$';
|
||||
$lang->program->currencySymbol['EUR'] = '€';
|
||||
$lang->program->currencySymbol['DEM'] = 'DEM';
|
||||
$lang->program->currencySymbol['CHF'] = '₣';
|
||||
$lang->program->currencySymbol['FRF'] = '₣';
|
||||
$lang->program->currencySymbol['GBP'] = '£';
|
||||
$lang->program->currencySymbol['NLG'] = 'ƒ';
|
||||
$lang->program->currencySymbol['CAD'] = '$';
|
||||
$lang->program->currencySymbol['RUR'] = '₽';
|
||||
$lang->program->currencySymbol['INR'] = '₹';
|
||||
$lang->program->currencySymbol['AUD'] = 'A$';
|
||||
$lang->program->currencySymbol['NZD'] = 'NZ$';
|
||||
$lang->program->currencySymbol['THB'] = '฿';
|
||||
$lang->program->currencySymbol['SGD'] = 'S$';
|
||||
|
||||
$lang->program->modelList['scrum'] = "Scrum";
|
||||
$lang->program->modelList['waterfall'] = "CMMI";
|
||||
|
||||
$lang->program->PRJCategoryList['single'] = "Single product";
|
||||
$lang->program->PRJCategoryList['multiple'] = "Multiple products";
|
||||
|
||||
$lang->program->PRJLifeTimeList['short'] = "Short-Term";
|
||||
$lang->program->PRJLifeTimeList['long'] = "Long-Term";
|
||||
$lang->program->PRJLifeTimeList['ops'] = "DevOps";
|
||||
|
||||
$lang->program->featureBar['all'] = 'All';
|
||||
$lang->program->featureBar['doing'] = 'Going';
|
||||
$lang->program->featureBar['wait'] = 'Waiting';
|
||||
$lang->program->featureBar['suspended'] = 'Suspended';
|
||||
$lang->program->featureBar['closed'] = 'Closed';
|
||||
|
||||
$lang->program->PRJAclList['private'] = 'Private (For team members and stakeholders only)';
|
||||
$lang->program->PRJAclList['open'] = "Open (accessible with project view permissions)";
|
||||
|
||||
$lang->program->PRJAcls['private'] = 'Private';
|
||||
$lang->program->PRJAcls['open'] = "Open";
|
||||
|
||||
$lang->program->PGMPRJAclList['private'] = "Private (For team members and stakeholders only)";
|
||||
$lang->program->PGMPRJAclList['program'] = "Public within the project set (accessible to all higher-level project set leaders and stakeholders, members of this project team and stakeholders)";
|
||||
$lang->program->PGMPRJAclList['open'] = "Full disclosure (accessible with project view permissions)";
|
||||
|
||||
$lang->program->PGMPRJAcls['private'] = "Private";
|
||||
$lang->program->PGMPRJAcls['program'] = "Public within the project set";
|
||||
$lang->program->PGMPRJAcls['open'] = "Full disclosure";
|
||||
|
||||
$lang->program->PRJAuthList['extend'] = 'Inherit (system privilege and project privilege)';
|
||||
$lang->program->PRJAuthList['reset'] = 'Reset (project privilege only)';
|
||||
|
||||
$lang->program->statusList['wait'] = 'Waiting';
|
||||
$lang->program->statusList['doing'] = 'Doing';
|
||||
$lang->program->statusList['suspended'] = 'Suspended';
|
||||
$lang->program->statusList['closed'] = 'Closed';
|
||||
$lang->program->noProgram = 'No program.';
|
||||
$lang->program->showClosed = 'Closed programs.';
|
||||
$lang->program->tips = 'If a parent item set is selected, products under that parent item set can be associated. If no item set is selected, a product with the same name as the item is created by default and associated with that item.';
|
||||
|
||||
$lang->program->endList[31] = 'One month';
|
||||
$lang->program->endList[93] = 'Trimester';
|
||||
@@ -180,115 +65,23 @@ $lang->program->endList[186] = 'Half yearly';
|
||||
$lang->program->endList[365] = 'One year';
|
||||
$lang->program->endList[999] = 'Longtime';
|
||||
|
||||
$lang->program->noPRJ = 'No project.';
|
||||
$lang->program->accessDenied = 'Access denied!';
|
||||
$lang->program->chooseProgramType = 'Select the project management model';
|
||||
$lang->program->nextStep = 'Next step';
|
||||
$lang->program->hoursUnit = '%s hours';
|
||||
$lang->program->membersUnit = '%s men';
|
||||
$lang->program->lastIteration = 'Recent iterations';
|
||||
$lang->program->ongoingStage = 'Ongoing stage';
|
||||
$lang->program->scrum = 'Scrum';
|
||||
$lang->program->waterfall = 'CMMI';
|
||||
$lang->program->waterfallTitle = 'CMMI';
|
||||
$lang->program->cannotCreateChild = 'It is not empty, so you cannot add a child. You can add a parent for it, and then create a child.';
|
||||
$lang->program->hasChildren = 'It has child programs or projects. You cannot delete it.';
|
||||
$lang->program->confirmDelete = "Do you want to delete [%s]?";
|
||||
$lang->program->emptyPM = 'No manager';
|
||||
$lang->program->cannotChangeToCat = "It is not empty, so you cannot change it to a parent.";
|
||||
$lang->program->cannotCancelCat = "It has child projects, so you cannot unmark the parent.";
|
||||
$lang->program->parentBeginEnd = "Parent begin&end date: %s ~ %s";
|
||||
$lang->program->childLongTime = "If a child as long-term projects, the parent should be long-term too.";
|
||||
$lang->program->readjustTime = 'Change the project begin&end date.';
|
||||
$lang->program->notAllowRemoveProducts = 'The story of this product is linked with the project. Unlink it before doing any action.';
|
||||
$lang->program->aclList['private'] = "Private (accessible to project portfolio holders and stakeholders, stakeholders can follow up maintenance)";
|
||||
$lang->program->aclList['open'] = "Default(user who can visit the program can access it)";
|
||||
|
||||
$lang->program->PRJProgramTitle['0'] = 'Hide';
|
||||
$lang->program->PRJProgramTitle['base'] = 'Base-level program only';
|
||||
$lang->program->PRJProgramTitle['end'] = 'End-level program only';
|
||||
$lang->program->subAclList['private'] = "Private (accessible to this program set leader and stakeholders, stakeholders can follow up maintenance)";
|
||||
$lang->program->subAclList['open'] = "Default(user who can visit the program can access it)";
|
||||
$lang->program->subAclList['program'] = "Open within the program (accessible to all higher-level program directors and affiliates, as well as to this program director and affiliates)";
|
||||
|
||||
$lang->program->PRJAccessDenied = 'Access denied to this program';
|
||||
$lang->program->PRJChooseProgramType = 'Select management type';
|
||||
$lang->program->scrumTitle = 'Agile Development Management';
|
||||
$lang->program->PRJCannotCreateChild = 'The project has contents, so you cannot add a child project. You can create a parent project for this one and then add a child project for the parent project.';
|
||||
$lang->program->PRJHasChildren = 'This project has a child project, so it cannot be deleted.';
|
||||
$lang->program->PRJConfirmDelete = 'Do you want to delete this project?';
|
||||
$lang->program->PRJCannotChangeToCat = "The project has contents, so you cannot it to a parent project.";
|
||||
$lang->program->PRJCannotCancelCat = "There are child projects of this project. You cannot cancel the parent project mark.";
|
||||
$lang->program->PRJParentBeginEnd = "The begin and end date of the parent project: %s ~ %s";
|
||||
$lang->program->PRJParentBudget = "The budget of the parent project: %s";
|
||||
$lang->program->PRJBeginLetterParent = "The begin date of the parent project: %s. It cannot be < the begin date of its parent project.";
|
||||
$lang->program->PRJEndGreaterParent = "The end date of the parent project: %s. It cannot be > the end date of its parent project.";
|
||||
$lang->program->PRJBeginGreateChild = "The minimum start date of the project set: %s. The start date of the project cannot be less than the minimum start date of the program set.";
|
||||
$lang->program->PRJEndLetterChild = "The maximum finish date for the project set: %s. The completion date of a project cannot be greater than the maximum completion date of the program set.";
|
||||
$lang->program->PRJChildLongTime = "There are long-term projects in the child project, and the parent project should also be a long-term project.";
|
||||
$lang->program->subAcls['private'] = 'Private';
|
||||
$lang->program->subAcls['open'] = 'Default';
|
||||
$lang->program->subAcls['program'] = 'Open within the program';
|
||||
|
||||
/* Actions. */
|
||||
$lang->program->PGMCommon = 'Program';
|
||||
$lang->program->PGMIndex = 'Home';
|
||||
$lang->program->PGMCreate = 'Create Program';
|
||||
$lang->program->PGMCreateGuide = 'Select Template';
|
||||
$lang->program->PGMEdit = 'Edit Program';
|
||||
$lang->program->PGMBrowse = 'Programs';
|
||||
$lang->program->PGMProduct = 'Products';
|
||||
$lang->program->PGMProject = 'Program Project List';
|
||||
$lang->program->PGMAll = 'All Programs';
|
||||
$lang->program->PGMStart = 'Start';
|
||||
$lang->program->PGMFinish = 'Finish';
|
||||
$lang->program->PGMSuspend = 'Suspend';
|
||||
$lang->program->PGMDelete = 'Delete';
|
||||
$lang->program->PGMClose = 'Close';
|
||||
$lang->program->PGMActivate = 'Activate';
|
||||
$lang->program->PGMExport = 'Export';
|
||||
$lang->program->PGMStakeholder = 'Stakeholder';
|
||||
$lang->program->createStakeholder = 'Create Stakeholder';
|
||||
$lang->program->unlinkStakeholder = 'Unlink Stakeholder';
|
||||
$lang->program->batchUnlinkStakeholders = 'Batch Remove Stakeholder';
|
||||
$lang->program->unlink = 'Unlink';
|
||||
$lang->program->morePGM = 'More Programs';
|
||||
$lang->program->confirmBatchUnlink = "Do you want to batch unlink these stakeholders?";
|
||||
$lang->program->stakeholderType = 'Stakeholder type';
|
||||
$lang->program->isStakeholderKey = 'Key stakeholder';
|
||||
$lang->program->importStakeholder = 'Import program';
|
||||
$lang->program->PGMManageMembers = 'Program Team';
|
||||
$lang->program->PGMParentBudget = 'Parent program surplus budget:';
|
||||
$lang->program->beyondParentBudget = 'The remaining budget of the owned program has been exceeded.';
|
||||
$lang->program->PGMBeginLetterParent = "Parent begin date: %s, begin date should be > = parent begin date.";
|
||||
$lang->program->PGMEndGreaterParent = "Parent end date: %s, end date should be < = parent end date.";
|
||||
$lang->program->PGMBeginGreateChild = "Child earliest begin: %s, parent begin date < = child earliest begin date.";
|
||||
$lang->program->PGMEndLetterChild = "Child latest end: %s, parent end date > = child latest end date.";
|
||||
$lang->program->PGMCloseErrorMessage = 'There are subprograms or projects that are not closed';
|
||||
$lang->program->authList['extend'] = 'Inherit(program privileges and company privileges)';
|
||||
$lang->program->authList['reset'] = 'Reset(program privileges only)';
|
||||
|
||||
$lang->program->stakeholderTypeList['inside'] = 'Inside';
|
||||
$lang->program->stakeholderTypeList['outside'] = 'Outside';
|
||||
$lang->program->statusList['wait'] = 'Waiting';
|
||||
$lang->program->statusList['doing'] = 'Doing';
|
||||
$lang->program->statusList['suspended'] = 'Suspended';
|
||||
$lang->program->statusList['closed'] = 'Closed';
|
||||
|
||||
/* Fields. */
|
||||
$lang->program->PGMName = 'Name';
|
||||
$lang->program->PGMTemplate = 'Template';
|
||||
$lang->program->PGMCategory = 'Type';
|
||||
$lang->program->PGMDesc = 'Description';
|
||||
$lang->program->PGMCopy = 'Copy Program';
|
||||
$lang->program->PGMStatus = 'Status';
|
||||
$lang->program->PGMPM = 'Manager';
|
||||
$lang->program->PGMBudget = 'Budget';
|
||||
$lang->program->PGMProgress = 'Progress';
|
||||
$lang->program->PGMChildren = 'Child';
|
||||
$lang->program->PGMParent = 'Parent';
|
||||
$lang->program->PGMAllInput = 'Input';
|
||||
$lang->program->PGMTeamCount = 'Team';
|
||||
$lang->program->PGMLongTime = 'Long-Term';
|
||||
|
||||
$lang->program->noPGM = 'No program.';
|
||||
$lang->program->PGMShowClosed = 'Closed programs.';
|
||||
$lang->program->PGMTips = 'If a parent item set is selected, products under that parent item set can be associated. If no item set is selected, a product with the same name as the item is created by default and associated with that item.';
|
||||
|
||||
$lang->program->PGMAclList['private'] = "Private (accessible to project portfolio holders and stakeholders, stakeholders can follow up maintenance)";
|
||||
$lang->program->PGMAclList['open'] = "Default(user who can visit the program can access it)";
|
||||
|
||||
$lang->program->subPGMAclList['private'] = "Private (accessible to this program set leader and stakeholders, stakeholders can follow up maintenance)";
|
||||
$lang->program->subPGMAclList['open'] = "Default(user who can visit the program can access it)";
|
||||
$lang->program->subPGMAclList['program'] = "Open within the program (accessible to all higher-level program directors and affiliates, as well as to this program director and affiliates)";
|
||||
|
||||
$lang->program->PGMAuthList['extend'] = 'Inherit(program privileges and company privileges)';
|
||||
$lang->program->PGMAuthList['reset'] = 'Reset(program privileges only)';
|
||||
|
||||
$lang->program->PGMFeatureBar['all'] = 'All';
|
||||
$lang->program->featureBar['all'] = 'All';
|
||||
|
||||
+21
-17
@@ -17,23 +17,23 @@ $lang->program->longTime = 'Long-Term';
|
||||
$lang->program->view = 'Program Detail';
|
||||
|
||||
/* Actions. */
|
||||
$lang->program->common = 'Program';
|
||||
$lang->program->index = 'Home';
|
||||
$lang->program->create = 'Create Program';
|
||||
$lang->program->createGuide = 'Select Template';
|
||||
$lang->program->edit = 'Edit Program';
|
||||
$lang->program->browse = 'Programs';
|
||||
$lang->program->product = 'Products';
|
||||
$lang->program->project = 'Program Project List';
|
||||
$lang->program->all = 'All Programs';
|
||||
$lang->program->start = 'Start';
|
||||
$lang->program->finish = 'Finish';
|
||||
$lang->program->suspend = 'Suspend';
|
||||
$lang->program->delete = 'Delete';
|
||||
$lang->program->close = 'Close';
|
||||
$lang->program->activate = 'Activate';
|
||||
$lang->program->export = 'Export';
|
||||
$lang->program->stakeholder = 'Stakeholder';
|
||||
$lang->program->common = 'Program';
|
||||
$lang->program->index = 'Home';
|
||||
$lang->program->create = 'Create Program';
|
||||
$lang->program->createGuide = 'Select Template';
|
||||
$lang->program->edit = 'Edit Program';
|
||||
$lang->program->browse = 'Programs';
|
||||
$lang->program->product = 'Products';
|
||||
$lang->program->project = 'Program Project List';
|
||||
$lang->program->all = 'All Programs';
|
||||
$lang->program->start = 'Start';
|
||||
$lang->program->finish = 'Finish';
|
||||
$lang->program->suspend = 'Suspend';
|
||||
$lang->program->delete = 'Delete';
|
||||
$lang->program->close = 'Close';
|
||||
$lang->program->activate = 'Activate';
|
||||
$lang->program->export = 'Export';
|
||||
$lang->program->stakeholder = 'Stakeholder';
|
||||
$lang->program->createStakeholder = 'Create Stakeholder';
|
||||
$lang->program->unlinkStakeholder = 'Unlink Stakeholder';
|
||||
$lang->program->batchUnlinkStakeholders = 'Batch Remove Stakeholder';
|
||||
@@ -72,6 +72,10 @@ $lang->program->subAclList['private'] = "Private (accessible to this program set
|
||||
$lang->program->subAclList['open'] = "Default(user who can visit the program can access it)";
|
||||
$lang->program->subAclList['program'] = "Open within the program (accessible to all higher-level program directors and affiliates, as well as to this program director and affiliates)";
|
||||
|
||||
$lang->program->subAcls['private'] = 'Private';
|
||||
$lang->program->subAcls['open'] = 'Default';
|
||||
$lang->program->subAcls['program'] = 'Open within the program';
|
||||
|
||||
$lang->program->authList['extend'] = 'Inherit(program privileges and company privileges)';
|
||||
$lang->program->authList['reset'] = 'Reset(program privileges only)';
|
||||
|
||||
|
||||
+70
-277
@@ -1,178 +1,63 @@
|
||||
<?php
|
||||
/* Actions. */
|
||||
$lang->program->createGuide = 'Select Template';
|
||||
$lang->program->PRJIndex = 'Dashboard';
|
||||
$lang->program->PRJHome = 'Home';
|
||||
$lang->program->PRJCreate = 'Create Project';
|
||||
$lang->program->PRJEdit = 'Edit';
|
||||
$lang->program->PRJBatchEdit = 'Batch Edit Projects';
|
||||
$lang->program->PRJView = 'Project View';
|
||||
$lang->program->batchEdit = 'Batch Edit';
|
||||
$lang->program->PRJBrowse = 'Projects';
|
||||
$lang->program->PRJAll = 'All';
|
||||
$lang->program->PRJStart = 'Start';
|
||||
$lang->program->PRJFinish = 'Finish';
|
||||
$lang->program->PRJSuspend = 'Suspend';
|
||||
$lang->program->PRJDelete = 'Delete';
|
||||
$lang->program->PRJClose = 'Close';
|
||||
$lang->program->PRJActivate = 'Activate';
|
||||
$lang->program->PRJGroup = 'Privilege Group';
|
||||
$lang->program->PRJCreateGroup = 'Create Group';
|
||||
$lang->program->PRJEditGroup = 'Edit Group';
|
||||
$lang->program->PRJCopyGroup = 'Copy Group';
|
||||
$lang->program->PRJManageView = 'Manage View';
|
||||
$lang->program->PRJManagePriv = 'Manage Privilege';
|
||||
$lang->program->PRJManageMembers = 'Manage Team';
|
||||
$lang->program->export = 'Export';
|
||||
$lang->program->addProduct = 'Add product';
|
||||
$lang->program->PRJManageGroupMember = 'Manage Group';
|
||||
$lang->program->PRJModuleSetting = 'List Settings';
|
||||
$lang->program->PRJModuleOpen = 'Program Name';
|
||||
$lang->program->PRJUpdateOrder = 'Order';
|
||||
$lang->program->PRJSort = 'Order';
|
||||
$lang->program->PRJWhitelist = 'Project Whitelist';
|
||||
$lang->program->PRJAddWhitelist = 'Project Add Whitelist';
|
||||
$lang->program->unbindWhielist = 'Project Remove Whitelist';
|
||||
$lang->program->PRJManageProducts = 'Manage Products';
|
||||
$lang->program->view = 'Program Detail';
|
||||
$lang->program->copyTitle = 'Please select an project to copy';
|
||||
$lang->program->errorSameProducts = 'Project cannot be associated with multiple identical products.';
|
||||
$lang->program->errorNoProducts = 'At least one product is associated';
|
||||
$lang->program->copyNoProject = 'There are no items available to copy.';
|
||||
$lang->project->searchByName = 'Enter the project name to retrieve';
|
||||
|
||||
/* Fields. */
|
||||
$lang->program->common = 'Program';
|
||||
$lang->program->project = 'Project';
|
||||
$lang->program->stage = 'Stage';
|
||||
$lang->program->PM = 'Manager';
|
||||
$lang->program->PRJName = 'Name';
|
||||
$lang->program->PRJCategory = 'Category';
|
||||
$lang->program->PRJDesc = 'Description';
|
||||
$lang->program->PRJCode = 'Code';
|
||||
$lang->program->PRJCopy = 'Copy';
|
||||
$lang->program->begin = 'Begin';
|
||||
$lang->program->end = 'End';
|
||||
$lang->program->PRJStatus = 'Status';
|
||||
$lang->program->PRJPM = 'Manager';
|
||||
$lang->program->PRJBudget = 'Budget';
|
||||
$lang->program->PRJTemplate = 'Template';
|
||||
$lang->program->PRJEstimate = 'Estimates';
|
||||
$lang->program->PRJConsume = 'Cost';
|
||||
$lang->program->PRJSurplus = 'Left';
|
||||
$lang->program->PRJProgress = 'Progress';
|
||||
$lang->program->dateRange = 'Duration';
|
||||
$lang->program->to = ' to ';
|
||||
$lang->program->realEnd = 'Actual End';
|
||||
$lang->program->realBegan = 'Actual Began';
|
||||
$lang->program->bygrid = 'Kanban';
|
||||
$lang->program->bylist = 'List';
|
||||
$lang->program->mine = 'My';
|
||||
$lang->program->setPlanduration = 'Set Duration';
|
||||
$lang->program->auth = 'Access Control';
|
||||
$lang->program->durationEstimation = 'Estimated Workload';
|
||||
$lang->program->teamCount = 'Man';
|
||||
$lang->program->leftStories = 'Left Stories';
|
||||
$lang->program->leftTasks = 'Left Tasks';
|
||||
$lang->program->leftBugs = 'Left Bugs';
|
||||
$lang->program->PRJChildren = 'Child Project';
|
||||
$lang->program->PRJParent = 'Parent Project';
|
||||
$lang->program->allStories = 'All Stories';
|
||||
$lang->program->doneStories = 'Finished Stories';
|
||||
$lang->program->allInput = 'Total Input';
|
||||
$lang->program->weekly = 'Program Weekly';
|
||||
$lang->program->pv = 'PV';
|
||||
$lang->program->ev = 'EV';
|
||||
$lang->program->sv = 'SV%';
|
||||
$lang->program->ac = 'AC';
|
||||
$lang->program->cv = 'CV%';
|
||||
$lang->program->PRJTeamCount = 'Team';
|
||||
$lang->program->PRJLongTime = 'Long-Term Project';
|
||||
$lang->program->future = 'TBD';
|
||||
$lang->program->morePRJ = 'More Projects';
|
||||
$lang->program->name = 'Name';
|
||||
$lang->program->template = 'Template';
|
||||
$lang->program->category = 'Type';
|
||||
$lang->program->desc = 'Description';
|
||||
$lang->program->copy = 'Copy Program';
|
||||
$lang->program->status = 'Status';
|
||||
$lang->program->PM = 'Manager';
|
||||
$lang->program->budget = 'Budget';
|
||||
$lang->program->progress = 'Progress';
|
||||
$lang->program->children = 'Child';
|
||||
$lang->program->parent = 'Parent';
|
||||
$lang->program->allInput = 'Input';
|
||||
$lang->program->teamCount = 'Team';
|
||||
$lang->program->longTime = 'Long-Term';
|
||||
$lang->program->view = 'Program Detail';
|
||||
|
||||
$lang->program->productNotEmpty = 'Please link products or create products.';
|
||||
$lang->program->existProductName = 'Product name already exists.';
|
||||
$lang->program->changeProgram = '%s > Change program';
|
||||
$lang->program->changeProgramTip = 'After modifying the program set, the products linked with the project will also modify the program set to which it belongs. Please confirm whether to modify it.';
|
||||
$lang->program->linkedProjectsTip = 'Linked projects are as follows';
|
||||
$lang->program->multiLinkedProductsTip = 'The following products linked to this project are also linked to other projects, please unlink before proceeding.';
|
||||
/* Actions. */
|
||||
$lang->program->common = 'Program';
|
||||
$lang->program->index = 'Home';
|
||||
$lang->program->create = 'Create Program';
|
||||
$lang->program->createGuide = 'Select Template';
|
||||
$lang->program->edit = 'Edit Program';
|
||||
$lang->program->browse = 'Programs';
|
||||
$lang->program->product = 'Products';
|
||||
$lang->program->project = 'Program Project List';
|
||||
$lang->program->all = 'All Programs';
|
||||
$lang->program->start = 'Start';
|
||||
$lang->program->finish = 'Finish';
|
||||
$lang->program->suspend = 'Suspend';
|
||||
$lang->program->delete = 'Delete';
|
||||
$lang->program->close = 'Close';
|
||||
$lang->program->activate = 'Activate';
|
||||
$lang->program->export = 'Export';
|
||||
$lang->program->stakeholder = 'Stakeholder';
|
||||
$lang->program->createStakeholder = 'Create Stakeholder';
|
||||
$lang->program->unlinkStakeholder = 'Unlink Stakeholder';
|
||||
$lang->program->batchUnlinkStakeholders = 'Batch Remove Stakeholder';
|
||||
$lang->program->unlink = 'Unlink';
|
||||
$lang->program->moreProgram = 'More Programs';
|
||||
$lang->program->confirmBatchUnlink = "Do you want to batch unlink these stakeholders?";
|
||||
$lang->program->stakeholderType = 'Stakeholder type';
|
||||
$lang->program->isStakeholderKey = 'Key stakeholder';
|
||||
$lang->program->importStakeholder = 'Import program';
|
||||
$lang->program->manageMembers = 'Program Team';
|
||||
$lang->program->beyondParentBudget = 'The remaining budget of the owned program has been exceeded.';
|
||||
$lang->program->parentBudget = 'Parent program surplus budget:';
|
||||
$lang->program->beginLetterParent = "Parent begin date: %s, begin date should be > = parent begin date.";
|
||||
$lang->program->endGreaterParent = "Parent end date: %s, end date should be < = parent end date.";
|
||||
$lang->program->beginGreateChild = "Child earliest begin: %s, parent begin date < = child earliest begin date.";
|
||||
$lang->program->endLetterChild = "Child latest end: %s, parent end date > = child latest end date.";
|
||||
$lang->program->closeErrorMessage = 'There are subprograms or projects that are not closed';
|
||||
|
||||
$lang->program->tenThousand = '';
|
||||
$lang->program->stakeholderTypeList['inside'] = 'Inside';
|
||||
$lang->program->stakeholderTypeList['outside'] = 'Outside';
|
||||
|
||||
$lang->program->unitList['CNY'] = 'RMB';
|
||||
$lang->program->unitList['USD'] = 'USD';
|
||||
$lang->program->unitList['HKD'] = 'HKD';
|
||||
$lang->program->unitList['NTD'] = 'New Taiwan';
|
||||
$lang->program->unitList['EUR'] = 'Euro';
|
||||
$lang->program->unitList['DEM'] = 'Deutsche Mark';
|
||||
$lang->program->unitList['CHF'] = 'Swiss Franc';
|
||||
$lang->program->unitList['FRF'] = 'French Franc';
|
||||
$lang->program->unitList['GBP'] = 'Pound';
|
||||
$lang->program->unitList['NLG'] = 'Florin';
|
||||
$lang->program->unitList['CAD'] = 'Canadian';
|
||||
$lang->program->unitList['RUR'] = 'Russian Ruble';
|
||||
$lang->program->unitList['INR'] = 'Indian';
|
||||
$lang->program->unitList['AUD'] = 'Australian';
|
||||
$lang->program->unitList['NZD'] = 'New Zealand';
|
||||
$lang->program->unitList['THB'] = 'Thai Baht';
|
||||
$lang->program->unitList['SGD'] = 'Singapore';
|
||||
|
||||
$lang->program->currencySymbol['CNY'] = '¥';
|
||||
$lang->program->currencySymbol['USD'] = '$';
|
||||
$lang->program->currencySymbol['HKD'] = 'HK$';
|
||||
$lang->program->currencySymbol['NTD'] = 'NT$';
|
||||
$lang->program->currencySymbol['EUR'] = '€';
|
||||
$lang->program->currencySymbol['DEM'] = 'DEM';
|
||||
$lang->program->currencySymbol['CHF'] = '₣';
|
||||
$lang->program->currencySymbol['FRF'] = '₣';
|
||||
$lang->program->currencySymbol['GBP'] = '£';
|
||||
$lang->program->currencySymbol['NLG'] = 'ƒ';
|
||||
$lang->program->currencySymbol['CAD'] = '$';
|
||||
$lang->program->currencySymbol['RUR'] = '₽';
|
||||
$lang->program->currencySymbol['INR'] = '₹';
|
||||
$lang->program->currencySymbol['AUD'] = 'A$';
|
||||
$lang->program->currencySymbol['NZD'] = 'NZ$';
|
||||
$lang->program->currencySymbol['THB'] = '฿';
|
||||
$lang->program->currencySymbol['SGD'] = 'S$';
|
||||
|
||||
$lang->program->modelList['scrum'] = "Scrum";
|
||||
$lang->program->modelList['waterfall'] = "CMMI";
|
||||
|
||||
$lang->program->PRJCategoryList['single'] = "Single product";
|
||||
$lang->program->PRJCategoryList['multiple'] = "Multiple products";
|
||||
|
||||
$lang->program->PRJLifeTimeList['short'] = "Short-Term";
|
||||
$lang->program->PRJLifeTimeList['long'] = "Long-Term";
|
||||
$lang->program->PRJLifeTimeList['ops'] = "DevOps";
|
||||
|
||||
$lang->program->featureBar['all'] = 'All';
|
||||
$lang->program->featureBar['doing'] = 'Going';
|
||||
$lang->program->featureBar['wait'] = 'Waiting';
|
||||
$lang->program->featureBar['suspended'] = 'Suspended';
|
||||
$lang->program->featureBar['closed'] = 'Closed';
|
||||
|
||||
$lang->program->PRJAclList['private'] = 'Private (For team members and stakeholders only)';
|
||||
$lang->program->PRJAclList['open'] = "Open (accessible with project view permissions)";
|
||||
|
||||
$lang->program->PRJAcls['private'] = 'Private';
|
||||
$lang->program->PRJAcls['open'] = "Open";
|
||||
|
||||
$lang->program->PGMPRJAclList['private'] = "Private (For team members and stakeholders only)";
|
||||
$lang->program->PGMPRJAclList['program'] = "Public within the project set (accessible to all higher-level project set leaders and stakeholders, members of this project team and stakeholders)";
|
||||
$lang->program->PGMPRJAclList['open'] = "Full disclosure (accessible with project view permissions)";
|
||||
|
||||
$lang->program->PGMPRJAcls['private'] = "Private";
|
||||
$lang->program->PGMPRJAcls['program'] = "Public within the project set";
|
||||
$lang->program->PGMPRJAcls['open'] = "Full disclosure";
|
||||
|
||||
$lang->program->PRJAuthList['extend'] = 'Inherit (system privilege and project privilege)';
|
||||
$lang->program->PRJAuthList['reset'] = 'Reset (project privilege only)';
|
||||
|
||||
$lang->program->statusList['wait'] = 'Waiting';
|
||||
$lang->program->statusList['doing'] = 'Doing';
|
||||
$lang->program->statusList['suspended'] = 'Suspended';
|
||||
$lang->program->statusList['closed'] = 'Closed';
|
||||
$lang->program->noProgram = 'No program.';
|
||||
$lang->program->showClosed = 'Closed programs.';
|
||||
$lang->program->tips = 'If a parent item set is selected, products under that parent item set can be associated. If no item set is selected, a product with the same name as the item is created by default and associated with that item.';
|
||||
|
||||
$lang->program->endList[31] = 'One month';
|
||||
$lang->program->endList[93] = 'Trimester';
|
||||
@@ -180,115 +65,23 @@ $lang->program->endList[186] = 'Half yearly';
|
||||
$lang->program->endList[365] = 'One year';
|
||||
$lang->program->endList[999] = 'Longtime';
|
||||
|
||||
$lang->program->noPRJ = 'No project.';
|
||||
$lang->program->accessDenied = 'Access denied!';
|
||||
$lang->program->chooseProgramType = 'Select the project management model';
|
||||
$lang->program->nextStep = 'Next step';
|
||||
$lang->program->hoursUnit = '%s hours';
|
||||
$lang->program->membersUnit = '%s men';
|
||||
$lang->program->lastIteration = 'Recent iterations';
|
||||
$lang->program->ongoingStage = 'Ongoing stage';
|
||||
$lang->program->scrum = 'Scrum';
|
||||
$lang->program->waterfall = 'CMMI';
|
||||
$lang->program->waterfallTitle = 'CMMI';
|
||||
$lang->program->cannotCreateChild = 'It is not empty, so you cannot add a child. You can add a parent for it, and then create a child.';
|
||||
$lang->program->hasChildren = 'It has child programs or projects. You cannot delete it.';
|
||||
$lang->program->confirmDelete = "Do you want to delete [%s]?";
|
||||
$lang->program->emptyPM = 'No manager';
|
||||
$lang->program->cannotChangeToCat = "It is not empty, so you cannot change it to a parent.";
|
||||
$lang->program->cannotCancelCat = "It has child projects, so you cannot unmark the parent.";
|
||||
$lang->program->parentBeginEnd = "Parent begin&end date: %s ~ %s";
|
||||
$lang->program->childLongTime = "If a child as long-term projects, the parent should be long-term too.";
|
||||
$lang->program->readjustTime = 'Change the project begin&end date.';
|
||||
$lang->program->notAllowRemoveProducts = 'The story of this product is linked with the project. Unlink it before doing any action.';
|
||||
$lang->program->aclList['private'] = "Private (accessible to project portfolio holders and stakeholders, stakeholders can follow up maintenance)";
|
||||
$lang->program->aclList['open'] = "Default(user who can visit the program can access it)";
|
||||
|
||||
$lang->program->PRJProgramTitle['0'] = 'Hide';
|
||||
$lang->program->PRJProgramTitle['base'] = 'Base-level program only';
|
||||
$lang->program->PRJProgramTitle['end'] = 'End-level program only';
|
||||
$lang->program->subAclList['private'] = "Private (accessible to this program set leader and stakeholders, stakeholders can follow up maintenance)";
|
||||
$lang->program->subAclList['open'] = "Default(user who can visit the program can access it)";
|
||||
$lang->program->subAclList['program'] = "Open within the program (accessible to all higher-level program directors and affiliates, as well as to this program director and affiliates)";
|
||||
|
||||
$lang->program->PRJAccessDenied = 'Access denied to this program';
|
||||
$lang->program->PRJChooseProgramType = 'Select management type';
|
||||
$lang->program->scrumTitle = 'Agile Development Management';
|
||||
$lang->program->PRJCannotCreateChild = 'The project has contents, so you cannot add a child project. You can create a parent project for this one and then add a child project for the parent project.';
|
||||
$lang->program->PRJHasChildren = 'This project has a child project, so it cannot be deleted.';
|
||||
$lang->program->PRJConfirmDelete = 'Do you want to delete this project?';
|
||||
$lang->program->PRJCannotChangeToCat = "The project has contents, so you cannot it to a parent project.";
|
||||
$lang->program->PRJCannotCancelCat = "There are child projects of this project. You cannot cancel the parent project mark.";
|
||||
$lang->program->PRJParentBeginEnd = "The begin and end date of the parent project: %s ~ %s";
|
||||
$lang->program->PRJParentBudget = "The budget of the parent project: %s";
|
||||
$lang->program->PRJBeginLetterParent = "The begin date of the parent project: %s. It cannot be < the begin date of its parent project.";
|
||||
$lang->program->PRJEndGreaterParent = "The end date of the parent project: %s. It cannot be > the end date of its parent project.";
|
||||
$lang->program->PRJBeginGreateChild = "The minimum start date of the project set: %s. The start date of the project cannot be less than the minimum start date of the program set.";
|
||||
$lang->program->PRJEndLetterChild = "The maximum finish date for the project set: %s. The completion date of a project cannot be greater than the maximum completion date of the program set.";
|
||||
$lang->program->PRJChildLongTime = "There are long-term projects in the child project, and the parent project should also be a long-term project.";
|
||||
$lang->program->subAcls['private'] = 'Private';
|
||||
$lang->program->subAcls['open'] = 'Default';
|
||||
$lang->program->subAcls['program'] = 'Open within the program';
|
||||
|
||||
/* Actions. */
|
||||
$lang->program->PGMCommon = 'Program';
|
||||
$lang->program->PGMIndex = 'Home';
|
||||
$lang->program->PGMCreate = 'Create Program';
|
||||
$lang->program->PGMCreateGuide = 'Select Template';
|
||||
$lang->program->PGMEdit = 'Edit Program';
|
||||
$lang->program->PGMBrowse = 'Programs';
|
||||
$lang->program->PGMProduct = 'Products';
|
||||
$lang->program->PGMProject = 'Program Project List';
|
||||
$lang->program->PGMAll = 'All Programs';
|
||||
$lang->program->PGMStart = 'Start';
|
||||
$lang->program->PGMFinish = 'Finish';
|
||||
$lang->program->PGMSuspend = 'Suspend';
|
||||
$lang->program->PGMDelete = 'Delete';
|
||||
$lang->program->PGMClose = 'Close';
|
||||
$lang->program->PGMActivate = 'Activate';
|
||||
$lang->program->PGMExport = 'Export';
|
||||
$lang->program->PGMStakeholder = 'Stakeholder';
|
||||
$lang->program->createStakeholder = 'Create Stakeholder';
|
||||
$lang->program->unlinkStakeholder = 'Unlink Stakeholder';
|
||||
$lang->program->batchUnlinkStakeholders = 'Batch Remove Stakeholder';
|
||||
$lang->program->unlink = 'Unlink';
|
||||
$lang->program->morePGM = 'More Programs';
|
||||
$lang->program->confirmBatchUnlink = "Do you want to batch unlink these stakeholders?";
|
||||
$lang->program->stakeholderType = 'Stakeholder type';
|
||||
$lang->program->isStakeholderKey = 'Key stakeholder';
|
||||
$lang->program->importStakeholder = 'Import program';
|
||||
$lang->program->PGMManageMembers = 'Program Team';
|
||||
$lang->program->PGMParentBudget = 'Parent program surplus budget:';
|
||||
$lang->program->beyondParentBudget = 'The remaining budget of the owned program has been exceeded.';
|
||||
$lang->program->PGMBeginLetterParent = "Parent begin date: %s, begin date should be > = parent begin date.";
|
||||
$lang->program->PGMEndGreaterParent = "Parent end date: %s, end date should be < = parent end date.";
|
||||
$lang->program->PGMBeginGreateChild = "Child earliest begin: %s, parent begin date < = child earliest begin date.";
|
||||
$lang->program->PGMEndLetterChild = "Child latest end: %s, parent end date > = child latest end date.";
|
||||
$lang->program->PGMCloseErrorMessage = 'There are subprograms or projects that are not closed';
|
||||
$lang->program->authList['extend'] = 'Inherit(program privileges and company privileges)';
|
||||
$lang->program->authList['reset'] = 'Reset(program privileges only)';
|
||||
|
||||
$lang->program->stakeholderTypeList['inside'] = 'Inside';
|
||||
$lang->program->stakeholderTypeList['outside'] = 'Outside';
|
||||
$lang->program->statusList['wait'] = 'Waiting';
|
||||
$lang->program->statusList['doing'] = 'Doing';
|
||||
$lang->program->statusList['suspended'] = 'Suspended';
|
||||
$lang->program->statusList['closed'] = 'Closed';
|
||||
|
||||
/* Fields. */
|
||||
$lang->program->PGMName = 'Name';
|
||||
$lang->program->PGMTemplate = 'Template';
|
||||
$lang->program->PGMCategory = 'Type';
|
||||
$lang->program->PGMDesc = 'Description';
|
||||
$lang->program->PGMCopy = 'Copy Program';
|
||||
$lang->program->PGMStatus = 'Status';
|
||||
$lang->program->PGMPM = 'Manager';
|
||||
$lang->program->PGMBudget = 'Budget';
|
||||
$lang->program->PGMProgress = 'Progress';
|
||||
$lang->program->PGMChildren = 'Child';
|
||||
$lang->program->PGMParent = 'Parent';
|
||||
$lang->program->PGMAllInput = 'Input';
|
||||
$lang->program->PGMTeamCount = 'Team';
|
||||
$lang->program->PGMLongTime = 'Long-Term';
|
||||
|
||||
$lang->program->noPGM = 'No program.';
|
||||
$lang->program->PGMShowClosed = 'Closed programs.';
|
||||
$lang->program->PGMTips = 'If a parent item set is selected, products under that parent item set can be associated. If no item set is selected, a product with the same name as the item is created by default and associated with that item.';
|
||||
|
||||
$lang->program->PGMAclList['private'] = "Private (accessible to project portfolio holders and stakeholders, stakeholders can follow up maintenance)";
|
||||
$lang->program->PGMAclList['open'] = "Default(user who can visit the program can access it)";
|
||||
|
||||
$lang->program->subPGMAclList['private'] = "Private (accessible to this program set leader and stakeholders, stakeholders can follow up maintenance)";
|
||||
$lang->program->subPGMAclList['open'] = "Default(user who can visit the program can access it)";
|
||||
$lang->program->subPGMAclList['program'] = "Open within the program (accessible to all higher-level program directors and affiliates, as well as to this program director and affiliates)";
|
||||
|
||||
$lang->program->PGMAuthList['extend'] = 'Inherit(program privileges and company privileges)';
|
||||
$lang->program->PGMAuthList['reset'] = 'Reset(program privileges only)';
|
||||
|
||||
$lang->program->PGMFeatureBar['all'] = 'All';
|
||||
$lang->program->featureBar['all'] = 'All';
|
||||
|
||||
+70
-277
@@ -1,178 +1,63 @@
|
||||
<?php
|
||||
/* Actions. */
|
||||
$lang->program->createGuide = 'Select Template';
|
||||
$lang->program->PRJIndex = 'Dashboard';
|
||||
$lang->program->PRJHome = 'Home';
|
||||
$lang->program->PRJCreate = 'Create Project';
|
||||
$lang->program->PRJEdit = 'Edit';
|
||||
$lang->program->PRJBatchEdit = 'Batch Edit Projects';
|
||||
$lang->program->PRJView = 'Project View';
|
||||
$lang->program->batchEdit = 'Batch Edit';
|
||||
$lang->program->PRJBrowse = 'Projects';
|
||||
$lang->program->PRJAll = 'All';
|
||||
$lang->program->PRJStart = 'Start';
|
||||
$lang->program->PRJFinish = 'Finish';
|
||||
$lang->program->PRJSuspend = 'Suspend';
|
||||
$lang->program->PRJDelete = 'Delete';
|
||||
$lang->program->PRJClose = 'Close';
|
||||
$lang->program->PRJActivate = 'Activate';
|
||||
$lang->program->PRJGroup = 'Privilege Group';
|
||||
$lang->program->PRJCreateGroup = 'Create Group';
|
||||
$lang->program->PRJEditGroup = 'Edit Group';
|
||||
$lang->program->PRJCopyGroup = 'Copy Group';
|
||||
$lang->program->PRJManageView = 'Manage View';
|
||||
$lang->program->PRJManagePriv = 'Manage Privilege';
|
||||
$lang->program->PRJManageMembers = 'Manage Team';
|
||||
$lang->program->export = 'Export';
|
||||
$lang->program->addProduct = 'Add product';
|
||||
$lang->program->PRJManageGroupMember = 'Manage Group';
|
||||
$lang->program->PRJModuleSetting = 'List Settings';
|
||||
$lang->program->PRJModuleOpen = 'Program Name';
|
||||
$lang->program->PRJUpdateOrder = 'Order';
|
||||
$lang->program->PRJSort = 'Order';
|
||||
$lang->program->PRJWhitelist = 'Project Whitelist';
|
||||
$lang->program->PRJAddWhitelist = 'Project Add Whitelist';
|
||||
$lang->program->unbindWhielist = 'Project Remove Whitelist';
|
||||
$lang->program->PRJManageProducts = 'Manage Products';
|
||||
$lang->program->view = 'Program Detail';
|
||||
$lang->program->copyTitle = 'Please select an project to copy';
|
||||
$lang->program->errorSameProducts = 'Project cannot be associated with multiple identical products.';
|
||||
$lang->program->errorNoProducts = 'At least one product is associated';
|
||||
$lang->program->copyNoProject = 'There are no items available to copy.';
|
||||
$lang->project->searchByName = 'Enter the project name to retrieve';
|
||||
|
||||
/* Fields. */
|
||||
$lang->program->common = 'Program';
|
||||
$lang->program->project = 'Project';
|
||||
$lang->program->stage = 'Stage';
|
||||
$lang->program->PM = 'Manager';
|
||||
$lang->program->PRJName = 'Name';
|
||||
$lang->program->PRJCategory = 'Category';
|
||||
$lang->program->PRJDesc = 'Description';
|
||||
$lang->program->PRJCode = 'Code';
|
||||
$lang->program->PRJCopy = 'Copy';
|
||||
$lang->program->begin = 'Begin';
|
||||
$lang->program->end = 'End';
|
||||
$lang->program->PRJStatus = 'Status';
|
||||
$lang->program->PRJPM = 'Manager';
|
||||
$lang->program->PRJBudget = 'Budget';
|
||||
$lang->program->PRJTemplate = 'Template';
|
||||
$lang->program->PRJEstimate = 'Estimates';
|
||||
$lang->program->PRJConsume = 'Cost';
|
||||
$lang->program->PRJSurplus = 'Left';
|
||||
$lang->program->PRJProgress = 'Progress';
|
||||
$lang->program->dateRange = 'Duration';
|
||||
$lang->program->to = ' to ';
|
||||
$lang->program->realEnd = 'Actual End';
|
||||
$lang->program->realBegan = 'Actual Began';
|
||||
$lang->program->bygrid = 'Kanban';
|
||||
$lang->program->bylist = 'List';
|
||||
$lang->program->mine = 'My';
|
||||
$lang->program->setPlanduration = 'Set Duration';
|
||||
$lang->program->auth = 'Access Control';
|
||||
$lang->program->durationEstimation = 'Estimated Workload';
|
||||
$lang->program->teamCount = 'Man';
|
||||
$lang->program->leftStories = 'Left Stories';
|
||||
$lang->program->leftTasks = 'Left Tasks';
|
||||
$lang->program->leftBugs = 'Left Bugs';
|
||||
$lang->program->PRJChildren = 'Child Project';
|
||||
$lang->program->PRJParent = 'Parent Project';
|
||||
$lang->program->allStories = 'All Stories';
|
||||
$lang->program->doneStories = 'Finished Stories';
|
||||
$lang->program->allInput = 'Total Input';
|
||||
$lang->program->weekly = 'Program Weekly';
|
||||
$lang->program->pv = 'PV';
|
||||
$lang->program->ev = 'EV';
|
||||
$lang->program->sv = 'SV%';
|
||||
$lang->program->ac = 'AC';
|
||||
$lang->program->cv = 'CV%';
|
||||
$lang->program->PRJTeamCount = 'Team';
|
||||
$lang->program->PRJLongTime = 'Long-Term Project';
|
||||
$lang->program->future = 'TBD';
|
||||
$lang->program->morePRJ = 'More Projects';
|
||||
$lang->program->name = 'Name';
|
||||
$lang->program->template = 'Template';
|
||||
$lang->program->category = 'Type';
|
||||
$lang->program->desc = 'Description';
|
||||
$lang->program->copy = 'Copy Program';
|
||||
$lang->program->status = 'Status';
|
||||
$lang->program->PM = 'Manager';
|
||||
$lang->program->budget = 'Budget';
|
||||
$lang->program->progress = 'Progress';
|
||||
$lang->program->children = 'Child';
|
||||
$lang->program->parent = 'Parent';
|
||||
$lang->program->allInput = 'Input';
|
||||
$lang->program->teamCount = 'Team';
|
||||
$lang->program->longTime = 'Long-Term';
|
||||
$lang->program->view = 'Program Detail';
|
||||
|
||||
$lang->program->productNotEmpty = 'Please link products or create products.';
|
||||
$lang->program->existProductName = 'Product name already exists.';
|
||||
$lang->program->changeProgram = '%s > Change program';
|
||||
$lang->program->changeProgramTip = 'After modifying the program set, the products linked with the project will also modify the program set to which it belongs. Please confirm whether to modify it.';
|
||||
$lang->program->linkedProjectsTip = 'Linked projects are as follows';
|
||||
$lang->program->multiLinkedProductsTip = 'The following products linked to this project are also linked to other projects, please unlink before proceeding.';
|
||||
/* Actions. */
|
||||
$lang->program->common = 'Program';
|
||||
$lang->program->index = 'Home';
|
||||
$lang->program->create = 'Create Program';
|
||||
$lang->program->createGuide = 'Select Template';
|
||||
$lang->program->edit = 'Edit Program';
|
||||
$lang->program->browse = 'Programs';
|
||||
$lang->program->product = 'Products';
|
||||
$lang->program->project = 'Program Project List';
|
||||
$lang->program->all = 'All Programs';
|
||||
$lang->program->start = 'Start';
|
||||
$lang->program->finish = 'Finish';
|
||||
$lang->program->suspend = 'Suspend';
|
||||
$lang->program->delete = 'Delete';
|
||||
$lang->program->close = 'Close';
|
||||
$lang->program->activate = 'Activate';
|
||||
$lang->program->export = 'Export';
|
||||
$lang->program->stakeholder = 'Stakeholder';
|
||||
$lang->program->createStakeholder = 'Create Stakeholder';
|
||||
$lang->program->unlinkStakeholder = 'Unlink Stakeholder';
|
||||
$lang->program->batchUnlinkStakeholders = 'Batch Remove Stakeholder';
|
||||
$lang->program->unlink = 'Unlink';
|
||||
$lang->program->moreProgram = 'More program';
|
||||
$lang->program->confirmBatchUnlink = "Do you want to batch unlink these stakeholders?";
|
||||
$lang->program->stakeholderType = 'Stakeholder type';
|
||||
$lang->program->isStakeholderKey = 'Key stakeholder';
|
||||
$lang->program->importStakeholder = 'Import program';
|
||||
$lang->program->manageMembers = 'Program Team';
|
||||
$lang->program->beyondParentBudget = 'The remaining budget of the owned program has been exceeded.';
|
||||
$lang->program->parentBudget = 'Parent program surplus budget:';
|
||||
$lang->program->beginLetterParent = "Parent begin date: %s, begin date should be > = parent begin date.";
|
||||
$lang->program->endGreaterParent = "Parent end date: %s, end date should be < = parent end date.";
|
||||
$lang->program->beginGreateChild = "Child earliest begin: %s, parent begin date < = child earliest begin date.";
|
||||
$lang->program->endLetterChild = "Child latest end: %s, parent end date > = child latest end date.";
|
||||
$lang->program->closeErrorMessage = 'There are subprograms or projects that are not closed';
|
||||
|
||||
$lang->program->tenThousand = '';
|
||||
$lang->program->stakeholderTypeList['inside'] = 'Inside';
|
||||
$lang->program->stakeholderTypeList['outside'] = 'Outside';
|
||||
|
||||
$lang->program->unitList['CNY'] = 'RMB';
|
||||
$lang->program->unitList['USD'] = 'USD';
|
||||
$lang->program->unitList['HKD'] = 'HKD';
|
||||
$lang->program->unitList['NTD'] = 'New Taiwan';
|
||||
$lang->program->unitList['EUR'] = 'Euro';
|
||||
$lang->program->unitList['DEM'] = 'Deutsche Mark';
|
||||
$lang->program->unitList['CHF'] = 'Swiss Franc';
|
||||
$lang->program->unitList['FRF'] = 'French Franc';
|
||||
$lang->program->unitList['GBP'] = 'Pound';
|
||||
$lang->program->unitList['NLG'] = 'Florin';
|
||||
$lang->program->unitList['CAD'] = 'Canadian';
|
||||
$lang->program->unitList['RUR'] = 'Russian Ruble';
|
||||
$lang->program->unitList['INR'] = 'Indian';
|
||||
$lang->program->unitList['AUD'] = 'Australian';
|
||||
$lang->program->unitList['NZD'] = 'New Zealand';
|
||||
$lang->program->unitList['THB'] = 'Thai Baht';
|
||||
$lang->program->unitList['SGD'] = 'Singapore';
|
||||
|
||||
$lang->program->currencySymbol['CNY'] = '¥';
|
||||
$lang->program->currencySymbol['USD'] = '$';
|
||||
$lang->program->currencySymbol['HKD'] = 'HK$';
|
||||
$lang->program->currencySymbol['NTD'] = 'NT$';
|
||||
$lang->program->currencySymbol['EUR'] = '€';
|
||||
$lang->program->currencySymbol['DEM'] = 'DEM';
|
||||
$lang->program->currencySymbol['CHF'] = '₣';
|
||||
$lang->program->currencySymbol['FRF'] = '₣';
|
||||
$lang->program->currencySymbol['GBP'] = '£';
|
||||
$lang->program->currencySymbol['NLG'] = 'ƒ';
|
||||
$lang->program->currencySymbol['CAD'] = '$';
|
||||
$lang->program->currencySymbol['RUR'] = '₽';
|
||||
$lang->program->currencySymbol['INR'] = '₹';
|
||||
$lang->program->currencySymbol['AUD'] = 'A$';
|
||||
$lang->program->currencySymbol['NZD'] = 'NZ$';
|
||||
$lang->program->currencySymbol['THB'] = '฿';
|
||||
$lang->program->currencySymbol['SGD'] = 'S$';
|
||||
|
||||
$lang->program->modelList['scrum'] = "Scrum";
|
||||
$lang->program->modelList['waterfall'] = "CMMI";
|
||||
|
||||
$lang->program->PRJCategoryList['single'] = "Single product";
|
||||
$lang->program->PRJCategoryList['multiple'] = "Multiple products";
|
||||
|
||||
$lang->program->PRJLifeTimeList['short'] = "Short-Term";
|
||||
$lang->program->PRJLifeTimeList['long'] = "Long-Term";
|
||||
$lang->program->PRJLifeTimeList['ops'] = "DevOps";
|
||||
|
||||
$lang->program->featureBar['all'] = 'All';
|
||||
$lang->program->featureBar['doing'] = 'Going';
|
||||
$lang->program->featureBar['wait'] = 'Waiting';
|
||||
$lang->program->featureBar['suspended'] = 'Suspended';
|
||||
$lang->program->featureBar['closed'] = 'Closed';
|
||||
|
||||
$lang->program->PRJAclList['private'] = 'Private (For team members and stakeholders only)';
|
||||
$lang->program->PRJAclList['open'] = "Open (accessible with project view permissions)";
|
||||
|
||||
$lang->program->PRJAcls['private'] = 'Private';
|
||||
$lang->program->PRJAcls['open'] = "Open";
|
||||
|
||||
$lang->program->PGMPRJAclList['private'] = "Private (For team members and stakeholders only)";
|
||||
$lang->program->PGMPRJAclList['program'] = "Public within the project set (accessible to all higher-level project set leaders and stakeholders, members of this project team and stakeholders)";
|
||||
$lang->program->PGMPRJAclList['open'] = "Full disclosure (accessible with project view permissions)";
|
||||
|
||||
$lang->program->PGMPRJAcls['private'] = "Private";
|
||||
$lang->program->PGMPRJAcls['program'] = "Public within the project set";
|
||||
$lang->program->PGMPRJAcls['open'] = "Full disclosure";
|
||||
|
||||
$lang->program->PRJAuthList['extend'] = 'Inherit (system privilege and project privilege)';
|
||||
$lang->program->PRJAuthList['reset'] = 'Reset (project privilege only)';
|
||||
|
||||
$lang->program->statusList['wait'] = 'Waiting';
|
||||
$lang->program->statusList['doing'] = 'Doing';
|
||||
$lang->program->statusList['suspended'] = 'Suspended';
|
||||
$lang->program->statusList['closed'] = 'Closed';
|
||||
$lang->program->noProgram = 'No program.';
|
||||
$lang->program->showClosed = 'Closed programs.';
|
||||
$lang->program->tips = 'If a parent item set is selected, products under that parent item set can be associated. If no item set is selected, a product with the same name as the item is created by default and associated with that item.';
|
||||
|
||||
$lang->program->endList[31] = 'One month';
|
||||
$lang->program->endList[93] = 'Trimester';
|
||||
@@ -180,115 +65,23 @@ $lang->program->endList[186] = 'Half yearly';
|
||||
$lang->program->endList[365] = 'One year';
|
||||
$lang->program->endList[999] = 'Longtime';
|
||||
|
||||
$lang->program->noPRJ = 'No project.';
|
||||
$lang->program->accessDenied = 'Access denied!';
|
||||
$lang->program->chooseProgramType = 'Select the project management model';
|
||||
$lang->program->nextStep = 'Next step';
|
||||
$lang->program->hoursUnit = '%s hours';
|
||||
$lang->program->membersUnit = '%s men';
|
||||
$lang->program->lastIteration = 'Recent iterations';
|
||||
$lang->program->ongoingStage = 'Ongoing stage';
|
||||
$lang->program->scrum = 'Scrum';
|
||||
$lang->program->waterfall = 'CMMI';
|
||||
$lang->program->waterfallTitle = 'CMMI';
|
||||
$lang->program->cannotCreateChild = 'It is not empty, so you cannot add a child. You can add a parent for it, and then create a child.';
|
||||
$lang->program->hasChildren = 'It has child programs or projects. You cannot delete it.';
|
||||
$lang->program->confirmDelete = "Do you want to delete [%s]?";
|
||||
$lang->program->emptyPM = 'No manager';
|
||||
$lang->program->cannotChangeToCat = "It is not empty, so you cannot change it to a parent.";
|
||||
$lang->program->cannotCancelCat = "It has child projects, so you cannot unmark the parent.";
|
||||
$lang->program->parentBeginEnd = "Parent begin&end date: %s ~ %s";
|
||||
$lang->program->childLongTime = "If a child as long-term projects, the parent should be long-term too.";
|
||||
$lang->program->readjustTime = 'Change the project begin&end date.';
|
||||
$lang->program->notAllowRemoveProducts = 'The story of this product is linked with the project. Unlink it before doing any action.';
|
||||
$lang->program->aclList['private'] = "Private (accessible to project portfolio holders and stakeholders, stakeholders can follow up maintenance)";
|
||||
$lang->program->aclList['open'] = "Default(user who can visit the program can access it)";
|
||||
|
||||
$lang->program->PRJProgramTitle['0'] = 'Hide';
|
||||
$lang->program->PRJProgramTitle['base'] = 'Base-level program only';
|
||||
$lang->program->PRJProgramTitle['end'] = 'End-level program only';
|
||||
$lang->program->subAclList['private'] = "Private (accessible to this program set leader and stakeholders, stakeholders can follow up maintenance)";
|
||||
$lang->program->subAclList['open'] = "Default(user who can visit the program can access it)";
|
||||
$lang->program->subAclList['program'] = "Open within the program (accessible to all higher-level program directors and affiliates, as well as to this program director and affiliates)";
|
||||
|
||||
$lang->program->PRJAccessDenied = 'Access denied to this program';
|
||||
$lang->program->PRJChooseProgramType = 'Select management type';
|
||||
$lang->program->scrumTitle = 'Agile Development Management';
|
||||
$lang->program->PRJCannotCreateChild = 'The project has contents, so you cannot add a child project. You can create a parent project for this one and then add a child project for the parent project.';
|
||||
$lang->program->PRJHasChildren = 'This project has a child project, so it cannot be deleted.';
|
||||
$lang->program->PRJConfirmDelete = 'Do you want to delete this project?';
|
||||
$lang->program->PRJCannotChangeToCat = "The project has contents, so you cannot it to a parent project.";
|
||||
$lang->program->PRJCannotCancelCat = "There are child projects of this project. You cannot cancel the parent project mark.";
|
||||
$lang->program->PRJParentBeginEnd = "The begin and end date of the parent project: %s ~ %s";
|
||||
$lang->program->PRJParentBudget = "The budget of the parent project: %s";
|
||||
$lang->program->PRJBeginLetterParent = "The begin date of the parent project: %s. It cannot be < the begin date of its parent project.";
|
||||
$lang->program->PRJEndGreaterParent = "The end date of the parent project: %s. It cannot be > the end date of its parent project.";
|
||||
$lang->program->PRJBeginGreateChild = "The minimum start date of the project set: %s. The start date of the project cannot be less than the minimum start date of the program set.";
|
||||
$lang->program->PRJEndLetterChild = "The maximum finish date for the project set: %s. The completion date of a project cannot be greater than the maximum completion date of the program set.";
|
||||
$lang->program->PRJChildLongTime = "There are long-term projects in the child project, and the parent project should also be a long-term project.";
|
||||
$lang->program->subAcls['private'] = 'Private';
|
||||
$lang->program->subAcls['open'] = 'Default';
|
||||
$lang->program->subAcls['program'] = 'Open within the program';
|
||||
|
||||
/* Actions. */
|
||||
$lang->program->PGMCommon = 'Program';
|
||||
$lang->program->PGMIndex = 'Home';
|
||||
$lang->program->PGMCreate = 'Create Program';
|
||||
$lang->program->PGMCreateGuide = 'Select Template';
|
||||
$lang->program->PGMEdit = 'Edit Program';
|
||||
$lang->program->PGMBrowse = 'Programs';
|
||||
$lang->program->PGMProduct = 'Products';
|
||||
$lang->program->PGMProject = 'Program Project List';
|
||||
$lang->program->PGMAll = 'All Programs';
|
||||
$lang->program->PGMStart = 'Start';
|
||||
$lang->program->PGMFinish = 'Finish';
|
||||
$lang->program->PGMSuspend = 'Suspend';
|
||||
$lang->program->PGMDelete = 'Delete';
|
||||
$lang->program->PGMClose = 'Close';
|
||||
$lang->program->PGMActivate = 'Activate';
|
||||
$lang->program->PGMExport = 'Export';
|
||||
$lang->program->PGMStakeholder = 'Stakeholder';
|
||||
$lang->program->createStakeholder = 'Create Stakeholder';
|
||||
$lang->program->unlinkStakeholder = 'Unlink Stakeholder';
|
||||
$lang->program->batchUnlinkStakeholders = 'Batch Remove Stakeholder';
|
||||
$lang->program->unlink = 'Unlink';
|
||||
$lang->program->morePGM = 'More Programs';
|
||||
$lang->program->confirmBatchUnlink = "Do you want to batch unlink these stakeholders?";
|
||||
$lang->program->stakeholderType = 'Stakeholder type';
|
||||
$lang->program->isStakeholderKey = 'Key stakeholder';
|
||||
$lang->program->importStakeholder = 'Import program';
|
||||
$lang->program->PGMManageMembers = 'Program Team';
|
||||
$lang->program->PGMParentBudget = 'Parent program surplus budget:';
|
||||
$lang->program->beyondParentBudget = 'The remaining budget of the owned program has been exceeded.';
|
||||
$lang->program->PGMBeginLetterParent = "Parent begin date: %s, begin date should be > = parent begin date.";
|
||||
$lang->program->PGMEndGreaterParent = "Parent end date: %s, end date should be < = parent end date.";
|
||||
$lang->program->PGMBeginGreateChild = "Child earliest begin: %s, parent begin date < = child earliest begin date.";
|
||||
$lang->program->PGMEndLetterChild = "Child latest end: %s, parent end date > = child latest end date.";
|
||||
$lang->program->PGMCloseErrorMessage = 'There are subprograms or projects that are not closed';
|
||||
$lang->program->authList['extend'] = 'Inherit(program privileges and company privileges)';
|
||||
$lang->program->authList['reset'] = 'Reset(program privileges only)';
|
||||
|
||||
$lang->program->stakeholderTypeList['inside'] = 'Inside';
|
||||
$lang->program->stakeholderTypeList['outside'] = 'Outside';
|
||||
$lang->program->statusList['wait'] = 'Waiting';
|
||||
$lang->program->statusList['doing'] = 'Doing';
|
||||
$lang->program->statusList['suspended'] = 'Suspended';
|
||||
$lang->program->statusList['closed'] = 'Closed';
|
||||
|
||||
/* Fields. */
|
||||
$lang->program->PGMName = 'Name';
|
||||
$lang->program->PGMTemplate = 'Template';
|
||||
$lang->program->PGMCategory = 'Type';
|
||||
$lang->program->PGMDesc = 'Description';
|
||||
$lang->program->PGMCopy = 'Copy Program';
|
||||
$lang->program->PGMStatus = 'Status';
|
||||
$lang->program->PGMPM = 'Manager';
|
||||
$lang->program->PGMBudget = 'Budget';
|
||||
$lang->program->PGMProgress = 'Progress';
|
||||
$lang->program->PGMChildren = 'Child';
|
||||
$lang->program->PGMParent = 'Parent';
|
||||
$lang->program->PGMAllInput = 'Input';
|
||||
$lang->program->PGMTeamCount = 'Team';
|
||||
$lang->program->PGMLongTime = 'Long-Term';
|
||||
|
||||
$lang->program->noPGM = 'No program.';
|
||||
$lang->program->PGMShowClosed = 'Closed programs.';
|
||||
$lang->program->PGMTips = 'If a parent item set is selected, products under that parent item set can be associated. If no item set is selected, a product with the same name as the item is created by default and associated with that item.';
|
||||
|
||||
$lang->program->PGMAclList['private'] = "Private (accessible to project portfolio holders and stakeholders, stakeholders can follow up maintenance)";
|
||||
$lang->program->PGMAclList['open'] = "Default(user who can visit the program can access it)";
|
||||
|
||||
$lang->program->subPGMAclList['private'] = "Private (accessible to this program set leader and stakeholders, stakeholders can follow up maintenance)";
|
||||
$lang->program->subPGMAclList['open'] = "Default(user who can visit the program can access it)";
|
||||
$lang->program->subPGMAclList['program'] = "Open within the program (accessible to all higher-level program directors and affiliates, as well as to this program director and affiliates)";
|
||||
|
||||
$lang->program->PGMAuthList['extend'] = 'Inherit(program privileges and company privileges)';
|
||||
$lang->program->PGMAuthList['reset'] = 'Reset(program privileges only)';
|
||||
|
||||
$lang->program->PGMFeatureBar['all'] = 'All';
|
||||
$lang->program->featureBar['all'] = 'All';
|
||||
|
||||
@@ -72,6 +72,10 @@ $lang->program->subAclList['private'] = "私有(本项目集负责人和干系
|
||||
$lang->program->subAclList['open'] = "全部公开(有项目集视图权限,即可访问)";
|
||||
$lang->program->subAclList['program'] = "项目集内公开 (所有上级项目集负责人和干系人、本项目集负责人和干系人可访问)";
|
||||
|
||||
$lang->program->subAcls['private'] = '私有';
|
||||
$lang->program->subAcls['open'] = '全部公开';
|
||||
$lang->program->subAcls['program'] = '项目集内公开';
|
||||
|
||||
$lang->program->authList['extend'] = '继承(取项目权限与组织权限的并集)';
|
||||
$lang->program->authList['reset'] = '重新定义(只取项目权限)';
|
||||
|
||||
|
||||
@@ -468,10 +468,10 @@ class project extends control
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
}
|
||||
}
|
||||
die(js::locate($this->session->PRJList, 'parent'));
|
||||
die(js::locate($this->session->projectList, 'parent'));
|
||||
}
|
||||
|
||||
$projectIdList = $this->post->projectIdList ? $this->post->projectIdList : die(js::locate($this->session->PRJList, 'parent'));
|
||||
$projectIdList = $this->post->projectIdList ? $this->post->projectIdList : die(js::locate($this->session->projectList, 'parent'));
|
||||
$projects = $this->dao->select('*')->from(TABLE_PROJECT)->where('id')->in($projectIdList)->fetchAll('id');
|
||||
|
||||
foreach($projects as $project) $appendPMUsers[$project->PM] = $project->PM;
|
||||
@@ -480,7 +480,7 @@ class project extends control
|
||||
$this->view->position[] = $this->lang->project->batchEdit;
|
||||
|
||||
$this->view->projects = $projects;
|
||||
$this->view->projectList = $this->project->getParentPairs();
|
||||
$this->view->programList = $this->program->getParentPairs();
|
||||
$this->view->PMUsers = $this->loadModel('user')->getPairs('noclosed|nodeleted|pmfirst', $appendPMUsers);
|
||||
|
||||
$this->display();
|
||||
|
||||
@@ -948,9 +948,9 @@ class projectModel extends model
|
||||
|
||||
foreach($data->projectIdList as $projectID)
|
||||
{
|
||||
$projectName = $data->names[$projectID];
|
||||
$projectID = (int)$projectID;
|
||||
$projectName = $data->names[$projectID];
|
||||
|
||||
$projectID = (int)$projectID;
|
||||
$projects[$projectID] = new stdClass();
|
||||
$projects[$projectID]->name = $projectName;
|
||||
$projects[$projectID]->parent = $data->parents[$projectID];
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php js::set('weekend', $config->project->weekend);?>
|
||||
<?php js::set('weekend', $config->execution->weekend);?>
|
||||
<?php js::set('linkedProjectsTip', $lang->project->linkedProjectsTip);?>
|
||||
<?php js::set('changeProgram', $lang->project->changeProgram);?>
|
||||
<?php $requiredFields = $config->project->edit->requiredFields;?>
|
||||
@@ -29,15 +29,15 @@
|
||||
<th class="w-150px <?php echo strpos($requiredFields, 'PM') !== false ? 'required' : '';?>"> <?php echo $lang->project->PM;?></th>
|
||||
<th class='w-120px required'><?php echo $lang->project->begin;?></th>
|
||||
<th class='w-120px required'><?php echo $lang->project->end;?></th>
|
||||
<th class='w-250px'><?php echo $lang->project->acl;?></th>
|
||||
<th class='w-260px'><?php echo $lang->project->acl;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($projects as $projectID => $project):?>
|
||||
<?php $aclList = $project->parent ? $lang->program->aclList : $lang->project->aclList;?>
|
||||
<?php $aclList = $project->parent ? $lang->program->subAcls : $lang->project->acls;?>
|
||||
<tr>
|
||||
<td><?php echo sprintf('%03d', $projectID) . html::hidden("projectIdList[$projectID]", $projectID);?></td>
|
||||
<td><?php echo html::select("parents[$projectID]", $projectList, $project->parent, "class='form-control chosen' data-id='$projectID' data-name='{$project->name}' data-parent='{$project->parent}'");?></td>
|
||||
<td><?php echo html::select("parents[$projectID]", $programList, $project->parent, "class='form-control chosen' data-id='$projectID' data-name='{$project->name}' data-parent='{$project->parent}'");?></td>
|
||||
<td title='<?php echo $project->name;?>'><?php echo html::input("names[$projectID]", $project->name, "class='form-control'");?></td>
|
||||
<td><?php echo html::select("PMs[$projectID]", $PMUsers, $project->PM, "class='form-control chosen'");?></td>
|
||||
<td>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<?php js::set('unmodifiableProducts', $unmodifiableProducts)?>
|
||||
<?php js::set('tip', $lang->project->notAllowRemoveProducts);?>
|
||||
<?php js::set('linkedProjectsTip', $lang->project->linkedProjectsTip);?>
|
||||
<?php $aclList = $project->parent ? $lang->program->aclList : $lang->project->aclList;?>
|
||||
<?php $aclList = $project->parent ? $lang->program->subAclList : $lang->project->aclList;?>
|
||||
<?php $requiredFields = $config->project->edit->requiredFields;?>
|
||||
<div id='mainContent' class='main-content'>
|
||||
<div class='center-block'>
|
||||
|
||||
@@ -141,7 +141,7 @@
|
||||
<?php foreach($products as $productID => $product):?>
|
||||
<?php $branchName = isset($branchGroups[$productID][$product->branch]) ? '/' . $branchGroups[$productID][$product->branch] : '';?>
|
||||
<div class="col-xs-6">
|
||||
<?php echo html::a($this->createLink('product', 'browse', "productID=$productID&branch=$product->branch"), "<i class='icon icon-cube text-muted'></i> " . $product->name . $branchName);?>
|
||||
<?php echo html::a($this->createLink('product', 'browse', "productID=$productID&branch=$product->branch"), "<i class='icon icon-product text-muted'></i> " . $product->name . $branchName);?>
|
||||
</div>
|
||||
<?php endforeach;?>
|
||||
</div>
|
||||
|
||||
@@ -636,6 +636,10 @@ class upgradeModel extends model
|
||||
$this->saveLogs('Execute 15_0');
|
||||
$this->execSQL($this->getUpgradeFile('15.0'));
|
||||
$this->appendExec('15_0');
|
||||
case '15_0_beta1':
|
||||
$this->saveLogs('Execute 15_0_beta1');
|
||||
$this->adjustBugOfProject();
|
||||
$this->appendExec('15_0_beta1');
|
||||
}
|
||||
|
||||
$this->deletePatch();
|
||||
@@ -4579,4 +4583,26 @@ class upgradeModel extends model
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adjust the project field of the zt_bug table.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function adjustBugOfProject()
|
||||
{
|
||||
$bugs = $this->dao->select('id,execution')->from(TABLE_BUG)->fetchAll('id');
|
||||
$executions = $this->dao->select('id,project')->from(TABLE_EXECUTION)->fetchAll('id');
|
||||
|
||||
foreach($bugs as $id => $bug)
|
||||
{
|
||||
if($bug->execution == 0) continue;
|
||||
$data = array();
|
||||
$data['project'] = $executions[$bug->execution]->project;
|
||||
if($data) $this->dao->update(TABLE_BUG)->data($data)->where('id')->eq($id)->exec();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,9 +16,12 @@
|
||||
$active = $methodName == 'task' ? ' btn-active-text' : '';
|
||||
common::printLink('user', 'task', "userID={$user->id}", $label, '', "class='btn btn-link $active'");
|
||||
|
||||
$label = "<span class='text'>{$lang->URCommon}</span>";
|
||||
$active = ($methodName == 'story' and $storyType == 'requirement') ? ' btn-active-text' : '';
|
||||
common::printLink('user', 'story', "userID={$user->id}&storyType=requirement", $label, '', "class='btn btn-link $active'");
|
||||
if($config->URAndSR)
|
||||
{
|
||||
$label = "<span class='text'>{$lang->URCommon}</span>";
|
||||
$active = ($methodName == 'story' and $storyType == 'requirement') ? ' btn-active-text' : '';
|
||||
common::printLink('user', 'story', "userID={$user->id}&storyType=requirement", $label, '', "class='btn btn-link $active'");
|
||||
}
|
||||
|
||||
$label = "<span class='text'>{$lang->SRCommon}</span>";
|
||||
$active = ($methodName == 'story' and $storyType == 'story') ? ' btn-active-text' : '';
|
||||
|
||||
Reference in New Issue
Block a user