@@ -8,3 +8,15 @@ REPLACE INTO `zt_lang` (`lang`, `module`, `section`, `key`, `value`, `system`, `
|
||||
UPDATE `zt_project` AS parent INNER JOIN (select `id`,`parent`,`attribute` from `zt_project` where `parent` != 0 and `type` = 'stage') AS child ON parent.`id` = child.`parent` SET parent.`attribute`='mix' where parent.`grade`=1 and parent.`type`='stage' and parent.`attribute` != child.`attribute`;
|
||||
|
||||
REPLACE INTO `zt_grouppriv` (SELECT `group`,`module`,'batchChangeStatus' FROM `zt_grouppriv` WHERE `module` = 'execution' AND `method` = 'batchEdit');
|
||||
|
||||
ALTER table `zt_stage` ADD `projectType` varchar(255) NOT NULL DEFAULT '' AFTER `type`;
|
||||
UPDATE `zt_stage` SET `projectType` = 'waterfall' WHERE `projectType` = '';
|
||||
|
||||
REPLACE INTO `zt_stage` (`name`,`percent`,`type`, `projectType`, `createdBy`,`createdDate`,`editedBy`,`editedDate`,`deleted`) VALUES
|
||||
('需求','10','request','waterfallplus','admin','2020-02-08 21:08:30','admin','2020-02-12 13:50:27','0'),
|
||||
('设计','10','design','waterfallplus','admin','2020-02-08 21:08:30','admin','2020-02-12 13:50:27','0'),
|
||||
('开发','50','dev','waterfallplus','admin','2020-02-08 21:08:30','admin','2020-02-12 13:50:27','0'),
|
||||
('测试','15','qa','waterfallplus','admin','2020-02-08 21:08:30','admin','2020-02-12 13:50:27','0'),
|
||||
('发布','10','release','waterfallplus','admin','2020-02-08 21:08:30','admin','2020-02-12 13:50:27','0'),
|
||||
('总结评审','5','review','waterfallplus','admin','2020-02-08 21:08:45','admin','2020-02-12 13:50:27','0');
|
||||
|
||||
|
||||
+13
-7
@@ -6391,13 +6391,19 @@ REPLACE INTO `zt_lang` (`lang`, `module`, `section`, `key`, `value`, `system`) V
|
||||
('all','stage','typeList','review','总结评审','1'),
|
||||
('all','stage','typeList','other','其他','1');
|
||||
|
||||
REPLACE INTO `zt_stage` (`name`,`percent`,`type`,`createdBy`,`createdDate`,`editedBy`,`editedDate`,`deleted`) VALUES
|
||||
('需求','10','request','admin','2020-02-08 21:08:30','admin','2020-02-12 13:50:27','0'),
|
||||
('设计','10','design','admin','2020-02-08 21:08:30','admin','2020-02-12 13:50:27','0'),
|
||||
('开发','50','dev','admin','2020-02-08 21:08:30','admin','2020-02-12 13:50:27','0'),
|
||||
('测试','15','qa','admin','2020-02-08 21:08:30','admin','2020-02-12 13:50:27','0'),
|
||||
('发布','10','release','admin','2020-02-08 21:08:30','admin','2020-02-12 13:50:27','0'),
|
||||
('总结评审','5','review','admin','2020-02-08 21:08:45','admin','2020-02-12 13:50:27','0');
|
||||
REPLACE INTO `zt_stage` (`name`,`percent`,`type`,`projectType`,`createdBy`,`createdDate`,`editedBy`,`editedDate`,`deleted`) VALUES
|
||||
('需求','10','request','waterfall','admin','2020-02-08 21:08:30','admin','2020-02-12 13:50:27','0'),
|
||||
('设计','10','design','waterfall','admin','2020-02-08 21:08:30','admin','2020-02-12 13:50:27','0'),
|
||||
('开发','50','dev','waterfall','admin','2020-02-08 21:08:30','admin','2020-02-12 13:50:27','0'),
|
||||
('测试','15','qa','waterfall','admin','2020-02-08 21:08:30','admin','2020-02-12 13:50:27','0'),
|
||||
('发布','10','release','waterfall','admin','2020-02-08 21:08:30','admin','2020-02-12 13:50:27','0'),
|
||||
('总结评审','5','review','waterfall','admin','2020-02-08 21:08:45','admin','2020-02-12 13:50:27','0');
|
||||
('需求','10','request','waterfallplus','admin','2020-02-08 21:08:30','admin','2020-02-12 13:50:27','0'),
|
||||
('设计','10','design','waterfallplus','admin','2020-02-08 21:08:30','admin','2020-02-12 13:50:27','0'),
|
||||
('开发','50','dev','waterfallplus','admin','2020-02-08 21:08:30','admin','2020-02-12 13:50:27','0'),
|
||||
('测试','15','qa','waterfallplus','admin','2020-02-08 21:08:30','admin','2020-02-12 13:50:27','0'),
|
||||
('发布','10','release','waterfallplus','admin','2020-02-08 21:08:30','admin','2020-02-12 13:50:27','0'),
|
||||
('总结评审','5','review','waterfallplus','admin','2020-02-08 21:08:45','admin','2020-02-12 13:50:27','0');
|
||||
|
||||
INSERT INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('system', 'custom', '', 'hourPoint', '0');
|
||||
INSERT INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('system', 'common', '', 'CRProduct', '1');
|
||||
|
||||
+23
-15
@@ -75,26 +75,34 @@ $lang->admin->menuList->switch['subMenu']['setmodule'] = array('link' => "{$lang
|
||||
|
||||
$lang->admin->menuList->switch['menuOrder']['5'] = 'setmodule';
|
||||
|
||||
$lang->admin->menuList->model['subMenu']['common'] = array('link' => "{$lang->globalSetting}|custom|required|module=project", 'subModule' => 'custom,subject,holiday');
|
||||
$lang->admin->menuList->model['subMenu']['scrum'] = array('link' => "{$lang->scrumModel}|auditcl|scrumbrowse|", 'subModule' => 'auditcl');
|
||||
$lang->admin->menuList->model['subMenu']['waterfall'] = array('link' => "{$lang->waterfallModel}|stage|settype|", 'subModule' => 'stage');
|
||||
$lang->admin->menuList->model['subMenu']['common'] = array('link' => "{$lang->globalSetting}|custom|required|module=project", 'subModule' => 'custom,subject,holiday,stage', 'exclude' => 'stage-browse,stage-plusbrowse,stage-create,stage-edit,stage-batchcreate');
|
||||
$lang->admin->menuList->model['subMenu']['scrum'] = array('link' => "{$lang->scrumModel}|auditcl|scrumbrowse|", 'subModule' => 'auditcl');
|
||||
$lang->admin->menuList->model['subMenu']['waterfall'] = array('link' => "{$lang->waterfallModel}|stage|browse|", 'subModule' => 'stage', 'exclude' => 'stage-settype,stage-plusbrowse');
|
||||
$lang->admin->menuList->model['subMenu']['agileplus'] = array('link' => "{$lang->agilePlusModel}|auditcl|agileplusbrowse|", 'subModule' => 'auditcl');
|
||||
$lang->admin->menuList->model['subMenu']['waterfallplus'] = array('link' => "{$lang->waterfallPlusModel}|stage|plusbrowse|", 'subModule' => 'stage', 'exclude' => 'stage-settype,stage-browse');
|
||||
|
||||
$lang->admin->menuList->model['menuOrder']['5'] = 'common';
|
||||
$lang->admin->menuList->model['menuOrder']['10'] = 'scrum';
|
||||
$lang->admin->menuList->model['menuOrder']['15'] = 'waterfall';
|
||||
$lang->admin->menuList->model['menuOrder']['20'] = 'agileplus';
|
||||
$lang->admin->menuList->model['menuOrder']['25'] = 'waterfallplus';
|
||||
|
||||
$lang->admin->menuList->model['tabMenu']['common']['project'] = array('link' => "{$lang->project->common}|custom|required|module=project", 'alias' => 'set', 'exclude' => 'custom', 'links' => array('custom|set|'));
|
||||
$lang->admin->menuList->model['tabMenu']['common']['build'] = array('link' => "{$lang->build->common}|custom|required|module=build", 'alias' => 'set', 'exclude' => 'custom');
|
||||
$lang->admin->menuList->model['tabMenu']['common']['flow'] = array('link' => "{$lang->custom->flow}|custom|flow|", 'divider' => true);
|
||||
$lang->admin->menuList->model['tabMenu']['common']['code'] = array('link' => "{$lang->code}|custom|code|");
|
||||
$lang->admin->menuList->model['tabMenu']['common']['hours'] = array('link' => "{$lang->workingHour}|custom|hours|", 'subModule' => 'holiday', 'links' => array('holiday|browse|'));
|
||||
$lang->admin->menuList->model['tabMenu']['waterfall']['stage'] = array('link' => "{$lang->stage->common}|stage|settype|", 'subModule' => 'stage', 'links' => array('stage|browse|'));
|
||||
$lang->admin->menuList->model['tabMenu']['menuOrder']['common']['5'] = 'project';
|
||||
$lang->admin->menuList->model['tabMenu']['menuOrder']['common']['10'] = 'build';
|
||||
$lang->admin->menuList->model['tabMenu']['menuOrder']['common']['35'] = 'flow';
|
||||
$lang->admin->menuList->model['tabMenu']['menuOrder']['common']['40'] = 'code';
|
||||
$lang->admin->menuList->model['tabMenu']['menuOrder']['common']['45'] = 'hours';
|
||||
$lang->admin->menuList->model['tabMenu']['menuOrder']['waterfall']['5'] = 'stage';
|
||||
$lang->admin->menuList->model['tabMenu']['common']['project'] = array('link' => "{$lang->project->common}|custom|required|module=project", 'alias' => 'set', 'exclude' => 'custom', 'links' => array('custom|set|'));
|
||||
$lang->admin->menuList->model['tabMenu']['common']['stage'] = array('link' => "{$lang->stage->common}|stage|settype|", 'subModule' => 'stage', 'links' => array('stage|browse|'));
|
||||
$lang->admin->menuList->model['tabMenu']['common']['build'] = array('link' => "{$lang->build->common}|custom|required|module=build", 'alias' => 'set', 'exclude' => 'custom');
|
||||
$lang->admin->menuList->model['tabMenu']['common']['flow'] = array('link' => "{$lang->custom->flow}|custom|flow|", 'divider' => true);
|
||||
$lang->admin->menuList->model['tabMenu']['common']['code'] = array('link' => "{$lang->code}|custom|code|");
|
||||
$lang->admin->menuList->model['tabMenu']['common']['hours'] = array('link' => "{$lang->workingHour}|custom|hours|", 'subModule' => 'holiday', 'links' => array('holiday|browse|'));
|
||||
$lang->admin->menuList->model['tabMenu']['waterfall']['stage'] = array('link' => "{$lang->stage->common}|stage|browse|", 'subModule' => 'stage', 'exclude' => 'stage-plusbrowse');
|
||||
$lang->admin->menuList->model['tabMenu']['waterfallplus']['stage'] = array('link' => "{$lang->stage->common}|stage|plusbrowse|", 'subModule' => 'stage', 'exclude' => 'stage-browse');
|
||||
$lang->admin->menuList->model['tabMenu']['menuOrder']['common']['5'] = 'project';
|
||||
$lang->admin->menuList->model['tabMenu']['menuOrder']['common']['7'] = 'stage';
|
||||
$lang->admin->menuList->model['tabMenu']['menuOrder']['common']['10'] = 'build';
|
||||
$lang->admin->menuList->model['tabMenu']['menuOrder']['common']['35'] = 'flow';
|
||||
$lang->admin->menuList->model['tabMenu']['menuOrder']['common']['40'] = 'code';
|
||||
$lang->admin->menuList->model['tabMenu']['menuOrder']['common']['45'] = 'hours';
|
||||
$lang->admin->menuList->model['tabMenu']['menuOrder']['waterfall']['5'] = 'stage';
|
||||
$lang->admin->menuList->model['tabMenu']['menuOrder']['waterfallplus']['5'] = 'stage';
|
||||
|
||||
$lang->admin->menuList->feature['subMenu']['my'] = array('link' => "{$lang->my->common}|custom|set|module=todo&field=priList", 'exclude' => 'set,required');
|
||||
$lang->admin->menuList->feature['subMenu']['product'] = array('link' => "{$lang->productCommon}|custom|required|module=product", 'exclude' => 'set,required', 'alias' => 'browsestoryconcept,product');
|
||||
|
||||
+38
-37
@@ -49,43 +49,44 @@ $lang->runInfo = "<div class='row'><div class='u-1 a-center' id='debugbar
|
||||
$lang->agreement = "I have read and agreed to the terms and conditions of <a href='http://zpl.pub/page/zplv12.html' target='_blank'> Z PUBLIC LICENSE 1.2 </a>. <span class='text-danger'>Without authorization, I should not remove, hide or cover any logos/links of ZenTao.</span>";
|
||||
$lang->designedByAIUX = "<a href='https://api.zentao.net/goto.php?item=aiux' class='link-aiux' target='_blank'><i class='icon icon-aiux'></i> AIUX</a>";
|
||||
|
||||
$lang->reset = 'Zurücksetzen';
|
||||
$lang->cancel = 'Abbrechen';
|
||||
$lang->refresh = 'Aktualisieren';
|
||||
$lang->refreshIcon = "<i title='$lang->refresh' class='icon icon-refresh'></i>";
|
||||
$lang->create = 'Create';
|
||||
$lang->edit = 'Bearbeiten';
|
||||
$lang->delete = 'Löschen';
|
||||
$lang->activate = 'Activate';
|
||||
$lang->close = 'Schließen';
|
||||
$lang->unlink = 'Entfernen';
|
||||
$lang->import = 'Importieren';
|
||||
$lang->export = 'Exportieren';
|
||||
$lang->setFileName = 'Dateiame';
|
||||
$lang->submitting = 'Speichern...';
|
||||
$lang->save = 'Speichern';
|
||||
$lang->confirm = 'Bestätigen';
|
||||
$lang->preview = 'Ansehen';
|
||||
$lang->goback = 'Zurück';
|
||||
$lang->goPC = 'PC';
|
||||
$lang->more = 'Mehr';
|
||||
$lang->moreLink = 'MORE';
|
||||
$lang->day = 'Tag';
|
||||
$lang->customConfig = 'Custom Config';
|
||||
$lang->public = 'Öffentlich';
|
||||
$lang->trunk = 'Trunk';
|
||||
$lang->sort = 'Sortieren';
|
||||
$lang->required = 'Pflicht';
|
||||
$lang->noData = 'Kein Datensatz';
|
||||
$lang->fullscreen = 'Fullscreen';
|
||||
$lang->retrack = 'Retrack';
|
||||
$lang->whitelist = 'Weiße Liste';
|
||||
$lang->globalSetting = 'Common';
|
||||
$lang->waterfallModel = 'Waterfall';
|
||||
$lang->scrumModel = 'Scrum';
|
||||
$lang->agilePlusModel = 'Agile Plus';
|
||||
$lang->all = 'All';
|
||||
$lang->viewDetails = 'View Details';
|
||||
$lang->reset = 'Zurücksetzen';
|
||||
$lang->cancel = 'Abbrechen';
|
||||
$lang->refresh = 'Aktualisieren';
|
||||
$lang->refreshIcon = "<i title='$lang->refresh' class='icon icon-refresh'></i>";
|
||||
$lang->create = 'Create';
|
||||
$lang->edit = 'Bearbeiten';
|
||||
$lang->delete = 'Löschen';
|
||||
$lang->activate = 'Activate';
|
||||
$lang->close = 'Schließen';
|
||||
$lang->unlink = 'Entfernen';
|
||||
$lang->import = 'Importieren';
|
||||
$lang->export = 'Exportieren';
|
||||
$lang->setFileName = 'Dateiame';
|
||||
$lang->submitting = 'Speichern...';
|
||||
$lang->save = 'Speichern';
|
||||
$lang->confirm = 'Bestätigen';
|
||||
$lang->preview = 'Ansehen';
|
||||
$lang->goback = 'Zurück';
|
||||
$lang->goPC = 'PC';
|
||||
$lang->more = 'Mehr';
|
||||
$lang->moreLink = 'MORE';
|
||||
$lang->day = 'Tag';
|
||||
$lang->customConfig = 'Custom Config';
|
||||
$lang->public = 'Öffentlich';
|
||||
$lang->trunk = 'Trunk';
|
||||
$lang->sort = 'Sortieren';
|
||||
$lang->required = 'Pflicht';
|
||||
$lang->noData = 'Kein Datensatz';
|
||||
$lang->fullscreen = 'Fullscreen';
|
||||
$lang->retrack = 'Retrack';
|
||||
$lang->whitelist = 'Weiße Liste';
|
||||
$lang->globalSetting = 'Common';
|
||||
$lang->waterfallModel = 'Waterfall';
|
||||
$lang->scrumModel = 'Scrum';
|
||||
$lang->agilePlusModel = 'Agile Plus';
|
||||
$lang->waterfallPlusModel = 'Waterfall Plus';
|
||||
$lang->all = 'All';
|
||||
$lang->viewDetails = 'View Details';
|
||||
|
||||
$lang->actions = 'Aktionen';
|
||||
$lang->restore = 'Wiederherstellen';
|
||||
|
||||
+38
-37
@@ -49,43 +49,44 @@ $lang->runInfo = "<div class='row'><div class='u-1 a-center' id='debugbar
|
||||
$lang->agreement = "I have read and agreed to the terms and conditions. <span class='text-danger'>Without authorization, I should not remove, hide or cover any logos/links of ZenTao.</span>";
|
||||
$lang->designedByAIUX = "<a href='https://api.zentao.net/goto.php?item=aiux' class='link-aiux' target='_blank'><i class='icon icon-aiux'></i> AIUX</a>";
|
||||
|
||||
$lang->reset = 'Reset';
|
||||
$lang->cancel = 'Cancel';
|
||||
$lang->refresh = 'Refresh';
|
||||
$lang->refreshIcon = "<i title='$lang->refresh' class='icon icon-refresh'></i>";
|
||||
$lang->create = 'Create';
|
||||
$lang->edit = 'Edit';
|
||||
$lang->delete = 'Delete';
|
||||
$lang->activate = 'Activate';
|
||||
$lang->close = 'Close';
|
||||
$lang->unlink = 'Unlink';
|
||||
$lang->import = 'Import';
|
||||
$lang->export = 'Export';
|
||||
$lang->setFileName = 'File Name';
|
||||
$lang->submitting = 'Saving...';
|
||||
$lang->save = 'Save';
|
||||
$lang->confirm = 'Confirm';
|
||||
$lang->preview = 'View';
|
||||
$lang->goback = 'Back';
|
||||
$lang->goPC = 'PC';
|
||||
$lang->more = 'More';
|
||||
$lang->moreLink = 'MORE';
|
||||
$lang->day = ' Day';
|
||||
$lang->customConfig = 'Custom Config';
|
||||
$lang->public = 'Public';
|
||||
$lang->trunk = 'Trunk';
|
||||
$lang->sort = 'Order';
|
||||
$lang->required = 'Required';
|
||||
$lang->noData = 'No data.';
|
||||
$lang->fullscreen = 'Fullscreen';
|
||||
$lang->retrack = 'Retrack';
|
||||
$lang->whitelist = 'Access whitelist';
|
||||
$lang->globalSetting = 'Common';
|
||||
$lang->waterfallModel = 'Waterfall';
|
||||
$lang->scrumModel = 'Scrum';
|
||||
$lang->agilePlusModel = 'Agile Plus';
|
||||
$lang->all = 'All';
|
||||
$lang->viewDetails = 'View Details';
|
||||
$lang->reset = 'Reset';
|
||||
$lang->cancel = 'Cancel';
|
||||
$lang->refresh = 'Refresh';
|
||||
$lang->refreshIcon = "<i title='$lang->refresh' class='icon icon-refresh'></i>";
|
||||
$lang->create = 'Create';
|
||||
$lang->edit = 'Edit';
|
||||
$lang->delete = 'Delete';
|
||||
$lang->activate = 'Activate';
|
||||
$lang->close = 'Close';
|
||||
$lang->unlink = 'Unlink';
|
||||
$lang->import = 'Import';
|
||||
$lang->export = 'Export';
|
||||
$lang->setFileName = 'File Name';
|
||||
$lang->submitting = 'Saving...';
|
||||
$lang->save = 'Save';
|
||||
$lang->confirm = 'Confirm';
|
||||
$lang->preview = 'View';
|
||||
$lang->goback = 'Back';
|
||||
$lang->goPC = 'PC';
|
||||
$lang->more = 'More';
|
||||
$lang->moreLink = 'MORE';
|
||||
$lang->day = ' Day';
|
||||
$lang->customConfig = 'Custom Config';
|
||||
$lang->public = 'Public';
|
||||
$lang->trunk = 'Trunk';
|
||||
$lang->sort = 'Order';
|
||||
$lang->required = 'Required';
|
||||
$lang->noData = 'No data.';
|
||||
$lang->fullscreen = 'Fullscreen';
|
||||
$lang->retrack = 'Retrack';
|
||||
$lang->whitelist = 'Access whitelist';
|
||||
$lang->globalSetting = 'Common';
|
||||
$lang->waterfallModel = 'Waterfall';
|
||||
$lang->scrumModel = 'Scrum';
|
||||
$lang->agilePlusModel = 'Agile Plus';
|
||||
$lang->waterfallPlusModel = 'Waterfall Plus';
|
||||
$lang->all = 'All';
|
||||
$lang->viewDetails = 'View Details';
|
||||
|
||||
$lang->actions = 'Action';
|
||||
$lang->restore = 'Reset';
|
||||
|
||||
+38
-37
@@ -49,43 +49,44 @@ $lang->runInfo = "<div class='row'><div class='u-1 a-center' id='debugbar
|
||||
$lang->agreement = "J'ai lu et j'accepte les termes et conditions de la <a href='http://zpl.pub/page/zplv12.html' target='_blank'> Z PUBLIC LICENSE 1.2 </a>. <span class='text-danger'>Sans autorisation, je ne dois pas supprimer, masquer ou couvrir les logos / liens de ZenTao.</span>";
|
||||
$lang->designedByAIUX = "<a href='https://api.zentao.net/goto.php?item=aiux' class='link-aiux' target='_blank'><i class='icon icon-aiux'></i> AIUX</a>";
|
||||
|
||||
$lang->reset = 'Réinitialiser';
|
||||
$lang->cancel = 'Annuler';
|
||||
$lang->refresh = 'Rafraichir';
|
||||
$lang->refreshIcon = "<i title='$lang->refresh' class='icon icon-refresh'></i>";
|
||||
$lang->create = 'Create';
|
||||
$lang->edit = 'Editer';
|
||||
$lang->delete = 'Supprimer';
|
||||
$lang->activate = 'Activate';
|
||||
$lang->close = 'Fermer';
|
||||
$lang->unlink = 'Dissocier';
|
||||
$lang->import = 'Importer';
|
||||
$lang->export = 'Exporter';
|
||||
$lang->setFileName = 'Nom du Fichier';
|
||||
$lang->submitting = 'Enregistrement...';
|
||||
$lang->save = 'Sauvegarde';
|
||||
$lang->confirm = 'Confirmer';
|
||||
$lang->preview = 'Consulter';
|
||||
$lang->goback = 'Retour';
|
||||
$lang->goPC = 'PC';
|
||||
$lang->more = 'Plus';
|
||||
$lang->moreLink = 'MORE';
|
||||
$lang->day = 'Jour';
|
||||
$lang->customConfig = 'Personnalisation';
|
||||
$lang->public = 'Public';
|
||||
$lang->trunk = 'Tronc';
|
||||
$lang->sort = 'Ordre';
|
||||
$lang->required = 'Obligatoire';
|
||||
$lang->noData = 'No data.';
|
||||
$lang->fullscreen = 'Plein Ecran';
|
||||
$lang->retrack = 'Réduire';
|
||||
$lang->whitelist = 'Liste blanche';
|
||||
$lang->globalSetting = 'Common';
|
||||
$lang->waterfallModel = 'Waterfall';
|
||||
$lang->scrumModel = 'Scrum';
|
||||
$lang->agilePlusModel = 'Agile Plus';
|
||||
$lang->all = 'All';
|
||||
$lang->viewDetails = 'View Details';
|
||||
$lang->reset = 'Réinitialiser';
|
||||
$lang->cancel = 'Annuler';
|
||||
$lang->refresh = 'Rafraichir';
|
||||
$lang->refreshIcon = "<i title='$lang->refresh' class='icon icon-refresh'></i>";
|
||||
$lang->create = 'Create';
|
||||
$lang->edit = 'Editer';
|
||||
$lang->delete = 'Supprimer';
|
||||
$lang->activate = 'Activate';
|
||||
$lang->close = 'Fermer';
|
||||
$lang->unlink = 'Dissocier';
|
||||
$lang->import = 'Importer';
|
||||
$lang->export = 'Exporter';
|
||||
$lang->setFileName = 'Nom du Fichier';
|
||||
$lang->submitting = 'Enregistrement...';
|
||||
$lang->save = 'Sauvegarde';
|
||||
$lang->confirm = 'Confirmer';
|
||||
$lang->preview = 'Consulter';
|
||||
$lang->goback = 'Retour';
|
||||
$lang->goPC = 'PC';
|
||||
$lang->more = 'Plus';
|
||||
$lang->moreLink = 'MORE';
|
||||
$lang->day = 'Jour';
|
||||
$lang->customConfig = 'Personnalisation';
|
||||
$lang->public = 'Public';
|
||||
$lang->trunk = 'Tronc';
|
||||
$lang->sort = 'Ordre';
|
||||
$lang->required = 'Obligatoire';
|
||||
$lang->noData = 'No data.';
|
||||
$lang->fullscreen = 'Plein Ecran';
|
||||
$lang->retrack = 'Réduire';
|
||||
$lang->whitelist = 'Liste blanche';
|
||||
$lang->globalSetting = 'Common';
|
||||
$lang->waterfallModel = 'Waterfall';
|
||||
$lang->scrumModel = 'Scrum';
|
||||
$lang->agilePlusModel = 'Agile Plus';
|
||||
$lang->waterfallPlusModel = 'Waterfall Plus';
|
||||
$lang->all = 'All';
|
||||
$lang->viewDetails = 'View Details';
|
||||
|
||||
$lang->actions = 'Action';
|
||||
$lang->restore = 'Réinitialiser';
|
||||
|
||||
@@ -49,43 +49,44 @@ $lang->runInfo = "<div class='row'><div class='u-1 a-center' id='debugbar
|
||||
$lang->agreement = "已阅读并同意。<span class='text-danger'>未经许可,不得去除、隐藏或遮掩禅道软件的任何标志及链接。</span>";
|
||||
$lang->designedByAIUX = "<a href='https://api.zentao.net/goto.php?item=aiux' class='link-aiux' target='_blank'><i class='icon icon-aiux'></i> 艾体验设计</a>";
|
||||
|
||||
$lang->reset = '重填';
|
||||
$lang->cancel = '取消';
|
||||
$lang->refresh = '刷新';
|
||||
$lang->refreshIcon = "<i title='$lang->refresh' class='icon icon-refresh'></i>";
|
||||
$lang->create = '新建';
|
||||
$lang->edit = '编辑';
|
||||
$lang->delete = '删除';
|
||||
$lang->activate = '激活';
|
||||
$lang->close = '关闭';
|
||||
$lang->unlink = '移除';
|
||||
$lang->import = '导入';
|
||||
$lang->export = '导出';
|
||||
$lang->setFileName = '文件名:';
|
||||
$lang->submitting = '稍候...';
|
||||
$lang->save = '保存';
|
||||
$lang->confirm = '确认';
|
||||
$lang->preview = '查看';
|
||||
$lang->goback = '返回';
|
||||
$lang->goPC = 'PC版';
|
||||
$lang->more = '更多';
|
||||
$lang->moreLink = 'More';
|
||||
$lang->day = '天';
|
||||
$lang->customConfig = '自定义';
|
||||
$lang->public = '公共';
|
||||
$lang->trunk = '主干';
|
||||
$lang->sort = '排序';
|
||||
$lang->required = '必填';
|
||||
$lang->noData = '暂无';
|
||||
$lang->fullscreen = '全屏';
|
||||
$lang->retrack = '收起';
|
||||
$lang->whitelist = '访问白名单';
|
||||
$lang->globalSetting = '通用';
|
||||
$lang->waterfallModel = '瀑布模型';
|
||||
$lang->scrumModel = '敏捷模型';
|
||||
$lang->agilePlusModel = '融合敏捷模型';
|
||||
$lang->all = '所有';
|
||||
$lang->viewDetails = '查看详情';
|
||||
$lang->reset = '重填';
|
||||
$lang->cancel = '取消';
|
||||
$lang->refresh = '刷新';
|
||||
$lang->refreshIcon = "<i title='$lang->refresh' class='icon icon-refresh'></i>";
|
||||
$lang->create = '新建';
|
||||
$lang->edit = '编辑';
|
||||
$lang->delete = '删除';
|
||||
$lang->activate = '激活';
|
||||
$lang->close = '关闭';
|
||||
$lang->unlink = '移除';
|
||||
$lang->import = '导入';
|
||||
$lang->export = '导出';
|
||||
$lang->setFileName = '文件名:';
|
||||
$lang->submitting = '稍候...';
|
||||
$lang->save = '保存';
|
||||
$lang->confirm = '确认';
|
||||
$lang->preview = '查看';
|
||||
$lang->goback = '返回';
|
||||
$lang->goPC = 'PC版';
|
||||
$lang->more = '更多';
|
||||
$lang->moreLink = 'More';
|
||||
$lang->day = '天';
|
||||
$lang->customConfig = '自定义';
|
||||
$lang->public = '公共';
|
||||
$lang->trunk = '主干';
|
||||
$lang->sort = '排序';
|
||||
$lang->required = '必填';
|
||||
$lang->noData = '暂无';
|
||||
$lang->fullscreen = '全屏';
|
||||
$lang->retrack = '收起';
|
||||
$lang->whitelist = '访问白名单';
|
||||
$lang->globalSetting = '通用';
|
||||
$lang->waterfallModel = '瀑布模型';
|
||||
$lang->scrumModel = '敏捷模型';
|
||||
$lang->agilePlusModel = '融合敏捷模型';
|
||||
$lang->waterfallPlusModel = '融合瀑布模型';
|
||||
$lang->all = '所有';
|
||||
$lang->viewDetails = '查看详情';
|
||||
|
||||
$lang->actions = '操作';
|
||||
$lang->restore = '恢复默认';
|
||||
|
||||
@@ -399,6 +399,7 @@ $lang->resource->stage->batchCreate = 'batchCreate';
|
||||
$lang->resource->stage->edit = 'edit';
|
||||
$lang->resource->stage->setType = 'setType';
|
||||
$lang->resource->stage->delete = 'delete';
|
||||
$lang->resource->stage->plusBrowse = 'plusBrowse';
|
||||
|
||||
$lang->stage->methodOrder[5] = 'browse';
|
||||
$lang->stage->methodOrder[10] = 'create';
|
||||
@@ -406,6 +407,7 @@ $lang->stage->methodOrder[15] = 'batchCreate';
|
||||
$lang->stage->methodOrder[20] = 'edit';
|
||||
$lang->stage->methodOrder[25] = 'setType';
|
||||
$lang->stage->methodOrder[30] = 'delete';
|
||||
$lang->stage->methodOrder[35] = 'plusBrowse';
|
||||
|
||||
/* Program. */
|
||||
$lang->resource->program = new stdclass();
|
||||
|
||||
@@ -211,7 +211,7 @@ class programplan extends control
|
||||
$this->view->productList = $productList;
|
||||
$this->view->project = $project;
|
||||
$this->view->productID = $productID ? $productID : key($productList);
|
||||
$this->view->stages = empty($planID) ? $this->loadModel('stage')->getStages('id_asc') : array();
|
||||
$this->view->stages = empty($planID) ? $this->loadModel('stage')->getStages('id_asc', 0, $project->model) : array();
|
||||
$this->view->programPlan = $programPlan;
|
||||
$this->view->plans = empty($executions) ? $plans : $executions;
|
||||
$this->view->planID = $planID;
|
||||
|
||||
+44
-10
@@ -15,13 +15,19 @@ class stage extends control
|
||||
* Browse stages.
|
||||
*
|
||||
* @param string $orderBy
|
||||
* @param string $type
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function browse($orderBy = "id_asc")
|
||||
public function browse($orderBy = "id_asc", $type = 'waterfall')
|
||||
{
|
||||
$this->view->stages = $this->stage->getStages($orderBy);
|
||||
if($type == 'waterfallplus') $this->locate($this->createLink('stage', 'plusBrowse', "orderBy=$orderBy&type=waterfallplus"));
|
||||
|
||||
$this->stage->setMenu($type);
|
||||
|
||||
$this->view->stages = $this->stage->getStages($orderBy, 0, $type);
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->type = $type;
|
||||
$this->view->title = $this->lang->stage->common . $this->lang->colon . $this->lang->stage->browse;
|
||||
$this->view->position[] = $this->lang->stage->common;
|
||||
$this->view->position[] = $this->lang->stage->browse;
|
||||
@@ -30,16 +36,41 @@ class stage extends control
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a stage.
|
||||
* Browse stages.
|
||||
*
|
||||
* @param string $orderBy
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create()
|
||||
public function plusBrowse($orderBy = "id_asc", $type = 'waterfallplus')
|
||||
{
|
||||
if($type == 'waterfall') $this->locate($this->createLink('stage', 'browse', "orderBy=$orderBy&type=waterfall"));
|
||||
|
||||
$this->stage->setMenu($type);
|
||||
|
||||
$this->view->stages = $this->stage->getStages($orderBy, 0, $type);
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->type = $type;
|
||||
$this->view->title = $this->lang->stage->common . $this->lang->colon . $this->lang->stage->browse;
|
||||
$this->view->position[] = $this->lang->stage->common;
|
||||
$this->view->position[] = $this->lang->stage->browse;
|
||||
|
||||
$this->display('stage', 'browse');
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a stage.
|
||||
*
|
||||
* @param string $type
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create($type = 'waterfall')
|
||||
{
|
||||
$this->stage->setMenu($type);
|
||||
if($_POST)
|
||||
{
|
||||
$stageID = $this->stage->create();
|
||||
$stageID = $this->stage->create($type);
|
||||
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
|
||||
|
||||
$response['result'] = 'success';
|
||||
@@ -52,7 +83,7 @@ class stage extends control
|
||||
}
|
||||
|
||||
$this->loadModel('action')->create('stage', $stageID, 'Opened');
|
||||
$response['locate'] = inlink('browse');
|
||||
$response['locate'] = inlink($type == 'waterfall' ? 'browse' : 'plusBrowse', "orderBy=id_asc&type=$type");
|
||||
return $this->send($response);
|
||||
}
|
||||
|
||||
@@ -66,14 +97,16 @@ class stage extends control
|
||||
/**
|
||||
* Batch create stages.
|
||||
*
|
||||
* @param string $type
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function batchCreate()
|
||||
public function batchCreate($type = 'waterfall')
|
||||
{
|
||||
$this->stage->setMenu($type);
|
||||
if($_POST)
|
||||
{
|
||||
$this->stage->batchCreate();
|
||||
$this->stage->batchCreate($type);
|
||||
|
||||
$response['result'] = 'success';
|
||||
$response['message'] = $this->lang->saveSuccess;
|
||||
@@ -84,7 +117,7 @@ class stage extends control
|
||||
return $this->send($response);
|
||||
}
|
||||
|
||||
$response['locate'] = inlink('browse');
|
||||
$response['locate'] = inlink($type == 'waterfall' ? 'browse' : 'plusBrowse', "orderBy=id_asc&type=$type");
|
||||
return $this->send($response);
|
||||
}
|
||||
|
||||
@@ -105,6 +138,7 @@ class stage extends control
|
||||
public function edit($stageID = 0)
|
||||
{
|
||||
$stage = $this->stage->getByID($stageID);
|
||||
$this->stage->setMenu($stage->projectType);
|
||||
if($_POST)
|
||||
{
|
||||
$changes = $this->stage->update($stageID);
|
||||
@@ -120,7 +154,7 @@ class stage extends control
|
||||
|
||||
$actionID = $this->loadModel('action')->create('stage', $stageID, 'Edited');
|
||||
if(!empty($changes)) $this->action->logHistory($actionID, $changes);
|
||||
$response['locate'] = inlink('browse');
|
||||
$response['locate'] = inlink($type == 'waterfall' ? 'browse' : 'plusBrowse', "orderBy=id_asc&type=$stage->projectType");
|
||||
return $this->send($response);
|
||||
}
|
||||
|
||||
|
||||
@@ -10,12 +10,13 @@
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* Actions. */
|
||||
$lang->stage->browse = 'Stage List';
|
||||
$lang->stage->browse = 'Waterfall Stage List';
|
||||
$lang->stage->create = 'Create Stage';
|
||||
$lang->stage->batchCreate = 'Batch Create';
|
||||
$lang->stage->edit = 'Edit';
|
||||
$lang->stage->delete = 'Delete';
|
||||
$lang->stage->view = 'Details';
|
||||
$lang->stage->plusBrowse = 'Waterfall Plus Stage List';
|
||||
|
||||
/* Fields. */
|
||||
$lang->stage->id = 'ID';
|
||||
|
||||
@@ -10,12 +10,13 @@
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* Actions. */
|
||||
$lang->stage->browse = 'Stage List';
|
||||
$lang->stage->browse = 'Waterfall Stage List';
|
||||
$lang->stage->create = 'Create Stage';
|
||||
$lang->stage->batchCreate = 'Batch Create';
|
||||
$lang->stage->edit = 'Edit';
|
||||
$lang->stage->delete = 'Delete';
|
||||
$lang->stage->view = 'Details';
|
||||
$lang->stage->plusBrowse = 'Waterfall Plus Stage List';
|
||||
|
||||
/* Fields. */
|
||||
$lang->stage->id = 'ID';
|
||||
|
||||
@@ -10,12 +10,13 @@
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* Actions. */
|
||||
$lang->stage->browse = 'Stage List';
|
||||
$lang->stage->browse = 'Waterfall Stage List';
|
||||
$lang->stage->create = 'Create Stage';
|
||||
$lang->stage->batchCreate = 'Batch Create';
|
||||
$lang->stage->edit = 'Edit';
|
||||
$lang->stage->delete = 'Delete';
|
||||
$lang->stage->view = 'Details';
|
||||
$lang->stage->plusBrowse = 'Waterfall Plus Stage List';
|
||||
|
||||
/* Fields. */
|
||||
$lang->stage->id = 'ID';
|
||||
|
||||
@@ -10,12 +10,13 @@
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* Actions. */
|
||||
$lang->stage->browse = '阶段列表';
|
||||
$lang->stage->browse = '瀑布阶段列表';
|
||||
$lang->stage->create = '新建';
|
||||
$lang->stage->batchCreate = '批量新建';
|
||||
$lang->stage->edit = '编辑';
|
||||
$lang->stage->delete = '删除';
|
||||
$lang->stage->view = '阶段详情';
|
||||
$lang->stage->plusBrowse = '融合瀑布阶段列表';
|
||||
|
||||
/* Fields. */
|
||||
$lang->stage->id = '编号';
|
||||
|
||||
+38
-10
@@ -19,14 +19,15 @@ class stageModel extends model
|
||||
* @access public
|
||||
* @return int|bool
|
||||
*/
|
||||
public function create()
|
||||
public function create($type = 'waterfall')
|
||||
{
|
||||
$stage = fixer::input('post')
|
||||
->setDefault('projectType', $type)
|
||||
->add('createdBy', $this->app->user->account)
|
||||
->add('createdDate', helper::today())
|
||||
->get();
|
||||
|
||||
$totalPercent = $this->getTotalPercent();
|
||||
$totalPercent = $this->getTotalPercent($type);
|
||||
|
||||
if(!is_numeric($stage->percent)) return dao::$errors['message'][] = $this->lang->stage->error->notNum;
|
||||
if(round($totalPercent + $stage->percent) > 100) return dao::$errors['message'][] = $this->lang->stage->error->percentOver;
|
||||
@@ -48,11 +49,11 @@ class stageModel extends model
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function batchCreate()
|
||||
public function batchCreate($type = 'waterfall')
|
||||
{
|
||||
$data = fixer::input('post')->get();
|
||||
|
||||
$totalPercent = $this->getTotalPercent();
|
||||
$totalPercent = $this->getTotalPercent($type);
|
||||
|
||||
if(round($totalPercent + array_sum($data->percent)) > 100) return dao::$errors['message'][] = $this->lang->stage->error->percentOver;
|
||||
|
||||
@@ -65,6 +66,7 @@ class stageModel extends model
|
||||
$stage->name = $name;
|
||||
$stage->percent = $data->percent[$i];
|
||||
$stage->type = $data->type[$i];
|
||||
$stage->projectType = $type;
|
||||
$stage->createdBy = $this->app->user->account;
|
||||
$stage->createdDate = helper::today();
|
||||
|
||||
@@ -98,7 +100,7 @@ class stageModel extends model
|
||||
->add('editedDate', helper::today())
|
||||
->get();
|
||||
|
||||
$totalPercent = $this->getTotalPercent();
|
||||
$totalPercent = $this->getTotalPercent($oldStage->projectType);
|
||||
|
||||
if(round($totalPercent + $stage->percent - $oldStage->percent) > 100) return dao::$errors['message'][] = $this->lang->stage->error->percentOver;
|
||||
|
||||
@@ -118,10 +120,11 @@ class stageModel extends model
|
||||
*
|
||||
* @param string $orderBy
|
||||
* @param int $projectID
|
||||
* @param string $type
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getStages($orderBy = 'id_desc', $projectID = 0)
|
||||
public function getStages($orderBy = 'id_desc', $projectID = 0, $type = '')
|
||||
{
|
||||
if($projectID)
|
||||
{
|
||||
@@ -137,7 +140,7 @@ class stageModel extends model
|
||||
}
|
||||
else
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_STAGE)->where('deleted')->eq(0)->orderBy($orderBy)->fetchAll('id');
|
||||
return $this->dao->select('*')->from(TABLE_STAGE)->where('deleted')->eq(0)->andWhere('projectType')->eq($type)->orderBy($orderBy)->fetchAll('id');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -175,10 +178,35 @@ class stageModel extends model
|
||||
/**
|
||||
* Get stage total percent
|
||||
*
|
||||
* return string
|
||||
* @param string $type
|
||||
* @return string
|
||||
*/
|
||||
public function getTotalPercent()
|
||||
public function getTotalPercent($type)
|
||||
{
|
||||
return $this->dao->select('sum(percent) as total')->from(TABLE_STAGE)->where('deleted')->eq('0')->fetch('total');
|
||||
return $this->dao->select('sum(percent) as total')->from(TABLE_STAGE)->where('deleted')->eq('0')->andWhere('projectType')->eq($type)->fetch('total');
|
||||
}
|
||||
|
||||
/**
|
||||
* Set menu.
|
||||
*
|
||||
* @param string $type
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setMenu($type)
|
||||
{
|
||||
$this->app->loadLang('admin');
|
||||
$moduleName = $this->app->rawModule;
|
||||
$methodName = $this->app->rawMethod;
|
||||
if(!isset($this->lang->admin->menuList->model['subMenu']['waterfall']['exclude'])) $this->lang->admin->menuList->model['subMenu']['waterfall']['exclude'] = '';
|
||||
if(!isset($this->lang->admin->menuList->model['subMenu']['waterfallplus']['exclude'])) $this->lang->admin->menuList->model['subMenu']['agileplus']['exclude'] = '';
|
||||
if($type == 'waterfall')
|
||||
{
|
||||
$this->lang->admin->menuList->model['subMenu']['waterfallplus']['exclude'] .= ",{$moduleName}-{$methodName}";
|
||||
}
|
||||
if($type == 'waterfallplus')
|
||||
{
|
||||
$this->lang->admin->menuList->model['subMenu']['waterfall']['exclude'] .= ",{$moduleName}-{$methodName}";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<p>
|
||||
<span class="text-muted"><?php echo $lang->stage->noStage;?></span>
|
||||
<?php if(common::hasPriv('stage', 'create')):?>
|
||||
<?php echo html::a($this->createLink('stage', 'create'), "<i class='icon icon-plus'></i> " . $lang->stage->create, '', "class='btn btn-info'");?>
|
||||
<?php echo html::a($this->createLink('stage', 'create', "type={$type}"), "<i class='icon icon-plus'></i> " . $lang->stage->create, '', "class='btn btn-info'");?>
|
||||
<?php endif;?>
|
||||
</p>
|
||||
</div>
|
||||
@@ -26,8 +26,7 @@
|
||||
<div class='panel'>
|
||||
<div class='panel-body'>
|
||||
<div class="list-group">
|
||||
<?php echo html::a(inlink('setType'), $lang->stage->setType);?>
|
||||
<?php echo html::a(inlink('browse'), $lang->stage->browse, '', "class='selected'");?>
|
||||
<?php echo html::a(inlink('browse', "orderBy=id_asc&type={$type}"), $lang->stage->browse, '', "class='selected'");?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -38,19 +37,19 @@
|
||||
<strong><?php echo $lang->stage->browse;?></strong>
|
||||
</div>
|
||||
<div class="btn-toolbar pull-right">
|
||||
<?php common::printLink('stage', 'batchCreate', "", "<i class='icon icon-plus'></i>" . $lang->stage->batchCreate, '', "class='btn btn-primary'");?>
|
||||
<?php common::printLink('stage', 'create', "", "<i class='icon icon-plus'></i>" . $lang->stage->create, '', "class='btn btn-primary'");?>
|
||||
<?php common::printLink('stage', 'batchCreate', "type={$type}", "<i class='icon icon-plus'></i>" . $lang->stage->batchCreate, '', "class='btn btn-primary'");?>
|
||||
<?php common::printLink('stage', 'create', "type={$type}", "<i class='icon icon-plus'></i>" . $lang->stage->create, '', "class='btn btn-primary'");?>
|
||||
</div>
|
||||
</div>
|
||||
<table class="table has-sort-head" id='stageList'>
|
||||
<?php $vars = "orderBy=%s";?>
|
||||
<?php $vars = "orderBy=%s&type={$type}";?>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class='text-left w-60px'><?php common::printOrderLink('id', $orderBy, $vars, $lang->stage->id);?></th>
|
||||
<th class='text-left'><?php common::printOrderLink('name', $orderBy, $vars, $lang->stage->name);?></th>
|
||||
<th class='w-100px'><?php common::printOrderLink('percent', $orderBy, $vars, $lang->stage->percent);?></th>
|
||||
<th class='w-120px'><?php common::printOrderLink('type', $orderBy, $vars, $lang->stage->type);?></th>
|
||||
<th class='w-120px'><?php echo $lang->actions;?></th>
|
||||
<th class='c-actions-2'><?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -63,7 +62,7 @@
|
||||
<td class="c-actions">
|
||||
<?php
|
||||
common::printIcon('stage', 'edit', "stageID=$stage->id", "", "list");
|
||||
common::printIcon('stage', 'delete', "stageID=$stage->id", "", "list", '', 'hiddenwin');
|
||||
common::printIcon('stage', 'delete', "stageID=$stage->id", "", "list", 'trash', 'hiddenwin');
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -34,7 +34,6 @@ EOT;
|
||||
<div class='panel-body'>
|
||||
<div class="list-group">
|
||||
<?php echo html::a(inlink('setType'), $lang->stage->setType, '', "class='selected'");?>
|
||||
<?php echo html::a(inlink('browse'), $lang->stage->browse);?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user