* convert to unix format.
This commit is contained in:
+80
-80
@@ -1,80 +1,80 @@
|
||||
<?php
|
||||
/**
|
||||
* The control file of action module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package action
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class action extends control
|
||||
{
|
||||
/**
|
||||
* Trash
|
||||
*
|
||||
* @param string $orderBy
|
||||
* @param int $recTotal
|
||||
* @param int $recPerPage
|
||||
* @param int $pageID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function trash($orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
{
|
||||
/* Save session. */
|
||||
$uri = $this->app->getURI(true);
|
||||
$this->session->set('productList', $uri);
|
||||
$this->session->set('productPlanList', $uri);
|
||||
$this->session->set('releaseList', $uri);
|
||||
$this->session->set('storyList', $uri);
|
||||
$this->session->set('projectList', $uri);
|
||||
$this->session->set('taskList', $uri);
|
||||
$this->session->set('buildList', $uri);
|
||||
$this->session->set('bugList', $uri);
|
||||
$this->session->set('caseList', $uri);
|
||||
$this->session->set('testtaskList', $uri);
|
||||
$this->session->set('docList', $uri);
|
||||
|
||||
/* Header and position. */
|
||||
$this->view->header->title = $this->lang->action->trash;
|
||||
$this->view->position[] = $this->lang->action->trash;
|
||||
|
||||
/* Get deleted objects. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$pager = pager::init($recTotal, $recPerPage, $pageID);
|
||||
$this->view->trashes = $this->action->getTrashes($orderBy, $pager);
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noletter');
|
||||
$this->view->users['system'] = 'system';
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->pager = $pager;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Undelete an object.
|
||||
*
|
||||
* @param int $actionID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function undelete($actionID)
|
||||
{
|
||||
$this->action->undelete($actionID);
|
||||
die(js::reload('parent'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Hide object.
|
||||
*
|
||||
* @param int $actionID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function hide($actionID)
|
||||
{
|
||||
$this->action->hide($actionID);
|
||||
die(js::reload('parent'));
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The control file of action module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package action
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class action extends control
|
||||
{
|
||||
/**
|
||||
* Trash
|
||||
*
|
||||
* @param string $orderBy
|
||||
* @param int $recTotal
|
||||
* @param int $recPerPage
|
||||
* @param int $pageID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function trash($orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
{
|
||||
/* Save session. */
|
||||
$uri = $this->app->getURI(true);
|
||||
$this->session->set('productList', $uri);
|
||||
$this->session->set('productPlanList', $uri);
|
||||
$this->session->set('releaseList', $uri);
|
||||
$this->session->set('storyList', $uri);
|
||||
$this->session->set('projectList', $uri);
|
||||
$this->session->set('taskList', $uri);
|
||||
$this->session->set('buildList', $uri);
|
||||
$this->session->set('bugList', $uri);
|
||||
$this->session->set('caseList', $uri);
|
||||
$this->session->set('testtaskList', $uri);
|
||||
$this->session->set('docList', $uri);
|
||||
|
||||
/* Header and position. */
|
||||
$this->view->header->title = $this->lang->action->trash;
|
||||
$this->view->position[] = $this->lang->action->trash;
|
||||
|
||||
/* Get deleted objects. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$pager = pager::init($recTotal, $recPerPage, $pageID);
|
||||
$this->view->trashes = $this->action->getTrashes($orderBy, $pager);
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noletter');
|
||||
$this->view->users['system'] = 'system';
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->pager = $pager;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Undelete an object.
|
||||
*
|
||||
* @param int $actionID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function undelete($actionID)
|
||||
{
|
||||
$this->action->undelete($actionID);
|
||||
die(js::reload('parent'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Hide object.
|
||||
*
|
||||
* @param int $actionID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function hide($actionID)
|
||||
{
|
||||
$this->action->hide($actionID);
|
||||
die(js::reload('parent'));
|
||||
}
|
||||
}
|
||||
|
||||
+194
-194
@@ -1,194 +1,194 @@
|
||||
<?php
|
||||
/**
|
||||
* The action module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package action
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->action->common = 'Logs';
|
||||
$lang->action->trash = 'Trash';
|
||||
$lang->action->undelete = 'Undelete';
|
||||
$lang->action->hide = 'Hide';
|
||||
|
||||
$lang->action->product = 'Product';
|
||||
$lang->action->project = 'Project';
|
||||
$lang->action->objectType = 'Object';
|
||||
$lang->action->objectID = 'ID';
|
||||
$lang->action->objectName = 'Name';
|
||||
$lang->action->actor = 'Actor';
|
||||
$lang->action->action = 'Action';
|
||||
$lang->action->actionID = 'ActionID';
|
||||
$lang->action->date = 'Date';
|
||||
$lang->action->trashTips = "Tips:The deleting actions in zentao are all logic";
|
||||
$lang->action->textDiff = 'Text mode';
|
||||
$lang->action->original = 'Original content';
|
||||
|
||||
$lang->action->dynamic = new stdclass();
|
||||
$lang->action->dynamic->today = 'Today';
|
||||
$lang->action->dynamic->yesterday = 'Yesterday';
|
||||
$lang->action->dynamic->twoDaysAgo = 'Two days ago';
|
||||
$lang->action->dynamic->thisWeek = 'This week';
|
||||
$lang->action->dynamic->lastWeek = 'Last week';
|
||||
$lang->action->dynamic->thisMonth = 'This month';
|
||||
$lang->action->dynamic->lastMonth = 'Last month';
|
||||
$lang->action->dynamic->all = 'All';
|
||||
$lang->action->dynamic->search = 'Search';
|
||||
|
||||
$lang->action->objectTypes['product'] = 'Product';
|
||||
$lang->action->objectTypes['story'] = 'Story';
|
||||
$lang->action->objectTypes['productplan'] = 'Plan';
|
||||
$lang->action->objectTypes['release'] = 'Release';
|
||||
$lang->action->objectTypes['project'] = 'Project';
|
||||
$lang->action->objectTypes['task'] = 'Task';
|
||||
$lang->action->objectTypes['build'] = 'Build';
|
||||
$lang->action->objectTypes['bug'] = 'Bug';
|
||||
$lang->action->objectTypes['case'] = 'Case';
|
||||
$lang->action->objectTypes['testtask'] = 'Test Task';
|
||||
$lang->action->objectTypes['user'] = 'User';
|
||||
$lang->action->objectTypes['doc'] = 'Doc';
|
||||
$lang->action->objectTypes['doclib'] = 'DocLib';
|
||||
$lang->action->objectTypes['todo'] = 'Todo';
|
||||
|
||||
/* The desc of actions. */
|
||||
$lang->action->desc = new stdclass();
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> by <strong>$actor</strong>.';
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> as <strong>$extra</strong> by <strong>$actor</strong>.';
|
||||
$lang->action->desc->opened = '$date, opened by <strong>$actor</strong>.';
|
||||
$lang->action->desc->created = '$date, created by <strong>$actor</strong>.';
|
||||
$lang->action->desc->changed = '$date, changed by <strong>$actor</strong>.';
|
||||
$lang->action->desc->edited = '$date, edited by <strong>$actor</strong>.';
|
||||
$lang->action->desc->assigned = '$date, <strong>$actor</strong> assigned task to <strong>$extra</strong>.' . "\n";
|
||||
$lang->action->desc->closed = '$date, closed by <strong>$actor</strong>.';
|
||||
$lang->action->desc->deleted = '$date, deleted by <strong>$actor</strong>.';
|
||||
$lang->action->desc->deletedfile = '$date, deleted file by <strong>$actor</strong>, the file is <strong><i>$extra</i></strong>.';
|
||||
$lang->action->desc->editfile = '$date, edit file by <strong>$actor</strong>, the file is <strong><i>$extra</i></strong>.';
|
||||
$lang->action->desc->erased = '$date, erased by <strong>$actor</strong>.';
|
||||
$lang->action->desc->undeleted = '$date, restored by <strong>$actor</strong>.';
|
||||
$lang->action->desc->hidden = '$date, hidden by <strong>$actor</strong>.';
|
||||
$lang->action->desc->commented = '$date, commented by <strong>$actor</strong>.';
|
||||
$lang->action->desc->activated = '$date, activated by <strong>$actor</strong>.';
|
||||
$lang->action->desc->moved = '$date, moved by <strong>$actor</strong>, previouse is "$extra".';
|
||||
$lang->action->desc->confirmed = '$date, confirmed by <strong>$actor</strong>, version is<strong>#$extra</strong>.';
|
||||
$lang->action->desc->bugconfirmed = '$date, confirmed by <strong>$actor</strong>.';
|
||||
$lang->action->desc->frombug = '$date, from Bug by <strong>$actor</strong> BugID:<strong>$extra</strong>.';
|
||||
$lang->action->desc->started = '$date, started by <strong>$actor</strong>.';
|
||||
$lang->action->desc->delayed = '$date, delayed by <strong>$actor</strong>.';
|
||||
$lang->action->desc->suspended = '$date, suspended by <strong>$actor</strong>.';
|
||||
$lang->action->desc->recorded = '$date, recorded by <strong>$actor</strong>,consumed <strong>$extra</strong> hour(s).';
|
||||
$lang->action->desc->canceled = '$date, canceled by <strong>$actor</strong>.';
|
||||
$lang->action->desc->svncommited = '$date, <strong>$actor</strong> commited to svn,revision is <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->finished = '$date, finished by <strong>$actor</strong>.';
|
||||
$lang->action->desc->diff1 = 'changed <strong><i>%s</i></strong>, old is "%s", new is "%s".<br />';
|
||||
$lang->action->desc->diff2 = 'changed <strong><i>%s</i></strong>, the diff is:' . "\n" . "<blockquote>%s</blockquote>" . "\n<div class='hidden'>%s</div>";
|
||||
$lang->action->desc->diff3 = "changed file's name %s to %s.";
|
||||
|
||||
/* The action labels. */
|
||||
$lang->action->label = new stdclass();
|
||||
$lang->action->label->created = 'created';
|
||||
$lang->action->label->opened = 'opened';
|
||||
$lang->action->label->changed = 'changed';
|
||||
$lang->action->label->edited = 'edited';
|
||||
$lang->action->label->assigned = 'assigned';
|
||||
$lang->action->label->closed = 'closed';
|
||||
$lang->action->label->deleted = 'deleted';
|
||||
$lang->action->label->deletedfile = 'deleted file';
|
||||
$lang->action->label->editfile = 'edit file name';
|
||||
$lang->action->label->erased = 'deleted';
|
||||
$lang->action->label->undeleted = 'restore';
|
||||
$lang->action->label->hidden = 'hidden';
|
||||
$lang->action->label->commented = 'commented';
|
||||
$lang->action->label->activated = 'activated';
|
||||
$lang->action->label->resolved = 'resolved';
|
||||
$lang->action->label->reviewed = 'reviewed';
|
||||
$lang->action->label->moved = 'moded';
|
||||
$lang->action->label->confirmed = 'confirmed,';
|
||||
$lang->action->label->bugconfirmed = 'confirmed';
|
||||
$lang->action->label->tostory = 'converted to story';
|
||||
$lang->action->label->frombug = 'converted from bug';
|
||||
$lang->action->label->totask = 'converted to task';
|
||||
$lang->action->label->svncommited = 'commited code';
|
||||
$lang->action->label->linked2plan = 'link to plan';
|
||||
$lang->action->label->unlinkedfromplan = 'unlink from plan';
|
||||
$lang->action->label->linked2project = 'link to project';
|
||||
$lang->action->label->unlinkedfromproject = 'unlik from project';
|
||||
$lang->action->label->marked = 'edited';
|
||||
$lang->action->label->started = 'started';
|
||||
$lang->action->label->recorded = 'log hour';
|
||||
$lang->action->label->canceled = 'canceled';
|
||||
$lang->action->label->finished = 'finished';
|
||||
$lang->action->label->login = 'login';
|
||||
$lang->action->label->logout = "logout";
|
||||
|
||||
/* Link of every action. */
|
||||
$lang->action->label->product = 'product|product|view|productID=%s';
|
||||
$lang->action->label->productplan = 'plan|productplan|view|productID=%s';
|
||||
$lang->action->label->release = 'release|release|view|productID=%s';
|
||||
$lang->action->label->story = 'story|story|view|storyID=%s';
|
||||
$lang->action->label->project = 'project|project|view|projectID=%s';
|
||||
$lang->action->label->task = 'task|task|view|taskID=%s';
|
||||
$lang->action->label->build = 'build|build|view|buildID=%s';
|
||||
$lang->action->label->bug = 'bug|bug|view|bugID=%s';
|
||||
$lang->action->label->case = 'case|testcase|view|caseID=%s';
|
||||
$lang->action->label->testtask = 'test task|testtask|view|caseID=%s';
|
||||
$lang->action->label->todo = 'todo|todo|view|todoID=%s';
|
||||
$lang->action->label->doclib = 'doc library|doc|browse|libID=%s';
|
||||
$lang->action->label->doc = 'doc|doc|view|docID=%s';
|
||||
$lang->action->label->user = 'user';
|
||||
$lang->action->label->space = ' ';
|
||||
|
||||
/* Object type. */
|
||||
$lang->action->search->objectTypeList[''] = '';
|
||||
$lang->action->search->objectTypeList['product'] = 'product';
|
||||
$lang->action->search->objectTypeList['project'] = 'project';
|
||||
$lang->action->search->objectTypeList['bug'] = 'bug';
|
||||
$lang->action->search->objectTypeList['case'] = 'case';
|
||||
$lang->action->search->objectTypeList['story'] = 'story';
|
||||
$lang->action->search->objectTypeList['task'] = 'task';
|
||||
$lang->action->search->objectTypeList['testtask'] = 'testtask';
|
||||
$lang->action->search->objectTypeList['user'] = 'user';
|
||||
$lang->action->search->objectTypeList['doc'] = 'doc';
|
||||
$lang->action->search->objectTypeList['doclib'] = 'doclib';
|
||||
$lang->action->search->objectTypeList['todo'] = 'todo';
|
||||
$lang->action->search->objectTypeList['build'] = 'build';
|
||||
$lang->action->search->objectTypeList['release'] = 'release';
|
||||
$lang->action->search->objectTypeList['productplan'] = 'productplan';
|
||||
|
||||
/* Display action for search. */
|
||||
$lang->action->search->label[''] = '';
|
||||
$lang->action->search->label['created'] = $lang->action->label->created;
|
||||
$lang->action->search->label['opened'] = $lang->action->label->opened;
|
||||
$lang->action->search->label['changed'] = $lang->action->label->changed;
|
||||
$lang->action->search->label['edited'] = $lang->action->label->edited;
|
||||
$lang->action->search->label['assigned'] = $lang->action->label->assigned;
|
||||
$lang->action->search->label['closed'] = $lang->action->label->closed;
|
||||
$lang->action->search->label['deleted'] = $lang->action->label->deleted;
|
||||
$lang->action->search->label['deletedfile'] = $lang->action->label->deletedfile;
|
||||
$lang->action->search->label['editfile'] = $lang->action->label->editfile;
|
||||
$lang->action->search->label['erased'] = $lang->action->label->erased;
|
||||
$lang->action->search->label['undeleted'] = $lang->action->label->undeleted;
|
||||
$lang->action->search->label['hidden'] = $lang->action->label->hidden;
|
||||
$lang->action->search->label['commented'] = $lang->action->label->commented;
|
||||
$lang->action->search->label['activated'] = $lang->action->label->activated;
|
||||
$lang->action->search->label['resolved'] = $lang->action->label->resolved;
|
||||
$lang->action->search->label['reviewed'] = $lang->action->label->reviewed;
|
||||
$lang->action->search->label['moved'] = $lang->action->label->moved;
|
||||
$lang->action->search->label['confirmed'] = $lang->action->label->confirmed;
|
||||
$lang->action->search->label['bugconfirmed'] = $lang->action->label->bugconfirmed;
|
||||
$lang->action->search->label['tostory'] = $lang->action->label->tostory;
|
||||
$lang->action->search->label['frombug'] = $lang->action->label->frombug;
|
||||
$lang->action->search->label['totask'] = $lang->action->label->totask;
|
||||
$lang->action->search->label['svncommited'] = $lang->action->label->svncommited;
|
||||
$lang->action->search->label['linked2plan'] = $lang->action->label->linked2plan;
|
||||
$lang->action->search->label['unlinkedfromplan'] = $lang->action->label->unlinkedfromplan;
|
||||
$lang->action->search->label['linked2project'] = $lang->action->label->linked2project;
|
||||
$lang->action->search->label['unlinkedfromproject'] = $lang->action->label->unlinkedfromproject;
|
||||
$lang->action->search->label['marked'] = $lang->action->label->marked;
|
||||
$lang->action->search->label['started'] = $lang->action->label->started;
|
||||
$lang->action->search->label['canceled'] = $lang->action->label->canceled;
|
||||
$lang->action->search->label['finished'] = $lang->action->label->finished;
|
||||
$lang->action->search->label['login'] = $lang->action->label->login;
|
||||
$lang->action->search->label['logout'] = $lang->action->label->logout;
|
||||
<?php
|
||||
/**
|
||||
* The action module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package action
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->action->common = 'Logs';
|
||||
$lang->action->trash = 'Trash';
|
||||
$lang->action->undelete = 'Undelete';
|
||||
$lang->action->hide = 'Hide';
|
||||
|
||||
$lang->action->product = 'Product';
|
||||
$lang->action->project = 'Project';
|
||||
$lang->action->objectType = 'Object';
|
||||
$lang->action->objectID = 'ID';
|
||||
$lang->action->objectName = 'Name';
|
||||
$lang->action->actor = 'Actor';
|
||||
$lang->action->action = 'Action';
|
||||
$lang->action->actionID = 'ActionID';
|
||||
$lang->action->date = 'Date';
|
||||
$lang->action->trashTips = "Tips:The deleting actions in zentao are all logic";
|
||||
$lang->action->textDiff = 'Text mode';
|
||||
$lang->action->original = 'Original content';
|
||||
|
||||
$lang->action->dynamic = new stdclass();
|
||||
$lang->action->dynamic->today = 'Today';
|
||||
$lang->action->dynamic->yesterday = 'Yesterday';
|
||||
$lang->action->dynamic->twoDaysAgo = 'Two days ago';
|
||||
$lang->action->dynamic->thisWeek = 'This week';
|
||||
$lang->action->dynamic->lastWeek = 'Last week';
|
||||
$lang->action->dynamic->thisMonth = 'This month';
|
||||
$lang->action->dynamic->lastMonth = 'Last month';
|
||||
$lang->action->dynamic->all = 'All';
|
||||
$lang->action->dynamic->search = 'Search';
|
||||
|
||||
$lang->action->objectTypes['product'] = 'Product';
|
||||
$lang->action->objectTypes['story'] = 'Story';
|
||||
$lang->action->objectTypes['productplan'] = 'Plan';
|
||||
$lang->action->objectTypes['release'] = 'Release';
|
||||
$lang->action->objectTypes['project'] = 'Project';
|
||||
$lang->action->objectTypes['task'] = 'Task';
|
||||
$lang->action->objectTypes['build'] = 'Build';
|
||||
$lang->action->objectTypes['bug'] = 'Bug';
|
||||
$lang->action->objectTypes['case'] = 'Case';
|
||||
$lang->action->objectTypes['testtask'] = 'Test Task';
|
||||
$lang->action->objectTypes['user'] = 'User';
|
||||
$lang->action->objectTypes['doc'] = 'Doc';
|
||||
$lang->action->objectTypes['doclib'] = 'DocLib';
|
||||
$lang->action->objectTypes['todo'] = 'Todo';
|
||||
|
||||
/* The desc of actions. */
|
||||
$lang->action->desc = new stdclass();
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> by <strong>$actor</strong>.';
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> as <strong>$extra</strong> by <strong>$actor</strong>.';
|
||||
$lang->action->desc->opened = '$date, opened by <strong>$actor</strong>.';
|
||||
$lang->action->desc->created = '$date, created by <strong>$actor</strong>.';
|
||||
$lang->action->desc->changed = '$date, changed by <strong>$actor</strong>.';
|
||||
$lang->action->desc->edited = '$date, edited by <strong>$actor</strong>.';
|
||||
$lang->action->desc->assigned = '$date, <strong>$actor</strong> assigned task to <strong>$extra</strong>.' . "\n";
|
||||
$lang->action->desc->closed = '$date, closed by <strong>$actor</strong>.';
|
||||
$lang->action->desc->deleted = '$date, deleted by <strong>$actor</strong>.';
|
||||
$lang->action->desc->deletedfile = '$date, deleted file by <strong>$actor</strong>, the file is <strong><i>$extra</i></strong>.';
|
||||
$lang->action->desc->editfile = '$date, edit file by <strong>$actor</strong>, the file is <strong><i>$extra</i></strong>.';
|
||||
$lang->action->desc->erased = '$date, erased by <strong>$actor</strong>.';
|
||||
$lang->action->desc->undeleted = '$date, restored by <strong>$actor</strong>.';
|
||||
$lang->action->desc->hidden = '$date, hidden by <strong>$actor</strong>.';
|
||||
$lang->action->desc->commented = '$date, commented by <strong>$actor</strong>.';
|
||||
$lang->action->desc->activated = '$date, activated by <strong>$actor</strong>.';
|
||||
$lang->action->desc->moved = '$date, moved by <strong>$actor</strong>, previouse is "$extra".';
|
||||
$lang->action->desc->confirmed = '$date, confirmed by <strong>$actor</strong>, version is<strong>#$extra</strong>.';
|
||||
$lang->action->desc->bugconfirmed = '$date, confirmed by <strong>$actor</strong>.';
|
||||
$lang->action->desc->frombug = '$date, from Bug by <strong>$actor</strong> BugID:<strong>$extra</strong>.';
|
||||
$lang->action->desc->started = '$date, started by <strong>$actor</strong>.';
|
||||
$lang->action->desc->delayed = '$date, delayed by <strong>$actor</strong>.';
|
||||
$lang->action->desc->suspended = '$date, suspended by <strong>$actor</strong>.';
|
||||
$lang->action->desc->recorded = '$date, recorded by <strong>$actor</strong>,consumed <strong>$extra</strong> hour(s).';
|
||||
$lang->action->desc->canceled = '$date, canceled by <strong>$actor</strong>.';
|
||||
$lang->action->desc->svncommited = '$date, <strong>$actor</strong> commited to svn,revision is <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->finished = '$date, finished by <strong>$actor</strong>.';
|
||||
$lang->action->desc->diff1 = 'changed <strong><i>%s</i></strong>, old is "%s", new is "%s".<br />';
|
||||
$lang->action->desc->diff2 = 'changed <strong><i>%s</i></strong>, the diff is:' . "\n" . "<blockquote>%s</blockquote>" . "\n<div class='hidden'>%s</div>";
|
||||
$lang->action->desc->diff3 = "changed file's name %s to %s.";
|
||||
|
||||
/* The action labels. */
|
||||
$lang->action->label = new stdclass();
|
||||
$lang->action->label->created = 'created';
|
||||
$lang->action->label->opened = 'opened';
|
||||
$lang->action->label->changed = 'changed';
|
||||
$lang->action->label->edited = 'edited';
|
||||
$lang->action->label->assigned = 'assigned';
|
||||
$lang->action->label->closed = 'closed';
|
||||
$lang->action->label->deleted = 'deleted';
|
||||
$lang->action->label->deletedfile = 'deleted file';
|
||||
$lang->action->label->editfile = 'edit file name';
|
||||
$lang->action->label->erased = 'deleted';
|
||||
$lang->action->label->undeleted = 'restore';
|
||||
$lang->action->label->hidden = 'hidden';
|
||||
$lang->action->label->commented = 'commented';
|
||||
$lang->action->label->activated = 'activated';
|
||||
$lang->action->label->resolved = 'resolved';
|
||||
$lang->action->label->reviewed = 'reviewed';
|
||||
$lang->action->label->moved = 'moded';
|
||||
$lang->action->label->confirmed = 'confirmed,';
|
||||
$lang->action->label->bugconfirmed = 'confirmed';
|
||||
$lang->action->label->tostory = 'converted to story';
|
||||
$lang->action->label->frombug = 'converted from bug';
|
||||
$lang->action->label->totask = 'converted to task';
|
||||
$lang->action->label->svncommited = 'commited code';
|
||||
$lang->action->label->linked2plan = 'link to plan';
|
||||
$lang->action->label->unlinkedfromplan = 'unlink from plan';
|
||||
$lang->action->label->linked2project = 'link to project';
|
||||
$lang->action->label->unlinkedfromproject = 'unlik from project';
|
||||
$lang->action->label->marked = 'edited';
|
||||
$lang->action->label->started = 'started';
|
||||
$lang->action->label->recorded = 'log hour';
|
||||
$lang->action->label->canceled = 'canceled';
|
||||
$lang->action->label->finished = 'finished';
|
||||
$lang->action->label->login = 'login';
|
||||
$lang->action->label->logout = "logout";
|
||||
|
||||
/* Link of every action. */
|
||||
$lang->action->label->product = 'product|product|view|productID=%s';
|
||||
$lang->action->label->productplan = 'plan|productplan|view|productID=%s';
|
||||
$lang->action->label->release = 'release|release|view|productID=%s';
|
||||
$lang->action->label->story = 'story|story|view|storyID=%s';
|
||||
$lang->action->label->project = 'project|project|view|projectID=%s';
|
||||
$lang->action->label->task = 'task|task|view|taskID=%s';
|
||||
$lang->action->label->build = 'build|build|view|buildID=%s';
|
||||
$lang->action->label->bug = 'bug|bug|view|bugID=%s';
|
||||
$lang->action->label->case = 'case|testcase|view|caseID=%s';
|
||||
$lang->action->label->testtask = 'test task|testtask|view|caseID=%s';
|
||||
$lang->action->label->todo = 'todo|todo|view|todoID=%s';
|
||||
$lang->action->label->doclib = 'doc library|doc|browse|libID=%s';
|
||||
$lang->action->label->doc = 'doc|doc|view|docID=%s';
|
||||
$lang->action->label->user = 'user';
|
||||
$lang->action->label->space = ' ';
|
||||
|
||||
/* Object type. */
|
||||
$lang->action->search->objectTypeList[''] = '';
|
||||
$lang->action->search->objectTypeList['product'] = 'product';
|
||||
$lang->action->search->objectTypeList['project'] = 'project';
|
||||
$lang->action->search->objectTypeList['bug'] = 'bug';
|
||||
$lang->action->search->objectTypeList['case'] = 'case';
|
||||
$lang->action->search->objectTypeList['story'] = 'story';
|
||||
$lang->action->search->objectTypeList['task'] = 'task';
|
||||
$lang->action->search->objectTypeList['testtask'] = 'testtask';
|
||||
$lang->action->search->objectTypeList['user'] = 'user';
|
||||
$lang->action->search->objectTypeList['doc'] = 'doc';
|
||||
$lang->action->search->objectTypeList['doclib'] = 'doclib';
|
||||
$lang->action->search->objectTypeList['todo'] = 'todo';
|
||||
$lang->action->search->objectTypeList['build'] = 'build';
|
||||
$lang->action->search->objectTypeList['release'] = 'release';
|
||||
$lang->action->search->objectTypeList['productplan'] = 'productplan';
|
||||
|
||||
/* Display action for search. */
|
||||
$lang->action->search->label[''] = '';
|
||||
$lang->action->search->label['created'] = $lang->action->label->created;
|
||||
$lang->action->search->label['opened'] = $lang->action->label->opened;
|
||||
$lang->action->search->label['changed'] = $lang->action->label->changed;
|
||||
$lang->action->search->label['edited'] = $lang->action->label->edited;
|
||||
$lang->action->search->label['assigned'] = $lang->action->label->assigned;
|
||||
$lang->action->search->label['closed'] = $lang->action->label->closed;
|
||||
$lang->action->search->label['deleted'] = $lang->action->label->deleted;
|
||||
$lang->action->search->label['deletedfile'] = $lang->action->label->deletedfile;
|
||||
$lang->action->search->label['editfile'] = $lang->action->label->editfile;
|
||||
$lang->action->search->label['erased'] = $lang->action->label->erased;
|
||||
$lang->action->search->label['undeleted'] = $lang->action->label->undeleted;
|
||||
$lang->action->search->label['hidden'] = $lang->action->label->hidden;
|
||||
$lang->action->search->label['commented'] = $lang->action->label->commented;
|
||||
$lang->action->search->label['activated'] = $lang->action->label->activated;
|
||||
$lang->action->search->label['resolved'] = $lang->action->label->resolved;
|
||||
$lang->action->search->label['reviewed'] = $lang->action->label->reviewed;
|
||||
$lang->action->search->label['moved'] = $lang->action->label->moved;
|
||||
$lang->action->search->label['confirmed'] = $lang->action->label->confirmed;
|
||||
$lang->action->search->label['bugconfirmed'] = $lang->action->label->bugconfirmed;
|
||||
$lang->action->search->label['tostory'] = $lang->action->label->tostory;
|
||||
$lang->action->search->label['frombug'] = $lang->action->label->frombug;
|
||||
$lang->action->search->label['totask'] = $lang->action->label->totask;
|
||||
$lang->action->search->label['svncommited'] = $lang->action->label->svncommited;
|
||||
$lang->action->search->label['linked2plan'] = $lang->action->label->linked2plan;
|
||||
$lang->action->search->label['unlinkedfromplan'] = $lang->action->label->unlinkedfromplan;
|
||||
$lang->action->search->label['linked2project'] = $lang->action->label->linked2project;
|
||||
$lang->action->search->label['unlinkedfromproject'] = $lang->action->label->unlinkedfromproject;
|
||||
$lang->action->search->label['marked'] = $lang->action->label->marked;
|
||||
$lang->action->search->label['started'] = $lang->action->label->started;
|
||||
$lang->action->search->label['canceled'] = $lang->action->label->canceled;
|
||||
$lang->action->search->label['finished'] = $lang->action->label->finished;
|
||||
$lang->action->search->label['login'] = $lang->action->label->login;
|
||||
$lang->action->search->label['logout'] = $lang->action->label->logout;
|
||||
|
||||
+194
-194
@@ -1,194 +1,194 @@
|
||||
<?php
|
||||
/**
|
||||
* The action module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package action
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->action->common = '系统日志';
|
||||
$lang->action->trash = '回收站';
|
||||
$lang->action->undelete = '还原';
|
||||
$lang->action->hide = '隐藏';
|
||||
|
||||
$lang->action->product = '产品';
|
||||
$lang->action->project = '项目';
|
||||
$lang->action->objectType = '对象类型';
|
||||
$lang->action->objectID = '对象ID';
|
||||
$lang->action->objectName = '对象名称';
|
||||
$lang->action->actor = '操作者';
|
||||
$lang->action->action = '动作';
|
||||
$lang->action->actionID = '记录ID';
|
||||
$lang->action->date = '日期';
|
||||
$lang->action->trashTips = '提示:为了保证系统的完整性,禅道系统的删除都是标记删除。';
|
||||
$lang->action->textDiff = '文本格式';
|
||||
$lang->action->original = '原始格式';
|
||||
|
||||
$lang->action->dynamic = new stdclass();
|
||||
$lang->action->dynamic->today = '今天';
|
||||
$lang->action->dynamic->yesterday = '昨天';
|
||||
$lang->action->dynamic->twoDaysAgo = '前天';
|
||||
$lang->action->dynamic->thisWeek = '本周';
|
||||
$lang->action->dynamic->lastWeek = '上周';
|
||||
$lang->action->dynamic->thisMonth = '本月';
|
||||
$lang->action->dynamic->lastMonth = '上月';
|
||||
$lang->action->dynamic->all = '所有';
|
||||
$lang->action->dynamic->search = '搜索';
|
||||
|
||||
$lang->action->objectTypes['product'] = '产品';
|
||||
$lang->action->objectTypes['story'] = '需求';
|
||||
$lang->action->objectTypes['productplan'] = '产品计划';
|
||||
$lang->action->objectTypes['release'] = '发布';
|
||||
$lang->action->objectTypes['project'] = '项目';
|
||||
$lang->action->objectTypes['task'] = '任务';
|
||||
$lang->action->objectTypes['build'] = 'Build';
|
||||
$lang->action->objectTypes['bug'] = 'Bug';
|
||||
$lang->action->objectTypes['case'] = '用例';
|
||||
$lang->action->objectTypes['testtask'] = '测试任务';
|
||||
$lang->action->objectTypes['user'] = '用户';
|
||||
$lang->action->objectTypes['doc'] = '文档';
|
||||
$lang->action->objectTypes['doclib'] = '文档库';
|
||||
$lang->action->objectTypes['todo'] = 'TODO';
|
||||
|
||||
/* 用来描述操作历史记录。*/
|
||||
$lang->action->desc = new stdclass();
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> by <strong>$actor</strong>。' . "\n";
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> as <strong>$extra</strong> by <strong>$actor</strong>。' . "\n";
|
||||
$lang->action->desc->opened = '$date, 由 <strong>$actor</strong> 创建。' . "\n";
|
||||
$lang->action->desc->created = '$date, 由 <strong>$actor</strong> 创建。' . "\n";
|
||||
$lang->action->desc->changed = '$date, 由 <strong>$actor</strong> 变更。' . "\n";
|
||||
$lang->action->desc->edited = '$date, 由 <strong>$actor</strong> 编辑。' . "\n";
|
||||
$lang->action->desc->assigned = '$date, 由 <strong>$actor</strong> 指派给 <strong>$extra</strong>。' . "\n";
|
||||
$lang->action->desc->closed = '$date, 由 <strong>$actor</strong> 关闭。' . "\n";
|
||||
$lang->action->desc->deleted = '$date, 由 <strong>$actor</strong> 删除。' . "\n";
|
||||
$lang->action->desc->deletedfile = '$date, 由 <strong>$actor</strong> 删除了附件:<strong><i>$extra</i></strong>。' . "\n";
|
||||
$lang->action->desc->editfile = '$date, 由 <strong>$actor</strong> 编辑了附件:<strong><i>$extra</i></strong>。' . "\n";
|
||||
$lang->action->desc->erased = '$date, 由 <strong>$actor</strong> 删除。' . "\n";
|
||||
$lang->action->desc->undeleted = '$date, 由 <strong>$actor</strong> 还原。' . "\n";
|
||||
$lang->action->desc->hidden = '$date, 由 <strong>$actor</strong> 隐藏。' . "\n";
|
||||
$lang->action->desc->commented = '$date, 由 <strong>$actor</strong> 添加备注。' . "\n";
|
||||
$lang->action->desc->activated = '$date, 由 <strong>$actor</strong> 激活。' . "\n";
|
||||
$lang->action->desc->moved = '$date, 由 <strong>$actor</strong> 移动,之前为 "$extra"。' . "\n";
|
||||
$lang->action->desc->confirmed = '$date, 由 <strong>$actor</strong> 确认需求变动,最新版本为<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->bugconfirmed = '$date, 由 <strong>$actor</strong> 确认Bug。' . "\n";
|
||||
$lang->action->desc->frombug = '$date, 由 <strong>$actor</strong> Bug转化而来,Bug编号为 <strong>$extra</strong>。';
|
||||
$lang->action->desc->started = '$date, 由 <strong>$actor</strong> 启动。' . "\n";
|
||||
$lang->action->desc->delayed = '$date, 由 <strong>$actor</strong> 延期。' . "\n";
|
||||
$lang->action->desc->suspended = '$date, 由 <strong>$actor</strong> 挂起。' . "\n";
|
||||
$lang->action->desc->recorded = '$date, 由 <strong>$actor</strong> 记录工时,消耗了 <strong>$extra</strong> 小时 。' . "\n";
|
||||
$lang->action->desc->canceled = '$date, 由 <strong>$actor</strong> 取消。' . "\n";
|
||||
$lang->action->desc->svncommited = '$date, 由 <strong>$actor</strong> 提交代码,版本为<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->finished = '$date, 由 <strong>$actor</strong> 完成。' . "\n";
|
||||
$lang->action->desc->diff1 = '修改了 <strong><i>%s</i></strong>,旧值为 "%s",新值为 "%s"。<br />' . "\n";
|
||||
$lang->action->desc->diff2 = '修改了 <strong><i>%s</i></strong>,区别为:' . "\n" . "<blockquote>%s</blockquote>" . "\n<div class='hidden'>%s</div>";
|
||||
$lang->action->desc->diff3 = '将文件名 %s 改为 %s 。' . "\n";
|
||||
|
||||
/* 用来显示动态信息。*/
|
||||
$lang->action->label = new stdclass();
|
||||
$lang->action->label->created = '创建了';
|
||||
$lang->action->label->opened = '创建了';
|
||||
$lang->action->label->changed = '变更了';
|
||||
$lang->action->label->edited = '编辑了';
|
||||
$lang->action->label->assigned = '指派了';
|
||||
$lang->action->label->closed = '关闭了';
|
||||
$lang->action->label->deleted = '删除了';
|
||||
$lang->action->label->deletedfile = '删除附件';
|
||||
$lang->action->label->editfile = '编辑附件';
|
||||
$lang->action->label->erased = '删除了';
|
||||
$lang->action->label->undeleted = '还原了';
|
||||
$lang->action->label->hidden = '隐藏了';
|
||||
$lang->action->label->commented = '评论了';
|
||||
$lang->action->label->activated = '激活了';
|
||||
$lang->action->label->resolved = '解决了';
|
||||
$lang->action->label->reviewed = '评审了';
|
||||
$lang->action->label->moved = '移动了';
|
||||
$lang->action->label->confirmed = '确认了需求,';
|
||||
$lang->action->label->bugconfirmed = '确认了';
|
||||
$lang->action->label->tostory = '转需求';
|
||||
$lang->action->label->frombug = '转需求';
|
||||
$lang->action->label->totask = '转任务';
|
||||
$lang->action->label->svncommited = '提交代码';
|
||||
$lang->action->label->linked2plan = '关联计划';
|
||||
$lang->action->label->unlinkedfromplan = '移除计划';
|
||||
$lang->action->label->linked2project = '关联项目';
|
||||
$lang->action->label->unlinkedfromproject = '移除项目';
|
||||
$lang->action->label->marked = '编辑了';
|
||||
$lang->action->label->started = '开始了';
|
||||
$lang->action->label->recorded = '记录了工时';
|
||||
$lang->action->label->canceled = '取消了';
|
||||
$lang->action->label->finished = '完成了';
|
||||
$lang->action->label->login = '登录系统';
|
||||
$lang->action->label->logout = "退出登录";
|
||||
|
||||
/* 用来生成相应对象的链接。*/
|
||||
$lang->action->label->product = '产品|product|view|productID=%s';
|
||||
$lang->action->label->productplan = '计划|productplan|view|productID=%s';
|
||||
$lang->action->label->release = '发布|release|view|productID=%s';
|
||||
$lang->action->label->story = '需求|story|view|storyID=%s';
|
||||
$lang->action->label->project = '项目|project|view|projectID=%s';
|
||||
$lang->action->label->task = '任务|task|view|taskID=%s';
|
||||
$lang->action->label->build = 'Build|build|view|buildID=%s';
|
||||
$lang->action->label->bug = 'Bug|bug|view|bugID=%s';
|
||||
$lang->action->label->case = '用例|testcase|view|caseID=%s';
|
||||
$lang->action->label->testtask = '测试任务|testtask|view|caseID=%s';
|
||||
$lang->action->label->todo = 'todo|todo|view|todoID=%s';
|
||||
$lang->action->label->doclib = '文档库|doc|browse|libID=%s';
|
||||
$lang->action->label->doc = '文档|doc|view|docID=%s';
|
||||
$lang->action->label->user = '用户|user|view|account=%s';
|
||||
$lang->action->label->space = ' ';
|
||||
|
||||
/* Object type. */
|
||||
$lang->action->search->objectTypeList[''] = '';
|
||||
$lang->action->search->objectTypeList['product'] = '产品';
|
||||
$lang->action->search->objectTypeList['project'] = '项目';
|
||||
$lang->action->search->objectTypeList['bug'] = 'Bug';
|
||||
$lang->action->search->objectTypeList['case'] = '用例';
|
||||
$lang->action->search->objectTypeList['story'] = '需求';
|
||||
$lang->action->search->objectTypeList['task'] = '任务';
|
||||
$lang->action->search->objectTypeList['testtask'] = '测试任务';
|
||||
$lang->action->search->objectTypeList['user'] = '用户';
|
||||
$lang->action->search->objectTypeList['doc'] = '文档';
|
||||
$lang->action->search->objectTypeList['doclib'] = '文档库';
|
||||
$lang->action->search->objectTypeList['todo'] = 'TODO';
|
||||
$lang->action->search->objectTypeList['build'] = 'Build';
|
||||
$lang->action->search->objectTypeList['release'] = '发布';
|
||||
$lang->action->search->objectTypeList['productplan'] = '计划';
|
||||
|
||||
/* 用来在动态显示中显示动作 */
|
||||
$lang->action->search->label[''] = '';
|
||||
$lang->action->search->label['created'] = $lang->action->label->created;
|
||||
$lang->action->search->label['opened'] = $lang->action->label->opened;
|
||||
$lang->action->search->label['changed'] = $lang->action->label->changed;
|
||||
$lang->action->search->label['edited'] = $lang->action->label->edited;
|
||||
$lang->action->search->label['assigned'] = $lang->action->label->assigned;
|
||||
$lang->action->search->label['closed'] = $lang->action->label->closed;
|
||||
$lang->action->search->label['deleted'] = $lang->action->label->deleted;
|
||||
$lang->action->search->label['deletedfile'] = $lang->action->label->deletedfile;
|
||||
$lang->action->search->label['editfile'] = $lang->action->label->editfile;
|
||||
$lang->action->search->label['erased'] = $lang->action->label->erased;
|
||||
$lang->action->search->label['undeleted'] = $lang->action->label->undeleted;
|
||||
$lang->action->search->label['hidden'] = $lang->action->label->hidden;
|
||||
$lang->action->search->label['commented'] = $lang->action->label->commented;
|
||||
$lang->action->search->label['activated'] = $lang->action->label->activated;
|
||||
$lang->action->search->label['resolved'] = $lang->action->label->resolved;
|
||||
$lang->action->search->label['reviewed'] = $lang->action->label->reviewed;
|
||||
$lang->action->search->label['moved'] = $lang->action->label->moved;
|
||||
$lang->action->search->label['confirmed'] = $lang->action->label->confirmed;
|
||||
$lang->action->search->label['bugconfirmed'] = $lang->action->label->bugconfirmed;
|
||||
$lang->action->search->label['tostory'] = $lang->action->label->tostory;
|
||||
$lang->action->search->label['frombug'] = $lang->action->label->frombug;
|
||||
$lang->action->search->label['totask'] = $lang->action->label->totask;
|
||||
$lang->action->search->label['svncommited'] = $lang->action->label->svncommited;
|
||||
$lang->action->search->label['linked2plan'] = $lang->action->label->linked2plan;
|
||||
$lang->action->search->label['unlinkedfromplan'] = $lang->action->label->unlinkedfromplan;
|
||||
$lang->action->search->label['linked2project'] = $lang->action->label->linked2project;
|
||||
$lang->action->search->label['unlinkedfromproject'] = $lang->action->label->unlinkedfromproject;
|
||||
$lang->action->search->label['marked'] = $lang->action->label->marked;
|
||||
$lang->action->search->label['started'] = $lang->action->label->started;
|
||||
$lang->action->search->label['canceled'] = $lang->action->label->canceled;
|
||||
$lang->action->search->label['finished'] = $lang->action->label->finished;
|
||||
$lang->action->search->label['login'] = $lang->action->label->login;
|
||||
$lang->action->search->label['logout'] = $lang->action->label->logout;
|
||||
<?php
|
||||
/**
|
||||
* The action module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package action
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->action->common = '系统日志';
|
||||
$lang->action->trash = '回收站';
|
||||
$lang->action->undelete = '还原';
|
||||
$lang->action->hide = '隐藏';
|
||||
|
||||
$lang->action->product = '产品';
|
||||
$lang->action->project = '项目';
|
||||
$lang->action->objectType = '对象类型';
|
||||
$lang->action->objectID = '对象ID';
|
||||
$lang->action->objectName = '对象名称';
|
||||
$lang->action->actor = '操作者';
|
||||
$lang->action->action = '动作';
|
||||
$lang->action->actionID = '记录ID';
|
||||
$lang->action->date = '日期';
|
||||
$lang->action->trashTips = '提示:为了保证系统的完整性,禅道系统的删除都是标记删除。';
|
||||
$lang->action->textDiff = '文本格式';
|
||||
$lang->action->original = '原始格式';
|
||||
|
||||
$lang->action->dynamic = new stdclass();
|
||||
$lang->action->dynamic->today = '今天';
|
||||
$lang->action->dynamic->yesterday = '昨天';
|
||||
$lang->action->dynamic->twoDaysAgo = '前天';
|
||||
$lang->action->dynamic->thisWeek = '本周';
|
||||
$lang->action->dynamic->lastWeek = '上周';
|
||||
$lang->action->dynamic->thisMonth = '本月';
|
||||
$lang->action->dynamic->lastMonth = '上月';
|
||||
$lang->action->dynamic->all = '所有';
|
||||
$lang->action->dynamic->search = '搜索';
|
||||
|
||||
$lang->action->objectTypes['product'] = '产品';
|
||||
$lang->action->objectTypes['story'] = '需求';
|
||||
$lang->action->objectTypes['productplan'] = '产品计划';
|
||||
$lang->action->objectTypes['release'] = '发布';
|
||||
$lang->action->objectTypes['project'] = '项目';
|
||||
$lang->action->objectTypes['task'] = '任务';
|
||||
$lang->action->objectTypes['build'] = 'Build';
|
||||
$lang->action->objectTypes['bug'] = 'Bug';
|
||||
$lang->action->objectTypes['case'] = '用例';
|
||||
$lang->action->objectTypes['testtask'] = '测试任务';
|
||||
$lang->action->objectTypes['user'] = '用户';
|
||||
$lang->action->objectTypes['doc'] = '文档';
|
||||
$lang->action->objectTypes['doclib'] = '文档库';
|
||||
$lang->action->objectTypes['todo'] = 'TODO';
|
||||
|
||||
/* 用来描述操作历史记录。*/
|
||||
$lang->action->desc = new stdclass();
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> by <strong>$actor</strong>。' . "\n";
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> as <strong>$extra</strong> by <strong>$actor</strong>。' . "\n";
|
||||
$lang->action->desc->opened = '$date, 由 <strong>$actor</strong> 创建。' . "\n";
|
||||
$lang->action->desc->created = '$date, 由 <strong>$actor</strong> 创建。' . "\n";
|
||||
$lang->action->desc->changed = '$date, 由 <strong>$actor</strong> 变更。' . "\n";
|
||||
$lang->action->desc->edited = '$date, 由 <strong>$actor</strong> 编辑。' . "\n";
|
||||
$lang->action->desc->assigned = '$date, 由 <strong>$actor</strong> 指派给 <strong>$extra</strong>。' . "\n";
|
||||
$lang->action->desc->closed = '$date, 由 <strong>$actor</strong> 关闭。' . "\n";
|
||||
$lang->action->desc->deleted = '$date, 由 <strong>$actor</strong> 删除。' . "\n";
|
||||
$lang->action->desc->deletedfile = '$date, 由 <strong>$actor</strong> 删除了附件:<strong><i>$extra</i></strong>。' . "\n";
|
||||
$lang->action->desc->editfile = '$date, 由 <strong>$actor</strong> 编辑了附件:<strong><i>$extra</i></strong>。' . "\n";
|
||||
$lang->action->desc->erased = '$date, 由 <strong>$actor</strong> 删除。' . "\n";
|
||||
$lang->action->desc->undeleted = '$date, 由 <strong>$actor</strong> 还原。' . "\n";
|
||||
$lang->action->desc->hidden = '$date, 由 <strong>$actor</strong> 隐藏。' . "\n";
|
||||
$lang->action->desc->commented = '$date, 由 <strong>$actor</strong> 添加备注。' . "\n";
|
||||
$lang->action->desc->activated = '$date, 由 <strong>$actor</strong> 激活。' . "\n";
|
||||
$lang->action->desc->moved = '$date, 由 <strong>$actor</strong> 移动,之前为 "$extra"。' . "\n";
|
||||
$lang->action->desc->confirmed = '$date, 由 <strong>$actor</strong> 确认需求变动,最新版本为<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->bugconfirmed = '$date, 由 <strong>$actor</strong> 确认Bug。' . "\n";
|
||||
$lang->action->desc->frombug = '$date, 由 <strong>$actor</strong> Bug转化而来,Bug编号为 <strong>$extra</strong>。';
|
||||
$lang->action->desc->started = '$date, 由 <strong>$actor</strong> 启动。' . "\n";
|
||||
$lang->action->desc->delayed = '$date, 由 <strong>$actor</strong> 延期。' . "\n";
|
||||
$lang->action->desc->suspended = '$date, 由 <strong>$actor</strong> 挂起。' . "\n";
|
||||
$lang->action->desc->recorded = '$date, 由 <strong>$actor</strong> 记录工时,消耗了 <strong>$extra</strong> 小时 。' . "\n";
|
||||
$lang->action->desc->canceled = '$date, 由 <strong>$actor</strong> 取消。' . "\n";
|
||||
$lang->action->desc->svncommited = '$date, 由 <strong>$actor</strong> 提交代码,版本为<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->finished = '$date, 由 <strong>$actor</strong> 完成。' . "\n";
|
||||
$lang->action->desc->diff1 = '修改了 <strong><i>%s</i></strong>,旧值为 "%s",新值为 "%s"。<br />' . "\n";
|
||||
$lang->action->desc->diff2 = '修改了 <strong><i>%s</i></strong>,区别为:' . "\n" . "<blockquote>%s</blockquote>" . "\n<div class='hidden'>%s</div>";
|
||||
$lang->action->desc->diff3 = '将文件名 %s 改为 %s 。' . "\n";
|
||||
|
||||
/* 用来显示动态信息。*/
|
||||
$lang->action->label = new stdclass();
|
||||
$lang->action->label->created = '创建了';
|
||||
$lang->action->label->opened = '创建了';
|
||||
$lang->action->label->changed = '变更了';
|
||||
$lang->action->label->edited = '编辑了';
|
||||
$lang->action->label->assigned = '指派了';
|
||||
$lang->action->label->closed = '关闭了';
|
||||
$lang->action->label->deleted = '删除了';
|
||||
$lang->action->label->deletedfile = '删除附件';
|
||||
$lang->action->label->editfile = '编辑附件';
|
||||
$lang->action->label->erased = '删除了';
|
||||
$lang->action->label->undeleted = '还原了';
|
||||
$lang->action->label->hidden = '隐藏了';
|
||||
$lang->action->label->commented = '评论了';
|
||||
$lang->action->label->activated = '激活了';
|
||||
$lang->action->label->resolved = '解决了';
|
||||
$lang->action->label->reviewed = '评审了';
|
||||
$lang->action->label->moved = '移动了';
|
||||
$lang->action->label->confirmed = '确认了需求,';
|
||||
$lang->action->label->bugconfirmed = '确认了';
|
||||
$lang->action->label->tostory = '转需求';
|
||||
$lang->action->label->frombug = '转需求';
|
||||
$lang->action->label->totask = '转任务';
|
||||
$lang->action->label->svncommited = '提交代码';
|
||||
$lang->action->label->linked2plan = '关联计划';
|
||||
$lang->action->label->unlinkedfromplan = '移除计划';
|
||||
$lang->action->label->linked2project = '关联项目';
|
||||
$lang->action->label->unlinkedfromproject = '移除项目';
|
||||
$lang->action->label->marked = '编辑了';
|
||||
$lang->action->label->started = '开始了';
|
||||
$lang->action->label->recorded = '记录了工时';
|
||||
$lang->action->label->canceled = '取消了';
|
||||
$lang->action->label->finished = '完成了';
|
||||
$lang->action->label->login = '登录系统';
|
||||
$lang->action->label->logout = "退出登录";
|
||||
|
||||
/* 用来生成相应对象的链接。*/
|
||||
$lang->action->label->product = '产品|product|view|productID=%s';
|
||||
$lang->action->label->productplan = '计划|productplan|view|productID=%s';
|
||||
$lang->action->label->release = '发布|release|view|productID=%s';
|
||||
$lang->action->label->story = '需求|story|view|storyID=%s';
|
||||
$lang->action->label->project = '项目|project|view|projectID=%s';
|
||||
$lang->action->label->task = '任务|task|view|taskID=%s';
|
||||
$lang->action->label->build = 'Build|build|view|buildID=%s';
|
||||
$lang->action->label->bug = 'Bug|bug|view|bugID=%s';
|
||||
$lang->action->label->case = '用例|testcase|view|caseID=%s';
|
||||
$lang->action->label->testtask = '测试任务|testtask|view|caseID=%s';
|
||||
$lang->action->label->todo = 'todo|todo|view|todoID=%s';
|
||||
$lang->action->label->doclib = '文档库|doc|browse|libID=%s';
|
||||
$lang->action->label->doc = '文档|doc|view|docID=%s';
|
||||
$lang->action->label->user = '用户|user|view|account=%s';
|
||||
$lang->action->label->space = ' ';
|
||||
|
||||
/* Object type. */
|
||||
$lang->action->search->objectTypeList[''] = '';
|
||||
$lang->action->search->objectTypeList['product'] = '产品';
|
||||
$lang->action->search->objectTypeList['project'] = '项目';
|
||||
$lang->action->search->objectTypeList['bug'] = 'Bug';
|
||||
$lang->action->search->objectTypeList['case'] = '用例';
|
||||
$lang->action->search->objectTypeList['story'] = '需求';
|
||||
$lang->action->search->objectTypeList['task'] = '任务';
|
||||
$lang->action->search->objectTypeList['testtask'] = '测试任务';
|
||||
$lang->action->search->objectTypeList['user'] = '用户';
|
||||
$lang->action->search->objectTypeList['doc'] = '文档';
|
||||
$lang->action->search->objectTypeList['doclib'] = '文档库';
|
||||
$lang->action->search->objectTypeList['todo'] = 'TODO';
|
||||
$lang->action->search->objectTypeList['build'] = 'Build';
|
||||
$lang->action->search->objectTypeList['release'] = '发布';
|
||||
$lang->action->search->objectTypeList['productplan'] = '计划';
|
||||
|
||||
/* 用来在动态显示中显示动作 */
|
||||
$lang->action->search->label[''] = '';
|
||||
$lang->action->search->label['created'] = $lang->action->label->created;
|
||||
$lang->action->search->label['opened'] = $lang->action->label->opened;
|
||||
$lang->action->search->label['changed'] = $lang->action->label->changed;
|
||||
$lang->action->search->label['edited'] = $lang->action->label->edited;
|
||||
$lang->action->search->label['assigned'] = $lang->action->label->assigned;
|
||||
$lang->action->search->label['closed'] = $lang->action->label->closed;
|
||||
$lang->action->search->label['deleted'] = $lang->action->label->deleted;
|
||||
$lang->action->search->label['deletedfile'] = $lang->action->label->deletedfile;
|
||||
$lang->action->search->label['editfile'] = $lang->action->label->editfile;
|
||||
$lang->action->search->label['erased'] = $lang->action->label->erased;
|
||||
$lang->action->search->label['undeleted'] = $lang->action->label->undeleted;
|
||||
$lang->action->search->label['hidden'] = $lang->action->label->hidden;
|
||||
$lang->action->search->label['commented'] = $lang->action->label->commented;
|
||||
$lang->action->search->label['activated'] = $lang->action->label->activated;
|
||||
$lang->action->search->label['resolved'] = $lang->action->label->resolved;
|
||||
$lang->action->search->label['reviewed'] = $lang->action->label->reviewed;
|
||||
$lang->action->search->label['moved'] = $lang->action->label->moved;
|
||||
$lang->action->search->label['confirmed'] = $lang->action->label->confirmed;
|
||||
$lang->action->search->label['bugconfirmed'] = $lang->action->label->bugconfirmed;
|
||||
$lang->action->search->label['tostory'] = $lang->action->label->tostory;
|
||||
$lang->action->search->label['frombug'] = $lang->action->label->frombug;
|
||||
$lang->action->search->label['totask'] = $lang->action->label->totask;
|
||||
$lang->action->search->label['svncommited'] = $lang->action->label->svncommited;
|
||||
$lang->action->search->label['linked2plan'] = $lang->action->label->linked2plan;
|
||||
$lang->action->search->label['unlinkedfromplan'] = $lang->action->label->unlinkedfromplan;
|
||||
$lang->action->search->label['linked2project'] = $lang->action->label->linked2project;
|
||||
$lang->action->search->label['unlinkedfromproject'] = $lang->action->label->unlinkedfromproject;
|
||||
$lang->action->search->label['marked'] = $lang->action->label->marked;
|
||||
$lang->action->search->label['started'] = $lang->action->label->started;
|
||||
$lang->action->search->label['canceled'] = $lang->action->label->canceled;
|
||||
$lang->action->search->label['finished'] = $lang->action->label->finished;
|
||||
$lang->action->search->label['login'] = $lang->action->label->login;
|
||||
$lang->action->search->label['logout'] = $lang->action->label->logout;
|
||||
|
||||
+190
-190
@@ -1,190 +1,190 @@
|
||||
<?php
|
||||
/**
|
||||
* The action module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package action
|
||||
* @version $Id: zh-tw.php 3864 2012-12-20 08:00:07Z wyd621@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->action->common = '系統日誌';
|
||||
$lang->action->trash = '資源回收筒';
|
||||
$lang->action->undelete = '還原';
|
||||
$lang->action->hide = '隱藏';
|
||||
|
||||
$lang->action->product = '產品';
|
||||
$lang->action->project = '項目';
|
||||
$lang->action->objectType = '對象類型';
|
||||
$lang->action->objectID = '對象ID';
|
||||
$lang->action->objectName = '對象名稱';
|
||||
$lang->action->actor = '操作者';
|
||||
$lang->action->action = '動作';
|
||||
$lang->action->actionID = '記錄ID';
|
||||
$lang->action->date = '日期';
|
||||
$lang->action->trashTips = '提示:為了保證系統的完整性,禪道系統的刪除都是標記刪除。';
|
||||
$lang->action->textDiff = '文本格式';
|
||||
$lang->action->original = '原始格式';
|
||||
|
||||
$lang->action->dynamic = new stdclass();
|
||||
$lang->action->dynamic->today = '今天';
|
||||
$lang->action->dynamic->yesterday = '昨天';
|
||||
$lang->action->dynamic->twoDaysAgo = '前天';
|
||||
$lang->action->dynamic->thisWeek = '本週';
|
||||
$lang->action->dynamic->lastWeek = '上周';
|
||||
$lang->action->dynamic->thisMonth = '本月';
|
||||
$lang->action->dynamic->lastMonth = '上月';
|
||||
$lang->action->dynamic->all = '所有';
|
||||
$lang->action->dynamic->search = '搜索';
|
||||
|
||||
$lang->action->objectTypes['product'] = '產品';
|
||||
$lang->action->objectTypes['story'] = '需求';
|
||||
$lang->action->objectTypes['productplan'] = '產品計劃';
|
||||
$lang->action->objectTypes['release'] = '發佈';
|
||||
$lang->action->objectTypes['project'] = '項目';
|
||||
$lang->action->objectTypes['task'] = '任務';
|
||||
$lang->action->objectTypes['build'] = 'Build';
|
||||
$lang->action->objectTypes['bug'] = 'Bug';
|
||||
$lang->action->objectTypes['case'] = '用例';
|
||||
$lang->action->objectTypes['testtask'] = '測試任務';
|
||||
$lang->action->objectTypes['user'] = '用戶';
|
||||
$lang->action->objectTypes['doc'] = '文檔';
|
||||
$lang->action->objectTypes['doclib'] = '文檔庫';
|
||||
$lang->action->objectTypes['todo'] = 'TODO';
|
||||
|
||||
/* 用來描述操作歷史記錄。*/
|
||||
$lang->action->desc = new stdclass();
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> by <strong>$actor</strong>。' . "\n";
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> as <strong>$extra</strong> by <strong>$actor</strong>。' . "\n";
|
||||
$lang->action->desc->opened = '$date, 由 <strong>$actor</strong> 創建。' . "\n";
|
||||
$lang->action->desc->created = '$date, 由 <strong>$actor</strong> 創建。' . "\n";
|
||||
$lang->action->desc->changed = '$date, 由 <strong>$actor</strong> 變更。' . "\n";
|
||||
$lang->action->desc->edited = '$date, 由 <strong>$actor</strong> 編輯。' . "\n";
|
||||
$lang->action->desc->assigned = '$date, 由 <strong>$actor</strong> 指派給 <strong>$extra</strong>。' . "\n";
|
||||
$lang->action->desc->closed = '$date, 由 <strong>$actor</strong> 關閉。' . "\n";
|
||||
$lang->action->desc->deleted = '$date, 由 <strong>$actor</strong> 刪除。' . "\n";
|
||||
$lang->action->desc->deletedfile = '$date, 由 <strong>$actor</strong> 刪除了附件:<strong><i>$extra</i></strong>。' . "\n";
|
||||
$lang->action->desc->editfile = '$date, 由 <strong>$actor</strong> 編輯了附件:<strong><i>$extra</i></strong>。' . "\n";
|
||||
$lang->action->desc->erased = '$date, 由 <strong>$actor</strong> 刪除。' . "\n";
|
||||
$lang->action->desc->undeleted = '$date, 由 <strong>$actor</strong> 還原。' . "\n";
|
||||
$lang->action->desc->hidden = '$date, 由 <strong>$actor</strong> 隱藏。' . "\n";
|
||||
$lang->action->desc->commented = '$date, 由 <strong>$actor</strong> 添加備註。' . "\n";
|
||||
$lang->action->desc->activated = '$date, 由 <strong>$actor</strong> 激活。' . "\n";
|
||||
$lang->action->desc->moved = '$date, 由 <strong>$actor</strong> 移動,之前為 "$extra"。' . "\n";
|
||||
$lang->action->desc->confirmed = '$date, 由 <strong>$actor</strong> 確認需求變動,最新版本為<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->bugconfirmed = '$date, 由 <strong>$actor</strong> 確認Bug。' . "\n";
|
||||
$lang->action->desc->frombug = '$date, 由 <strong>$actor</strong> Bug轉化而來,Bug編號為 <strong>$extra</strong>。';
|
||||
$lang->action->desc->started = '$date, 由 <strong>$actor</strong> 啟動。' . "\n";
|
||||
$lang->action->desc->canceled = '$date, 由 <strong>$actor</strong> 取消。' . "\n";
|
||||
$lang->action->desc->svncommited = '$date, 由 <strong>$actor</strong> 提交代碼,版本為<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->finished = '$date, 由 <strong>$actor</strong> 完成。' . "\n";
|
||||
$lang->action->desc->diff1 = '修改了 <strong><i>%s</i></strong>,舊值為 "%s",新值為 "%s"。<br />' . "\n";
|
||||
$lang->action->desc->diff2 = '修改了 <strong><i>%s</i></strong>,區別為:' . "\n" . "<blockquote>%s</blockquote>" . "\n<div class='hidden'>%s</div>";
|
||||
$lang->action->desc->diff3 = '將檔案名 %s 改為 %s 。' . "\n";
|
||||
|
||||
/* 用來顯示動態信息。*/
|
||||
$lang->action->label = new stdclass();
|
||||
$lang->action->label->created = '創建了';
|
||||
$lang->action->label->opened = '創建了';
|
||||
$lang->action->label->changed = '變更了';
|
||||
$lang->action->label->edited = '編輯了';
|
||||
$lang->action->label->assigned = '指派了';
|
||||
$lang->action->label->closed = '關閉了';
|
||||
$lang->action->label->deleted = '刪除了';
|
||||
$lang->action->label->deletedfile = '刪除附件';
|
||||
$lang->action->label->editfile = '編輯附件';
|
||||
$lang->action->label->erased = '刪除了';
|
||||
$lang->action->label->undeleted = '還原了';
|
||||
$lang->action->label->hidden = '隱藏了';
|
||||
$lang->action->label->commented = '評論了';
|
||||
$lang->action->label->activated = '激活了';
|
||||
$lang->action->label->resolved = '解決了';
|
||||
$lang->action->label->reviewed = '評審了';
|
||||
$lang->action->label->moved = '移動了';
|
||||
$lang->action->label->confirmed = '確認了需求,';
|
||||
$lang->action->label->bugconfirmed = '確認了';
|
||||
$lang->action->label->tostory = '轉需求';
|
||||
$lang->action->label->frombug = '轉需求';
|
||||
$lang->action->label->totask = '轉任務';
|
||||
$lang->action->label->svncommited = '提交代碼';
|
||||
$lang->action->label->linked2plan = '關聯計劃';
|
||||
$lang->action->label->unlinkedfromplan = '移除計劃';
|
||||
$lang->action->label->linked2project = '關聯項目';
|
||||
$lang->action->label->unlinkedfromproject = '移除項目';
|
||||
$lang->action->label->marked = '編輯了';
|
||||
$lang->action->label->started = '開始了';
|
||||
$lang->action->label->canceled = '取消了';
|
||||
$lang->action->label->finished = '完成了';
|
||||
$lang->action->label->login = '登錄系統';
|
||||
$lang->action->label->logout = "退出登錄";
|
||||
|
||||
/* 用來生成相應對象的連結。*/
|
||||
$lang->action->label->product = '產品|product|view|productID=%s';
|
||||
$lang->action->label->productplan = '計劃|productplan|view|productID=%s';
|
||||
$lang->action->label->release = '發佈|release|view|productID=%s';
|
||||
$lang->action->label->story = '需求|story|view|storyID=%s';
|
||||
$lang->action->label->project = '項目|project|view|projectID=%s';
|
||||
$lang->action->label->task = '任務|task|view|taskID=%s';
|
||||
$lang->action->label->build = 'Build|build|view|buildID=%s';
|
||||
$lang->action->label->bug = 'Bug|bug|view|bugID=%s';
|
||||
$lang->action->label->case = '用例|testcase|view|caseID=%s';
|
||||
$lang->action->label->testtask = '測試任務|testtask|view|caseID=%s';
|
||||
$lang->action->label->todo = 'todo|todo|view|todoID=%s';
|
||||
$lang->action->label->doclib = '文檔庫|doc|browse|libID=%s';
|
||||
$lang->action->label->doc = '文檔|doc|view|docID=%s';
|
||||
$lang->action->label->user = '用戶';
|
||||
$lang->action->label->space = ' ';
|
||||
|
||||
/* Object type. */
|
||||
$lang->action->search->objectTypeList[''] = '';
|
||||
$lang->action->search->objectTypeList['product'] = '產品';
|
||||
$lang->action->search->objectTypeList['project'] = '項目';
|
||||
$lang->action->search->objectTypeList['bug'] = 'Bug';
|
||||
$lang->action->search->objectTypeList['case'] = '用例';
|
||||
$lang->action->search->objectTypeList['story'] = '需求';
|
||||
$lang->action->search->objectTypeList['task'] = '任務';
|
||||
$lang->action->search->objectTypeList['testtask'] = '測試任務';
|
||||
$lang->action->search->objectTypeList['user'] = '用戶';
|
||||
$lang->action->search->objectTypeList['doc'] = '文檔';
|
||||
$lang->action->search->objectTypeList['doclib'] = '文檔庫';
|
||||
$lang->action->search->objectTypeList['todo'] = 'TODO';
|
||||
$lang->action->search->objectTypeList['build'] = 'Build';
|
||||
$lang->action->search->objectTypeList['release'] = '發佈';
|
||||
$lang->action->search->objectTypeList['productplan'] = '計劃';
|
||||
|
||||
/* 用來在動態顯示中顯示動作 */
|
||||
$lang->action->search->label[''] = '';
|
||||
$lang->action->search->label['created'] = $lang->action->label->created;
|
||||
$lang->action->search->label['opened'] = $lang->action->label->opened;
|
||||
$lang->action->search->label['changed'] = $lang->action->label->changed;
|
||||
$lang->action->search->label['edited'] = $lang->action->label->edited;
|
||||
$lang->action->search->label['assigned'] = $lang->action->label->assigned;
|
||||
$lang->action->search->label['closed'] = $lang->action->label->closed;
|
||||
$lang->action->search->label['deleted'] = $lang->action->label->deleted;
|
||||
$lang->action->search->label['deletedfile'] = $lang->action->label->deletedfile;
|
||||
$lang->action->search->label['editfile'] = $lang->action->label->editfile;
|
||||
$lang->action->search->label['erased'] = $lang->action->label->erased;
|
||||
$lang->action->search->label['undeleted'] = $lang->action->label->undeleted;
|
||||
$lang->action->search->label['hidden'] = $lang->action->label->hidden;
|
||||
$lang->action->search->label['commented'] = $lang->action->label->commented;
|
||||
$lang->action->search->label['activated'] = $lang->action->label->activated;
|
||||
$lang->action->search->label['resolved'] = $lang->action->label->resolved;
|
||||
$lang->action->search->label['reviewed'] = $lang->action->label->reviewed;
|
||||
$lang->action->search->label['moved'] = $lang->action->label->moved;
|
||||
$lang->action->search->label['confirmed'] = $lang->action->label->confirmed;
|
||||
$lang->action->search->label['bugconfirmed'] = $lang->action->label->bugconfirmed;
|
||||
$lang->action->search->label['tostory'] = $lang->action->label->tostory;
|
||||
$lang->action->search->label['frombug'] = $lang->action->label->frombug;
|
||||
$lang->action->search->label['totask'] = $lang->action->label->totask;
|
||||
$lang->action->search->label['svncommited'] = $lang->action->label->svncommited;
|
||||
$lang->action->search->label['linked2plan'] = $lang->action->label->linked2plan;
|
||||
$lang->action->search->label['unlinkedfromplan'] = $lang->action->label->unlinkedfromplan;
|
||||
$lang->action->search->label['linked2project'] = $lang->action->label->linked2project;
|
||||
$lang->action->search->label['unlinkedfromproject'] = $lang->action->label->unlinkedfromproject;
|
||||
$lang->action->search->label['marked'] = $lang->action->label->marked;
|
||||
$lang->action->search->label['started'] = $lang->action->label->started;
|
||||
$lang->action->search->label['canceled'] = $lang->action->label->canceled;
|
||||
$lang->action->search->label['finished'] = $lang->action->label->finished;
|
||||
$lang->action->search->label['login'] = $lang->action->label->login;
|
||||
$lang->action->search->label['logout'] = $lang->action->label->logout;
|
||||
<?php
|
||||
/**
|
||||
* The action module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package action
|
||||
* @version $Id: zh-tw.php 3864 2012-12-20 08:00:07Z wyd621@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->action->common = '系統日誌';
|
||||
$lang->action->trash = '資源回收筒';
|
||||
$lang->action->undelete = '還原';
|
||||
$lang->action->hide = '隱藏';
|
||||
|
||||
$lang->action->product = '產品';
|
||||
$lang->action->project = '項目';
|
||||
$lang->action->objectType = '對象類型';
|
||||
$lang->action->objectID = '對象ID';
|
||||
$lang->action->objectName = '對象名稱';
|
||||
$lang->action->actor = '操作者';
|
||||
$lang->action->action = '動作';
|
||||
$lang->action->actionID = '記錄ID';
|
||||
$lang->action->date = '日期';
|
||||
$lang->action->trashTips = '提示:為了保證系統的完整性,禪道系統的刪除都是標記刪除。';
|
||||
$lang->action->textDiff = '文本格式';
|
||||
$lang->action->original = '原始格式';
|
||||
|
||||
$lang->action->dynamic = new stdclass();
|
||||
$lang->action->dynamic->today = '今天';
|
||||
$lang->action->dynamic->yesterday = '昨天';
|
||||
$lang->action->dynamic->twoDaysAgo = '前天';
|
||||
$lang->action->dynamic->thisWeek = '本週';
|
||||
$lang->action->dynamic->lastWeek = '上周';
|
||||
$lang->action->dynamic->thisMonth = '本月';
|
||||
$lang->action->dynamic->lastMonth = '上月';
|
||||
$lang->action->dynamic->all = '所有';
|
||||
$lang->action->dynamic->search = '搜索';
|
||||
|
||||
$lang->action->objectTypes['product'] = '產品';
|
||||
$lang->action->objectTypes['story'] = '需求';
|
||||
$lang->action->objectTypes['productplan'] = '產品計劃';
|
||||
$lang->action->objectTypes['release'] = '發佈';
|
||||
$lang->action->objectTypes['project'] = '項目';
|
||||
$lang->action->objectTypes['task'] = '任務';
|
||||
$lang->action->objectTypes['build'] = 'Build';
|
||||
$lang->action->objectTypes['bug'] = 'Bug';
|
||||
$lang->action->objectTypes['case'] = '用例';
|
||||
$lang->action->objectTypes['testtask'] = '測試任務';
|
||||
$lang->action->objectTypes['user'] = '用戶';
|
||||
$lang->action->objectTypes['doc'] = '文檔';
|
||||
$lang->action->objectTypes['doclib'] = '文檔庫';
|
||||
$lang->action->objectTypes['todo'] = 'TODO';
|
||||
|
||||
/* 用來描述操作歷史記錄。*/
|
||||
$lang->action->desc = new stdclass();
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> by <strong>$actor</strong>。' . "\n";
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> as <strong>$extra</strong> by <strong>$actor</strong>。' . "\n";
|
||||
$lang->action->desc->opened = '$date, 由 <strong>$actor</strong> 創建。' . "\n";
|
||||
$lang->action->desc->created = '$date, 由 <strong>$actor</strong> 創建。' . "\n";
|
||||
$lang->action->desc->changed = '$date, 由 <strong>$actor</strong> 變更。' . "\n";
|
||||
$lang->action->desc->edited = '$date, 由 <strong>$actor</strong> 編輯。' . "\n";
|
||||
$lang->action->desc->assigned = '$date, 由 <strong>$actor</strong> 指派給 <strong>$extra</strong>。' . "\n";
|
||||
$lang->action->desc->closed = '$date, 由 <strong>$actor</strong> 關閉。' . "\n";
|
||||
$lang->action->desc->deleted = '$date, 由 <strong>$actor</strong> 刪除。' . "\n";
|
||||
$lang->action->desc->deletedfile = '$date, 由 <strong>$actor</strong> 刪除了附件:<strong><i>$extra</i></strong>。' . "\n";
|
||||
$lang->action->desc->editfile = '$date, 由 <strong>$actor</strong> 編輯了附件:<strong><i>$extra</i></strong>。' . "\n";
|
||||
$lang->action->desc->erased = '$date, 由 <strong>$actor</strong> 刪除。' . "\n";
|
||||
$lang->action->desc->undeleted = '$date, 由 <strong>$actor</strong> 還原。' . "\n";
|
||||
$lang->action->desc->hidden = '$date, 由 <strong>$actor</strong> 隱藏。' . "\n";
|
||||
$lang->action->desc->commented = '$date, 由 <strong>$actor</strong> 添加備註。' . "\n";
|
||||
$lang->action->desc->activated = '$date, 由 <strong>$actor</strong> 激活。' . "\n";
|
||||
$lang->action->desc->moved = '$date, 由 <strong>$actor</strong> 移動,之前為 "$extra"。' . "\n";
|
||||
$lang->action->desc->confirmed = '$date, 由 <strong>$actor</strong> 確認需求變動,最新版本為<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->bugconfirmed = '$date, 由 <strong>$actor</strong> 確認Bug。' . "\n";
|
||||
$lang->action->desc->frombug = '$date, 由 <strong>$actor</strong> Bug轉化而來,Bug編號為 <strong>$extra</strong>。';
|
||||
$lang->action->desc->started = '$date, 由 <strong>$actor</strong> 啟動。' . "\n";
|
||||
$lang->action->desc->canceled = '$date, 由 <strong>$actor</strong> 取消。' . "\n";
|
||||
$lang->action->desc->svncommited = '$date, 由 <strong>$actor</strong> 提交代碼,版本為<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->finished = '$date, 由 <strong>$actor</strong> 完成。' . "\n";
|
||||
$lang->action->desc->diff1 = '修改了 <strong><i>%s</i></strong>,舊值為 "%s",新值為 "%s"。<br />' . "\n";
|
||||
$lang->action->desc->diff2 = '修改了 <strong><i>%s</i></strong>,區別為:' . "\n" . "<blockquote>%s</blockquote>" . "\n<div class='hidden'>%s</div>";
|
||||
$lang->action->desc->diff3 = '將檔案名 %s 改為 %s 。' . "\n";
|
||||
|
||||
/* 用來顯示動態信息。*/
|
||||
$lang->action->label = new stdclass();
|
||||
$lang->action->label->created = '創建了';
|
||||
$lang->action->label->opened = '創建了';
|
||||
$lang->action->label->changed = '變更了';
|
||||
$lang->action->label->edited = '編輯了';
|
||||
$lang->action->label->assigned = '指派了';
|
||||
$lang->action->label->closed = '關閉了';
|
||||
$lang->action->label->deleted = '刪除了';
|
||||
$lang->action->label->deletedfile = '刪除附件';
|
||||
$lang->action->label->editfile = '編輯附件';
|
||||
$lang->action->label->erased = '刪除了';
|
||||
$lang->action->label->undeleted = '還原了';
|
||||
$lang->action->label->hidden = '隱藏了';
|
||||
$lang->action->label->commented = '評論了';
|
||||
$lang->action->label->activated = '激活了';
|
||||
$lang->action->label->resolved = '解決了';
|
||||
$lang->action->label->reviewed = '評審了';
|
||||
$lang->action->label->moved = '移動了';
|
||||
$lang->action->label->confirmed = '確認了需求,';
|
||||
$lang->action->label->bugconfirmed = '確認了';
|
||||
$lang->action->label->tostory = '轉需求';
|
||||
$lang->action->label->frombug = '轉需求';
|
||||
$lang->action->label->totask = '轉任務';
|
||||
$lang->action->label->svncommited = '提交代碼';
|
||||
$lang->action->label->linked2plan = '關聯計劃';
|
||||
$lang->action->label->unlinkedfromplan = '移除計劃';
|
||||
$lang->action->label->linked2project = '關聯項目';
|
||||
$lang->action->label->unlinkedfromproject = '移除項目';
|
||||
$lang->action->label->marked = '編輯了';
|
||||
$lang->action->label->started = '開始了';
|
||||
$lang->action->label->canceled = '取消了';
|
||||
$lang->action->label->finished = '完成了';
|
||||
$lang->action->label->login = '登錄系統';
|
||||
$lang->action->label->logout = "退出登錄";
|
||||
|
||||
/* 用來生成相應對象的連結。*/
|
||||
$lang->action->label->product = '產品|product|view|productID=%s';
|
||||
$lang->action->label->productplan = '計劃|productplan|view|productID=%s';
|
||||
$lang->action->label->release = '發佈|release|view|productID=%s';
|
||||
$lang->action->label->story = '需求|story|view|storyID=%s';
|
||||
$lang->action->label->project = '項目|project|view|projectID=%s';
|
||||
$lang->action->label->task = '任務|task|view|taskID=%s';
|
||||
$lang->action->label->build = 'Build|build|view|buildID=%s';
|
||||
$lang->action->label->bug = 'Bug|bug|view|bugID=%s';
|
||||
$lang->action->label->case = '用例|testcase|view|caseID=%s';
|
||||
$lang->action->label->testtask = '測試任務|testtask|view|caseID=%s';
|
||||
$lang->action->label->todo = 'todo|todo|view|todoID=%s';
|
||||
$lang->action->label->doclib = '文檔庫|doc|browse|libID=%s';
|
||||
$lang->action->label->doc = '文檔|doc|view|docID=%s';
|
||||
$lang->action->label->user = '用戶';
|
||||
$lang->action->label->space = ' ';
|
||||
|
||||
/* Object type. */
|
||||
$lang->action->search->objectTypeList[''] = '';
|
||||
$lang->action->search->objectTypeList['product'] = '產品';
|
||||
$lang->action->search->objectTypeList['project'] = '項目';
|
||||
$lang->action->search->objectTypeList['bug'] = 'Bug';
|
||||
$lang->action->search->objectTypeList['case'] = '用例';
|
||||
$lang->action->search->objectTypeList['story'] = '需求';
|
||||
$lang->action->search->objectTypeList['task'] = '任務';
|
||||
$lang->action->search->objectTypeList['testtask'] = '測試任務';
|
||||
$lang->action->search->objectTypeList['user'] = '用戶';
|
||||
$lang->action->search->objectTypeList['doc'] = '文檔';
|
||||
$lang->action->search->objectTypeList['doclib'] = '文檔庫';
|
||||
$lang->action->search->objectTypeList['todo'] = 'TODO';
|
||||
$lang->action->search->objectTypeList['build'] = 'Build';
|
||||
$lang->action->search->objectTypeList['release'] = '發佈';
|
||||
$lang->action->search->objectTypeList['productplan'] = '計劃';
|
||||
|
||||
/* 用來在動態顯示中顯示動作 */
|
||||
$lang->action->search->label[''] = '';
|
||||
$lang->action->search->label['created'] = $lang->action->label->created;
|
||||
$lang->action->search->label['opened'] = $lang->action->label->opened;
|
||||
$lang->action->search->label['changed'] = $lang->action->label->changed;
|
||||
$lang->action->search->label['edited'] = $lang->action->label->edited;
|
||||
$lang->action->search->label['assigned'] = $lang->action->label->assigned;
|
||||
$lang->action->search->label['closed'] = $lang->action->label->closed;
|
||||
$lang->action->search->label['deleted'] = $lang->action->label->deleted;
|
||||
$lang->action->search->label['deletedfile'] = $lang->action->label->deletedfile;
|
||||
$lang->action->search->label['editfile'] = $lang->action->label->editfile;
|
||||
$lang->action->search->label['erased'] = $lang->action->label->erased;
|
||||
$lang->action->search->label['undeleted'] = $lang->action->label->undeleted;
|
||||
$lang->action->search->label['hidden'] = $lang->action->label->hidden;
|
||||
$lang->action->search->label['commented'] = $lang->action->label->commented;
|
||||
$lang->action->search->label['activated'] = $lang->action->label->activated;
|
||||
$lang->action->search->label['resolved'] = $lang->action->label->resolved;
|
||||
$lang->action->search->label['reviewed'] = $lang->action->label->reviewed;
|
||||
$lang->action->search->label['moved'] = $lang->action->label->moved;
|
||||
$lang->action->search->label['confirmed'] = $lang->action->label->confirmed;
|
||||
$lang->action->search->label['bugconfirmed'] = $lang->action->label->bugconfirmed;
|
||||
$lang->action->search->label['tostory'] = $lang->action->label->tostory;
|
||||
$lang->action->search->label['frombug'] = $lang->action->label->frombug;
|
||||
$lang->action->search->label['totask'] = $lang->action->label->totask;
|
||||
$lang->action->search->label['svncommited'] = $lang->action->label->svncommited;
|
||||
$lang->action->search->label['linked2plan'] = $lang->action->label->linked2plan;
|
||||
$lang->action->search->label['unlinkedfromplan'] = $lang->action->label->unlinkedfromplan;
|
||||
$lang->action->search->label['linked2project'] = $lang->action->label->linked2project;
|
||||
$lang->action->search->label['unlinkedfromproject'] = $lang->action->label->unlinkedfromproject;
|
||||
$lang->action->search->label['marked'] = $lang->action->label->marked;
|
||||
$lang->action->search->label['started'] = $lang->action->label->started;
|
||||
$lang->action->search->label['canceled'] = $lang->action->label->canceled;
|
||||
$lang->action->search->label['finished'] = $lang->action->label->finished;
|
||||
$lang->action->search->label['login'] = $lang->action->label->login;
|
||||
$lang->action->search->label['logout'] = $lang->action->label->logout;
|
||||
|
||||
+627
-627
File diff suppressed because it is too large
Load Diff
@@ -1,54 +1,54 @@
|
||||
<?php
|
||||
/**
|
||||
* The trash view file of action module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package action
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/colorize.html.php';?>
|
||||
<table class='table-1 colored tablesorter'>
|
||||
<?php $vars = "orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}"; ?>
|
||||
<thead>
|
||||
<tr class='colhead'>
|
||||
<th class='w-80px'><?php common::printOrderLink('objectType', $orderBy, $vars, $lang->action->objectType);?></th>
|
||||
<th class='w-id'> <?php common::printOrderLink('objectID', $orderBy, $vars, $lang->idAB);?></th>
|
||||
<th><?php echo $lang->action->objectName;?></th>
|
||||
<th class='w-100px'><?php common::printOrderLink('actor', $orderBy, $vars, $lang->action->actor);?></th>
|
||||
<th class='w-150px'><?php common::printOrderLink('date', $orderBy, $vars, $lang->action->date);?></th>
|
||||
<th class='w-100px'><?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($trashes as $action):?>
|
||||
<?php $module = $action->objectType == 'case' ? 'testcase' : $action->objectType;?>
|
||||
<tr class='a-center'>
|
||||
<td><?php echo $lang->action->objectTypes[$action->objectType];?></td>
|
||||
<td><?php echo $action->objectID;?></td>
|
||||
<td class='a-left'><?php echo html::a($this->createLink($module, 'view', "id=$action->objectID"), $action->objectName);?></td>
|
||||
<td><?php echo $users[$action->actor];?></td>
|
||||
<td><?php echo $action->date;?></td>
|
||||
<td>
|
||||
<?php
|
||||
common::printLink('action', 'undelete', "actionid=$action->id", $lang->action->undelete, 'hiddenwin');
|
||||
common::printLink('action', 'hide', "actionid=$action->id", $lang->action->hide, 'hiddenwin');
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan='6'>
|
||||
<div class='f-left'><?php echo $lang->action->trashTips;?></div>
|
||||
<div><?php $pager->show();?></div>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The trash view file of action module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package action
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/colorize.html.php';?>
|
||||
<table class='table-1 colored tablesorter'>
|
||||
<?php $vars = "orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}"; ?>
|
||||
<thead>
|
||||
<tr class='colhead'>
|
||||
<th class='w-80px'><?php common::printOrderLink('objectType', $orderBy, $vars, $lang->action->objectType);?></th>
|
||||
<th class='w-id'> <?php common::printOrderLink('objectID', $orderBy, $vars, $lang->idAB);?></th>
|
||||
<th><?php echo $lang->action->objectName;?></th>
|
||||
<th class='w-100px'><?php common::printOrderLink('actor', $orderBy, $vars, $lang->action->actor);?></th>
|
||||
<th class='w-150px'><?php common::printOrderLink('date', $orderBy, $vars, $lang->action->date);?></th>
|
||||
<th class='w-100px'><?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($trashes as $action):?>
|
||||
<?php $module = $action->objectType == 'case' ? 'testcase' : $action->objectType;?>
|
||||
<tr class='a-center'>
|
||||
<td><?php echo $lang->action->objectTypes[$action->objectType];?></td>
|
||||
<td><?php echo $action->objectID;?></td>
|
||||
<td class='a-left'><?php echo html::a($this->createLink($module, 'view', "id=$action->objectID"), $action->objectName);?></td>
|
||||
<td><?php echo $users[$action->actor];?></td>
|
||||
<td><?php echo $action->date;?></td>
|
||||
<td>
|
||||
<?php
|
||||
common::printLink('action', 'undelete', "actionid=$action->id", $lang->action->undelete, 'hiddenwin');
|
||||
common::printLink('action', 'hide', "actionid=$action->id", $lang->action->hide, 'hiddenwin');
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan='6'>
|
||||
<div class='f-left'><?php echo $lang->action->trashTips;?></div>
|
||||
<div><?php $pager->show();?></div>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
+190
-190
@@ -1,190 +1,190 @@
|
||||
<?php
|
||||
/**
|
||||
* The control file of admin module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class admin extends control
|
||||
{
|
||||
/**
|
||||
* Index page.
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$community = zget($this->config->global, 'community');
|
||||
if(!$community or $community == 'na')
|
||||
{
|
||||
$this->view->bind = false;
|
||||
$this->view->account = false;
|
||||
$this->view->ignore = $community == 'na';
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->view->bind = true;
|
||||
$this->view->account = $community;
|
||||
$this->view->ignore = false;
|
||||
}
|
||||
|
||||
$this->app->loadLang('misc');
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Ignore notice of register and bind.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function ignore()
|
||||
{
|
||||
$this->loadModel('setting')->setItem('system.common.global.community', 'na');
|
||||
die(js::locate(inlink('index'), 'parent'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Register zentao.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function register()
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$response = $this->admin->registerByAPI();
|
||||
if($response == 'success')
|
||||
{
|
||||
$this->loadModel('setting')->setItem('system.common.global.community', $this->post->account);
|
||||
echo js::alert($this->lang->admin->register->success);
|
||||
die(js::locate(inlink('index'), 'parent'));
|
||||
}
|
||||
die($response);
|
||||
}
|
||||
$this->view->register = $this->admin->getRegisterInfo();
|
||||
$this->view->sn = $this->config->global->sn;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Bind zentao.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function bind()
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$response = $this->admin->bindByAPI();
|
||||
if($response == 'success')
|
||||
{
|
||||
$this->loadModel('setting')->setItem('system.common.global.community', $this->post->account);
|
||||
echo js::alert($this->lang->admin->bind->success);
|
||||
die(js::locate(inlink('index'), 'parent'));
|
||||
}
|
||||
die($response);
|
||||
}
|
||||
$this->view->sn = $this->config->global->sn;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check all tables.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function checkDB()
|
||||
{
|
||||
$tables = $this->dbh->query('SHOW TABLES')->fetchAll();
|
||||
foreach($tables as $table)
|
||||
{
|
||||
$tableName = current((array)$table);
|
||||
$result = $this->dbh->query("REPAIR TABLE $tableName")->fetch();
|
||||
echo "Repairing TABLE: " . $result->Table . "\t" . $result->Msg_type . ":" . $result->Msg_text . "\n";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Rename table for from windows to linux.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function win2Unix()
|
||||
{
|
||||
$renameTables = array(
|
||||
'zt_casestep' => 'zt_caseStep' ,
|
||||
'zt_doclib' => 'zt_docLib' ,
|
||||
'zt_grouppriv' => 'zt_groupPriv' ,
|
||||
'zt_productplan' => 'zt_productPlan' ,
|
||||
'zt_projectproduct' => 'zt_projectProduct' ,
|
||||
'zt_projectstory' => 'zt_projectStory' ,
|
||||
'zt_relationoftasks' => 'zt_relationOfTasks',
|
||||
'zt_storyspec' => 'zt_storySpec' ,
|
||||
'zt_taskestimate' => 'zt_taskEstimate' ,
|
||||
'zt_testresult' => 'zt_testResult' ,
|
||||
'zt_testrun' => 'zt_testRun' ,
|
||||
'zt_testtask' => 'zt_testTask' ,
|
||||
'zt_usercontact' => 'zt_userContact' ,
|
||||
'zt_usergroup' => 'zt_userGroup' ,
|
||||
'zt_userquery' => 'zt_userQuery' ,
|
||||
'zt_usertpl' => 'zt_userTPL'
|
||||
);
|
||||
|
||||
$existTables = $this->dbh->query('SHOW TABLES')->fetchAll();
|
||||
foreach($existTables as $key => $table) $existTables[$key] = current((array)$table);
|
||||
$existTables = array_flip($existTables);
|
||||
|
||||
foreach($renameTables as $oldTable => $newTable)
|
||||
{
|
||||
if(isset($existTables[$newTable]))
|
||||
{
|
||||
echo "Has existed table '$newTable'\n";
|
||||
}
|
||||
elseif(!isset($existTables[$oldTable]))
|
||||
{
|
||||
echo "No found table '$oldTable'\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->dbh->query("RENAME TABLE `$oldTable` TO `$newTable`");
|
||||
echo "RENAME TABLE `$oldTable` TO `$newTable`\n";
|
||||
}
|
||||
}
|
||||
echo "Finish!\n";
|
||||
}
|
||||
|
||||
/**
|
||||
* Confirm clear data.
|
||||
*
|
||||
* @param string $confirm ''|no|yes
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function clearData($confirm = '')
|
||||
{
|
||||
if($confirm == '') $this->display();
|
||||
|
||||
if($confirm == 'no')
|
||||
{
|
||||
die(js::confirm($this->lang->admin->confirmClearData, inlink('clearData', "confirm=yes")));
|
||||
}
|
||||
elseif($confirm == 'yes')
|
||||
{
|
||||
$result = $this->admin->clearData();
|
||||
if($result)
|
||||
{
|
||||
die(js::alert($this->lang->admin->clearDataSucceed));
|
||||
}
|
||||
die(js::alert($this->lang->admin->clearDataFailed));
|
||||
}
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The control file of admin module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class admin extends control
|
||||
{
|
||||
/**
|
||||
* Index page.
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$community = zget($this->config->global, 'community');
|
||||
if(!$community or $community == 'na')
|
||||
{
|
||||
$this->view->bind = false;
|
||||
$this->view->account = false;
|
||||
$this->view->ignore = $community == 'na';
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->view->bind = true;
|
||||
$this->view->account = $community;
|
||||
$this->view->ignore = false;
|
||||
}
|
||||
|
||||
$this->app->loadLang('misc');
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Ignore notice of register and bind.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function ignore()
|
||||
{
|
||||
$this->loadModel('setting')->setItem('system.common.global.community', 'na');
|
||||
die(js::locate(inlink('index'), 'parent'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Register zentao.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function register()
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$response = $this->admin->registerByAPI();
|
||||
if($response == 'success')
|
||||
{
|
||||
$this->loadModel('setting')->setItem('system.common.global.community', $this->post->account);
|
||||
echo js::alert($this->lang->admin->register->success);
|
||||
die(js::locate(inlink('index'), 'parent'));
|
||||
}
|
||||
die($response);
|
||||
}
|
||||
$this->view->register = $this->admin->getRegisterInfo();
|
||||
$this->view->sn = $this->config->global->sn;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Bind zentao.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function bind()
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$response = $this->admin->bindByAPI();
|
||||
if($response == 'success')
|
||||
{
|
||||
$this->loadModel('setting')->setItem('system.common.global.community', $this->post->account);
|
||||
echo js::alert($this->lang->admin->bind->success);
|
||||
die(js::locate(inlink('index'), 'parent'));
|
||||
}
|
||||
die($response);
|
||||
}
|
||||
$this->view->sn = $this->config->global->sn;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check all tables.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function checkDB()
|
||||
{
|
||||
$tables = $this->dbh->query('SHOW TABLES')->fetchAll();
|
||||
foreach($tables as $table)
|
||||
{
|
||||
$tableName = current((array)$table);
|
||||
$result = $this->dbh->query("REPAIR TABLE $tableName")->fetch();
|
||||
echo "Repairing TABLE: " . $result->Table . "\t" . $result->Msg_type . ":" . $result->Msg_text . "\n";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Rename table for from windows to linux.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function win2Unix()
|
||||
{
|
||||
$renameTables = array(
|
||||
'zt_casestep' => 'zt_caseStep' ,
|
||||
'zt_doclib' => 'zt_docLib' ,
|
||||
'zt_grouppriv' => 'zt_groupPriv' ,
|
||||
'zt_productplan' => 'zt_productPlan' ,
|
||||
'zt_projectproduct' => 'zt_projectProduct' ,
|
||||
'zt_projectstory' => 'zt_projectStory' ,
|
||||
'zt_relationoftasks' => 'zt_relationOfTasks',
|
||||
'zt_storyspec' => 'zt_storySpec' ,
|
||||
'zt_taskestimate' => 'zt_taskEstimate' ,
|
||||
'zt_testresult' => 'zt_testResult' ,
|
||||
'zt_testrun' => 'zt_testRun' ,
|
||||
'zt_testtask' => 'zt_testTask' ,
|
||||
'zt_usercontact' => 'zt_userContact' ,
|
||||
'zt_usergroup' => 'zt_userGroup' ,
|
||||
'zt_userquery' => 'zt_userQuery' ,
|
||||
'zt_usertpl' => 'zt_userTPL'
|
||||
);
|
||||
|
||||
$existTables = $this->dbh->query('SHOW TABLES')->fetchAll();
|
||||
foreach($existTables as $key => $table) $existTables[$key] = current((array)$table);
|
||||
$existTables = array_flip($existTables);
|
||||
|
||||
foreach($renameTables as $oldTable => $newTable)
|
||||
{
|
||||
if(isset($existTables[$newTable]))
|
||||
{
|
||||
echo "Has existed table '$newTable'\n";
|
||||
}
|
||||
elseif(!isset($existTables[$oldTable]))
|
||||
{
|
||||
echo "No found table '$oldTable'\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->dbh->query("RENAME TABLE `$oldTable` TO `$newTable`");
|
||||
echo "RENAME TABLE `$oldTable` TO `$newTable`\n";
|
||||
}
|
||||
}
|
||||
echo "Finish!\n";
|
||||
}
|
||||
|
||||
/**
|
||||
* Confirm clear data.
|
||||
*
|
||||
* @param string $confirm ''|no|yes
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function clearData($confirm = '')
|
||||
{
|
||||
if($confirm == '') $this->display();
|
||||
|
||||
if($confirm == 'no')
|
||||
{
|
||||
die(js::confirm($this->lang->admin->confirmClearData, inlink('clearData', "confirm=yes")));
|
||||
}
|
||||
elseif($confirm == 'yes')
|
||||
{
|
||||
$result = $this->admin->clearData();
|
||||
if($result)
|
||||
{
|
||||
die(js::alert($this->lang->admin->clearDataSucceed));
|
||||
}
|
||||
die(js::alert($this->lang->admin->clearDataFailed));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+56
-56
@@ -1,56 +1,56 @@
|
||||
<?php
|
||||
/**
|
||||
* The admin module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 QingDao Nature Easy Soft Network Technology Co,LTD (www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->admin->common = 'Admin';
|
||||
$lang->admin->index = 'Index';
|
||||
$lang->admin->checkDB = 'Repair data';
|
||||
$lang->admin->company = 'Company';
|
||||
$lang->admin->user = 'User';
|
||||
$lang->admin->group = 'Group';
|
||||
$lang->admin->welcome = 'Welcome to ZenTaoPMS.';
|
||||
|
||||
$lang->admin->browseCompany = 'Browse Company';
|
||||
|
||||
$lang->admin->clearData = 'Clear Data';
|
||||
$lang->admin->confirmClearData = 'Are you sure to clear data?';
|
||||
$lang->admin->clearDataFailed = 'Failed to clear data!';
|
||||
$lang->admin->clearDataSucceed = 'Succeed to clear data!';
|
||||
$lang->admin->clearDataDesc = <<<EOT
|
||||
<strong><font color='red'>Clear data is dangerous. Be sure to backup your database and other data files and sure nobody is using pms when importing.</font></strong>\n
|
||||
The impact of clearing data:
|
||||
1、Clearing data will have no effect on table company,table group,and table groupPriv.
|
||||
2、If you have choosed import demo data when installing,then clearing data will delete the item where key equals showDemoUsers on config table, and delete all demo users on user table.
|
||||
3、For others tables:clear all data.
|
||||
EOT;
|
||||
|
||||
$lang->admin->info = new stdclass();
|
||||
$lang->admin->info->caption = 'ZentaoPMS information';
|
||||
$lang->admin->info->version = 'The current version of the system is %s,';
|
||||
$lang->admin->info->links = 'You can visit the following link:';
|
||||
$lang->admin->info->account = 'Your account in zentao community is %s. ';
|
||||
|
||||
$lang->admin->notice = new stdclass();
|
||||
$lang->admin->notice->register = "Tips: You have not registered in Zentao community (www.zentao.net), %s to register and get the latest information about ZentaoPMS.";
|
||||
$lang->admin->notice->ignore = "ignore";
|
||||
|
||||
$lang->admin->register = new stdclass();
|
||||
$lang->admin->register->caption = 'Register zentao community';
|
||||
$lang->admin->register->click = 'click';
|
||||
$lang->admin->register->lblAccount = 'Numbers and letters, at least three';
|
||||
$lang->admin->register->lblPasswd = 'Numbers and letters, at least six';
|
||||
$lang->admin->register->submit = 'Register';
|
||||
$lang->admin->register->bind = "If you have community account, %s to bind it";
|
||||
$lang->admin->register->success = "Register success";
|
||||
|
||||
$lang->admin->bind = new stdclass();
|
||||
$lang->admin->bind->caption = 'Bind with community account';
|
||||
$lang->admin->bind->action = 'bind';
|
||||
$lang->admin->bind->success = "Bind success";
|
||||
<?php
|
||||
/**
|
||||
* The admin module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 QingDao Nature Easy Soft Network Technology Co,LTD (www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->admin->common = 'Admin';
|
||||
$lang->admin->index = 'Index';
|
||||
$lang->admin->checkDB = 'Repair data';
|
||||
$lang->admin->company = 'Company';
|
||||
$lang->admin->user = 'User';
|
||||
$lang->admin->group = 'Group';
|
||||
$lang->admin->welcome = 'Welcome to ZenTaoPMS.';
|
||||
|
||||
$lang->admin->browseCompany = 'Browse Company';
|
||||
|
||||
$lang->admin->clearData = 'Clear Data';
|
||||
$lang->admin->confirmClearData = 'Are you sure to clear data?';
|
||||
$lang->admin->clearDataFailed = 'Failed to clear data!';
|
||||
$lang->admin->clearDataSucceed = 'Succeed to clear data!';
|
||||
$lang->admin->clearDataDesc = <<<EOT
|
||||
<strong><font color='red'>Clear data is dangerous. Be sure to backup your database and other data files and sure nobody is using pms when importing.</font></strong>\n
|
||||
The impact of clearing data:
|
||||
1、Clearing data will have no effect on table company,table group,and table groupPriv.
|
||||
2、If you have choosed import demo data when installing,then clearing data will delete the item where key equals showDemoUsers on config table, and delete all demo users on user table.
|
||||
3、For others tables:clear all data.
|
||||
EOT;
|
||||
|
||||
$lang->admin->info = new stdclass();
|
||||
$lang->admin->info->caption = 'ZentaoPMS information';
|
||||
$lang->admin->info->version = 'The current version of the system is %s,';
|
||||
$lang->admin->info->links = 'You can visit the following link:';
|
||||
$lang->admin->info->account = 'Your account in zentao community is %s. ';
|
||||
|
||||
$lang->admin->notice = new stdclass();
|
||||
$lang->admin->notice->register = "Tips: You have not registered in Zentao community (www.zentao.net), %s to register and get the latest information about ZentaoPMS.";
|
||||
$lang->admin->notice->ignore = "ignore";
|
||||
|
||||
$lang->admin->register = new stdclass();
|
||||
$lang->admin->register->caption = 'Register zentao community';
|
||||
$lang->admin->register->click = 'click';
|
||||
$lang->admin->register->lblAccount = 'Numbers and letters, at least three';
|
||||
$lang->admin->register->lblPasswd = 'Numbers and letters, at least six';
|
||||
$lang->admin->register->submit = 'Register';
|
||||
$lang->admin->register->bind = "If you have community account, %s to bind it";
|
||||
$lang->admin->register->success = "Register success";
|
||||
|
||||
$lang->admin->bind = new stdclass();
|
||||
$lang->admin->bind->caption = 'Bind with community account';
|
||||
$lang->admin->bind->action = 'bind';
|
||||
$lang->admin->bind->success = "Bind success";
|
||||
|
||||
+56
-56
@@ -1,56 +1,56 @@
|
||||
<?php
|
||||
/**
|
||||
* The admin module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->admin->common = '后台管理';
|
||||
$lang->admin->index = '后台管理首页';
|
||||
$lang->admin->checkDB = '修正数据';
|
||||
$lang->admin->company = '公司管理';
|
||||
$lang->admin->user = '用户管理';
|
||||
$lang->admin->group = '分组管理';
|
||||
$lang->admin->welcome = '欢迎使用禅道管理软件后台管理系统';
|
||||
|
||||
$lang->admin->browseCompany = '浏览公司';
|
||||
|
||||
$lang->admin->clearData = '清除数据';
|
||||
$lang->admin->confirmClearData = '您确认要清除数据吗?';
|
||||
$lang->admin->clearDataFailed = '清除数据失败!';
|
||||
$lang->admin->clearDataSucceed = '清除数据成功!';
|
||||
$lang->admin->clearDataDesc = <<<EOT
|
||||
<strong><font color='red'>清除数据存在一定的风险,清楚数据之前,我们强烈建议您备份数据库及相应的数据文件,并保证清除数据的时候,没有其他人进行操作。</font></strong>\n
|
||||
清除数据对数据库的影响如下:
|
||||
1、清除数据不会对company, group, groupPriv表进行操作。
|
||||
2、如果安装的时候有导入demo数据,则会删除config表key=showDemoUsers的记录,并删除user表中的所有demo用户。
|
||||
3、对于其他表则进行全部清除操作。
|
||||
EOT;
|
||||
|
||||
$lang->admin->info = new stdclass();
|
||||
$lang->admin->info->caption = '禅道系统信息';
|
||||
$lang->admin->info->version = '当前系统的版本是%s,';
|
||||
$lang->admin->info->links = '您可以访问以下链接:';
|
||||
$lang->admin->info->account = "您的禅道社区账户为%s。";
|
||||
|
||||
$lang->admin->notice = new stdclass();
|
||||
$lang->admin->notice->register = "友情提示:您还未在禅道社区(www.zentao.net)登记,%s进行登记,以及时获得禅道最新信息。";
|
||||
$lang->admin->notice->ignore = "不再提示";
|
||||
|
||||
$lang->admin->register = new stdclass();
|
||||
$lang->admin->register->caption = '禅道社区登记';
|
||||
$lang->admin->register->click = '点击此处';
|
||||
$lang->admin->register->lblAccount = '请设置您的用户名,英文字母和数字的组合,三位以上。';
|
||||
$lang->admin->register->lblPasswd = '请设置您的密码。数字和字母的组合,六位以上。';
|
||||
$lang->admin->register->submit = '登记';
|
||||
$lang->admin->register->bind = "如果您已经拥有社区账号,%s关联账户";
|
||||
$lang->admin->register->success = "登记账户成功";
|
||||
|
||||
$lang->admin->bind = new stdclass();
|
||||
$lang->admin->bind->caption = '关联社区账号';
|
||||
$lang->admin->bind->action = '关联';
|
||||
$lang->admin->bind->success = "关联账户成功";
|
||||
<?php
|
||||
/**
|
||||
* The admin module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->admin->common = '后台管理';
|
||||
$lang->admin->index = '后台管理首页';
|
||||
$lang->admin->checkDB = '修正数据';
|
||||
$lang->admin->company = '公司管理';
|
||||
$lang->admin->user = '用户管理';
|
||||
$lang->admin->group = '分组管理';
|
||||
$lang->admin->welcome = '欢迎使用禅道管理软件后台管理系统';
|
||||
|
||||
$lang->admin->browseCompany = '浏览公司';
|
||||
|
||||
$lang->admin->clearData = '清除数据';
|
||||
$lang->admin->confirmClearData = '您确认要清除数据吗?';
|
||||
$lang->admin->clearDataFailed = '清除数据失败!';
|
||||
$lang->admin->clearDataSucceed = '清除数据成功!';
|
||||
$lang->admin->clearDataDesc = <<<EOT
|
||||
<strong><font color='red'>清除数据存在一定的风险,清楚数据之前,我们强烈建议您备份数据库及相应的数据文件,并保证清除数据的时候,没有其他人进行操作。</font></strong>\n
|
||||
清除数据对数据库的影响如下:
|
||||
1、清除数据不会对company, group, groupPriv表进行操作。
|
||||
2、如果安装的时候有导入demo数据,则会删除config表key=showDemoUsers的记录,并删除user表中的所有demo用户。
|
||||
3、对于其他表则进行全部清除操作。
|
||||
EOT;
|
||||
|
||||
$lang->admin->info = new stdclass();
|
||||
$lang->admin->info->caption = '禅道系统信息';
|
||||
$lang->admin->info->version = '当前系统的版本是%s,';
|
||||
$lang->admin->info->links = '您可以访问以下链接:';
|
||||
$lang->admin->info->account = "您的禅道社区账户为%s。";
|
||||
|
||||
$lang->admin->notice = new stdclass();
|
||||
$lang->admin->notice->register = "友情提示:您还未在禅道社区(www.zentao.net)登记,%s进行登记,以及时获得禅道最新信息。";
|
||||
$lang->admin->notice->ignore = "不再提示";
|
||||
|
||||
$lang->admin->register = new stdclass();
|
||||
$lang->admin->register->caption = '禅道社区登记';
|
||||
$lang->admin->register->click = '点击此处';
|
||||
$lang->admin->register->lblAccount = '请设置您的用户名,英文字母和数字的组合,三位以上。';
|
||||
$lang->admin->register->lblPasswd = '请设置您的密码。数字和字母的组合,六位以上。';
|
||||
$lang->admin->register->submit = '登记';
|
||||
$lang->admin->register->bind = "如果您已经拥有社区账号,%s关联账户";
|
||||
$lang->admin->register->success = "登记账户成功";
|
||||
|
||||
$lang->admin->bind = new stdclass();
|
||||
$lang->admin->bind->caption = '关联社区账号';
|
||||
$lang->admin->bind->action = '关联';
|
||||
$lang->admin->bind->success = "关联账户成功";
|
||||
|
||||
+56
-56
@@ -1,56 +1,56 @@
|
||||
<?php
|
||||
/**
|
||||
* The admin module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id: zh-tw.php 3742 2012-12-10 08:41:09Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->admin->common = '後台管理';
|
||||
$lang->admin->index = '後台管理首頁';
|
||||
$lang->admin->checkDB = '修正數據';
|
||||
$lang->admin->company = '公司管理';
|
||||
$lang->admin->user = '用戶管理';
|
||||
$lang->admin->group = '分組管理';
|
||||
$lang->admin->welcome = '歡迎使用禪道管理軟件後台管理系統';
|
||||
|
||||
$lang->admin->browseCompany = '瀏覽公司';
|
||||
|
||||
$lang->admin->clearData = '清除數據';
|
||||
$lang->admin->confirmClearData = '您確認要清除數據嗎?';
|
||||
$lang->admin->clearDataFailed = '清除數據失敗!';
|
||||
$lang->admin->clearDataSucceed = '清除數據成功!';
|
||||
$lang->admin->clearDataDesc = <<<EOT
|
||||
<strong><font color='red'>清除數據存在一定的風險,清楚數據之前,我們強烈建議您備份資料庫及相應的數據檔案,並保證清楚數據的時候,沒有其他人進行操作。</font></strong>\n
|
||||
清除數據對資料庫的影響如下:
|
||||
1、清除數據不會對company, group, groupPriv表進行操作。
|
||||
2、如果安裝的時候有導入demo數據,則會刪除config表key=showDemoUsers的記錄,並刪除user表中的所有demo用戶。
|
||||
3、對於其他表則進行全部清除操作。
|
||||
EOT;
|
||||
|
||||
$lang->admin->info = new stdclass();
|
||||
$lang->admin->info->caption = '禪道系統信息';
|
||||
$lang->admin->info->version = '當前系統的版本是%s,';
|
||||
$lang->admin->info->links = '您可以訪問以下連結:';
|
||||
$lang->admin->info->account = "您的禪道社區賬戶為%s。";
|
||||
|
||||
$lang->admin->notice = new stdclass();
|
||||
$lang->admin->notice->register = "友情提示:您還未在禪道社區(www.zentao.net)登記,%s進行登記,以及時獲得禪道最新信息。";
|
||||
$lang->admin->notice->ignore = "不再提示";
|
||||
|
||||
$lang->admin->register = new stdclass();
|
||||
$lang->admin->register->caption = '禪道社區登記';
|
||||
$lang->admin->register->click = '點擊此處';
|
||||
$lang->admin->register->lblAccount = '請設置您的用戶名,英文字母和數字的組合,三位以上。';
|
||||
$lang->admin->register->lblPasswd = '請設置您的密碼。數字和字母的組合,六位以上。';
|
||||
$lang->admin->register->submit = '登記';
|
||||
$lang->admin->register->bind = "如果您已經擁有社區賬號,%s關聯賬戶";
|
||||
$lang->admin->register->success = "登記賬戶成功";
|
||||
|
||||
$lang->admin->bind = new stdclass();
|
||||
$lang->admin->bind->caption = '關聯社區賬號';
|
||||
$lang->admin->bind->action = '關聯';
|
||||
$lang->admin->bind->success = "關聯賬戶成功";
|
||||
<?php
|
||||
/**
|
||||
* The admin module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id: zh-tw.php 3742 2012-12-10 08:41:09Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->admin->common = '後台管理';
|
||||
$lang->admin->index = '後台管理首頁';
|
||||
$lang->admin->checkDB = '修正數據';
|
||||
$lang->admin->company = '公司管理';
|
||||
$lang->admin->user = '用戶管理';
|
||||
$lang->admin->group = '分組管理';
|
||||
$lang->admin->welcome = '歡迎使用禪道管理軟件後台管理系統';
|
||||
|
||||
$lang->admin->browseCompany = '瀏覽公司';
|
||||
|
||||
$lang->admin->clearData = '清除數據';
|
||||
$lang->admin->confirmClearData = '您確認要清除數據嗎?';
|
||||
$lang->admin->clearDataFailed = '清除數據失敗!';
|
||||
$lang->admin->clearDataSucceed = '清除數據成功!';
|
||||
$lang->admin->clearDataDesc = <<<EOT
|
||||
<strong><font color='red'>清除數據存在一定的風險,清楚數據之前,我們強烈建議您備份資料庫及相應的數據檔案,並保證清楚數據的時候,沒有其他人進行操作。</font></strong>\n
|
||||
清除數據對資料庫的影響如下:
|
||||
1、清除數據不會對company, group, groupPriv表進行操作。
|
||||
2、如果安裝的時候有導入demo數據,則會刪除config表key=showDemoUsers的記錄,並刪除user表中的所有demo用戶。
|
||||
3、對於其他表則進行全部清除操作。
|
||||
EOT;
|
||||
|
||||
$lang->admin->info = new stdclass();
|
||||
$lang->admin->info->caption = '禪道系統信息';
|
||||
$lang->admin->info->version = '當前系統的版本是%s,';
|
||||
$lang->admin->info->links = '您可以訪問以下連結:';
|
||||
$lang->admin->info->account = "您的禪道社區賬戶為%s。";
|
||||
|
||||
$lang->admin->notice = new stdclass();
|
||||
$lang->admin->notice->register = "友情提示:您還未在禪道社區(www.zentao.net)登記,%s進行登記,以及時獲得禪道最新信息。";
|
||||
$lang->admin->notice->ignore = "不再提示";
|
||||
|
||||
$lang->admin->register = new stdclass();
|
||||
$lang->admin->register->caption = '禪道社區登記';
|
||||
$lang->admin->register->click = '點擊此處';
|
||||
$lang->admin->register->lblAccount = '請設置您的用戶名,英文字母和數字的組合,三位以上。';
|
||||
$lang->admin->register->lblPasswd = '請設置您的密碼。數字和字母的組合,六位以上。';
|
||||
$lang->admin->register->submit = '登記';
|
||||
$lang->admin->register->bind = "如果您已經擁有社區賬號,%s關聯賬戶";
|
||||
$lang->admin->register->success = "登記賬戶成功";
|
||||
|
||||
$lang->admin->bind = new stdclass();
|
||||
$lang->admin->bind->caption = '關聯社區賬號';
|
||||
$lang->admin->bind->action = '關聯';
|
||||
$lang->admin->bind->success = "關聯賬戶成功";
|
||||
|
||||
+183
-183
@@ -1,183 +1,183 @@
|
||||
<?php
|
||||
/**
|
||||
* The model file of admin module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
class adminModel extends model
|
||||
{
|
||||
/**
|
||||
* The api agent(use snoopy).
|
||||
*
|
||||
* @var object
|
||||
* @access public
|
||||
*/
|
||||
public $agent;
|
||||
|
||||
/**
|
||||
* The api root.
|
||||
*
|
||||
* @var string
|
||||
* @access public
|
||||
*/
|
||||
public $apiRoot;
|
||||
|
||||
/**
|
||||
* The construct function.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->setAgent();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the api agent.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setAgent()
|
||||
{
|
||||
$this->agent = $this->app->loadClass('snoopy');
|
||||
}
|
||||
|
||||
/**
|
||||
* Post data form API
|
||||
*
|
||||
* @param string $url
|
||||
* @param string $formvars
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function postAPI($url, $formvars = "")
|
||||
{
|
||||
$this->agent->cookies['lang'] = $this->cookie->lang;
|
||||
$this->agent->submit($url, $formvars);
|
||||
return $this->agent->results;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get status of zentaopms.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getStatOfPMS()
|
||||
{
|
||||
$sql = "SHOW TABLE STATUS";
|
||||
$tables = $this->dbh->query($sql)->fetchALL();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get state of company.
|
||||
*
|
||||
* @param int $companyID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getStatOfCompany($companyID)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Get system info.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getStatOfSys()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Register zentao by API.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function registerByAPI()
|
||||
{
|
||||
$apiURL = 'http://www.zentao.net/user-register.json';
|
||||
return $this->postAPI($apiURL, $_POST);
|
||||
}
|
||||
|
||||
/**
|
||||
* Login zentao by API.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function bindByAPI()
|
||||
{
|
||||
$apiURL = 'http://www.zentao.net/user-login.json';
|
||||
return $this->postAPI($apiURL, $_POST);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get register information.
|
||||
*
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getRegisterInfo()
|
||||
{
|
||||
$register = new stdclass();
|
||||
$register->company = $this->app->company->name;
|
||||
$register->email = $this->app->user->email;
|
||||
return $register;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear data.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function clearData()
|
||||
{
|
||||
$result = $this->dbh->query('SHOW TABLES')->fetchAll();
|
||||
$showDemoUsers = $this->dao->select('value')->from(TABLE_CONFIG)->where('`key`')->eq('showDemoUsers')->fetch();
|
||||
foreach($result as $item)
|
||||
{
|
||||
$table = current((array)$item);
|
||||
if(strpos($table, 'company') !== false) continue;
|
||||
if(strpos($table, 'group') !== false) continue;
|
||||
if(strpos($table, 'user') !== false)
|
||||
{
|
||||
if($showDemoUsers)
|
||||
{
|
||||
$this->dao->delete()->from($table)
|
||||
->where('account')->in(array('productManager', 'projectManager', 'testManager', 'dev1', 'dev2', 'dev3', 'tester1', 'tester2', 'tester3'))
|
||||
->exec();
|
||||
if(dao::isError()) return false;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if(strpos($table, 'config') !== false)
|
||||
{
|
||||
if($showDemoUsers)
|
||||
{
|
||||
$this->dao->delete()->from($table)
|
||||
->where('`key`')->eq('showDemoUsers')
|
||||
->exec();
|
||||
if(dao::isError()) return false;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if(!$this->dbh->query("TRUNCATE TABLE `$table`")) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The model file of admin module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
class adminModel extends model
|
||||
{
|
||||
/**
|
||||
* The api agent(use snoopy).
|
||||
*
|
||||
* @var object
|
||||
* @access public
|
||||
*/
|
||||
public $agent;
|
||||
|
||||
/**
|
||||
* The api root.
|
||||
*
|
||||
* @var string
|
||||
* @access public
|
||||
*/
|
||||
public $apiRoot;
|
||||
|
||||
/**
|
||||
* The construct function.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->setAgent();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the api agent.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setAgent()
|
||||
{
|
||||
$this->agent = $this->app->loadClass('snoopy');
|
||||
}
|
||||
|
||||
/**
|
||||
* Post data form API
|
||||
*
|
||||
* @param string $url
|
||||
* @param string $formvars
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function postAPI($url, $formvars = "")
|
||||
{
|
||||
$this->agent->cookies['lang'] = $this->cookie->lang;
|
||||
$this->agent->submit($url, $formvars);
|
||||
return $this->agent->results;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get status of zentaopms.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getStatOfPMS()
|
||||
{
|
||||
$sql = "SHOW TABLE STATUS";
|
||||
$tables = $this->dbh->query($sql)->fetchALL();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get state of company.
|
||||
*
|
||||
* @param int $companyID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getStatOfCompany($companyID)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Get system info.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getStatOfSys()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Register zentao by API.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function registerByAPI()
|
||||
{
|
||||
$apiURL = 'http://www.zentao.net/user-register.json';
|
||||
return $this->postAPI($apiURL, $_POST);
|
||||
}
|
||||
|
||||
/**
|
||||
* Login zentao by API.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function bindByAPI()
|
||||
{
|
||||
$apiURL = 'http://www.zentao.net/user-login.json';
|
||||
return $this->postAPI($apiURL, $_POST);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get register information.
|
||||
*
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getRegisterInfo()
|
||||
{
|
||||
$register = new stdclass();
|
||||
$register->company = $this->app->company->name;
|
||||
$register->email = $this->app->user->email;
|
||||
return $register;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear data.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function clearData()
|
||||
{
|
||||
$result = $this->dbh->query('SHOW TABLES')->fetchAll();
|
||||
$showDemoUsers = $this->dao->select('value')->from(TABLE_CONFIG)->where('`key`')->eq('showDemoUsers')->fetch();
|
||||
foreach($result as $item)
|
||||
{
|
||||
$table = current((array)$item);
|
||||
if(strpos($table, 'company') !== false) continue;
|
||||
if(strpos($table, 'group') !== false) continue;
|
||||
if(strpos($table, 'user') !== false)
|
||||
{
|
||||
if($showDemoUsers)
|
||||
{
|
||||
$this->dao->delete()->from($table)
|
||||
->where('account')->in(array('productManager', 'projectManager', 'testManager', 'dev1', 'dev2', 'dev3', 'tester1', 'tester2', 'tester3'))
|
||||
->exec();
|
||||
if(dao::isError()) return false;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if(strpos($table, 'config') !== false)
|
||||
{
|
||||
if($showDemoUsers)
|
||||
{
|
||||
$this->dao->delete()->from($table)
|
||||
->where('`key`')->eq('showDemoUsers')
|
||||
->exec();
|
||||
if(dao::isError()) return false;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if(!$this->dbh->query("TRUNCATE TABLE `$table`")) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,30 +1,30 @@
|
||||
<?php
|
||||
/**
|
||||
* The view file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id: view.html.php 2568 2012-02-09 06:56:35Z shiyangyangwork@yahoo.cn $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method="post" target="hiddenwin">
|
||||
<table align='center' class='table-6'>
|
||||
<caption><?php echo $lang->admin->bind->caption;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->user->account;?></th>
|
||||
<td><?php echo html::input('account', '', "class='text-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="rowhead"><?php echo $lang->user->password;?></th>
|
||||
<td><?php echo html::password('password', '', "class='text-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><td colspan="2" class="a-center"><?php echo html::submitButton() . html::hidden('sn', $sn);?></td></th>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The view file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id: view.html.php 2568 2012-02-09 06:56:35Z shiyangyangwork@yahoo.cn $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method="post" target="hiddenwin">
|
||||
<table align='center' class='table-6'>
|
||||
<caption><?php echo $lang->admin->bind->caption;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->user->account;?></th>
|
||||
<td><?php echo html::input('account', '', "class='text-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="rowhead"><?php echo $lang->user->password;?></th>
|
||||
<td><?php echo html::password('password', '', "class='text-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><td colspan="2" class="a-center"><?php echo html::submitButton() . html::hidden('sn', $sn);?></td></th>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,47 +1,47 @@
|
||||
<?php
|
||||
/**
|
||||
* The browse company view file of admin module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<table align='center' class='table-1'>
|
||||
<tr class='colhead'>
|
||||
<th><?php echo $lang->company->id;?></th>
|
||||
<th><?php echo $lang->company->name;?></th>
|
||||
<th><?php echo $lang->company->phone;?></th>
|
||||
<th><?php echo $lang->company->fax;?></th>
|
||||
<th><?php echo $lang->company->address;?></th>
|
||||
<th><?php echo $lang->company->zipcode;?></th>
|
||||
<th><?php echo $lang->company->website;?></th>
|
||||
<th><?php echo $lang->company->backyard;?></th>
|
||||
<th><?php echo $lang->company->pms;?></th>
|
||||
<th><?php echo $lang->company->guest;?></th>
|
||||
<th><?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
<?php foreach($companies as $company):?>
|
||||
<tr>
|
||||
<td class='a-center'><?php echo $company->id;?></td>
|
||||
<td><?php echo $company->name;?></td>
|
||||
<td><?php echo $company->phone;?></td>
|
||||
<td><?php echo $company->fax;?></td>
|
||||
<td><?php echo $company->address;?></td>
|
||||
<td><?php echo $company->zipcode;?></td>
|
||||
<td><?php echo html::a($company->website, $company->website, '_blank');?></td>
|
||||
<td><?php echo html::a($company->backyard,$company->backyard, '_blank');?></td>
|
||||
<td><?php echo html::a('http://' . $company->pms, $company->pms, '_blank');?></td>
|
||||
<td><?php echo $lang->company->guestList[(int)$company->guest];?></td>
|
||||
<td>
|
||||
<?php echo html::a($this->createLink('company', 'edit', "companyID=$company->id"), $this->lang->company->edit);?>
|
||||
<?php echo html::a($this->createLink('company', 'delete', "companyID=$company->id"), $this->lang->company->delete, "hiddenwin");?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</table>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The browse company view file of admin module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<table align='center' class='table-1'>
|
||||
<tr class='colhead'>
|
||||
<th><?php echo $lang->company->id;?></th>
|
||||
<th><?php echo $lang->company->name;?></th>
|
||||
<th><?php echo $lang->company->phone;?></th>
|
||||
<th><?php echo $lang->company->fax;?></th>
|
||||
<th><?php echo $lang->company->address;?></th>
|
||||
<th><?php echo $lang->company->zipcode;?></th>
|
||||
<th><?php echo $lang->company->website;?></th>
|
||||
<th><?php echo $lang->company->backyard;?></th>
|
||||
<th><?php echo $lang->company->pms;?></th>
|
||||
<th><?php echo $lang->company->guest;?></th>
|
||||
<th><?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
<?php foreach($companies as $company):?>
|
||||
<tr>
|
||||
<td class='a-center'><?php echo $company->id;?></td>
|
||||
<td><?php echo $company->name;?></td>
|
||||
<td><?php echo $company->phone;?></td>
|
||||
<td><?php echo $company->fax;?></td>
|
||||
<td><?php echo $company->address;?></td>
|
||||
<td><?php echo $company->zipcode;?></td>
|
||||
<td><?php echo html::a($company->website, $company->website, '_blank');?></td>
|
||||
<td><?php echo html::a($company->backyard,$company->backyard, '_blank');?></td>
|
||||
<td><?php echo html::a('http://' . $company->pms, $company->pms, '_blank');?></td>
|
||||
<td><?php echo $lang->company->guestList[(int)$company->guest];?></td>
|
||||
<td>
|
||||
<?php echo html::a($this->createLink('company', 'edit', "companyID=$company->id"), $this->lang->company->edit);?>
|
||||
<?php echo html::a($this->createLink('company', 'delete', "companyID=$company->id"), $this->lang->company->delete, "hiddenwin");?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</table>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
<?php
|
||||
/**
|
||||
* The view file of admin module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Congzhi Chen <congzhi@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id: view.html.php 2568 2012-02-09 06:56:35Z shiyangyangwork@yahoo.cn $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' target='hiddenwin' action='<?php echo $this->inLink('clearData', 'confirm=no')?>'>
|
||||
<table align='center' class='table-5'>
|
||||
<caption><?php echo $lang->admin->clearData;?></caption>
|
||||
<tr><td><?php echo nl2br($lang->admin->clearDataDesc);?></td></tr>
|
||||
<tr><td class='a-center'><?php echo html::submitButton($lang->admin->clearData);?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The view file of admin module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Congzhi Chen <congzhi@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id: view.html.php 2568 2012-02-09 06:56:35Z shiyangyangwork@yahoo.cn $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' target='hiddenwin' action='<?php echo $this->inLink('clearData', 'confirm=no')?>'>
|
||||
<table align='center' class='table-5'>
|
||||
<caption><?php echo $lang->admin->clearData;?></caption>
|
||||
<tr><td><?php echo nl2br($lang->admin->clearDataDesc);?></td></tr>
|
||||
<tr><td class='a-center'><?php echo html::submitButton($lang->admin->clearData);?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,28 +1,28 @@
|
||||
<?php
|
||||
/**
|
||||
* The view file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id: view.html.php 2568 2012-02-09 06:56:35Z shiyangyangwork@yahoo.cn $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<p class='strong mt-10px'>
|
||||
<?php
|
||||
echo sprintf($lang->admin->info->version, $config->version);
|
||||
if($bind) echo sprintf($lang->admin->info->account, '<span class="red">' . $account . '</span>');
|
||||
echo $lang->admin->info->links;
|
||||
?>
|
||||
</p>
|
||||
<?php include '../../misc/view/links.html.php';?>
|
||||
<?php if(!$bind and !$ignore):?>
|
||||
<div id="notice">
|
||||
<div class="f-left"><?php echo sprintf($lang->admin->notice->register, html::a(inlink('register'), $lang->admin->register->click));?></div>
|
||||
<div class="f-right"><?php echo html::a(inlink('ignore'), $lang->admin->notice->ignore, 'hiddenwin');?></div>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The view file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id: view.html.php 2568 2012-02-09 06:56:35Z shiyangyangwork@yahoo.cn $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<p class='strong mt-10px'>
|
||||
<?php
|
||||
echo sprintf($lang->admin->info->version, $config->version);
|
||||
if($bind) echo sprintf($lang->admin->info->account, '<span class="red">' . $account . '</span>');
|
||||
echo $lang->admin->info->links;
|
||||
?>
|
||||
</p>
|
||||
<?php include '../../misc/view/links.html.php';?>
|
||||
<?php if(!$bind and !$ignore):?>
|
||||
<div id="notice">
|
||||
<div class="f-left"><?php echo sprintf($lang->admin->notice->register, html::a(inlink('register'), $lang->admin->register->click));?></div>
|
||||
<div class="f-right"><?php echo html::a(inlink('ignore'), $lang->admin->notice->ignore, 'hiddenwin');?></div>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,57 +1,57 @@
|
||||
<?php
|
||||
/**
|
||||
* The view file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id: view.html.php 2568 2012-02-09 06:56:35Z shiyangyangwork@yahoo.cn $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method="post" target="hiddenwin">
|
||||
<table align='center' class='table-6'>
|
||||
<caption><?php echo $lang->admin->register->caption;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->user->account;?></th>
|
||||
<td><?php echo html::input('account', '', "class='text-3'") . '<span class="star">*</span>' . $lang->admin->register->lblAccount;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="rowhead"><?php echo $lang->user->realname;?></th>
|
||||
<td><?php echo html::input('realname', '', "class='text-3'") . '<span class="star">*</span>';?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="rowhead"><?php echo $lang->user->company;?></th>
|
||||
<td><?php echo html::input('company', $register->company, "class='text-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="rowhead"><?php echo $lang->user->phone;?></th>
|
||||
<td><?php echo html::input('phone', '', "class='text-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="rowhead"><?php echo $lang->user->email;?></td>
|
||||
<td><?php echo html::input('email', $register->email, "class='text-3'") . '<span class="star">*</span>';?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="rowhead"><?php echo $lang->user->password;?></th>
|
||||
<td><?php echo html::password('password1', '', "class='text-3'") . '<span class="star">*</span>' . $lang->admin->register->lblPasswd;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->user->password2;?></td>
|
||||
<td><?php echo html::password('password2', '', "class='text-3'") . '<span class="star">*</span>';?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
<td colspan="2">
|
||||
<?php
|
||||
echo html::submitButton($lang->admin->register->submit) . html::hidden('sn', $sn);
|
||||
echo "<span>" . sprintf($lang->admin->register->bind, html::a(inlink('bind'), $lang->admin->register->click)) . "</span>";
|
||||
?>
|
||||
</td>
|
||||
</th>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The view file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id: view.html.php 2568 2012-02-09 06:56:35Z shiyangyangwork@yahoo.cn $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method="post" target="hiddenwin">
|
||||
<table align='center' class='table-6'>
|
||||
<caption><?php echo $lang->admin->register->caption;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->user->account;?></th>
|
||||
<td><?php echo html::input('account', '', "class='text-3'") . '<span class="star">*</span>' . $lang->admin->register->lblAccount;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="rowhead"><?php echo $lang->user->realname;?></th>
|
||||
<td><?php echo html::input('realname', '', "class='text-3'") . '<span class="star">*</span>';?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="rowhead"><?php echo $lang->user->company;?></th>
|
||||
<td><?php echo html::input('company', $register->company, "class='text-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="rowhead"><?php echo $lang->user->phone;?></th>
|
||||
<td><?php echo html::input('phone', '', "class='text-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="rowhead"><?php echo $lang->user->email;?></td>
|
||||
<td><?php echo html::input('email', $register->email, "class='text-3'") . '<span class="star">*</span>';?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="rowhead"><?php echo $lang->user->password;?></th>
|
||||
<td><?php echo html::password('password1', '', "class='text-3'") . '<span class="star">*</span>' . $lang->admin->register->lblPasswd;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->user->password2;?></td>
|
||||
<td><?php echo html::password('password2', '', "class='text-3'") . '<span class="star">*</span>';?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
<td colspan="2">
|
||||
<?php
|
||||
echo html::submitButton($lang->admin->register->submit) . html::hidden('sn', $sn);
|
||||
echo "<span>" . sprintf($lang->admin->register->bind, html::a(inlink('bind'), $lang->admin->register->click)) . "</span>";
|
||||
?>
|
||||
</td>
|
||||
</th>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
+50
-50
@@ -1,50 +1,50 @@
|
||||
<?php
|
||||
/**
|
||||
* The control file of api of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package api
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class api extends control
|
||||
{
|
||||
/**
|
||||
* Return session to the client.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getSessionID()
|
||||
{
|
||||
$this->session->set('rand', mt_rand(0, 10000));
|
||||
$this->view->sessionName = session_name();
|
||||
$this->view->sessionID = session_id();
|
||||
$this->view->rand = $this->session->rand;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute a module's model's method, return the result.
|
||||
*
|
||||
* @param string $moduleName
|
||||
* @param string $methodName
|
||||
* @param string $params param1=value1,param2=value2, don't use & to join them.
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function getModel($moduleName, $methodName, $params = '')
|
||||
{
|
||||
parse_str(str_replace(',', '&', $params), $params);
|
||||
$module = $this->loadModel($moduleName);
|
||||
$result = call_user_func_array(array(&$module, $methodName), $params);
|
||||
if(dao::isError()) die(json_encode(dao::getError()));
|
||||
$output['status'] = $result ? 'success' : 'fail';
|
||||
$output['data'] = json_encode($result);
|
||||
$output['md5'] = md5($output['data']);
|
||||
$this->output = json_encode($output);
|
||||
die($this->output);
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The control file of api of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package api
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class api extends control
|
||||
{
|
||||
/**
|
||||
* Return session to the client.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getSessionID()
|
||||
{
|
||||
$this->session->set('rand', mt_rand(0, 10000));
|
||||
$this->view->sessionName = session_name();
|
||||
$this->view->sessionID = session_id();
|
||||
$this->view->rand = $this->session->rand;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute a module's model's method, return the result.
|
||||
*
|
||||
* @param string $moduleName
|
||||
* @param string $methodName
|
||||
* @param string $params param1=value1,param2=value2, don't use & to join them.
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function getModel($moduleName, $methodName, $params = '')
|
||||
{
|
||||
parse_str(str_replace(',', '&', $params), $params);
|
||||
$module = $this->loadModel($moduleName);
|
||||
$result = call_user_func_array(array(&$module, $methodName), $params);
|
||||
if(dao::isError()) die(json_encode(dao::getError()));
|
||||
$output['status'] = $result ? 'success' : 'fail';
|
||||
$output['data'] = json_encode($result);
|
||||
$output['md5'] = md5($output['data']);
|
||||
$this->output = json_encode($output);
|
||||
die($this->output);
|
||||
}
|
||||
}
|
||||
|
||||
+13
-13
@@ -1,13 +1,13 @@
|
||||
<?php
|
||||
/**
|
||||
* The api module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package api
|
||||
* @version $Id: English.php 824 2010-05-02 15:32:06Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->api->common = 'API';
|
||||
$lang->api->getModel = 'Super Model API';
|
||||
<?php
|
||||
/**
|
||||
* The api module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package api
|
||||
* @version $Id: English.php 824 2010-05-02 15:32:06Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->api->common = 'API';
|
||||
$lang->api->getModel = 'Super Model API';
|
||||
|
||||
+13
-13
@@ -1,13 +1,13 @@
|
||||
<?php
|
||||
/**
|
||||
* The api module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package api
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->api->common = 'API接口';
|
||||
$lang->api->getModel = '超级model调用接口';
|
||||
<?php
|
||||
/**
|
||||
* The api module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package api
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->api->common = 'API接口';
|
||||
$lang->api->getModel = '超级model调用接口';
|
||||
|
||||
+13
-13
@@ -1,13 +1,13 @@
|
||||
<?php
|
||||
/**
|
||||
* The api module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package api
|
||||
* @version $Id: zh-tw.php 2605 2012-02-21 07:22:58Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->api->common = 'API介面';
|
||||
$lang->api->getModel = '超級model調用介面';
|
||||
<?php
|
||||
/**
|
||||
* The api module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package api
|
||||
* @version $Id: zh-tw.php 2605 2012-02-21 07:22:58Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->api->common = 'API介面';
|
||||
$lang->api->getModel = '超級model調用介面';
|
||||
|
||||
+15
-15
@@ -1,15 +1,15 @@
|
||||
<?php
|
||||
/**
|
||||
* The model file of api module of ZenTaoCMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package api
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class apiModel extends model
|
||||
{
|
||||
}
|
||||
|
||||
<?php
|
||||
/**
|
||||
* The model file of api module of ZenTaoCMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package api
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class apiModel extends model
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
+1098
-1098
File diff suppressed because it is too large
Load Diff
+361
-361
@@ -1,361 +1,361 @@
|
||||
<?php
|
||||
/**
|
||||
* The bug module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* Fieldlist. */
|
||||
$lang->bug->common = 'Bug';
|
||||
$lang->bug->id = 'ID';
|
||||
$lang->bug->product = 'Product';
|
||||
$lang->bug->module = 'Module';
|
||||
$lang->bug->path = 'Path';
|
||||
$lang->bug->project = 'Project';
|
||||
$lang->bug->story = 'Story';
|
||||
$lang->bug->storyVersion = 'Story Version';
|
||||
$lang->bug->task = 'Task';
|
||||
$lang->bug->title = 'Title';
|
||||
$lang->bug->severity = 'Severity';
|
||||
$lang->bug->severityAB = 'S';
|
||||
$lang->bug->pri = 'Priority';
|
||||
$lang->bug->type = 'Type';
|
||||
$lang->bug->os = 'OS';
|
||||
$lang->bug->hardware = 'Hardware';
|
||||
$lang->bug->browser = 'Browser';
|
||||
$lang->bug->machine = 'Machine';
|
||||
$lang->bug->found = 'How found';
|
||||
$lang->bug->steps = 'Steps';
|
||||
$lang->bug->status = 'Status';
|
||||
$lang->bug->statusAB = 'Status';
|
||||
$lang->bug->activatedCount = 'Activated count';
|
||||
$lang->bug->activatedCountAB = 'Activated count';
|
||||
$lang->bug->confirmed = 'Confirmed';
|
||||
$lang->bug->toTask = 'To task';
|
||||
$lang->bug->toStory = 'To story';
|
||||
$lang->bug->mailto = 'Mailto';
|
||||
$lang->bug->openedBy = 'Opened By';
|
||||
$lang->bug->openedByAB = 'Opened';
|
||||
$lang->bug->openedDate = 'Opened date';
|
||||
$lang->bug->openedDateAB = 'Date';
|
||||
$lang->bug->openedBuild = 'Opened Build';
|
||||
$lang->bug->assignedTo = 'Assigned';
|
||||
$lang->bug->assignedDate = 'Assigned Date';
|
||||
$lang->bug->resolvedBy = 'Resolved By';
|
||||
$lang->bug->resolvedByAB = 'Resolve';
|
||||
$lang->bug->resolution = 'Resolution';
|
||||
$lang->bug->resolutionAB = 'Resolution';
|
||||
$lang->bug->resolvedBuild = 'Resolved Build';
|
||||
$lang->bug->resolvedDate = 'Resolved Date';
|
||||
$lang->bug->resolvedDateAB = 'Date';
|
||||
$lang->bug->closedBy = 'Closed By';
|
||||
$lang->bug->closedDate = 'Closed Date';
|
||||
$lang->bug->duplicateBug = 'Duplicate';
|
||||
$lang->bug->lastEditedBy = 'Last Edited By';
|
||||
$lang->bug->lastEditedDate = 'Last Edited Date';
|
||||
$lang->bug->linkBug = 'Related';
|
||||
$lang->bug->case = 'Case';
|
||||
$lang->bug->files = 'Files';
|
||||
$lang->bug->keywords = 'Keywords';
|
||||
$lang->bug->lastEditedByAB = 'Edited';
|
||||
$lang->bug->lastEditedDateAB = 'Edited Date';
|
||||
$lang->bug->fromCase = 'From case';
|
||||
$lang->bug->toCase = 'To case';
|
||||
|
||||
/* Actions. */
|
||||
$lang->bug->index = 'Index';
|
||||
$lang->bug->create = 'Create Bug';
|
||||
$lang->bug->confirmBug = 'Confirm Bug';
|
||||
$lang->bug->edit = 'Edit Bug';
|
||||
$lang->bug->batchEdit = 'Batch edit';
|
||||
$lang->bug->assignTo = 'Assign';
|
||||
$lang->bug->browse = 'Browse Bug';
|
||||
$lang->bug->view = 'Bug Info';
|
||||
$lang->bug->resolve = 'Resolve Bug';
|
||||
$lang->bug->close = 'Close Bug';
|
||||
$lang->bug->activate = 'Activate Bug';
|
||||
$lang->bug->reportChart = 'Report';
|
||||
$lang->bug->export = 'Export data';
|
||||
$lang->bug->delete = 'Delete Bug';
|
||||
$lang->bug->saveTemplate = 'Save template';
|
||||
$lang->bug->deleteTemplate = 'Delete template';
|
||||
$lang->bug->customFields = 'Custom';
|
||||
$lang->bug->restoreDefault = 'Default';
|
||||
$lang->bug->ajaxGetUserBugs = 'API: My Bugs';
|
||||
$lang->bug->ajaxGetModuleOwner = 'API: Get module default owner';
|
||||
$lang->bug->confirmStoryChange = 'Confirm Story Change';
|
||||
|
||||
/* Browse tabs. */
|
||||
$lang->bug->selectProduct = 'Select product';
|
||||
$lang->bug->byModule = 'ByModule';
|
||||
$lang->bug->assignToMe = 'MyBugs';
|
||||
$lang->bug->openedByMe = 'MyOpen';
|
||||
$lang->bug->resolvedByMe = 'MyResolve';
|
||||
$lang->bug->closedByMe = 'MyClose';
|
||||
$lang->bug->assignToNull = 'Unassigned';
|
||||
$lang->bug->unResolved = 'Unresolved';
|
||||
$lang->bug->unclosed = 'Unclosed';
|
||||
$lang->bug->longLifeBugs = 'Longlife';
|
||||
$lang->bug->postponedBugs = 'Postponed';
|
||||
$lang->bug->allBugs = 'Allbug';
|
||||
$lang->bug->moduleBugs = 'ByModule';
|
||||
$lang->bug->byQuery = 'Search';
|
||||
$lang->bug->needConfirm = 'StoryChanged';
|
||||
$lang->bug->allProduct = 'All products';
|
||||
|
||||
/* Labels. */
|
||||
$lang->bug->lblProductAndModule = 'Product&Module';
|
||||
$lang->bug->lblProjectAndTask = 'Project&Task';
|
||||
$lang->bug->lblStory = 'Story';
|
||||
$lang->bug->lblTypeAndSeverity = 'Type&Severity';
|
||||
$lang->bug->lblSystemBrowserAndHardware = 'OS&Browser';
|
||||
$lang->bug->lblAssignedTo = 'Assigned to';
|
||||
$lang->bug->lblMailto = 'Mailto';
|
||||
$lang->bug->lblLastEdited = 'Last edited';
|
||||
$lang->bug->lblResolved = 'Resolved';
|
||||
$lang->bug->lblAllFields = 'All Fields';
|
||||
$lang->bug->lblCustomFields = 'Custom Fields';
|
||||
|
||||
/* Legends. */
|
||||
$lang->bug->legendBasicInfo = 'Basic info';
|
||||
$lang->bug->legendMailto = 'Mailto';
|
||||
$lang->bug->legendAttatch = 'Files';
|
||||
$lang->bug->legendLinkBugs = 'Related bug';
|
||||
$lang->bug->legendPrjStoryTask = 'Project, story & task';
|
||||
$lang->bug->legendCases = 'Related case';
|
||||
$lang->bug->legendSteps = 'Steps';
|
||||
$lang->bug->legendAction = 'Action';
|
||||
$lang->bug->legendHistory = 'History';
|
||||
$lang->bug->legendComment = 'Comment';
|
||||
$lang->bug->legendLife = 'Lifetime';
|
||||
$lang->bug->legendMisc = 'Misc';
|
||||
|
||||
/* Action buttons. */
|
||||
$lang->bug->buttonConfirm = 'Confirm';
|
||||
$lang->bug->buttonCopy = 'Copy';
|
||||
$lang->bug->buttonAssign = 'Assgin';
|
||||
$lang->bug->buttonEdit = 'Edit';
|
||||
$lang->bug->buttonActivate = 'Activate';
|
||||
$lang->bug->buttonResolve = 'Resolve';
|
||||
$lang->bug->buttonClose = 'Close';
|
||||
$lang->bug->buttonToList = 'Back';
|
||||
$lang->bug->buttonCreateTestcase = 'Create case';
|
||||
|
||||
/* Confirm messags. */
|
||||
$lang->bug->confirmChangeProduct = 'Change product will change project, task and story also, are you sure?';
|
||||
$lang->bug->confirmDelete = 'Are you sure to delete this bug?';
|
||||
$lang->bug->setTemplateTitle = 'Please input the template title:';
|
||||
$lang->bug->remindTask = 'This bug has been to be a task, update the task:%s or not?';
|
||||
|
||||
/* Templates. */
|
||||
$lang->bug->tplStep = "<p>[Steps]</p>";
|
||||
$lang->bug->tplResult = "<p>[Result]</p>";
|
||||
$lang->bug->tplExpect = "<p>[Expect]</p>";
|
||||
|
||||
/* Field options lists. */
|
||||
$lang->bug->severityList[3] = '3';
|
||||
$lang->bug->severityList[1] = '1';
|
||||
$lang->bug->severityList[2] = '2';
|
||||
$lang->bug->severityList[4] = '4';
|
||||
|
||||
$lang->bug->priList[0] = '';
|
||||
$lang->bug->priList[3] = '3';
|
||||
$lang->bug->priList[1] = '1';
|
||||
$lang->bug->priList[2] = '2';
|
||||
$lang->bug->priList[4] = '4';
|
||||
|
||||
$lang->bug->osList[''] = '';
|
||||
$lang->bug->osList['all'] = 'All';
|
||||
$lang->bug->osList['windows'] = 'Windows';
|
||||
$lang->bug->osList['winxp'] = 'Windows XP';
|
||||
$lang->bug->osList['win7'] = 'Windows 7';
|
||||
$lang->bug->osList['vista'] = 'Windows Vista';
|
||||
$lang->bug->osList['win2000'] = 'Windows 2000';
|
||||
$lang->bug->osList['win2003'] = 'Windows 2003';
|
||||
$lang->bug->osList['win2008'] = 'Windows 2008';
|
||||
$lang->bug->osList['winnt'] = 'Windows NT';
|
||||
$lang->bug->osList['win98'] = 'Windows 98';
|
||||
$lang->bug->osList['andriod'] = 'Andriod';
|
||||
$lang->bug->osList['ios'] = 'IOS';
|
||||
$lang->bug->osList['wp7'] = 'WP7';
|
||||
$lang->bug->osList['symbian'] = 'Symbian';
|
||||
$lang->bug->osList['linux'] = 'Linux';
|
||||
$lang->bug->osList['freebsd'] = 'FreeBSD';
|
||||
$lang->bug->osList['mac'] = 'Mac OS';
|
||||
$lang->bug->osList['unix'] = 'Unix';
|
||||
$lang->bug->osList['others'] = 'Others';
|
||||
|
||||
$lang->bug->browserList[''] = '';
|
||||
$lang->bug->browserList['all'] = 'All';
|
||||
$lang->bug->browserList['ie'] = 'IE';
|
||||
$lang->bug->browserList['ie8'] = 'IE8';
|
||||
$lang->bug->browserList['ie9'] = 'IE9';
|
||||
$lang->bug->browserList['ie6'] = 'IE6';
|
||||
$lang->bug->browserList['ie7'] = 'IE7';
|
||||
$lang->bug->browserList['chrome'] = 'chrome';
|
||||
$lang->bug->browserList['firefox'] = 'Firefox';
|
||||
$lang->bug->browserList['firefox2'] = 'Firefox2';
|
||||
$lang->bug->browserList['firefox3'] = 'Firefox3';
|
||||
$lang->bug->browserList['firefox4'] = 'Firefox4';
|
||||
$lang->bug->browserList['opera'] = 'opera';
|
||||
$lang->bug->browserList['opera9'] = 'opera9';
|
||||
$lang->bug->browserList['oprea10'] = 'opera10';
|
||||
$lang->bug->browserList['oprea11'] = 'opera11';
|
||||
$lang->bug->browserList['safari'] = 'safari';
|
||||
$lang->bug->browserList['maxthon'] = '傲游';
|
||||
$lang->bug->browserList['uc'] = 'UC';
|
||||
$lang->bug->browserList['other'] = 'Others';
|
||||
|
||||
$lang->bug->typeList[''] = '';
|
||||
$lang->bug->typeList['codeerror'] = 'Code error';
|
||||
$lang->bug->typeList['interface'] = 'Interface';
|
||||
$lang->bug->typeList['designchange'] = 'Design change';
|
||||
$lang->bug->typeList['newfeature'] = 'New feature';
|
||||
$lang->bug->typeList['designdefect'] = 'Design defect';
|
||||
$lang->bug->typeList['config'] = 'Config';
|
||||
$lang->bug->typeList['install'] = 'Install';
|
||||
$lang->bug->typeList['security'] = 'Security';
|
||||
$lang->bug->typeList['performance'] = 'Performance';
|
||||
$lang->bug->typeList['standard'] = 'Standard';
|
||||
$lang->bug->typeList['automation'] = 'Automation';
|
||||
$lang->bug->typeList['trackthings'] = 'Tracking';
|
||||
$lang->bug->typeList['others'] = 'Others';
|
||||
|
||||
$lang->bug->statusList[''] = '';
|
||||
$lang->bug->statusList['active'] = 'Active';
|
||||
$lang->bug->statusList['resolved'] = 'Resolved';
|
||||
$lang->bug->statusList['closed'] = 'Closed';
|
||||
|
||||
$lang->bug->confirmedList[1] = 'Confirmed';
|
||||
$lang->bug->confirmedList[0] = 'Unconfirmed';
|
||||
|
||||
$lang->bug->resolutionList[''] = '';
|
||||
$lang->bug->resolutionList['bydesign'] = 'By design';
|
||||
$lang->bug->resolutionList['duplicate'] = 'Duplicate';
|
||||
$lang->bug->resolutionList['external'] = 'External';
|
||||
$lang->bug->resolutionList['fixed'] = 'Fixed';
|
||||
$lang->bug->resolutionList['notrepro'] = 'Not reproduce';
|
||||
$lang->bug->resolutionList['postponed'] = 'Postponed';
|
||||
$lang->bug->resolutionList['willnotfix'] = "Won't fix";
|
||||
$lang->bug->resolutionList['tostory'] = 'To story';
|
||||
|
||||
/* Report. */
|
||||
$lang->bug->report = new stdclass();
|
||||
$lang->bug->report->common = 'Report';
|
||||
$lang->bug->report->select = 'Select';
|
||||
$lang->bug->report->create = 'Create';
|
||||
|
||||
$lang->bug->report->charts['bugsPerProject'] = 'Project bugs';
|
||||
$lang->bug->report->charts['bugsPerBuild'] = 'Build bugs';
|
||||
$lang->bug->report->charts['bugsPerModule'] = 'Module bugs';
|
||||
$lang->bug->report->charts['openedBugsPerDay'] = 'Opened bugs per day';
|
||||
$lang->bug->report->charts['resolvedBugsPerDay'] = 'Resolved bugs per day';
|
||||
$lang->bug->report->charts['closedBugsPerDay'] = 'Closed bugs per day';
|
||||
$lang->bug->report->charts['openedBugsPerUser'] = 'Opened bugs per user';
|
||||
$lang->bug->report->charts['resolvedBugsPerUser'] = 'Resolved bugs per user';
|
||||
$lang->bug->report->charts['closedBugsPerUser'] = 'Closed bugs per user';
|
||||
$lang->bug->report->charts['bugsPerSeverity'] = 'Severity';
|
||||
$lang->bug->report->charts['bugsPerResolution'] = 'Resolution';
|
||||
$lang->bug->report->charts['bugsPerStatus'] = 'Status';
|
||||
$lang->bug->report->charts['bugsPerActivatedCount'] = 'Activated count';
|
||||
$lang->bug->report->charts['bugsPerType'] = 'Type';
|
||||
$lang->bug->report->charts['bugsPerAssignedTo'] = 'AssignedTo';
|
||||
//$lang->bug->report->charts['bugLiveDays'] = 'Bug处理时间统计';
|
||||
//$lang->bug->report->charts['bugHistories'] = 'Bug处理步骤统计';
|
||||
|
||||
$lang->bug->report->options = new stdclass();
|
||||
$lang->bug->report->options->graph = new stdclass();
|
||||
$lang->bug->report->options->swf = 'pie2d';
|
||||
$lang->bug->report->options->width = 'auto';
|
||||
$lang->bug->report->options->height = 300;
|
||||
$lang->bug->report->options->graph->baseFontSize = 12;
|
||||
$lang->bug->report->options->graph->showNames = 1;
|
||||
$lang->bug->report->options->graph->formatNumber = 1;
|
||||
$lang->bug->report->options->graph->decimalPrecision = 0;
|
||||
$lang->bug->report->options->graph->animation = 0;
|
||||
$lang->bug->report->options->graph->rotateNames = 0;
|
||||
$lang->bug->report->options->graph->yAxisName = 'COUNT';
|
||||
$lang->bug->report->options->graph->pieRadius = 100;
|
||||
$lang->bug->report->options->graph->showColumnShadow = 0;
|
||||
|
||||
$lang->bug->report->bugsPerProject = new stdclass();
|
||||
$lang->bug->report->bugsPerBuild = new stdclass();
|
||||
$lang->bug->report->bugsPerModule = new stdclass();
|
||||
$lang->bug->report->openedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->closedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->openedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->closedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->bugsPerSeverity = new stdclass();
|
||||
$lang->bug->report->bugsPerResolution = new stdclass();
|
||||
$lang->bug->report->bugsPerStatus = new stdclass();
|
||||
$lang->bug->report->bugsPerActivatedCount = new stdclass();
|
||||
$lang->bug->report->bugsPerType = new stdclass();
|
||||
$lang->bug->report->bugsPerAssignedTo = new stdclass();
|
||||
$lang->bug->report->bugLiveDays = new stdclass();
|
||||
$lang->bug->report->bugHistories = new stdclass();
|
||||
|
||||
$lang->bug->report->bugsPerProject->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerBuild->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerModule->graph = new stdclass();
|
||||
$lang->bug->report->openedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->closedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->openedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->closedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerSeverity->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerResolution->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerStatus->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerActivatedCount->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerType->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerAssignedTo->graph = new stdclass();
|
||||
$lang->bug->report->bugLiveDays->graph = new stdclass();
|
||||
$lang->bug->report->bugHistories->graph = new stdclass();
|
||||
|
||||
$lang->bug->report->bugsPerProject->graph->xAxisName = 'Project';
|
||||
$lang->bug->report->bugsPerBuild->graph->xAxisName = 'Build';
|
||||
$lang->bug->report->bugsPerModule->graph->xAxisName = 'Module';
|
||||
|
||||
$lang->bug->report->openedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->openedBugsPerDay->height = 400;
|
||||
$lang->bug->report->openedBugsPerDay->graph->xAxisName = 'Date';
|
||||
$lang->bug->report->openedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->resolvedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->resolvedBugsPerDay->height = 400;
|
||||
$lang->bug->report->resolvedBugsPerDay->graph->xAxisName = 'Date';
|
||||
$lang->bug->report->resolvedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->closedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->closedBugsPerDay->height = 400;
|
||||
$lang->bug->report->closedBugsPerDay->graph->xAxisName = 'Date';
|
||||
$lang->bug->report->closedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->openedBugsPerUser->graph->xAxisName = 'User';
|
||||
$lang->bug->report->resolvedBugsPerUser->graph->xAxisName= 'User';
|
||||
$lang->bug->report->closedBugsPerUser->graph->xAxisName = 'User';
|
||||
|
||||
$lang->bug->report->bugsPerSeverity->graph->xAxisName = 'Severity';
|
||||
$lang->bug->report->bugsPerResolution->graph->xAxisName = 'Resolution';
|
||||
$lang->bug->report->bugsPerStatus->graph->xAxisName = 'Status';
|
||||
$lang->bug->report->bugsPerActivatedCount->graph->xAxisName = 'Activated count';
|
||||
$lang->bug->report->bugsPerType->graph->xAxisName = 'Type';
|
||||
$lang->bug->report->bugsPerAssignedTo->graph->xAxisName = 'AssignedTo';
|
||||
$lang->bug->report->bugLiveDays->graph->xAxisName = 'Live days';
|
||||
$lang->bug->report->bugHistories->graph->xAxisName = 'Histories';
|
||||
|
||||
/* 操作记录。*/
|
||||
$lang->bug->action = new stdclass();
|
||||
$lang->bug->action->resolved = array('main' => '$date, Resolved by <strong>$actor</strong>, resolution is <strong>$extra</strong>.', 'extra' => $lang->bug->resolutionList);
|
||||
$lang->bug->action->tostory = array('main' => '$date, To story by <strong>$actor</strong>, ID is <strong>$extra</strong>.');
|
||||
$lang->bug->action->totask = array('main' => '$date, To task by <strong>$actor</strong>, ID is <strong>$extra</strong>.');
|
||||
|
||||
$lang->bug->placeholder = new stdclass();
|
||||
$lang->bug->placeholder->mailto = 'you can input the user account to select users to mail to.';
|
||||
$lang->bug->placeholder->keywords = 'keywords';
|
||||
<?php
|
||||
/**
|
||||
* The bug module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* Fieldlist. */
|
||||
$lang->bug->common = 'Bug';
|
||||
$lang->bug->id = 'ID';
|
||||
$lang->bug->product = 'Product';
|
||||
$lang->bug->module = 'Module';
|
||||
$lang->bug->path = 'Path';
|
||||
$lang->bug->project = 'Project';
|
||||
$lang->bug->story = 'Story';
|
||||
$lang->bug->storyVersion = 'Story Version';
|
||||
$lang->bug->task = 'Task';
|
||||
$lang->bug->title = 'Title';
|
||||
$lang->bug->severity = 'Severity';
|
||||
$lang->bug->severityAB = 'S';
|
||||
$lang->bug->pri = 'Priority';
|
||||
$lang->bug->type = 'Type';
|
||||
$lang->bug->os = 'OS';
|
||||
$lang->bug->hardware = 'Hardware';
|
||||
$lang->bug->browser = 'Browser';
|
||||
$lang->bug->machine = 'Machine';
|
||||
$lang->bug->found = 'How found';
|
||||
$lang->bug->steps = 'Steps';
|
||||
$lang->bug->status = 'Status';
|
||||
$lang->bug->statusAB = 'Status';
|
||||
$lang->bug->activatedCount = 'Activated count';
|
||||
$lang->bug->activatedCountAB = 'Activated count';
|
||||
$lang->bug->confirmed = 'Confirmed';
|
||||
$lang->bug->toTask = 'To task';
|
||||
$lang->bug->toStory = 'To story';
|
||||
$lang->bug->mailto = 'Mailto';
|
||||
$lang->bug->openedBy = 'Opened By';
|
||||
$lang->bug->openedByAB = 'Opened';
|
||||
$lang->bug->openedDate = 'Opened date';
|
||||
$lang->bug->openedDateAB = 'Date';
|
||||
$lang->bug->openedBuild = 'Opened Build';
|
||||
$lang->bug->assignedTo = 'Assigned';
|
||||
$lang->bug->assignedDate = 'Assigned Date';
|
||||
$lang->bug->resolvedBy = 'Resolved By';
|
||||
$lang->bug->resolvedByAB = 'Resolve';
|
||||
$lang->bug->resolution = 'Resolution';
|
||||
$lang->bug->resolutionAB = 'Resolution';
|
||||
$lang->bug->resolvedBuild = 'Resolved Build';
|
||||
$lang->bug->resolvedDate = 'Resolved Date';
|
||||
$lang->bug->resolvedDateAB = 'Date';
|
||||
$lang->bug->closedBy = 'Closed By';
|
||||
$lang->bug->closedDate = 'Closed Date';
|
||||
$lang->bug->duplicateBug = 'Duplicate';
|
||||
$lang->bug->lastEditedBy = 'Last Edited By';
|
||||
$lang->bug->lastEditedDate = 'Last Edited Date';
|
||||
$lang->bug->linkBug = 'Related';
|
||||
$lang->bug->case = 'Case';
|
||||
$lang->bug->files = 'Files';
|
||||
$lang->bug->keywords = 'Keywords';
|
||||
$lang->bug->lastEditedByAB = 'Edited';
|
||||
$lang->bug->lastEditedDateAB = 'Edited Date';
|
||||
$lang->bug->fromCase = 'From case';
|
||||
$lang->bug->toCase = 'To case';
|
||||
|
||||
/* Actions. */
|
||||
$lang->bug->index = 'Index';
|
||||
$lang->bug->create = 'Create Bug';
|
||||
$lang->bug->confirmBug = 'Confirm Bug';
|
||||
$lang->bug->edit = 'Edit Bug';
|
||||
$lang->bug->batchEdit = 'Batch edit';
|
||||
$lang->bug->assignTo = 'Assign';
|
||||
$lang->bug->browse = 'Browse Bug';
|
||||
$lang->bug->view = 'Bug Info';
|
||||
$lang->bug->resolve = 'Resolve Bug';
|
||||
$lang->bug->close = 'Close Bug';
|
||||
$lang->bug->activate = 'Activate Bug';
|
||||
$lang->bug->reportChart = 'Report';
|
||||
$lang->bug->export = 'Export data';
|
||||
$lang->bug->delete = 'Delete Bug';
|
||||
$lang->bug->saveTemplate = 'Save template';
|
||||
$lang->bug->deleteTemplate = 'Delete template';
|
||||
$lang->bug->customFields = 'Custom';
|
||||
$lang->bug->restoreDefault = 'Default';
|
||||
$lang->bug->ajaxGetUserBugs = 'API: My Bugs';
|
||||
$lang->bug->ajaxGetModuleOwner = 'API: Get module default owner';
|
||||
$lang->bug->confirmStoryChange = 'Confirm Story Change';
|
||||
|
||||
/* Browse tabs. */
|
||||
$lang->bug->selectProduct = 'Select product';
|
||||
$lang->bug->byModule = 'ByModule';
|
||||
$lang->bug->assignToMe = 'MyBugs';
|
||||
$lang->bug->openedByMe = 'MyOpen';
|
||||
$lang->bug->resolvedByMe = 'MyResolve';
|
||||
$lang->bug->closedByMe = 'MyClose';
|
||||
$lang->bug->assignToNull = 'Unassigned';
|
||||
$lang->bug->unResolved = 'Unresolved';
|
||||
$lang->bug->unclosed = 'Unclosed';
|
||||
$lang->bug->longLifeBugs = 'Longlife';
|
||||
$lang->bug->postponedBugs = 'Postponed';
|
||||
$lang->bug->allBugs = 'Allbug';
|
||||
$lang->bug->moduleBugs = 'ByModule';
|
||||
$lang->bug->byQuery = 'Search';
|
||||
$lang->bug->needConfirm = 'StoryChanged';
|
||||
$lang->bug->allProduct = 'All products';
|
||||
|
||||
/* Labels. */
|
||||
$lang->bug->lblProductAndModule = 'Product&Module';
|
||||
$lang->bug->lblProjectAndTask = 'Project&Task';
|
||||
$lang->bug->lblStory = 'Story';
|
||||
$lang->bug->lblTypeAndSeverity = 'Type&Severity';
|
||||
$lang->bug->lblSystemBrowserAndHardware = 'OS&Browser';
|
||||
$lang->bug->lblAssignedTo = 'Assigned to';
|
||||
$lang->bug->lblMailto = 'Mailto';
|
||||
$lang->bug->lblLastEdited = 'Last edited';
|
||||
$lang->bug->lblResolved = 'Resolved';
|
||||
$lang->bug->lblAllFields = 'All Fields';
|
||||
$lang->bug->lblCustomFields = 'Custom Fields';
|
||||
|
||||
/* Legends. */
|
||||
$lang->bug->legendBasicInfo = 'Basic info';
|
||||
$lang->bug->legendMailto = 'Mailto';
|
||||
$lang->bug->legendAttatch = 'Files';
|
||||
$lang->bug->legendLinkBugs = 'Related bug';
|
||||
$lang->bug->legendPrjStoryTask = 'Project, story & task';
|
||||
$lang->bug->legendCases = 'Related case';
|
||||
$lang->bug->legendSteps = 'Steps';
|
||||
$lang->bug->legendAction = 'Action';
|
||||
$lang->bug->legendHistory = 'History';
|
||||
$lang->bug->legendComment = 'Comment';
|
||||
$lang->bug->legendLife = 'Lifetime';
|
||||
$lang->bug->legendMisc = 'Misc';
|
||||
|
||||
/* Action buttons. */
|
||||
$lang->bug->buttonConfirm = 'Confirm';
|
||||
$lang->bug->buttonCopy = 'Copy';
|
||||
$lang->bug->buttonAssign = 'Assgin';
|
||||
$lang->bug->buttonEdit = 'Edit';
|
||||
$lang->bug->buttonActivate = 'Activate';
|
||||
$lang->bug->buttonResolve = 'Resolve';
|
||||
$lang->bug->buttonClose = 'Close';
|
||||
$lang->bug->buttonToList = 'Back';
|
||||
$lang->bug->buttonCreateTestcase = 'Create case';
|
||||
|
||||
/* Confirm messags. */
|
||||
$lang->bug->confirmChangeProduct = 'Change product will change project, task and story also, are you sure?';
|
||||
$lang->bug->confirmDelete = 'Are you sure to delete this bug?';
|
||||
$lang->bug->setTemplateTitle = 'Please input the template title:';
|
||||
$lang->bug->remindTask = 'This bug has been to be a task, update the task:%s or not?';
|
||||
|
||||
/* Templates. */
|
||||
$lang->bug->tplStep = "<p>[Steps]</p>";
|
||||
$lang->bug->tplResult = "<p>[Result]</p>";
|
||||
$lang->bug->tplExpect = "<p>[Expect]</p>";
|
||||
|
||||
/* Field options lists. */
|
||||
$lang->bug->severityList[3] = '3';
|
||||
$lang->bug->severityList[1] = '1';
|
||||
$lang->bug->severityList[2] = '2';
|
||||
$lang->bug->severityList[4] = '4';
|
||||
|
||||
$lang->bug->priList[0] = '';
|
||||
$lang->bug->priList[3] = '3';
|
||||
$lang->bug->priList[1] = '1';
|
||||
$lang->bug->priList[2] = '2';
|
||||
$lang->bug->priList[4] = '4';
|
||||
|
||||
$lang->bug->osList[''] = '';
|
||||
$lang->bug->osList['all'] = 'All';
|
||||
$lang->bug->osList['windows'] = 'Windows';
|
||||
$lang->bug->osList['winxp'] = 'Windows XP';
|
||||
$lang->bug->osList['win7'] = 'Windows 7';
|
||||
$lang->bug->osList['vista'] = 'Windows Vista';
|
||||
$lang->bug->osList['win2000'] = 'Windows 2000';
|
||||
$lang->bug->osList['win2003'] = 'Windows 2003';
|
||||
$lang->bug->osList['win2008'] = 'Windows 2008';
|
||||
$lang->bug->osList['winnt'] = 'Windows NT';
|
||||
$lang->bug->osList['win98'] = 'Windows 98';
|
||||
$lang->bug->osList['andriod'] = 'Andriod';
|
||||
$lang->bug->osList['ios'] = 'IOS';
|
||||
$lang->bug->osList['wp7'] = 'WP7';
|
||||
$lang->bug->osList['symbian'] = 'Symbian';
|
||||
$lang->bug->osList['linux'] = 'Linux';
|
||||
$lang->bug->osList['freebsd'] = 'FreeBSD';
|
||||
$lang->bug->osList['mac'] = 'Mac OS';
|
||||
$lang->bug->osList['unix'] = 'Unix';
|
||||
$lang->bug->osList['others'] = 'Others';
|
||||
|
||||
$lang->bug->browserList[''] = '';
|
||||
$lang->bug->browserList['all'] = 'All';
|
||||
$lang->bug->browserList['ie'] = 'IE';
|
||||
$lang->bug->browserList['ie8'] = 'IE8';
|
||||
$lang->bug->browserList['ie9'] = 'IE9';
|
||||
$lang->bug->browserList['ie6'] = 'IE6';
|
||||
$lang->bug->browserList['ie7'] = 'IE7';
|
||||
$lang->bug->browserList['chrome'] = 'chrome';
|
||||
$lang->bug->browserList['firefox'] = 'Firefox';
|
||||
$lang->bug->browserList['firefox2'] = 'Firefox2';
|
||||
$lang->bug->browserList['firefox3'] = 'Firefox3';
|
||||
$lang->bug->browserList['firefox4'] = 'Firefox4';
|
||||
$lang->bug->browserList['opera'] = 'opera';
|
||||
$lang->bug->browserList['opera9'] = 'opera9';
|
||||
$lang->bug->browserList['oprea10'] = 'opera10';
|
||||
$lang->bug->browserList['oprea11'] = 'opera11';
|
||||
$lang->bug->browserList['safari'] = 'safari';
|
||||
$lang->bug->browserList['maxthon'] = '傲游';
|
||||
$lang->bug->browserList['uc'] = 'UC';
|
||||
$lang->bug->browserList['other'] = 'Others';
|
||||
|
||||
$lang->bug->typeList[''] = '';
|
||||
$lang->bug->typeList['codeerror'] = 'Code error';
|
||||
$lang->bug->typeList['interface'] = 'Interface';
|
||||
$lang->bug->typeList['designchange'] = 'Design change';
|
||||
$lang->bug->typeList['newfeature'] = 'New feature';
|
||||
$lang->bug->typeList['designdefect'] = 'Design defect';
|
||||
$lang->bug->typeList['config'] = 'Config';
|
||||
$lang->bug->typeList['install'] = 'Install';
|
||||
$lang->bug->typeList['security'] = 'Security';
|
||||
$lang->bug->typeList['performance'] = 'Performance';
|
||||
$lang->bug->typeList['standard'] = 'Standard';
|
||||
$lang->bug->typeList['automation'] = 'Automation';
|
||||
$lang->bug->typeList['trackthings'] = 'Tracking';
|
||||
$lang->bug->typeList['others'] = 'Others';
|
||||
|
||||
$lang->bug->statusList[''] = '';
|
||||
$lang->bug->statusList['active'] = 'Active';
|
||||
$lang->bug->statusList['resolved'] = 'Resolved';
|
||||
$lang->bug->statusList['closed'] = 'Closed';
|
||||
|
||||
$lang->bug->confirmedList[1] = 'Confirmed';
|
||||
$lang->bug->confirmedList[0] = 'Unconfirmed';
|
||||
|
||||
$lang->bug->resolutionList[''] = '';
|
||||
$lang->bug->resolutionList['bydesign'] = 'By design';
|
||||
$lang->bug->resolutionList['duplicate'] = 'Duplicate';
|
||||
$lang->bug->resolutionList['external'] = 'External';
|
||||
$lang->bug->resolutionList['fixed'] = 'Fixed';
|
||||
$lang->bug->resolutionList['notrepro'] = 'Not reproduce';
|
||||
$lang->bug->resolutionList['postponed'] = 'Postponed';
|
||||
$lang->bug->resolutionList['willnotfix'] = "Won't fix";
|
||||
$lang->bug->resolutionList['tostory'] = 'To story';
|
||||
|
||||
/* Report. */
|
||||
$lang->bug->report = new stdclass();
|
||||
$lang->bug->report->common = 'Report';
|
||||
$lang->bug->report->select = 'Select';
|
||||
$lang->bug->report->create = 'Create';
|
||||
|
||||
$lang->bug->report->charts['bugsPerProject'] = 'Project bugs';
|
||||
$lang->bug->report->charts['bugsPerBuild'] = 'Build bugs';
|
||||
$lang->bug->report->charts['bugsPerModule'] = 'Module bugs';
|
||||
$lang->bug->report->charts['openedBugsPerDay'] = 'Opened bugs per day';
|
||||
$lang->bug->report->charts['resolvedBugsPerDay'] = 'Resolved bugs per day';
|
||||
$lang->bug->report->charts['closedBugsPerDay'] = 'Closed bugs per day';
|
||||
$lang->bug->report->charts['openedBugsPerUser'] = 'Opened bugs per user';
|
||||
$lang->bug->report->charts['resolvedBugsPerUser'] = 'Resolved bugs per user';
|
||||
$lang->bug->report->charts['closedBugsPerUser'] = 'Closed bugs per user';
|
||||
$lang->bug->report->charts['bugsPerSeverity'] = 'Severity';
|
||||
$lang->bug->report->charts['bugsPerResolution'] = 'Resolution';
|
||||
$lang->bug->report->charts['bugsPerStatus'] = 'Status';
|
||||
$lang->bug->report->charts['bugsPerActivatedCount'] = 'Activated count';
|
||||
$lang->bug->report->charts['bugsPerType'] = 'Type';
|
||||
$lang->bug->report->charts['bugsPerAssignedTo'] = 'AssignedTo';
|
||||
//$lang->bug->report->charts['bugLiveDays'] = 'Bug处理时间统计';
|
||||
//$lang->bug->report->charts['bugHistories'] = 'Bug处理步骤统计';
|
||||
|
||||
$lang->bug->report->options = new stdclass();
|
||||
$lang->bug->report->options->graph = new stdclass();
|
||||
$lang->bug->report->options->swf = 'pie2d';
|
||||
$lang->bug->report->options->width = 'auto';
|
||||
$lang->bug->report->options->height = 300;
|
||||
$lang->bug->report->options->graph->baseFontSize = 12;
|
||||
$lang->bug->report->options->graph->showNames = 1;
|
||||
$lang->bug->report->options->graph->formatNumber = 1;
|
||||
$lang->bug->report->options->graph->decimalPrecision = 0;
|
||||
$lang->bug->report->options->graph->animation = 0;
|
||||
$lang->bug->report->options->graph->rotateNames = 0;
|
||||
$lang->bug->report->options->graph->yAxisName = 'COUNT';
|
||||
$lang->bug->report->options->graph->pieRadius = 100;
|
||||
$lang->bug->report->options->graph->showColumnShadow = 0;
|
||||
|
||||
$lang->bug->report->bugsPerProject = new stdclass();
|
||||
$lang->bug->report->bugsPerBuild = new stdclass();
|
||||
$lang->bug->report->bugsPerModule = new stdclass();
|
||||
$lang->bug->report->openedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->closedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->openedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->closedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->bugsPerSeverity = new stdclass();
|
||||
$lang->bug->report->bugsPerResolution = new stdclass();
|
||||
$lang->bug->report->bugsPerStatus = new stdclass();
|
||||
$lang->bug->report->bugsPerActivatedCount = new stdclass();
|
||||
$lang->bug->report->bugsPerType = new stdclass();
|
||||
$lang->bug->report->bugsPerAssignedTo = new stdclass();
|
||||
$lang->bug->report->bugLiveDays = new stdclass();
|
||||
$lang->bug->report->bugHistories = new stdclass();
|
||||
|
||||
$lang->bug->report->bugsPerProject->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerBuild->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerModule->graph = new stdclass();
|
||||
$lang->bug->report->openedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->closedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->openedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->closedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerSeverity->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerResolution->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerStatus->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerActivatedCount->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerType->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerAssignedTo->graph = new stdclass();
|
||||
$lang->bug->report->bugLiveDays->graph = new stdclass();
|
||||
$lang->bug->report->bugHistories->graph = new stdclass();
|
||||
|
||||
$lang->bug->report->bugsPerProject->graph->xAxisName = 'Project';
|
||||
$lang->bug->report->bugsPerBuild->graph->xAxisName = 'Build';
|
||||
$lang->bug->report->bugsPerModule->graph->xAxisName = 'Module';
|
||||
|
||||
$lang->bug->report->openedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->openedBugsPerDay->height = 400;
|
||||
$lang->bug->report->openedBugsPerDay->graph->xAxisName = 'Date';
|
||||
$lang->bug->report->openedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->resolvedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->resolvedBugsPerDay->height = 400;
|
||||
$lang->bug->report->resolvedBugsPerDay->graph->xAxisName = 'Date';
|
||||
$lang->bug->report->resolvedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->closedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->closedBugsPerDay->height = 400;
|
||||
$lang->bug->report->closedBugsPerDay->graph->xAxisName = 'Date';
|
||||
$lang->bug->report->closedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->openedBugsPerUser->graph->xAxisName = 'User';
|
||||
$lang->bug->report->resolvedBugsPerUser->graph->xAxisName= 'User';
|
||||
$lang->bug->report->closedBugsPerUser->graph->xAxisName = 'User';
|
||||
|
||||
$lang->bug->report->bugsPerSeverity->graph->xAxisName = 'Severity';
|
||||
$lang->bug->report->bugsPerResolution->graph->xAxisName = 'Resolution';
|
||||
$lang->bug->report->bugsPerStatus->graph->xAxisName = 'Status';
|
||||
$lang->bug->report->bugsPerActivatedCount->graph->xAxisName = 'Activated count';
|
||||
$lang->bug->report->bugsPerType->graph->xAxisName = 'Type';
|
||||
$lang->bug->report->bugsPerAssignedTo->graph->xAxisName = 'AssignedTo';
|
||||
$lang->bug->report->bugLiveDays->graph->xAxisName = 'Live days';
|
||||
$lang->bug->report->bugHistories->graph->xAxisName = 'Histories';
|
||||
|
||||
/* 操作记录。*/
|
||||
$lang->bug->action = new stdclass();
|
||||
$lang->bug->action->resolved = array('main' => '$date, Resolved by <strong>$actor</strong>, resolution is <strong>$extra</strong>.', 'extra' => $lang->bug->resolutionList);
|
||||
$lang->bug->action->tostory = array('main' => '$date, To story by <strong>$actor</strong>, ID is <strong>$extra</strong>.');
|
||||
$lang->bug->action->totask = array('main' => '$date, To task by <strong>$actor</strong>, ID is <strong>$extra</strong>.');
|
||||
|
||||
$lang->bug->placeholder = new stdclass();
|
||||
$lang->bug->placeholder->mailto = 'you can input the user account to select users to mail to.';
|
||||
$lang->bug->placeholder->keywords = 'keywords';
|
||||
|
||||
+360
-360
@@ -1,360 +1,360 @@
|
||||
<?php
|
||||
/**
|
||||
* The bug module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* 字段列表。*/
|
||||
$lang->bug->common = '缺陷管理';
|
||||
$lang->bug->id = 'Bug编号';
|
||||
$lang->bug->product = '所属产品';
|
||||
$lang->bug->module = '所属模块';
|
||||
$lang->bug->path = '模块路径';
|
||||
$lang->bug->project = '所属项目';
|
||||
$lang->bug->story = '相关需求';
|
||||
$lang->bug->storyVersion = '需求版本';
|
||||
$lang->bug->task = '相关任务';
|
||||
$lang->bug->title = 'Bug标题';
|
||||
$lang->bug->severity = '严重程度';
|
||||
$lang->bug->severityAB = '级别';
|
||||
$lang->bug->pri = '优先级';
|
||||
$lang->bug->type = 'Bug类型';
|
||||
$lang->bug->os = '操作系统';
|
||||
$lang->bug->hardware = '硬件平台';
|
||||
$lang->bug->browser = '浏览器';
|
||||
$lang->bug->machine = '机器硬件';
|
||||
$lang->bug->found = '如何发现';
|
||||
$lang->bug->steps = '重现步骤';
|
||||
$lang->bug->status = 'Bug状态';
|
||||
$lang->bug->statusAB = '状态';
|
||||
$lang->bug->activatedCount = '激活次数';
|
||||
$lang->bug->activatedCountAB = '激活次数';
|
||||
$lang->bug->confirmed = '是否确认';
|
||||
$lang->bug->toTask = '转任务';
|
||||
$lang->bug->toStory = '转需求';
|
||||
$lang->bug->mailto = '抄送给';
|
||||
$lang->bug->openedBy = '由谁创建';
|
||||
$lang->bug->openedByAB = '创建';
|
||||
$lang->bug->openedDate = '创建日期';
|
||||
$lang->bug->openedDateAB = '创建日期';
|
||||
$lang->bug->openedBuild = '影响版本';
|
||||
$lang->bug->assignedTo = '指派给';
|
||||
$lang->bug->assignedDate = '指派日期';
|
||||
$lang->bug->resolvedBy = '解决者';
|
||||
$lang->bug->resolvedByAB = '解决';
|
||||
$lang->bug->resolution = '解决方案';
|
||||
$lang->bug->resolutionAB = '方案';
|
||||
$lang->bug->resolvedBuild = '解决版本';
|
||||
$lang->bug->resolvedDate = '解决日期';
|
||||
$lang->bug->resolvedDateAB = '解决日期';
|
||||
$lang->bug->closedBy = '由谁关闭';
|
||||
$lang->bug->closedDate = '关闭日期';
|
||||
$lang->bug->duplicateBug = '重复ID';
|
||||
$lang->bug->lastEditedBy = '最后修改者';
|
||||
$lang->bug->lastEditedDate = '最后修改日期';
|
||||
$lang->bug->linkBug = '相关Bug';
|
||||
$lang->bug->case = '相关用例';
|
||||
$lang->bug->files = '附件';
|
||||
$lang->bug->keywords = '关键词';
|
||||
$lang->bug->lastEditedByAB = '修改者';
|
||||
$lang->bug->lastEditedDateAB = '修改日期';
|
||||
$lang->bug->fromCase = '来源用例';
|
||||
$lang->bug->toCase = '生成用例';
|
||||
|
||||
/* 方法列表。*/
|
||||
$lang->bug->index = '首页';
|
||||
$lang->bug->create = '提Bug';
|
||||
$lang->bug->confirmBug = '确认';
|
||||
$lang->bug->edit = '编辑';
|
||||
$lang->bug->batchEdit = '批量编辑';
|
||||
$lang->bug->assignTo = '指派';
|
||||
$lang->bug->browse = 'Bug列表';
|
||||
$lang->bug->view = 'Bug详情';
|
||||
$lang->bug->resolve = '解决';
|
||||
$lang->bug->close = '关闭';
|
||||
$lang->bug->activate = '激活Bug';
|
||||
$lang->bug->reportChart = '报表统计';
|
||||
$lang->bug->export = '导出';
|
||||
$lang->bug->delete = '删除';
|
||||
$lang->bug->saveTemplate = '保存模板';
|
||||
$lang->bug->deleteTemplate = '删除模板';
|
||||
$lang->bug->customFields = '自定义字段';
|
||||
$lang->bug->restoreDefault = '恢复默认';
|
||||
$lang->bug->ajaxGetUserBugs = '接口:我的Bug';
|
||||
$lang->bug->ajaxGetModuleOwner = '接口:获得模块的默认指派人';
|
||||
$lang->bug->confirmStoryChange = '确认需求变动';
|
||||
|
||||
/* 查询条件列表。*/
|
||||
$lang->bug->selectProduct = '请选择产品';
|
||||
$lang->bug->byModule = '按模块';
|
||||
$lang->bug->assignToMe = '指派给我';
|
||||
$lang->bug->openedByMe = '由我创建';
|
||||
$lang->bug->resolvedByMe = '由我解决';
|
||||
$lang->bug->closedByMe = '由我关闭';
|
||||
$lang->bug->assignToNull = '未指派';
|
||||
$lang->bug->unResolved = '未解决';
|
||||
$lang->bug->unclosed = '未关闭';
|
||||
$lang->bug->longLifeBugs = '久未处理';
|
||||
$lang->bug->postponedBugs = '被延期';
|
||||
$lang->bug->allBugs = '所有';
|
||||
$lang->bug->moduleBugs = '按模块';
|
||||
$lang->bug->byQuery = '搜索';
|
||||
$lang->bug->needConfirm = '需求变动';
|
||||
$lang->bug->allProduct = '所有产品';
|
||||
|
||||
/* 页面标签。*/
|
||||
$lang->bug->lblProductAndModule = '产品模块';
|
||||
$lang->bug->lblProjectAndTask = '项目任务';
|
||||
$lang->bug->lblStory = '相关需求';
|
||||
$lang->bug->lblTypeAndSeverity = '类型/严重程度';
|
||||
$lang->bug->lblSystemBrowserAndHardware = '系统/浏览器';
|
||||
$lang->bug->lblAssignedTo = '当前指派';
|
||||
$lang->bug->lblMailto = '抄送给';
|
||||
$lang->bug->lblLastEdited = '最后修改';
|
||||
$lang->bug->lblResolved = '由谁解决';
|
||||
$lang->bug->lblAllFields = '所有字段';
|
||||
$lang->bug->lblCustomFields = '自定义字段';
|
||||
|
||||
/* legend列表。*/
|
||||
$lang->bug->legendBasicInfo = '基本信息';
|
||||
$lang->bug->legendMailto = '抄送给';
|
||||
$lang->bug->legendAttatch = '附件';
|
||||
$lang->bug->legendLinkBugs = '相关Bug';
|
||||
$lang->bug->legendPrjStoryTask = '项目/需求/任务';
|
||||
$lang->bug->legendCases = '相关用例';
|
||||
$lang->bug->legendSteps = '重现步骤';
|
||||
$lang->bug->legendAction = '操作';
|
||||
$lang->bug->legendHistory = '历史记录';
|
||||
$lang->bug->legendComment = '备注';
|
||||
$lang->bug->legendLife = 'BUG的一生';
|
||||
$lang->bug->legendMisc = '其他相关';
|
||||
|
||||
/* 功能按钮。*/
|
||||
$lang->bug->buttonConfirm = '确认';
|
||||
$lang->bug->buttonCopy = '复制';
|
||||
$lang->bug->buttonAssign = '指派';
|
||||
$lang->bug->buttonEdit = '编辑';
|
||||
$lang->bug->buttonActivate = '激活';
|
||||
$lang->bug->buttonResolve = '解决';
|
||||
$lang->bug->buttonClose = '关闭';
|
||||
$lang->bug->buttonToList = '返回';
|
||||
$lang->bug->buttonCreateTestcase = '建用例';
|
||||
|
||||
/* 交互提示。*/
|
||||
$lang->bug->confirmChangeProduct = '修改产品会导致相应的项目、需求和任务发生变化,确定吗?';
|
||||
$lang->bug->confirmDelete = '您确认要删除该Bug吗?';
|
||||
$lang->bug->setTemplateTitle = '请输入bug模板标题(保存之前请先填写bug重现步骤):';
|
||||
$lang->bug->remindTask = '该Bug已经转化为任务,是否更新任务(编号:%s)状态 ?';
|
||||
|
||||
/* 模板。*/
|
||||
$lang->bug->tplStep = "<p>[步骤]</p>";
|
||||
$lang->bug->tplResult = "<p>[结果]</p>";
|
||||
$lang->bug->tplExpect = "<p>[期望]</p>";
|
||||
|
||||
/* 各个字段取值列表。*/
|
||||
$lang->bug->severityList[3] = '3';
|
||||
$lang->bug->severityList[1] = '1';
|
||||
$lang->bug->severityList[2] = '2';
|
||||
$lang->bug->severityList[4] = '4';
|
||||
|
||||
$lang->bug->priList[0] = '';
|
||||
$lang->bug->priList[3] = '3';
|
||||
$lang->bug->priList[1] = '1';
|
||||
$lang->bug->priList[2] = '2';
|
||||
$lang->bug->priList[4] = '4';
|
||||
|
||||
$lang->bug->osList[''] = '';
|
||||
$lang->bug->osList['all'] = '全部';
|
||||
$lang->bug->osList['windows'] = 'Windows';
|
||||
$lang->bug->osList['winxp'] = 'Windows XP';
|
||||
$lang->bug->osList['win7'] = 'Windows 7';
|
||||
$lang->bug->osList['vista'] = 'Windows Vista';
|
||||
$lang->bug->osList['win2000'] = 'Windows 2000';
|
||||
$lang->bug->osList['win2003'] = 'Windows 2003';
|
||||
$lang->bug->osList['win2008'] = 'Windows 2008';
|
||||
$lang->bug->osList['winnt'] = 'Windows NT';
|
||||
$lang->bug->osList['win98'] = 'Windows 98';
|
||||
$lang->bug->osList['andriod'] = 'Andriod';
|
||||
$lang->bug->osList['ios'] = 'IOS';
|
||||
$lang->bug->osList['wp7'] = 'WP7';
|
||||
$lang->bug->osList['symbian'] = 'Symbian';
|
||||
$lang->bug->osList['linux'] = 'Linux';
|
||||
$lang->bug->osList['freebsd'] = 'FreeBSD';
|
||||
$lang->bug->osList['mac'] = 'Mac OS';
|
||||
$lang->bug->osList['unix'] = 'Unix';
|
||||
$lang->bug->osList['others'] = '其他';
|
||||
|
||||
$lang->bug->browserList[''] = '';
|
||||
$lang->bug->browserList['all'] = '全部';
|
||||
$lang->bug->browserList['ie'] = 'IE系列';
|
||||
$lang->bug->browserList['ie8'] = 'IE8';
|
||||
$lang->bug->browserList['ie9'] = 'IE9';
|
||||
$lang->bug->browserList['ie6'] = 'IE6';
|
||||
$lang->bug->browserList['ie7'] = 'IE7';
|
||||
$lang->bug->browserList['chrome'] = 'chrome';
|
||||
$lang->bug->browserList['firefox'] = 'firefox系列';
|
||||
$lang->bug->browserList['firefox2'] = 'firefox2';
|
||||
$lang->bug->browserList['firefox3'] = 'firefox3';
|
||||
$lang->bug->browserList['firefox4'] = 'firefox4';
|
||||
$lang->bug->browserList['opera'] = 'opera系列';
|
||||
$lang->bug->browserList['opera9'] = 'opera9';
|
||||
$lang->bug->browserList['oprea10'] = 'opera10';
|
||||
$lang->bug->browserList['oprea11'] = 'opera11';
|
||||
$lang->bug->browserList['safari'] = 'safari';
|
||||
$lang->bug->browserList['maxthon'] = '傲游';
|
||||
$lang->bug->browserList['uc'] = 'UC';
|
||||
$lang->bug->browserList['other'] = '其他';
|
||||
|
||||
$lang->bug->typeList[''] = '';
|
||||
$lang->bug->typeList['codeerror'] = '代码错误';
|
||||
$lang->bug->typeList['interface'] = '界面优化';
|
||||
$lang->bug->typeList['designchange'] = '设计变更';
|
||||
$lang->bug->typeList['newfeature'] = '新增需求';
|
||||
$lang->bug->typeList['designdefect'] = '设计缺陷';
|
||||
$lang->bug->typeList['config'] = '配置相关';
|
||||
$lang->bug->typeList['install'] = '安装部署';
|
||||
$lang->bug->typeList['security'] = '安全相关';
|
||||
$lang->bug->typeList['performance'] = '性能问题';
|
||||
$lang->bug->typeList['standard'] = '标准规范';
|
||||
$lang->bug->typeList['automation'] = '测试脚本';
|
||||
$lang->bug->typeList['trackthings'] = '事务跟踪';
|
||||
$lang->bug->typeList['others'] = '其他';
|
||||
|
||||
$lang->bug->statusList[''] = '';
|
||||
$lang->bug->statusList['active'] = '激活';
|
||||
$lang->bug->statusList['resolved'] = '已解决';
|
||||
$lang->bug->statusList['closed'] = '已关闭';
|
||||
|
||||
$lang->bug->confirmedList[1] = '已确认';
|
||||
$lang->bug->confirmedList[0] = '未确认';
|
||||
|
||||
$lang->bug->resolutionList[''] = '';
|
||||
$lang->bug->resolutionList['bydesign'] = '设计如此';
|
||||
$lang->bug->resolutionList['duplicate'] = '重复Bug';
|
||||
$lang->bug->resolutionList['external'] = '外部原因';
|
||||
$lang->bug->resolutionList['fixed'] = '已解决';
|
||||
$lang->bug->resolutionList['notrepro'] = '无法重现';
|
||||
$lang->bug->resolutionList['postponed'] = '延期处理';
|
||||
$lang->bug->resolutionList['willnotfix'] = "不予解决";
|
||||
$lang->bug->resolutionList['tostory'] = '转为需求';
|
||||
|
||||
/* 统计报表。*/
|
||||
$lang->bug->report = new stdclass();
|
||||
$lang->bug->report->common = '报表';
|
||||
$lang->bug->report->select = '请选择报表类型';
|
||||
$lang->bug->report->create = '生成报表';
|
||||
|
||||
$lang->bug->report->charts['bugsPerProject'] = '项目Bug数量';
|
||||
$lang->bug->report->charts['bugsPerBuild'] = '版本Bug数量';
|
||||
$lang->bug->report->charts['bugsPerModule'] = '模块Bug数量';
|
||||
$lang->bug->report->charts['openedBugsPerDay'] = '每天新增Bug数';
|
||||
$lang->bug->report->charts['resolvedBugsPerDay'] = '每天解决Bug数';
|
||||
$lang->bug->report->charts['closedBugsPerDay'] = '每天关闭的Bug数';
|
||||
$lang->bug->report->charts['openedBugsPerUser'] = '每人提交的Bug数';
|
||||
$lang->bug->report->charts['resolvedBugsPerUser'] = '每人解决的Bug数';
|
||||
$lang->bug->report->charts['closedBugsPerUser'] = '每人关闭的Bug数';
|
||||
$lang->bug->report->charts['bugsPerSeverity'] = 'Bug严重程度统计';
|
||||
$lang->bug->report->charts['bugsPerResolution'] = 'Bug解决方案统计';
|
||||
$lang->bug->report->charts['bugsPerStatus'] = 'Bug状态统计';
|
||||
$lang->bug->report->charts['bugsPerActivatedCount'] = 'Bug激活次数统计';
|
||||
$lang->bug->report->charts['bugsPerType'] = 'Bug类型统计';
|
||||
$lang->bug->report->charts['bugsPerAssignedTo'] = '指派给统计';
|
||||
//$lang->bug->report->charts['bugLiveDays'] = 'Bug处理时间统计';
|
||||
//$lang->bug->report->charts['bugHistories'] = 'Bug处理步骤统计';
|
||||
|
||||
$lang->bug->report->options = new stdclass();
|
||||
$lang->bug->report->options->graph = new stdclass();
|
||||
$lang->bug->report->options->swf = 'pie2d';
|
||||
$lang->bug->report->options->width = 'auto';
|
||||
$lang->bug->report->options->height = 300;
|
||||
$lang->bug->report->options->graph->baseFontSize = 12;
|
||||
$lang->bug->report->options->graph->showNames = 1;
|
||||
$lang->bug->report->options->graph->formatNumber = 1;
|
||||
$lang->bug->report->options->graph->decimalPrecision = 0;
|
||||
$lang->bug->report->options->graph->animation = 0;
|
||||
$lang->bug->report->options->graph->rotateNames = 0;
|
||||
$lang->bug->report->options->graph->yAxisName = 'COUNT';
|
||||
$lang->bug->report->options->graph->pieRadius = 100; // 饼图直径。
|
||||
$lang->bug->report->options->graph->showColumnShadow = 0; // 是否显示柱状图阴影。
|
||||
|
||||
$lang->bug->report->bugsPerProject = new stdclass();
|
||||
$lang->bug->report->bugsPerBuild = new stdclass();
|
||||
$lang->bug->report->bugsPerModule = new stdclass();
|
||||
$lang->bug->report->openedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->closedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->openedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->closedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->bugsPerSeverity = new stdclass();
|
||||
$lang->bug->report->bugsPerResolution = new stdclass();
|
||||
$lang->bug->report->bugsPerStatus = new stdclass();
|
||||
$lang->bug->report->bugsPerActivatedCount = new stdclass();
|
||||
$lang->bug->report->bugsPerType = new stdclass();
|
||||
$lang->bug->report->bugsPerAssignedTo = new stdclass();
|
||||
$lang->bug->report->bugLiveDays = new stdclass();
|
||||
$lang->bug->report->bugHistories = new stdclass();
|
||||
|
||||
$lang->bug->report->bugsPerProject->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerBuild->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerModule->graph = new stdclass();
|
||||
$lang->bug->report->openedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->closedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->openedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->closedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerSeverity->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerResolution->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerStatus->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerActivatedCount->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerType->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerAssignedTo->graph = new stdclass();
|
||||
$lang->bug->report->bugLiveDays->graph = new stdclass();
|
||||
$lang->bug->report->bugHistories->graph = new stdclass();
|
||||
|
||||
$lang->bug->report->bugsPerProject->graph->xAxisName = '项目';
|
||||
$lang->bug->report->bugsPerBuild->graph->xAxisName = '版本';
|
||||
$lang->bug->report->bugsPerModule->graph->xAxisName = '模块';
|
||||
|
||||
$lang->bug->report->openedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->openedBugsPerDay->height = 400;
|
||||
$lang->bug->report->openedBugsPerDay->graph->xAxisName = '日期';
|
||||
$lang->bug->report->openedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->resolvedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->resolvedBugsPerDay->height = 400;
|
||||
$lang->bug->report->resolvedBugsPerDay->graph->xAxisName = '日期';
|
||||
$lang->bug->report->resolvedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->closedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->closedBugsPerDay->height = 400;
|
||||
$lang->bug->report->closedBugsPerDay->graph->xAxisName = '日期';
|
||||
$lang->bug->report->closedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->openedBugsPerUser->graph->xAxisName = '用户';
|
||||
$lang->bug->report->resolvedBugsPerUser->graph->xAxisName= '用户';
|
||||
$lang->bug->report->closedBugsPerUser->graph->xAxisName = '用户';
|
||||
|
||||
$lang->bug->report->bugsPerSeverity->graph->xAxisName = '严重程度';
|
||||
$lang->bug->report->bugsPerResolution->graph->xAxisName = '解决方案';
|
||||
$lang->bug->report->bugsPerStatus->graph->xAxisName = '状态';
|
||||
$lang->bug->report->bugsPerActivatedCount->graph->xAxisName = '激活次数';
|
||||
$lang->bug->report->bugsPerType->graph->xAxisName = '类型';
|
||||
$lang->bug->report->bugsPerAssignedTo->graph->xAxisName = '指派给';
|
||||
$lang->bug->report->bugLiveDays->graph->xAxisName = '处理时间';
|
||||
$lang->bug->report->bugHistories->graph->xAxisName = '处理步骤';
|
||||
|
||||
/* 操作记录。*/
|
||||
$lang->bug->action = new stdclass();
|
||||
$lang->bug->action->resolved = array('main' => '$date, 由 <strong>$actor</strong> 解决,方案为 <strong>$extra</strong>。', 'extra' => $lang->bug->resolutionList);
|
||||
$lang->bug->action->tostory = array('main' => '$date, 由 <strong>$actor</strong> 转为<strong>需求</strong>,编号为 <strong>$extra</strong>。');
|
||||
$lang->bug->action->totask = array('main' => '$date, 由 <strong>$actor</strong> 导入为<strong>任务</strong>,编号为 <strong>$extra</strong>。');
|
||||
|
||||
$lang->bug->placeholder = new stdclass();
|
||||
$lang->bug->placeholder->mailto = '输入用户名自动选择';
|
||||
<?php
|
||||
/**
|
||||
* The bug module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* 字段列表。*/
|
||||
$lang->bug->common = '缺陷管理';
|
||||
$lang->bug->id = 'Bug编号';
|
||||
$lang->bug->product = '所属产品';
|
||||
$lang->bug->module = '所属模块';
|
||||
$lang->bug->path = '模块路径';
|
||||
$lang->bug->project = '所属项目';
|
||||
$lang->bug->story = '相关需求';
|
||||
$lang->bug->storyVersion = '需求版本';
|
||||
$lang->bug->task = '相关任务';
|
||||
$lang->bug->title = 'Bug标题';
|
||||
$lang->bug->severity = '严重程度';
|
||||
$lang->bug->severityAB = '级别';
|
||||
$lang->bug->pri = '优先级';
|
||||
$lang->bug->type = 'Bug类型';
|
||||
$lang->bug->os = '操作系统';
|
||||
$lang->bug->hardware = '硬件平台';
|
||||
$lang->bug->browser = '浏览器';
|
||||
$lang->bug->machine = '机器硬件';
|
||||
$lang->bug->found = '如何发现';
|
||||
$lang->bug->steps = '重现步骤';
|
||||
$lang->bug->status = 'Bug状态';
|
||||
$lang->bug->statusAB = '状态';
|
||||
$lang->bug->activatedCount = '激活次数';
|
||||
$lang->bug->activatedCountAB = '激活次数';
|
||||
$lang->bug->confirmed = '是否确认';
|
||||
$lang->bug->toTask = '转任务';
|
||||
$lang->bug->toStory = '转需求';
|
||||
$lang->bug->mailto = '抄送给';
|
||||
$lang->bug->openedBy = '由谁创建';
|
||||
$lang->bug->openedByAB = '创建';
|
||||
$lang->bug->openedDate = '创建日期';
|
||||
$lang->bug->openedDateAB = '创建日期';
|
||||
$lang->bug->openedBuild = '影响版本';
|
||||
$lang->bug->assignedTo = '指派给';
|
||||
$lang->bug->assignedDate = '指派日期';
|
||||
$lang->bug->resolvedBy = '解决者';
|
||||
$lang->bug->resolvedByAB = '解决';
|
||||
$lang->bug->resolution = '解决方案';
|
||||
$lang->bug->resolutionAB = '方案';
|
||||
$lang->bug->resolvedBuild = '解决版本';
|
||||
$lang->bug->resolvedDate = '解决日期';
|
||||
$lang->bug->resolvedDateAB = '解决日期';
|
||||
$lang->bug->closedBy = '由谁关闭';
|
||||
$lang->bug->closedDate = '关闭日期';
|
||||
$lang->bug->duplicateBug = '重复ID';
|
||||
$lang->bug->lastEditedBy = '最后修改者';
|
||||
$lang->bug->lastEditedDate = '最后修改日期';
|
||||
$lang->bug->linkBug = '相关Bug';
|
||||
$lang->bug->case = '相关用例';
|
||||
$lang->bug->files = '附件';
|
||||
$lang->bug->keywords = '关键词';
|
||||
$lang->bug->lastEditedByAB = '修改者';
|
||||
$lang->bug->lastEditedDateAB = '修改日期';
|
||||
$lang->bug->fromCase = '来源用例';
|
||||
$lang->bug->toCase = '生成用例';
|
||||
|
||||
/* 方法列表。*/
|
||||
$lang->bug->index = '首页';
|
||||
$lang->bug->create = '提Bug';
|
||||
$lang->bug->confirmBug = '确认';
|
||||
$lang->bug->edit = '编辑';
|
||||
$lang->bug->batchEdit = '批量编辑';
|
||||
$lang->bug->assignTo = '指派';
|
||||
$lang->bug->browse = 'Bug列表';
|
||||
$lang->bug->view = 'Bug详情';
|
||||
$lang->bug->resolve = '解决';
|
||||
$lang->bug->close = '关闭';
|
||||
$lang->bug->activate = '激活Bug';
|
||||
$lang->bug->reportChart = '报表统计';
|
||||
$lang->bug->export = '导出';
|
||||
$lang->bug->delete = '删除';
|
||||
$lang->bug->saveTemplate = '保存模板';
|
||||
$lang->bug->deleteTemplate = '删除模板';
|
||||
$lang->bug->customFields = '自定义字段';
|
||||
$lang->bug->restoreDefault = '恢复默认';
|
||||
$lang->bug->ajaxGetUserBugs = '接口:我的Bug';
|
||||
$lang->bug->ajaxGetModuleOwner = '接口:获得模块的默认指派人';
|
||||
$lang->bug->confirmStoryChange = '确认需求变动';
|
||||
|
||||
/* 查询条件列表。*/
|
||||
$lang->bug->selectProduct = '请选择产品';
|
||||
$lang->bug->byModule = '按模块';
|
||||
$lang->bug->assignToMe = '指派给我';
|
||||
$lang->bug->openedByMe = '由我创建';
|
||||
$lang->bug->resolvedByMe = '由我解决';
|
||||
$lang->bug->closedByMe = '由我关闭';
|
||||
$lang->bug->assignToNull = '未指派';
|
||||
$lang->bug->unResolved = '未解决';
|
||||
$lang->bug->unclosed = '未关闭';
|
||||
$lang->bug->longLifeBugs = '久未处理';
|
||||
$lang->bug->postponedBugs = '被延期';
|
||||
$lang->bug->allBugs = '所有';
|
||||
$lang->bug->moduleBugs = '按模块';
|
||||
$lang->bug->byQuery = '搜索';
|
||||
$lang->bug->needConfirm = '需求变动';
|
||||
$lang->bug->allProduct = '所有产品';
|
||||
|
||||
/* 页面标签。*/
|
||||
$lang->bug->lblProductAndModule = '产品模块';
|
||||
$lang->bug->lblProjectAndTask = '项目任务';
|
||||
$lang->bug->lblStory = '相关需求';
|
||||
$lang->bug->lblTypeAndSeverity = '类型/严重程度';
|
||||
$lang->bug->lblSystemBrowserAndHardware = '系统/浏览器';
|
||||
$lang->bug->lblAssignedTo = '当前指派';
|
||||
$lang->bug->lblMailto = '抄送给';
|
||||
$lang->bug->lblLastEdited = '最后修改';
|
||||
$lang->bug->lblResolved = '由谁解决';
|
||||
$lang->bug->lblAllFields = '所有字段';
|
||||
$lang->bug->lblCustomFields = '自定义字段';
|
||||
|
||||
/* legend列表。*/
|
||||
$lang->bug->legendBasicInfo = '基本信息';
|
||||
$lang->bug->legendMailto = '抄送给';
|
||||
$lang->bug->legendAttatch = '附件';
|
||||
$lang->bug->legendLinkBugs = '相关Bug';
|
||||
$lang->bug->legendPrjStoryTask = '项目/需求/任务';
|
||||
$lang->bug->legendCases = '相关用例';
|
||||
$lang->bug->legendSteps = '重现步骤';
|
||||
$lang->bug->legendAction = '操作';
|
||||
$lang->bug->legendHistory = '历史记录';
|
||||
$lang->bug->legendComment = '备注';
|
||||
$lang->bug->legendLife = 'BUG的一生';
|
||||
$lang->bug->legendMisc = '其他相关';
|
||||
|
||||
/* 功能按钮。*/
|
||||
$lang->bug->buttonConfirm = '确认';
|
||||
$lang->bug->buttonCopy = '复制';
|
||||
$lang->bug->buttonAssign = '指派';
|
||||
$lang->bug->buttonEdit = '编辑';
|
||||
$lang->bug->buttonActivate = '激活';
|
||||
$lang->bug->buttonResolve = '解决';
|
||||
$lang->bug->buttonClose = '关闭';
|
||||
$lang->bug->buttonToList = '返回';
|
||||
$lang->bug->buttonCreateTestcase = '建用例';
|
||||
|
||||
/* 交互提示。*/
|
||||
$lang->bug->confirmChangeProduct = '修改产品会导致相应的项目、需求和任务发生变化,确定吗?';
|
||||
$lang->bug->confirmDelete = '您确认要删除该Bug吗?';
|
||||
$lang->bug->setTemplateTitle = '请输入bug模板标题(保存之前请先填写bug重现步骤):';
|
||||
$lang->bug->remindTask = '该Bug已经转化为任务,是否更新任务(编号:%s)状态 ?';
|
||||
|
||||
/* 模板。*/
|
||||
$lang->bug->tplStep = "<p>[步骤]</p>";
|
||||
$lang->bug->tplResult = "<p>[结果]</p>";
|
||||
$lang->bug->tplExpect = "<p>[期望]</p>";
|
||||
|
||||
/* 各个字段取值列表。*/
|
||||
$lang->bug->severityList[3] = '3';
|
||||
$lang->bug->severityList[1] = '1';
|
||||
$lang->bug->severityList[2] = '2';
|
||||
$lang->bug->severityList[4] = '4';
|
||||
|
||||
$lang->bug->priList[0] = '';
|
||||
$lang->bug->priList[3] = '3';
|
||||
$lang->bug->priList[1] = '1';
|
||||
$lang->bug->priList[2] = '2';
|
||||
$lang->bug->priList[4] = '4';
|
||||
|
||||
$lang->bug->osList[''] = '';
|
||||
$lang->bug->osList['all'] = '全部';
|
||||
$lang->bug->osList['windows'] = 'Windows';
|
||||
$lang->bug->osList['winxp'] = 'Windows XP';
|
||||
$lang->bug->osList['win7'] = 'Windows 7';
|
||||
$lang->bug->osList['vista'] = 'Windows Vista';
|
||||
$lang->bug->osList['win2000'] = 'Windows 2000';
|
||||
$lang->bug->osList['win2003'] = 'Windows 2003';
|
||||
$lang->bug->osList['win2008'] = 'Windows 2008';
|
||||
$lang->bug->osList['winnt'] = 'Windows NT';
|
||||
$lang->bug->osList['win98'] = 'Windows 98';
|
||||
$lang->bug->osList['andriod'] = 'Andriod';
|
||||
$lang->bug->osList['ios'] = 'IOS';
|
||||
$lang->bug->osList['wp7'] = 'WP7';
|
||||
$lang->bug->osList['symbian'] = 'Symbian';
|
||||
$lang->bug->osList['linux'] = 'Linux';
|
||||
$lang->bug->osList['freebsd'] = 'FreeBSD';
|
||||
$lang->bug->osList['mac'] = 'Mac OS';
|
||||
$lang->bug->osList['unix'] = 'Unix';
|
||||
$lang->bug->osList['others'] = '其他';
|
||||
|
||||
$lang->bug->browserList[''] = '';
|
||||
$lang->bug->browserList['all'] = '全部';
|
||||
$lang->bug->browserList['ie'] = 'IE系列';
|
||||
$lang->bug->browserList['ie8'] = 'IE8';
|
||||
$lang->bug->browserList['ie9'] = 'IE9';
|
||||
$lang->bug->browserList['ie6'] = 'IE6';
|
||||
$lang->bug->browserList['ie7'] = 'IE7';
|
||||
$lang->bug->browserList['chrome'] = 'chrome';
|
||||
$lang->bug->browserList['firefox'] = 'firefox系列';
|
||||
$lang->bug->browserList['firefox2'] = 'firefox2';
|
||||
$lang->bug->browserList['firefox3'] = 'firefox3';
|
||||
$lang->bug->browserList['firefox4'] = 'firefox4';
|
||||
$lang->bug->browserList['opera'] = 'opera系列';
|
||||
$lang->bug->browserList['opera9'] = 'opera9';
|
||||
$lang->bug->browserList['oprea10'] = 'opera10';
|
||||
$lang->bug->browserList['oprea11'] = 'opera11';
|
||||
$lang->bug->browserList['safari'] = 'safari';
|
||||
$lang->bug->browserList['maxthon'] = '傲游';
|
||||
$lang->bug->browserList['uc'] = 'UC';
|
||||
$lang->bug->browserList['other'] = '其他';
|
||||
|
||||
$lang->bug->typeList[''] = '';
|
||||
$lang->bug->typeList['codeerror'] = '代码错误';
|
||||
$lang->bug->typeList['interface'] = '界面优化';
|
||||
$lang->bug->typeList['designchange'] = '设计变更';
|
||||
$lang->bug->typeList['newfeature'] = '新增需求';
|
||||
$lang->bug->typeList['designdefect'] = '设计缺陷';
|
||||
$lang->bug->typeList['config'] = '配置相关';
|
||||
$lang->bug->typeList['install'] = '安装部署';
|
||||
$lang->bug->typeList['security'] = '安全相关';
|
||||
$lang->bug->typeList['performance'] = '性能问题';
|
||||
$lang->bug->typeList['standard'] = '标准规范';
|
||||
$lang->bug->typeList['automation'] = '测试脚本';
|
||||
$lang->bug->typeList['trackthings'] = '事务跟踪';
|
||||
$lang->bug->typeList['others'] = '其他';
|
||||
|
||||
$lang->bug->statusList[''] = '';
|
||||
$lang->bug->statusList['active'] = '激活';
|
||||
$lang->bug->statusList['resolved'] = '已解决';
|
||||
$lang->bug->statusList['closed'] = '已关闭';
|
||||
|
||||
$lang->bug->confirmedList[1] = '已确认';
|
||||
$lang->bug->confirmedList[0] = '未确认';
|
||||
|
||||
$lang->bug->resolutionList[''] = '';
|
||||
$lang->bug->resolutionList['bydesign'] = '设计如此';
|
||||
$lang->bug->resolutionList['duplicate'] = '重复Bug';
|
||||
$lang->bug->resolutionList['external'] = '外部原因';
|
||||
$lang->bug->resolutionList['fixed'] = '已解决';
|
||||
$lang->bug->resolutionList['notrepro'] = '无法重现';
|
||||
$lang->bug->resolutionList['postponed'] = '延期处理';
|
||||
$lang->bug->resolutionList['willnotfix'] = "不予解决";
|
||||
$lang->bug->resolutionList['tostory'] = '转为需求';
|
||||
|
||||
/* 统计报表。*/
|
||||
$lang->bug->report = new stdclass();
|
||||
$lang->bug->report->common = '报表';
|
||||
$lang->bug->report->select = '请选择报表类型';
|
||||
$lang->bug->report->create = '生成报表';
|
||||
|
||||
$lang->bug->report->charts['bugsPerProject'] = '项目Bug数量';
|
||||
$lang->bug->report->charts['bugsPerBuild'] = '版本Bug数量';
|
||||
$lang->bug->report->charts['bugsPerModule'] = '模块Bug数量';
|
||||
$lang->bug->report->charts['openedBugsPerDay'] = '每天新增Bug数';
|
||||
$lang->bug->report->charts['resolvedBugsPerDay'] = '每天解决Bug数';
|
||||
$lang->bug->report->charts['closedBugsPerDay'] = '每天关闭的Bug数';
|
||||
$lang->bug->report->charts['openedBugsPerUser'] = '每人提交的Bug数';
|
||||
$lang->bug->report->charts['resolvedBugsPerUser'] = '每人解决的Bug数';
|
||||
$lang->bug->report->charts['closedBugsPerUser'] = '每人关闭的Bug数';
|
||||
$lang->bug->report->charts['bugsPerSeverity'] = 'Bug严重程度统计';
|
||||
$lang->bug->report->charts['bugsPerResolution'] = 'Bug解决方案统计';
|
||||
$lang->bug->report->charts['bugsPerStatus'] = 'Bug状态统计';
|
||||
$lang->bug->report->charts['bugsPerActivatedCount'] = 'Bug激活次数统计';
|
||||
$lang->bug->report->charts['bugsPerType'] = 'Bug类型统计';
|
||||
$lang->bug->report->charts['bugsPerAssignedTo'] = '指派给统计';
|
||||
//$lang->bug->report->charts['bugLiveDays'] = 'Bug处理时间统计';
|
||||
//$lang->bug->report->charts['bugHistories'] = 'Bug处理步骤统计';
|
||||
|
||||
$lang->bug->report->options = new stdclass();
|
||||
$lang->bug->report->options->graph = new stdclass();
|
||||
$lang->bug->report->options->swf = 'pie2d';
|
||||
$lang->bug->report->options->width = 'auto';
|
||||
$lang->bug->report->options->height = 300;
|
||||
$lang->bug->report->options->graph->baseFontSize = 12;
|
||||
$lang->bug->report->options->graph->showNames = 1;
|
||||
$lang->bug->report->options->graph->formatNumber = 1;
|
||||
$lang->bug->report->options->graph->decimalPrecision = 0;
|
||||
$lang->bug->report->options->graph->animation = 0;
|
||||
$lang->bug->report->options->graph->rotateNames = 0;
|
||||
$lang->bug->report->options->graph->yAxisName = 'COUNT';
|
||||
$lang->bug->report->options->graph->pieRadius = 100; // 饼图直径。
|
||||
$lang->bug->report->options->graph->showColumnShadow = 0; // 是否显示柱状图阴影。
|
||||
|
||||
$lang->bug->report->bugsPerProject = new stdclass();
|
||||
$lang->bug->report->bugsPerBuild = new stdclass();
|
||||
$lang->bug->report->bugsPerModule = new stdclass();
|
||||
$lang->bug->report->openedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->closedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->openedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->closedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->bugsPerSeverity = new stdclass();
|
||||
$lang->bug->report->bugsPerResolution = new stdclass();
|
||||
$lang->bug->report->bugsPerStatus = new stdclass();
|
||||
$lang->bug->report->bugsPerActivatedCount = new stdclass();
|
||||
$lang->bug->report->bugsPerType = new stdclass();
|
||||
$lang->bug->report->bugsPerAssignedTo = new stdclass();
|
||||
$lang->bug->report->bugLiveDays = new stdclass();
|
||||
$lang->bug->report->bugHistories = new stdclass();
|
||||
|
||||
$lang->bug->report->bugsPerProject->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerBuild->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerModule->graph = new stdclass();
|
||||
$lang->bug->report->openedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->closedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->openedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->closedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerSeverity->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerResolution->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerStatus->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerActivatedCount->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerType->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerAssignedTo->graph = new stdclass();
|
||||
$lang->bug->report->bugLiveDays->graph = new stdclass();
|
||||
$lang->bug->report->bugHistories->graph = new stdclass();
|
||||
|
||||
$lang->bug->report->bugsPerProject->graph->xAxisName = '项目';
|
||||
$lang->bug->report->bugsPerBuild->graph->xAxisName = '版本';
|
||||
$lang->bug->report->bugsPerModule->graph->xAxisName = '模块';
|
||||
|
||||
$lang->bug->report->openedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->openedBugsPerDay->height = 400;
|
||||
$lang->bug->report->openedBugsPerDay->graph->xAxisName = '日期';
|
||||
$lang->bug->report->openedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->resolvedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->resolvedBugsPerDay->height = 400;
|
||||
$lang->bug->report->resolvedBugsPerDay->graph->xAxisName = '日期';
|
||||
$lang->bug->report->resolvedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->closedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->closedBugsPerDay->height = 400;
|
||||
$lang->bug->report->closedBugsPerDay->graph->xAxisName = '日期';
|
||||
$lang->bug->report->closedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->openedBugsPerUser->graph->xAxisName = '用户';
|
||||
$lang->bug->report->resolvedBugsPerUser->graph->xAxisName= '用户';
|
||||
$lang->bug->report->closedBugsPerUser->graph->xAxisName = '用户';
|
||||
|
||||
$lang->bug->report->bugsPerSeverity->graph->xAxisName = '严重程度';
|
||||
$lang->bug->report->bugsPerResolution->graph->xAxisName = '解决方案';
|
||||
$lang->bug->report->bugsPerStatus->graph->xAxisName = '状态';
|
||||
$lang->bug->report->bugsPerActivatedCount->graph->xAxisName = '激活次数';
|
||||
$lang->bug->report->bugsPerType->graph->xAxisName = '类型';
|
||||
$lang->bug->report->bugsPerAssignedTo->graph->xAxisName = '指派给';
|
||||
$lang->bug->report->bugLiveDays->graph->xAxisName = '处理时间';
|
||||
$lang->bug->report->bugHistories->graph->xAxisName = '处理步骤';
|
||||
|
||||
/* 操作记录。*/
|
||||
$lang->bug->action = new stdclass();
|
||||
$lang->bug->action->resolved = array('main' => '$date, 由 <strong>$actor</strong> 解决,方案为 <strong>$extra</strong>。', 'extra' => $lang->bug->resolutionList);
|
||||
$lang->bug->action->tostory = array('main' => '$date, 由 <strong>$actor</strong> 转为<strong>需求</strong>,编号为 <strong>$extra</strong>。');
|
||||
$lang->bug->action->totask = array('main' => '$date, 由 <strong>$actor</strong> 导入为<strong>任务</strong>,编号为 <strong>$extra</strong>。');
|
||||
|
||||
$lang->bug->placeholder = new stdclass();
|
||||
$lang->bug->placeholder->mailto = '输入用户名自动选择';
|
||||
|
||||
+360
-360
@@ -1,360 +1,360 @@
|
||||
<?php
|
||||
/**
|
||||
* The bug module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id: zh-tw.php 3772 2012-12-12 02:18:16Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* 欄位列表。*/
|
||||
$lang->bug->common = '缺陷管理';
|
||||
$lang->bug->id = 'Bug編號';
|
||||
$lang->bug->product = '所屬產品';
|
||||
$lang->bug->module = '所屬模組';
|
||||
$lang->bug->path = '模組路徑';
|
||||
$lang->bug->project = '所屬項目';
|
||||
$lang->bug->story = '相關需求';
|
||||
$lang->bug->storyVersion = '需求版本';
|
||||
$lang->bug->task = '相關任務';
|
||||
$lang->bug->title = 'Bug標題';
|
||||
$lang->bug->severity = '嚴重程度';
|
||||
$lang->bug->severityAB = '級別';
|
||||
$lang->bug->pri = '優先順序';
|
||||
$lang->bug->type = 'Bug類型';
|
||||
$lang->bug->os = '操作系統';
|
||||
$lang->bug->hardware = '硬件平台';
|
||||
$lang->bug->browser = '瀏覽器';
|
||||
$lang->bug->machine = '機器硬件';
|
||||
$lang->bug->found = '如何發現';
|
||||
$lang->bug->steps = '重現步驟';
|
||||
$lang->bug->status = 'Bug狀態';
|
||||
$lang->bug->statusAB = '狀態';
|
||||
$lang->bug->activatedCount = '激活次數';
|
||||
$lang->bug->activatedCountAB = '激活次數';
|
||||
$lang->bug->confirmed = '是否確認';
|
||||
$lang->bug->toTask = '轉任務';
|
||||
$lang->bug->toStory = '轉需求';
|
||||
$lang->bug->mailto = '抄送給';
|
||||
$lang->bug->openedBy = '由誰創建';
|
||||
$lang->bug->openedByAB = '創建';
|
||||
$lang->bug->openedDate = '創建日期';
|
||||
$lang->bug->openedDateAB = '創建日期';
|
||||
$lang->bug->openedBuild = '影響版本';
|
||||
$lang->bug->assignedTo = '指派給';
|
||||
$lang->bug->assignedDate = '指派日期';
|
||||
$lang->bug->resolvedBy = '解決者';
|
||||
$lang->bug->resolvedByAB = '解決';
|
||||
$lang->bug->resolution = '解決方案';
|
||||
$lang->bug->resolutionAB = '方案';
|
||||
$lang->bug->resolvedBuild = '解決版本';
|
||||
$lang->bug->resolvedDate = '解決日期';
|
||||
$lang->bug->resolvedDateAB = '解決日期';
|
||||
$lang->bug->closedBy = '由誰關閉';
|
||||
$lang->bug->closedDate = '關閉日期';
|
||||
$lang->bug->duplicateBug = '重複ID';
|
||||
$lang->bug->lastEditedBy = '最後修改者';
|
||||
$lang->bug->lastEditedDate = '最後修改日期';
|
||||
$lang->bug->linkBug = '相關Bug';
|
||||
$lang->bug->case = '相關用例';
|
||||
$lang->bug->files = '附件';
|
||||
$lang->bug->keywords = '關鍵詞';
|
||||
$lang->bug->lastEditedByAB = '修改者';
|
||||
$lang->bug->lastEditedDateAB = '修改日期';
|
||||
$lang->bug->fromCase = '來源用例';
|
||||
$lang->bug->toCase = '生成用例';
|
||||
|
||||
/* 方法列表。*/
|
||||
$lang->bug->index = '首頁';
|
||||
$lang->bug->create = '創建';
|
||||
$lang->bug->confirmBug = '確認';
|
||||
$lang->bug->edit = '編輯';
|
||||
$lang->bug->batchEdit = '批量編輯';
|
||||
$lang->bug->assignTo = '指派';
|
||||
$lang->bug->browse = 'Bug列表';
|
||||
$lang->bug->view = 'Bug詳情';
|
||||
$lang->bug->resolve = '解決';
|
||||
$lang->bug->close = '關閉';
|
||||
$lang->bug->activate = '激活Bug';
|
||||
$lang->bug->reportChart = '報表統計';
|
||||
$lang->bug->export = '導出';
|
||||
$lang->bug->delete = '刪除';
|
||||
$lang->bug->saveTemplate = '保存模板';
|
||||
$lang->bug->deleteTemplate = '刪除模板';
|
||||
$lang->bug->customFields = '自定義欄位';
|
||||
$lang->bug->restoreDefault = '恢復預設';
|
||||
$lang->bug->ajaxGetUserBugs = '介面:我的Bug';
|
||||
$lang->bug->ajaxGetModuleOwner = '介面:獲得模組的預設指派人';
|
||||
$lang->bug->confirmStoryChange = '確認需求變動';
|
||||
|
||||
/* 查詢條件列表。*/
|
||||
$lang->bug->selectProduct = '請選擇產品';
|
||||
$lang->bug->byModule = '按模組';
|
||||
$lang->bug->assignToMe = '指派給我';
|
||||
$lang->bug->openedByMe = '由我創建';
|
||||
$lang->bug->resolvedByMe = '由我解決';
|
||||
$lang->bug->closedByMe = '由我關閉';
|
||||
$lang->bug->assignToNull = '未指派';
|
||||
$lang->bug->unResolved = '未解決';
|
||||
$lang->bug->unclosed = '未關閉';
|
||||
$lang->bug->longLifeBugs = '久未處理';
|
||||
$lang->bug->postponedBugs = '被延期';
|
||||
$lang->bug->allBugs = '所有';
|
||||
$lang->bug->moduleBugs = '按模組';
|
||||
$lang->bug->byQuery = '搜索';
|
||||
$lang->bug->needConfirm = '需求變動';
|
||||
$lang->bug->allProduct = '所有產品';
|
||||
|
||||
/* 頁面標籤。*/
|
||||
$lang->bug->lblProductAndModule = '產品模組';
|
||||
$lang->bug->lblProjectAndTask = '項目任務';
|
||||
$lang->bug->lblStory = '相關需求';
|
||||
$lang->bug->lblTypeAndSeverity = '類型/嚴重程度';
|
||||
$lang->bug->lblSystemBrowserAndHardware = '系統/瀏覽器';
|
||||
$lang->bug->lblAssignedTo = '當前指派';
|
||||
$lang->bug->lblMailto = '抄送給';
|
||||
$lang->bug->lblLastEdited = '最後修改';
|
||||
$lang->bug->lblResolved = '由誰解決';
|
||||
$lang->bug->lblAllFields = '所有欄位';
|
||||
$lang->bug->lblCustomFields = '自定義欄位';
|
||||
|
||||
/* legend列表。*/
|
||||
$lang->bug->legendBasicInfo = '基本信息';
|
||||
$lang->bug->legendMailto = '抄送給';
|
||||
$lang->bug->legendAttatch = '附件';
|
||||
$lang->bug->legendLinkBugs = '相關Bug';
|
||||
$lang->bug->legendPrjStoryTask = '項目/需求/任務';
|
||||
$lang->bug->legendCases = '相關用例';
|
||||
$lang->bug->legendSteps = '重現步驟';
|
||||
$lang->bug->legendAction = '操作';
|
||||
$lang->bug->legendHistory = '歷史記錄';
|
||||
$lang->bug->legendComment = '備註';
|
||||
$lang->bug->legendLife = 'BUG的一生';
|
||||
$lang->bug->legendMisc = '其他相關';
|
||||
|
||||
/* 功能按鈕。*/
|
||||
$lang->bug->buttonConfirm = '確認';
|
||||
$lang->bug->buttonCopy = '複製';
|
||||
$lang->bug->buttonAssign = '指派';
|
||||
$lang->bug->buttonEdit = '編輯';
|
||||
$lang->bug->buttonActivate = '激活';
|
||||
$lang->bug->buttonResolve = '解決';
|
||||
$lang->bug->buttonClose = '關閉';
|
||||
$lang->bug->buttonToList = '返回';
|
||||
$lang->bug->buttonCreateTestcase = '建用例';
|
||||
|
||||
/* 交互提示。*/
|
||||
$lang->bug->confirmChangeProduct = '修改產品會導致相應的項目、需求和任務發生變化,確定嗎?';
|
||||
$lang->bug->confirmDelete = '您確認要刪除該Bug嗎?';
|
||||
$lang->bug->setTemplateTitle = '請輸入bug模板標題(保存之前請先填寫bug重現步驟):';
|
||||
$lang->bug->remindTask = '該Bug已經轉化為任務,是否更新任務(編號:%s)狀態 ?';
|
||||
|
||||
/* 模板。*/
|
||||
$lang->bug->tplStep = "<p>[步驟]</p>";
|
||||
$lang->bug->tplResult = "<p>[結果]</p>";
|
||||
$lang->bug->tplExpect = "<p>[期望]</p>";
|
||||
|
||||
/* 各個欄位取值列表。*/
|
||||
$lang->bug->severityList[3] = '3';
|
||||
$lang->bug->severityList[1] = '1';
|
||||
$lang->bug->severityList[2] = '2';
|
||||
$lang->bug->severityList[4] = '4';
|
||||
|
||||
$lang->bug->priList[0] = '';
|
||||
$lang->bug->priList[3] = '3';
|
||||
$lang->bug->priList[1] = '1';
|
||||
$lang->bug->priList[2] = '2';
|
||||
$lang->bug->priList[4] = '4';
|
||||
|
||||
$lang->bug->osList[''] = '';
|
||||
$lang->bug->osList['all'] = '全部';
|
||||
$lang->bug->osList['windows'] = 'Windows';
|
||||
$lang->bug->osList['winxp'] = 'Windows XP';
|
||||
$lang->bug->osList['win7'] = 'Windows 7';
|
||||
$lang->bug->osList['vista'] = 'Windows Vista';
|
||||
$lang->bug->osList['win2000'] = 'Windows 2000';
|
||||
$lang->bug->osList['win2003'] = 'Windows 2003';
|
||||
$lang->bug->osList['win2008'] = 'Windows 2008';
|
||||
$lang->bug->osList['winnt'] = 'Windows NT';
|
||||
$lang->bug->osList['win98'] = 'Windows 98';
|
||||
$lang->bug->osList['andriod'] = 'Andriod';
|
||||
$lang->bug->osList['ios'] = 'IOS';
|
||||
$lang->bug->osList['wp7'] = 'WP7';
|
||||
$lang->bug->osList['symbian'] = 'Symbian';
|
||||
$lang->bug->osList['linux'] = 'Linux';
|
||||
$lang->bug->osList['freebsd'] = 'FreeBSD';
|
||||
$lang->bug->osList['mac'] = 'Mac OS';
|
||||
$lang->bug->osList['unix'] = 'Unix';
|
||||
$lang->bug->osList['others'] = '其他';
|
||||
|
||||
$lang->bug->browserList[''] = '';
|
||||
$lang->bug->browserList['all'] = '全部';
|
||||
$lang->bug->browserList['ie'] = 'IE系列';
|
||||
$lang->bug->browserList['ie8'] = 'IE8';
|
||||
$lang->bug->browserList['ie9'] = 'IE9';
|
||||
$lang->bug->browserList['ie6'] = 'IE6';
|
||||
$lang->bug->browserList['ie7'] = 'IE7';
|
||||
$lang->bug->browserList['chrome'] = 'chrome';
|
||||
$lang->bug->browserList['firefox'] = 'firefox系列';
|
||||
$lang->bug->browserList['firefox2'] = 'firefox2';
|
||||
$lang->bug->browserList['firefox3'] = 'firefox3';
|
||||
$lang->bug->browserList['firefox4'] = 'firefox4';
|
||||
$lang->bug->browserList['opera'] = 'opera系列';
|
||||
$lang->bug->browserList['opera9'] = 'opera9';
|
||||
$lang->bug->browserList['oprea10'] = 'opera10';
|
||||
$lang->bug->browserList['oprea11'] = 'opera11';
|
||||
$lang->bug->browserList['safari'] = 'safari';
|
||||
$lang->bug->browserList['maxthon'] = '傲游';
|
||||
$lang->bug->browserList['uc'] = 'UC';
|
||||
$lang->bug->browserList['other'] = '其他';
|
||||
|
||||
$lang->bug->typeList[''] = '';
|
||||
$lang->bug->typeList['codeerror'] = '代碼錯誤';
|
||||
$lang->bug->typeList['interface'] = '界面優化';
|
||||
$lang->bug->typeList['designchange'] = '設計變更';
|
||||
$lang->bug->typeList['newfeature'] = '新增需求';
|
||||
$lang->bug->typeList['designdefect'] = '設計缺陷';
|
||||
$lang->bug->typeList['config'] = '配置相關';
|
||||
$lang->bug->typeList['install'] = '安裝部署';
|
||||
$lang->bug->typeList['security'] = '安全相關';
|
||||
$lang->bug->typeList['performance'] = '性能問題';
|
||||
$lang->bug->typeList['standard'] = '標準規範';
|
||||
$lang->bug->typeList['automation'] = '測試腳本';
|
||||
$lang->bug->typeList['trackthings'] = '事務跟蹤';
|
||||
$lang->bug->typeList['others'] = '其他';
|
||||
|
||||
$lang->bug->statusList[''] = '';
|
||||
$lang->bug->statusList['active'] = '激活';
|
||||
$lang->bug->statusList['resolved'] = '已解決';
|
||||
$lang->bug->statusList['closed'] = '已關閉';
|
||||
|
||||
$lang->bug->confirmedList[1] = '已確認';
|
||||
$lang->bug->confirmedList[0] = '未確認';
|
||||
|
||||
$lang->bug->resolutionList[''] = '';
|
||||
$lang->bug->resolutionList['bydesign'] = '設計如此';
|
||||
$lang->bug->resolutionList['duplicate'] = '重複Bug';
|
||||
$lang->bug->resolutionList['external'] = '外部原因';
|
||||
$lang->bug->resolutionList['fixed'] = '已解決';
|
||||
$lang->bug->resolutionList['notrepro'] = '無法重現';
|
||||
$lang->bug->resolutionList['postponed'] = '延期處理';
|
||||
$lang->bug->resolutionList['willnotfix'] = "不予解決";
|
||||
$lang->bug->resolutionList['tostory'] = '轉為需求';
|
||||
|
||||
/* 統計報表。*/
|
||||
$lang->bug->report = new stdclass();
|
||||
$lang->bug->report->common = '報表';
|
||||
$lang->bug->report->select = '請選擇報表類型';
|
||||
$lang->bug->report->create = '生成報表';
|
||||
|
||||
$lang->bug->report->charts['bugsPerProject'] = '項目Bug數量';
|
||||
$lang->bug->report->charts['bugsPerBuild'] = '版本Bug數量';
|
||||
$lang->bug->report->charts['bugsPerModule'] = '模組Bug數量';
|
||||
$lang->bug->report->charts['openedBugsPerDay'] = '每天新增Bug數';
|
||||
$lang->bug->report->charts['resolvedBugsPerDay'] = '每天解決Bug數';
|
||||
$lang->bug->report->charts['closedBugsPerDay'] = '每天關閉的Bug數';
|
||||
$lang->bug->report->charts['openedBugsPerUser'] = '每人提交的Bug數';
|
||||
$lang->bug->report->charts['resolvedBugsPerUser'] = '每人解決的Bug數';
|
||||
$lang->bug->report->charts['closedBugsPerUser'] = '每人關閉的Bug數';
|
||||
$lang->bug->report->charts['bugsPerSeverity'] = 'Bug嚴重程度統計';
|
||||
$lang->bug->report->charts['bugsPerResolution'] = 'Bug解決方案統計';
|
||||
$lang->bug->report->charts['bugsPerStatus'] = 'Bug狀態統計';
|
||||
$lang->bug->report->charts['bugsPerActivatedCount'] = 'Bug激活次數統計';
|
||||
$lang->bug->report->charts['bugsPerType'] = 'Bug類型統計';
|
||||
$lang->bug->report->charts['bugsPerAssignedTo'] = '指派給統計';
|
||||
//$lang->bug->report->charts['bugLiveDays'] = 'Bug處理時間統計';
|
||||
//$lang->bug->report->charts['bugHistories'] = 'Bug處理步驟統計';
|
||||
|
||||
$lang->bug->report->options = new stdclass();
|
||||
$lang->bug->report->options->graph = new stdclass();
|
||||
$lang->bug->report->options->swf = 'pie2d';
|
||||
$lang->bug->report->options->width = 'auto';
|
||||
$lang->bug->report->options->height = 300;
|
||||
$lang->bug->report->options->graph->baseFontSize = 12;
|
||||
$lang->bug->report->options->graph->showNames = 1;
|
||||
$lang->bug->report->options->graph->formatNumber = 1;
|
||||
$lang->bug->report->options->graph->decimalPrecision = 0;
|
||||
$lang->bug->report->options->graph->animation = 0;
|
||||
$lang->bug->report->options->graph->rotateNames = 0;
|
||||
$lang->bug->report->options->graph->yAxisName = 'COUNT';
|
||||
$lang->bug->report->options->graph->pieRadius = 100; // 餅圖直徑。
|
||||
$lang->bug->report->options->graph->showColumnShadow = 0; // 是否顯示柱狀圖陰影。
|
||||
|
||||
$lang->bug->report->bugsPerProject = new stdclass();
|
||||
$lang->bug->report->bugsPerBuild = new stdclass();
|
||||
$lang->bug->report->bugsPerModule = new stdclass();
|
||||
$lang->bug->report->openedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->closedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->openedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->closedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->bugsPerSeverity = new stdclass();
|
||||
$lang->bug->report->bugsPerResolution = new stdclass();
|
||||
$lang->bug->report->bugsPerStatus = new stdclass();
|
||||
$lang->bug->report->bugsPerActivatedCount = new stdclass();
|
||||
$lang->bug->report->bugsPerType = new stdclass();
|
||||
$lang->bug->report->bugsPerAssignedTo = new stdclass();
|
||||
$lang->bug->report->bugLiveDays = new stdclass();
|
||||
$lang->bug->report->bugHistories = new stdclass();
|
||||
|
||||
$lang->bug->report->bugsPerProject->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerBuild->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerModule->graph = new stdclass();
|
||||
$lang->bug->report->openedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->closedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->openedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->closedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerSeverity->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerResolution->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerStatus->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerActivatedCount->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerType->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerAssignedTo->graph = new stdclass();
|
||||
$lang->bug->report->bugLiveDays->graph = new stdclass();
|
||||
$lang->bug->report->bugHistories->graph = new stdclass();
|
||||
|
||||
$lang->bug->report->bugsPerProject->graph->xAxisName = '項目';
|
||||
$lang->bug->report->bugsPerBuild->graph->xAxisName = '版本';
|
||||
$lang->bug->report->bugsPerModule->graph->xAxisName = '模組';
|
||||
|
||||
$lang->bug->report->openedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->openedBugsPerDay->height = 400;
|
||||
$lang->bug->report->openedBugsPerDay->graph->xAxisName = '日期';
|
||||
$lang->bug->report->openedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->resolvedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->resolvedBugsPerDay->height = 400;
|
||||
$lang->bug->report->resolvedBugsPerDay->graph->xAxisName = '日期';
|
||||
$lang->bug->report->resolvedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->closedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->closedBugsPerDay->height = 400;
|
||||
$lang->bug->report->closedBugsPerDay->graph->xAxisName = '日期';
|
||||
$lang->bug->report->closedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->openedBugsPerUser->graph->xAxisName = '用戶';
|
||||
$lang->bug->report->resolvedBugsPerUser->graph->xAxisName= '用戶';
|
||||
$lang->bug->report->closedBugsPerUser->graph->xAxisName = '用戶';
|
||||
|
||||
$lang->bug->report->bugsPerSeverity->graph->xAxisName = '嚴重程度';
|
||||
$lang->bug->report->bugsPerResolution->graph->xAxisName = '解決方案';
|
||||
$lang->bug->report->bugsPerStatus->graph->xAxisName = '狀態';
|
||||
$lang->bug->report->bugsPerActivatedCount->graph->xAxisName = '激活次數';
|
||||
$lang->bug->report->bugsPerType->graph->xAxisName = '類型';
|
||||
$lang->bug->report->bugsPerAssignedTo->graph->xAxisName = '指派給';
|
||||
$lang->bug->report->bugLiveDays->graph->xAxisName = '處理時間';
|
||||
$lang->bug->report->bugHistories->graph->xAxisName = '處理步驟';
|
||||
|
||||
/* 操作記錄。*/
|
||||
$lang->bug->action = new stdclass();
|
||||
$lang->bug->action->resolved = array('main' => '$date, 由 <strong>$actor</strong> 解決,方案為 <strong>$extra</strong>。', 'extra' => $lang->bug->resolutionList);
|
||||
$lang->bug->action->tostory = array('main' => '$date, 由 <strong>$actor</strong> 轉為<strong>需求</strong>,編號為 <strong>$extra</strong>。');
|
||||
$lang->bug->action->totask = array('main' => '$date, 由 <strong>$actor</strong> 導入為<strong>任務</strong>,編號為 <strong>$extra</strong>。');
|
||||
|
||||
$lang->bug->placeholder = new stdclass();
|
||||
$lang->bug->placeholder->mailto = '輸入用戶名自動選擇';
|
||||
<?php
|
||||
/**
|
||||
* The bug module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id: zh-tw.php 3772 2012-12-12 02:18:16Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* 欄位列表。*/
|
||||
$lang->bug->common = '缺陷管理';
|
||||
$lang->bug->id = 'Bug編號';
|
||||
$lang->bug->product = '所屬產品';
|
||||
$lang->bug->module = '所屬模組';
|
||||
$lang->bug->path = '模組路徑';
|
||||
$lang->bug->project = '所屬項目';
|
||||
$lang->bug->story = '相關需求';
|
||||
$lang->bug->storyVersion = '需求版本';
|
||||
$lang->bug->task = '相關任務';
|
||||
$lang->bug->title = 'Bug標題';
|
||||
$lang->bug->severity = '嚴重程度';
|
||||
$lang->bug->severityAB = '級別';
|
||||
$lang->bug->pri = '優先順序';
|
||||
$lang->bug->type = 'Bug類型';
|
||||
$lang->bug->os = '操作系統';
|
||||
$lang->bug->hardware = '硬件平台';
|
||||
$lang->bug->browser = '瀏覽器';
|
||||
$lang->bug->machine = '機器硬件';
|
||||
$lang->bug->found = '如何發現';
|
||||
$lang->bug->steps = '重現步驟';
|
||||
$lang->bug->status = 'Bug狀態';
|
||||
$lang->bug->statusAB = '狀態';
|
||||
$lang->bug->activatedCount = '激活次數';
|
||||
$lang->bug->activatedCountAB = '激活次數';
|
||||
$lang->bug->confirmed = '是否確認';
|
||||
$lang->bug->toTask = '轉任務';
|
||||
$lang->bug->toStory = '轉需求';
|
||||
$lang->bug->mailto = '抄送給';
|
||||
$lang->bug->openedBy = '由誰創建';
|
||||
$lang->bug->openedByAB = '創建';
|
||||
$lang->bug->openedDate = '創建日期';
|
||||
$lang->bug->openedDateAB = '創建日期';
|
||||
$lang->bug->openedBuild = '影響版本';
|
||||
$lang->bug->assignedTo = '指派給';
|
||||
$lang->bug->assignedDate = '指派日期';
|
||||
$lang->bug->resolvedBy = '解決者';
|
||||
$lang->bug->resolvedByAB = '解決';
|
||||
$lang->bug->resolution = '解決方案';
|
||||
$lang->bug->resolutionAB = '方案';
|
||||
$lang->bug->resolvedBuild = '解決版本';
|
||||
$lang->bug->resolvedDate = '解決日期';
|
||||
$lang->bug->resolvedDateAB = '解決日期';
|
||||
$lang->bug->closedBy = '由誰關閉';
|
||||
$lang->bug->closedDate = '關閉日期';
|
||||
$lang->bug->duplicateBug = '重複ID';
|
||||
$lang->bug->lastEditedBy = '最後修改者';
|
||||
$lang->bug->lastEditedDate = '最後修改日期';
|
||||
$lang->bug->linkBug = '相關Bug';
|
||||
$lang->bug->case = '相關用例';
|
||||
$lang->bug->files = '附件';
|
||||
$lang->bug->keywords = '關鍵詞';
|
||||
$lang->bug->lastEditedByAB = '修改者';
|
||||
$lang->bug->lastEditedDateAB = '修改日期';
|
||||
$lang->bug->fromCase = '來源用例';
|
||||
$lang->bug->toCase = '生成用例';
|
||||
|
||||
/* 方法列表。*/
|
||||
$lang->bug->index = '首頁';
|
||||
$lang->bug->create = '創建';
|
||||
$lang->bug->confirmBug = '確認';
|
||||
$lang->bug->edit = '編輯';
|
||||
$lang->bug->batchEdit = '批量編輯';
|
||||
$lang->bug->assignTo = '指派';
|
||||
$lang->bug->browse = 'Bug列表';
|
||||
$lang->bug->view = 'Bug詳情';
|
||||
$lang->bug->resolve = '解決';
|
||||
$lang->bug->close = '關閉';
|
||||
$lang->bug->activate = '激活Bug';
|
||||
$lang->bug->reportChart = '報表統計';
|
||||
$lang->bug->export = '導出';
|
||||
$lang->bug->delete = '刪除';
|
||||
$lang->bug->saveTemplate = '保存模板';
|
||||
$lang->bug->deleteTemplate = '刪除模板';
|
||||
$lang->bug->customFields = '自定義欄位';
|
||||
$lang->bug->restoreDefault = '恢復預設';
|
||||
$lang->bug->ajaxGetUserBugs = '介面:我的Bug';
|
||||
$lang->bug->ajaxGetModuleOwner = '介面:獲得模組的預設指派人';
|
||||
$lang->bug->confirmStoryChange = '確認需求變動';
|
||||
|
||||
/* 查詢條件列表。*/
|
||||
$lang->bug->selectProduct = '請選擇產品';
|
||||
$lang->bug->byModule = '按模組';
|
||||
$lang->bug->assignToMe = '指派給我';
|
||||
$lang->bug->openedByMe = '由我創建';
|
||||
$lang->bug->resolvedByMe = '由我解決';
|
||||
$lang->bug->closedByMe = '由我關閉';
|
||||
$lang->bug->assignToNull = '未指派';
|
||||
$lang->bug->unResolved = '未解決';
|
||||
$lang->bug->unclosed = '未關閉';
|
||||
$lang->bug->longLifeBugs = '久未處理';
|
||||
$lang->bug->postponedBugs = '被延期';
|
||||
$lang->bug->allBugs = '所有';
|
||||
$lang->bug->moduleBugs = '按模組';
|
||||
$lang->bug->byQuery = '搜索';
|
||||
$lang->bug->needConfirm = '需求變動';
|
||||
$lang->bug->allProduct = '所有產品';
|
||||
|
||||
/* 頁面標籤。*/
|
||||
$lang->bug->lblProductAndModule = '產品模組';
|
||||
$lang->bug->lblProjectAndTask = '項目任務';
|
||||
$lang->bug->lblStory = '相關需求';
|
||||
$lang->bug->lblTypeAndSeverity = '類型/嚴重程度';
|
||||
$lang->bug->lblSystemBrowserAndHardware = '系統/瀏覽器';
|
||||
$lang->bug->lblAssignedTo = '當前指派';
|
||||
$lang->bug->lblMailto = '抄送給';
|
||||
$lang->bug->lblLastEdited = '最後修改';
|
||||
$lang->bug->lblResolved = '由誰解決';
|
||||
$lang->bug->lblAllFields = '所有欄位';
|
||||
$lang->bug->lblCustomFields = '自定義欄位';
|
||||
|
||||
/* legend列表。*/
|
||||
$lang->bug->legendBasicInfo = '基本信息';
|
||||
$lang->bug->legendMailto = '抄送給';
|
||||
$lang->bug->legendAttatch = '附件';
|
||||
$lang->bug->legendLinkBugs = '相關Bug';
|
||||
$lang->bug->legendPrjStoryTask = '項目/需求/任務';
|
||||
$lang->bug->legendCases = '相關用例';
|
||||
$lang->bug->legendSteps = '重現步驟';
|
||||
$lang->bug->legendAction = '操作';
|
||||
$lang->bug->legendHistory = '歷史記錄';
|
||||
$lang->bug->legendComment = '備註';
|
||||
$lang->bug->legendLife = 'BUG的一生';
|
||||
$lang->bug->legendMisc = '其他相關';
|
||||
|
||||
/* 功能按鈕。*/
|
||||
$lang->bug->buttonConfirm = '確認';
|
||||
$lang->bug->buttonCopy = '複製';
|
||||
$lang->bug->buttonAssign = '指派';
|
||||
$lang->bug->buttonEdit = '編輯';
|
||||
$lang->bug->buttonActivate = '激活';
|
||||
$lang->bug->buttonResolve = '解決';
|
||||
$lang->bug->buttonClose = '關閉';
|
||||
$lang->bug->buttonToList = '返回';
|
||||
$lang->bug->buttonCreateTestcase = '建用例';
|
||||
|
||||
/* 交互提示。*/
|
||||
$lang->bug->confirmChangeProduct = '修改產品會導致相應的項目、需求和任務發生變化,確定嗎?';
|
||||
$lang->bug->confirmDelete = '您確認要刪除該Bug嗎?';
|
||||
$lang->bug->setTemplateTitle = '請輸入bug模板標題(保存之前請先填寫bug重現步驟):';
|
||||
$lang->bug->remindTask = '該Bug已經轉化為任務,是否更新任務(編號:%s)狀態 ?';
|
||||
|
||||
/* 模板。*/
|
||||
$lang->bug->tplStep = "<p>[步驟]</p>";
|
||||
$lang->bug->tplResult = "<p>[結果]</p>";
|
||||
$lang->bug->tplExpect = "<p>[期望]</p>";
|
||||
|
||||
/* 各個欄位取值列表。*/
|
||||
$lang->bug->severityList[3] = '3';
|
||||
$lang->bug->severityList[1] = '1';
|
||||
$lang->bug->severityList[2] = '2';
|
||||
$lang->bug->severityList[4] = '4';
|
||||
|
||||
$lang->bug->priList[0] = '';
|
||||
$lang->bug->priList[3] = '3';
|
||||
$lang->bug->priList[1] = '1';
|
||||
$lang->bug->priList[2] = '2';
|
||||
$lang->bug->priList[4] = '4';
|
||||
|
||||
$lang->bug->osList[''] = '';
|
||||
$lang->bug->osList['all'] = '全部';
|
||||
$lang->bug->osList['windows'] = 'Windows';
|
||||
$lang->bug->osList['winxp'] = 'Windows XP';
|
||||
$lang->bug->osList['win7'] = 'Windows 7';
|
||||
$lang->bug->osList['vista'] = 'Windows Vista';
|
||||
$lang->bug->osList['win2000'] = 'Windows 2000';
|
||||
$lang->bug->osList['win2003'] = 'Windows 2003';
|
||||
$lang->bug->osList['win2008'] = 'Windows 2008';
|
||||
$lang->bug->osList['winnt'] = 'Windows NT';
|
||||
$lang->bug->osList['win98'] = 'Windows 98';
|
||||
$lang->bug->osList['andriod'] = 'Andriod';
|
||||
$lang->bug->osList['ios'] = 'IOS';
|
||||
$lang->bug->osList['wp7'] = 'WP7';
|
||||
$lang->bug->osList['symbian'] = 'Symbian';
|
||||
$lang->bug->osList['linux'] = 'Linux';
|
||||
$lang->bug->osList['freebsd'] = 'FreeBSD';
|
||||
$lang->bug->osList['mac'] = 'Mac OS';
|
||||
$lang->bug->osList['unix'] = 'Unix';
|
||||
$lang->bug->osList['others'] = '其他';
|
||||
|
||||
$lang->bug->browserList[''] = '';
|
||||
$lang->bug->browserList['all'] = '全部';
|
||||
$lang->bug->browserList['ie'] = 'IE系列';
|
||||
$lang->bug->browserList['ie8'] = 'IE8';
|
||||
$lang->bug->browserList['ie9'] = 'IE9';
|
||||
$lang->bug->browserList['ie6'] = 'IE6';
|
||||
$lang->bug->browserList['ie7'] = 'IE7';
|
||||
$lang->bug->browserList['chrome'] = 'chrome';
|
||||
$lang->bug->browserList['firefox'] = 'firefox系列';
|
||||
$lang->bug->browserList['firefox2'] = 'firefox2';
|
||||
$lang->bug->browserList['firefox3'] = 'firefox3';
|
||||
$lang->bug->browserList['firefox4'] = 'firefox4';
|
||||
$lang->bug->browserList['opera'] = 'opera系列';
|
||||
$lang->bug->browserList['opera9'] = 'opera9';
|
||||
$lang->bug->browserList['oprea10'] = 'opera10';
|
||||
$lang->bug->browserList['oprea11'] = 'opera11';
|
||||
$lang->bug->browserList['safari'] = 'safari';
|
||||
$lang->bug->browserList['maxthon'] = '傲游';
|
||||
$lang->bug->browserList['uc'] = 'UC';
|
||||
$lang->bug->browserList['other'] = '其他';
|
||||
|
||||
$lang->bug->typeList[''] = '';
|
||||
$lang->bug->typeList['codeerror'] = '代碼錯誤';
|
||||
$lang->bug->typeList['interface'] = '界面優化';
|
||||
$lang->bug->typeList['designchange'] = '設計變更';
|
||||
$lang->bug->typeList['newfeature'] = '新增需求';
|
||||
$lang->bug->typeList['designdefect'] = '設計缺陷';
|
||||
$lang->bug->typeList['config'] = '配置相關';
|
||||
$lang->bug->typeList['install'] = '安裝部署';
|
||||
$lang->bug->typeList['security'] = '安全相關';
|
||||
$lang->bug->typeList['performance'] = '性能問題';
|
||||
$lang->bug->typeList['standard'] = '標準規範';
|
||||
$lang->bug->typeList['automation'] = '測試腳本';
|
||||
$lang->bug->typeList['trackthings'] = '事務跟蹤';
|
||||
$lang->bug->typeList['others'] = '其他';
|
||||
|
||||
$lang->bug->statusList[''] = '';
|
||||
$lang->bug->statusList['active'] = '激活';
|
||||
$lang->bug->statusList['resolved'] = '已解決';
|
||||
$lang->bug->statusList['closed'] = '已關閉';
|
||||
|
||||
$lang->bug->confirmedList[1] = '已確認';
|
||||
$lang->bug->confirmedList[0] = '未確認';
|
||||
|
||||
$lang->bug->resolutionList[''] = '';
|
||||
$lang->bug->resolutionList['bydesign'] = '設計如此';
|
||||
$lang->bug->resolutionList['duplicate'] = '重複Bug';
|
||||
$lang->bug->resolutionList['external'] = '外部原因';
|
||||
$lang->bug->resolutionList['fixed'] = '已解決';
|
||||
$lang->bug->resolutionList['notrepro'] = '無法重現';
|
||||
$lang->bug->resolutionList['postponed'] = '延期處理';
|
||||
$lang->bug->resolutionList['willnotfix'] = "不予解決";
|
||||
$lang->bug->resolutionList['tostory'] = '轉為需求';
|
||||
|
||||
/* 統計報表。*/
|
||||
$lang->bug->report = new stdclass();
|
||||
$lang->bug->report->common = '報表';
|
||||
$lang->bug->report->select = '請選擇報表類型';
|
||||
$lang->bug->report->create = '生成報表';
|
||||
|
||||
$lang->bug->report->charts['bugsPerProject'] = '項目Bug數量';
|
||||
$lang->bug->report->charts['bugsPerBuild'] = '版本Bug數量';
|
||||
$lang->bug->report->charts['bugsPerModule'] = '模組Bug數量';
|
||||
$lang->bug->report->charts['openedBugsPerDay'] = '每天新增Bug數';
|
||||
$lang->bug->report->charts['resolvedBugsPerDay'] = '每天解決Bug數';
|
||||
$lang->bug->report->charts['closedBugsPerDay'] = '每天關閉的Bug數';
|
||||
$lang->bug->report->charts['openedBugsPerUser'] = '每人提交的Bug數';
|
||||
$lang->bug->report->charts['resolvedBugsPerUser'] = '每人解決的Bug數';
|
||||
$lang->bug->report->charts['closedBugsPerUser'] = '每人關閉的Bug數';
|
||||
$lang->bug->report->charts['bugsPerSeverity'] = 'Bug嚴重程度統計';
|
||||
$lang->bug->report->charts['bugsPerResolution'] = 'Bug解決方案統計';
|
||||
$lang->bug->report->charts['bugsPerStatus'] = 'Bug狀態統計';
|
||||
$lang->bug->report->charts['bugsPerActivatedCount'] = 'Bug激活次數統計';
|
||||
$lang->bug->report->charts['bugsPerType'] = 'Bug類型統計';
|
||||
$lang->bug->report->charts['bugsPerAssignedTo'] = '指派給統計';
|
||||
//$lang->bug->report->charts['bugLiveDays'] = 'Bug處理時間統計';
|
||||
//$lang->bug->report->charts['bugHistories'] = 'Bug處理步驟統計';
|
||||
|
||||
$lang->bug->report->options = new stdclass();
|
||||
$lang->bug->report->options->graph = new stdclass();
|
||||
$lang->bug->report->options->swf = 'pie2d';
|
||||
$lang->bug->report->options->width = 'auto';
|
||||
$lang->bug->report->options->height = 300;
|
||||
$lang->bug->report->options->graph->baseFontSize = 12;
|
||||
$lang->bug->report->options->graph->showNames = 1;
|
||||
$lang->bug->report->options->graph->formatNumber = 1;
|
||||
$lang->bug->report->options->graph->decimalPrecision = 0;
|
||||
$lang->bug->report->options->graph->animation = 0;
|
||||
$lang->bug->report->options->graph->rotateNames = 0;
|
||||
$lang->bug->report->options->graph->yAxisName = 'COUNT';
|
||||
$lang->bug->report->options->graph->pieRadius = 100; // 餅圖直徑。
|
||||
$lang->bug->report->options->graph->showColumnShadow = 0; // 是否顯示柱狀圖陰影。
|
||||
|
||||
$lang->bug->report->bugsPerProject = new stdclass();
|
||||
$lang->bug->report->bugsPerBuild = new stdclass();
|
||||
$lang->bug->report->bugsPerModule = new stdclass();
|
||||
$lang->bug->report->openedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->closedBugsPerDay = new stdclass();
|
||||
$lang->bug->report->openedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->closedBugsPerUser = new stdclass();
|
||||
$lang->bug->report->bugsPerSeverity = new stdclass();
|
||||
$lang->bug->report->bugsPerResolution = new stdclass();
|
||||
$lang->bug->report->bugsPerStatus = new stdclass();
|
||||
$lang->bug->report->bugsPerActivatedCount = new stdclass();
|
||||
$lang->bug->report->bugsPerType = new stdclass();
|
||||
$lang->bug->report->bugsPerAssignedTo = new stdclass();
|
||||
$lang->bug->report->bugLiveDays = new stdclass();
|
||||
$lang->bug->report->bugHistories = new stdclass();
|
||||
|
||||
$lang->bug->report->bugsPerProject->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerBuild->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerModule->graph = new stdclass();
|
||||
$lang->bug->report->openedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->closedBugsPerDay->graph = new stdclass();
|
||||
$lang->bug->report->openedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->resolvedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->closedBugsPerUser->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerSeverity->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerResolution->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerStatus->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerActivatedCount->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerType->graph = new stdclass();
|
||||
$lang->bug->report->bugsPerAssignedTo->graph = new stdclass();
|
||||
$lang->bug->report->bugLiveDays->graph = new stdclass();
|
||||
$lang->bug->report->bugHistories->graph = new stdclass();
|
||||
|
||||
$lang->bug->report->bugsPerProject->graph->xAxisName = '項目';
|
||||
$lang->bug->report->bugsPerBuild->graph->xAxisName = '版本';
|
||||
$lang->bug->report->bugsPerModule->graph->xAxisName = '模組';
|
||||
|
||||
$lang->bug->report->openedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->openedBugsPerDay->height = 400;
|
||||
$lang->bug->report->openedBugsPerDay->graph->xAxisName = '日期';
|
||||
$lang->bug->report->openedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->resolvedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->resolvedBugsPerDay->height = 400;
|
||||
$lang->bug->report->resolvedBugsPerDay->graph->xAxisName = '日期';
|
||||
$lang->bug->report->resolvedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->closedBugsPerDay->swf = 'column2d';
|
||||
$lang->bug->report->closedBugsPerDay->height = 400;
|
||||
$lang->bug->report->closedBugsPerDay->graph->xAxisName = '日期';
|
||||
$lang->bug->report->closedBugsPerDay->graph->rotateNames = 1;
|
||||
|
||||
$lang->bug->report->openedBugsPerUser->graph->xAxisName = '用戶';
|
||||
$lang->bug->report->resolvedBugsPerUser->graph->xAxisName= '用戶';
|
||||
$lang->bug->report->closedBugsPerUser->graph->xAxisName = '用戶';
|
||||
|
||||
$lang->bug->report->bugsPerSeverity->graph->xAxisName = '嚴重程度';
|
||||
$lang->bug->report->bugsPerResolution->graph->xAxisName = '解決方案';
|
||||
$lang->bug->report->bugsPerStatus->graph->xAxisName = '狀態';
|
||||
$lang->bug->report->bugsPerActivatedCount->graph->xAxisName = '激活次數';
|
||||
$lang->bug->report->bugsPerType->graph->xAxisName = '類型';
|
||||
$lang->bug->report->bugsPerAssignedTo->graph->xAxisName = '指派給';
|
||||
$lang->bug->report->bugLiveDays->graph->xAxisName = '處理時間';
|
||||
$lang->bug->report->bugHistories->graph->xAxisName = '處理步驟';
|
||||
|
||||
/* 操作記錄。*/
|
||||
$lang->bug->action = new stdclass();
|
||||
$lang->bug->action->resolved = array('main' => '$date, 由 <strong>$actor</strong> 解決,方案為 <strong>$extra</strong>。', 'extra' => $lang->bug->resolutionList);
|
||||
$lang->bug->action->tostory = array('main' => '$date, 由 <strong>$actor</strong> 轉為<strong>需求</strong>,編號為 <strong>$extra</strong>。');
|
||||
$lang->bug->action->totask = array('main' => '$date, 由 <strong>$actor</strong> 導入為<strong>任務</strong>,編號為 <strong>$extra</strong>。');
|
||||
|
||||
$lang->bug->placeholder = new stdclass();
|
||||
$lang->bug->placeholder->mailto = '輸入用戶名自動選擇';
|
||||
|
||||
+1214
-1214
File diff suppressed because it is too large
Load Diff
@@ -1,43 +1,43 @@
|
||||
<?php
|
||||
/**
|
||||
* The activate file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' enctype='multipart/form-data' target='hiddenwin'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $bug->title;?></caption>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->assignedTo;?></td>
|
||||
<td><?php echo html::select('assignedTo', $users, $bug->resolvedBy, 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->openedBuild;?></td>
|
||||
<td><?php echo html::select('openedBuild[]', $builds, $bug->openedBuild, 'size=4 multiple=multiple class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->comment;?></td>
|
||||
<td><?php echo html::textarea('comment', '', "rows='6' class='area-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->files;?></th>
|
||||
<td class='a-left'><?php echo $this->fetch('file', 'buildform');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'>
|
||||
<?php echo html::submitButton();?>
|
||||
<input type='button' value='<?php echo $lang->bug->buttonToList;?>' class='button-s'
|
||||
onclick='location.href="<?php echo $this->session->bugList;?>"' />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The activate file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' enctype='multipart/form-data' target='hiddenwin'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $bug->title;?></caption>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->assignedTo;?></td>
|
||||
<td><?php echo html::select('assignedTo', $users, $bug->resolvedBy, 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->openedBuild;?></td>
|
||||
<td><?php echo html::select('openedBuild[]', $builds, $bug->openedBuild, 'size=4 multiple=multiple class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->comment;?></td>
|
||||
<td><?php echo html::textarea('comment', '', "rows='6' class='area-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->files;?></th>
|
||||
<td class='a-left'><?php echo $this->fetch('file', 'buildform');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'>
|
||||
<?php echo html::submitButton();?>
|
||||
<input type='button' value='<?php echo $lang->bug->buttonToList;?>' class='button-s'
|
||||
onclick='location.href="<?php echo $this->session->bugList;?>"' />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,31 +1,31 @@
|
||||
<?php
|
||||
/**
|
||||
* The complete file of task module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Jia Fu <fujia@cnezsoft.com>
|
||||
* @package task
|
||||
* @version $Id: complete.html.php 935 2010-07-06 07:49:24Z jajacn@126.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' target='hiddenwin'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $bug->title;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->assignedTo;?></th>
|
||||
<td><?php echo html::select('assignedTo', $users, '', "class='text-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->comment;?></td>
|
||||
<td><?php echo html::textarea('comment', '', "rows='6' class='area-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'><?php echo html::submitButton() . html::linkButton($lang->goback, $this->server->http_referer);?></td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The complete file of task module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Jia Fu <fujia@cnezsoft.com>
|
||||
* @package task
|
||||
* @version $Id: complete.html.php 935 2010-07-06 07:49:24Z jajacn@126.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' target='hiddenwin'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $bug->title;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->assignedTo;?></th>
|
||||
<td><?php echo html::select('assignedTo', $users, '', "class='text-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->comment;?></td>
|
||||
<td><?php echo html::textarea('comment', '', "rows='6' class='area-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'><?php echo html::submitButton() . html::linkButton($lang->goback, $this->server->http_referer);?></td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,59 +1,59 @@
|
||||
<?php
|
||||
/**
|
||||
* The batch edit view of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Congzhi Chen <congzhi@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' target='hiddenwin' action="<?php echo $this->inLink('batchEdit', "from=bugBatchEdit&productID=$productID");?>">
|
||||
<table class='table-1 fixed'>
|
||||
<caption><?php echo $lang->bug->common . $lang->colon . $lang->bug->batchEdit;?></caption>
|
||||
<tr>
|
||||
<th class='w-30px'><?php echo $lang->idAB;?></th>
|
||||
<th class='w-80px'><?php echo $lang->bug->type;?></th>
|
||||
<th class='w-50px'><?php echo $lang->bug->severityAB;?></th>
|
||||
<th class='w-50px'><?php echo $lang->bug->pri;?></th>
|
||||
<th> <?php echo $lang->bug->title;?></th>
|
||||
<th class='w-100px'><?php echo $lang->bug->assignedTo;?></th>
|
||||
<th class='w-70px'><?php echo $lang->bug->status;?></th>
|
||||
<th class='w-100px'><?php echo $lang->bug->resolvedByAB;?></th>
|
||||
<th class='w-150px'><?php echo $lang->bug->resolutionAB;?></th>
|
||||
</tr>
|
||||
<?php foreach($editedBugs as $bug):?>
|
||||
<?php
|
||||
/**
|
||||
* Remove designchange, newfeature, trackings from the typeList, because should be tracked in story or task.
|
||||
* These thress types if upgrade from bugfree2.x.
|
||||
*/
|
||||
if($bug->type != 'designchange') unset($this->lang->bug->typeList['designchange']);
|
||||
if($bug->type != 'newfeature') unset($this->lang->bug->typeList['newfeature']);
|
||||
if($bug->type != 'trackthings') unset($this->lang->bug->typeList['trackthings']);
|
||||
?>
|
||||
<tr class='a-center'>
|
||||
<td><?php echo $bug->id . html::hidden("bugIDList[$bug->id]", $bug->id);?></td>
|
||||
<td><?php echo html::select("types[$bug->id]", $lang->bug->typeList, $bug->type, 'class=select-1');?></td>
|
||||
<td><?php echo html::select("severities[$bug->id]", (array)$lang->bug->severityList, $bug->severity, 'class=select-1');?></td>
|
||||
<td><?php echo html::select("pris[$bug->id]", (array)$lang->bug->priList, $bug->pri, 'class=select-1');?></td>
|
||||
<td><?php echo html::input("titles[$bug->id]", $bug->title, 'class=text-1'); echo "<span class='star'>*</span>";?></td>
|
||||
<td><?php echo html::select("assignedTos[$bug->id]", $users, $bug->assignedTo, 'class=select-1');?></td>
|
||||
<td><?php echo html::select("statuses[$bug->id]", (array)$lang->bug->statusList, $bug->status, 'class=select-1');?></td>
|
||||
<td><?php echo html::select("resolvedBys[$bug->id]", $users, $bug->resolvedBy, 'class=select-1');?></td>
|
||||
<td>
|
||||
<div class='f-left'><?php echo html::select("resolutions[$bug->id]", $this->lang->bug->resolutionList, $bug->resolution, "class=w-80px onchange=setDuplicate(this.value,$bug->id)");?></div>
|
||||
<div class='f-left' id='<?php echo 'duplicateBugBox' . $bug->id;?>' <?php if($bug->resolution != 'duplicate') echo "style='display:none'";?>><?php echo html::input("duplicateBugs[$bug->id]", '', "class=w-40px placeholder='{$lang->bug->duplicateBug}'");?></div>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
<?php if(isset($suhosinInfo)):?>
|
||||
<tr><td colspan='9'><div class='f-left blue'><?php echo $suhosinInfo;?></div></td></tr>
|
||||
<?php endif;?>
|
||||
<tr><td colspan='9' class='a-center'><?php echo html::submitButton();?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The batch edit view of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Congzhi Chen <congzhi@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' target='hiddenwin' action="<?php echo $this->inLink('batchEdit', "from=bugBatchEdit&productID=$productID");?>">
|
||||
<table class='table-1 fixed'>
|
||||
<caption><?php echo $lang->bug->common . $lang->colon . $lang->bug->batchEdit;?></caption>
|
||||
<tr>
|
||||
<th class='w-30px'><?php echo $lang->idAB;?></th>
|
||||
<th class='w-80px'><?php echo $lang->bug->type;?></th>
|
||||
<th class='w-50px'><?php echo $lang->bug->severityAB;?></th>
|
||||
<th class='w-50px'><?php echo $lang->bug->pri;?></th>
|
||||
<th> <?php echo $lang->bug->title;?></th>
|
||||
<th class='w-100px'><?php echo $lang->bug->assignedTo;?></th>
|
||||
<th class='w-70px'><?php echo $lang->bug->status;?></th>
|
||||
<th class='w-100px'><?php echo $lang->bug->resolvedByAB;?></th>
|
||||
<th class='w-150px'><?php echo $lang->bug->resolutionAB;?></th>
|
||||
</tr>
|
||||
<?php foreach($editedBugs as $bug):?>
|
||||
<?php
|
||||
/**
|
||||
* Remove designchange, newfeature, trackings from the typeList, because should be tracked in story or task.
|
||||
* These thress types if upgrade from bugfree2.x.
|
||||
*/
|
||||
if($bug->type != 'designchange') unset($this->lang->bug->typeList['designchange']);
|
||||
if($bug->type != 'newfeature') unset($this->lang->bug->typeList['newfeature']);
|
||||
if($bug->type != 'trackthings') unset($this->lang->bug->typeList['trackthings']);
|
||||
?>
|
||||
<tr class='a-center'>
|
||||
<td><?php echo $bug->id . html::hidden("bugIDList[$bug->id]", $bug->id);?></td>
|
||||
<td><?php echo html::select("types[$bug->id]", $lang->bug->typeList, $bug->type, 'class=select-1');?></td>
|
||||
<td><?php echo html::select("severities[$bug->id]", (array)$lang->bug->severityList, $bug->severity, 'class=select-1');?></td>
|
||||
<td><?php echo html::select("pris[$bug->id]", (array)$lang->bug->priList, $bug->pri, 'class=select-1');?></td>
|
||||
<td><?php echo html::input("titles[$bug->id]", $bug->title, 'class=text-1'); echo "<span class='star'>*</span>";?></td>
|
||||
<td><?php echo html::select("assignedTos[$bug->id]", $users, $bug->assignedTo, 'class=select-1');?></td>
|
||||
<td><?php echo html::select("statuses[$bug->id]", (array)$lang->bug->statusList, $bug->status, 'class=select-1');?></td>
|
||||
<td><?php echo html::select("resolvedBys[$bug->id]", $users, $bug->resolvedBy, 'class=select-1');?></td>
|
||||
<td>
|
||||
<div class='f-left'><?php echo html::select("resolutions[$bug->id]", $this->lang->bug->resolutionList, $bug->resolution, "class=w-80px onchange=setDuplicate(this.value,$bug->id)");?></div>
|
||||
<div class='f-left' id='<?php echo 'duplicateBugBox' . $bug->id;?>' <?php if($bug->resolution != 'duplicate') echo "style='display:none'";?>><?php echo html::input("duplicateBugs[$bug->id]", '', "class=w-40px placeholder='{$lang->bug->duplicateBug}'");?></div>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
<?php if(isset($suhosinInfo)):?>
|
||||
<tr><td colspan='9'><div class='f-left blue'><?php echo $suhosinInfo;?></div></td></tr>
|
||||
<?php endif;?>
|
||||
<tr><td colspan='9' class='a-center'><?php echo html::submitButton();?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
+183
-183
@@ -1,183 +1,183 @@
|
||||
<?php
|
||||
/**
|
||||
* The browse view file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
include '../../common/view/header.html.php';
|
||||
include '../../common/view/treeview.html.php';
|
||||
include '../../common/view/colorize.html.php';
|
||||
js::set('browseType', $browseType);
|
||||
js::set('moduleID', $moduleID);
|
||||
js::set('customed', $customed, 'number');
|
||||
?>
|
||||
|
||||
<div id='featurebar'>
|
||||
<div class='f-left'>
|
||||
<?php
|
||||
echo "<span id='bymoduleTab' onclick=\"browseByModule('$browseType')\"><a href='#'>" . $lang->bug->moduleBugs . "</a></span> ";
|
||||
echo "<span id='assigntomeTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=assignToMe¶m=0"), $lang->bug->assignToMe) . "</span>";
|
||||
echo "<span id='openedbymeTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=openedByMe¶m=0"), $lang->bug->openedByMe) . "</span>";
|
||||
echo "<span id='resolvedbymeTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=resolvedByMe¶m=0"), $lang->bug->resolvedByMe) . "</span>";
|
||||
echo "<span id='assigntonullTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=assignToNull¶m=0"), $lang->bug->assignToNull) . "</span>";
|
||||
echo "<span id='unresolvedTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=unResolved¶m=0"), $lang->bug->unResolved) . "</span>";
|
||||
echo "<span id='unclosedTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=unclosed¶m=0"), $lang->bug->unclosed) . "</span>";
|
||||
echo "<span id='longlifebugsTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=longLifeBugs¶m=0"), $lang->bug->longLifeBugs) . "</span>";
|
||||
echo "<span id='postponedbugsTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=postponedBugs¶m=0"), $lang->bug->postponedBugs) . "</span>";
|
||||
echo "<span id='allTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=all¶m=0&orderBy=$orderBy&recTotal=0&recPerPage=200"), $lang->bug->allBugs) . "</span>";
|
||||
echo "<span id='needconfirmTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=needconfirm¶m=0"), $lang->bug->needConfirm) . "</span>";
|
||||
echo "<span id='bysearchTab'><a href='#'><span class='icon-search'></span>{$lang->bug->byQuery}</a></span> ";
|
||||
?>
|
||||
</div>
|
||||
<div class='f-right'>
|
||||
<?php
|
||||
if($browseType != 'needconfirm') common::printIcon('bug', 'export', "productID=$productID&orderBy=$orderBy");
|
||||
common::printIcon('bug', 'customFields');
|
||||
common::printIcon('bug', 'report', "productID=$productID&browseType=$browseType&moduleID=$moduleID");
|
||||
common::printIcon('bug', 'create', "productID=$productID&extra=moduleID=$moduleID");
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<div id='querybox' class='<?php if($browseType !='bysearch') echo 'hidden';?>'></div>
|
||||
|
||||
<?php
|
||||
if($customed)
|
||||
{
|
||||
include './browse.custom.html.php';
|
||||
include '../../common/view/footer.lite.html.php';
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
|
||||
<form method='post' action='<?php echo $this->inLink('batchEdit', "from=bugBrowse&productID=$productID&orderBy=$orderBy");?>'>
|
||||
<table class='cont-lt1'>
|
||||
<tr valign='top'>
|
||||
<td class='side <?php echo $treeClass;?>' id='treebox'>
|
||||
<div class='box-title'><?php echo $productName;?></div>
|
||||
<div class='box-content'>
|
||||
<?php echo $moduleTree;?>
|
||||
<div class='a-right'>
|
||||
<?php common::printLink('tree', 'browse', "productID=$productID&view=bug", $lang->tree->manage);?>
|
||||
<?php common::printLink('tree', 'fix', "root=$productID&type=bug", $lang->tree->fix, 'hiddenwin');?>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td class='divider <?php echo $treeClass;?>'></td>
|
||||
<td>
|
||||
<?php $vars = "productID=$productID&browseType=$browseType¶m=$param&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}"; ?>
|
||||
<table class='table-1 fixed colored tablesorter datatable'>
|
||||
<thead>
|
||||
<tr class='colhead'>
|
||||
<th class='w-id'> <?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?></th>
|
||||
<th class='w-severity'> <?php common::printOrderLink('severity', $orderBy, $vars, $lang->bug->severityAB);?></th>
|
||||
<th class='w-pri'> <?php common::printOrderLink('pri', $orderBy, $vars, $lang->priAB);?></th>
|
||||
|
||||
<th><?php common::printOrderLink('title', $orderBy, $vars, $lang->bug->title);?></th>
|
||||
|
||||
<?php if($this->cookie->windowWidth >= $this->config->wideSize):?>
|
||||
<th class='w-80px'><?php common::printOrderLink('status', $orderBy, $vars, $lang->bug->statusAB);?></th>
|
||||
<?php endif;?>
|
||||
|
||||
<?php if($browseType == 'needconfirm'):?>
|
||||
<th class='w-200px'><?php common::printOrderLink('story', $orderBy, $vars, $lang->bug->story);?></th>
|
||||
<th class='w-50px'><?php echo $lang->actions;?></th>
|
||||
<?php else:?>
|
||||
<th class='w-user'><?php common::printOrderLink('openedBy', $orderBy, $vars, $lang->openedByAB);?></th>
|
||||
|
||||
<?php if($this->cookie->windowWidth >= $this->config->wideSize):?>
|
||||
<th class='w-date'> <?php common::printOrderLink('openedDate', $orderBy, $vars, $lang->bug->openedDateAB);?></th>
|
||||
<?php endif;?>
|
||||
|
||||
<th class='w-user'><?php common::printOrderLink('assignedTo', $orderBy, $vars, $lang->assignedToAB);?></th>
|
||||
<th class='w-user'><?php common::printOrderLink('resolvedBy', $orderBy, $vars, $lang->bug->resolvedByAB);?></th>
|
||||
<th class='w-resolution'><?php common::printOrderLink('resolution', $orderBy, $vars, $lang->bug->resolutionAB);?></th>
|
||||
|
||||
<?php if($this->cookie->windowWidth >= $this->config->wideSize):?>
|
||||
<th class='w-date'> <?php common::printOrderLink('resolvedDate', $orderBy, $vars, $lang->bug->resolvedDateAB);?></th>
|
||||
<?php endif;?>
|
||||
|
||||
<th class='w-100px {sorter:false}'><?php echo $lang->actions;?></th>
|
||||
<?php endif;?>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($bugs as $bug):?>
|
||||
<?php $bugLink = inlink('view', "bugID=$bug->id");?>
|
||||
<tr class='a-center'>
|
||||
<td class='<?php echo $bug->status;?>' style="font-weight:bold">
|
||||
<input type='checkbox' name='bugIDList[]' value='<?php echo $bug->id;?>'/>
|
||||
<?php echo html::a($bugLink, sprintf('%03d', $bug->id));?>
|
||||
</td>
|
||||
<td><span class='<?php echo 'severity' . $bug->severity;?>'><?php echo $bug->severity;?></span></td>
|
||||
<td><span class='<?php echo 'pri' . $lang->bug->priList[$bug->pri];?>'><?php echo $lang->bug->priList[$bug->pri];?></span></td>
|
||||
|
||||
<?php $class = 'confirm' . $bug->confirmed;?>
|
||||
<td class='a-left' title="<?php echo $bug->title?>"><?php echo "<span class='$class'>[{$lang->bug->confirmedList[$bug->confirmed]}] </span>" . html::a($bugLink, $bug->title);?></td>
|
||||
|
||||
<?php if($this->cookie->windowWidth >= $this->config->wideSize):?>
|
||||
<td><?php echo $lang->bug->statusList[$bug->status];?></td>
|
||||
<?php endif;?>
|
||||
|
||||
<?php if($browseType == 'needconfirm'):?>
|
||||
<td class='a-left' title="<?php echo $bug->storyTitle?>"><?php echo html::a($this->createLink('story', 'view', "stoyID=$bug->story"), $bug->storyTitle, '_blank');?></td>
|
||||
<td><?php $lang->bug->confirmStoryChange = $lang->confirm; common::printIcon('bug', 'confirmStoryChange', "bugID=$bug->id", '', 'list', '', 'hiddenwin')?></td>
|
||||
<?php else:?>
|
||||
<td><?php echo $users[$bug->openedBy];?></td>
|
||||
|
||||
<?php if($this->cookie->windowWidth >= $this->config->wideSize):?>
|
||||
<td><?php echo substr($bug->openedDate, 5, 11)?></td>
|
||||
<?php endif;?>
|
||||
|
||||
<td <?php if($bug->assignedTo == $this->app->user->account) echo 'class="red"';?>><?php echo $users[$bug->assignedTo];?></td>
|
||||
<td><?php echo $users[$bug->resolvedBy];?></td>
|
||||
<td><?php echo $lang->bug->resolutionList[$bug->resolution];?></td>
|
||||
|
||||
<?php if($this->cookie->windowWidth >= $this->config->wideSize):?>
|
||||
<td><?php echo substr($bug->resolvedDate, 5, 11)?></td>
|
||||
<?php endif;?>
|
||||
|
||||
<td class='a-right'>
|
||||
<?php
|
||||
$params = "bugID=$bug->id";
|
||||
common::printIcon('bug', 'resolve', $params, $bug, 'list');
|
||||
common::printIcon('bug', 'close', $params, $bug, 'list');
|
||||
common::printIcon('bug', 'edit', $params, $bug, 'list');
|
||||
common::printIcon('bug', 'create', "product=$bug->product&extra=bugID=$bug->id", $bug, 'list', 'copy');
|
||||
?>
|
||||
</td>
|
||||
<?php endif;?>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<?php
|
||||
$columns = $this->cookie->windowWidth >= $this->config->wideSize ? 12 : 9;
|
||||
if($browseType == 'needconfirm') $columns = $this->cookie->windowWidth >= $this->config->wideSize ? 7 : 6;
|
||||
?>
|
||||
<td colspan='<?php echo $columns;?>'>
|
||||
<?php if(!empty($bugs)):?>
|
||||
<div class='f-left'>
|
||||
<?php
|
||||
echo html::selectAll() . html::selectReverse();
|
||||
if(common::hasPriv('bug', 'batchEdit') and $bugs) echo html::submitButton($lang->bug->batchEdit);
|
||||
?>
|
||||
</div>
|
||||
<?php endif?>
|
||||
<div class='f-right'><?php $pager->show();?></div>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The browse view file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
include '../../common/view/header.html.php';
|
||||
include '../../common/view/treeview.html.php';
|
||||
include '../../common/view/colorize.html.php';
|
||||
js::set('browseType', $browseType);
|
||||
js::set('moduleID', $moduleID);
|
||||
js::set('customed', $customed, 'number');
|
||||
?>
|
||||
|
||||
<div id='featurebar'>
|
||||
<div class='f-left'>
|
||||
<?php
|
||||
echo "<span id='bymoduleTab' onclick=\"browseByModule('$browseType')\"><a href='#'>" . $lang->bug->moduleBugs . "</a></span> ";
|
||||
echo "<span id='assigntomeTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=assignToMe¶m=0"), $lang->bug->assignToMe) . "</span>";
|
||||
echo "<span id='openedbymeTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=openedByMe¶m=0"), $lang->bug->openedByMe) . "</span>";
|
||||
echo "<span id='resolvedbymeTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=resolvedByMe¶m=0"), $lang->bug->resolvedByMe) . "</span>";
|
||||
echo "<span id='assigntonullTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=assignToNull¶m=0"), $lang->bug->assignToNull) . "</span>";
|
||||
echo "<span id='unresolvedTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=unResolved¶m=0"), $lang->bug->unResolved) . "</span>";
|
||||
echo "<span id='unclosedTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=unclosed¶m=0"), $lang->bug->unclosed) . "</span>";
|
||||
echo "<span id='longlifebugsTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=longLifeBugs¶m=0"), $lang->bug->longLifeBugs) . "</span>";
|
||||
echo "<span id='postponedbugsTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=postponedBugs¶m=0"), $lang->bug->postponedBugs) . "</span>";
|
||||
echo "<span id='allTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=all¶m=0&orderBy=$orderBy&recTotal=0&recPerPage=200"), $lang->bug->allBugs) . "</span>";
|
||||
echo "<span id='needconfirmTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=needconfirm¶m=0"), $lang->bug->needConfirm) . "</span>";
|
||||
echo "<span id='bysearchTab'><a href='#'><span class='icon-search'></span>{$lang->bug->byQuery}</a></span> ";
|
||||
?>
|
||||
</div>
|
||||
<div class='f-right'>
|
||||
<?php
|
||||
if($browseType != 'needconfirm') common::printIcon('bug', 'export', "productID=$productID&orderBy=$orderBy");
|
||||
common::printIcon('bug', 'customFields');
|
||||
common::printIcon('bug', 'report', "productID=$productID&browseType=$browseType&moduleID=$moduleID");
|
||||
common::printIcon('bug', 'create', "productID=$productID&extra=moduleID=$moduleID");
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<div id='querybox' class='<?php if($browseType !='bysearch') echo 'hidden';?>'></div>
|
||||
|
||||
<?php
|
||||
if($customed)
|
||||
{
|
||||
include './browse.custom.html.php';
|
||||
include '../../common/view/footer.lite.html.php';
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
|
||||
<form method='post' action='<?php echo $this->inLink('batchEdit', "from=bugBrowse&productID=$productID&orderBy=$orderBy");?>'>
|
||||
<table class='cont-lt1'>
|
||||
<tr valign='top'>
|
||||
<td class='side <?php echo $treeClass;?>' id='treebox'>
|
||||
<div class='box-title'><?php echo $productName;?></div>
|
||||
<div class='box-content'>
|
||||
<?php echo $moduleTree;?>
|
||||
<div class='a-right'>
|
||||
<?php common::printLink('tree', 'browse', "productID=$productID&view=bug", $lang->tree->manage);?>
|
||||
<?php common::printLink('tree', 'fix', "root=$productID&type=bug", $lang->tree->fix, 'hiddenwin');?>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td class='divider <?php echo $treeClass;?>'></td>
|
||||
<td>
|
||||
<?php $vars = "productID=$productID&browseType=$browseType¶m=$param&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}"; ?>
|
||||
<table class='table-1 fixed colored tablesorter datatable'>
|
||||
<thead>
|
||||
<tr class='colhead'>
|
||||
<th class='w-id'> <?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?></th>
|
||||
<th class='w-severity'> <?php common::printOrderLink('severity', $orderBy, $vars, $lang->bug->severityAB);?></th>
|
||||
<th class='w-pri'> <?php common::printOrderLink('pri', $orderBy, $vars, $lang->priAB);?></th>
|
||||
|
||||
<th><?php common::printOrderLink('title', $orderBy, $vars, $lang->bug->title);?></th>
|
||||
|
||||
<?php if($this->cookie->windowWidth >= $this->config->wideSize):?>
|
||||
<th class='w-80px'><?php common::printOrderLink('status', $orderBy, $vars, $lang->bug->statusAB);?></th>
|
||||
<?php endif;?>
|
||||
|
||||
<?php if($browseType == 'needconfirm'):?>
|
||||
<th class='w-200px'><?php common::printOrderLink('story', $orderBy, $vars, $lang->bug->story);?></th>
|
||||
<th class='w-50px'><?php echo $lang->actions;?></th>
|
||||
<?php else:?>
|
||||
<th class='w-user'><?php common::printOrderLink('openedBy', $orderBy, $vars, $lang->openedByAB);?></th>
|
||||
|
||||
<?php if($this->cookie->windowWidth >= $this->config->wideSize):?>
|
||||
<th class='w-date'> <?php common::printOrderLink('openedDate', $orderBy, $vars, $lang->bug->openedDateAB);?></th>
|
||||
<?php endif;?>
|
||||
|
||||
<th class='w-user'><?php common::printOrderLink('assignedTo', $orderBy, $vars, $lang->assignedToAB);?></th>
|
||||
<th class='w-user'><?php common::printOrderLink('resolvedBy', $orderBy, $vars, $lang->bug->resolvedByAB);?></th>
|
||||
<th class='w-resolution'><?php common::printOrderLink('resolution', $orderBy, $vars, $lang->bug->resolutionAB);?></th>
|
||||
|
||||
<?php if($this->cookie->windowWidth >= $this->config->wideSize):?>
|
||||
<th class='w-date'> <?php common::printOrderLink('resolvedDate', $orderBy, $vars, $lang->bug->resolvedDateAB);?></th>
|
||||
<?php endif;?>
|
||||
|
||||
<th class='w-100px {sorter:false}'><?php echo $lang->actions;?></th>
|
||||
<?php endif;?>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($bugs as $bug):?>
|
||||
<?php $bugLink = inlink('view', "bugID=$bug->id");?>
|
||||
<tr class='a-center'>
|
||||
<td class='<?php echo $bug->status;?>' style="font-weight:bold">
|
||||
<input type='checkbox' name='bugIDList[]' value='<?php echo $bug->id;?>'/>
|
||||
<?php echo html::a($bugLink, sprintf('%03d', $bug->id));?>
|
||||
</td>
|
||||
<td><span class='<?php echo 'severity' . $bug->severity;?>'><?php echo $bug->severity;?></span></td>
|
||||
<td><span class='<?php echo 'pri' . $lang->bug->priList[$bug->pri];?>'><?php echo $lang->bug->priList[$bug->pri];?></span></td>
|
||||
|
||||
<?php $class = 'confirm' . $bug->confirmed;?>
|
||||
<td class='a-left' title="<?php echo $bug->title?>"><?php echo "<span class='$class'>[{$lang->bug->confirmedList[$bug->confirmed]}] </span>" . html::a($bugLink, $bug->title);?></td>
|
||||
|
||||
<?php if($this->cookie->windowWidth >= $this->config->wideSize):?>
|
||||
<td><?php echo $lang->bug->statusList[$bug->status];?></td>
|
||||
<?php endif;?>
|
||||
|
||||
<?php if($browseType == 'needconfirm'):?>
|
||||
<td class='a-left' title="<?php echo $bug->storyTitle?>"><?php echo html::a($this->createLink('story', 'view', "stoyID=$bug->story"), $bug->storyTitle, '_blank');?></td>
|
||||
<td><?php $lang->bug->confirmStoryChange = $lang->confirm; common::printIcon('bug', 'confirmStoryChange', "bugID=$bug->id", '', 'list', '', 'hiddenwin')?></td>
|
||||
<?php else:?>
|
||||
<td><?php echo $users[$bug->openedBy];?></td>
|
||||
|
||||
<?php if($this->cookie->windowWidth >= $this->config->wideSize):?>
|
||||
<td><?php echo substr($bug->openedDate, 5, 11)?></td>
|
||||
<?php endif;?>
|
||||
|
||||
<td <?php if($bug->assignedTo == $this->app->user->account) echo 'class="red"';?>><?php echo $users[$bug->assignedTo];?></td>
|
||||
<td><?php echo $users[$bug->resolvedBy];?></td>
|
||||
<td><?php echo $lang->bug->resolutionList[$bug->resolution];?></td>
|
||||
|
||||
<?php if($this->cookie->windowWidth >= $this->config->wideSize):?>
|
||||
<td><?php echo substr($bug->resolvedDate, 5, 11)?></td>
|
||||
<?php endif;?>
|
||||
|
||||
<td class='a-right'>
|
||||
<?php
|
||||
$params = "bugID=$bug->id";
|
||||
common::printIcon('bug', 'resolve', $params, $bug, 'list');
|
||||
common::printIcon('bug', 'close', $params, $bug, 'list');
|
||||
common::printIcon('bug', 'edit', $params, $bug, 'list');
|
||||
common::printIcon('bug', 'create', "product=$bug->product&extra=bugID=$bug->id", $bug, 'list', 'copy');
|
||||
?>
|
||||
</td>
|
||||
<?php endif;?>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<?php
|
||||
$columns = $this->cookie->windowWidth >= $this->config->wideSize ? 12 : 9;
|
||||
if($browseType == 'needconfirm') $columns = $this->cookie->windowWidth >= $this->config->wideSize ? 7 : 6;
|
||||
?>
|
||||
<td colspan='<?php echo $columns;?>'>
|
||||
<?php if(!empty($bugs)):?>
|
||||
<div class='f-left'>
|
||||
<?php
|
||||
echo html::selectAll() . html::selectReverse();
|
||||
if(common::hasPriv('bug', 'batchEdit') and $bugs) echo html::submitButton($lang->bug->batchEdit);
|
||||
?>
|
||||
</div>
|
||||
<?php endif?>
|
||||
<div class='f-right'><?php $pager->show();?></div>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,31 +1,31 @@
|
||||
<?php
|
||||
/**
|
||||
* The close file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' target='hiddenwin'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $bug->title;?></caption>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->comment;?></td>
|
||||
<td><?php echo html::textarea('comment', '', "rows='6' class='area-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'>
|
||||
<?php echo html::submitButton();?>
|
||||
<input type='button' value='<?php echo $lang->bug->buttonToList;?>' class='button-s'
|
||||
onclick='location.href="<?php echo $this->session->bugList;?>"' />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The close file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' target='hiddenwin'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $bug->title;?></caption>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->comment;?></td>
|
||||
<td><?php echo html::textarea('comment', '', "rows='6' class='area-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'>
|
||||
<?php echo html::submitButton();?>
|
||||
<input type='button' value='<?php echo $lang->bug->buttonToList;?>' class='button-s'
|
||||
onclick='location.href="<?php echo $this->session->bugList;?>"' />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,31 +1,31 @@
|
||||
<?php
|
||||
/**
|
||||
* The confirm file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id: resolve.html.php 1914 2011-06-24 10:11:25Z yidong@cnezsoft.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' target='hiddenwin'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $bug->title;?></caption>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->comment;?></td>
|
||||
<td><?php echo html::textarea('comment', '', "rows='6' class='area-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'>
|
||||
<?php echo html::submitButton($lang->bug->buttonConfirm);?>
|
||||
<input type='button' value='<?php echo $lang->bug->buttonToList;?>' class='button-s'
|
||||
onclick='location.href="<?php echo $this->server->http_referer;?>"' />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The confirm file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id: resolve.html.php 1914 2011-06-24 10:11:25Z yidong@cnezsoft.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' target='hiddenwin'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $bug->title;?></caption>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->comment;?></td>
|
||||
<td><?php echo html::textarea('comment', '', "rows='6' class='area-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'>
|
||||
<?php echo html::submitButton($lang->bug->buttonConfirm);?>
|
||||
<input type='button' value='<?php echo $lang->bug->buttonToList;?>' class='button-s'
|
||||
onclick='location.href="<?php echo $this->server->http_referer;?>"' />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
+112
-112
@@ -1,112 +1,112 @@
|
||||
<?php
|
||||
/**
|
||||
* The create view of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
include '../../common/view/header.html.php';
|
||||
include '../../common/view/chosen.html.php';
|
||||
include '../../common/view/autocomplete.html.php';
|
||||
include '../../common/view/alert.html.php';
|
||||
include '../../common/view/kindeditor.html.php';
|
||||
js::set('holders', $lang->bug->placeholder, 'json');
|
||||
js::set('userList', array_keys($users), 'json');
|
||||
js::set('page', 'create');
|
||||
?>
|
||||
|
||||
<form method='post' enctype='multipart/form-data' target='hiddenwin' id='dataform'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $lang->bug->create;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->lblProductAndModule;?></th>
|
||||
<td>
|
||||
<?php echo html::select('product', $products, $productID, "onchange=loadAll(this.value) class='select-3'");?>
|
||||
<span id='moduleIdBox'><?php echo html::select('module', $moduleOptionMenu, $moduleID, "onchange='setAssignedTo()'");?></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->project;?></th>
|
||||
<td><span id='projectIdBox'><?php echo html::select('project', $projects, $projectID, 'class=select-3 onchange=loadProjectRelated(this.value)');?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->openedBuild;?></th>
|
||||
<td>
|
||||
<span id='buildBox'><?php echo html::select('openedBuild[]', $builds, $buildID, 'size=3 multiple=multiple class=select-3');?></span>
|
||||
<?php if(count($builds) == 1) echo $lang->build->notice;?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><nobr><?php echo $lang->bug->lblAssignedTo;?></nobr></th>
|
||||
<td><span id='assignedToBox'><?php echo html::select('assignedTo', $users, $assignedTo, 'class=select-3');?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->title;?></th>
|
||||
<td><?php echo html::input('title', $title, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->steps;?></th>
|
||||
<td>
|
||||
<table class='w-p100 bd-none'>
|
||||
<tr class='bd-none' valign='top'>
|
||||
<td class='w-p85 bd-none padding-zero'><?php echo html::textarea('steps', $steps, "rows='10'");?></td>
|
||||
<td class='bd-none pl-10px' id='tplBox'><?php echo $this->fetch('bug', 'buildTemplates');?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->lblStory;?></th>
|
||||
<td>
|
||||
<span id='storyIdBox'><?php echo html::select('story', $stories, $storyID);?></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->task;?></th>
|
||||
<td><span id='taskIdBox'><?php echo html::select('task', $tasks, $taskID);?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->lblTypeAndSeverity;?></th>
|
||||
<td>
|
||||
<?php echo html::select('type', $lang->bug->typeList, $type, 'class=select-2');?>
|
||||
<?php echo html::select('severity', $lang->bug->severityList, $severity, 'class=select-2');?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><nobr><?php echo $lang->bug->lblSystemBrowserAndHardware;?></nobr></th>
|
||||
<td>
|
||||
<?php echo html::select('os', $lang->bug->osList, $os, 'class=select-2');?>
|
||||
<?php echo html::select('browser', $lang->bug->browserList, $browser, 'class=select-2');?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><nobr><?php echo $lang->bug->lblMailto;?></nobr></th>
|
||||
<td>
|
||||
<?php
|
||||
echo html::input('mailto', $mailto, 'class=text-1');
|
||||
if($contactLists) echo html::select('', $contactLists, '', "onchange=\"setMailto('mailto', this.value)\"");
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->keywords;?></th>
|
||||
<td><?php echo html::input('keywords', $keywords, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->files;?></th>
|
||||
<td><?php echo $this->fetch('file', 'buildform', 'fileCount=2&percent=0.85');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'>
|
||||
<?php echo html::submitButton() . html::resetButton() . html::hidden('case', $caseID);?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The create view of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
include '../../common/view/header.html.php';
|
||||
include '../../common/view/chosen.html.php';
|
||||
include '../../common/view/autocomplete.html.php';
|
||||
include '../../common/view/alert.html.php';
|
||||
include '../../common/view/kindeditor.html.php';
|
||||
js::set('holders', $lang->bug->placeholder, 'json');
|
||||
js::set('userList', array_keys($users), 'json');
|
||||
js::set('page', 'create');
|
||||
?>
|
||||
|
||||
<form method='post' enctype='multipart/form-data' target='hiddenwin' id='dataform'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $lang->bug->create;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->lblProductAndModule;?></th>
|
||||
<td>
|
||||
<?php echo html::select('product', $products, $productID, "onchange=loadAll(this.value) class='select-3'");?>
|
||||
<span id='moduleIdBox'><?php echo html::select('module', $moduleOptionMenu, $moduleID, "onchange='setAssignedTo()'");?></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->project;?></th>
|
||||
<td><span id='projectIdBox'><?php echo html::select('project', $projects, $projectID, 'class=select-3 onchange=loadProjectRelated(this.value)');?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->openedBuild;?></th>
|
||||
<td>
|
||||
<span id='buildBox'><?php echo html::select('openedBuild[]', $builds, $buildID, 'size=3 multiple=multiple class=select-3');?></span>
|
||||
<?php if(count($builds) == 1) echo $lang->build->notice;?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><nobr><?php echo $lang->bug->lblAssignedTo;?></nobr></th>
|
||||
<td><span id='assignedToBox'><?php echo html::select('assignedTo', $users, $assignedTo, 'class=select-3');?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->title;?></th>
|
||||
<td><?php echo html::input('title', $title, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->steps;?></th>
|
||||
<td>
|
||||
<table class='w-p100 bd-none'>
|
||||
<tr class='bd-none' valign='top'>
|
||||
<td class='w-p85 bd-none padding-zero'><?php echo html::textarea('steps', $steps, "rows='10'");?></td>
|
||||
<td class='bd-none pl-10px' id='tplBox'><?php echo $this->fetch('bug', 'buildTemplates');?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->lblStory;?></th>
|
||||
<td>
|
||||
<span id='storyIdBox'><?php echo html::select('story', $stories, $storyID);?></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->task;?></th>
|
||||
<td><span id='taskIdBox'><?php echo html::select('task', $tasks, $taskID);?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->lblTypeAndSeverity;?></th>
|
||||
<td>
|
||||
<?php echo html::select('type', $lang->bug->typeList, $type, 'class=select-2');?>
|
||||
<?php echo html::select('severity', $lang->bug->severityList, $severity, 'class=select-2');?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><nobr><?php echo $lang->bug->lblSystemBrowserAndHardware;?></nobr></th>
|
||||
<td>
|
||||
<?php echo html::select('os', $lang->bug->osList, $os, 'class=select-2');?>
|
||||
<?php echo html::select('browser', $lang->bug->browserList, $browser, 'class=select-2');?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><nobr><?php echo $lang->bug->lblMailto;?></nobr></th>
|
||||
<td>
|
||||
<?php
|
||||
echo html::input('mailto', $mailto, 'class=text-1');
|
||||
if($contactLists) echo html::select('', $contactLists, '', "onchange=\"setMailto('mailto', this.value)\"");
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->keywords;?></th>
|
||||
<td><?php echo html::input('keywords', $keywords, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->files;?></th>
|
||||
<td><?php echo $this->fetch('file', 'buildform', 'fileCount=2&percent=0.85');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'>
|
||||
<?php echo html::submitButton() . html::resetButton() . html::hidden('case', $caseID);?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,49 +1,49 @@
|
||||
<?php
|
||||
/**
|
||||
* The custom seting fields view of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package product
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.lite.html.php';?>
|
||||
<?php include '../../common/view/colorbox.html.php';?>
|
||||
<form method='post' class='mt-20px'>
|
||||
<table class='table-4' align='center'>
|
||||
<caption class='caption-tl'><?php echo $lang->bug->customFields;?></caption>
|
||||
<tr class='colhead'>
|
||||
<th><?php echo $lang->bug->lblAllFields;?></th>
|
||||
<th></th>
|
||||
<th><?php echo $lang->bug->lblCustomFields;?></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<?php
|
||||
echo html::select('allFields[]', $allFields, '', 'class=select-2 size=10 multiple');
|
||||
echo html::select('defaultFields[]', $defaultFields, '', 'class=hidden');
|
||||
?>
|
||||
</td>
|
||||
<td>
|
||||
<?php
|
||||
echo html::commonButton('>', "onclick=\"addItem('allFields', 'customFields')\"") . '<br />';
|
||||
echo html::commonButton('<', "onclick=delItem('customFields')") . '<br />';
|
||||
?>
|
||||
</td>
|
||||
<td><?php echo html::select('customFields[]', $customFields, '', 'class=select-2 size=10 multiple');?></td>
|
||||
<td>
|
||||
<?php
|
||||
echo html::commonButton('+', "onclick=upItem('customFields')") . '<br />';
|
||||
echo html::commonButton('-', "onclick=downItem('customFields')") . '<br />';
|
||||
echo html::commonButton($lang->bug->restoreDefault, "onclick=restoreDefault()") . '<br />';
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan='4' class='a-center'><?php echo html::submitButton('', 'onclick=selectItem("customFields")');?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.lite.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The custom seting fields view of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package product
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.lite.html.php';?>
|
||||
<?php include '../../common/view/colorbox.html.php';?>
|
||||
<form method='post' class='mt-20px'>
|
||||
<table class='table-4' align='center'>
|
||||
<caption class='caption-tl'><?php echo $lang->bug->customFields;?></caption>
|
||||
<tr class='colhead'>
|
||||
<th><?php echo $lang->bug->lblAllFields;?></th>
|
||||
<th></th>
|
||||
<th><?php echo $lang->bug->lblCustomFields;?></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<?php
|
||||
echo html::select('allFields[]', $allFields, '', 'class=select-2 size=10 multiple');
|
||||
echo html::select('defaultFields[]', $defaultFields, '', 'class=hidden');
|
||||
?>
|
||||
</td>
|
||||
<td>
|
||||
<?php
|
||||
echo html::commonButton('>', "onclick=\"addItem('allFields', 'customFields')\"") . '<br />';
|
||||
echo html::commonButton('<', "onclick=delItem('customFields')") . '<br />';
|
||||
?>
|
||||
</td>
|
||||
<td><?php echo html::select('customFields[]', $customFields, '', 'class=select-2 size=10 multiple');?></td>
|
||||
<td>
|
||||
<?php
|
||||
echo html::commonButton('+', "onclick=upItem('customFields')") . '<br />';
|
||||
echo html::commonButton('-', "onclick=downItem('customFields')") . '<br />';
|
||||
echo html::commonButton($lang->bug->restoreDefault, "onclick=restoreDefault()") . '<br />';
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan='4' class='a-center'><?php echo html::submitButton('', 'onclick=selectItem("customFields")');?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.lite.html.php';?>
|
||||
|
||||
+205
-205
@@ -1,205 +1,205 @@
|
||||
<?php
|
||||
/**
|
||||
* The edit file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
include '../../common/view/header.html.php';
|
||||
include '../../common/view/chosen.html.php';
|
||||
include '../../common/view/autocomplete.html.php';
|
||||
include '../../common/view/alert.html.php';
|
||||
include '../../common/view/kindeditor.html.php';
|
||||
js::set('page' , 'edit');
|
||||
js::set('changeProductConfirmed' , 'false', 'number');
|
||||
js::set('changeProjectConfirmed' , 'false', 'number');
|
||||
js::set('confirmChangeProduct' , $lang->bug->confirmChangeProduct);
|
||||
js::set('oldProjectID' , $bug->project);
|
||||
js::set('oldStoryID' , $bug->story);
|
||||
js::set('oldTaskID' , $bug->task);
|
||||
js::set('oldOpenedBuild' , $bug->openedBuild);
|
||||
js::set('oldResolvedBuild' , $bug->resolvedBuild);
|
||||
js::set('userList' , array_keys($users), 'json');
|
||||
?>
|
||||
|
||||
<form method='post' target='hiddenwin' enctype='multipart/form-data' id='dataform'>
|
||||
<div id='titlebar'>
|
||||
<div id='main'>
|
||||
BUG #<?php echo $bug->id . $lang->colon;?>
|
||||
<?php echo html::input('title', str_replace("'","'",$bug->title), 'class=text-1');?>
|
||||
</div>
|
||||
<div><?php echo html::submitButton()?></div>
|
||||
</div>
|
||||
|
||||
<table class='cont-rt5'>
|
||||
<tr valign='top'>
|
||||
<td>
|
||||
<table class='table-1 bd-none'>
|
||||
<tr class='bd-none'><td class='bd-none'>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendSteps;?></legend>
|
||||
<div class='w-p90'><?php echo html::textarea('steps', htmlspecialchars($bug->steps), "rows='12'");?></div>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendComment;?></legend>
|
||||
<?php echo html::textarea('comment', '', "rows='6' class='area-1'");?>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendAttatch;?></legend>
|
||||
<?php echo $this->fetch('file', 'buildform', 'filecount=2');?>
|
||||
</fieldset>
|
||||
<div class='a-center'>
|
||||
<?php
|
||||
echo html::submitButton();
|
||||
$browseLink = $app->session->bugList != false ? $app->session->bugList : inlink('browse', "productID=$bug->product");
|
||||
echo html::linkButton($lang->goback, $browseLink);
|
||||
?>
|
||||
</div>
|
||||
</td></tr>
|
||||
</table>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
</td>
|
||||
<td class='divider'></td>
|
||||
<td class='side'>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendBasicInfo;?></legend>
|
||||
<table class='table-1 a-left' cellpadding='0' cellspacing='0'>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->product;?></td>
|
||||
<td>
|
||||
<?php echo html::select('product', $products, $productID, "onchange=loadAll(this.value);");?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->module;?></td>
|
||||
<td>
|
||||
<span id='moduleIdBox'><?php echo html::select('module', $moduleOptionMenu, $currentModuleID);?></span>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->type;?></td>
|
||||
<td><?php echo html::select('type', $lang->bug->typeList, $bug->type, 'class=select-3');?>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->severity;?></td>
|
||||
<td><?php echo html::select('severity', $lang->bug->severityList, $bug->severity, 'class=select-3');?>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->pri;?></td>
|
||||
<td><?php echo html::select('pri', $lang->bug->priList, $bug->pri, 'class=select-3');?>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->status;?></td>
|
||||
<td><?php echo html::select('status', $lang->bug->statusList, $bug->status, 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->confirmed;?></td>
|
||||
<td><?php echo $lang->bug->confirmedList[$bug->confirmed];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->assignedTo;?></td>
|
||||
<td><?php echo html::select('assignedTo', $users, $bug->assignedTo, 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->os;?></td>
|
||||
<td><?php echo html::select('os', $lang->bug->osList, $bug->os, 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->browser;?></td>
|
||||
<td><?php echo html::select('browser', $lang->bug->browserList, $bug->browser, 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->keywords;?></td>
|
||||
<td><?php echo html::input('keywords', $bug->keywords, 'class="text-3"');?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendPrjStoryTask;?></legend>
|
||||
<table class='table-1 a-left'>
|
||||
<tr>
|
||||
<td class='rowhead w-p20'><?php echo $lang->bug->project;?></td>
|
||||
<td><span id='projectIdBox'><?php echo html::select('project', $projects, $bug->project, 'class=select-3 onchange=loadProjectRelated(this.value)');?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->story;?></td>
|
||||
<td><div id='storyIdBox'><?php echo html::select('story', $stories, $bug->story, "class=select-3");?></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->task;?></td>
|
||||
<td><div id='taskIdBox'><?php echo html::select('task', $tasks, $bug->task, 'class=select-3');?></div></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendLife;?></legend>
|
||||
<table class='table-1 a-left'>
|
||||
<tr>
|
||||
<td class='rowhead w-p20'><?php echo $lang->bug->openedBy;?></td>
|
||||
<td><?php echo $users[$bug->openedBy];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->openedBuild;?></td>
|
||||
<td><span id='openedBuildBox'><?php echo html::select('openedBuild[]', $openedBuilds, $bug->openedBuild, 'size=4 multiple=multiple class=select-3');?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->resolvedBy;?></td>
|
||||
<td><?php echo html::select('resolvedBy', $users, $bug->resolvedBy, 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->resolvedDate;?></td>
|
||||
<td><?php echo html::input('resolvedDate', $bug->resolvedDate, 'class=text-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->resolvedBuild;?></td>
|
||||
<td><span id='resolvedBuildBox'><?php echo html::select('resolvedBuild', $resolvedBuilds, $bug->resolvedBuild, 'class=select-3');?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->resolution;?></td>
|
||||
<td><?php echo html::select('resolution', $lang->bug->resolutionList, $bug->resolution, 'class=select-3 onchange=setDuplicate(this.value)');?></td>
|
||||
</tr>
|
||||
<tr id='duplicateBugBox' <?php if($bug->resolution != 'duplicate') echo "style='display:none'";?>>
|
||||
<td class='rowhead'><?php echo $lang->bug->duplicateBug;?></td>
|
||||
<td><?php echo html::input('duplicateBug', $bug->duplicateBug, 'class=text-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->closedBy;?></td>
|
||||
<td><?php echo html::select('closedBy', $users, $bug->closedBy, 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->closedDate;?></td>
|
||||
<td><?php echo html::input('closedDate', $bug->closedDate, 'class=text-3');?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendMisc;?></legend>
|
||||
<table class='table-1 a-left'>
|
||||
<tr>
|
||||
<td class='rowhead w-p20'><?php echo $lang->bug->mailto;?></td>
|
||||
<td><?php echo html::input('mailto', $bug->mailto, 'class="text-3"');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->linkBug;?></td>
|
||||
<td><?php echo html::input('linkBug', $bug->linkBug, 'class="text-3"');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->case;?></td>
|
||||
<td><?php echo html::input('case', $bug->case, 'class="text-3"');?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The edit file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
include '../../common/view/header.html.php';
|
||||
include '../../common/view/chosen.html.php';
|
||||
include '../../common/view/autocomplete.html.php';
|
||||
include '../../common/view/alert.html.php';
|
||||
include '../../common/view/kindeditor.html.php';
|
||||
js::set('page' , 'edit');
|
||||
js::set('changeProductConfirmed' , 'false', 'number');
|
||||
js::set('changeProjectConfirmed' , 'false', 'number');
|
||||
js::set('confirmChangeProduct' , $lang->bug->confirmChangeProduct);
|
||||
js::set('oldProjectID' , $bug->project);
|
||||
js::set('oldStoryID' , $bug->story);
|
||||
js::set('oldTaskID' , $bug->task);
|
||||
js::set('oldOpenedBuild' , $bug->openedBuild);
|
||||
js::set('oldResolvedBuild' , $bug->resolvedBuild);
|
||||
js::set('userList' , array_keys($users), 'json');
|
||||
?>
|
||||
|
||||
<form method='post' target='hiddenwin' enctype='multipart/form-data' id='dataform'>
|
||||
<div id='titlebar'>
|
||||
<div id='main'>
|
||||
BUG #<?php echo $bug->id . $lang->colon;?>
|
||||
<?php echo html::input('title', str_replace("'","'",$bug->title), 'class=text-1');?>
|
||||
</div>
|
||||
<div><?php echo html::submitButton()?></div>
|
||||
</div>
|
||||
|
||||
<table class='cont-rt5'>
|
||||
<tr valign='top'>
|
||||
<td>
|
||||
<table class='table-1 bd-none'>
|
||||
<tr class='bd-none'><td class='bd-none'>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendSteps;?></legend>
|
||||
<div class='w-p90'><?php echo html::textarea('steps', htmlspecialchars($bug->steps), "rows='12'");?></div>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendComment;?></legend>
|
||||
<?php echo html::textarea('comment', '', "rows='6' class='area-1'");?>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendAttatch;?></legend>
|
||||
<?php echo $this->fetch('file', 'buildform', 'filecount=2');?>
|
||||
</fieldset>
|
||||
<div class='a-center'>
|
||||
<?php
|
||||
echo html::submitButton();
|
||||
$browseLink = $app->session->bugList != false ? $app->session->bugList : inlink('browse', "productID=$bug->product");
|
||||
echo html::linkButton($lang->goback, $browseLink);
|
||||
?>
|
||||
</div>
|
||||
</td></tr>
|
||||
</table>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
</td>
|
||||
<td class='divider'></td>
|
||||
<td class='side'>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendBasicInfo;?></legend>
|
||||
<table class='table-1 a-left' cellpadding='0' cellspacing='0'>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->product;?></td>
|
||||
<td>
|
||||
<?php echo html::select('product', $products, $productID, "onchange=loadAll(this.value);");?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->module;?></td>
|
||||
<td>
|
||||
<span id='moduleIdBox'><?php echo html::select('module', $moduleOptionMenu, $currentModuleID);?></span>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->type;?></td>
|
||||
<td><?php echo html::select('type', $lang->bug->typeList, $bug->type, 'class=select-3');?>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->severity;?></td>
|
||||
<td><?php echo html::select('severity', $lang->bug->severityList, $bug->severity, 'class=select-3');?>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->pri;?></td>
|
||||
<td><?php echo html::select('pri', $lang->bug->priList, $bug->pri, 'class=select-3');?>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->status;?></td>
|
||||
<td><?php echo html::select('status', $lang->bug->statusList, $bug->status, 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->confirmed;?></td>
|
||||
<td><?php echo $lang->bug->confirmedList[$bug->confirmed];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->assignedTo;?></td>
|
||||
<td><?php echo html::select('assignedTo', $users, $bug->assignedTo, 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->os;?></td>
|
||||
<td><?php echo html::select('os', $lang->bug->osList, $bug->os, 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->browser;?></td>
|
||||
<td><?php echo html::select('browser', $lang->bug->browserList, $bug->browser, 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->keywords;?></td>
|
||||
<td><?php echo html::input('keywords', $bug->keywords, 'class="text-3"');?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendPrjStoryTask;?></legend>
|
||||
<table class='table-1 a-left'>
|
||||
<tr>
|
||||
<td class='rowhead w-p20'><?php echo $lang->bug->project;?></td>
|
||||
<td><span id='projectIdBox'><?php echo html::select('project', $projects, $bug->project, 'class=select-3 onchange=loadProjectRelated(this.value)');?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->story;?></td>
|
||||
<td><div id='storyIdBox'><?php echo html::select('story', $stories, $bug->story, "class=select-3");?></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->task;?></td>
|
||||
<td><div id='taskIdBox'><?php echo html::select('task', $tasks, $bug->task, 'class=select-3');?></div></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendLife;?></legend>
|
||||
<table class='table-1 a-left'>
|
||||
<tr>
|
||||
<td class='rowhead w-p20'><?php echo $lang->bug->openedBy;?></td>
|
||||
<td><?php echo $users[$bug->openedBy];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->openedBuild;?></td>
|
||||
<td><span id='openedBuildBox'><?php echo html::select('openedBuild[]', $openedBuilds, $bug->openedBuild, 'size=4 multiple=multiple class=select-3');?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->resolvedBy;?></td>
|
||||
<td><?php echo html::select('resolvedBy', $users, $bug->resolvedBy, 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->resolvedDate;?></td>
|
||||
<td><?php echo html::input('resolvedDate', $bug->resolvedDate, 'class=text-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->resolvedBuild;?></td>
|
||||
<td><span id='resolvedBuildBox'><?php echo html::select('resolvedBuild', $resolvedBuilds, $bug->resolvedBuild, 'class=select-3');?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->resolution;?></td>
|
||||
<td><?php echo html::select('resolution', $lang->bug->resolutionList, $bug->resolution, 'class=select-3 onchange=setDuplicate(this.value)');?></td>
|
||||
</tr>
|
||||
<tr id='duplicateBugBox' <?php if($bug->resolution != 'duplicate') echo "style='display:none'";?>>
|
||||
<td class='rowhead'><?php echo $lang->bug->duplicateBug;?></td>
|
||||
<td><?php echo html::input('duplicateBug', $bug->duplicateBug, 'class=text-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->closedBy;?></td>
|
||||
<td><?php echo html::select('closedBy', $users, $bug->closedBy, 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->closedDate;?></td>
|
||||
<td><?php echo html::input('closedDate', $bug->closedDate, 'class=text-3');?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendMisc;?></legend>
|
||||
<table class='table-1 a-left'>
|
||||
<tr>
|
||||
<td class='rowhead w-p20'><?php echo $lang->bug->mailto;?></td>
|
||||
<td><?php echo html::input('mailto', $bug->mailto, 'class="text-3"');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->linkBug;?></td>
|
||||
<td><?php echo html::input('linkBug', $bug->linkBug, 'class="text-3"');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->case;?></td>
|
||||
<td><?php echo html::input('case', $bug->case, 'class="text-3"');?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
<?php
|
||||
/**
|
||||
* The export view file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Congzhi Chen<congzhi@cnezsoft.com>
|
||||
* @package task
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../file/view/export.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The export view file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Congzhi Chen<congzhi@cnezsoft.com>
|
||||
* @package task
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../file/view/export.html.php';?>
|
||||
|
||||
@@ -1,62 +1,62 @@
|
||||
<?php
|
||||
/**
|
||||
* The report view file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<div id='featurebar'>
|
||||
<div class='f-left'><?php echo $lang->bug->report->common;?></div>
|
||||
<div class='f-right'><?php common::printRPN($this->createLink('bug', 'browse', "productID=$productID&browseType=$browseType&moduleID=$moduleID")); ?></div>
|
||||
</div>
|
||||
|
||||
<table class='cont-lt1'>
|
||||
<tr valign='top'>
|
||||
<td class='side'>
|
||||
<div class='box-title'><?php echo $lang->bug->report->select;?></div>
|
||||
<div class='box-content'>
|
||||
<form method='post'>
|
||||
<?php echo html::checkBox('charts', $lang->bug->report->charts, $checkedCharts);?>
|
||||
<?php echo html::selectAll();?>
|
||||
<?php echo html::selectReverse(); ?>
|
||||
<br /><br />
|
||||
<?php echo html::submitButton($lang->bug->report->create);?>
|
||||
</div>
|
||||
</td>
|
||||
<td class='divider'></td>
|
||||
<td>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $lang->bug->report->common;?></caption>
|
||||
<?php foreach($charts as $chartType => $chartContent):?>
|
||||
<tr valign='top'>
|
||||
<td><?php echo $chartContent;?></td>
|
||||
<td width='300'>
|
||||
<table class='table-1'>
|
||||
<tr>
|
||||
<th><?php echo $lang->report->item;?></th>
|
||||
<th><?php echo $lang->report->value;?></th>
|
||||
<th><?php echo $lang->report->percent;?></th>
|
||||
</tr>
|
||||
<?php foreach($datas[$chartType] as $key => $data):?>
|
||||
<tr class='a-center'>
|
||||
<td><?php echo $data->name;?></td>
|
||||
<td><?php echo $data->value;?></td>
|
||||
<td><?php echo ($data->percent * 100) . '%';?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php echo $renderJS;?>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The report view file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<div id='featurebar'>
|
||||
<div class='f-left'><?php echo $lang->bug->report->common;?></div>
|
||||
<div class='f-right'><?php common::printRPN($this->createLink('bug', 'browse', "productID=$productID&browseType=$browseType&moduleID=$moduleID")); ?></div>
|
||||
</div>
|
||||
|
||||
<table class='cont-lt1'>
|
||||
<tr valign='top'>
|
||||
<td class='side'>
|
||||
<div class='box-title'><?php echo $lang->bug->report->select;?></div>
|
||||
<div class='box-content'>
|
||||
<form method='post'>
|
||||
<?php echo html::checkBox('charts', $lang->bug->report->charts, $checkedCharts);?>
|
||||
<?php echo html::selectAll();?>
|
||||
<?php echo html::selectReverse(); ?>
|
||||
<br /><br />
|
||||
<?php echo html::submitButton($lang->bug->report->create);?>
|
||||
</div>
|
||||
</td>
|
||||
<td class='divider'></td>
|
||||
<td>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $lang->bug->report->common;?></caption>
|
||||
<?php foreach($charts as $chartType => $chartContent):?>
|
||||
<tr valign='top'>
|
||||
<td><?php echo $chartContent;?></td>
|
||||
<td width='300'>
|
||||
<table class='table-1'>
|
||||
<tr>
|
||||
<th><?php echo $lang->report->item;?></th>
|
||||
<th><?php echo $lang->report->value;?></th>
|
||||
<th><?php echo $lang->report->percent;?></th>
|
||||
</tr>
|
||||
<?php foreach($datas[$chartType] as $key => $data):?>
|
||||
<tr class='a-center'>
|
||||
<td><?php echo $data->name;?></td>
|
||||
<td><?php echo $data->value;?></td>
|
||||
<td><?php echo ($data->percent * 100) . '%';?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php echo $renderJS;?>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,51 +1,51 @@
|
||||
<?php
|
||||
/**
|
||||
* The resolve file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' target='hiddenwin'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $bug->title;?></caption>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->resolution;?></td>
|
||||
<td><?php unset($lang->bug->resolutionList['tostory']); echo html::select('resolution', $lang->bug->resolutionList, '', 'class=select-3 onchange=setDuplicate(this.value)');?></td>
|
||||
</tr>
|
||||
<tr id='duplicateBugBox' style='display:none'>
|
||||
<td class='rowhead'><?php echo $lang->bug->duplicateBug;?></td>
|
||||
<td><?php echo html::input('duplicateBug', '', 'class=text-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->resolvedBuild;?></td>
|
||||
<td><?php echo html::select('resolvedBuild', $builds, '', 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->resolvedDate;?></td>
|
||||
<td><?php echo html::input('resolvedDate', helper::now(), "class='select-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->assignedTo;?></td>
|
||||
<td><?php echo html::select('assignedTo', $users, $bug->openedBy, 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->comment;?></td>
|
||||
<td><?php echo html::textarea('comment', '', "rows='6' class='area-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'>
|
||||
<?php echo html::submitButton();?>
|
||||
<input type='button' value='<?php echo $lang->bug->buttonToList;?>' class='button-s'
|
||||
onclick='location.href="<?php echo $this->session->bugList;?>"' />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The resolve file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' target='hiddenwin'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $bug->title;?></caption>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->resolution;?></td>
|
||||
<td><?php unset($lang->bug->resolutionList['tostory']); echo html::select('resolution', $lang->bug->resolutionList, '', 'class=select-3 onchange=setDuplicate(this.value)');?></td>
|
||||
</tr>
|
||||
<tr id='duplicateBugBox' style='display:none'>
|
||||
<td class='rowhead'><?php echo $lang->bug->duplicateBug;?></td>
|
||||
<td><?php echo html::input('duplicateBug', '', 'class=text-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->resolvedBuild;?></td>
|
||||
<td><?php echo html::select('resolvedBuild', $builds, '', 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->resolvedDate;?></td>
|
||||
<td><?php echo html::input('resolvedDate', helper::now(), "class='select-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->assignedTo;?></td>
|
||||
<td><?php echo html::select('assignedTo', $users, $bug->openedBy, 'class=select-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->comment;?></td>
|
||||
<td><?php echo html::textarea('comment', '', "rows='6' class='area-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'>
|
||||
<?php echo html::submitButton();?>
|
||||
<input type='button' value='<?php echo $lang->bug->buttonToList;?>' class='button-s'
|
||||
onclick='location.href="<?php echo $this->session->bugList;?>"' />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,39 +1,39 @@
|
||||
<?php
|
||||
/**
|
||||
* The mail file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<table width='98%' align='center'>
|
||||
<tr class='header'>
|
||||
<td>
|
||||
BUG #<?php echo $bug->id . "=>$bug->assignedTo " . html::a(common::getSysURL() . $this->createLink('bug', 'view', "bugID=$bug->id"), $bug->title);?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendSteps;?></legend>
|
||||
<div class='content'>
|
||||
<?php
|
||||
if(strpos($bug->steps, 'src="data/upload'))
|
||||
{
|
||||
$bug->steps = str_replace('<img src="', '<img src="http://' . $this->server->http_host . $this->config->webRoot, $bug->steps);
|
||||
$bug->steps = str_replace('<img alt="" src="', '<img src="http://' . $this->server->http_host . $this->config->webRoot, $bug->steps);
|
||||
}
|
||||
echo $bug->steps;
|
||||
?>
|
||||
</div>
|
||||
</fieldset>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php include '../../common/view/mail.html.php';?></td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php
|
||||
/**
|
||||
* The mail file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<table width='98%' align='center'>
|
||||
<tr class='header'>
|
||||
<td>
|
||||
BUG #<?php echo $bug->id . "=>$bug->assignedTo " . html::a(common::getSysURL() . $this->createLink('bug', 'view', "bugID=$bug->id"), $bug->title);?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendSteps;?></legend>
|
||||
<div class='content'>
|
||||
<?php
|
||||
if(strpos($bug->steps, 'src="data/upload'))
|
||||
{
|
||||
$bug->steps = str_replace('<img src="', '<img src="http://' . $this->server->http_host . $this->config->webRoot, $bug->steps);
|
||||
$bug->steps = str_replace('<img alt="" src="', '<img src="http://' . $this->server->http_host . $this->config->webRoot, $bug->steps);
|
||||
}
|
||||
echo $bug->steps;
|
||||
?>
|
||||
</div>
|
||||
</fieldset>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php include '../../common/view/mail.html.php';?></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
+286
-286
@@ -1,286 +1,286 @@
|
||||
<?php
|
||||
/**
|
||||
* The view file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<div id='titlebar'>
|
||||
<div id='main' <?php if($bug->deleted) echo "class='deleted'";?>>BUG #<?php echo $bug->id . ' ' . $bug->title;?></div>
|
||||
<div>
|
||||
<?php
|
||||
$browseLink = $app->session->bugList != false ? $app->session->bugList : inlink('browse', "productID=$bug->product");
|
||||
$params = "bugID=$bug->id";
|
||||
$copyParams = "productID=$productID&extras=bugID=$bug->id";
|
||||
$convertParams = "productID=$productID&moduleID=0&from=bug&bugID=$bug->id";
|
||||
if(!$bug->deleted)
|
||||
{
|
||||
ob_start();
|
||||
common::printIcon('bug', 'confirmBug', $params, $bug);
|
||||
common::printIcon('bug', 'assignTo', $params);
|
||||
common::printIcon('bug', 'resolve', $params, $bug);
|
||||
common::printIcon('bug', 'close', $params, $bug);
|
||||
common::printIcon('bug', 'activate', $params, $bug);
|
||||
|
||||
common::printIcon('bug', 'toStory', "product=$bug->product&module=0&story=0&project=0&bugID=$bug->id", $bug, 'button', 'toStory');
|
||||
common::printIcon('bug', 'createCase', $convertParams, '', 'button', 'createCase');
|
||||
|
||||
common::printDivider();
|
||||
common::printIcon('bug', 'edit', $params);
|
||||
common::printCommentIcon('bug');
|
||||
common::printIcon('bug', 'create', $copyParams, '', 'button', 'copy');
|
||||
common::printIcon('bug', 'delete', $params, '', 'button', '', 'hiddenwin');
|
||||
|
||||
common::printDivider();
|
||||
common::printRPN($browseLink, $preAndNext);
|
||||
|
||||
$actionLinks = ob_get_contents();
|
||||
ob_end_clean();
|
||||
echo $actionLinks;
|
||||
}
|
||||
else
|
||||
{
|
||||
common::printRPN($browseLink);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table class='cont-rt5'>
|
||||
<tr valign='top'>
|
||||
<td>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendSteps;?></legend>
|
||||
<div class='content'><?php echo str_replace('<p>[', '<p class="stepTitle">[', $bug->steps);?></div>
|
||||
</fieldset>
|
||||
<?php echo $this->fetch('file', 'printFiles', array('files' => $bug->files, 'fieldset' => 'true'));?>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
<div class='a-center actionlink'><?php if(!$bug->deleted) echo $actionLinks;?></div>
|
||||
<div id='comment' class='hidden'>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->comment;?></legend>
|
||||
<form method='post' action='<?php echo inlink('edit', "bugID=$bug->id&comment=true")?>'>
|
||||
<table align='center' class='table-1'>
|
||||
<tr><td><?php echo html::textarea('comment', '',"rows='5' class='w-p100'");?></td></tr>
|
||||
<tr><td><?php echo html::submitButton() . html::resetButton();?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
</fieldset>
|
||||
</div>
|
||||
</td>
|
||||
<td class='divider'></td>
|
||||
<td class='side'>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendBasicInfo;?></legend>
|
||||
<table class='table-1 a-left'>
|
||||
<tr valign='middle'>
|
||||
<th class='rowhead'><?php echo $lang->bug->product;?></th>
|
||||
<td><?php if(!common::printLink('bug', 'browse', "productID=$bug->product", $productName)) echo $productName;?>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->module;?></th>
|
||||
<td>
|
||||
<?php
|
||||
if(empty($modulePath))
|
||||
{
|
||||
echo "/";
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach($modulePath as $key => $module)
|
||||
{
|
||||
if(!common::printLink('bug', 'browse', "productID=$bug->product&browseType=byModule¶m=$module->id", $module->name)) echo $module->name;
|
||||
if(isset($modulePath[$key + 1])) echo $lang->arrow;
|
||||
}
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->type;?></td>
|
||||
<td><?php if(isset($lang->bug->typeList[$bug->type])) echo $lang->bug->typeList[$bug->type]; else echo $bug->type;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->severity;?></td>
|
||||
<td><strong><?php echo $lang->bug->severityList[$bug->severity];?></strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->pri;?></td>
|
||||
<td><strong><?php echo $lang->bug->priList[$bug->pri];?></strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->status;?></td>
|
||||
<td><strong><?php echo $lang->bug->statusList[$bug->status];?></strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->activatedCount;?></td>
|
||||
<td><?php echo $bug->activatedCount;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->confirmed;?></td>
|
||||
<td><?php echo $lang->bug->confirmedList[$bug->confirmed];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->lblAssignedTo;?></td>
|
||||
<td><?php if($bug->assignedTo) echo $users[$bug->assignedTo] . $lang->at . $bug->assignedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->os;?></td>
|
||||
<td><?php echo $lang->bug->osList[$bug->os];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->browser;?></td>
|
||||
<td><?php echo $lang->bug->browserList[$bug->browser];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->keywords;?></td>
|
||||
<td><?php echo $bug->keywords;?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->case;?></legend>
|
||||
<table class='table-1 a-left'>
|
||||
<tr>
|
||||
<td class='rowhead w-p20'><?php echo $lang->bug->fromCase;?></td>
|
||||
<td><?php if($bug->case) echo html::a($this->createLink('case', 'view', "caseID=$bug->case"), $bug->caseTitle);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" class='rowhead w-p20'><?php echo $lang->bug->toCase;?></td>
|
||||
<td>
|
||||
<?php
|
||||
foreach($bug->toCases as $caseID => $case)
|
||||
{
|
||||
echo '<p style="margin-bottom:0;">' . html::a($this->createLink('testcase', 'view', "caseID=$caseID"), $case) . '</p>';
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendLife;?></legend>
|
||||
<table class='table-1 a-left fixed'>
|
||||
<tr>
|
||||
<th class='rowhead w-p20'><?php echo $lang->bug->openedBy;?></th>
|
||||
<td> <?php echo $users[$bug->openedBy] . $lang->at . $bug->openedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->openedBuild;?></th>
|
||||
<td>
|
||||
<?php
|
||||
if($bug->openedBuild)
|
||||
{
|
||||
$openedBuilds = explode(',', $bug->openedBuild);
|
||||
foreach($openedBuilds as $openedBuild) isset($builds[$openedBuild]) ? print($builds[$openedBuild] . '<br />') : print($openedBuild . '<br />');
|
||||
}
|
||||
else
|
||||
{
|
||||
echo $bug->openedBuild;
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->lblResolved;?></th>
|
||||
<td><?php if($bug->resolvedBy) echo $users[$bug->resolvedBy] . $lang->at . $bug->resolvedDate;?>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->resolvedBuild;?></th>
|
||||
<td><?php if(isset($builds[$bug->resolvedBuild])) echo $builds[$bug->resolvedBuild]; else echo $bug->resolvedBuild;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->resolution;?></th>
|
||||
<td>
|
||||
<?php
|
||||
echo $lang->bug->resolutionList[$bug->resolution];
|
||||
if(isset($bug->duplicateBugTitle)) echo " #$bug->duplicateBug:" . html::a($this->createLink('bug', 'view', "bugID=$bug->duplicateBug"), $bug->duplicateBugTitle);
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->closedBy;?></th>
|
||||
<td><?php if($bug->closedBy) echo $users[$bug->closedBy] . $lang->at . $bug->closedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->lblLastEdited;?></th>
|
||||
<td><?php if($bug->lastEditedBy) echo $users[$bug->lastEditedBy] . $lang->at . $bug->lastEditedDate?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendPrjStoryTask;?></legend>
|
||||
<table class='table-1 a-left fixed'>
|
||||
<tr>
|
||||
<td class='rowhead w-p20'><?php echo $lang->bug->project;?></td>
|
||||
<td><?php if($bug->project) echo html::a($this->createLink('project', 'browse', "projectid=$bug->project"), $bug->projectName);?></td>
|
||||
</tr>
|
||||
<tr class='nofixed'>
|
||||
<td class='rowhead'><?php echo $lang->bug->story;?></td>
|
||||
<td>
|
||||
<?php
|
||||
if($bug->story) echo html::a($this->createLink('story', 'view', "storyID=$bug->story"), "#$bug->story $bug->storyTitle");
|
||||
if($bug->storyStatus == 'active' and $bug->latestStoryVersion > $bug->storyVersion)
|
||||
{
|
||||
echo "(<span class='warning'>{$lang->story->changed}</span> ";
|
||||
echo html::a($this->createLink('bug', 'confirmStoryChange', "bugID=$bug->id"), $lang->confirm, 'hiddenwin');
|
||||
echo ")";
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->task;?></td>
|
||||
<td><?php if($bug->task) echo html::a($this->createLink('task', 'view', "taskID=$bug->task"), $bug->taskName);?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendMisc;?></legend>
|
||||
<table class='table-1 a-left fixed'>
|
||||
<tr>
|
||||
<td class='rowhead w-p20'><?php echo $lang->bug->mailto;?></td>
|
||||
<td><?php $mailto = explode(',', str_replace(' ', '', $bug->mailto)); foreach($mailto as $account) echo ' ' . $users[$account]; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->linkBug;?></td>
|
||||
<td>
|
||||
<?php
|
||||
if(isset($bug->linkBugTitles))
|
||||
{
|
||||
foreach($bug->linkBugTitles as $linkBugID => $linkBugTitle)
|
||||
{
|
||||
echo html::a($this->createLink('bug', 'view', "bugID=$linkBugID"), "#$linkBugID $linkBugTitle", '_blank') . '<br />';
|
||||
}
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->case;?></td>
|
||||
<td><?php if(isset($bug->caseTitle)) echo html::a($this->createLink('testcase', 'view', "caseID=$bug->case"), "#$bug->case $bug->caseTitle", '_blank');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->toStory;?></td>
|
||||
<td><?php if($bug->toStory != 0) echo html::a($this->createLink('story', 'view', "storyID=$bug->toStory"), "#$bug->toStory $bug->toStoryTitle", '_blank');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->toTask;?></td>
|
||||
<td><?php if($bug->toTask != 0) echo html::a($this->createLink('task', 'view', "taskID=$bug->toTask"), "#$bug->toTask $bug->toTaskTitle", '_blank');?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/syntaxhighlighter.html.php';?>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The view file of bug module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package bug
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<div id='titlebar'>
|
||||
<div id='main' <?php if($bug->deleted) echo "class='deleted'";?>>BUG #<?php echo $bug->id . ' ' . $bug->title;?></div>
|
||||
<div>
|
||||
<?php
|
||||
$browseLink = $app->session->bugList != false ? $app->session->bugList : inlink('browse', "productID=$bug->product");
|
||||
$params = "bugID=$bug->id";
|
||||
$copyParams = "productID=$productID&extras=bugID=$bug->id";
|
||||
$convertParams = "productID=$productID&moduleID=0&from=bug&bugID=$bug->id";
|
||||
if(!$bug->deleted)
|
||||
{
|
||||
ob_start();
|
||||
common::printIcon('bug', 'confirmBug', $params, $bug);
|
||||
common::printIcon('bug', 'assignTo', $params);
|
||||
common::printIcon('bug', 'resolve', $params, $bug);
|
||||
common::printIcon('bug', 'close', $params, $bug);
|
||||
common::printIcon('bug', 'activate', $params, $bug);
|
||||
|
||||
common::printIcon('bug', 'toStory', "product=$bug->product&module=0&story=0&project=0&bugID=$bug->id", $bug, 'button', 'toStory');
|
||||
common::printIcon('bug', 'createCase', $convertParams, '', 'button', 'createCase');
|
||||
|
||||
common::printDivider();
|
||||
common::printIcon('bug', 'edit', $params);
|
||||
common::printCommentIcon('bug');
|
||||
common::printIcon('bug', 'create', $copyParams, '', 'button', 'copy');
|
||||
common::printIcon('bug', 'delete', $params, '', 'button', '', 'hiddenwin');
|
||||
|
||||
common::printDivider();
|
||||
common::printRPN($browseLink, $preAndNext);
|
||||
|
||||
$actionLinks = ob_get_contents();
|
||||
ob_end_clean();
|
||||
echo $actionLinks;
|
||||
}
|
||||
else
|
||||
{
|
||||
common::printRPN($browseLink);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table class='cont-rt5'>
|
||||
<tr valign='top'>
|
||||
<td>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendSteps;?></legend>
|
||||
<div class='content'><?php echo str_replace('<p>[', '<p class="stepTitle">[', $bug->steps);?></div>
|
||||
</fieldset>
|
||||
<?php echo $this->fetch('file', 'printFiles', array('files' => $bug->files, 'fieldset' => 'true'));?>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
<div class='a-center actionlink'><?php if(!$bug->deleted) echo $actionLinks;?></div>
|
||||
<div id='comment' class='hidden'>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->comment;?></legend>
|
||||
<form method='post' action='<?php echo inlink('edit', "bugID=$bug->id&comment=true")?>'>
|
||||
<table align='center' class='table-1'>
|
||||
<tr><td><?php echo html::textarea('comment', '',"rows='5' class='w-p100'");?></td></tr>
|
||||
<tr><td><?php echo html::submitButton() . html::resetButton();?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
</fieldset>
|
||||
</div>
|
||||
</td>
|
||||
<td class='divider'></td>
|
||||
<td class='side'>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendBasicInfo;?></legend>
|
||||
<table class='table-1 a-left'>
|
||||
<tr valign='middle'>
|
||||
<th class='rowhead'><?php echo $lang->bug->product;?></th>
|
||||
<td><?php if(!common::printLink('bug', 'browse', "productID=$bug->product", $productName)) echo $productName;?>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->module;?></th>
|
||||
<td>
|
||||
<?php
|
||||
if(empty($modulePath))
|
||||
{
|
||||
echo "/";
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach($modulePath as $key => $module)
|
||||
{
|
||||
if(!common::printLink('bug', 'browse', "productID=$bug->product&browseType=byModule¶m=$module->id", $module->name)) echo $module->name;
|
||||
if(isset($modulePath[$key + 1])) echo $lang->arrow;
|
||||
}
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->type;?></td>
|
||||
<td><?php if(isset($lang->bug->typeList[$bug->type])) echo $lang->bug->typeList[$bug->type]; else echo $bug->type;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->severity;?></td>
|
||||
<td><strong><?php echo $lang->bug->severityList[$bug->severity];?></strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->pri;?></td>
|
||||
<td><strong><?php echo $lang->bug->priList[$bug->pri];?></strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->status;?></td>
|
||||
<td><strong><?php echo $lang->bug->statusList[$bug->status];?></strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->activatedCount;?></td>
|
||||
<td><?php echo $bug->activatedCount;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->confirmed;?></td>
|
||||
<td><?php echo $lang->bug->confirmedList[$bug->confirmed];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->lblAssignedTo;?></td>
|
||||
<td><?php if($bug->assignedTo) echo $users[$bug->assignedTo] . $lang->at . $bug->assignedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->os;?></td>
|
||||
<td><?php echo $lang->bug->osList[$bug->os];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->browser;?></td>
|
||||
<td><?php echo $lang->bug->browserList[$bug->browser];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->keywords;?></td>
|
||||
<td><?php echo $bug->keywords;?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->case;?></legend>
|
||||
<table class='table-1 a-left'>
|
||||
<tr>
|
||||
<td class='rowhead w-p20'><?php echo $lang->bug->fromCase;?></td>
|
||||
<td><?php if($bug->case) echo html::a($this->createLink('case', 'view', "caseID=$bug->case"), $bug->caseTitle);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" class='rowhead w-p20'><?php echo $lang->bug->toCase;?></td>
|
||||
<td>
|
||||
<?php
|
||||
foreach($bug->toCases as $caseID => $case)
|
||||
{
|
||||
echo '<p style="margin-bottom:0;">' . html::a($this->createLink('testcase', 'view', "caseID=$caseID"), $case) . '</p>';
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendLife;?></legend>
|
||||
<table class='table-1 a-left fixed'>
|
||||
<tr>
|
||||
<th class='rowhead w-p20'><?php echo $lang->bug->openedBy;?></th>
|
||||
<td> <?php echo $users[$bug->openedBy] . $lang->at . $bug->openedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->openedBuild;?></th>
|
||||
<td>
|
||||
<?php
|
||||
if($bug->openedBuild)
|
||||
{
|
||||
$openedBuilds = explode(',', $bug->openedBuild);
|
||||
foreach($openedBuilds as $openedBuild) isset($builds[$openedBuild]) ? print($builds[$openedBuild] . '<br />') : print($openedBuild . '<br />');
|
||||
}
|
||||
else
|
||||
{
|
||||
echo $bug->openedBuild;
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->lblResolved;?></th>
|
||||
<td><?php if($bug->resolvedBy) echo $users[$bug->resolvedBy] . $lang->at . $bug->resolvedDate;?>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->resolvedBuild;?></th>
|
||||
<td><?php if(isset($builds[$bug->resolvedBuild])) echo $builds[$bug->resolvedBuild]; else echo $bug->resolvedBuild;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->resolution;?></th>
|
||||
<td>
|
||||
<?php
|
||||
echo $lang->bug->resolutionList[$bug->resolution];
|
||||
if(isset($bug->duplicateBugTitle)) echo " #$bug->duplicateBug:" . html::a($this->createLink('bug', 'view', "bugID=$bug->duplicateBug"), $bug->duplicateBugTitle);
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->closedBy;?></th>
|
||||
<td><?php if($bug->closedBy) echo $users[$bug->closedBy] . $lang->at . $bug->closedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->lblLastEdited;?></th>
|
||||
<td><?php if($bug->lastEditedBy) echo $users[$bug->lastEditedBy] . $lang->at . $bug->lastEditedDate?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendPrjStoryTask;?></legend>
|
||||
<table class='table-1 a-left fixed'>
|
||||
<tr>
|
||||
<td class='rowhead w-p20'><?php echo $lang->bug->project;?></td>
|
||||
<td><?php if($bug->project) echo html::a($this->createLink('project', 'browse', "projectid=$bug->project"), $bug->projectName);?></td>
|
||||
</tr>
|
||||
<tr class='nofixed'>
|
||||
<td class='rowhead'><?php echo $lang->bug->story;?></td>
|
||||
<td>
|
||||
<?php
|
||||
if($bug->story) echo html::a($this->createLink('story', 'view', "storyID=$bug->story"), "#$bug->story $bug->storyTitle");
|
||||
if($bug->storyStatus == 'active' and $bug->latestStoryVersion > $bug->storyVersion)
|
||||
{
|
||||
echo "(<span class='warning'>{$lang->story->changed}</span> ";
|
||||
echo html::a($this->createLink('bug', 'confirmStoryChange', "bugID=$bug->id"), $lang->confirm, 'hiddenwin');
|
||||
echo ")";
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->task;?></td>
|
||||
<td><?php if($bug->task) echo html::a($this->createLink('task', 'view', "taskID=$bug->task"), $bug->taskName);?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->bug->legendMisc;?></legend>
|
||||
<table class='table-1 a-left fixed'>
|
||||
<tr>
|
||||
<td class='rowhead w-p20'><?php echo $lang->bug->mailto;?></td>
|
||||
<td><?php $mailto = explode(',', str_replace(' ', '', $bug->mailto)); foreach($mailto as $account) echo ' ' . $users[$account]; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->linkBug;?></td>
|
||||
<td>
|
||||
<?php
|
||||
if(isset($bug->linkBugTitles))
|
||||
{
|
||||
foreach($bug->linkBugTitles as $linkBugID => $linkBugTitle)
|
||||
{
|
||||
echo html::a($this->createLink('bug', 'view', "bugID=$linkBugID"), "#$linkBugID $linkBugTitle", '_blank') . '<br />';
|
||||
}
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->case;?></td>
|
||||
<td><?php if(isset($bug->caseTitle)) echo html::a($this->createLink('testcase', 'view', "caseID=$bug->case"), "#$bug->case $bug->caseTitle", '_blank');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->toStory;?></td>
|
||||
<td><?php if($bug->toStory != 0) echo html::a($this->createLink('story', 'view', "storyID=$bug->toStory"), "#$bug->toStory $bug->toStoryTitle", '_blank');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='rowhead'><?php echo $lang->bug->toTask;?></td>
|
||||
<td><?php if($bug->toTask != 0) echo html::a($this->createLink('task', 'view', "taskID=$bug->toTask"), "#$bug->toTask $bug->toTaskTitle", '_blank');?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/syntaxhighlighter.html.php';?>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
+192
-192
@@ -1,192 +1,192 @@
|
||||
<?php
|
||||
/**
|
||||
* The control file of build module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package build
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class build extends control
|
||||
{
|
||||
/**
|
||||
* Create a buld.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create($projectID)
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$buildID = $this->build->create($projectID);
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
$this->loadModel('action')->create('build', $buildID, 'opened');
|
||||
die(js::locate($this->createLink('project', 'build', "project=$projectID"), 'parent'));
|
||||
}
|
||||
|
||||
/* Load these models. */
|
||||
$this->loadModel('story');
|
||||
$this->loadModel('bug');
|
||||
$this->loadModel('task');
|
||||
$this->loadModel('project');
|
||||
$this->loadModel('user');
|
||||
|
||||
/* Set menu. */
|
||||
$this->project->setMenu($this->project->getPairs(), $projectID);
|
||||
|
||||
/* Get stories and bugs. */
|
||||
$orderBy = 'status_asc, stage_asc, id_desc';
|
||||
$stories = $this->story->getProjectStories($projectID, $orderBy);
|
||||
$bugs = $this->bug->getProjectBugs($projectID);
|
||||
|
||||
/* Assign. */
|
||||
$this->view->header->title = $this->lang->build->create;
|
||||
$this->view->products = $this->project->getProducts($projectID);
|
||||
$this->view->projectID = $projectID;
|
||||
$this->view->users = $this->user->getPairs();
|
||||
$this->view->stories = $stories;
|
||||
$this->view->bugs = $bugs;
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit a build.
|
||||
*
|
||||
* @param int $buildID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function edit($buildID)
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$changes = $this->build->update($buildID);
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
if($changes)
|
||||
{
|
||||
$actionID = $this->loadModel('action')->create('build', $buildID, 'edited');
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
}
|
||||
die(js::locate(inlink('view', "buildID=$buildID"), 'parent'));
|
||||
}
|
||||
|
||||
$this->loadModel('story');
|
||||
$this->loadModel('bug');
|
||||
$this->loadModel('project');
|
||||
|
||||
/* Set menu. */
|
||||
$build = $this->build->getById((int)$buildID);
|
||||
$this->project->setMenu($this->project->getPairs(), $build->project);
|
||||
|
||||
/* Get stories and bugs. */
|
||||
$orderBy = 'status_asc, stage_asc, id_desc';
|
||||
$stories = $this->story->getProjectStories($build->project, $orderBy);
|
||||
$bugs = $this->bug->getProjectBugs($build->project);
|
||||
|
||||
/* Assign. */
|
||||
$this->view->header->title = $this->lang->build->edit;
|
||||
$this->view->position[] = $this->lang->build->edit;
|
||||
$this->view->products = $this->project->getProducts($build->project);
|
||||
$this->view->users = $this->loadModel('user')->getPairs();
|
||||
$this->view->build = $build;
|
||||
$this->view->stories = $stories;
|
||||
$this->view->bugs = $bugs;
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* View a build.
|
||||
*
|
||||
* @param int $buildID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function view($buildID)
|
||||
{
|
||||
$this->loadModel('story');
|
||||
$this->loadModel('bug');
|
||||
|
||||
/* Set menu. */
|
||||
$build = $this->build->getById((int)$buildID, true);
|
||||
if(!$build) die(js::error($this->lang->notFound) . js::locate('back'));
|
||||
|
||||
$stories = $this->dao->select('*')->from(TABLE_STORY)->where('id')->in($build->stories)->fetchAll();
|
||||
$this->loadModel('common')->saveQueryCondition($this->dao->get(), 'story');
|
||||
|
||||
$bugs = $this->dao->select('*')->from(TABLE_BUG)->where('id')->in($build->bugs)->fetchAll();
|
||||
$this->loadModel('common')->saveQueryCondition($this->dao->get(), 'bug');
|
||||
|
||||
$this->loadModel('project')->setMenu($this->project->getPairs(), $build->project);
|
||||
|
||||
/* Assign. */
|
||||
$projects = $this->project->getPairs();
|
||||
$this->view->header->title = "BUILD #$build->id $build->name - " . $projects[$build->project];
|
||||
$this->view->position[] = $this->lang->build->view;
|
||||
$this->view->products = $this->project->getProducts($build->project);
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noletter');
|
||||
$this->view->build = $build;
|
||||
$this->view->stories = $stories;
|
||||
$this->view->bugs = $bugs;
|
||||
$this->view->actions = $this->loadModel('action')->getList('build', $buildID);
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a build.
|
||||
*
|
||||
* @param int $buildID
|
||||
* @param string $confirm yes|noe
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function delete($buildID, $confirm = 'no')
|
||||
{
|
||||
if($confirm == 'no')
|
||||
{
|
||||
die(js::confirm($this->lang->build->confirmDelete, $this->createLink('build', 'delete', "buildID=$buildID&confirm=yes")));
|
||||
}
|
||||
else
|
||||
{
|
||||
$build = $this->build->getById($buildID);
|
||||
$this->build->delete(TABLE_BUILD, $buildID);
|
||||
die(js::locate($this->createLink('project', 'build', "projectID=$build->project"), 'parent'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* AJAX: get builds of a product in html select.
|
||||
*
|
||||
* @param int $productID
|
||||
* @param string $varName the name of the select object to create
|
||||
* @param string $build build to selected
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function ajaxGetProductBuilds($productID, $varName, $build = '')
|
||||
{
|
||||
if($varName == 'openedBuild') die(html::select($varName . '[]', $this->build->getProductBuildPairs($productID, 'noempty'), $build, 'size=4 class=select-3 multiple'));
|
||||
if($varName == 'resolvedBuild') die(html::select($varName, $this->build->getProductBuildPairs($productID, 'noempty'), $build, 'class=select-3'));
|
||||
}
|
||||
|
||||
/**
|
||||
* AJAX: get builds of a project in html select.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @param string $varName the name of the select object to create
|
||||
* @param string $build build to selected
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function ajaxGetProjectBuilds($projectID, $productID, $varName, $build = '')
|
||||
{
|
||||
if($varName == 'openedBuild') die(html::select($varName . '[]', $this->build->getProjectBuildPairs($projectID, $productID, 'noempty'), $build, 'size=4 class=select-3 multiple'));
|
||||
if($varName == 'resolvedBuild') die(html::select($varName, $this->build->getProjectBuildPairs($projectID, $productID, 'noempty'), $build, 'class=select-3'));
|
||||
if($varName == 'testTaskBuild') die(html::select('build', $this->build->getProjectBuildPairs($projectID, $productID, 'noempty'), $build, 'class=select-3'));
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The control file of build module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package build
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class build extends control
|
||||
{
|
||||
/**
|
||||
* Create a buld.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create($projectID)
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$buildID = $this->build->create($projectID);
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
$this->loadModel('action')->create('build', $buildID, 'opened');
|
||||
die(js::locate($this->createLink('project', 'build', "project=$projectID"), 'parent'));
|
||||
}
|
||||
|
||||
/* Load these models. */
|
||||
$this->loadModel('story');
|
||||
$this->loadModel('bug');
|
||||
$this->loadModel('task');
|
||||
$this->loadModel('project');
|
||||
$this->loadModel('user');
|
||||
|
||||
/* Set menu. */
|
||||
$this->project->setMenu($this->project->getPairs(), $projectID);
|
||||
|
||||
/* Get stories and bugs. */
|
||||
$orderBy = 'status_asc, stage_asc, id_desc';
|
||||
$stories = $this->story->getProjectStories($projectID, $orderBy);
|
||||
$bugs = $this->bug->getProjectBugs($projectID);
|
||||
|
||||
/* Assign. */
|
||||
$this->view->header->title = $this->lang->build->create;
|
||||
$this->view->products = $this->project->getProducts($projectID);
|
||||
$this->view->projectID = $projectID;
|
||||
$this->view->users = $this->user->getPairs();
|
||||
$this->view->stories = $stories;
|
||||
$this->view->bugs = $bugs;
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit a build.
|
||||
*
|
||||
* @param int $buildID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function edit($buildID)
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$changes = $this->build->update($buildID);
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
if($changes)
|
||||
{
|
||||
$actionID = $this->loadModel('action')->create('build', $buildID, 'edited');
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
}
|
||||
die(js::locate(inlink('view', "buildID=$buildID"), 'parent'));
|
||||
}
|
||||
|
||||
$this->loadModel('story');
|
||||
$this->loadModel('bug');
|
||||
$this->loadModel('project');
|
||||
|
||||
/* Set menu. */
|
||||
$build = $this->build->getById((int)$buildID);
|
||||
$this->project->setMenu($this->project->getPairs(), $build->project);
|
||||
|
||||
/* Get stories and bugs. */
|
||||
$orderBy = 'status_asc, stage_asc, id_desc';
|
||||
$stories = $this->story->getProjectStories($build->project, $orderBy);
|
||||
$bugs = $this->bug->getProjectBugs($build->project);
|
||||
|
||||
/* Assign. */
|
||||
$this->view->header->title = $this->lang->build->edit;
|
||||
$this->view->position[] = $this->lang->build->edit;
|
||||
$this->view->products = $this->project->getProducts($build->project);
|
||||
$this->view->users = $this->loadModel('user')->getPairs();
|
||||
$this->view->build = $build;
|
||||
$this->view->stories = $stories;
|
||||
$this->view->bugs = $bugs;
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* View a build.
|
||||
*
|
||||
* @param int $buildID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function view($buildID)
|
||||
{
|
||||
$this->loadModel('story');
|
||||
$this->loadModel('bug');
|
||||
|
||||
/* Set menu. */
|
||||
$build = $this->build->getById((int)$buildID, true);
|
||||
if(!$build) die(js::error($this->lang->notFound) . js::locate('back'));
|
||||
|
||||
$stories = $this->dao->select('*')->from(TABLE_STORY)->where('id')->in($build->stories)->fetchAll();
|
||||
$this->loadModel('common')->saveQueryCondition($this->dao->get(), 'story');
|
||||
|
||||
$bugs = $this->dao->select('*')->from(TABLE_BUG)->where('id')->in($build->bugs)->fetchAll();
|
||||
$this->loadModel('common')->saveQueryCondition($this->dao->get(), 'bug');
|
||||
|
||||
$this->loadModel('project')->setMenu($this->project->getPairs(), $build->project);
|
||||
|
||||
/* Assign. */
|
||||
$projects = $this->project->getPairs();
|
||||
$this->view->header->title = "BUILD #$build->id $build->name - " . $projects[$build->project];
|
||||
$this->view->position[] = $this->lang->build->view;
|
||||
$this->view->products = $this->project->getProducts($build->project);
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noletter');
|
||||
$this->view->build = $build;
|
||||
$this->view->stories = $stories;
|
||||
$this->view->bugs = $bugs;
|
||||
$this->view->actions = $this->loadModel('action')->getList('build', $buildID);
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a build.
|
||||
*
|
||||
* @param int $buildID
|
||||
* @param string $confirm yes|noe
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function delete($buildID, $confirm = 'no')
|
||||
{
|
||||
if($confirm == 'no')
|
||||
{
|
||||
die(js::confirm($this->lang->build->confirmDelete, $this->createLink('build', 'delete', "buildID=$buildID&confirm=yes")));
|
||||
}
|
||||
else
|
||||
{
|
||||
$build = $this->build->getById($buildID);
|
||||
$this->build->delete(TABLE_BUILD, $buildID);
|
||||
die(js::locate($this->createLink('project', 'build', "projectID=$build->project"), 'parent'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* AJAX: get builds of a product in html select.
|
||||
*
|
||||
* @param int $productID
|
||||
* @param string $varName the name of the select object to create
|
||||
* @param string $build build to selected
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function ajaxGetProductBuilds($productID, $varName, $build = '')
|
||||
{
|
||||
if($varName == 'openedBuild') die(html::select($varName . '[]', $this->build->getProductBuildPairs($productID, 'noempty'), $build, 'size=4 class=select-3 multiple'));
|
||||
if($varName == 'resolvedBuild') die(html::select($varName, $this->build->getProductBuildPairs($productID, 'noempty'), $build, 'class=select-3'));
|
||||
}
|
||||
|
||||
/**
|
||||
* AJAX: get builds of a project in html select.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @param string $varName the name of the select object to create
|
||||
* @param string $build build to selected
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function ajaxGetProjectBuilds($projectID, $productID, $varName, $build = '')
|
||||
{
|
||||
if($varName == 'openedBuild') die(html::select($varName . '[]', $this->build->getProjectBuildPairs($projectID, $productID, 'noempty'), $build, 'size=4 class=select-3 multiple'));
|
||||
if($varName == 'resolvedBuild') die(html::select($varName, $this->build->getProjectBuildPairs($projectID, $productID, 'noempty'), $build, 'class=select-3'));
|
||||
if($varName == 'testTaskBuild') die(html::select('build', $this->build->getProjectBuildPairs($projectID, $productID, 'noempty'), $build, 'class=select-3'));
|
||||
}
|
||||
}
|
||||
|
||||
+42
-42
@@ -1,42 +1,42 @@
|
||||
<?php
|
||||
/**
|
||||
* The build module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package build
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->build->common = 'Build';
|
||||
$lang->build->create = "Create";
|
||||
$lang->build->edit = "Edit";
|
||||
$lang->build->delete = "Delete";
|
||||
$lang->build->view = "Info";
|
||||
$lang->build->ajaxGetProductBuilds = 'API:Product builds';
|
||||
$lang->build->ajaxGetProjectBuilds = 'API:Project builds';
|
||||
|
||||
$lang->build->confirmDelete = "Are sure to delete this build?";
|
||||
|
||||
$lang->build->basicInfo='Basic Info';
|
||||
|
||||
$lang->build->id = 'ID';
|
||||
$lang->build->product = 'Product';
|
||||
$lang->build->project = 'Project';
|
||||
$lang->build->name = 'Name';
|
||||
$lang->build->date = 'Build date';
|
||||
$lang->build->builder = 'Builder';
|
||||
$lang->build->scmPath = 'Source code path';
|
||||
$lang->build->filePath = 'Package file path';
|
||||
$lang->build->desc = 'Desc';
|
||||
$lang->build->linkStoriesAndBugs = 'stories and bugs';
|
||||
$lang->build->linkStories = 'Stories';
|
||||
$lang->build->linkBugs = 'Bugs';
|
||||
$lang->build->stories = 'Linked stories';
|
||||
$lang->build->bugs = 'Linked bugs';
|
||||
|
||||
$lang->build->finishStories = 'The total demand for a complete %s';
|
||||
$lang->build->resolvedBugs = 'The total solution of bug%s';
|
||||
|
||||
$lang->build->notice = "Please create a build in project view's build page.";
|
||||
<?php
|
||||
/**
|
||||
* The build module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package build
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->build->common = 'Build';
|
||||
$lang->build->create = "Create";
|
||||
$lang->build->edit = "Edit";
|
||||
$lang->build->delete = "Delete";
|
||||
$lang->build->view = "Info";
|
||||
$lang->build->ajaxGetProductBuilds = 'API:Product builds';
|
||||
$lang->build->ajaxGetProjectBuilds = 'API:Project builds';
|
||||
|
||||
$lang->build->confirmDelete = "Are sure to delete this build?";
|
||||
|
||||
$lang->build->basicInfo='Basic Info';
|
||||
|
||||
$lang->build->id = 'ID';
|
||||
$lang->build->product = 'Product';
|
||||
$lang->build->project = 'Project';
|
||||
$lang->build->name = 'Name';
|
||||
$lang->build->date = 'Build date';
|
||||
$lang->build->builder = 'Builder';
|
||||
$lang->build->scmPath = 'Source code path';
|
||||
$lang->build->filePath = 'Package file path';
|
||||
$lang->build->desc = 'Desc';
|
||||
$lang->build->linkStoriesAndBugs = 'stories and bugs';
|
||||
$lang->build->linkStories = 'Stories';
|
||||
$lang->build->linkBugs = 'Bugs';
|
||||
$lang->build->stories = 'Linked stories';
|
||||
$lang->build->bugs = 'Linked bugs';
|
||||
|
||||
$lang->build->finishStories = 'The total demand for a complete %s';
|
||||
$lang->build->resolvedBugs = 'The total solution of bug%s';
|
||||
|
||||
$lang->build->notice = "Please create a build in project view's build page.";
|
||||
|
||||
+42
-42
@@ -1,42 +1,42 @@
|
||||
<?php
|
||||
/**
|
||||
* The build module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package build
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->build->common = "Build";
|
||||
$lang->build->create = "创建版本";
|
||||
$lang->build->edit = "编辑版本";
|
||||
$lang->build->delete = "删除版本";
|
||||
$lang->build->view = "版本详情";
|
||||
$lang->build->ajaxGetProductBuilds = '接口:产品版本列表';
|
||||
$lang->build->ajaxGetProjectBuilds = '接口:项目版本列表';
|
||||
|
||||
$lang->build->confirmDelete = "您确认删除该版本吗?";
|
||||
|
||||
$lang->build->basicInfo ='基本信息';
|
||||
|
||||
$lang->build->id = 'ID';
|
||||
$lang->build->product = '产品';
|
||||
$lang->build->project = '项目';
|
||||
$lang->build->name = '名称编号';
|
||||
$lang->build->date = '打包日期';
|
||||
$lang->build->builder = '构建者';
|
||||
$lang->build->scmPath = '源代码地址';
|
||||
$lang->build->filePath = '存储地址';
|
||||
$lang->build->desc = '描述';
|
||||
$lang->build->linkStoriesAndBugs = '关联需求和Bug';
|
||||
$lang->build->linkStories = '相关需求';
|
||||
$lang->build->linkBugs = '相关Bug';
|
||||
$lang->build->stories = '已关联需求';
|
||||
$lang->build->bugs = '已关联Bug';
|
||||
|
||||
$lang->build->finishStories = '本次共完成需求%s个';
|
||||
$lang->build->resolvedBugs = '本次共解决Bug%s个';
|
||||
|
||||
$lang->build->notice = '版本请到[项目视图]-[版本]创建。';
|
||||
<?php
|
||||
/**
|
||||
* The build module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package build
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->build->common = "Build";
|
||||
$lang->build->create = "创建版本";
|
||||
$lang->build->edit = "编辑版本";
|
||||
$lang->build->delete = "删除版本";
|
||||
$lang->build->view = "版本详情";
|
||||
$lang->build->ajaxGetProductBuilds = '接口:产品版本列表';
|
||||
$lang->build->ajaxGetProjectBuilds = '接口:项目版本列表';
|
||||
|
||||
$lang->build->confirmDelete = "您确认删除该版本吗?";
|
||||
|
||||
$lang->build->basicInfo ='基本信息';
|
||||
|
||||
$lang->build->id = 'ID';
|
||||
$lang->build->product = '产品';
|
||||
$lang->build->project = '项目';
|
||||
$lang->build->name = '名称编号';
|
||||
$lang->build->date = '打包日期';
|
||||
$lang->build->builder = '构建者';
|
||||
$lang->build->scmPath = '源代码地址';
|
||||
$lang->build->filePath = '存储地址';
|
||||
$lang->build->desc = '描述';
|
||||
$lang->build->linkStoriesAndBugs = '关联需求和Bug';
|
||||
$lang->build->linkStories = '相关需求';
|
||||
$lang->build->linkBugs = '相关Bug';
|
||||
$lang->build->stories = '已关联需求';
|
||||
$lang->build->bugs = '已关联Bug';
|
||||
|
||||
$lang->build->finishStories = '本次共完成需求%s个';
|
||||
$lang->build->resolvedBugs = '本次共解决Bug%s个';
|
||||
|
||||
$lang->build->notice = '版本请到[项目视图]-[版本]创建。';
|
||||
|
||||
+42
-42
@@ -1,42 +1,42 @@
|
||||
<?php
|
||||
/**
|
||||
* The build module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package build
|
||||
* @version $Id: zh-tw.php 3309 2012-07-03 02:53:55Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->build->common = "Build";
|
||||
$lang->build->create = "創建版本";
|
||||
$lang->build->edit = "編輯版本";
|
||||
$lang->build->delete = "刪除版本";
|
||||
$lang->build->view = "版本詳情";
|
||||
$lang->build->ajaxGetProductBuilds = '介面:產品版本列表';
|
||||
$lang->build->ajaxGetProjectBuilds = '介面:項目版本列表';
|
||||
|
||||
$lang->build->confirmDelete = "您確認刪除該版本嗎?";
|
||||
|
||||
$lang->build->basicInfo ='基本信息';
|
||||
|
||||
$lang->build->id = 'ID';
|
||||
$lang->build->product = '產品';
|
||||
$lang->build->project = '項目';
|
||||
$lang->build->name = '名稱編號';
|
||||
$lang->build->date = '打包日期';
|
||||
$lang->build->builder = '構建者';
|
||||
$lang->build->scmPath = '原始碼地址';
|
||||
$lang->build->filePath = '存儲地址';
|
||||
$lang->build->desc = '描述';
|
||||
$lang->build->linkStoriesAndBugs = '關聯需求和Bug';
|
||||
$lang->build->linkStories = '相關需求';
|
||||
$lang->build->linkBugs = '相關Bug';
|
||||
$lang->build->stories = '已關聯需求';
|
||||
$lang->build->bugs = '已關聯Bug';
|
||||
|
||||
$lang->build->finishStories = '本次共完成需求%s個';
|
||||
$lang->build->resolvedBugs = '本次共解決Bug%s個';
|
||||
|
||||
$lang->build->notice = '版本請到[項目視圖]-[版本]創建。';
|
||||
<?php
|
||||
/**
|
||||
* The build module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package build
|
||||
* @version $Id: zh-tw.php 3309 2012-07-03 02:53:55Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->build->common = "Build";
|
||||
$lang->build->create = "創建版本";
|
||||
$lang->build->edit = "編輯版本";
|
||||
$lang->build->delete = "刪除版本";
|
||||
$lang->build->view = "版本詳情";
|
||||
$lang->build->ajaxGetProductBuilds = '介面:產品版本列表';
|
||||
$lang->build->ajaxGetProjectBuilds = '介面:項目版本列表';
|
||||
|
||||
$lang->build->confirmDelete = "您確認刪除該版本嗎?";
|
||||
|
||||
$lang->build->basicInfo ='基本信息';
|
||||
|
||||
$lang->build->id = 'ID';
|
||||
$lang->build->product = '產品';
|
||||
$lang->build->project = '項目';
|
||||
$lang->build->name = '名稱編號';
|
||||
$lang->build->date = '打包日期';
|
||||
$lang->build->builder = '構建者';
|
||||
$lang->build->scmPath = '原始碼地址';
|
||||
$lang->build->filePath = '存儲地址';
|
||||
$lang->build->desc = '描述';
|
||||
$lang->build->linkStoriesAndBugs = '關聯需求和Bug';
|
||||
$lang->build->linkStories = '相關需求';
|
||||
$lang->build->linkBugs = '相關Bug';
|
||||
$lang->build->stories = '已關聯需求';
|
||||
$lang->build->bugs = '已關聯Bug';
|
||||
|
||||
$lang->build->finishStories = '本次共完成需求%s個';
|
||||
$lang->build->resolvedBugs = '本次共解決Bug%s個';
|
||||
|
||||
$lang->build->notice = '版本請到[項目視圖]-[版本]創建。';
|
||||
|
||||
+154
-154
@@ -1,154 +1,154 @@
|
||||
<?php
|
||||
/**
|
||||
* The model file of build module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package build
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
class buildModel extends model
|
||||
{
|
||||
/**
|
||||
* Get build info.
|
||||
*
|
||||
* @param int $buildID
|
||||
* @param bool $setImgSize
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getByID($buildID, $setImgSize = false)
|
||||
{
|
||||
$build = $this->dao->select('t1.*, t2.name as projectName, t3.name as productName')
|
||||
->from(TABLE_BUILD)->alias('t1')
|
||||
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id')
|
||||
->leftJoin(TABLE_PRODUCT)->alias('t3')->on('t1.product = t3.id')
|
||||
->where('t1.id')->eq((int)$buildID)
|
||||
->fetch();
|
||||
if(!$build) return false;
|
||||
if($setImgSize) $build->desc = $this->loadModel('file')->setImgSize($build->desc);
|
||||
return $build;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get builds of a project.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getProjectBuilds($projectID)
|
||||
{
|
||||
return $this->dao->select('t1.*, t2.name as projectName, t3.name as productName')
|
||||
->from(TABLE_BUILD)->alias('t1')
|
||||
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id')
|
||||
->leftJoin(TABLE_PRODUCT)->alias('t3')->on('t1.product = t3.id')
|
||||
->where('t1.project')->eq((int)$projectID)
|
||||
->andWhere('t1.deleted')->eq(0)
|
||||
->orderBy('t1.date DESC, t1.id desc')
|
||||
->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get builds of a project in pairs.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @param int $productID
|
||||
* @param string $params noempty|notrunk, can be a set of them
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getProjectBuildPairs($projectID, $productID, $params = '')
|
||||
{
|
||||
$sysBuilds = array();
|
||||
if(strpos($params, 'noempty') === false) $sysBuilds = array('' => '');
|
||||
if(strpos($params, 'notrunk') === false) $sysBuilds = $sysBuilds + array('trunk' => 'Trunk');
|
||||
|
||||
$builds = $this->dao->select('id,name')->from(TABLE_BUILD)
|
||||
->where('project')->eq((int)$projectID)
|
||||
->beginIF($productID)->andWhere('product')->eq((int)$productID)->fi()
|
||||
->andWhere('deleted')->eq(0)
|
||||
->orderBy('date desc, id desc')->fetchPairs();
|
||||
if(!$builds) return $sysBuilds;
|
||||
$releases = $this->dao->select('build,name')->from(TABLE_RELEASE)
|
||||
->where('build')->in(array_keys($builds))
|
||||
->andWhere('deleted')->eq(0)
|
||||
->fetchPairs();
|
||||
foreach($releases as $buildID => $releaseName) $builds[$buildID] = $releaseName;
|
||||
return $sysBuilds + $builds;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get builds of a product in pairs.
|
||||
*
|
||||
* @param mix $products int|array
|
||||
* @param string $params noempty|notrunk, can be a set of them
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function getProductBuildPairs($products, $params = '')
|
||||
{
|
||||
$sysBuilds = array();
|
||||
if(strpos($params, 'noempty') === false) $sysBuilds = array('' => '');
|
||||
if(strpos($params, 'notrunk') === false) $sysBuilds = $sysBuilds + array('trunk' => 'Trunk');
|
||||
|
||||
$builds = $this->dao->select('id,name')->from(TABLE_BUILD)
|
||||
->where('product')->in($products)
|
||||
->andWhere('deleted')->eq(0)
|
||||
->orderBy('date desc, id desc')->fetchPairs();
|
||||
if(!$builds) return $sysBuilds;
|
||||
return $sysBuilds + $builds;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a build
|
||||
*
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create($projectID)
|
||||
{
|
||||
$build->stories = '';
|
||||
$build->bugs = '';
|
||||
|
||||
$build = fixer::input('post')->stripTags('name')
|
||||
->join('stories', ',')
|
||||
->join('bugs', ',')
|
||||
->remove('allchecker')
|
||||
->add('project', (int)$projectID)->get();
|
||||
$this->dao->insert(TABLE_BUILD)->data($build)->autoCheck()->batchCheck($this->config->build->create->requiredFields, 'notempty')->check('name','unique')->exec();
|
||||
if(!dao::isError()) return $this->dao->lastInsertID();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a build.
|
||||
*
|
||||
* @param int $buildID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function update($buildID)
|
||||
{
|
||||
$oldBuild = $this->getByID($buildID);
|
||||
$build = fixer::input('post')
|
||||
->stripTags('name')
|
||||
->setDefault('stories', '')
|
||||
->setDefault('bugs', '')
|
||||
->join('stories', ',')
|
||||
->join('bugs', ',')
|
||||
->remove('allchecker')
|
||||
->get();
|
||||
$this->dao->update(TABLE_BUILD)->data($build)
|
||||
->autoCheck()
|
||||
->batchCheck($this->config->build->edit->requiredFields, 'notempty')
|
||||
->where('id')->eq((int)$buildID)
|
||||
->check('name','unique', "id != $buildID")
|
||||
->exec();
|
||||
if(!dao::isError()) return common::createChanges($oldBuild, $build);
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The model file of build module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package build
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
class buildModel extends model
|
||||
{
|
||||
/**
|
||||
* Get build info.
|
||||
*
|
||||
* @param int $buildID
|
||||
* @param bool $setImgSize
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getByID($buildID, $setImgSize = false)
|
||||
{
|
||||
$build = $this->dao->select('t1.*, t2.name as projectName, t3.name as productName')
|
||||
->from(TABLE_BUILD)->alias('t1')
|
||||
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id')
|
||||
->leftJoin(TABLE_PRODUCT)->alias('t3')->on('t1.product = t3.id')
|
||||
->where('t1.id')->eq((int)$buildID)
|
||||
->fetch();
|
||||
if(!$build) return false;
|
||||
if($setImgSize) $build->desc = $this->loadModel('file')->setImgSize($build->desc);
|
||||
return $build;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get builds of a project.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getProjectBuilds($projectID)
|
||||
{
|
||||
return $this->dao->select('t1.*, t2.name as projectName, t3.name as productName')
|
||||
->from(TABLE_BUILD)->alias('t1')
|
||||
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id')
|
||||
->leftJoin(TABLE_PRODUCT)->alias('t3')->on('t1.product = t3.id')
|
||||
->where('t1.project')->eq((int)$projectID)
|
||||
->andWhere('t1.deleted')->eq(0)
|
||||
->orderBy('t1.date DESC, t1.id desc')
|
||||
->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get builds of a project in pairs.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @param int $productID
|
||||
* @param string $params noempty|notrunk, can be a set of them
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getProjectBuildPairs($projectID, $productID, $params = '')
|
||||
{
|
||||
$sysBuilds = array();
|
||||
if(strpos($params, 'noempty') === false) $sysBuilds = array('' => '');
|
||||
if(strpos($params, 'notrunk') === false) $sysBuilds = $sysBuilds + array('trunk' => 'Trunk');
|
||||
|
||||
$builds = $this->dao->select('id,name')->from(TABLE_BUILD)
|
||||
->where('project')->eq((int)$projectID)
|
||||
->beginIF($productID)->andWhere('product')->eq((int)$productID)->fi()
|
||||
->andWhere('deleted')->eq(0)
|
||||
->orderBy('date desc, id desc')->fetchPairs();
|
||||
if(!$builds) return $sysBuilds;
|
||||
$releases = $this->dao->select('build,name')->from(TABLE_RELEASE)
|
||||
->where('build')->in(array_keys($builds))
|
||||
->andWhere('deleted')->eq(0)
|
||||
->fetchPairs();
|
||||
foreach($releases as $buildID => $releaseName) $builds[$buildID] = $releaseName;
|
||||
return $sysBuilds + $builds;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get builds of a product in pairs.
|
||||
*
|
||||
* @param mix $products int|array
|
||||
* @param string $params noempty|notrunk, can be a set of them
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function getProductBuildPairs($products, $params = '')
|
||||
{
|
||||
$sysBuilds = array();
|
||||
if(strpos($params, 'noempty') === false) $sysBuilds = array('' => '');
|
||||
if(strpos($params, 'notrunk') === false) $sysBuilds = $sysBuilds + array('trunk' => 'Trunk');
|
||||
|
||||
$builds = $this->dao->select('id,name')->from(TABLE_BUILD)
|
||||
->where('product')->in($products)
|
||||
->andWhere('deleted')->eq(0)
|
||||
->orderBy('date desc, id desc')->fetchPairs();
|
||||
if(!$builds) return $sysBuilds;
|
||||
return $sysBuilds + $builds;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a build
|
||||
*
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create($projectID)
|
||||
{
|
||||
$build->stories = '';
|
||||
$build->bugs = '';
|
||||
|
||||
$build = fixer::input('post')->stripTags('name')
|
||||
->join('stories', ',')
|
||||
->join('bugs', ',')
|
||||
->remove('allchecker')
|
||||
->add('project', (int)$projectID)->get();
|
||||
$this->dao->insert(TABLE_BUILD)->data($build)->autoCheck()->batchCheck($this->config->build->create->requiredFields, 'notempty')->check('name','unique')->exec();
|
||||
if(!dao::isError()) return $this->dao->lastInsertID();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a build.
|
||||
*
|
||||
* @param int $buildID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function update($buildID)
|
||||
{
|
||||
$oldBuild = $this->getByID($buildID);
|
||||
$build = fixer::input('post')
|
||||
->stripTags('name')
|
||||
->setDefault('stories', '')
|
||||
->setDefault('bugs', '')
|
||||
->join('stories', ',')
|
||||
->join('bugs', ',')
|
||||
->remove('allchecker')
|
||||
->get();
|
||||
$this->dao->update(TABLE_BUILD)->data($build)
|
||||
->autoCheck()
|
||||
->batchCheck($this->config->build->edit->requiredFields, 'notempty')
|
||||
->where('id')->eq((int)$buildID)
|
||||
->check('name','unique', "id != $buildID")
|
||||
->exec();
|
||||
if(!dao::isError()) return common::createChanges($oldBuild, $build);
|
||||
}
|
||||
}
|
||||
|
||||
+132
-132
@@ -1,132 +1,132 @@
|
||||
<?php
|
||||
/**
|
||||
* The create view of build module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package build
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/datepicker.html.php';?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<form method='post' target='hiddenwin' id='dataform'>
|
||||
<table class='table-1 fixed'>
|
||||
<caption><?php echo $lang->build->create;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->product;?></th>
|
||||
<td><?php echo html::select('product', $products, '', "class='select-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->name;?></th>
|
||||
<td><?php echo html::input('name', '', "class='text-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->builder;?></th>
|
||||
<td><?php echo html::select('builder', $users, $app->user->account, 'class="select-3"');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->date;?></th>
|
||||
<td><?php echo html::input('date', helper::today(), "class='text-3 date'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->scmPath;?></th>
|
||||
<td><?php echo html::input('scmPath', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->filePath;?></th>
|
||||
<td><?php echo html::input('filePath', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->linkStoriesAndBugs;?></th>
|
||||
<td>
|
||||
<div class="w-p90">
|
||||
|
||||
<div class='half-left'>
|
||||
<table class='mainTable'>
|
||||
<tr style='border-bottom:none'>
|
||||
<td style='border-bottom:none; padding:0px'>
|
||||
<table class='headTable'>
|
||||
<caption><?php echo $lang->build->linkStories;?></caption>
|
||||
<tr>
|
||||
<th class='w-id a-left'> <?php echo html::selectAll('story', 'checkbox') . $lang->idAB;?></th>
|
||||
<th><?php echo $lang->story->title;?></th>
|
||||
<th class='w-hour'><?php echo $lang->statusAB;?></th>
|
||||
<th class='w-100px'><?php echo $lang->story->stageAB;?></th>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style='border-bottom:none'>
|
||||
<td style='border-bottom:none; padding:0px'>
|
||||
<div class='contentDiv'>
|
||||
<table class='f-left table-1 fixed' id='story'>
|
||||
<?php foreach($stories as $key => $story):?>
|
||||
<?php
|
||||
$storyLink = $this->createLink('story', 'view', "storyID=$story->id");
|
||||
?>
|
||||
<tr class='a-center'>
|
||||
<td class='w-id a-left'>
|
||||
<input type='checkbox' name='stories[]' value="<?php echo $story->id;?>" <?php if($story->stage == 'developed' or $story->status == 'closed') echo 'checked';?>> <?php echo sprintf('%03d', $story->id);?>
|
||||
</td>
|
||||
<td class='a-left nobr'><?php echo html::a($storyLink,$story->title, '', "class='preview'");?></td>
|
||||
<td class='<?php echo $story->status;?> w-50px'><?php echo $lang->story->statusList[$story->status];?></td>
|
||||
<td class='w-80px'><?php echo $lang->story->stageList[$story->stage];?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</table>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class='half-right'>
|
||||
<table class='mainTable'>
|
||||
<tr style='border-bottom:none'>
|
||||
<td style='border-bottom:none; padding:0px'>
|
||||
<table class='headTable'>
|
||||
<caption><?php echo $lang->build->linkBugs;?></caption>
|
||||
<tr>
|
||||
<th class='w-id a-left'><?php echo html::selectAll('bug', 'checkbox') . $lang->idAB;?></th>
|
||||
<th><?php echo $lang->bug->title;?></th>
|
||||
<th class='w-100px'><?php echo $lang->bug->status;?></th>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style='border-bottom:none'>
|
||||
<td style='border-bottom:none; padding:0px'>
|
||||
<div class='contentDiv'>
|
||||
<table class='f-left table-1 fixed' id='bug'>
|
||||
<?php foreach($bugs as $bug):?>
|
||||
<?php $bugLink = $this->createLink('bug', 'view', "bugID=$bug->id");?>
|
||||
<tr class='a-center'>
|
||||
<td class='w-id a-left'>
|
||||
<input type='checkbox' name='bugs[]' value="<?php echo $bug->id;?>" <?php if($bug->status == 'resolved' or $bug->status == 'closed') echo "checked";?>> <?php echo sprintf('%03d', $bug->id);?>
|
||||
</td>
|
||||
<td class='a-left nobr'><?php echo html::a($bugLink, $bug->title, '', "class='preview'");?></td>
|
||||
<td class='w-80px'><?php echo $lang->bug->statusList[$bug->status];?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</table>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->desc;?></th>
|
||||
<td><?php echo html::textarea('desc', '', "rows='10' class='area-1'");?></td>
|
||||
</tr>
|
||||
<tr><td colspan='2' class='a-center'><?php echo html::submitButton() . html::resetButton();?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The create view of build module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package build
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/datepicker.html.php';?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<form method='post' target='hiddenwin' id='dataform'>
|
||||
<table class='table-1 fixed'>
|
||||
<caption><?php echo $lang->build->create;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->product;?></th>
|
||||
<td><?php echo html::select('product', $products, '', "class='select-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->name;?></th>
|
||||
<td><?php echo html::input('name', '', "class='text-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->builder;?></th>
|
||||
<td><?php echo html::select('builder', $users, $app->user->account, 'class="select-3"');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->date;?></th>
|
||||
<td><?php echo html::input('date', helper::today(), "class='text-3 date'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->scmPath;?></th>
|
||||
<td><?php echo html::input('scmPath', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->filePath;?></th>
|
||||
<td><?php echo html::input('filePath', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->linkStoriesAndBugs;?></th>
|
||||
<td>
|
||||
<div class="w-p90">
|
||||
|
||||
<div class='half-left'>
|
||||
<table class='mainTable'>
|
||||
<tr style='border-bottom:none'>
|
||||
<td style='border-bottom:none; padding:0px'>
|
||||
<table class='headTable'>
|
||||
<caption><?php echo $lang->build->linkStories;?></caption>
|
||||
<tr>
|
||||
<th class='w-id a-left'> <?php echo html::selectAll('story', 'checkbox') . $lang->idAB;?></th>
|
||||
<th><?php echo $lang->story->title;?></th>
|
||||
<th class='w-hour'><?php echo $lang->statusAB;?></th>
|
||||
<th class='w-100px'><?php echo $lang->story->stageAB;?></th>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style='border-bottom:none'>
|
||||
<td style='border-bottom:none; padding:0px'>
|
||||
<div class='contentDiv'>
|
||||
<table class='f-left table-1 fixed' id='story'>
|
||||
<?php foreach($stories as $key => $story):?>
|
||||
<?php
|
||||
$storyLink = $this->createLink('story', 'view', "storyID=$story->id");
|
||||
?>
|
||||
<tr class='a-center'>
|
||||
<td class='w-id a-left'>
|
||||
<input type='checkbox' name='stories[]' value="<?php echo $story->id;?>" <?php if($story->stage == 'developed' or $story->status == 'closed') echo 'checked';?>> <?php echo sprintf('%03d', $story->id);?>
|
||||
</td>
|
||||
<td class='a-left nobr'><?php echo html::a($storyLink,$story->title, '', "class='preview'");?></td>
|
||||
<td class='<?php echo $story->status;?> w-50px'><?php echo $lang->story->statusList[$story->status];?></td>
|
||||
<td class='w-80px'><?php echo $lang->story->stageList[$story->stage];?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</table>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class='half-right'>
|
||||
<table class='mainTable'>
|
||||
<tr style='border-bottom:none'>
|
||||
<td style='border-bottom:none; padding:0px'>
|
||||
<table class='headTable'>
|
||||
<caption><?php echo $lang->build->linkBugs;?></caption>
|
||||
<tr>
|
||||
<th class='w-id a-left'><?php echo html::selectAll('bug', 'checkbox') . $lang->idAB;?></th>
|
||||
<th><?php echo $lang->bug->title;?></th>
|
||||
<th class='w-100px'><?php echo $lang->bug->status;?></th>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style='border-bottom:none'>
|
||||
<td style='border-bottom:none; padding:0px'>
|
||||
<div class='contentDiv'>
|
||||
<table class='f-left table-1 fixed' id='bug'>
|
||||
<?php foreach($bugs as $bug):?>
|
||||
<?php $bugLink = $this->createLink('bug', 'view', "bugID=$bug->id");?>
|
||||
<tr class='a-center'>
|
||||
<td class='w-id a-left'>
|
||||
<input type='checkbox' name='bugs[]' value="<?php echo $bug->id;?>" <?php if($bug->status == 'resolved' or $bug->status == 'closed') echo "checked";?>> <?php echo sprintf('%03d', $bug->id);?>
|
||||
</td>
|
||||
<td class='a-left nobr'><?php echo html::a($bugLink, $bug->title, '', "class='preview'");?></td>
|
||||
<td class='w-80px'><?php echo $lang->bug->statusList[$bug->status];?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</table>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->desc;?></th>
|
||||
<td><?php echo html::textarea('desc', '', "rows='10' class='area-1'");?></td>
|
||||
</tr>
|
||||
<tr><td colspan='2' class='a-center'><?php echo html::submitButton() . html::resetButton();?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
+126
-126
@@ -1,126 +1,126 @@
|
||||
<?php
|
||||
/**
|
||||
* The edit view of build module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package build
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/datepicker.html.php';?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<form method='post' target='hiddenwin' id='dataform'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $lang->build->edit;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->product;?></th>
|
||||
<td><?php echo html::select('product', $products, $build->product, "class='select-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->name;?></th>
|
||||
<td><?php echo html::input('name', $build->name, "class='text-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->builder;?></th>
|
||||
<td><?php echo html::select('builder', $users, $build->builder, 'class="select-3"');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->date;?></th>
|
||||
<td><?php echo html::input('date', $build->date, "class='text-3 date'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->scmPath;?></th>
|
||||
<td><?php echo html::input('scmPath', $build->scmPath, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->filePath;?></th>
|
||||
<td><?php echo html::input('filePath', $build->filePath, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->linkStoriesAndBugs;?></th>
|
||||
<td>
|
||||
<div class="w-p90">
|
||||
|
||||
<div class='half-left'>
|
||||
<table class='mainTable'>
|
||||
<tr style='border-bottom:none'>
|
||||
<td style='border-bottom:none;padding:0px'>
|
||||
<table class='headTable'>
|
||||
<caption><?php echo $lang->build->linkStories;?></caption>
|
||||
<tr>
|
||||
<th class='w-id a-left'><?php echo html::selectAll('story', 'checkbox') . $lang->idAB;?></th>
|
||||
<th><?php echo $lang->story->title;?></th>
|
||||
<th class='w-hour'><?php echo $lang->statusAB;?></th>
|
||||
<th class='w-100px'><?php echo $lang->story->stageAB;?></th>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style='border-bottom:none'>
|
||||
<td style='border-bottom:none; padding:0px'>
|
||||
<div class="contentDiv">
|
||||
<table class='f-left table-1 fixed'>
|
||||
<?php foreach($stories as $key => $story):?>
|
||||
<?php $storyLink = $this->createLink('story', 'view', "storyID=$story->id");?>
|
||||
<tr class='a-center'>
|
||||
<td class='w-id a-left' id='story'><input type='checkbox' name='stories[]' value="<?php echo $story->id;?>" <?php if(strpos(',' . $build->stories . ',', ',' . $story->id . ',') !== false) echo 'checked';?>> <?php echo sprintf('%03d', $story->id);?></td>
|
||||
<td class='a-left nobr'><?php echo html::a($storyLink, $story->title, '', "class='preview'");?></td>
|
||||
<td class='<?php echo $story->status;?> w-50px'><?php echo $lang->story->statusList[$story->status];?></td>
|
||||
<td class='w-80px'><?php echo $lang->story->stageList[$story->stage];?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</table>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class='half-right'>
|
||||
<table class='mainTable'>
|
||||
<tr style='border-bottom:none'>
|
||||
<td style='border-bottom:none; padding:0px'>
|
||||
<table class='headTable'>
|
||||
<caption><?php echo $lang->build->linkBugs;?></caption>
|
||||
<tr>
|
||||
<th class='w-id a-left'><?php echo html::selectAll('bug', 'checkbox') . $lang->idAB;?></th>
|
||||
<th><?php echo $lang->bug->title;?></th>
|
||||
<th class='w-100px'><?php echo $lang->bug->status;?></th>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style='border-bottom:none'>
|
||||
<td style='border-bottom:none; padding:0px'>
|
||||
<div class='contentDiv'>
|
||||
<table class='f-left table-1 fixed'>
|
||||
<?php foreach($bugs as $bug):?>
|
||||
<?php $bugLink = $this->createLink('bug', 'view', "bugID=$bug->id");?>
|
||||
<tr class='a-center'>
|
||||
<td class='w-id a-left' id='bug'><input type='checkbox' name='bugs[]' value="<?php echo $bug->id;?>" <?php if(strpos(',' . $build->bugs . ',', ',' . $bug->id . ',') !== false) echo 'checked';?>> <?php echo sprintf('%03d', $bug->id);?></td>
|
||||
<td class='a-left nobr'><?php echo html::a($bugLink, $bug->title, '', "class='preview'");?></td>
|
||||
<td class='w-80px'><?php echo $lang->bug->statusList[$bug->status];?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</table>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->desc;?></th>
|
||||
<td><?php echo html::textarea('desc', htmlspecialchars($build->desc), "rows='15' class='area-1'");?></td>
|
||||
</tr>
|
||||
<tr><td colspan='2' class='a-center'><?php echo html::submitButton() . html::resetButton() .html::hidden('project', $build->project);?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The edit view of build module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package build
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/datepicker.html.php';?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<form method='post' target='hiddenwin' id='dataform'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $lang->build->edit;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->product;?></th>
|
||||
<td><?php echo html::select('product', $products, $build->product, "class='select-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->name;?></th>
|
||||
<td><?php echo html::input('name', $build->name, "class='text-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->builder;?></th>
|
||||
<td><?php echo html::select('builder', $users, $build->builder, 'class="select-3"');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->date;?></th>
|
||||
<td><?php echo html::input('date', $build->date, "class='text-3 date'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->scmPath;?></th>
|
||||
<td><?php echo html::input('scmPath', $build->scmPath, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->filePath;?></th>
|
||||
<td><?php echo html::input('filePath', $build->filePath, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->linkStoriesAndBugs;?></th>
|
||||
<td>
|
||||
<div class="w-p90">
|
||||
|
||||
<div class='half-left'>
|
||||
<table class='mainTable'>
|
||||
<tr style='border-bottom:none'>
|
||||
<td style='border-bottom:none;padding:0px'>
|
||||
<table class='headTable'>
|
||||
<caption><?php echo $lang->build->linkStories;?></caption>
|
||||
<tr>
|
||||
<th class='w-id a-left'><?php echo html::selectAll('story', 'checkbox') . $lang->idAB;?></th>
|
||||
<th><?php echo $lang->story->title;?></th>
|
||||
<th class='w-hour'><?php echo $lang->statusAB;?></th>
|
||||
<th class='w-100px'><?php echo $lang->story->stageAB;?></th>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style='border-bottom:none'>
|
||||
<td style='border-bottom:none; padding:0px'>
|
||||
<div class="contentDiv">
|
||||
<table class='f-left table-1 fixed'>
|
||||
<?php foreach($stories as $key => $story):?>
|
||||
<?php $storyLink = $this->createLink('story', 'view', "storyID=$story->id");?>
|
||||
<tr class='a-center'>
|
||||
<td class='w-id a-left' id='story'><input type='checkbox' name='stories[]' value="<?php echo $story->id;?>" <?php if(strpos(',' . $build->stories . ',', ',' . $story->id . ',') !== false) echo 'checked';?>> <?php echo sprintf('%03d', $story->id);?></td>
|
||||
<td class='a-left nobr'><?php echo html::a($storyLink, $story->title, '', "class='preview'");?></td>
|
||||
<td class='<?php echo $story->status;?> w-50px'><?php echo $lang->story->statusList[$story->status];?></td>
|
||||
<td class='w-80px'><?php echo $lang->story->stageList[$story->stage];?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</table>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class='half-right'>
|
||||
<table class='mainTable'>
|
||||
<tr style='border-bottom:none'>
|
||||
<td style='border-bottom:none; padding:0px'>
|
||||
<table class='headTable'>
|
||||
<caption><?php echo $lang->build->linkBugs;?></caption>
|
||||
<tr>
|
||||
<th class='w-id a-left'><?php echo html::selectAll('bug', 'checkbox') . $lang->idAB;?></th>
|
||||
<th><?php echo $lang->bug->title;?></th>
|
||||
<th class='w-100px'><?php echo $lang->bug->status;?></th>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style='border-bottom:none'>
|
||||
<td style='border-bottom:none; padding:0px'>
|
||||
<div class='contentDiv'>
|
||||
<table class='f-left table-1 fixed'>
|
||||
<?php foreach($bugs as $bug):?>
|
||||
<?php $bugLink = $this->createLink('bug', 'view', "bugID=$bug->id");?>
|
||||
<tr class='a-center'>
|
||||
<td class='w-id a-left' id='bug'><input type='checkbox' name='bugs[]' value="<?php echo $bug->id;?>" <?php if(strpos(',' . $build->bugs . ',', ',' . $bug->id . ',') !== false) echo 'checked';?>> <?php echo sprintf('%03d', $bug->id);?></td>
|
||||
<td class='a-left nobr'><?php echo html::a($bugLink, $bug->title, '', "class='preview'");?></td>
|
||||
<td class='w-80px'><?php echo $lang->bug->statusList[$bug->status];?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</table>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->desc;?></th>
|
||||
<td><?php echo html::textarea('desc', htmlspecialchars($build->desc), "rows='15' class='area-1'");?></td>
|
||||
</tr>
|
||||
<tr><td colspan='2' class='a-center'><?php echo html::submitButton() . html::resetButton() .html::hidden('project', $build->project);?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
+119
-119
@@ -1,119 +1,119 @@
|
||||
<?php
|
||||
/**
|
||||
* The view file of build module's view method of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package build
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<table class='cont-rt5'>
|
||||
<caption class='<?php if($build->deleted) echo 'deleted';?>'>BUILD #<?php echo $build->id . ' ' . $build->name;?></caption>
|
||||
<tr valign='top'>
|
||||
<td>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->build->desc;?></legend>
|
||||
<div class='content'><?php echo $build->desc;?></div>
|
||||
</fieldset>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
<div class='a-center f-16px strong mb-10px'>
|
||||
<?php
|
||||
$browseLink = $this->session->buildList ? $this->session->buildList : $this->createLink('project', 'build', "projectID=$build->project");
|
||||
if(!$build->deleted)
|
||||
{
|
||||
common::printIcon('build', 'edit', "buildID=$build->id");
|
||||
common::printIcon('build', 'delete', "buildID=$build->id", '', 'button', '', 'hiddenwin');
|
||||
}
|
||||
echo common::printRPN($browseLink);
|
||||
?>
|
||||
</div>
|
||||
<table class='table-1 fixed'>
|
||||
<caption class='caption-t1'><?php echo $lang->build->stories;?></caption>
|
||||
<tr>
|
||||
<th class='w-id'><?php echo $lang->idAB;?></th>
|
||||
<th class='w-pri'><?php echo $lang->priAB;?></th>
|
||||
<th><?php echo $lang->story->title;?></th>
|
||||
<th class='w-user'><?php echo $lang->openedByAB;?></th>
|
||||
<th class='w-hour'><?php echo $lang->story->estimateAB;?></th>
|
||||
<th class='w-hour'><?php echo $lang->statusAB;?></th>
|
||||
<th class='w-100px'><?php echo $lang->story->stageAB;?></th>
|
||||
</tr>
|
||||
<?php foreach($stories as $storyID => $story):?>
|
||||
<?php $storyLink = $this->createLink('story', 'view', "storyID=$story->id");?>
|
||||
<tr class='a-center'>
|
||||
<td><?php echo sprintf('%03d', $story->id);?></td>
|
||||
<td><span class='<?php echo 'pri' . $lang->story->priList[$story->pri]?>'><?php echo $lang->story->priList[$story->pri];?></span></td>
|
||||
<td class='a-left nobr'><?php echo html::a($storyLink,$story->title, '', "class='preview'");?></td>
|
||||
<td><?php echo $users[$story->openedBy];?></td>
|
||||
<td><?php echo $story->estimate;?></td>
|
||||
<td class='<?php echo $story->status;?>'><?php echo $lang->story->statusList[$story->status];?></td>
|
||||
<td><?php echo $lang->story->stageList[$story->stage];?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
<tr><td colspan=7 class='a-left strong'><?php echo sprintf($lang->build->finishStories, count($stories));?></td></tr>
|
||||
</table>
|
||||
<table class='table-1 fixed'>
|
||||
<caption class='caption-t1'><?php echo $lang->build->bugs;?></caption>
|
||||
<tr>
|
||||
<th class='w-id'><?php echo $lang->idAB;?></th>
|
||||
<th><?php echo $lang->bug->title;?></th>
|
||||
<th class='w-100px'><?php echo $lang->bug->status;?></th>
|
||||
<th class='w-user'><?php echo $lang->openedByAB;?></th>
|
||||
<th class='w-date'><?php echo $lang->bug->openedDateAB;?></th>
|
||||
<th class='w-user'><?php echo $lang->bug->resolvedByAB;?></th>
|
||||
<th class='w-date'><?php echo $lang->bug->resolvedDateAB;?></th>
|
||||
</tr>
|
||||
<?php foreach($bugs as $bug):?>
|
||||
<?php $bugLink = $this->createLink('bug', 'view', "bugID=$bug->id");?>
|
||||
<tr class='a-center'>
|
||||
<td><?php echo sprintf('%03d', $bug->id);?></td>
|
||||
<td class='a-left nobr'><?php echo html::a($bugLink, $bug->title, '', "class='preview'");?></td>
|
||||
<td><?php echo $lang->bug->statusList[$bug->status];?></td>
|
||||
<td><?php echo $users[$bug->openedBy];?></td>
|
||||
<td><?php echo substr($bug->openedDate, 5, 11)?></td>
|
||||
<td><?php echo $users[$bug->resolvedBy];?></td>
|
||||
<td><?php echo substr($bug->resolvedDate, 5, 11)?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
<tr><td colspan=7 class='a-left strong'><?php echo sprintf($lang->build->resolvedBugs, count($bugs));?></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="divider"></td>
|
||||
<td class="side">
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->build->basicInfo?></legend>
|
||||
<table class='table-1 a-left'>
|
||||
<tr>
|
||||
<th width='25%' class='a-right'><?php echo $lang->build->product;?></th>
|
||||
<td><?php echo $build->productName;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->name;?></th>
|
||||
<td><?php echo $build->name;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->builder;?></th>
|
||||
<td><?php echo $users[$build->builder];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->date;?></th>
|
||||
<td><?php echo $build->date;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->scmPath;?></th>
|
||||
<td><?php strpos($build->scmPath, 'http') === 0 ? printf(html::a($build->scmPath)) : printf($build->scmPath);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->filePath;?></th>
|
||||
<td><?php strpos($build->filePath, 'http') === 0 ? printf(html::a($build->filePath)) : printf($build->filePath);?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The view file of build module's view method of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package build
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<table class='cont-rt5'>
|
||||
<caption class='<?php if($build->deleted) echo 'deleted';?>'>BUILD #<?php echo $build->id . ' ' . $build->name;?></caption>
|
||||
<tr valign='top'>
|
||||
<td>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->build->desc;?></legend>
|
||||
<div class='content'><?php echo $build->desc;?></div>
|
||||
</fieldset>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
<div class='a-center f-16px strong mb-10px'>
|
||||
<?php
|
||||
$browseLink = $this->session->buildList ? $this->session->buildList : $this->createLink('project', 'build', "projectID=$build->project");
|
||||
if(!$build->deleted)
|
||||
{
|
||||
common::printIcon('build', 'edit', "buildID=$build->id");
|
||||
common::printIcon('build', 'delete', "buildID=$build->id", '', 'button', '', 'hiddenwin');
|
||||
}
|
||||
echo common::printRPN($browseLink);
|
||||
?>
|
||||
</div>
|
||||
<table class='table-1 fixed'>
|
||||
<caption class='caption-t1'><?php echo $lang->build->stories;?></caption>
|
||||
<tr>
|
||||
<th class='w-id'><?php echo $lang->idAB;?></th>
|
||||
<th class='w-pri'><?php echo $lang->priAB;?></th>
|
||||
<th><?php echo $lang->story->title;?></th>
|
||||
<th class='w-user'><?php echo $lang->openedByAB;?></th>
|
||||
<th class='w-hour'><?php echo $lang->story->estimateAB;?></th>
|
||||
<th class='w-hour'><?php echo $lang->statusAB;?></th>
|
||||
<th class='w-100px'><?php echo $lang->story->stageAB;?></th>
|
||||
</tr>
|
||||
<?php foreach($stories as $storyID => $story):?>
|
||||
<?php $storyLink = $this->createLink('story', 'view', "storyID=$story->id");?>
|
||||
<tr class='a-center'>
|
||||
<td><?php echo sprintf('%03d', $story->id);?></td>
|
||||
<td><span class='<?php echo 'pri' . $lang->story->priList[$story->pri]?>'><?php echo $lang->story->priList[$story->pri];?></span></td>
|
||||
<td class='a-left nobr'><?php echo html::a($storyLink,$story->title, '', "class='preview'");?></td>
|
||||
<td><?php echo $users[$story->openedBy];?></td>
|
||||
<td><?php echo $story->estimate;?></td>
|
||||
<td class='<?php echo $story->status;?>'><?php echo $lang->story->statusList[$story->status];?></td>
|
||||
<td><?php echo $lang->story->stageList[$story->stage];?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
<tr><td colspan=7 class='a-left strong'><?php echo sprintf($lang->build->finishStories, count($stories));?></td></tr>
|
||||
</table>
|
||||
<table class='table-1 fixed'>
|
||||
<caption class='caption-t1'><?php echo $lang->build->bugs;?></caption>
|
||||
<tr>
|
||||
<th class='w-id'><?php echo $lang->idAB;?></th>
|
||||
<th><?php echo $lang->bug->title;?></th>
|
||||
<th class='w-100px'><?php echo $lang->bug->status;?></th>
|
||||
<th class='w-user'><?php echo $lang->openedByAB;?></th>
|
||||
<th class='w-date'><?php echo $lang->bug->openedDateAB;?></th>
|
||||
<th class='w-user'><?php echo $lang->bug->resolvedByAB;?></th>
|
||||
<th class='w-date'><?php echo $lang->bug->resolvedDateAB;?></th>
|
||||
</tr>
|
||||
<?php foreach($bugs as $bug):?>
|
||||
<?php $bugLink = $this->createLink('bug', 'view', "bugID=$bug->id");?>
|
||||
<tr class='a-center'>
|
||||
<td><?php echo sprintf('%03d', $bug->id);?></td>
|
||||
<td class='a-left nobr'><?php echo html::a($bugLink, $bug->title, '', "class='preview'");?></td>
|
||||
<td><?php echo $lang->bug->statusList[$bug->status];?></td>
|
||||
<td><?php echo $users[$bug->openedBy];?></td>
|
||||
<td><?php echo substr($bug->openedDate, 5, 11)?></td>
|
||||
<td><?php echo $users[$bug->resolvedBy];?></td>
|
||||
<td><?php echo substr($bug->resolvedDate, 5, 11)?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
<tr><td colspan=7 class='a-left strong'><?php echo sprintf($lang->build->resolvedBugs, count($bugs));?></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="divider"></td>
|
||||
<td class="side">
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->build->basicInfo?></legend>
|
||||
<table class='table-1 a-left'>
|
||||
<tr>
|
||||
<th width='25%' class='a-right'><?php echo $lang->build->product;?></th>
|
||||
<td><?php echo $build->productName;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->name;?></th>
|
||||
<td><?php echo $build->name;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->builder;?></th>
|
||||
<td><?php echo $users[$build->builder];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->date;?></th>
|
||||
<td><?php echo $build->date;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->scmPath;?></th>
|
||||
<td><?php strpos($build->scmPath, 'http') === 0 ? printf(html::a($build->scmPath)) : printf($build->scmPath);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->build->filePath;?></th>
|
||||
<td><?php strpos($build->filePath, 'http') === 0 ? printf(html::a($build->filePath)) : printf($build->filePath);?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
+414
-414
@@ -1,414 +1,414 @@
|
||||
<?php
|
||||
/**
|
||||
* The control file of common module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package common
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class common extends control
|
||||
{
|
||||
/**
|
||||
* The construc method, to do some auto things.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->common->startSession();
|
||||
$this->common->sendHeader();
|
||||
$this->common->setCompany();
|
||||
$this->common->setUser();
|
||||
$this->common->loadConfigFromDB();
|
||||
$this->app->loadLang('company');
|
||||
}
|
||||
|
||||
/**
|
||||
* Check the user has permission to access this method, if not, locate to the login page or deny page.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function checkPriv()
|
||||
{
|
||||
$module = $this->app->getModuleName();
|
||||
$method = $this->app->getMethodName();
|
||||
if($this->common->isOpenMethod($module, $method)) return true;
|
||||
if(!$this->loadModel('user')->isLogon() and $this->server->php_auth_user) $this->user->identifyByPhpAuth();
|
||||
if(!$this->loadModel('user')->isLogon() and $this->cookie->za) $this->user->identifyByCookie();
|
||||
|
||||
if(isset($this->app->user))
|
||||
{
|
||||
if(!common::hasPriv($module, $method)) $this->common->deny($module, $method);
|
||||
}
|
||||
else
|
||||
{
|
||||
$referer = helper::safe64Encode($this->app->getURI(true));
|
||||
$this->locate($this->createLink('user', 'login', "referer=$referer"));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check upgrade's status file is ok or not.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function checkUpgradeStatus()
|
||||
{
|
||||
$statusFile = $this->app->getAppRoot() . 'www' . $this->pathFix . 'ok';
|
||||
if(!file_exists($statusFile) or time() - filemtime($statusFile) > 3600)
|
||||
{
|
||||
$this->app->loadLang('upgrade');
|
||||
echo "<html><head><meta http-equiv='Content-Type' content='text/html; charset=utf-8' /></head><body>";
|
||||
echo "<table align='center' style='margin-top:100px; border:1px solid gray; font-size:14px;'><tr><td>";
|
||||
printf($this->lang->upgrade->setStatusFile, $statusFile, $statusFile, $statusFile);
|
||||
die('</td></tr></table></body></html>');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check the user has permisson of one method of one module.
|
||||
*
|
||||
* @param string $module
|
||||
* @param string $method
|
||||
* @static
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public static function hasPriv($module, $method)
|
||||
{
|
||||
global $app;
|
||||
|
||||
/* Check is the super admin or not. */
|
||||
$account = ',' . $app->user->account . ',';
|
||||
if(strpos($app->company->admins, $account) !== false) return true;
|
||||
|
||||
/* If not super admin, check the rights. */
|
||||
$rights = $app->user->rights;
|
||||
if(isset($rights[strtolower($module)][strtolower($method)])) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Replace the %s of one key of a menu by $params.
|
||||
*
|
||||
* All the menus are defined in the common's language file. But there're many dynamic params, so in the defination,
|
||||
* we used %s as placeholder. These %s should be setted in one module.
|
||||
*
|
||||
* The items of one module's menu may be an string or array. For example, please see module/common/lang.
|
||||
*
|
||||
* @param string $object the menus of one module
|
||||
* @param string $key the menu item to be replaced
|
||||
* @param string $params the params passed to the menu item
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setMenuVars($menu, $key, $params)
|
||||
{
|
||||
if(is_array($params))
|
||||
{
|
||||
if(is_array($menu->$key))
|
||||
{
|
||||
$menu->$key = (object)$menu->$key;
|
||||
$menu->$key->link = vsprintf($menu->$key->link, $params);
|
||||
$menu->$key = (array)$menu->$key;
|
||||
}
|
||||
else
|
||||
{
|
||||
$menu->$key = vsprintf($menu->$key, $params);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(is_array($menu->$key))
|
||||
{
|
||||
$menu->$key = (object)$menu->$key;
|
||||
$menu->$key->link = sprintf($menu->$key->link, $params);
|
||||
$menu->$key = (array)$menu->$key;
|
||||
}
|
||||
else
|
||||
{
|
||||
$menu->$key = sprintf($menu->$key, $params);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Print the link contains orderBy field.
|
||||
*
|
||||
* This method will auto set the orderby param according the params. Fox example, if the order by is desc,
|
||||
* will be changed to asc.
|
||||
*
|
||||
* @param string $fieldName the field name to sort by
|
||||
* @param string $orderBy the order by string
|
||||
* @param string $vars the vars to be passed
|
||||
* @param string $label the label of the link
|
||||
* @param string $module the module name
|
||||
* @param string $method the method name
|
||||
* @static
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public static function printOrderLink($fieldName, $orderBy, $vars, $label, $module = '', $method = '')
|
||||
{
|
||||
global $lang, $app;
|
||||
if(empty($module)) $module= $app->getModuleName();
|
||||
if(empty($method)) $method= $app->getMethodName();
|
||||
$className = 'header';
|
||||
|
||||
if(strpos($orderBy, $fieldName) !== false)
|
||||
{
|
||||
if(stripos($orderBy, 'desc') !== false)
|
||||
{
|
||||
$orderBy = str_ireplace('desc', 'asc', $orderBy);
|
||||
$className = 'headerSortUp';
|
||||
}
|
||||
elseif(stripos($orderBy, 'asc') !== false)
|
||||
{
|
||||
$orderBy = str_ireplace('asc', 'desc', $orderBy);
|
||||
$className = 'headerSortDown';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$orderBy = $fieldName . '_' . 'asc';
|
||||
$className = 'header';
|
||||
}
|
||||
$link = helper::createLink($module, $method, sprintf($vars, $orderBy));
|
||||
echo "<div class='$className'>" . html::a($link, $label) . '</div>';
|
||||
}
|
||||
|
||||
/**
|
||||
* Print link to an modules' methd.
|
||||
*
|
||||
* Before printing, check the privilege first. If no privilege, return fasle. Else, print the link, return true.
|
||||
*
|
||||
* @param string $module the module name
|
||||
* @param string $method the method
|
||||
* @param string $vars vars to be passed
|
||||
* @param string $label the label of the link
|
||||
* @param string $target the target of the link
|
||||
* @param string $misc others
|
||||
* @param bool $newline
|
||||
* @static
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public static function printLink($module, $method, $vars = '', $label, $target = '', $misc = '', $newline = true, $onlyBody = false)
|
||||
{
|
||||
if(!common::hasPriv($module, $method)) return false;
|
||||
echo html::a(helper::createLink($module, $method, $vars, '', $onlyBody), $label, $target, $misc, $newline);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Print icon of split line.
|
||||
*
|
||||
* @static
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public static function printDivider()
|
||||
{
|
||||
echo " ";
|
||||
}
|
||||
|
||||
/**
|
||||
* Print icon of comment.
|
||||
*
|
||||
* @param string $module
|
||||
* @static
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public static function printCommentIcon($module)
|
||||
{
|
||||
global $lang;
|
||||
|
||||
if(!common::hasPriv($module, 'edit')) return false;
|
||||
echo "<span class='link-button'>";
|
||||
echo html::a('#comment', ' ', '', "class='icon-green-common-comment' title='$lang->comment' onclick='setComment()'");
|
||||
echo "</span>";
|
||||
}
|
||||
|
||||
/**
|
||||
* Print link icon.
|
||||
*
|
||||
* @param string $module
|
||||
* @param string $method
|
||||
* @param string $vars
|
||||
* @param object $object
|
||||
* @param string $type button|list
|
||||
* @param string $icon
|
||||
* @param string $target
|
||||
* @static
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public static function printIcon($module, $method, $vars = '', $object = '', $type = 'button', $icon = '', $target = '', $extraClass = '', $onlyBody = false)
|
||||
{
|
||||
global $app, $lang;
|
||||
|
||||
/* Judge the $method of $module clickable or not, default is clickable. */
|
||||
$clickable = true;
|
||||
if(is_object($object))
|
||||
{
|
||||
if($app->getModuleName() != $module) $app->control->loadModel($module);
|
||||
$modelClass = class_exists("ext{$module}Model") ? "ext{$module}Model" : $module . "Model";
|
||||
if(class_exists($modelClass) and is_callable(array($modelClass, 'isClickable')))
|
||||
{
|
||||
$clickable = call_user_func_array(array($modelClass, 'isClickable'), array('object' => $object, 'method' => $method));
|
||||
}
|
||||
}
|
||||
|
||||
/* Set module and method, then create link to it. */
|
||||
if(strtolower($module) == 'testcase' and strtolower($method) == 'createbug') ($module = 'bug') and ($method = 'create');
|
||||
if(strtolower($module) == 'story' and strtolower($method) == 'createcase') ($module = 'testcase') and ($method = 'create');
|
||||
if(strtolower($module) == 'bug' and strtolower($method) == 'tostory') ($module = 'story') and ($method = 'create');
|
||||
if(strtolower($module) == 'bug' and strtolower($method) == 'createcase') ($module = 'testcase') and ($method = 'create');
|
||||
if(!common::hasPriv($module, $method)) return false;
|
||||
$link = helper::createLink($module, $method, $vars, '', $onlyBody);
|
||||
|
||||
/* Set the icon title, try search the $method defination in $module's lang or $common's lang. */
|
||||
$title = $method;
|
||||
if($method == 'create' and $icon == 'copy') $method = 'copy';
|
||||
if(isset($lang->$method) and is_string($lang->$method)) $title = $lang->$method;
|
||||
if((isset($lang->$module->$method) or $app->loadLang($module)) and isset($lang->$module->$method))
|
||||
{
|
||||
$title = $method == 'report' ? $lang->$module->$method->common : $lang->$module->$method;
|
||||
}
|
||||
if($icon == 'toStory') $title = $lang->bug->toStory;
|
||||
if($icon == 'createBug') $title = $lang->testtask->createBug;
|
||||
|
||||
/* set the class. */
|
||||
if(!$icon) $icon = $method;
|
||||
if(strpos(',edit,copy,report,export,delete,', ",$icon,") !== false) $module = 'common';
|
||||
$color = $type == 'button' ? 'green' : ($clickable ? 'green' : 'gray');
|
||||
$extraClass = strpos(',export,customFields,runCase,results,', ",$method,") !== false ? $method : $extraClass;
|
||||
$class = $extraClass ? "icon-$color-$module-$icon $extraClass" : "icon-$color-$module-$icon";
|
||||
|
||||
/* Create the icon link. */
|
||||
if($clickable)
|
||||
{
|
||||
if($type == 'button')
|
||||
{
|
||||
echo "<span class='link-button'>";
|
||||
echo html::a($link, ' ', $target, "class='$class' title='$title'", true);
|
||||
if($method != 'edit' and $method != 'copy' and $method != 'delete')
|
||||
{
|
||||
echo html::a($link, $title, $target, "class='$extraClass'", true);
|
||||
}
|
||||
echo "</span>";
|
||||
}
|
||||
else
|
||||
{
|
||||
echo html::a($link, ' ', $target, "class='$class' title='$title'", false);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if($type == 'list')
|
||||
{
|
||||
echo "<span class='$class' title='$title'> </span>";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Print backLink and preLink and nextLink.
|
||||
*
|
||||
* @param string $backLink
|
||||
* @param object $preAndNext
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function printRPN($backLink, $preAndNext = '')
|
||||
{
|
||||
global $lang;
|
||||
|
||||
echo "<span class='link-button'>";
|
||||
echo html::a($backLink, ' ', '', "class='icon-goback' title={$lang->goback}");
|
||||
echo "</span>";
|
||||
|
||||
if(isset($preAndNext->pre) and $preAndNext->pre)
|
||||
{
|
||||
$title = isset($preAndNext->pre->title) ? $preAndNext->pre->title : $preAndNext->pre->name;
|
||||
$title = '#' . $preAndNext->pre->id . ' ' . $title;
|
||||
echo "<span class='link-button'>";
|
||||
echo html::a($this->inLink('view', "ID={$preAndNext->pre->id}"), ' ', '', "id='pre' class='icon-pre' title='{$title}'");
|
||||
echo "</span>";
|
||||
}
|
||||
if(isset($preAndNext->next) and $preAndNext->next)
|
||||
{
|
||||
$title = isset($preAndNext->next->title) ? $preAndNext->next->title : $preAndNext->next->name;
|
||||
$title = '#' . $preAndNext->next->id . ' ' . $title;
|
||||
echo "<span class='link-button'>";
|
||||
echo html::a($this->inLink('view', "ID={$preAndNext->next->id}"), ' ', '', "id='next' class='icon-next' title='$title'");
|
||||
echo "</span>";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create changes of one object.
|
||||
*
|
||||
* @param mixed $old the old object
|
||||
* @param mixed $new the new object
|
||||
* @static
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public static function createChanges($old, $new)
|
||||
{
|
||||
global $config;
|
||||
$changes = array();
|
||||
$magicQuote = get_magic_quotes_gpc();
|
||||
foreach($new as $key => $value)
|
||||
{
|
||||
if(strtolower($key) == 'lastediteddate') continue;
|
||||
if(strtolower($key) == 'lasteditedby') continue;
|
||||
if(strtolower($key) == 'assigneddate') continue;
|
||||
if(strtolower($key) == 'editedby') continue;
|
||||
if(strtolower($key) == 'editeddate') continue;
|
||||
|
||||
if($magicQuote) $value = stripslashes($value);
|
||||
if($value != stripslashes($old->$key))
|
||||
{
|
||||
$diff = '';
|
||||
if(substr_count($value, "\n") > 1 or substr_count($old->$key, "\n") > 1 or strpos('name,title,desc,spec,steps,content,digest,verify', strtolower($key)) !== false) $diff = commonModel::diff($old->$key, $value);
|
||||
$changes[] = array('field' => $key, 'old' => $old->$key, 'new' => $value, 'diff' => $diff);
|
||||
}
|
||||
}
|
||||
return $changes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the full url of the system.
|
||||
*
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function getSysURL()
|
||||
{
|
||||
$httpType = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == 'on') ? 'https' : 'http';
|
||||
$httpHost = $_SERVER['HTTP_HOST'];
|
||||
return "$httpType://$httpHost";
|
||||
}
|
||||
|
||||
/**
|
||||
* Print the run info.
|
||||
*
|
||||
* @param mixed $startTime the start time.
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function printRunInfo($startTime)
|
||||
{
|
||||
vprintf($this->lang->runInfo, $this->common->getRunInfo($startTime));
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The control file of common module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package common
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class common extends control
|
||||
{
|
||||
/**
|
||||
* The construc method, to do some auto things.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->common->startSession();
|
||||
$this->common->sendHeader();
|
||||
$this->common->setCompany();
|
||||
$this->common->setUser();
|
||||
$this->common->loadConfigFromDB();
|
||||
$this->app->loadLang('company');
|
||||
}
|
||||
|
||||
/**
|
||||
* Check the user has permission to access this method, if not, locate to the login page or deny page.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function checkPriv()
|
||||
{
|
||||
$module = $this->app->getModuleName();
|
||||
$method = $this->app->getMethodName();
|
||||
if($this->common->isOpenMethod($module, $method)) return true;
|
||||
if(!$this->loadModel('user')->isLogon() and $this->server->php_auth_user) $this->user->identifyByPhpAuth();
|
||||
if(!$this->loadModel('user')->isLogon() and $this->cookie->za) $this->user->identifyByCookie();
|
||||
|
||||
if(isset($this->app->user))
|
||||
{
|
||||
if(!common::hasPriv($module, $method)) $this->common->deny($module, $method);
|
||||
}
|
||||
else
|
||||
{
|
||||
$referer = helper::safe64Encode($this->app->getURI(true));
|
||||
$this->locate($this->createLink('user', 'login', "referer=$referer"));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check upgrade's status file is ok or not.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function checkUpgradeStatus()
|
||||
{
|
||||
$statusFile = $this->app->getAppRoot() . 'www' . $this->pathFix . 'ok';
|
||||
if(!file_exists($statusFile) or time() - filemtime($statusFile) > 3600)
|
||||
{
|
||||
$this->app->loadLang('upgrade');
|
||||
echo "<html><head><meta http-equiv='Content-Type' content='text/html; charset=utf-8' /></head><body>";
|
||||
echo "<table align='center' style='margin-top:100px; border:1px solid gray; font-size:14px;'><tr><td>";
|
||||
printf($this->lang->upgrade->setStatusFile, $statusFile, $statusFile, $statusFile);
|
||||
die('</td></tr></table></body></html>');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check the user has permisson of one method of one module.
|
||||
*
|
||||
* @param string $module
|
||||
* @param string $method
|
||||
* @static
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public static function hasPriv($module, $method)
|
||||
{
|
||||
global $app;
|
||||
|
||||
/* Check is the super admin or not. */
|
||||
$account = ',' . $app->user->account . ',';
|
||||
if(strpos($app->company->admins, $account) !== false) return true;
|
||||
|
||||
/* If not super admin, check the rights. */
|
||||
$rights = $app->user->rights;
|
||||
if(isset($rights[strtolower($module)][strtolower($method)])) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Replace the %s of one key of a menu by $params.
|
||||
*
|
||||
* All the menus are defined in the common's language file. But there're many dynamic params, so in the defination,
|
||||
* we used %s as placeholder. These %s should be setted in one module.
|
||||
*
|
||||
* The items of one module's menu may be an string or array. For example, please see module/common/lang.
|
||||
*
|
||||
* @param string $object the menus of one module
|
||||
* @param string $key the menu item to be replaced
|
||||
* @param string $params the params passed to the menu item
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setMenuVars($menu, $key, $params)
|
||||
{
|
||||
if(is_array($params))
|
||||
{
|
||||
if(is_array($menu->$key))
|
||||
{
|
||||
$menu->$key = (object)$menu->$key;
|
||||
$menu->$key->link = vsprintf($menu->$key->link, $params);
|
||||
$menu->$key = (array)$menu->$key;
|
||||
}
|
||||
else
|
||||
{
|
||||
$menu->$key = vsprintf($menu->$key, $params);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(is_array($menu->$key))
|
||||
{
|
||||
$menu->$key = (object)$menu->$key;
|
||||
$menu->$key->link = sprintf($menu->$key->link, $params);
|
||||
$menu->$key = (array)$menu->$key;
|
||||
}
|
||||
else
|
||||
{
|
||||
$menu->$key = sprintf($menu->$key, $params);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Print the link contains orderBy field.
|
||||
*
|
||||
* This method will auto set the orderby param according the params. Fox example, if the order by is desc,
|
||||
* will be changed to asc.
|
||||
*
|
||||
* @param string $fieldName the field name to sort by
|
||||
* @param string $orderBy the order by string
|
||||
* @param string $vars the vars to be passed
|
||||
* @param string $label the label of the link
|
||||
* @param string $module the module name
|
||||
* @param string $method the method name
|
||||
* @static
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public static function printOrderLink($fieldName, $orderBy, $vars, $label, $module = '', $method = '')
|
||||
{
|
||||
global $lang, $app;
|
||||
if(empty($module)) $module= $app->getModuleName();
|
||||
if(empty($method)) $method= $app->getMethodName();
|
||||
$className = 'header';
|
||||
|
||||
if(strpos($orderBy, $fieldName) !== false)
|
||||
{
|
||||
if(stripos($orderBy, 'desc') !== false)
|
||||
{
|
||||
$orderBy = str_ireplace('desc', 'asc', $orderBy);
|
||||
$className = 'headerSortUp';
|
||||
}
|
||||
elseif(stripos($orderBy, 'asc') !== false)
|
||||
{
|
||||
$orderBy = str_ireplace('asc', 'desc', $orderBy);
|
||||
$className = 'headerSortDown';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$orderBy = $fieldName . '_' . 'asc';
|
||||
$className = 'header';
|
||||
}
|
||||
$link = helper::createLink($module, $method, sprintf($vars, $orderBy));
|
||||
echo "<div class='$className'>" . html::a($link, $label) . '</div>';
|
||||
}
|
||||
|
||||
/**
|
||||
* Print link to an modules' methd.
|
||||
*
|
||||
* Before printing, check the privilege first. If no privilege, return fasle. Else, print the link, return true.
|
||||
*
|
||||
* @param string $module the module name
|
||||
* @param string $method the method
|
||||
* @param string $vars vars to be passed
|
||||
* @param string $label the label of the link
|
||||
* @param string $target the target of the link
|
||||
* @param string $misc others
|
||||
* @param bool $newline
|
||||
* @static
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public static function printLink($module, $method, $vars = '', $label, $target = '', $misc = '', $newline = true, $onlyBody = false)
|
||||
{
|
||||
if(!common::hasPriv($module, $method)) return false;
|
||||
echo html::a(helper::createLink($module, $method, $vars, '', $onlyBody), $label, $target, $misc, $newline);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Print icon of split line.
|
||||
*
|
||||
* @static
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public static function printDivider()
|
||||
{
|
||||
echo " ";
|
||||
}
|
||||
|
||||
/**
|
||||
* Print icon of comment.
|
||||
*
|
||||
* @param string $module
|
||||
* @static
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public static function printCommentIcon($module)
|
||||
{
|
||||
global $lang;
|
||||
|
||||
if(!common::hasPriv($module, 'edit')) return false;
|
||||
echo "<span class='link-button'>";
|
||||
echo html::a('#comment', ' ', '', "class='icon-green-common-comment' title='$lang->comment' onclick='setComment()'");
|
||||
echo "</span>";
|
||||
}
|
||||
|
||||
/**
|
||||
* Print link icon.
|
||||
*
|
||||
* @param string $module
|
||||
* @param string $method
|
||||
* @param string $vars
|
||||
* @param object $object
|
||||
* @param string $type button|list
|
||||
* @param string $icon
|
||||
* @param string $target
|
||||
* @static
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public static function printIcon($module, $method, $vars = '', $object = '', $type = 'button', $icon = '', $target = '', $extraClass = '', $onlyBody = false)
|
||||
{
|
||||
global $app, $lang;
|
||||
|
||||
/* Judge the $method of $module clickable or not, default is clickable. */
|
||||
$clickable = true;
|
||||
if(is_object($object))
|
||||
{
|
||||
if($app->getModuleName() != $module) $app->control->loadModel($module);
|
||||
$modelClass = class_exists("ext{$module}Model") ? "ext{$module}Model" : $module . "Model";
|
||||
if(class_exists($modelClass) and is_callable(array($modelClass, 'isClickable')))
|
||||
{
|
||||
$clickable = call_user_func_array(array($modelClass, 'isClickable'), array('object' => $object, 'method' => $method));
|
||||
}
|
||||
}
|
||||
|
||||
/* Set module and method, then create link to it. */
|
||||
if(strtolower($module) == 'testcase' and strtolower($method) == 'createbug') ($module = 'bug') and ($method = 'create');
|
||||
if(strtolower($module) == 'story' and strtolower($method) == 'createcase') ($module = 'testcase') and ($method = 'create');
|
||||
if(strtolower($module) == 'bug' and strtolower($method) == 'tostory') ($module = 'story') and ($method = 'create');
|
||||
if(strtolower($module) == 'bug' and strtolower($method) == 'createcase') ($module = 'testcase') and ($method = 'create');
|
||||
if(!common::hasPriv($module, $method)) return false;
|
||||
$link = helper::createLink($module, $method, $vars, '', $onlyBody);
|
||||
|
||||
/* Set the icon title, try search the $method defination in $module's lang or $common's lang. */
|
||||
$title = $method;
|
||||
if($method == 'create' and $icon == 'copy') $method = 'copy';
|
||||
if(isset($lang->$method) and is_string($lang->$method)) $title = $lang->$method;
|
||||
if((isset($lang->$module->$method) or $app->loadLang($module)) and isset($lang->$module->$method))
|
||||
{
|
||||
$title = $method == 'report' ? $lang->$module->$method->common : $lang->$module->$method;
|
||||
}
|
||||
if($icon == 'toStory') $title = $lang->bug->toStory;
|
||||
if($icon == 'createBug') $title = $lang->testtask->createBug;
|
||||
|
||||
/* set the class. */
|
||||
if(!$icon) $icon = $method;
|
||||
if(strpos(',edit,copy,report,export,delete,', ",$icon,") !== false) $module = 'common';
|
||||
$color = $type == 'button' ? 'green' : ($clickable ? 'green' : 'gray');
|
||||
$extraClass = strpos(',export,customFields,runCase,results,', ",$method,") !== false ? $method : $extraClass;
|
||||
$class = $extraClass ? "icon-$color-$module-$icon $extraClass" : "icon-$color-$module-$icon";
|
||||
|
||||
/* Create the icon link. */
|
||||
if($clickable)
|
||||
{
|
||||
if($type == 'button')
|
||||
{
|
||||
echo "<span class='link-button'>";
|
||||
echo html::a($link, ' ', $target, "class='$class' title='$title'", true);
|
||||
if($method != 'edit' and $method != 'copy' and $method != 'delete')
|
||||
{
|
||||
echo html::a($link, $title, $target, "class='$extraClass'", true);
|
||||
}
|
||||
echo "</span>";
|
||||
}
|
||||
else
|
||||
{
|
||||
echo html::a($link, ' ', $target, "class='$class' title='$title'", false);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if($type == 'list')
|
||||
{
|
||||
echo "<span class='$class' title='$title'> </span>";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Print backLink and preLink and nextLink.
|
||||
*
|
||||
* @param string $backLink
|
||||
* @param object $preAndNext
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function printRPN($backLink, $preAndNext = '')
|
||||
{
|
||||
global $lang;
|
||||
|
||||
echo "<span class='link-button'>";
|
||||
echo html::a($backLink, ' ', '', "class='icon-goback' title={$lang->goback}");
|
||||
echo "</span>";
|
||||
|
||||
if(isset($preAndNext->pre) and $preAndNext->pre)
|
||||
{
|
||||
$title = isset($preAndNext->pre->title) ? $preAndNext->pre->title : $preAndNext->pre->name;
|
||||
$title = '#' . $preAndNext->pre->id . ' ' . $title;
|
||||
echo "<span class='link-button'>";
|
||||
echo html::a($this->inLink('view', "ID={$preAndNext->pre->id}"), ' ', '', "id='pre' class='icon-pre' title='{$title}'");
|
||||
echo "</span>";
|
||||
}
|
||||
if(isset($preAndNext->next) and $preAndNext->next)
|
||||
{
|
||||
$title = isset($preAndNext->next->title) ? $preAndNext->next->title : $preAndNext->next->name;
|
||||
$title = '#' . $preAndNext->next->id . ' ' . $title;
|
||||
echo "<span class='link-button'>";
|
||||
echo html::a($this->inLink('view', "ID={$preAndNext->next->id}"), ' ', '', "id='next' class='icon-next' title='$title'");
|
||||
echo "</span>";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create changes of one object.
|
||||
*
|
||||
* @param mixed $old the old object
|
||||
* @param mixed $new the new object
|
||||
* @static
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public static function createChanges($old, $new)
|
||||
{
|
||||
global $config;
|
||||
$changes = array();
|
||||
$magicQuote = get_magic_quotes_gpc();
|
||||
foreach($new as $key => $value)
|
||||
{
|
||||
if(strtolower($key) == 'lastediteddate') continue;
|
||||
if(strtolower($key) == 'lasteditedby') continue;
|
||||
if(strtolower($key) == 'assigneddate') continue;
|
||||
if(strtolower($key) == 'editedby') continue;
|
||||
if(strtolower($key) == 'editeddate') continue;
|
||||
|
||||
if($magicQuote) $value = stripslashes($value);
|
||||
if($value != stripslashes($old->$key))
|
||||
{
|
||||
$diff = '';
|
||||
if(substr_count($value, "\n") > 1 or substr_count($old->$key, "\n") > 1 or strpos('name,title,desc,spec,steps,content,digest,verify', strtolower($key)) !== false) $diff = commonModel::diff($old->$key, $value);
|
||||
$changes[] = array('field' => $key, 'old' => $old->$key, 'new' => $value, 'diff' => $diff);
|
||||
}
|
||||
}
|
||||
return $changes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the full url of the system.
|
||||
*
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function getSysURL()
|
||||
{
|
||||
$httpType = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == 'on') ? 'https' : 'http';
|
||||
$httpHost = $_SERVER['HTTP_HOST'];
|
||||
return "$httpType://$httpHost";
|
||||
}
|
||||
|
||||
/**
|
||||
* Print the run info.
|
||||
*
|
||||
* @param mixed $startTime the start time.
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function printRunInfo($startTime)
|
||||
{
|
||||
vprintf($this->lang->runInfo, $this->common->getRunInfo($startTime));
|
||||
}
|
||||
}
|
||||
|
||||
+620
-620
File diff suppressed because it is too large
Load Diff
+280
-280
@@ -1,280 +1,280 @@
|
||||
<?php
|
||||
/**
|
||||
* The control file of company module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package company
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class company extends control
|
||||
{
|
||||
/**
|
||||
* Construct function, load dept and user models auto.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->loadModel('dept');
|
||||
$this->company->setMenu();
|
||||
}
|
||||
|
||||
/**
|
||||
* Index page, header to browse.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$this->locate($this->createLink('company', 'browse'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Browse departments and users of a company.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function browse($param = 0, $type = 'bydept', $orderBy = 'id', $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
{
|
||||
$this->loadModel('search');
|
||||
$this->lang->set('menugroup.company', 'company');
|
||||
|
||||
$deptID = $type == 'bydept' ? (int)$param : 0;
|
||||
$this->company->setMenu($deptID);
|
||||
|
||||
/* Set the pager. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$pager = pager::init($recTotal, $recPerPage, $pageID);
|
||||
|
||||
/* Build the search form. */
|
||||
$queryID = $type == 'bydept' ? 0 : (int)$param;
|
||||
$this->config->company->browse->search['actionURL'] = $this->createLink('company', 'browse', "param=myQueryID&type=bysearch");
|
||||
$this->config->company->browse->search['queryID'] = $queryID;
|
||||
$this->config->company->browse->search['params']['dept']['values'] = array('' => '') + $this->dept->getOptionMenu();
|
||||
|
||||
$header['title'] = $this->lang->company->index . $this->lang->colon . $this->lang->dept->common;
|
||||
$position[] = $this->lang->dept->common;
|
||||
|
||||
if($type == 'bydept')
|
||||
{
|
||||
$childDeptIds = $this->dept->getAllChildID($deptID);
|
||||
$users = $this->dept->getUsers($childDeptIds, $pager, $orderBy);
|
||||
}
|
||||
else
|
||||
{
|
||||
if($queryID)
|
||||
{
|
||||
$query = $this->search->getQuery($queryID);
|
||||
if($query)
|
||||
{
|
||||
$this->session->set('userQuery', $query->sql);
|
||||
$this->session->set('userForm', $query->form);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->session->set('userQuery', ' 1 = 1');
|
||||
}
|
||||
}
|
||||
$users = $this->loadModel('user')->getByQuery($this->session->userQuery, $pager, $orderBy);
|
||||
}
|
||||
|
||||
$this->view->header = $header;
|
||||
$this->view->position = $position;
|
||||
$this->view->users = $users;
|
||||
$this->view->searchForm = $this->fetch('search', 'buildForm', $this->config->company->browse->search);
|
||||
$this->view->deptTree = $this->dept->getTreeMenu($rooteDeptID = 0, array('deptModel', 'createMemberLink'));
|
||||
$this->view->parentDepts = $this->dept->getParents($deptID);
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->deptID = $deptID;
|
||||
$this->view->pager = $pager;
|
||||
$this->view->param = $param;
|
||||
$this->view->type = $type;
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a company.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$this->company->create();
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
die(js::locate($this->createLink('admin', 'browsecompany'), 'parent'));
|
||||
}
|
||||
|
||||
$this->lang->set('menugroup.company', 'admin');
|
||||
$this->lang->company->menu = $this->lang->admin->menu;
|
||||
$this->lang->company->menuOrder = $this->lang->admin->menuOrder;
|
||||
|
||||
$header['title'] = $this->lang->admin->common . $this->lang->colon . $this->lang->company->create;
|
||||
$position[] = html::a($this->createLink('admin', 'browsecompany'), $this->lang->admin->company);
|
||||
$position[] = $this->lang->company->create;
|
||||
$this->view->header = $header;
|
||||
$this->view->position = $position;
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit a company.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function edit()
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$this->company->update();
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
|
||||
/* reset company in session. */
|
||||
$company = $this->loadModel('company')->getByDomain();
|
||||
$this->session->set('company', $company);
|
||||
|
||||
die(js::alert($this->lang->company->successSaved));
|
||||
}
|
||||
|
||||
$header['title'] = $this->lang->company->common . $this->lang->colon . $this->lang->company->edit;
|
||||
$position[] = $this->lang->company->edit;
|
||||
$this->view->header = $header;
|
||||
$this->view->position = $position;
|
||||
$this->view->company = $this->company->getById($this->app->company->id);
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a company.
|
||||
*
|
||||
* @param int $companyID
|
||||
* @param string $confirm yes|no
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function delete($companyID, $confirm = 'no')
|
||||
{
|
||||
if($confirm == 'no')
|
||||
{
|
||||
echo js::confirm($this->lang->company->confirmDelete, $this->createLink('company', 'delete', "companyID=$companyID&confirm=yes"));
|
||||
exit;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->company->delete($companyID);
|
||||
echo js::locate($this->createLink('admin', 'browseCompany'), 'parent');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Company dynamic.
|
||||
*
|
||||
* @param string $browseType
|
||||
* @param string $orderBy
|
||||
* @param int $recTotal
|
||||
* @param int $recPerPage
|
||||
* @param int $pageID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function dynamic($browseType = 'today', $param = '', $orderBy = 'date_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
{
|
||||
$this->app->loadLang('user');
|
||||
$this->app->loadLang('project');
|
||||
$this->loadModel('action');
|
||||
|
||||
/* Save session. */
|
||||
$uri = $this->app->getURI(true);
|
||||
$this->session->set('productList', $uri);
|
||||
$this->session->set('productPlanList', $uri);
|
||||
$this->session->set('releaseList', $uri);
|
||||
$this->session->set('storyList', $uri);
|
||||
$this->session->set('projectList', $uri);
|
||||
$this->session->set('taskList', $uri);
|
||||
$this->session->set('buildList', $uri);
|
||||
$this->session->set('bugList', $uri);
|
||||
$this->session->set('caseList', $uri);
|
||||
$this->session->set('testtaskList', $uri);
|
||||
|
||||
/* Set the pager. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$pager = pager::init($recTotal, $recPerPage, $pageID);
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->pager = $pager;
|
||||
|
||||
/* Set the user and type. */
|
||||
$account = $browseType == 'account' ? $param : 'all';
|
||||
$product = $browseType == 'product' ? $param : 'all';
|
||||
$project = $browseType == 'project' ? $param : 'all';
|
||||
$period = ($browseType == 'account' or $browseType == 'product' or $browseType == 'project') ? 'all' : $browseType;
|
||||
$queryID = ($browseType == 'bysearch') ? (int)$param : 0;
|
||||
|
||||
/* Get products' list.*/
|
||||
$products = $this->loadModel('product')->getPairs();
|
||||
$products = array($this->lang->product->select) + $products;
|
||||
$this->view->products = $products;
|
||||
|
||||
/* Get projects' list.*/
|
||||
$projects = $this->loadModel('project')->getPairs();
|
||||
$projects = array($this->lang->project->select) + $projects;
|
||||
$this->view->projects = $projects;
|
||||
|
||||
/* Get users.*/
|
||||
$users = $this->loadModel('user')->getPairs('nodeleted|noclosed');
|
||||
$users[''] = $this->lang->user->select;
|
||||
$this->view->users = $users;
|
||||
|
||||
/* The header and position. */
|
||||
$this->view->header->title = $this->lang->company->common . $this->lang->colon . $this->lang->company->dynamic;
|
||||
$this->view->position[] = $this->lang->company->dynamic;
|
||||
|
||||
/* Get actions. */
|
||||
if($browseType != 'bysearch')
|
||||
{
|
||||
$actions = $this->action->getDynamic($account, $period, $orderBy, $pager, $product, $project);
|
||||
}
|
||||
else
|
||||
{
|
||||
$actions = $this->action->getDynamicBySearch($products, $projects, $queryID, $orderBy, $pager);
|
||||
}
|
||||
|
||||
/* Build search form. */
|
||||
$projects[0] = '';
|
||||
$products[0] = '';
|
||||
$users[''] = '';
|
||||
ksort($projects);
|
||||
ksort($products);
|
||||
$projects['all'] = $this->lang->project->allProject;
|
||||
$products['all'] = $this->lang->product->allProduct;
|
||||
$this->config->company->dynamic->search['actionURL'] = $this->createLink('company', 'dynamic', "browseType=bysearch¶m=myQueryID");
|
||||
$this->config->company->dynamic->search['queryID'] = $queryID;
|
||||
$this->config->company->dynamic->search['params']['project']['values'] = $projects;
|
||||
$this->config->company->dynamic->search['params']['product']['values'] = $products;
|
||||
$this->config->company->dynamic->search['params']['actor']['values'] = $users;
|
||||
$this->loadModel('search')->setSearchParams($this->config->company->dynamic->search);
|
||||
|
||||
/* Assign. */
|
||||
$this->view->browseType = $browseType;
|
||||
$this->view->account = $account;
|
||||
$this->view->product = $product;
|
||||
$this->view->project = $project;
|
||||
$this->view->queryID = $queryID;
|
||||
$this->view->actions = $actions;
|
||||
$this->display();
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The control file of company module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package company
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class company extends control
|
||||
{
|
||||
/**
|
||||
* Construct function, load dept and user models auto.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->loadModel('dept');
|
||||
$this->company->setMenu();
|
||||
}
|
||||
|
||||
/**
|
||||
* Index page, header to browse.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$this->locate($this->createLink('company', 'browse'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Browse departments and users of a company.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function browse($param = 0, $type = 'bydept', $orderBy = 'id', $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
{
|
||||
$this->loadModel('search');
|
||||
$this->lang->set('menugroup.company', 'company');
|
||||
|
||||
$deptID = $type == 'bydept' ? (int)$param : 0;
|
||||
$this->company->setMenu($deptID);
|
||||
|
||||
/* Set the pager. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$pager = pager::init($recTotal, $recPerPage, $pageID);
|
||||
|
||||
/* Build the search form. */
|
||||
$queryID = $type == 'bydept' ? 0 : (int)$param;
|
||||
$this->config->company->browse->search['actionURL'] = $this->createLink('company', 'browse', "param=myQueryID&type=bysearch");
|
||||
$this->config->company->browse->search['queryID'] = $queryID;
|
||||
$this->config->company->browse->search['params']['dept']['values'] = array('' => '') + $this->dept->getOptionMenu();
|
||||
|
||||
$header['title'] = $this->lang->company->index . $this->lang->colon . $this->lang->dept->common;
|
||||
$position[] = $this->lang->dept->common;
|
||||
|
||||
if($type == 'bydept')
|
||||
{
|
||||
$childDeptIds = $this->dept->getAllChildID($deptID);
|
||||
$users = $this->dept->getUsers($childDeptIds, $pager, $orderBy);
|
||||
}
|
||||
else
|
||||
{
|
||||
if($queryID)
|
||||
{
|
||||
$query = $this->search->getQuery($queryID);
|
||||
if($query)
|
||||
{
|
||||
$this->session->set('userQuery', $query->sql);
|
||||
$this->session->set('userForm', $query->form);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->session->set('userQuery', ' 1 = 1');
|
||||
}
|
||||
}
|
||||
$users = $this->loadModel('user')->getByQuery($this->session->userQuery, $pager, $orderBy);
|
||||
}
|
||||
|
||||
$this->view->header = $header;
|
||||
$this->view->position = $position;
|
||||
$this->view->users = $users;
|
||||
$this->view->searchForm = $this->fetch('search', 'buildForm', $this->config->company->browse->search);
|
||||
$this->view->deptTree = $this->dept->getTreeMenu($rooteDeptID = 0, array('deptModel', 'createMemberLink'));
|
||||
$this->view->parentDepts = $this->dept->getParents($deptID);
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->deptID = $deptID;
|
||||
$this->view->pager = $pager;
|
||||
$this->view->param = $param;
|
||||
$this->view->type = $type;
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a company.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$this->company->create();
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
die(js::locate($this->createLink('admin', 'browsecompany'), 'parent'));
|
||||
}
|
||||
|
||||
$this->lang->set('menugroup.company', 'admin');
|
||||
$this->lang->company->menu = $this->lang->admin->menu;
|
||||
$this->lang->company->menuOrder = $this->lang->admin->menuOrder;
|
||||
|
||||
$header['title'] = $this->lang->admin->common . $this->lang->colon . $this->lang->company->create;
|
||||
$position[] = html::a($this->createLink('admin', 'browsecompany'), $this->lang->admin->company);
|
||||
$position[] = $this->lang->company->create;
|
||||
$this->view->header = $header;
|
||||
$this->view->position = $position;
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit a company.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function edit()
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$this->company->update();
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
|
||||
/* reset company in session. */
|
||||
$company = $this->loadModel('company')->getByDomain();
|
||||
$this->session->set('company', $company);
|
||||
|
||||
die(js::alert($this->lang->company->successSaved));
|
||||
}
|
||||
|
||||
$header['title'] = $this->lang->company->common . $this->lang->colon . $this->lang->company->edit;
|
||||
$position[] = $this->lang->company->edit;
|
||||
$this->view->header = $header;
|
||||
$this->view->position = $position;
|
||||
$this->view->company = $this->company->getById($this->app->company->id);
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a company.
|
||||
*
|
||||
* @param int $companyID
|
||||
* @param string $confirm yes|no
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function delete($companyID, $confirm = 'no')
|
||||
{
|
||||
if($confirm == 'no')
|
||||
{
|
||||
echo js::confirm($this->lang->company->confirmDelete, $this->createLink('company', 'delete', "companyID=$companyID&confirm=yes"));
|
||||
exit;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->company->delete($companyID);
|
||||
echo js::locate($this->createLink('admin', 'browseCompany'), 'parent');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Company dynamic.
|
||||
*
|
||||
* @param string $browseType
|
||||
* @param string $orderBy
|
||||
* @param int $recTotal
|
||||
* @param int $recPerPage
|
||||
* @param int $pageID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function dynamic($browseType = 'today', $param = '', $orderBy = 'date_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
{
|
||||
$this->app->loadLang('user');
|
||||
$this->app->loadLang('project');
|
||||
$this->loadModel('action');
|
||||
|
||||
/* Save session. */
|
||||
$uri = $this->app->getURI(true);
|
||||
$this->session->set('productList', $uri);
|
||||
$this->session->set('productPlanList', $uri);
|
||||
$this->session->set('releaseList', $uri);
|
||||
$this->session->set('storyList', $uri);
|
||||
$this->session->set('projectList', $uri);
|
||||
$this->session->set('taskList', $uri);
|
||||
$this->session->set('buildList', $uri);
|
||||
$this->session->set('bugList', $uri);
|
||||
$this->session->set('caseList', $uri);
|
||||
$this->session->set('testtaskList', $uri);
|
||||
|
||||
/* Set the pager. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$pager = pager::init($recTotal, $recPerPage, $pageID);
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->pager = $pager;
|
||||
|
||||
/* Set the user and type. */
|
||||
$account = $browseType == 'account' ? $param : 'all';
|
||||
$product = $browseType == 'product' ? $param : 'all';
|
||||
$project = $browseType == 'project' ? $param : 'all';
|
||||
$period = ($browseType == 'account' or $browseType == 'product' or $browseType == 'project') ? 'all' : $browseType;
|
||||
$queryID = ($browseType == 'bysearch') ? (int)$param : 0;
|
||||
|
||||
/* Get products' list.*/
|
||||
$products = $this->loadModel('product')->getPairs();
|
||||
$products = array($this->lang->product->select) + $products;
|
||||
$this->view->products = $products;
|
||||
|
||||
/* Get projects' list.*/
|
||||
$projects = $this->loadModel('project')->getPairs();
|
||||
$projects = array($this->lang->project->select) + $projects;
|
||||
$this->view->projects = $projects;
|
||||
|
||||
/* Get users.*/
|
||||
$users = $this->loadModel('user')->getPairs('nodeleted|noclosed');
|
||||
$users[''] = $this->lang->user->select;
|
||||
$this->view->users = $users;
|
||||
|
||||
/* The header and position. */
|
||||
$this->view->header->title = $this->lang->company->common . $this->lang->colon . $this->lang->company->dynamic;
|
||||
$this->view->position[] = $this->lang->company->dynamic;
|
||||
|
||||
/* Get actions. */
|
||||
if($browseType != 'bysearch')
|
||||
{
|
||||
$actions = $this->action->getDynamic($account, $period, $orderBy, $pager, $product, $project);
|
||||
}
|
||||
else
|
||||
{
|
||||
$actions = $this->action->getDynamicBySearch($products, $projects, $queryID, $orderBy, $pager);
|
||||
}
|
||||
|
||||
/* Build search form. */
|
||||
$projects[0] = '';
|
||||
$products[0] = '';
|
||||
$users[''] = '';
|
||||
ksort($projects);
|
||||
ksort($products);
|
||||
$projects['all'] = $this->lang->project->allProject;
|
||||
$products['all'] = $this->lang->product->allProduct;
|
||||
$this->config->company->dynamic->search['actionURL'] = $this->createLink('company', 'dynamic', "browseType=bysearch¶m=myQueryID");
|
||||
$this->config->company->dynamic->search['queryID'] = $queryID;
|
||||
$this->config->company->dynamic->search['params']['project']['values'] = $projects;
|
||||
$this->config->company->dynamic->search['params']['product']['values'] = $products;
|
||||
$this->config->company->dynamic->search['params']['actor']['values'] = $users;
|
||||
$this->loadModel('search')->setSearchParams($this->config->company->dynamic->search);
|
||||
|
||||
/* Assign. */
|
||||
$this->view->browseType = $browseType;
|
||||
$this->view->account = $account;
|
||||
$this->view->product = $product;
|
||||
$this->view->project = $project;
|
||||
$this->view->queryID = $queryID;
|
||||
$this->view->actions = $actions;
|
||||
$this->display();
|
||||
}
|
||||
}
|
||||
|
||||
+39
-39
@@ -1,39 +1,39 @@
|
||||
<?php
|
||||
/**
|
||||
* The company module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package company
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->company->common = 'Company';
|
||||
$lang->company->index = "Index";
|
||||
$lang->company->create = "Create";
|
||||
$lang->company->edit = "Edit";
|
||||
$lang->company->read = "Info";
|
||||
$lang->company->update = "Update";
|
||||
$lang->company->delete = "Delete";
|
||||
$lang->company->browse = "User";
|
||||
$lang->company->dynamic = "Dynamic";
|
||||
$lang->company->depts = "Dept";
|
||||
$lang->company->orgView = 'Company';
|
||||
|
||||
$lang->company->confirmDelete = "Are you sure to delete this company?";
|
||||
$lang->company->successSaved = "Success saved";
|
||||
|
||||
$lang->company->id = 'ID';
|
||||
$lang->company->name = 'Name';
|
||||
$lang->company->phone = 'Phone';
|
||||
$lang->company->fax = 'Fax';
|
||||
$lang->company->address = 'Address';
|
||||
$lang->company->zipcode = 'Zipcode';
|
||||
$lang->company->website = 'Web site';
|
||||
$lang->company->backyard = 'Internal Site';
|
||||
$lang->company->pms = 'ZenTaoPMS Site';
|
||||
$lang->company->guest = 'Guest visit';
|
||||
|
||||
$lang->company->guestList[0] = 'Deny';
|
||||
$lang->company->guestList[1] = 'Allow';
|
||||
<?php
|
||||
/**
|
||||
* The company module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package company
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->company->common = 'Company';
|
||||
$lang->company->index = "Index";
|
||||
$lang->company->create = "Create";
|
||||
$lang->company->edit = "Edit";
|
||||
$lang->company->read = "Info";
|
||||
$lang->company->update = "Update";
|
||||
$lang->company->delete = "Delete";
|
||||
$lang->company->browse = "User";
|
||||
$lang->company->dynamic = "Dynamic";
|
||||
$lang->company->depts = "Dept";
|
||||
$lang->company->orgView = 'Company';
|
||||
|
||||
$lang->company->confirmDelete = "Are you sure to delete this company?";
|
||||
$lang->company->successSaved = "Success saved";
|
||||
|
||||
$lang->company->id = 'ID';
|
||||
$lang->company->name = 'Name';
|
||||
$lang->company->phone = 'Phone';
|
||||
$lang->company->fax = 'Fax';
|
||||
$lang->company->address = 'Address';
|
||||
$lang->company->zipcode = 'Zipcode';
|
||||
$lang->company->website = 'Web site';
|
||||
$lang->company->backyard = 'Internal Site';
|
||||
$lang->company->pms = 'ZenTaoPMS Site';
|
||||
$lang->company->guest = 'Guest visit';
|
||||
|
||||
$lang->company->guestList[0] = 'Deny';
|
||||
$lang->company->guestList[1] = 'Allow';
|
||||
|
||||
@@ -1,39 +1,39 @@
|
||||
<?php
|
||||
/**
|
||||
* The company module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package company
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->company->common = '组织视图';
|
||||
$lang->company->index = "组织视图首页";
|
||||
$lang->company->create = "新增公司";
|
||||
$lang->company->edit = "编辑公司";
|
||||
$lang->company->read = "公司信息";
|
||||
$lang->company->update = "更新公司";
|
||||
$lang->company->delete = "删除公司";
|
||||
$lang->company->browse = "用户列表";
|
||||
$lang->company->dynamic = "组织动态";
|
||||
$lang->company->depts = "部门列表";
|
||||
$lang->company->orgView = '组织视图';
|
||||
|
||||
$lang->company->confirmDelete = "您确定删除该公司吗?";
|
||||
$lang->company->successSaved = "成功保存";
|
||||
|
||||
$lang->company->id = '编号';
|
||||
$lang->company->name = '公司名称';
|
||||
$lang->company->phone = '联系电话';
|
||||
$lang->company->fax = '传真';
|
||||
$lang->company->address = '通讯地址';
|
||||
$lang->company->zipcode = '邮政编码';
|
||||
$lang->company->website = '公司官网';
|
||||
$lang->company->backyard = '公司内网';
|
||||
$lang->company->pms = 'PMS网站';
|
||||
$lang->company->guest = '匿名登录';
|
||||
|
||||
$lang->company->guestList[0] = '不允许';
|
||||
$lang->company->guestList[1] = '允许';
|
||||
<?php
|
||||
/**
|
||||
* The company module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package company
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->company->common = '组织视图';
|
||||
$lang->company->index = "组织视图首页";
|
||||
$lang->company->create = "新增公司";
|
||||
$lang->company->edit = "编辑公司";
|
||||
$lang->company->read = "公司信息";
|
||||
$lang->company->update = "更新公司";
|
||||
$lang->company->delete = "删除公司";
|
||||
$lang->company->browse = "用户列表";
|
||||
$lang->company->dynamic = "组织动态";
|
||||
$lang->company->depts = "部门列表";
|
||||
$lang->company->orgView = '组织视图';
|
||||
|
||||
$lang->company->confirmDelete = "您确定删除该公司吗?";
|
||||
$lang->company->successSaved = "成功保存";
|
||||
|
||||
$lang->company->id = '编号';
|
||||
$lang->company->name = '公司名称';
|
||||
$lang->company->phone = '联系电话';
|
||||
$lang->company->fax = '传真';
|
||||
$lang->company->address = '通讯地址';
|
||||
$lang->company->zipcode = '邮政编码';
|
||||
$lang->company->website = '公司官网';
|
||||
$lang->company->backyard = '公司内网';
|
||||
$lang->company->pms = 'PMS网站';
|
||||
$lang->company->guest = '匿名登录';
|
||||
|
||||
$lang->company->guestList[0] = '不允许';
|
||||
$lang->company->guestList[1] = '允许';
|
||||
|
||||
@@ -1,40 +1,40 @@
|
||||
<?php
|
||||
/**
|
||||
* The company module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package company
|
||||
* @version $Id: zh-tw.php 3536 2012-09-21 03:09:38Z zhujinyonging@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->company->common = '組織視圖';
|
||||
$lang->company->index = "組織視圖首頁";
|
||||
$lang->company->create = "新增公司";
|
||||
$lang->company->edit = "編輯公司";
|
||||
$lang->company->read = "公司信息";
|
||||
$lang->company->update = "更新公司";
|
||||
$lang->company->delete = "刪除公司";
|
||||
$lang->company->browse = "用戶列表";
|
||||
$lang->company->dynamic = "組織動態";
|
||||
$lang->company->depts = "部門列表";
|
||||
$lang->company->orgView = '組織視圖';
|
||||
|
||||
$lang->company->confirmDelete = "您確定刪除該公司嗎?";
|
||||
$lang->company->successSaved = "成功保存";
|
||||
|
||||
$lang->company->id = '編號';
|
||||
$lang->company->name = '公司名稱';
|
||||
$lang->company->phone = '聯繫電話';
|
||||
$lang->company->fax = '傳真';
|
||||
$lang->company->address = '通訊地址';
|
||||
$lang->company->zipcode = '郵政編碼';
|
||||
$lang->company->website = '公司官網';
|
||||
$lang->company->backyard = '公司內網';
|
||||
$lang->company->pms = 'PMS網站';
|
||||
$lang->company->guest = '匿名登錄';
|
||||
$lang->company->unlock = '解鎖';
|
||||
|
||||
$lang->company->guestList[0] = '不允許';
|
||||
$lang->company->guestList[1] = '允許';
|
||||
<?php
|
||||
/**
|
||||
* The company module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package company
|
||||
* @version $Id: zh-tw.php 3536 2012-09-21 03:09:38Z zhujinyonging@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->company->common = '組織視圖';
|
||||
$lang->company->index = "組織視圖首頁";
|
||||
$lang->company->create = "新增公司";
|
||||
$lang->company->edit = "編輯公司";
|
||||
$lang->company->read = "公司信息";
|
||||
$lang->company->update = "更新公司";
|
||||
$lang->company->delete = "刪除公司";
|
||||
$lang->company->browse = "用戶列表";
|
||||
$lang->company->dynamic = "組織動態";
|
||||
$lang->company->depts = "部門列表";
|
||||
$lang->company->orgView = '組織視圖';
|
||||
|
||||
$lang->company->confirmDelete = "您確定刪除該公司嗎?";
|
||||
$lang->company->successSaved = "成功保存";
|
||||
|
||||
$lang->company->id = '編號';
|
||||
$lang->company->name = '公司名稱';
|
||||
$lang->company->phone = '聯繫電話';
|
||||
$lang->company->fax = '傳真';
|
||||
$lang->company->address = '通訊地址';
|
||||
$lang->company->zipcode = '郵政編碼';
|
||||
$lang->company->website = '公司官網';
|
||||
$lang->company->backyard = '公司內網';
|
||||
$lang->company->pms = 'PMS網站';
|
||||
$lang->company->guest = '匿名登錄';
|
||||
$lang->company->unlock = '解鎖';
|
||||
|
||||
$lang->company->guestList[0] = '不允許';
|
||||
$lang->company->guestList[1] = '允許';
|
||||
|
||||
+123
-123
@@ -1,123 +1,123 @@
|
||||
<?php
|
||||
/**
|
||||
* The model file of company module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package company
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
class companyModel extends model
|
||||
{
|
||||
/**
|
||||
* Set menu.
|
||||
*
|
||||
* @param int $dept
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setMenu($dept = 0)
|
||||
{
|
||||
common::setMenuVars($this->lang->company->menu, 'name', array($this->app->company->name));
|
||||
common::setMenuVars($this->lang->company->menu, 'addUser', array($dept));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get company list.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getList()
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_COMPANY)->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the first company.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getFirst()
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_COMPANY)->orderBy('id')->limit(1)->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* get company by domain.
|
||||
*
|
||||
* @param string $domain if empty, use current HTTP_HOST.
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getByDomain($domain = '')
|
||||
{
|
||||
if(empty($domain)) $domain = $this->server->http_host;
|
||||
return $this->dao->findByPMS($domain)->from(TABLE_COMPANY)->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get company info by id.
|
||||
*
|
||||
* @param int $companyID
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getByID($companyID = '')
|
||||
{
|
||||
return $this->dao->findById((int)$companyID)->from(TABLE_COMPANY)->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a company.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
$company = fixer::input('post')->get();
|
||||
$this->dao->insert(TABLE_COMPANY)
|
||||
->data($company)
|
||||
->autoCheck()
|
||||
->batchCheck($this->config->company->create->requiredFields, 'notempty')
|
||||
->batchCheck('name,pms', 'unique')
|
||||
->exec();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a company.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function update()
|
||||
{
|
||||
$company = fixer::input('post')->stripTags('name')->get();
|
||||
$companyID = $this->app->company->id;
|
||||
$this->dao->update(TABLE_COMPANY)
|
||||
->data($company)
|
||||
->autoCheck()
|
||||
->batchCheck($this->config->company->edit->requiredFields, 'notempty')
|
||||
->batchCheck('name,pms', 'unique', "id != '$companyID'")
|
||||
->where('id')->eq($companyID)
|
||||
->exec();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a company.
|
||||
*
|
||||
* @param int $companyID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function delete($companyID)
|
||||
{
|
||||
return $this->dao->delete()->from(TABLE_COMPANY)->where('id')->eq((int)$companyID)->limit(1)->exec();
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The model file of company module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package company
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
class companyModel extends model
|
||||
{
|
||||
/**
|
||||
* Set menu.
|
||||
*
|
||||
* @param int $dept
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setMenu($dept = 0)
|
||||
{
|
||||
common::setMenuVars($this->lang->company->menu, 'name', array($this->app->company->name));
|
||||
common::setMenuVars($this->lang->company->menu, 'addUser', array($dept));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get company list.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getList()
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_COMPANY)->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the first company.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getFirst()
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_COMPANY)->orderBy('id')->limit(1)->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* get company by domain.
|
||||
*
|
||||
* @param string $domain if empty, use current HTTP_HOST.
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getByDomain($domain = '')
|
||||
{
|
||||
if(empty($domain)) $domain = $this->server->http_host;
|
||||
return $this->dao->findByPMS($domain)->from(TABLE_COMPANY)->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get company info by id.
|
||||
*
|
||||
* @param int $companyID
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getByID($companyID = '')
|
||||
{
|
||||
return $this->dao->findById((int)$companyID)->from(TABLE_COMPANY)->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a company.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
$company = fixer::input('post')->get();
|
||||
$this->dao->insert(TABLE_COMPANY)
|
||||
->data($company)
|
||||
->autoCheck()
|
||||
->batchCheck($this->config->company->create->requiredFields, 'notempty')
|
||||
->batchCheck('name,pms', 'unique')
|
||||
->exec();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a company.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function update()
|
||||
{
|
||||
$company = fixer::input('post')->stripTags('name')->get();
|
||||
$companyID = $this->app->company->id;
|
||||
$this->dao->update(TABLE_COMPANY)
|
||||
->data($company)
|
||||
->autoCheck()
|
||||
->batchCheck($this->config->company->edit->requiredFields, 'notempty')
|
||||
->batchCheck('name,pms', 'unique', "id != '$companyID'")
|
||||
->where('id')->eq($companyID)
|
||||
->exec();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a company.
|
||||
*
|
||||
* @param int $companyID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function delete($companyID)
|
||||
{
|
||||
return $this->dao->delete()->from(TABLE_COMPANY)->where('id')->eq((int)$companyID)->limit(1)->exec();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,92 +1,92 @@
|
||||
<?php
|
||||
/**
|
||||
* The browse view file of product dept of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package product
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
include '../../common/view/header.html.php';
|
||||
include '../../common/view/treeview.html.php';
|
||||
include '../../common/view/colorize.html.php';
|
||||
js::set('deptID', $deptID);
|
||||
?>
|
||||
<table class='cont-lt1'>
|
||||
<tr><td colspan='3'><div id='querybox'><?php echo $searchForm?></div></td></tr>
|
||||
<tr valign='top'>
|
||||
<td class='side'>
|
||||
<div class='box-title'><?php echo $lang->dept->common;?></div>
|
||||
<div class='box-content'>
|
||||
<?php echo $deptTree;?>
|
||||
<div class='a-right'><?php common::printLink('dept', 'browse', '', $lang->dept->manage);?></div>
|
||||
</div>
|
||||
</td>
|
||||
<td class='divider'></td>
|
||||
<td>
|
||||
<table class='table-1 tablesorter colored'>
|
||||
<thead>
|
||||
<tr class='colhead'>
|
||||
<?php $vars = "param=$param&type=$type&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}";?>
|
||||
<th class='w-id'><?php common::printorderlink('id', $orderBy, $vars, $lang->idAB);?></th>
|
||||
<th><?php common::printorderlink('realname', $orderBy, $vars, $lang->user->realname);?></th>
|
||||
<th><?php common::printOrderLink('account', $orderBy, $vars, $lang->user->account);?></th>
|
||||
<th><?php common::printOrderLink('role', $orderBy, $vars, $lang->user->role);?></th>
|
||||
<th><?php common::printOrderLink('email', $orderBy, $vars, $lang->user->email);?></th>
|
||||
<th><?php common::printOrderLink('gander', $orderBy, $vars, $lang->user->gender);?></th>
|
||||
<th><?php common::printOrderLink('phone', $orderBy, $vars, $lang->user->phone);?></th>
|
||||
<th><?php common::printOrderLink('join', $orderBy, $vars, $lang->user->join);?></th>
|
||||
<th><?php common::printOrderLink('last', $orderBy, $vars, $lang->user->last);?></th>
|
||||
<th><?php common::printOrderLink('visits', $orderBy, $vars, $lang->user->visits);?></th>
|
||||
<th class='w-80px'><?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<form action='<?php echo $this->createLink('user', 'batchEdit', "deptID=$deptID")?>' method='post' id='userListForm'>
|
||||
<?php foreach($users as $user):?>
|
||||
<tr class='a-center'>
|
||||
<td><?php echo "<input type='checkbox' name='users[]' value='$user->account'> "; printf('%03d', $user->id);?></td>
|
||||
<td><?php if(!common::printLink('user', 'view', "account=$user->account", $user->realname)) echo $user->realname;?></td>
|
||||
<td><?php echo $user->account;?></td>
|
||||
<td><?php echo $lang->user->roleList[$user->role];?></td>
|
||||
<td><?php echo html::mailto($user->email);?></td>
|
||||
<td><?php if(isset($lang->user->genderList[$user->gender])) echo $lang->user->genderList[$user->gender];?></td>
|
||||
<td><?php echo $user->phone;?></td>
|
||||
<td><?php echo $user->join;?></td>
|
||||
<td><?php echo date('Y-m-d', $user->last);?></td>
|
||||
<td><?php echo $user->visits;?></td>
|
||||
<td class='a-left'>
|
||||
<?php
|
||||
common::printIcon('user', 'edit', "userID=$user->id&from=company", '', 'list');
|
||||
common::printIcon('user', 'delete', "userID=$user->id", '', 'list', '', "hiddenwin");
|
||||
if((strtotime(date('Y-m-d H:i:s')) - strtotime($user->locked)) < $this->config->user->lockMinutes * 60)
|
||||
{
|
||||
common::printIcon('user', 'unlock', "userID=$user->account", '', 'list', '', "hiddenwin");
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan='11'>
|
||||
<?php
|
||||
echo html::selectAll() . html::selectReverse();
|
||||
echo html::submitButton($lang->user->batchEdit, 'onclick=batchEdit()');
|
||||
echo html::submitButton($lang->user->contacts->manage, 'onclick=manageContacts()');
|
||||
$pager->show();
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<script lanugage='javascript'>$('#dept<?php echo $deptID;?>').addClass('active');</script>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The browse view file of product dept of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package product
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
include '../../common/view/header.html.php';
|
||||
include '../../common/view/treeview.html.php';
|
||||
include '../../common/view/colorize.html.php';
|
||||
js::set('deptID', $deptID);
|
||||
?>
|
||||
<table class='cont-lt1'>
|
||||
<tr><td colspan='3'><div id='querybox'><?php echo $searchForm?></div></td></tr>
|
||||
<tr valign='top'>
|
||||
<td class='side'>
|
||||
<div class='box-title'><?php echo $lang->dept->common;?></div>
|
||||
<div class='box-content'>
|
||||
<?php echo $deptTree;?>
|
||||
<div class='a-right'><?php common::printLink('dept', 'browse', '', $lang->dept->manage);?></div>
|
||||
</div>
|
||||
</td>
|
||||
<td class='divider'></td>
|
||||
<td>
|
||||
<table class='table-1 tablesorter colored'>
|
||||
<thead>
|
||||
<tr class='colhead'>
|
||||
<?php $vars = "param=$param&type=$type&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}";?>
|
||||
<th class='w-id'><?php common::printorderlink('id', $orderBy, $vars, $lang->idAB);?></th>
|
||||
<th><?php common::printorderlink('realname', $orderBy, $vars, $lang->user->realname);?></th>
|
||||
<th><?php common::printOrderLink('account', $orderBy, $vars, $lang->user->account);?></th>
|
||||
<th><?php common::printOrderLink('role', $orderBy, $vars, $lang->user->role);?></th>
|
||||
<th><?php common::printOrderLink('email', $orderBy, $vars, $lang->user->email);?></th>
|
||||
<th><?php common::printOrderLink('gander', $orderBy, $vars, $lang->user->gender);?></th>
|
||||
<th><?php common::printOrderLink('phone', $orderBy, $vars, $lang->user->phone);?></th>
|
||||
<th><?php common::printOrderLink('join', $orderBy, $vars, $lang->user->join);?></th>
|
||||
<th><?php common::printOrderLink('last', $orderBy, $vars, $lang->user->last);?></th>
|
||||
<th><?php common::printOrderLink('visits', $orderBy, $vars, $lang->user->visits);?></th>
|
||||
<th class='w-80px'><?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<form action='<?php echo $this->createLink('user', 'batchEdit', "deptID=$deptID")?>' method='post' id='userListForm'>
|
||||
<?php foreach($users as $user):?>
|
||||
<tr class='a-center'>
|
||||
<td><?php echo "<input type='checkbox' name='users[]' value='$user->account'> "; printf('%03d', $user->id);?></td>
|
||||
<td><?php if(!common::printLink('user', 'view', "account=$user->account", $user->realname)) echo $user->realname;?></td>
|
||||
<td><?php echo $user->account;?></td>
|
||||
<td><?php echo $lang->user->roleList[$user->role];?></td>
|
||||
<td><?php echo html::mailto($user->email);?></td>
|
||||
<td><?php if(isset($lang->user->genderList[$user->gender])) echo $lang->user->genderList[$user->gender];?></td>
|
||||
<td><?php echo $user->phone;?></td>
|
||||
<td><?php echo $user->join;?></td>
|
||||
<td><?php echo date('Y-m-d', $user->last);?></td>
|
||||
<td><?php echo $user->visits;?></td>
|
||||
<td class='a-left'>
|
||||
<?php
|
||||
common::printIcon('user', 'edit', "userID=$user->id&from=company", '', 'list');
|
||||
common::printIcon('user', 'delete', "userID=$user->id", '', 'list', '', "hiddenwin");
|
||||
if((strtotime(date('Y-m-d H:i:s')) - strtotime($user->locked)) < $this->config->user->lockMinutes * 60)
|
||||
{
|
||||
common::printIcon('user', 'unlock', "userID=$user->account", '', 'list', '', "hiddenwin");
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan='11'>
|
||||
<?php
|
||||
echo html::selectAll() . html::selectReverse();
|
||||
echo html::submitButton($lang->user->batchEdit, 'onclick=batchEdit()');
|
||||
echo html::submitButton($lang->user->contacts->manage, 'onclick=manageContacts()');
|
||||
$pager->show();
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<script lanugage='javascript'>$('#dept<?php echo $deptID;?>').addClass('active');</script>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,56 +1,56 @@
|
||||
<?php
|
||||
/**
|
||||
* The create view of company module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package company
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' target='hiddenwin' id='dataform'>
|
||||
<table align='center' class='table-5'>
|
||||
<caption><?php echo $lang->company->create;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->name;?></th>
|
||||
<td><?php echo html::input('name', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->phone;?></th>
|
||||
<td><?php echo html::input('phone', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->fax;?></th>
|
||||
<td><?php echo html::input('fax', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->address;?></th>
|
||||
<td><?php echo html::input('address', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->zipcode;?></th>
|
||||
<td><?php echo html::input('zipcode', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->website;?></th>
|
||||
<td><?php echo html::input('website', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->backyard;?></th>
|
||||
<td><?php echo html::input('backyard', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->pms;?></th>
|
||||
<td><?php echo html::input('pms', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->guest;?></th>
|
||||
<td><?php echo html::radio('guest', $lang->company->guestList);?></td>
|
||||
</tr>
|
||||
<tr><td colspan='2' class='a-center'><?php echo html::submitButton();?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The create view of company module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package company
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' target='hiddenwin' id='dataform'>
|
||||
<table align='center' class='table-5'>
|
||||
<caption><?php echo $lang->company->create;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->name;?></th>
|
||||
<td><?php echo html::input('name', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->phone;?></th>
|
||||
<td><?php echo html::input('phone', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->fax;?></th>
|
||||
<td><?php echo html::input('fax', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->address;?></th>
|
||||
<td><?php echo html::input('address', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->zipcode;?></th>
|
||||
<td><?php echo html::input('zipcode', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->website;?></th>
|
||||
<td><?php echo html::input('website', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->backyard;?></th>
|
||||
<td><?php echo html::input('backyard', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->pms;?></th>
|
||||
<td><?php echo html::input('pms', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->guest;?></th>
|
||||
<td><?php echo html::radio('guest', $lang->company->guestList);?></td>
|
||||
</tr>
|
||||
<tr><td colspan='2' class='a-center'><?php echo html::submitButton();?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,62 +1,62 @@
|
||||
<?php
|
||||
/**
|
||||
* The action->dynamic view file of dashboard module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package dashboard
|
||||
* @version $Id: action->dynamic.html.php 1477 2011-03-01 15:25:50Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/tablesorter.html.php';?>
|
||||
<script language='Javascript'>
|
||||
var browseType = '<?php echo $browseType;?>';
|
||||
</script>
|
||||
<div id='featurebar'>
|
||||
<?php
|
||||
echo '<span id="today">' . html::a(inlink('dynamic', "browseType=today"), $lang->action->dynamic->today) . '</span>';
|
||||
echo '<span id="yesterday">' . html::a(inlink('dynamic', "browseType=yesterday"), $lang->action->dynamic->yesterday) . '</span>';
|
||||
echo '<span id="twodaysago">' . html::a(inlink('dynamic', "browseType=twodaysago"), $lang->action->dynamic->twoDaysAgo) . '</span>';
|
||||
echo '<span id="thisweek">' . html::a(inlink('dynamic', "browseType=thisweek"), $lang->action->dynamic->thisWeek) . '</span>';
|
||||
echo '<span id="lastweek">' . html::a(inlink('dynamic', "browseType=lastweek"), $lang->action->dynamic->lastWeek) . '</span>';
|
||||
echo '<span id="thismonth">' . html::a(inlink('dynamic', "browseType=thismonth"), $lang->action->dynamic->thisMonth) . '</span>';
|
||||
echo '<span id="lastmonth">' . html::a(inlink('dynamic', "browseType=lastmonth"), $lang->action->dynamic->lastMonth) . '</span>';
|
||||
echo '<span id="all">' . html::a(inlink('dynamic', "browseType=all"), $lang->action->dynamic->all) . '</span>';
|
||||
echo "<span id='account'>" . html::select('account', $users, $account, 'onchange=changeUser(this.value)') . '</span>';
|
||||
echo "<span id='product'>" . html::select('product', $products, $product, 'onchange=changeProduct(this.value)') . '</span>';
|
||||
echo "<span id='project'>" . html::select('project', $projects, $project, 'onchange=changeProject(this.value)') . '</span>';
|
||||
echo "<span id='bysearchTab'>" . html::a('#', '<span class="icon-search"></span>' . $lang->action->dynamic->search) . "</span>";
|
||||
?>
|
||||
</div>
|
||||
<div id='querybox' class='<?php if($browseType !='bysearch') echo 'hidden';?>'></div>
|
||||
<table class='table-1 colored tablesorter'>
|
||||
<thead>
|
||||
<tr class='colhead'>
|
||||
<th class='w-150px'><?php echo $lang->action->date;?></th>
|
||||
<th class='w-user'> <?php echo $lang->action->actor;?></th>
|
||||
<th class='w-100px'><?php echo $lang->action->action;?></th>
|
||||
<th class='w-80px'> <?php echo $lang->action->objectType;?></th>
|
||||
<th class='w-id'> <?php echo $lang->idAB;?></th>
|
||||
<th><?php echo $lang->action->objectName;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($actions as $action):?>
|
||||
<?php $module = $action->objectType == 'case' ? 'testcase' : $action->objectType;?>
|
||||
<tr class='a-center'>
|
||||
<td><?php echo $action->date;?></td>
|
||||
<td><?php echo substr(isset($users[$action->actor]) ? $users[$action->actor] : $action->actor, 2);?></td>
|
||||
<td><?php echo $action->actionLabel;?></td>
|
||||
<td><?php echo $lang->action->objectTypes[$action->objectType];?></td>
|
||||
<td><?php echo $action->objectID;?></td>
|
||||
<td class='a-left'><?php echo html::a($action->objectLink, $action->objectName);?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
<tfoot><tr><td colspan='6'><?php $pager->show();?></td></tr></tfoot>
|
||||
</table>
|
||||
<script>$('#<?php echo $browseType;?>').addClass('active')</script>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The action->dynamic view file of dashboard module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package dashboard
|
||||
* @version $Id: action->dynamic.html.php 1477 2011-03-01 15:25:50Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/tablesorter.html.php';?>
|
||||
<script language='Javascript'>
|
||||
var browseType = '<?php echo $browseType;?>';
|
||||
</script>
|
||||
<div id='featurebar'>
|
||||
<?php
|
||||
echo '<span id="today">' . html::a(inlink('dynamic', "browseType=today"), $lang->action->dynamic->today) . '</span>';
|
||||
echo '<span id="yesterday">' . html::a(inlink('dynamic', "browseType=yesterday"), $lang->action->dynamic->yesterday) . '</span>';
|
||||
echo '<span id="twodaysago">' . html::a(inlink('dynamic', "browseType=twodaysago"), $lang->action->dynamic->twoDaysAgo) . '</span>';
|
||||
echo '<span id="thisweek">' . html::a(inlink('dynamic', "browseType=thisweek"), $lang->action->dynamic->thisWeek) . '</span>';
|
||||
echo '<span id="lastweek">' . html::a(inlink('dynamic', "browseType=lastweek"), $lang->action->dynamic->lastWeek) . '</span>';
|
||||
echo '<span id="thismonth">' . html::a(inlink('dynamic', "browseType=thismonth"), $lang->action->dynamic->thisMonth) . '</span>';
|
||||
echo '<span id="lastmonth">' . html::a(inlink('dynamic', "browseType=lastmonth"), $lang->action->dynamic->lastMonth) . '</span>';
|
||||
echo '<span id="all">' . html::a(inlink('dynamic', "browseType=all"), $lang->action->dynamic->all) . '</span>';
|
||||
echo "<span id='account'>" . html::select('account', $users, $account, 'onchange=changeUser(this.value)') . '</span>';
|
||||
echo "<span id='product'>" . html::select('product', $products, $product, 'onchange=changeProduct(this.value)') . '</span>';
|
||||
echo "<span id='project'>" . html::select('project', $projects, $project, 'onchange=changeProject(this.value)') . '</span>';
|
||||
echo "<span id='bysearchTab'>" . html::a('#', '<span class="icon-search"></span>' . $lang->action->dynamic->search) . "</span>";
|
||||
?>
|
||||
</div>
|
||||
<div id='querybox' class='<?php if($browseType !='bysearch') echo 'hidden';?>'></div>
|
||||
<table class='table-1 colored tablesorter'>
|
||||
<thead>
|
||||
<tr class='colhead'>
|
||||
<th class='w-150px'><?php echo $lang->action->date;?></th>
|
||||
<th class='w-user'> <?php echo $lang->action->actor;?></th>
|
||||
<th class='w-100px'><?php echo $lang->action->action;?></th>
|
||||
<th class='w-80px'> <?php echo $lang->action->objectType;?></th>
|
||||
<th class='w-id'> <?php echo $lang->idAB;?></th>
|
||||
<th><?php echo $lang->action->objectName;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($actions as $action):?>
|
||||
<?php $module = $action->objectType == 'case' ? 'testcase' : $action->objectType;?>
|
||||
<tr class='a-center'>
|
||||
<td><?php echo $action->date;?></td>
|
||||
<td><?php echo substr(isset($users[$action->actor]) ? $users[$action->actor] : $action->actor, 2);?></td>
|
||||
<td><?php echo $action->actionLabel;?></td>
|
||||
<td><?php echo $lang->action->objectTypes[$action->objectType];?></td>
|
||||
<td><?php echo $action->objectID;?></td>
|
||||
<td class='a-left'><?php echo html::a($action->objectLink, $action->objectName);?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
<tfoot><tr><td colspan='6'><?php $pager->show();?></td></tr></tfoot>
|
||||
</table>
|
||||
<script>$('#<?php echo $browseType;?>').addClass('active')</script>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,56 +1,56 @@
|
||||
<?php
|
||||
/**
|
||||
* The edit view of company module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package company
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' target='hiddenwin' id='dataform'>
|
||||
<table align='center' class='table-5'>
|
||||
<caption><?php echo $lang->company->edit;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->name;?></th>
|
||||
<td><?php echo html::input('name', $company->name, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->phone;?></th>
|
||||
<td><?php echo html::input('phone', $company->phone, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->fax;?></th>
|
||||
<td><?php echo html::input('fax', $company->fax, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->address;?></th>
|
||||
<td><?php echo html::input('address', $company->address, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->zipcode;?></th>
|
||||
<td><?php echo html::input('zipcode', $company->zipcode, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->website;?></th>
|
||||
<td><?php echo html::input('website', $company->website, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->backyard;?></th>
|
||||
<td><?php echo html::input('backyard', $company->backyard, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->pms;?></th>
|
||||
<td><?php echo html::input('pms', $company->pms, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->guest;?></th>
|
||||
<td><?php echo html::radio('guest', $lang->company->guestList, $company->guest);?></td>
|
||||
</tr>
|
||||
<tr><td colspan='2' class='a-center'><?php echo html::submitButton();?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The edit view of company module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package company
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' target='hiddenwin' id='dataform'>
|
||||
<table align='center' class='table-5'>
|
||||
<caption><?php echo $lang->company->edit;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->name;?></th>
|
||||
<td><?php echo html::input('name', $company->name, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->phone;?></th>
|
||||
<td><?php echo html::input('phone', $company->phone, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->fax;?></th>
|
||||
<td><?php echo html::input('fax', $company->fax, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->address;?></th>
|
||||
<td><?php echo html::input('address', $company->address, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->zipcode;?></th>
|
||||
<td><?php echo html::input('zipcode', $company->zipcode, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->website;?></th>
|
||||
<td><?php echo html::input('website', $company->website, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->backyard;?></th>
|
||||
<td><?php echo html::input('backyard', $company->backyard, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->pms;?></th>
|
||||
<td><?php echo html::input('pms', $company->pms, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->company->guest;?></th>
|
||||
<td><?php echo html::radio('guest', $lang->company->guestList, $company->guest);?></td>
|
||||
</tr>
|
||||
<tr><td colspan='2' class='a-center'><?php echo html::submitButton();?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
+240
-240
@@ -1,240 +1,240 @@
|
||||
<?php
|
||||
/**
|
||||
* The control file of convert currentModule of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class convert extends control
|
||||
{
|
||||
/**
|
||||
* Index page of convert.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$this->convert->saveState();
|
||||
$this->view->header->title = $this->lang->convert->common;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Select the source system.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function selectSource()
|
||||
{
|
||||
$this->view->header->title = $this->lang->convert->common . $this->lang->colon;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set configs of converter.
|
||||
*
|
||||
* This is the extrance of every system. It will call the set function of corresponding module.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setConfig()
|
||||
{
|
||||
if(!$this->post->source)
|
||||
{
|
||||
echo js::alert($this->lang->convert->mustSelectSource);
|
||||
die(js::locate('back'));
|
||||
}
|
||||
list($sourceName, $version) = explode('_', $this->post->source);
|
||||
$setFunc = "set$sourceName";
|
||||
$this->view->header->title = $this->lang->convert->setting;
|
||||
$this->view->source = $sourceName;
|
||||
$this->view->version = $version;
|
||||
$this->view->setting = $this->fetch('convert', $setFunc, "version=$version");
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* The setting page of bugfree.
|
||||
*
|
||||
* @param string $version
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setBugFree($version)
|
||||
{
|
||||
$this->view->source = 'BugFree';
|
||||
$this->view->version = $version;
|
||||
$this->view->tablePrefix = $version > 1 ? 'bf_' : '';
|
||||
$this->view->dbName = $version > 1 ? 'bugfree2' : 'BugFree';
|
||||
$this->view->dbCharset = 'utf8';
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* The setting page of Redmine.
|
||||
*
|
||||
* @param string $version
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setRedmine($version)
|
||||
{
|
||||
$this->view->source = 'Redmine';
|
||||
$this->view->version = $version;
|
||||
$this->view->dbName = 'redmine';
|
||||
$this->view->dbCharset = 'utf8';
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check config. Same as setConfig.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function checkConfig()
|
||||
{
|
||||
$checkFunc = 'check' . $this->post->source;
|
||||
$this->view->header->title = $this->lang->convert->checkConfig;
|
||||
$this->view->source = $this->post->source;
|
||||
$this->view->checkResult = $this->fetch('convert', $checkFunc, "version={$this->post->version}");
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check settings of bugfree.
|
||||
*
|
||||
* @param int $version
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function checkBugFree($version)
|
||||
{
|
||||
helper::import('./converter/bugfree.php');
|
||||
$converter = new bugfreeConvertModel();
|
||||
|
||||
/* Check it. */
|
||||
$checkInfo['db'] = $converter->connectDB();
|
||||
//if(is_object($checkInfo['db'])) $checkInfo['table'] = $converter->checkTables();
|
||||
$checkInfo['path'] = $converter->checkPath();
|
||||
|
||||
/* Compute the checking result. */
|
||||
$result = 'pass';
|
||||
if(!is_object($checkInfo['db']) or !$checkInfo['path']) $result = 'fail';
|
||||
|
||||
/* Assign. */
|
||||
$this->view->version = $version;
|
||||
$this->view->source = 'bugfree';
|
||||
$this->view->result = $result;
|
||||
$this->view->checkInfo = $checkInfo;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check settings of Redmine.
|
||||
*
|
||||
* @param int $version
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function checkRedmine($version)
|
||||
{
|
||||
helper::import('./converter/redmine.php');
|
||||
$converter = new redmineConvertModel();
|
||||
|
||||
/* Check it. */
|
||||
$checkInfo['db'] = $converter->connectDB();
|
||||
$checkInfo['path'] = $converter->checkPath();
|
||||
|
||||
$this->view->trackers = $this->dao->dbh($converter->sourceDBH)->select('id, name')->from('trackers')->fetchAll('id', $autoCompany = false);
|
||||
$this->view->statuses = $this->dao->dbh($converter->sourceDBH)->select('id, name')->from('issue_statuses')->fetchAll('id', $autoCompany = false);
|
||||
$this->view->pries = $this->dao->dbh($converter->sourceDBH)->select('id, name')->from('enumerations')->where('type')->eq('IssuePriority')->fetchAll('id', $autoCompany = false);
|
||||
/* Compute the checking result. */
|
||||
$result = 'pass';
|
||||
if(!is_object($checkInfo['db']) or !$checkInfo['path']) $result = 'fail';
|
||||
|
||||
$this->app->loadLang('bug');
|
||||
$this->app->loadLang('story');
|
||||
$this->app->loadLang('task');
|
||||
$this->view->aimTypeList['bug'] = 'bug';
|
||||
$this->view->aimTypeList['task'] = 'task';
|
||||
$this->view->aimTypeList['story'] = 'story';
|
||||
|
||||
/* Assign. */
|
||||
$this->view->version = $version;
|
||||
$this->view->source = 'Redmine';
|
||||
$this->view->result = $result;
|
||||
$this->view->checkInfo = $checkInfo;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the converting.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function execute()
|
||||
{
|
||||
$convertFunc = 'convert' . $this->post->source;
|
||||
$this->view->header->title = $this->lang->convert->execute;
|
||||
$this->view->source = $this->post->source;
|
||||
$this->view->version = $this->post->version;
|
||||
|
||||
$this->view->executeResult = $this->fetch('convert', $convertFunc, "version={$this->post->version}");
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert bugfree.
|
||||
*
|
||||
* @param int $version
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function convertBugFree($version)
|
||||
{
|
||||
helper::import('./converter/bugfree.php');
|
||||
helper::import("./converter/bugfree$version.php");
|
||||
$className = "bugfree{$version}ConvertModel";
|
||||
$converter = new $className();
|
||||
$this->view->version = $version;
|
||||
$this->view->result = $converter->execute($version);
|
||||
$this->view->info = bugfreeConvertModel::$info;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* convert redmine
|
||||
*
|
||||
* @param int $version
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function convertRedmine($version)
|
||||
{
|
||||
helper::import('./converter/redmine.php');
|
||||
helper::import("./converter/redmine$version.php");
|
||||
$className = "redmine11ConvertModel";
|
||||
$redmine->aimTypes = $this->post->aimTypes;
|
||||
$redmine->statusTypes['bug'] = $this->post->statusTypesOfBug;
|
||||
$redmine->statusTypes['story'] = $this->post->statusTypesOfStory;
|
||||
$redmine->statusTypes['task'] = $this->post->statusTypesOfTask;
|
||||
$redmine->priTypes['bug'] = $this->post->priTypesOfBug;
|
||||
$redmine->priTypes['story'] = $this->post->priTypesOfStory;
|
||||
$redmine->priTypes['task'] = $this->post->priTypesOfTask;
|
||||
|
||||
$converter = new $className($redmine);
|
||||
$this->view->version = $version;
|
||||
$this->view->result = $converter->execute($version);
|
||||
$this->view->info = redmineConvertModel::$info;
|
||||
$this->display();
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The control file of convert currentModule of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class convert extends control
|
||||
{
|
||||
/**
|
||||
* Index page of convert.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$this->convert->saveState();
|
||||
$this->view->header->title = $this->lang->convert->common;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Select the source system.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function selectSource()
|
||||
{
|
||||
$this->view->header->title = $this->lang->convert->common . $this->lang->colon;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set configs of converter.
|
||||
*
|
||||
* This is the extrance of every system. It will call the set function of corresponding module.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setConfig()
|
||||
{
|
||||
if(!$this->post->source)
|
||||
{
|
||||
echo js::alert($this->lang->convert->mustSelectSource);
|
||||
die(js::locate('back'));
|
||||
}
|
||||
list($sourceName, $version) = explode('_', $this->post->source);
|
||||
$setFunc = "set$sourceName";
|
||||
$this->view->header->title = $this->lang->convert->setting;
|
||||
$this->view->source = $sourceName;
|
||||
$this->view->version = $version;
|
||||
$this->view->setting = $this->fetch('convert', $setFunc, "version=$version");
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* The setting page of bugfree.
|
||||
*
|
||||
* @param string $version
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setBugFree($version)
|
||||
{
|
||||
$this->view->source = 'BugFree';
|
||||
$this->view->version = $version;
|
||||
$this->view->tablePrefix = $version > 1 ? 'bf_' : '';
|
||||
$this->view->dbName = $version > 1 ? 'bugfree2' : 'BugFree';
|
||||
$this->view->dbCharset = 'utf8';
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* The setting page of Redmine.
|
||||
*
|
||||
* @param string $version
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setRedmine($version)
|
||||
{
|
||||
$this->view->source = 'Redmine';
|
||||
$this->view->version = $version;
|
||||
$this->view->dbName = 'redmine';
|
||||
$this->view->dbCharset = 'utf8';
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check config. Same as setConfig.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function checkConfig()
|
||||
{
|
||||
$checkFunc = 'check' . $this->post->source;
|
||||
$this->view->header->title = $this->lang->convert->checkConfig;
|
||||
$this->view->source = $this->post->source;
|
||||
$this->view->checkResult = $this->fetch('convert', $checkFunc, "version={$this->post->version}");
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check settings of bugfree.
|
||||
*
|
||||
* @param int $version
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function checkBugFree($version)
|
||||
{
|
||||
helper::import('./converter/bugfree.php');
|
||||
$converter = new bugfreeConvertModel();
|
||||
|
||||
/* Check it. */
|
||||
$checkInfo['db'] = $converter->connectDB();
|
||||
//if(is_object($checkInfo['db'])) $checkInfo['table'] = $converter->checkTables();
|
||||
$checkInfo['path'] = $converter->checkPath();
|
||||
|
||||
/* Compute the checking result. */
|
||||
$result = 'pass';
|
||||
if(!is_object($checkInfo['db']) or !$checkInfo['path']) $result = 'fail';
|
||||
|
||||
/* Assign. */
|
||||
$this->view->version = $version;
|
||||
$this->view->source = 'bugfree';
|
||||
$this->view->result = $result;
|
||||
$this->view->checkInfo = $checkInfo;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check settings of Redmine.
|
||||
*
|
||||
* @param int $version
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function checkRedmine($version)
|
||||
{
|
||||
helper::import('./converter/redmine.php');
|
||||
$converter = new redmineConvertModel();
|
||||
|
||||
/* Check it. */
|
||||
$checkInfo['db'] = $converter->connectDB();
|
||||
$checkInfo['path'] = $converter->checkPath();
|
||||
|
||||
$this->view->trackers = $this->dao->dbh($converter->sourceDBH)->select('id, name')->from('trackers')->fetchAll('id', $autoCompany = false);
|
||||
$this->view->statuses = $this->dao->dbh($converter->sourceDBH)->select('id, name')->from('issue_statuses')->fetchAll('id', $autoCompany = false);
|
||||
$this->view->pries = $this->dao->dbh($converter->sourceDBH)->select('id, name')->from('enumerations')->where('type')->eq('IssuePriority')->fetchAll('id', $autoCompany = false);
|
||||
/* Compute the checking result. */
|
||||
$result = 'pass';
|
||||
if(!is_object($checkInfo['db']) or !$checkInfo['path']) $result = 'fail';
|
||||
|
||||
$this->app->loadLang('bug');
|
||||
$this->app->loadLang('story');
|
||||
$this->app->loadLang('task');
|
||||
$this->view->aimTypeList['bug'] = 'bug';
|
||||
$this->view->aimTypeList['task'] = 'task';
|
||||
$this->view->aimTypeList['story'] = 'story';
|
||||
|
||||
/* Assign. */
|
||||
$this->view->version = $version;
|
||||
$this->view->source = 'Redmine';
|
||||
$this->view->result = $result;
|
||||
$this->view->checkInfo = $checkInfo;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the converting.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function execute()
|
||||
{
|
||||
$convertFunc = 'convert' . $this->post->source;
|
||||
$this->view->header->title = $this->lang->convert->execute;
|
||||
$this->view->source = $this->post->source;
|
||||
$this->view->version = $this->post->version;
|
||||
|
||||
$this->view->executeResult = $this->fetch('convert', $convertFunc, "version={$this->post->version}");
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert bugfree.
|
||||
*
|
||||
* @param int $version
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function convertBugFree($version)
|
||||
{
|
||||
helper::import('./converter/bugfree.php');
|
||||
helper::import("./converter/bugfree$version.php");
|
||||
$className = "bugfree{$version}ConvertModel";
|
||||
$converter = new $className();
|
||||
$this->view->version = $version;
|
||||
$this->view->result = $converter->execute($version);
|
||||
$this->view->info = bugfreeConvertModel::$info;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* convert redmine
|
||||
*
|
||||
* @param int $version
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function convertRedmine($version)
|
||||
{
|
||||
helper::import('./converter/redmine.php');
|
||||
helper::import("./converter/redmine$version.php");
|
||||
$className = "redmine11ConvertModel";
|
||||
$redmine->aimTypes = $this->post->aimTypes;
|
||||
$redmine->statusTypes['bug'] = $this->post->statusTypesOfBug;
|
||||
$redmine->statusTypes['story'] = $this->post->statusTypesOfStory;
|
||||
$redmine->statusTypes['task'] = $this->post->statusTypesOfTask;
|
||||
$redmine->priTypes['bug'] = $this->post->priTypesOfBug;
|
||||
$redmine->priTypes['story'] = $this->post->priTypesOfStory;
|
||||
$redmine->priTypes['task'] = $this->post->priTypesOfTask;
|
||||
|
||||
$converter = new $className($redmine);
|
||||
$this->view->version = $version;
|
||||
$this->view->result = $converter->execute($version);
|
||||
$this->view->info = redmineConvertModel::$info;
|
||||
$this->display();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,88 +1,88 @@
|
||||
<?php
|
||||
/**
|
||||
* The baisc model file of bugfree convert of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class bugfreeConvertModel extends convertModel
|
||||
{
|
||||
public $map = array();
|
||||
public $filePath = '';
|
||||
static public $info = array();
|
||||
|
||||
/**
|
||||
* Connect to db auto.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
parent::connectDB();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check table.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function checkTables()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check the install path.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function checkPath()
|
||||
{
|
||||
$this->setPath();
|
||||
return file_exists($this->filePath);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the path of attachments.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function setPath()
|
||||
{
|
||||
$this->filePath = realpath($this->post->installPath) . $this->app->getPathFix() . 'BugFile' . $this->app->getPathFix();
|
||||
}
|
||||
|
||||
/**
|
||||
* Excute the convert.
|
||||
*
|
||||
* @param int $version
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function execute($version)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear rows added in converting.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function clear()
|
||||
{
|
||||
foreach($this->session->state as $table => $maxID)
|
||||
{
|
||||
$this->dao->dbh($this->dbh)->delete()->from($table)->where('id')->gt($maxID)->exec();
|
||||
}
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The baisc model file of bugfree convert of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class bugfreeConvertModel extends convertModel
|
||||
{
|
||||
public $map = array();
|
||||
public $filePath = '';
|
||||
static public $info = array();
|
||||
|
||||
/**
|
||||
* Connect to db auto.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
parent::connectDB();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check table.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function checkTables()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check the install path.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function checkPath()
|
||||
{
|
||||
$this->setPath();
|
||||
return file_exists($this->filePath);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the path of attachments.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function setPath()
|
||||
{
|
||||
$this->filePath = realpath($this->post->installPath) . $this->app->getPathFix() . 'BugFile' . $this->app->getPathFix();
|
||||
}
|
||||
|
||||
/**
|
||||
* Excute the convert.
|
||||
*
|
||||
* @param int $version
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function execute($version)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear rows added in converting.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function clear()
|
||||
{
|
||||
foreach($this->session->state as $table => $maxID)
|
||||
{
|
||||
$this->dao->dbh($this->dbh)->delete()->from($table)->where('id')->gt($maxID)->exec();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,318 +1,318 @@
|
||||
<?php
|
||||
/**
|
||||
* The model file of bugfree version 1 convert of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class bugfree1ConvertModel extends bugfreeConvertModel
|
||||
{
|
||||
/**
|
||||
* Execute the convert.
|
||||
*
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function execute()
|
||||
{
|
||||
$this->clear();
|
||||
$this->convertGroup();
|
||||
$result['users'] = $this->convertUser();
|
||||
$result['projects'] = $this->convertProject();
|
||||
$result['modules'] = $this->convertModule();
|
||||
$result['bugs'] = $this->convertBug();
|
||||
$result['actions'] = $this->convertAction();
|
||||
$result['files'] = $this->convertFile();
|
||||
$this->dao->dbh($this->dbh);
|
||||
$this->loadModel('tree')->fixModulePath();
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert groups.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function convertGroup()
|
||||
{
|
||||
$groups = $this->dao->dbh($this->sourceDBH)
|
||||
->select("groupID AS id, groupName AS name, groupUser AS users")
|
||||
->from('BugGroup')
|
||||
->fetchAll('id', $autoCompany = false);
|
||||
foreach($groups as $groupID => $group)
|
||||
{
|
||||
/* Explode into array. */
|
||||
$groupUsers = explode(',', $group->users);
|
||||
unset($group->id);
|
||||
unset($group->users);
|
||||
|
||||
/* Insert the group. */
|
||||
$this->dao->dbh($this->dbh)->insert(TABLE_GROUP)->data($group)->exec();
|
||||
$zentaoGroupID = $this->dao->lastInsertId();
|
||||
|
||||
/* Insert account. */
|
||||
foreach($groupUsers as $account)
|
||||
{
|
||||
if(empty($account)) continue;
|
||||
$this->dao->dbh($this->dbh)->insert(TABLE_USERGROUP)->set('`group`')->eq($zentaoGroupID)->set('account')->eq($account)->exec();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert user.
|
||||
*
|
||||
* @access public
|
||||
* @return int converted user count
|
||||
*/
|
||||
public function convertUser()
|
||||
{
|
||||
/* Get users exist in the system. */
|
||||
$activeUsers = $this->dao
|
||||
->dbh($this->sourceDBH)
|
||||
->select("username AS account, userpassword AS password, realname, email")
|
||||
->from('BugUser')
|
||||
->orderBy('userID ASC')
|
||||
->fetchAll('account', $autoCompany = false);
|
||||
|
||||
/* Get users in histories. */
|
||||
$allUsers = $this->dao->select("distinct(username) AS account")->from('BugHistory')->fetchPairs('', '', $autoCompany = false);
|
||||
|
||||
/* Merge them. */
|
||||
foreach($allUsers as $key => $account)
|
||||
{
|
||||
if(isset($activeUsers[$account]))
|
||||
{
|
||||
$allUsers[$key] = $activeUsers[$account];
|
||||
}
|
||||
else
|
||||
{
|
||||
$allUsers[$key] = array('account' => $account, 'realname' => $account, 'deleted' => '1');
|
||||
}
|
||||
}
|
||||
foreach($activeUsers as $account => $user) if(!isset($allUsers[$account])) $allUsers[$account] = $user;
|
||||
|
||||
/* Insert into zentao. */
|
||||
$convertCount = 0;
|
||||
foreach($allUsers as $account => $user)
|
||||
{
|
||||
if(!$this->dao->dbh($this->dbh)->findByAccount($account)->from(TABLE_USER)->fetch('account'))
|
||||
{
|
||||
$this->dao->dbh($this->dbh)->insert(TABLE_USER)->data($user)->exec();
|
||||
$convertCount ++;
|
||||
}
|
||||
else
|
||||
{
|
||||
self::$info['users'][] = sprintf($this->lang->convert->errorUserExists, $account);
|
||||
}
|
||||
}
|
||||
return $convertCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert project in bugfree to product in zentao.
|
||||
*
|
||||
* @access public
|
||||
* @return int converted project count
|
||||
*/
|
||||
public function convertProject()
|
||||
{
|
||||
$projects = $this->dao->dbh($this->sourceDBH)->select("projectID AS id, projectName AS name")->from('BugProject')->fetchAll('id', $autoCompany = false);
|
||||
foreach($projects as $projectID => $project)
|
||||
{
|
||||
unset($project->id);
|
||||
$this->dao->dbh($this->dbh)->insert(TABLE_PRODUCT)->data($project)->exec();
|
||||
$this->map['product'][$projectID] = $this->dao->lastInsertID();
|
||||
}
|
||||
return count($projects);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert modules.
|
||||
*
|
||||
* @access public
|
||||
* @return int converted modules count
|
||||
*/
|
||||
public function convertModule()
|
||||
{
|
||||
$this->map['module'][0] = 0;
|
||||
$modules = $this->dao
|
||||
->dbh($this->sourceDBH)
|
||||
->select(
|
||||
'moduleID AS id,
|
||||
projectID AS root,
|
||||
moduleName AS name,
|
||||
moduleGrade AS grade,
|
||||
parentID AS parent,
|
||||
"bug" AS type')
|
||||
->from('BugModule')
|
||||
->orderBy('id ASC')
|
||||
->fetchAll('id', $autoCompany = false);
|
||||
foreach($modules as $moduleID => $module)
|
||||
{
|
||||
$module->root = $this->map['product'][$module->root];
|
||||
unset($module->id);
|
||||
$this->dao->dbh($this->dbh)->insert(TABLE_MODULE)->data($module)->exec();
|
||||
$this->map['module'][$moduleID] = $this->dao->lastInsertID();
|
||||
}
|
||||
|
||||
/* Update parents. */
|
||||
foreach($modules as $oldModuleID => $module)
|
||||
{
|
||||
$newModuleID = $this->map['module'][$oldModuleID];
|
||||
$newParentID = $this->map['module'][$module->parent];
|
||||
$this->dao->dbh($this->dbh)->update(TABLE_MODULE)->set('parent')->eq($newParentID)->where('id')->eq($newModuleID)->exec();
|
||||
}
|
||||
return count($modules);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert bugs.
|
||||
*
|
||||
* @access public
|
||||
* @return int converted bugs count.
|
||||
*/
|
||||
public function convertBug()
|
||||
{
|
||||
$bugs = $this->dao
|
||||
->dbh($this->sourceDBH)
|
||||
->select('
|
||||
bugID AS id,
|
||||
projectID AS product,
|
||||
moduleID AS module,
|
||||
bugTitle AS title,
|
||||
bugSeverity AS severity,
|
||||
bugType AS type,
|
||||
bugOS AS os,
|
||||
bugStatus AS status,
|
||||
mailto,
|
||||
openedBy, openedDate, openedBuild,
|
||||
assignedTo, assignedDate,
|
||||
resolvedBy, resolution, resolvedBuild, resolvedDate,
|
||||
closedBy, closedDate,
|
||||
lastEditedBy, lastEditedDate,
|
||||
linkID as duplicateBug
|
||||
')
|
||||
->from('BugInfo')
|
||||
->orderBy('bugID')
|
||||
->fetchAll('id', $autoCompany = false);
|
||||
foreach($bugs as $bugID => $bug)
|
||||
{
|
||||
/* Adjust some fields of bug. */
|
||||
$bugID = (int)$bugID;
|
||||
unset($bug->id);
|
||||
if($bug->assignedTo == 'Closed') $bug->assignedTo = 'closed';
|
||||
$bug->type = strtolower($bug->type);
|
||||
$bug->os = strtolower($bug->os);
|
||||
$bug->browser = 'all';
|
||||
$bug->resolution = str_replace(' ','', strtolower($bug->resolution));
|
||||
$bug->product = $this->map['product'][$bug->product];
|
||||
$bug->module = $this->map['module'][$bug->module];
|
||||
$this->dao->dbh($this->dbh)->insert(TABLE_BUG)->data($bug)->exec();
|
||||
$this->map['bug'][$bugID] = $this->dao->lastInsertID();
|
||||
}
|
||||
|
||||
/* Update duplicated bugs. */
|
||||
foreach($this->map['bug'] as $oldBugID => $newBugID)
|
||||
{
|
||||
$this->dao->dbh($this->dbh)->update(TABLE_BUG)->set('duplicateBug')->eq($newBugID)->where('duplicateBug')->eq($oldBugID)->exec();
|
||||
}
|
||||
return count($bugs);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert actions.
|
||||
*
|
||||
* @access public
|
||||
* @return int converted actions count.
|
||||
*/
|
||||
public function convertAction()
|
||||
{
|
||||
$actions = $this->dao
|
||||
->dbh($this->sourceDBH)
|
||||
->select("
|
||||
'bug' AS objectType,
|
||||
bugID AS objectID,
|
||||
userName AS actor,
|
||||
action,
|
||||
fullInfo AS comment,
|
||||
actionDate AS date")
|
||||
->from('BugHistory')
|
||||
->orderBy('bugID, historyID')
|
||||
->fetchGroup('objectID', '', $autoCompany = false);
|
||||
$convertCount = 0;
|
||||
foreach($actions as $bugID => $bugActions)
|
||||
{
|
||||
/* Get the related bugID. */
|
||||
$bugID = (int)$bugID;
|
||||
$zentaoBugID = $this->map['bug'][$bugID];
|
||||
|
||||
/* Process actions. */
|
||||
foreach($bugActions as $key => $action)
|
||||
{
|
||||
$action->objectID = $zentaoBugID;
|
||||
if($key == 0)
|
||||
{
|
||||
$this->dao->dbh($this->dbh)->update(TABLE_BUG)->set('steps')->eq(nl2br($action->comment))->where('id')->eq($zentaoBugID)->exec();
|
||||
$action->comment = '';
|
||||
}
|
||||
$this->dao->dbh($this->dbh)->insert(TABLE_ACTION)->data($action)->exec();
|
||||
$convertCount ++;
|
||||
}
|
||||
}
|
||||
return $convertCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert files.
|
||||
*
|
||||
* @access public
|
||||
* @return int converted files count.
|
||||
*/
|
||||
public function convertFile()
|
||||
{
|
||||
$this->setPath();
|
||||
$files = $this->dao->dbh($this->sourceDBH)
|
||||
->select("
|
||||
fileName AS pathname,
|
||||
fileTitle AS title,
|
||||
fileType AS extension,
|
||||
fileSize AS size,
|
||||
'bug' AS objectType,
|
||||
bugID AS objectID,
|
||||
addUser AS addedBy,
|
||||
addDate AS addedDate
|
||||
")
|
||||
->from('BugFile')
|
||||
->orderBy('fileID')
|
||||
->fetchAll('', $autoCompany = false);
|
||||
foreach($files as $file)
|
||||
{
|
||||
$file->objectID = $this->map['bug'][(int)$file->objectID];
|
||||
if(strpos($file->size, 'KB')) $file->size = (int)(str_replace('KB', '', $file->size) * 1024);
|
||||
if(strpos($file->size, 'MB')) $file->size = (int)(str_replace('MB', '', $file->size) * 1024 * 1024);
|
||||
$this->dao->dbh($this->dbh)->insert(TABLE_FILE)->data($file)->exec();
|
||||
|
||||
/* Copy files. */
|
||||
$soureFile = $this->filePath . $file->pathname;
|
||||
if(!file_exists($soureFile))
|
||||
{
|
||||
self::$info['files'][] = sprintf($this->lang->convert->errorFileNotExits, $soureFile);
|
||||
continue;
|
||||
}
|
||||
$targetFile = $this->app->getAppRoot() . "www/data/upload/{$this->app->company->id}/" . $file->pathname;
|
||||
$targetPath = dirname($targetFile);
|
||||
if(!is_dir($targetPath)) mkdir($targetPath, 0777, true);
|
||||
if(!copy($soureFile, $targetFile))
|
||||
{
|
||||
self::$info['files'][] = sprintf($this->lang->convert->errorCopyFailed, $targetFile);
|
||||
}
|
||||
}
|
||||
return count($files);
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The model file of bugfree version 1 convert of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class bugfree1ConvertModel extends bugfreeConvertModel
|
||||
{
|
||||
/**
|
||||
* Execute the convert.
|
||||
*
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function execute()
|
||||
{
|
||||
$this->clear();
|
||||
$this->convertGroup();
|
||||
$result['users'] = $this->convertUser();
|
||||
$result['projects'] = $this->convertProject();
|
||||
$result['modules'] = $this->convertModule();
|
||||
$result['bugs'] = $this->convertBug();
|
||||
$result['actions'] = $this->convertAction();
|
||||
$result['files'] = $this->convertFile();
|
||||
$this->dao->dbh($this->dbh);
|
||||
$this->loadModel('tree')->fixModulePath();
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert groups.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function convertGroup()
|
||||
{
|
||||
$groups = $this->dao->dbh($this->sourceDBH)
|
||||
->select("groupID AS id, groupName AS name, groupUser AS users")
|
||||
->from('BugGroup')
|
||||
->fetchAll('id', $autoCompany = false);
|
||||
foreach($groups as $groupID => $group)
|
||||
{
|
||||
/* Explode into array. */
|
||||
$groupUsers = explode(',', $group->users);
|
||||
unset($group->id);
|
||||
unset($group->users);
|
||||
|
||||
/* Insert the group. */
|
||||
$this->dao->dbh($this->dbh)->insert(TABLE_GROUP)->data($group)->exec();
|
||||
$zentaoGroupID = $this->dao->lastInsertId();
|
||||
|
||||
/* Insert account. */
|
||||
foreach($groupUsers as $account)
|
||||
{
|
||||
if(empty($account)) continue;
|
||||
$this->dao->dbh($this->dbh)->insert(TABLE_USERGROUP)->set('`group`')->eq($zentaoGroupID)->set('account')->eq($account)->exec();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert user.
|
||||
*
|
||||
* @access public
|
||||
* @return int converted user count
|
||||
*/
|
||||
public function convertUser()
|
||||
{
|
||||
/* Get users exist in the system. */
|
||||
$activeUsers = $this->dao
|
||||
->dbh($this->sourceDBH)
|
||||
->select("username AS account, userpassword AS password, realname, email")
|
||||
->from('BugUser')
|
||||
->orderBy('userID ASC')
|
||||
->fetchAll('account', $autoCompany = false);
|
||||
|
||||
/* Get users in histories. */
|
||||
$allUsers = $this->dao->select("distinct(username) AS account")->from('BugHistory')->fetchPairs('', '', $autoCompany = false);
|
||||
|
||||
/* Merge them. */
|
||||
foreach($allUsers as $key => $account)
|
||||
{
|
||||
if(isset($activeUsers[$account]))
|
||||
{
|
||||
$allUsers[$key] = $activeUsers[$account];
|
||||
}
|
||||
else
|
||||
{
|
||||
$allUsers[$key] = array('account' => $account, 'realname' => $account, 'deleted' => '1');
|
||||
}
|
||||
}
|
||||
foreach($activeUsers as $account => $user) if(!isset($allUsers[$account])) $allUsers[$account] = $user;
|
||||
|
||||
/* Insert into zentao. */
|
||||
$convertCount = 0;
|
||||
foreach($allUsers as $account => $user)
|
||||
{
|
||||
if(!$this->dao->dbh($this->dbh)->findByAccount($account)->from(TABLE_USER)->fetch('account'))
|
||||
{
|
||||
$this->dao->dbh($this->dbh)->insert(TABLE_USER)->data($user)->exec();
|
||||
$convertCount ++;
|
||||
}
|
||||
else
|
||||
{
|
||||
self::$info['users'][] = sprintf($this->lang->convert->errorUserExists, $account);
|
||||
}
|
||||
}
|
||||
return $convertCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert project in bugfree to product in zentao.
|
||||
*
|
||||
* @access public
|
||||
* @return int converted project count
|
||||
*/
|
||||
public function convertProject()
|
||||
{
|
||||
$projects = $this->dao->dbh($this->sourceDBH)->select("projectID AS id, projectName AS name")->from('BugProject')->fetchAll('id', $autoCompany = false);
|
||||
foreach($projects as $projectID => $project)
|
||||
{
|
||||
unset($project->id);
|
||||
$this->dao->dbh($this->dbh)->insert(TABLE_PRODUCT)->data($project)->exec();
|
||||
$this->map['product'][$projectID] = $this->dao->lastInsertID();
|
||||
}
|
||||
return count($projects);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert modules.
|
||||
*
|
||||
* @access public
|
||||
* @return int converted modules count
|
||||
*/
|
||||
public function convertModule()
|
||||
{
|
||||
$this->map['module'][0] = 0;
|
||||
$modules = $this->dao
|
||||
->dbh($this->sourceDBH)
|
||||
->select(
|
||||
'moduleID AS id,
|
||||
projectID AS root,
|
||||
moduleName AS name,
|
||||
moduleGrade AS grade,
|
||||
parentID AS parent,
|
||||
"bug" AS type')
|
||||
->from('BugModule')
|
||||
->orderBy('id ASC')
|
||||
->fetchAll('id', $autoCompany = false);
|
||||
foreach($modules as $moduleID => $module)
|
||||
{
|
||||
$module->root = $this->map['product'][$module->root];
|
||||
unset($module->id);
|
||||
$this->dao->dbh($this->dbh)->insert(TABLE_MODULE)->data($module)->exec();
|
||||
$this->map['module'][$moduleID] = $this->dao->lastInsertID();
|
||||
}
|
||||
|
||||
/* Update parents. */
|
||||
foreach($modules as $oldModuleID => $module)
|
||||
{
|
||||
$newModuleID = $this->map['module'][$oldModuleID];
|
||||
$newParentID = $this->map['module'][$module->parent];
|
||||
$this->dao->dbh($this->dbh)->update(TABLE_MODULE)->set('parent')->eq($newParentID)->where('id')->eq($newModuleID)->exec();
|
||||
}
|
||||
return count($modules);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert bugs.
|
||||
*
|
||||
* @access public
|
||||
* @return int converted bugs count.
|
||||
*/
|
||||
public function convertBug()
|
||||
{
|
||||
$bugs = $this->dao
|
||||
->dbh($this->sourceDBH)
|
||||
->select('
|
||||
bugID AS id,
|
||||
projectID AS product,
|
||||
moduleID AS module,
|
||||
bugTitle AS title,
|
||||
bugSeverity AS severity,
|
||||
bugType AS type,
|
||||
bugOS AS os,
|
||||
bugStatus AS status,
|
||||
mailto,
|
||||
openedBy, openedDate, openedBuild,
|
||||
assignedTo, assignedDate,
|
||||
resolvedBy, resolution, resolvedBuild, resolvedDate,
|
||||
closedBy, closedDate,
|
||||
lastEditedBy, lastEditedDate,
|
||||
linkID as duplicateBug
|
||||
')
|
||||
->from('BugInfo')
|
||||
->orderBy('bugID')
|
||||
->fetchAll('id', $autoCompany = false);
|
||||
foreach($bugs as $bugID => $bug)
|
||||
{
|
||||
/* Adjust some fields of bug. */
|
||||
$bugID = (int)$bugID;
|
||||
unset($bug->id);
|
||||
if($bug->assignedTo == 'Closed') $bug->assignedTo = 'closed';
|
||||
$bug->type = strtolower($bug->type);
|
||||
$bug->os = strtolower($bug->os);
|
||||
$bug->browser = 'all';
|
||||
$bug->resolution = str_replace(' ','', strtolower($bug->resolution));
|
||||
$bug->product = $this->map['product'][$bug->product];
|
||||
$bug->module = $this->map['module'][$bug->module];
|
||||
$this->dao->dbh($this->dbh)->insert(TABLE_BUG)->data($bug)->exec();
|
||||
$this->map['bug'][$bugID] = $this->dao->lastInsertID();
|
||||
}
|
||||
|
||||
/* Update duplicated bugs. */
|
||||
foreach($this->map['bug'] as $oldBugID => $newBugID)
|
||||
{
|
||||
$this->dao->dbh($this->dbh)->update(TABLE_BUG)->set('duplicateBug')->eq($newBugID)->where('duplicateBug')->eq($oldBugID)->exec();
|
||||
}
|
||||
return count($bugs);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert actions.
|
||||
*
|
||||
* @access public
|
||||
* @return int converted actions count.
|
||||
*/
|
||||
public function convertAction()
|
||||
{
|
||||
$actions = $this->dao
|
||||
->dbh($this->sourceDBH)
|
||||
->select("
|
||||
'bug' AS objectType,
|
||||
bugID AS objectID,
|
||||
userName AS actor,
|
||||
action,
|
||||
fullInfo AS comment,
|
||||
actionDate AS date")
|
||||
->from('BugHistory')
|
||||
->orderBy('bugID, historyID')
|
||||
->fetchGroup('objectID', '', $autoCompany = false);
|
||||
$convertCount = 0;
|
||||
foreach($actions as $bugID => $bugActions)
|
||||
{
|
||||
/* Get the related bugID. */
|
||||
$bugID = (int)$bugID;
|
||||
$zentaoBugID = $this->map['bug'][$bugID];
|
||||
|
||||
/* Process actions. */
|
||||
foreach($bugActions as $key => $action)
|
||||
{
|
||||
$action->objectID = $zentaoBugID;
|
||||
if($key == 0)
|
||||
{
|
||||
$this->dao->dbh($this->dbh)->update(TABLE_BUG)->set('steps')->eq(nl2br($action->comment))->where('id')->eq($zentaoBugID)->exec();
|
||||
$action->comment = '';
|
||||
}
|
||||
$this->dao->dbh($this->dbh)->insert(TABLE_ACTION)->data($action)->exec();
|
||||
$convertCount ++;
|
||||
}
|
||||
}
|
||||
return $convertCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert files.
|
||||
*
|
||||
* @access public
|
||||
* @return int converted files count.
|
||||
*/
|
||||
public function convertFile()
|
||||
{
|
||||
$this->setPath();
|
||||
$files = $this->dao->dbh($this->sourceDBH)
|
||||
->select("
|
||||
fileName AS pathname,
|
||||
fileTitle AS title,
|
||||
fileType AS extension,
|
||||
fileSize AS size,
|
||||
'bug' AS objectType,
|
||||
bugID AS objectID,
|
||||
addUser AS addedBy,
|
||||
addDate AS addedDate
|
||||
")
|
||||
->from('BugFile')
|
||||
->orderBy('fileID')
|
||||
->fetchAll('', $autoCompany = false);
|
||||
foreach($files as $file)
|
||||
{
|
||||
$file->objectID = $this->map['bug'][(int)$file->objectID];
|
||||
if(strpos($file->size, 'KB')) $file->size = (int)(str_replace('KB', '', $file->size) * 1024);
|
||||
if(strpos($file->size, 'MB')) $file->size = (int)(str_replace('MB', '', $file->size) * 1024 * 1024);
|
||||
$this->dao->dbh($this->dbh)->insert(TABLE_FILE)->data($file)->exec();
|
||||
|
||||
/* Copy files. */
|
||||
$soureFile = $this->filePath . $file->pathname;
|
||||
if(!file_exists($soureFile))
|
||||
{
|
||||
self::$info['files'][] = sprintf($this->lang->convert->errorFileNotExits, $soureFile);
|
||||
continue;
|
||||
}
|
||||
$targetFile = $this->app->getAppRoot() . "www/data/upload/{$this->app->company->id}/" . $file->pathname;
|
||||
$targetPath = dirname($targetFile);
|
||||
if(!is_dir($targetPath)) mkdir($targetPath, 0777, true);
|
||||
if(!copy($soureFile, $targetFile))
|
||||
{
|
||||
self::$info['files'][] = sprintf($this->lang->convert->errorCopyFailed, $targetFile);
|
||||
}
|
||||
}
|
||||
return count($files);
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,88 +1,88 @@
|
||||
<?php
|
||||
/**
|
||||
* The baisc model file of bugfree convert of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Yangyang Shi <shiyangyang@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class redmineConvertModel extends convertModel
|
||||
{
|
||||
public $map = array();
|
||||
public $filePath = '';
|
||||
static public $info = array();
|
||||
|
||||
/**
|
||||
* Connect to db auto.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
parent::connectDB();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check table.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function checkTables()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check the install path.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function checkPath()
|
||||
{
|
||||
$this->setPath();
|
||||
return file_exists($this->filePath);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the path of attachments.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function setPath()
|
||||
{
|
||||
$this->filePath = realpath($this->post->installPath) . $this->app->getPathFix() . 'files' . $this->app->getPathFix();
|
||||
}
|
||||
|
||||
/**
|
||||
* Excute the convert.
|
||||
*
|
||||
* @param int $version
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function execute($version)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear rows added in converting.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function clear()
|
||||
{
|
||||
foreach($this->session->state as $table => $maxID)
|
||||
{
|
||||
$this->dao->dbh($this->dbh)->delete()->from($table)->where('id')->gt($maxID)->exec();
|
||||
}
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The baisc model file of bugfree convert of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Yangyang Shi <shiyangyang@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class redmineConvertModel extends convertModel
|
||||
{
|
||||
public $map = array();
|
||||
public $filePath = '';
|
||||
static public $info = array();
|
||||
|
||||
/**
|
||||
* Connect to db auto.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
parent::connectDB();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check table.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function checkTables()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check the install path.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function checkPath()
|
||||
{
|
||||
$this->setPath();
|
||||
return file_exists($this->filePath);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the path of attachments.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function setPath()
|
||||
{
|
||||
$this->filePath = realpath($this->post->installPath) . $this->app->getPathFix() . 'files' . $this->app->getPathFix();
|
||||
}
|
||||
|
||||
/**
|
||||
* Excute the convert.
|
||||
*
|
||||
* @param int $version
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function execute($version)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear rows added in converting.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function clear()
|
||||
{
|
||||
foreach($this->session->state as $table => $maxID)
|
||||
{
|
||||
$this->dao->dbh($this->dbh)->delete()->from($table)->where('id')->gt($maxID)->exec();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+124
-124
@@ -1,124 +1,124 @@
|
||||
<?php
|
||||
/**
|
||||
* The convert module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->convert->common = 'Import';
|
||||
$lang->convert->index = 'Index';
|
||||
$lang->convert->next = 'Next';
|
||||
$lang->convert->pre = 'Back';
|
||||
$lang->convert->reload = 'Reload';
|
||||
$lang->convert->error = 'Error ';
|
||||
|
||||
$lang->convert->start = 'Begin import';
|
||||
$lang->convert->desc = <<<EOT
|
||||
<p>Welcome to use this convert wizard which will help you to import other system data to ZenTaoPMS.</p>
|
||||
<strong>Importing is dangerous. Be sure to backup your database and other data files and sure nobody is using pms when importing.</strong>
|
||||
EOT;
|
||||
|
||||
$lang->convert->setConfig = 'Source config';
|
||||
$lang->convert->setBugfree = 'Bugfree config';
|
||||
$lang->convert->setRedmine = 'Redmine config';
|
||||
$lang->convert->checkBugFree = 'Check Bugfree';
|
||||
$lang->convert->checkRedmine = 'Check Redmine';
|
||||
$lang->convert->convertRedmine = 'Convert Redmine';
|
||||
$lang->convert->convertBugFree = 'Convert BugFree';
|
||||
|
||||
$lang->convert->selectSource = 'Select source system and version';
|
||||
$lang->convert->source = 'Source system';
|
||||
$lang->convert->version = 'Version';
|
||||
$lang->convert->mustSelectSource = "Must select a source system";
|
||||
|
||||
$lang->convert->direction = 'Please select the direction of issue in Redmine';
|
||||
$lang->convert->questionTypeOfRedmine = 'Types of issue in Redmine';
|
||||
$lang->convert->aimTypeOfZentao = 'Aim type in Zentao';
|
||||
|
||||
$lang->convert->directionList['bug'] = 'Bug';
|
||||
$lang->convert->directionList['task'] = 'Task';
|
||||
$lang->convert->directionList['story'] = 'Story';
|
||||
|
||||
$lang->convert->sourceList['BugFree'] = array('bugfree_1' => '1.x', 'bugfree_2' => '2.x');
|
||||
$lang->convert->sourceList['Redmine'] = array('Redmine_1_1' => '1.1');
|
||||
|
||||
$lang->convert->setting = 'Setting';
|
||||
$lang->convert->checkConfig = 'Check setting';
|
||||
|
||||
$lang->convert->ok = 'Check passed(√)';
|
||||
$lang->convert->fail = 'Check failed(×)';
|
||||
|
||||
$lang->convert->settingDB = 'Set database';
|
||||
$lang->convert->dbHost = 'Database server';
|
||||
$lang->convert->dbPort = 'Server port';
|
||||
$lang->convert->dbUser = 'Database user';
|
||||
$lang->convert->dbPassword = 'Database password';
|
||||
$lang->convert->dbName = '%s database';
|
||||
$lang->convert->dbCharset = '%s charset';
|
||||
$lang->convert->dbPrefix = '%s table prefix';
|
||||
$lang->convert->installPath = '%s installed path';
|
||||
|
||||
$lang->convert->checkDB = 'Database';
|
||||
$lang->convert->checkTable = 'Table';
|
||||
$lang->convert->checkPath = 'Installed path';
|
||||
|
||||
$lang->convert->execute = 'Execute import';
|
||||
$lang->convert->item = 'Imported items';
|
||||
$lang->convert->count = 'Count';
|
||||
$lang->convert->info = 'Info';
|
||||
|
||||
$lang->convert->bugfree = new stdclass();
|
||||
$lang->convert->bugfree->users = 'User';
|
||||
$lang->convert->bugfree->projects = 'Project';
|
||||
$lang->convert->bugfree->modules = 'Module';
|
||||
$lang->convert->bugfree->bugs = 'Bug';
|
||||
$lang->convert->bugfree->cases = 'Case';
|
||||
$lang->convert->bugfree->results = 'Result';
|
||||
$lang->convert->bugfree->actions = 'History';
|
||||
$lang->convert->bugfree->files = 'File';
|
||||
|
||||
$lang->convert->redmine = new stdclass();
|
||||
$lang->convert->redmine->users = 'Users';
|
||||
$lang->convert->redmine->groups = 'Groups';
|
||||
$lang->convert->redmine->products = 'Products';
|
||||
$lang->convert->redmine->projects = 'Projects';
|
||||
$lang->convert->redmine->stories = 'Stories';
|
||||
$lang->convert->redmine->tasks = 'Tasks';
|
||||
$lang->convert->redmine->bugs = 'Bugs';
|
||||
$lang->convert->redmine->productPlans = 'ProductPlans';
|
||||
$lang->convert->redmine->teams = 'Teams';
|
||||
$lang->convert->redmine->releases = 'Releases';
|
||||
$lang->convert->redmine->builds = 'Builds';
|
||||
$lang->convert->redmine->docLibs = 'DocLibs';
|
||||
$lang->convert->redmine->docs = 'Docs';
|
||||
$lang->convert->redmine->files = 'files';
|
||||
|
||||
$lang->convert->errorConnectDB = 'Connect to database server failed.';
|
||||
$lang->convert->errorFileNotExits = 'File %s not exits.';
|
||||
$lang->convert->errorUserExists = 'User %s exits already.';
|
||||
$lang->convert->errorGroupExists = 'Group %s exits already.';
|
||||
$lang->convert->errorBuildExists = 'Build %s exits already.';
|
||||
$lang->convert->errorReleaseExists = 'Release %s exits already.';
|
||||
$lang->convert->errorCopyFailed = 'file %s copy failed.';
|
||||
|
||||
$lang->convert->setParam = 'Please set params';
|
||||
|
||||
$lang->convert->statusType = new stdclass();
|
||||
$lang->convert->priType = new stdclass();
|
||||
|
||||
$lang->convert->aimType = 'Issue types goto';
|
||||
$lang->convert->statusType->bug = 'Status types goto(status of Bug)';
|
||||
$lang->convert->statusType->story = 'Status types goto(status of story)';
|
||||
$lang->convert->statusType->task = 'Status types goto(status of task)';
|
||||
$lang->convert->priType->bug = 'Priority types goto(priority of Bug)';
|
||||
$lang->convert->priType->story = 'Priority types goto(priority of story)';
|
||||
$lang->convert->priType->task = 'Priority types goto(priority of task)';
|
||||
|
||||
$lang->convert->issue = new stdclass();
|
||||
$lang->convert->issue->redmine = 'Redmine';
|
||||
$lang->convert->issue->zentao = 'ZenTao';
|
||||
$lang->convert->issue->goto = 'Goto';
|
||||
<?php
|
||||
/**
|
||||
* The convert module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->convert->common = 'Import';
|
||||
$lang->convert->index = 'Index';
|
||||
$lang->convert->next = 'Next';
|
||||
$lang->convert->pre = 'Back';
|
||||
$lang->convert->reload = 'Reload';
|
||||
$lang->convert->error = 'Error ';
|
||||
|
||||
$lang->convert->start = 'Begin import';
|
||||
$lang->convert->desc = <<<EOT
|
||||
<p>Welcome to use this convert wizard which will help you to import other system data to ZenTaoPMS.</p>
|
||||
<strong>Importing is dangerous. Be sure to backup your database and other data files and sure nobody is using pms when importing.</strong>
|
||||
EOT;
|
||||
|
||||
$lang->convert->setConfig = 'Source config';
|
||||
$lang->convert->setBugfree = 'Bugfree config';
|
||||
$lang->convert->setRedmine = 'Redmine config';
|
||||
$lang->convert->checkBugFree = 'Check Bugfree';
|
||||
$lang->convert->checkRedmine = 'Check Redmine';
|
||||
$lang->convert->convertRedmine = 'Convert Redmine';
|
||||
$lang->convert->convertBugFree = 'Convert BugFree';
|
||||
|
||||
$lang->convert->selectSource = 'Select source system and version';
|
||||
$lang->convert->source = 'Source system';
|
||||
$lang->convert->version = 'Version';
|
||||
$lang->convert->mustSelectSource = "Must select a source system";
|
||||
|
||||
$lang->convert->direction = 'Please select the direction of issue in Redmine';
|
||||
$lang->convert->questionTypeOfRedmine = 'Types of issue in Redmine';
|
||||
$lang->convert->aimTypeOfZentao = 'Aim type in Zentao';
|
||||
|
||||
$lang->convert->directionList['bug'] = 'Bug';
|
||||
$lang->convert->directionList['task'] = 'Task';
|
||||
$lang->convert->directionList['story'] = 'Story';
|
||||
|
||||
$lang->convert->sourceList['BugFree'] = array('bugfree_1' => '1.x', 'bugfree_2' => '2.x');
|
||||
$lang->convert->sourceList['Redmine'] = array('Redmine_1_1' => '1.1');
|
||||
|
||||
$lang->convert->setting = 'Setting';
|
||||
$lang->convert->checkConfig = 'Check setting';
|
||||
|
||||
$lang->convert->ok = 'Check passed(√)';
|
||||
$lang->convert->fail = 'Check failed(×)';
|
||||
|
||||
$lang->convert->settingDB = 'Set database';
|
||||
$lang->convert->dbHost = 'Database server';
|
||||
$lang->convert->dbPort = 'Server port';
|
||||
$lang->convert->dbUser = 'Database user';
|
||||
$lang->convert->dbPassword = 'Database password';
|
||||
$lang->convert->dbName = '%s database';
|
||||
$lang->convert->dbCharset = '%s charset';
|
||||
$lang->convert->dbPrefix = '%s table prefix';
|
||||
$lang->convert->installPath = '%s installed path';
|
||||
|
||||
$lang->convert->checkDB = 'Database';
|
||||
$lang->convert->checkTable = 'Table';
|
||||
$lang->convert->checkPath = 'Installed path';
|
||||
|
||||
$lang->convert->execute = 'Execute import';
|
||||
$lang->convert->item = 'Imported items';
|
||||
$lang->convert->count = 'Count';
|
||||
$lang->convert->info = 'Info';
|
||||
|
||||
$lang->convert->bugfree = new stdclass();
|
||||
$lang->convert->bugfree->users = 'User';
|
||||
$lang->convert->bugfree->projects = 'Project';
|
||||
$lang->convert->bugfree->modules = 'Module';
|
||||
$lang->convert->bugfree->bugs = 'Bug';
|
||||
$lang->convert->bugfree->cases = 'Case';
|
||||
$lang->convert->bugfree->results = 'Result';
|
||||
$lang->convert->bugfree->actions = 'History';
|
||||
$lang->convert->bugfree->files = 'File';
|
||||
|
||||
$lang->convert->redmine = new stdclass();
|
||||
$lang->convert->redmine->users = 'Users';
|
||||
$lang->convert->redmine->groups = 'Groups';
|
||||
$lang->convert->redmine->products = 'Products';
|
||||
$lang->convert->redmine->projects = 'Projects';
|
||||
$lang->convert->redmine->stories = 'Stories';
|
||||
$lang->convert->redmine->tasks = 'Tasks';
|
||||
$lang->convert->redmine->bugs = 'Bugs';
|
||||
$lang->convert->redmine->productPlans = 'ProductPlans';
|
||||
$lang->convert->redmine->teams = 'Teams';
|
||||
$lang->convert->redmine->releases = 'Releases';
|
||||
$lang->convert->redmine->builds = 'Builds';
|
||||
$lang->convert->redmine->docLibs = 'DocLibs';
|
||||
$lang->convert->redmine->docs = 'Docs';
|
||||
$lang->convert->redmine->files = 'files';
|
||||
|
||||
$lang->convert->errorConnectDB = 'Connect to database server failed.';
|
||||
$lang->convert->errorFileNotExits = 'File %s not exits.';
|
||||
$lang->convert->errorUserExists = 'User %s exits already.';
|
||||
$lang->convert->errorGroupExists = 'Group %s exits already.';
|
||||
$lang->convert->errorBuildExists = 'Build %s exits already.';
|
||||
$lang->convert->errorReleaseExists = 'Release %s exits already.';
|
||||
$lang->convert->errorCopyFailed = 'file %s copy failed.';
|
||||
|
||||
$lang->convert->setParam = 'Please set params';
|
||||
|
||||
$lang->convert->statusType = new stdclass();
|
||||
$lang->convert->priType = new stdclass();
|
||||
|
||||
$lang->convert->aimType = 'Issue types goto';
|
||||
$lang->convert->statusType->bug = 'Status types goto(status of Bug)';
|
||||
$lang->convert->statusType->story = 'Status types goto(status of story)';
|
||||
$lang->convert->statusType->task = 'Status types goto(status of task)';
|
||||
$lang->convert->priType->bug = 'Priority types goto(priority of Bug)';
|
||||
$lang->convert->priType->story = 'Priority types goto(priority of story)';
|
||||
$lang->convert->priType->task = 'Priority types goto(priority of task)';
|
||||
|
||||
$lang->convert->issue = new stdclass();
|
||||
$lang->convert->issue->redmine = 'Redmine';
|
||||
$lang->convert->issue->zentao = 'ZenTao';
|
||||
$lang->convert->issue->goto = 'Goto';
|
||||
|
||||
+124
-124
@@ -1,124 +1,124 @@
|
||||
<?php
|
||||
/**
|
||||
* The convert module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->convert->common = '从其他系统导入';
|
||||
$lang->convert->index = '首页';
|
||||
$lang->convert->next = '下一步';
|
||||
$lang->convert->pre = '返回';
|
||||
$lang->convert->reload = '刷新';
|
||||
$lang->convert->error = '错误 ';
|
||||
|
||||
$lang->convert->start = '开始转换';
|
||||
$lang->convert->desc = <<<EOT
|
||||
<p>欢迎使用系统转换向导,本程序会帮助您将其他系统的数据转换到禅道项目管理系统中。</p>
|
||||
<strong>转换存在一定的风险,转换之前,我们强烈建议您备份数据库及相应的数据文件,并保证转换的时候,没有其他人进行操作。</strong>
|
||||
EOT;
|
||||
|
||||
$lang->convert->setConfig = '来源系统配置';
|
||||
$lang->convert->setBugfree = 'Bugfree配置';
|
||||
$lang->convert->setRedmine = 'Redmine配置';
|
||||
$lang->convert->checkBugFree = '检查Bugfree';
|
||||
$lang->convert->checkRedmine = '检查Redmine';
|
||||
$lang->convert->convertRedmine = '转换Redmine';
|
||||
$lang->convert->convertBugFree = '转换BugFree';
|
||||
|
||||
$lang->convert->selectSource = '选择来源系统及版本';
|
||||
$lang->convert->source = '来源系统';
|
||||
$lang->convert->version = '版本';
|
||||
$lang->convert->mustSelectSource = "必须选择一个来源。";
|
||||
|
||||
$lang->convert->direction = '请选择项目问题转换方向';
|
||||
$lang->convert->questionTypeOfRedmine = 'Redmine中问题类型';
|
||||
$lang->convert->aimTypeOfZentao = '转化为Zentao中的类型';
|
||||
|
||||
$lang->convert->directionList['bug'] = 'Bug';
|
||||
$lang->convert->directionList['task'] = '任务';
|
||||
$lang->convert->directionList['story'] = '需求';
|
||||
|
||||
$lang->convert->sourceList['BugFree'] = array('bugfree_1' => '1.x', 'bugfree_2' => '2.x');
|
||||
$lang->convert->sourceList['Redmine'] = array('Redmine_1.1' => '1.1');
|
||||
|
||||
$lang->convert->setting = '设置';
|
||||
$lang->convert->checkConfig = '检查配置';
|
||||
|
||||
$lang->convert->ok = '检查通过(√)';
|
||||
$lang->convert->fail = '检查失败(×)';
|
||||
|
||||
$lang->convert->settingDB = '设置数据库';
|
||||
$lang->convert->dbHost = '数据库服务器';
|
||||
$lang->convert->dbPort = '服务器端口';
|
||||
$lang->convert->dbUser = '数据库用户名';
|
||||
$lang->convert->dbPassword = '数据库密码';
|
||||
$lang->convert->dbName = '%s使用的库';
|
||||
$lang->convert->dbCharset = '%s数据库编码';
|
||||
$lang->convert->dbPrefix = '%s表前缀';
|
||||
$lang->convert->installPath = '%s安装的根目录';
|
||||
|
||||
$lang->convert->checkDB = '数据库';
|
||||
$lang->convert->checkTable = '表';
|
||||
$lang->convert->checkPath = '安装路径';
|
||||
|
||||
$lang->convert->execute = '执行转换';
|
||||
$lang->convert->item = '转换项';
|
||||
$lang->convert->count = '转换数量';
|
||||
$lang->convert->info = '转换信息';
|
||||
|
||||
$lang->convert->bugfree = new stdclass();
|
||||
$lang->convert->bugfree->users = '用户';
|
||||
$lang->convert->bugfree->projects = '项目';
|
||||
$lang->convert->bugfree->modules = '模块';
|
||||
$lang->convert->bugfree->bugs = 'Bug';
|
||||
$lang->convert->bugfree->cases = '测试用例';
|
||||
$lang->convert->bugfree->results = '测试结果';
|
||||
$lang->convert->bugfree->actions = '历史记录';
|
||||
$lang->convert->bugfree->files = '附件';
|
||||
|
||||
$lang->convert->redmine = new stdclass();
|
||||
$lang->convert->redmine->users = '用户';
|
||||
$lang->convert->redmine->groups = '用户分组';
|
||||
$lang->convert->redmine->products = '产品';
|
||||
$lang->convert->redmine->projects = '项目';
|
||||
$lang->convert->redmine->stories = '需求';
|
||||
$lang->convert->redmine->tasks = '任务';
|
||||
$lang->convert->redmine->bugs = 'Bug';
|
||||
$lang->convert->redmine->productPlans = '产品计划';
|
||||
$lang->convert->redmine->teams = '团队';
|
||||
$lang->convert->redmine->releases = '发布';
|
||||
$lang->convert->redmine->builds = 'Build';
|
||||
$lang->convert->redmine->docLibs = '文档库';
|
||||
$lang->convert->redmine->docs = '文档';
|
||||
$lang->convert->redmine->files = '附件';
|
||||
|
||||
$lang->convert->errorConnectDB = '数据库连接失败 ';
|
||||
$lang->convert->errorFileNotExits = '文件 %s 不存在';
|
||||
$lang->convert->errorUserExists = '用户 %s 已存在';
|
||||
$lang->convert->errorGroupExists = '分组 %s 已存在';
|
||||
$lang->convert->errorBuildExists = 'Build %s 已存在';
|
||||
$lang->convert->errorReleaseExists = '发布 %s 已存在';
|
||||
$lang->convert->errorCopyFailed = '文件 %s 拷贝失败';
|
||||
|
||||
$lang->convert->setParam = '请设置转换参数';
|
||||
|
||||
$lang->convert->statusType = new stdclass();
|
||||
$lang->convert->priType = new stdclass();
|
||||
|
||||
$lang->convert->aimType = '问题类型转换';
|
||||
$lang->convert->statusType->bug = '状态类型转换(Bug状态)';
|
||||
$lang->convert->statusType->story = '状态类型转换(Story状态)';
|
||||
$lang->convert->statusType->task = '状态类型转换(Task状态)';
|
||||
$lang->convert->priType->bug = '优先级类型转换(Bug状态)';
|
||||
$lang->convert->priType->story = '优先级类型转换(Story状态)';
|
||||
$lang->convert->priType->task = '优先级类型转换(Task状态)';
|
||||
|
||||
$lang->convert->issue = new stdclass();
|
||||
$lang->convert->issue->redmine = 'Redmine';
|
||||
$lang->convert->issue->zentao = '禅道';
|
||||
$lang->convert->issue->goto = '转换为';
|
||||
<?php
|
||||
/**
|
||||
* The convert module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->convert->common = '从其他系统导入';
|
||||
$lang->convert->index = '首页';
|
||||
$lang->convert->next = '下一步';
|
||||
$lang->convert->pre = '返回';
|
||||
$lang->convert->reload = '刷新';
|
||||
$lang->convert->error = '错误 ';
|
||||
|
||||
$lang->convert->start = '开始转换';
|
||||
$lang->convert->desc = <<<EOT
|
||||
<p>欢迎使用系统转换向导,本程序会帮助您将其他系统的数据转换到禅道项目管理系统中。</p>
|
||||
<strong>转换存在一定的风险,转换之前,我们强烈建议您备份数据库及相应的数据文件,并保证转换的时候,没有其他人进行操作。</strong>
|
||||
EOT;
|
||||
|
||||
$lang->convert->setConfig = '来源系统配置';
|
||||
$lang->convert->setBugfree = 'Bugfree配置';
|
||||
$lang->convert->setRedmine = 'Redmine配置';
|
||||
$lang->convert->checkBugFree = '检查Bugfree';
|
||||
$lang->convert->checkRedmine = '检查Redmine';
|
||||
$lang->convert->convertRedmine = '转换Redmine';
|
||||
$lang->convert->convertBugFree = '转换BugFree';
|
||||
|
||||
$lang->convert->selectSource = '选择来源系统及版本';
|
||||
$lang->convert->source = '来源系统';
|
||||
$lang->convert->version = '版本';
|
||||
$lang->convert->mustSelectSource = "必须选择一个来源。";
|
||||
|
||||
$lang->convert->direction = '请选择项目问题转换方向';
|
||||
$lang->convert->questionTypeOfRedmine = 'Redmine中问题类型';
|
||||
$lang->convert->aimTypeOfZentao = '转化为Zentao中的类型';
|
||||
|
||||
$lang->convert->directionList['bug'] = 'Bug';
|
||||
$lang->convert->directionList['task'] = '任务';
|
||||
$lang->convert->directionList['story'] = '需求';
|
||||
|
||||
$lang->convert->sourceList['BugFree'] = array('bugfree_1' => '1.x', 'bugfree_2' => '2.x');
|
||||
$lang->convert->sourceList['Redmine'] = array('Redmine_1.1' => '1.1');
|
||||
|
||||
$lang->convert->setting = '设置';
|
||||
$lang->convert->checkConfig = '检查配置';
|
||||
|
||||
$lang->convert->ok = '检查通过(√)';
|
||||
$lang->convert->fail = '检查失败(×)';
|
||||
|
||||
$lang->convert->settingDB = '设置数据库';
|
||||
$lang->convert->dbHost = '数据库服务器';
|
||||
$lang->convert->dbPort = '服务器端口';
|
||||
$lang->convert->dbUser = '数据库用户名';
|
||||
$lang->convert->dbPassword = '数据库密码';
|
||||
$lang->convert->dbName = '%s使用的库';
|
||||
$lang->convert->dbCharset = '%s数据库编码';
|
||||
$lang->convert->dbPrefix = '%s表前缀';
|
||||
$lang->convert->installPath = '%s安装的根目录';
|
||||
|
||||
$lang->convert->checkDB = '数据库';
|
||||
$lang->convert->checkTable = '表';
|
||||
$lang->convert->checkPath = '安装路径';
|
||||
|
||||
$lang->convert->execute = '执行转换';
|
||||
$lang->convert->item = '转换项';
|
||||
$lang->convert->count = '转换数量';
|
||||
$lang->convert->info = '转换信息';
|
||||
|
||||
$lang->convert->bugfree = new stdclass();
|
||||
$lang->convert->bugfree->users = '用户';
|
||||
$lang->convert->bugfree->projects = '项目';
|
||||
$lang->convert->bugfree->modules = '模块';
|
||||
$lang->convert->bugfree->bugs = 'Bug';
|
||||
$lang->convert->bugfree->cases = '测试用例';
|
||||
$lang->convert->bugfree->results = '测试结果';
|
||||
$lang->convert->bugfree->actions = '历史记录';
|
||||
$lang->convert->bugfree->files = '附件';
|
||||
|
||||
$lang->convert->redmine = new stdclass();
|
||||
$lang->convert->redmine->users = '用户';
|
||||
$lang->convert->redmine->groups = '用户分组';
|
||||
$lang->convert->redmine->products = '产品';
|
||||
$lang->convert->redmine->projects = '项目';
|
||||
$lang->convert->redmine->stories = '需求';
|
||||
$lang->convert->redmine->tasks = '任务';
|
||||
$lang->convert->redmine->bugs = 'Bug';
|
||||
$lang->convert->redmine->productPlans = '产品计划';
|
||||
$lang->convert->redmine->teams = '团队';
|
||||
$lang->convert->redmine->releases = '发布';
|
||||
$lang->convert->redmine->builds = 'Build';
|
||||
$lang->convert->redmine->docLibs = '文档库';
|
||||
$lang->convert->redmine->docs = '文档';
|
||||
$lang->convert->redmine->files = '附件';
|
||||
|
||||
$lang->convert->errorConnectDB = '数据库连接失败 ';
|
||||
$lang->convert->errorFileNotExits = '文件 %s 不存在';
|
||||
$lang->convert->errorUserExists = '用户 %s 已存在';
|
||||
$lang->convert->errorGroupExists = '分组 %s 已存在';
|
||||
$lang->convert->errorBuildExists = 'Build %s 已存在';
|
||||
$lang->convert->errorReleaseExists = '发布 %s 已存在';
|
||||
$lang->convert->errorCopyFailed = '文件 %s 拷贝失败';
|
||||
|
||||
$lang->convert->setParam = '请设置转换参数';
|
||||
|
||||
$lang->convert->statusType = new stdclass();
|
||||
$lang->convert->priType = new stdclass();
|
||||
|
||||
$lang->convert->aimType = '问题类型转换';
|
||||
$lang->convert->statusType->bug = '状态类型转换(Bug状态)';
|
||||
$lang->convert->statusType->story = '状态类型转换(Story状态)';
|
||||
$lang->convert->statusType->task = '状态类型转换(Task状态)';
|
||||
$lang->convert->priType->bug = '优先级类型转换(Bug状态)';
|
||||
$lang->convert->priType->story = '优先级类型转换(Story状态)';
|
||||
$lang->convert->priType->task = '优先级类型转换(Task状态)';
|
||||
|
||||
$lang->convert->issue = new stdclass();
|
||||
$lang->convert->issue->redmine = 'Redmine';
|
||||
$lang->convert->issue->zentao = '禅道';
|
||||
$lang->convert->issue->goto = '转换为';
|
||||
|
||||
+124
-124
@@ -1,124 +1,124 @@
|
||||
<?php
|
||||
/**
|
||||
* The convert module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id: zh-tw.php 3772 2012-12-12 02:18:16Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->convert->common = '從其他系統導入';
|
||||
$lang->convert->index = '首頁';
|
||||
$lang->convert->next = '下一步';
|
||||
$lang->convert->pre = '返回';
|
||||
$lang->convert->reload = '刷新';
|
||||
$lang->convert->error = '錯誤 ';
|
||||
|
||||
$lang->convert->start = '開始轉換';
|
||||
$lang->convert->desc = <<<EOT
|
||||
<p>歡迎使用系統轉換嚮導,本程序會幫助您將其他系統的數據轉換到禪道項目管理系統中。</p>
|
||||
<strong>轉換存在一定的風險,轉換之前,我們強烈建議您備份資料庫及相應的數據檔案,並保證轉換的時候,沒有其他人進行操作。</strong>
|
||||
EOT;
|
||||
|
||||
$lang->convert->setConfig = '來源系統配置';
|
||||
$lang->convert->setBugfree = 'Bugfree配置';
|
||||
$lang->convert->setRedmine = 'Redmine配置';
|
||||
$lang->convert->checkBugFree = '檢查Bugfree';
|
||||
$lang->convert->checkRedmine = '檢查Redmine';
|
||||
$lang->convert->convertRedmine = '轉換Redmine';
|
||||
$lang->convert->convertBugFree = '轉換BugFree';
|
||||
|
||||
$lang->convert->selectSource = '選擇來源系統及版本';
|
||||
$lang->convert->source = '來源系統';
|
||||
$lang->convert->version = '版本';
|
||||
$lang->convert->mustSelectSource = "必須選擇一個來源。";
|
||||
|
||||
$lang->convert->direction = '請選擇項目問題轉換方向';
|
||||
$lang->convert->questionTypeOfRedmine = 'Redmine中問題類型';
|
||||
$lang->convert->aimTypeOfZentao = '轉化為Zentao中的類型';
|
||||
|
||||
$lang->convert->directionList['bug'] = 'Bug';
|
||||
$lang->convert->directionList['task'] = '任務';
|
||||
$lang->convert->directionList['story'] = '需求';
|
||||
|
||||
$lang->convert->sourceList['BugFree'] = array('bugfree_1' => '1.x', 'bugfree_2' => '2.x');
|
||||
$lang->convert->sourceList['Redmine'] = array('Redmine_1.1' => '1.1');
|
||||
|
||||
$lang->convert->setting = '設置';
|
||||
$lang->convert->checkConfig = '檢查配置';
|
||||
|
||||
$lang->convert->ok = '檢查通過(√)';
|
||||
$lang->convert->fail = '檢查失敗(×)';
|
||||
|
||||
$lang->convert->settingDB = '設置資料庫';
|
||||
$lang->convert->dbHost = '資料庫伺服器';
|
||||
$lang->convert->dbPort = '伺服器連接埠';
|
||||
$lang->convert->dbUser = '資料庫用戶名';
|
||||
$lang->convert->dbPassword = '資料庫密碼';
|
||||
$lang->convert->dbName = '%s使用的庫';
|
||||
$lang->convert->dbCharset = '%s資料庫編碼';
|
||||
$lang->convert->dbPrefix = '%s表首碼';
|
||||
$lang->convert->installPath = '%s安裝的根目錄';
|
||||
|
||||
$lang->convert->checkDB = '資料庫';
|
||||
$lang->convert->checkTable = '表';
|
||||
$lang->convert->checkPath = '安裝路徑';
|
||||
|
||||
$lang->convert->execute = '執行轉換';
|
||||
$lang->convert->item = '轉換項';
|
||||
$lang->convert->count = '轉換數量';
|
||||
$lang->convert->info = '轉換信息';
|
||||
|
||||
$lang->convert->bugfree = new stdclass();
|
||||
$lang->convert->bugfree->users = '用戶';
|
||||
$lang->convert->bugfree->projects = '項目';
|
||||
$lang->convert->bugfree->modules = '模組';
|
||||
$lang->convert->bugfree->bugs = 'Bug';
|
||||
$lang->convert->bugfree->cases = '測試用例';
|
||||
$lang->convert->bugfree->results = '測試結果';
|
||||
$lang->convert->bugfree->actions = '歷史記錄';
|
||||
$lang->convert->bugfree->files = '附件';
|
||||
|
||||
$lang->convert->redmine = new stdclass();
|
||||
$lang->convert->redmine->users = '用戶';
|
||||
$lang->convert->redmine->groups = '用戶分組';
|
||||
$lang->convert->redmine->products = '產品';
|
||||
$lang->convert->redmine->projects = '項目';
|
||||
$lang->convert->redmine->stories = '需求';
|
||||
$lang->convert->redmine->tasks = '任務';
|
||||
$lang->convert->redmine->bugs = 'Bug';
|
||||
$lang->convert->redmine->productPlans = '產品計劃';
|
||||
$lang->convert->redmine->teams = '團隊';
|
||||
$lang->convert->redmine->releases = '發佈';
|
||||
$lang->convert->redmine->builds = 'Build';
|
||||
$lang->convert->redmine->docLibs = '文檔庫';
|
||||
$lang->convert->redmine->docs = '文檔';
|
||||
$lang->convert->redmine->files = '附件';
|
||||
|
||||
$lang->convert->errorConnectDB = '資料庫連接失敗 ';
|
||||
$lang->convert->errorFileNotExits = '檔案 %s 不存在';
|
||||
$lang->convert->errorUserExists = '用戶 %s 已存在';
|
||||
$lang->convert->errorGroupExists = '分組 %s 已存在';
|
||||
$lang->convert->errorBuildExists = 'Build %s 已存在';
|
||||
$lang->convert->errorReleaseExists = '發佈 %s 已存在';
|
||||
$lang->convert->errorCopyFailed = '檔案 %s 拷貝失敗';
|
||||
|
||||
$lang->convert->setParam = '請設置轉換參數';
|
||||
|
||||
$lang->convert->statusType = new stdclass();
|
||||
$lang->convert->priType = new stdclass();
|
||||
|
||||
$lang->convert->aimType = '問題類型轉換';
|
||||
$lang->convert->statusType->bug = '狀態類型轉換(Bug狀態)';
|
||||
$lang->convert->statusType->story = '狀態類型轉換(Story狀態)';
|
||||
$lang->convert->statusType->task = '狀態類型轉換(Task狀態)';
|
||||
$lang->convert->priType->bug = '優先順序類型轉換(Bug狀態)';
|
||||
$lang->convert->priType->story = '優先順序類型轉換(Story狀態)';
|
||||
$lang->convert->priType->task = '優先順序類型轉換(Task狀態)';
|
||||
|
||||
$lang->convert->issue = new stdclass();
|
||||
$lang->convert->issue->redmine = 'Redmine';
|
||||
$lang->convert->issue->zentao = '禪道';
|
||||
$lang->convert->issue->goto = '轉換為';
|
||||
<?php
|
||||
/**
|
||||
* The convert module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id: zh-tw.php 3772 2012-12-12 02:18:16Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->convert->common = '從其他系統導入';
|
||||
$lang->convert->index = '首頁';
|
||||
$lang->convert->next = '下一步';
|
||||
$lang->convert->pre = '返回';
|
||||
$lang->convert->reload = '刷新';
|
||||
$lang->convert->error = '錯誤 ';
|
||||
|
||||
$lang->convert->start = '開始轉換';
|
||||
$lang->convert->desc = <<<EOT
|
||||
<p>歡迎使用系統轉換嚮導,本程序會幫助您將其他系統的數據轉換到禪道項目管理系統中。</p>
|
||||
<strong>轉換存在一定的風險,轉換之前,我們強烈建議您備份資料庫及相應的數據檔案,並保證轉換的時候,沒有其他人進行操作。</strong>
|
||||
EOT;
|
||||
|
||||
$lang->convert->setConfig = '來源系統配置';
|
||||
$lang->convert->setBugfree = 'Bugfree配置';
|
||||
$lang->convert->setRedmine = 'Redmine配置';
|
||||
$lang->convert->checkBugFree = '檢查Bugfree';
|
||||
$lang->convert->checkRedmine = '檢查Redmine';
|
||||
$lang->convert->convertRedmine = '轉換Redmine';
|
||||
$lang->convert->convertBugFree = '轉換BugFree';
|
||||
|
||||
$lang->convert->selectSource = '選擇來源系統及版本';
|
||||
$lang->convert->source = '來源系統';
|
||||
$lang->convert->version = '版本';
|
||||
$lang->convert->mustSelectSource = "必須選擇一個來源。";
|
||||
|
||||
$lang->convert->direction = '請選擇項目問題轉換方向';
|
||||
$lang->convert->questionTypeOfRedmine = 'Redmine中問題類型';
|
||||
$lang->convert->aimTypeOfZentao = '轉化為Zentao中的類型';
|
||||
|
||||
$lang->convert->directionList['bug'] = 'Bug';
|
||||
$lang->convert->directionList['task'] = '任務';
|
||||
$lang->convert->directionList['story'] = '需求';
|
||||
|
||||
$lang->convert->sourceList['BugFree'] = array('bugfree_1' => '1.x', 'bugfree_2' => '2.x');
|
||||
$lang->convert->sourceList['Redmine'] = array('Redmine_1.1' => '1.1');
|
||||
|
||||
$lang->convert->setting = '設置';
|
||||
$lang->convert->checkConfig = '檢查配置';
|
||||
|
||||
$lang->convert->ok = '檢查通過(√)';
|
||||
$lang->convert->fail = '檢查失敗(×)';
|
||||
|
||||
$lang->convert->settingDB = '設置資料庫';
|
||||
$lang->convert->dbHost = '資料庫伺服器';
|
||||
$lang->convert->dbPort = '伺服器連接埠';
|
||||
$lang->convert->dbUser = '資料庫用戶名';
|
||||
$lang->convert->dbPassword = '資料庫密碼';
|
||||
$lang->convert->dbName = '%s使用的庫';
|
||||
$lang->convert->dbCharset = '%s資料庫編碼';
|
||||
$lang->convert->dbPrefix = '%s表首碼';
|
||||
$lang->convert->installPath = '%s安裝的根目錄';
|
||||
|
||||
$lang->convert->checkDB = '資料庫';
|
||||
$lang->convert->checkTable = '表';
|
||||
$lang->convert->checkPath = '安裝路徑';
|
||||
|
||||
$lang->convert->execute = '執行轉換';
|
||||
$lang->convert->item = '轉換項';
|
||||
$lang->convert->count = '轉換數量';
|
||||
$lang->convert->info = '轉換信息';
|
||||
|
||||
$lang->convert->bugfree = new stdclass();
|
||||
$lang->convert->bugfree->users = '用戶';
|
||||
$lang->convert->bugfree->projects = '項目';
|
||||
$lang->convert->bugfree->modules = '模組';
|
||||
$lang->convert->bugfree->bugs = 'Bug';
|
||||
$lang->convert->bugfree->cases = '測試用例';
|
||||
$lang->convert->bugfree->results = '測試結果';
|
||||
$lang->convert->bugfree->actions = '歷史記錄';
|
||||
$lang->convert->bugfree->files = '附件';
|
||||
|
||||
$lang->convert->redmine = new stdclass();
|
||||
$lang->convert->redmine->users = '用戶';
|
||||
$lang->convert->redmine->groups = '用戶分組';
|
||||
$lang->convert->redmine->products = '產品';
|
||||
$lang->convert->redmine->projects = '項目';
|
||||
$lang->convert->redmine->stories = '需求';
|
||||
$lang->convert->redmine->tasks = '任務';
|
||||
$lang->convert->redmine->bugs = 'Bug';
|
||||
$lang->convert->redmine->productPlans = '產品計劃';
|
||||
$lang->convert->redmine->teams = '團隊';
|
||||
$lang->convert->redmine->releases = '發佈';
|
||||
$lang->convert->redmine->builds = 'Build';
|
||||
$lang->convert->redmine->docLibs = '文檔庫';
|
||||
$lang->convert->redmine->docs = '文檔';
|
||||
$lang->convert->redmine->files = '附件';
|
||||
|
||||
$lang->convert->errorConnectDB = '資料庫連接失敗 ';
|
||||
$lang->convert->errorFileNotExits = '檔案 %s 不存在';
|
||||
$lang->convert->errorUserExists = '用戶 %s 已存在';
|
||||
$lang->convert->errorGroupExists = '分組 %s 已存在';
|
||||
$lang->convert->errorBuildExists = 'Build %s 已存在';
|
||||
$lang->convert->errorReleaseExists = '發佈 %s 已存在';
|
||||
$lang->convert->errorCopyFailed = '檔案 %s 拷貝失敗';
|
||||
|
||||
$lang->convert->setParam = '請設置轉換參數';
|
||||
|
||||
$lang->convert->statusType = new stdclass();
|
||||
$lang->convert->priType = new stdclass();
|
||||
|
||||
$lang->convert->aimType = '問題類型轉換';
|
||||
$lang->convert->statusType->bug = '狀態類型轉換(Bug狀態)';
|
||||
$lang->convert->statusType->story = '狀態類型轉換(Story狀態)';
|
||||
$lang->convert->statusType->task = '狀態類型轉換(Task狀態)';
|
||||
$lang->convert->priType->bug = '優先順序類型轉換(Bug狀態)';
|
||||
$lang->convert->priType->story = '優先順序類型轉換(Story狀態)';
|
||||
$lang->convert->priType->task = '優先順序類型轉換(Task狀態)';
|
||||
|
||||
$lang->convert->issue = new stdclass();
|
||||
$lang->convert->issue->redmine = 'Redmine';
|
||||
$lang->convert->issue->zentao = '禪道';
|
||||
$lang->convert->issue->goto = '轉換為';
|
||||
|
||||
+94
-94
@@ -1,94 +1,94 @@
|
||||
<?php
|
||||
/**
|
||||
* The model file of convert module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
class convertModel extends model
|
||||
{
|
||||
/**
|
||||
* Connect to db.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function connectDB()
|
||||
{
|
||||
$dsn = "mysql:host={$this->post->dbHost}; port={$this->post->dbPort};dbname={$this->post->dbName}";
|
||||
try
|
||||
{
|
||||
$dbh = new PDO($dsn, $this->post->dbUser, $this->post->dbPassword);
|
||||
$dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
|
||||
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||
$dbh->exec("SET NAMES {$this->post->dbCharset}");
|
||||
$this->sourceDBH = $dbh;
|
||||
return $dbh;
|
||||
}
|
||||
catch (PDOException $exception)
|
||||
{
|
||||
return $exception->getMessage();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check database exits or not.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function dbExists()
|
||||
{
|
||||
$sql = "SHOW DATABASES like '{$this->post->db->name}'";
|
||||
return $this->dbh->query($sql)->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check table exits or not.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function tableExists($table)
|
||||
{
|
||||
$sql = "SHOW tables like '$table'";
|
||||
return $this->dbh->query($sql)->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* Save the max id of every table. Thus when we convert again, when can delete id larger then the saved max id.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function saveState()
|
||||
{
|
||||
/* Get user defined tables. */
|
||||
$constants = get_defined_constants(true);
|
||||
$userConstants = $constants['user'];
|
||||
|
||||
/* These tables needn't save. */
|
||||
unset($userConstants['TABLE_BURN']);
|
||||
unset($userConstants['TABLE_GROUPPRIV']);
|
||||
unset($userConstants['TABLE_PROJECTPRODUCT']);
|
||||
unset($userConstants['TABLE_PROJECTSTORY']);
|
||||
unset($userConstants['TABLE_STORYSPEC']);
|
||||
unset($userConstants['TABLE_TEAM']);
|
||||
unset($userConstants['TABLE_USERGROUP']);
|
||||
|
||||
/* Get max id of every table. */
|
||||
foreach($userConstants as $key => $value)
|
||||
{
|
||||
if(strpos($key, 'TABLE') === false) continue;
|
||||
if($key == 'TABLE_COMPANY') continue;
|
||||
$state[$value] = (int)$this->dao->select('MAX(id) AS id')->from($value)->fetch('id');
|
||||
}
|
||||
$this->session->set('state', $state);
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The model file of convert module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
class convertModel extends model
|
||||
{
|
||||
/**
|
||||
* Connect to db.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function connectDB()
|
||||
{
|
||||
$dsn = "mysql:host={$this->post->dbHost}; port={$this->post->dbPort};dbname={$this->post->dbName}";
|
||||
try
|
||||
{
|
||||
$dbh = new PDO($dsn, $this->post->dbUser, $this->post->dbPassword);
|
||||
$dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
|
||||
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||
$dbh->exec("SET NAMES {$this->post->dbCharset}");
|
||||
$this->sourceDBH = $dbh;
|
||||
return $dbh;
|
||||
}
|
||||
catch (PDOException $exception)
|
||||
{
|
||||
return $exception->getMessage();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check database exits or not.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function dbExists()
|
||||
{
|
||||
$sql = "SHOW DATABASES like '{$this->post->db->name}'";
|
||||
return $this->dbh->query($sql)->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check table exits or not.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function tableExists($table)
|
||||
{
|
||||
$sql = "SHOW tables like '$table'";
|
||||
return $this->dbh->query($sql)->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* Save the max id of every table. Thus when we convert again, when can delete id larger then the saved max id.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function saveState()
|
||||
{
|
||||
/* Get user defined tables. */
|
||||
$constants = get_defined_constants(true);
|
||||
$userConstants = $constants['user'];
|
||||
|
||||
/* These tables needn't save. */
|
||||
unset($userConstants['TABLE_BURN']);
|
||||
unset($userConstants['TABLE_GROUPPRIV']);
|
||||
unset($userConstants['TABLE_PROJECTPRODUCT']);
|
||||
unset($userConstants['TABLE_PROJECTSTORY']);
|
||||
unset($userConstants['TABLE_STORYSPEC']);
|
||||
unset($userConstants['TABLE_TEAM']);
|
||||
unset($userConstants['TABLE_USERGROUP']);
|
||||
|
||||
/* Get max id of every table. */
|
||||
foreach($userConstants as $key => $value)
|
||||
{
|
||||
if(strpos($key, 'TABLE') === false) continue;
|
||||
if($key == 'TABLE_COMPANY') continue;
|
||||
$state[$value] = (int)$this->dao->select('MAX(id) AS id')->from($value)->fetch('id');
|
||||
}
|
||||
$this->session->set('state', $state);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,29 +1,29 @@
|
||||
<?php
|
||||
/**
|
||||
* The html template file of check config method of convert module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' action='<?php echo inlink('execute');?>'>
|
||||
<table align='center' class='w-p65 f-14px'>
|
||||
<caption><?php echo $lang->convert->checkConfig . $lang->colon . strtoupper($source);?></caption>
|
||||
<?php echo $checkResult;?>
|
||||
</table>
|
||||
<?php
|
||||
echo html::hidden('dbHost', $this->post->dbHost);
|
||||
echo html::hidden('dbPort', $this->post->dbPort);
|
||||
echo html::hidden('dbUser', $this->post->dbUser);
|
||||
echo html::hidden('dbPassword', $this->post->dbPassword);
|
||||
echo html::hidden('dbName', $this->post->dbName);
|
||||
echo html::hidden('dbCharset', $this->post->dbCharset);
|
||||
echo html::hidden('dbPrefix', $this->post->dbPrefix);
|
||||
echo html::hidden('installPath',$this->post->installPath);
|
||||
?>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The html template file of check config method of convert module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' action='<?php echo inlink('execute');?>'>
|
||||
<table align='center' class='w-p65 f-14px'>
|
||||
<caption><?php echo $lang->convert->checkConfig . $lang->colon . strtoupper($source);?></caption>
|
||||
<?php echo $checkResult;?>
|
||||
</table>
|
||||
<?php
|
||||
echo html::hidden('dbHost', $this->post->dbHost);
|
||||
echo html::hidden('dbPort', $this->post->dbPort);
|
||||
echo html::hidden('dbUser', $this->post->dbUser);
|
||||
echo html::hidden('dbPassword', $this->post->dbPassword);
|
||||
echo html::hidden('dbName', $this->post->dbName);
|
||||
echo html::hidden('dbCharset', $this->post->dbCharset);
|
||||
echo html::hidden('dbPrefix', $this->post->dbPrefix);
|
||||
echo html::hidden('installPath',$this->post->installPath);
|
||||
?>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
<?php
|
||||
/**
|
||||
* The html template file of execute method of convert module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<table align='center' class='f-14px'>
|
||||
<caption><?php echo $lang->convert->execute . $lang->colon . strtoupper($source);?></caption>
|
||||
<?php echo $executeResult;?>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The html template file of execute method of convert module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<table align='center' class='f-14px'>
|
||||
<caption><?php echo $lang->convert->execute . $lang->colon . strtoupper($source);?></caption>
|
||||
<?php echo $executeResult;?>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
<?php
|
||||
/**
|
||||
* The html template file of index method of convert module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package ZenTaoPMS
|
||||
* @version $Id$
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<table align='center' class='table-5'>
|
||||
<caption><?php echo $lang->convert->common;?></caption>
|
||||
<tr><td><?php echo nl2br($lang->convert->desc);?></td></tr>
|
||||
<tr><td><h3 class='a-center'><?php echo html::a($this->createLink('convert', 'selectsource'), $lang->convert->start);?></h3></td></tr>
|
||||
</table>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The html template file of index method of convert module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package ZenTaoPMS
|
||||
* @version $Id$
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<table align='center' class='table-5'>
|
||||
<caption><?php echo $lang->convert->common;?></caption>
|
||||
<tr><td><?php echo nl2br($lang->convert->desc);?></td></tr>
|
||||
<tr><td><h3 class='a-center'><?php echo html::a($this->createLink('convert', 'selectsource'), $lang->convert->start);?></h3></td></tr>
|
||||
</table>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,31 +1,31 @@
|
||||
<?php
|
||||
/**
|
||||
* The html template file of select source method of convert module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' action='<?php echo inlink('setConfig');?>'>
|
||||
<table align='center' class='table-5 f-14px'>
|
||||
<caption><?php echo $lang->convert->selectSource;?></caption>
|
||||
<tr>
|
||||
<th class='w-p20'><?php echo $lang->convert->source;?></th>
|
||||
<th><?php echo $lang->convert->version;?></th>
|
||||
</tr>
|
||||
<?php foreach($lang->convert->sourceList as $name => $versions):?>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $name;?></th>
|
||||
<td><?php echo html::radio('source', $versions);?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'><?php echo html::submitButton();?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The html template file of select source method of convert module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' action='<?php echo inlink('setConfig');?>'>
|
||||
<table align='center' class='table-5 f-14px'>
|
||||
<caption><?php echo $lang->convert->selectSource;?></caption>
|
||||
<tr>
|
||||
<th class='w-p20'><?php echo $lang->convert->source;?></th>
|
||||
<th><?php echo $lang->convert->version;?></th>
|
||||
</tr>
|
||||
<?php foreach($lang->convert->sourceList as $name => $versions):?>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $name;?></th>
|
||||
<td><?php echo html::radio('source', $versions);?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'><?php echo html::submitButton();?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
<?php
|
||||
/**
|
||||
* The html template file of setconfig method of convert module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' action='<?php echo inlink('checkconfig');?>'>
|
||||
<table align='center' class='table-5 f-14px'>
|
||||
<caption><?php echo $lang->convert->setting . $lang->colon . strtoupper($source);?></caption>
|
||||
<?php echo $setting;?>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'><?php echo html::submitButton();?></td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php echo html::hidden('source', $source) . html::hidden('version', $version);?>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The html template file of setconfig method of convert module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package convert
|
||||
* @version $Id$
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' action='<?php echo inlink('checkconfig');?>'>
|
||||
<table align='center' class='table-5 f-14px'>
|
||||
<caption><?php echo $lang->convert->setting . $lang->colon . strtoupper($source);?></caption>
|
||||
<?php echo $setting;?>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'><?php echo html::submitButton();?></td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php echo html::hidden('source', $source) . html::hidden('version', $version);?>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
+101
-101
@@ -1,101 +1,101 @@
|
||||
<?php
|
||||
/**
|
||||
* The control file of dept module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package dept
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class dept extends control
|
||||
{
|
||||
const NEW_CHILD_COUNT = 10;
|
||||
|
||||
/**
|
||||
* Construct function, set menu.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->loadModel('company')->setMenu();
|
||||
}
|
||||
|
||||
/**
|
||||
* Browse a department.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function browse($deptID = 0)
|
||||
{
|
||||
$header['title'] = $this->lang->dept->manage . $this->lang->colon . $this->app->company->name;
|
||||
$position[] = $this->lang->dept->manage;
|
||||
|
||||
$parentDepts = $this->dept->getParents($deptID);
|
||||
$this->view->header = $header;
|
||||
$this->view->position = $position;
|
||||
$this->view->deptID = $deptID;
|
||||
$this->view->depts = $this->dept->getTreeMenu($rootDeptID = 0, array('deptmodel', 'createManageLink'));
|
||||
$this->view->parentDepts = $parentDepts;
|
||||
$this->view->sons = $this->dept->getSons($deptID);
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the departments order.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function updateOrder()
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$this->dept->updateOrder($_POST['orders']);
|
||||
die(js::reload('parent'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Manage childs.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function manageChild()
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$this->dept->manageChild($_POST['parentDeptID'], $_POST['depts']);
|
||||
die(js::reload('parent'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a department.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @param string $confirm yes|no
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function delete($deptID, $confirm = 'no')
|
||||
{
|
||||
if($confirm == 'no')
|
||||
{
|
||||
echo js::confirm($this->lang->dept->confirmDelete, $this->createLink('dept', 'delete', "deptID=$deptID&confirm=yes"));
|
||||
exit;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->dept->delete($deptID);
|
||||
die(js::reload('parent'));
|
||||
}
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The control file of dept module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package dept
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class dept extends control
|
||||
{
|
||||
const NEW_CHILD_COUNT = 10;
|
||||
|
||||
/**
|
||||
* Construct function, set menu.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->loadModel('company')->setMenu();
|
||||
}
|
||||
|
||||
/**
|
||||
* Browse a department.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function browse($deptID = 0)
|
||||
{
|
||||
$header['title'] = $this->lang->dept->manage . $this->lang->colon . $this->app->company->name;
|
||||
$position[] = $this->lang->dept->manage;
|
||||
|
||||
$parentDepts = $this->dept->getParents($deptID);
|
||||
$this->view->header = $header;
|
||||
$this->view->position = $position;
|
||||
$this->view->deptID = $deptID;
|
||||
$this->view->depts = $this->dept->getTreeMenu($rootDeptID = 0, array('deptmodel', 'createManageLink'));
|
||||
$this->view->parentDepts = $parentDepts;
|
||||
$this->view->sons = $this->dept->getSons($deptID);
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the departments order.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function updateOrder()
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$this->dept->updateOrder($_POST['orders']);
|
||||
die(js::reload('parent'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Manage childs.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function manageChild()
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$this->dept->manageChild($_POST['parentDeptID'], $_POST['depts']);
|
||||
die(js::reload('parent'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a department.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @param string $confirm yes|no
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function delete($deptID, $confirm = 'no')
|
||||
{
|
||||
if($confirm == 'no')
|
||||
{
|
||||
echo js::confirm($this->lang->dept->confirmDelete, $this->createLink('dept', 'delete', "deptID=$deptID&confirm=yes"));
|
||||
exit;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->dept->delete($deptID);
|
||||
die(js::reload('parent'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+23
-23
@@ -1,23 +1,23 @@
|
||||
<?php
|
||||
/**
|
||||
* The dept module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package dept
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->dept->common = 'Department';
|
||||
$lang->dept->add = "Add";
|
||||
$lang->dept->addChild = "Add child department";
|
||||
$lang->dept->manageChild = "Child deprtment";
|
||||
$lang->dept->delete = "Delete";
|
||||
$lang->dept->browse = "Manage";
|
||||
$lang->dept->manage = "Manage";
|
||||
$lang->dept->updateOrder = "Update order";
|
||||
$lang->dept->users = "Users";
|
||||
|
||||
$lang->dept->saveButton = " Save (S) ";
|
||||
$lang->dept->confirmDelete = "Are you sure to delete this department?";
|
||||
<?php
|
||||
/**
|
||||
* The dept module English file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package dept
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->dept->common = 'Department';
|
||||
$lang->dept->add = "Add";
|
||||
$lang->dept->addChild = "Add child department";
|
||||
$lang->dept->manageChild = "Child deprtment";
|
||||
$lang->dept->delete = "Delete";
|
||||
$lang->dept->browse = "Manage";
|
||||
$lang->dept->manage = "Manage";
|
||||
$lang->dept->updateOrder = "Update order";
|
||||
$lang->dept->users = "Users";
|
||||
|
||||
$lang->dept->saveButton = " Save (S) ";
|
||||
$lang->dept->confirmDelete = "Are you sure to delete this department?";
|
||||
|
||||
+23
-23
@@ -1,23 +1,23 @@
|
||||
<?php
|
||||
/**
|
||||
* The dept module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package dept
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->dept->common = '部门结构';
|
||||
$lang->dept->add = "添加";
|
||||
$lang->dept->addChild = "添加下级部门";
|
||||
$lang->dept->manageChild = "下级部门";
|
||||
$lang->dept->delete = "删除部门";
|
||||
$lang->dept->browse = "部门维护";
|
||||
$lang->dept->manage = "维护部门结构";
|
||||
$lang->dept->updateOrder = "更新排序";
|
||||
$lang->dept->users = "成员列表";
|
||||
|
||||
$lang->dept->saveButton = " 保存 (S) ";
|
||||
$lang->dept->confirmDelete = " 您确定删除该部门吗?";
|
||||
<?php
|
||||
/**
|
||||
* The dept module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package dept
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->dept->common = '部门结构';
|
||||
$lang->dept->add = "添加";
|
||||
$lang->dept->addChild = "添加下级部门";
|
||||
$lang->dept->manageChild = "下级部门";
|
||||
$lang->dept->delete = "删除部门";
|
||||
$lang->dept->browse = "部门维护";
|
||||
$lang->dept->manage = "维护部门结构";
|
||||
$lang->dept->updateOrder = "更新排序";
|
||||
$lang->dept->users = "成员列表";
|
||||
|
||||
$lang->dept->saveButton = " 保存 (S) ";
|
||||
$lang->dept->confirmDelete = " 您确定删除该部门吗?";
|
||||
|
||||
+23
-23
@@ -1,23 +1,23 @@
|
||||
<?php
|
||||
/**
|
||||
* The dept module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package dept
|
||||
* @version $Id: zh-tw.php 2605 2012-02-21 07:22:58Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->dept->common = '部門結構';
|
||||
$lang->dept->add = "添加";
|
||||
$lang->dept->addChild = "添加下級部門";
|
||||
$lang->dept->manageChild = "下級部門";
|
||||
$lang->dept->delete = "刪除部門";
|
||||
$lang->dept->browse = "部門維護";
|
||||
$lang->dept->manage = "維護部門結構";
|
||||
$lang->dept->updateOrder = "更新排序";
|
||||
$lang->dept->users = "成員列表";
|
||||
|
||||
$lang->dept->saveButton = " 保存 (S) ";
|
||||
$lang->dept->confirmDelete = " 您確定刪除該部門嗎?";
|
||||
<?php
|
||||
/**
|
||||
* The dept module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package dept
|
||||
* @version $Id: zh-tw.php 2605 2012-02-21 07:22:58Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->dept->common = '部門結構';
|
||||
$lang->dept->add = "添加";
|
||||
$lang->dept->addChild = "添加下級部門";
|
||||
$lang->dept->manageChild = "下級部門";
|
||||
$lang->dept->delete = "刪除部門";
|
||||
$lang->dept->browse = "部門維護";
|
||||
$lang->dept->manage = "維護部門結構";
|
||||
$lang->dept->updateOrder = "更新排序";
|
||||
$lang->dept->users = "成員列表";
|
||||
|
||||
$lang->dept->saveButton = " 保存 (S) ";
|
||||
$lang->dept->confirmDelete = " 您確定刪除該部門嗎?";
|
||||
|
||||
+308
-308
@@ -1,308 +1,308 @@
|
||||
<?php
|
||||
/**
|
||||
* The model file of dept dept of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package dept
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
class deptModel extends model
|
||||
{
|
||||
/**
|
||||
* Get a department by id.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getByID($deptID)
|
||||
{
|
||||
return $this->dao->findById($deptID)->from(TABLE_DEPT)->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* Build the query.
|
||||
*
|
||||
* @param int $rootDeptID
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function buildMenuQuery($rootDeptID)
|
||||
{
|
||||
$rootDept = $this->getByID($rootDeptID);
|
||||
if(!$rootDept)
|
||||
{
|
||||
$rootDept = new stdclass();
|
||||
$rootDept->path = '';
|
||||
}
|
||||
|
||||
return $this->dao->select('*')->from(TABLE_DEPT)
|
||||
->beginIF($rootDeptID > 0)->where('path')->like($rootDept->path . '%')->fi()
|
||||
->orderBy('grade desc, `order`')
|
||||
->get();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get option menu of departments.
|
||||
*
|
||||
* @param int $rootDeptID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getOptionMenu($rootDeptID = 0)
|
||||
{
|
||||
$deptMenu = array();
|
||||
$stmt = $this->dbh->query($this->buildMenuQuery($rootDeptID));
|
||||
$depts = array();
|
||||
while($dept = $stmt->fetch()) $depts[$dept->id] = $dept;
|
||||
|
||||
foreach($depts as $dept)
|
||||
{
|
||||
$parentDepts = explode(',', $dept->path);
|
||||
$deptName = '/';
|
||||
foreach($parentDepts as $parentDeptID)
|
||||
{
|
||||
if(empty($parentDeptID)) continue;
|
||||
$deptName .= $depts[$parentDeptID]->name . '/';
|
||||
}
|
||||
$deptName = rtrim($deptName, '/');
|
||||
$deptName .= "|$dept->id\n";
|
||||
|
||||
if(isset($deptMenu[$dept->id]) and !empty($deptMenu[$dept->id]))
|
||||
{
|
||||
if(isset($deptMenu[$dept->parent]))
|
||||
{
|
||||
$deptMenu[$dept->parent] .= $deptName;
|
||||
}
|
||||
else
|
||||
{
|
||||
$deptMenu[$dept->parent] = $deptName;;
|
||||
}
|
||||
$deptMenu[$dept->parent] .= $deptMenu[$dept->id];
|
||||
}
|
||||
else
|
||||
{
|
||||
if(isset($deptMenu[$dept->parent]) and !empty($deptMenu[$dept->parent]))
|
||||
{
|
||||
$deptMenu[$dept->parent] .= $deptName;
|
||||
}
|
||||
else
|
||||
{
|
||||
$deptMenu[$dept->parent] = $deptName;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$topMenu = @array_pop($deptMenu);
|
||||
$topMenu = explode("\n", trim($topMenu));
|
||||
$lastMenu[] = '/';
|
||||
foreach($topMenu as $menu)
|
||||
{
|
||||
if(!strpos($menu, '|')) continue;
|
||||
list($label, $deptID) = explode('|', $menu);
|
||||
$lastMenu[$deptID] = $label;
|
||||
}
|
||||
return $lastMenu;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the treemenu of departments.
|
||||
*
|
||||
* @param int $rootDeptID
|
||||
* @param string $userFunc
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function getTreeMenu($rootDeptID = 0, $userFunc)
|
||||
{
|
||||
$deptMenu = array();
|
||||
$stmt = $this->dbh->query($this->buildMenuQuery($rootDeptID));
|
||||
while($dept = $stmt->fetch())
|
||||
{
|
||||
$linkHtml = call_user_func($userFunc, $dept);
|
||||
|
||||
if(isset($deptMenu[$dept->id]) and !empty($deptMenu[$dept->id]))
|
||||
{
|
||||
if(!isset($deptMenu[$dept->parent])) $deptMenu[$dept->parent] = '';
|
||||
$deptMenu[$dept->parent] .= "<li>$linkHtml";
|
||||
$deptMenu[$dept->parent] .= "<ul>".$deptMenu[$dept->id]."</ul>\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
if(isset($deptMenu[$dept->parent]) and !empty($deptMenu[$dept->parent]))
|
||||
{
|
||||
$deptMenu[$dept->parent] .= "<li>$linkHtml\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
$deptMenu[$dept->parent] = "<li>$linkHtml\n";
|
||||
}
|
||||
}
|
||||
$deptMenu[$dept->parent] .= "</li>\n";
|
||||
}
|
||||
|
||||
$lastMenu = "<ul id='tree'>" . @array_pop($deptMenu) . "</ul>\n";
|
||||
return $lastMenu;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the manage link.
|
||||
*
|
||||
* @param int $dept
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function createManageLink($dept)
|
||||
{
|
||||
$linkHtml = $dept->name;
|
||||
$linkHtml .= ' ' . html::a(helper::createLink('dept', 'browse', "deptid={$dept->id}"), $this->lang->dept->manageChild);
|
||||
$linkHtml .= ' ' . html::a(helper::createLink('dept', 'delete', "deptid={$dept->id}"), $this->lang->dept->delete, 'hiddenwin');
|
||||
$linkHtml .= ' ' . html::input("orders[$dept->id]", $dept->order, 'style="width:30px;text-align:center"');
|
||||
return $linkHtml;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the member link.
|
||||
*
|
||||
* @param int $dept
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function createMemberLink($dept)
|
||||
{
|
||||
$linkHtml = html::a(helper::createLink('company', 'browse', "dept={$dept->id}"), $dept->name, '_self', "id='dept{$dept->id}'");
|
||||
return $linkHtml;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get sons of a department.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getSons($deptID)
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_DEPT)->where('parent')->eq($deptID)->orderBy('`order`')->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all childs.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getAllChildId($deptID)
|
||||
{
|
||||
if($deptID == 0) return array();
|
||||
$dept = $this->getById($deptID);
|
||||
$childs = $this->dao->select('id')->from(TABLE_DEPT)->where('path')->like($dept->path . '%')->fetchPairs();
|
||||
return array_keys($childs);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get parents.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getParents($deptID)
|
||||
{
|
||||
if($deptID == 0) return array();
|
||||
$path = $this->dao->select('path')->from(TABLE_DEPT)->where('id')->eq($deptID)->fetch('path');
|
||||
$path = substr($path, 1, -1);
|
||||
if(empty($path)) return array();
|
||||
return $this->dao->select('*')->from(TABLE_DEPT)->where('id')->in($path)->orderBy('grade')->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update order.
|
||||
*
|
||||
* @param int $orders
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function updateOrder($orders)
|
||||
{
|
||||
foreach($orders as $deptID => $order) $this->dao->update(TABLE_DEPT)->set('`order`')->eq($order)->where('id')->eq($deptID)->exec();
|
||||
}
|
||||
|
||||
/**
|
||||
* Manage childs.
|
||||
*
|
||||
* @param int $parentDeptID
|
||||
* @param string $childs
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function manageChild($parentDeptID, $childs)
|
||||
{
|
||||
$parentDept = $this->getByID($parentDeptID);
|
||||
if($parentDept)
|
||||
{
|
||||
$grade = $parentDept->grade + 1;
|
||||
$parentPath = $parentDept->path;
|
||||
}
|
||||
else
|
||||
{
|
||||
$grade = 1;
|
||||
$parentPath = ',';
|
||||
}
|
||||
|
||||
foreach($childs as $deptID => $deptName)
|
||||
{
|
||||
if(empty($deptName)) continue;
|
||||
if(is_numeric($deptID))
|
||||
{
|
||||
$dept->name = strip_tags($deptName);
|
||||
$dept->parent = $parentDeptID;
|
||||
$dept->grade = $grade;
|
||||
$this->dao->insert(TABLE_DEPT)->data($dept)->exec();
|
||||
$deptID = $this->dao->lastInsertID();
|
||||
$childPath = $parentPath . "$deptID,";
|
||||
$this->dao->update(TABLE_DEPT)->set('path')->eq($childPath)->where('id')->eq($deptID)->exec();
|
||||
}
|
||||
else
|
||||
{
|
||||
$deptID = str_replace('id', '', $deptID);
|
||||
$this->dao->update(TABLE_DEPT)->set('name')->eq(strip_tags($deptName))->where('id')->eq($deptID)->exec();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get users of a deparment.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getUsers($deptID, $pager = null, $orderBy = 'id')
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_USER)
|
||||
->where('deleted')->eq(0)
|
||||
->beginIF($deptID)->andWhere('dept')->in($deptID)->fi()
|
||||
->orderBy($orderBy)
|
||||
->page($pager)
|
||||
->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a department.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function delete($deptID)
|
||||
{
|
||||
$this->dao->delete()->from(TABLE_DEPT)->where('id')->eq($deptID)->exec();
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The model file of dept dept of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package dept
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
class deptModel extends model
|
||||
{
|
||||
/**
|
||||
* Get a department by id.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getByID($deptID)
|
||||
{
|
||||
return $this->dao->findById($deptID)->from(TABLE_DEPT)->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* Build the query.
|
||||
*
|
||||
* @param int $rootDeptID
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function buildMenuQuery($rootDeptID)
|
||||
{
|
||||
$rootDept = $this->getByID($rootDeptID);
|
||||
if(!$rootDept)
|
||||
{
|
||||
$rootDept = new stdclass();
|
||||
$rootDept->path = '';
|
||||
}
|
||||
|
||||
return $this->dao->select('*')->from(TABLE_DEPT)
|
||||
->beginIF($rootDeptID > 0)->where('path')->like($rootDept->path . '%')->fi()
|
||||
->orderBy('grade desc, `order`')
|
||||
->get();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get option menu of departments.
|
||||
*
|
||||
* @param int $rootDeptID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getOptionMenu($rootDeptID = 0)
|
||||
{
|
||||
$deptMenu = array();
|
||||
$stmt = $this->dbh->query($this->buildMenuQuery($rootDeptID));
|
||||
$depts = array();
|
||||
while($dept = $stmt->fetch()) $depts[$dept->id] = $dept;
|
||||
|
||||
foreach($depts as $dept)
|
||||
{
|
||||
$parentDepts = explode(',', $dept->path);
|
||||
$deptName = '/';
|
||||
foreach($parentDepts as $parentDeptID)
|
||||
{
|
||||
if(empty($parentDeptID)) continue;
|
||||
$deptName .= $depts[$parentDeptID]->name . '/';
|
||||
}
|
||||
$deptName = rtrim($deptName, '/');
|
||||
$deptName .= "|$dept->id\n";
|
||||
|
||||
if(isset($deptMenu[$dept->id]) and !empty($deptMenu[$dept->id]))
|
||||
{
|
||||
if(isset($deptMenu[$dept->parent]))
|
||||
{
|
||||
$deptMenu[$dept->parent] .= $deptName;
|
||||
}
|
||||
else
|
||||
{
|
||||
$deptMenu[$dept->parent] = $deptName;;
|
||||
}
|
||||
$deptMenu[$dept->parent] .= $deptMenu[$dept->id];
|
||||
}
|
||||
else
|
||||
{
|
||||
if(isset($deptMenu[$dept->parent]) and !empty($deptMenu[$dept->parent]))
|
||||
{
|
||||
$deptMenu[$dept->parent] .= $deptName;
|
||||
}
|
||||
else
|
||||
{
|
||||
$deptMenu[$dept->parent] = $deptName;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$topMenu = @array_pop($deptMenu);
|
||||
$topMenu = explode("\n", trim($topMenu));
|
||||
$lastMenu[] = '/';
|
||||
foreach($topMenu as $menu)
|
||||
{
|
||||
if(!strpos($menu, '|')) continue;
|
||||
list($label, $deptID) = explode('|', $menu);
|
||||
$lastMenu[$deptID] = $label;
|
||||
}
|
||||
return $lastMenu;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the treemenu of departments.
|
||||
*
|
||||
* @param int $rootDeptID
|
||||
* @param string $userFunc
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function getTreeMenu($rootDeptID = 0, $userFunc)
|
||||
{
|
||||
$deptMenu = array();
|
||||
$stmt = $this->dbh->query($this->buildMenuQuery($rootDeptID));
|
||||
while($dept = $stmt->fetch())
|
||||
{
|
||||
$linkHtml = call_user_func($userFunc, $dept);
|
||||
|
||||
if(isset($deptMenu[$dept->id]) and !empty($deptMenu[$dept->id]))
|
||||
{
|
||||
if(!isset($deptMenu[$dept->parent])) $deptMenu[$dept->parent] = '';
|
||||
$deptMenu[$dept->parent] .= "<li>$linkHtml";
|
||||
$deptMenu[$dept->parent] .= "<ul>".$deptMenu[$dept->id]."</ul>\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
if(isset($deptMenu[$dept->parent]) and !empty($deptMenu[$dept->parent]))
|
||||
{
|
||||
$deptMenu[$dept->parent] .= "<li>$linkHtml\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
$deptMenu[$dept->parent] = "<li>$linkHtml\n";
|
||||
}
|
||||
}
|
||||
$deptMenu[$dept->parent] .= "</li>\n";
|
||||
}
|
||||
|
||||
$lastMenu = "<ul id='tree'>" . @array_pop($deptMenu) . "</ul>\n";
|
||||
return $lastMenu;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the manage link.
|
||||
*
|
||||
* @param int $dept
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function createManageLink($dept)
|
||||
{
|
||||
$linkHtml = $dept->name;
|
||||
$linkHtml .= ' ' . html::a(helper::createLink('dept', 'browse', "deptid={$dept->id}"), $this->lang->dept->manageChild);
|
||||
$linkHtml .= ' ' . html::a(helper::createLink('dept', 'delete', "deptid={$dept->id}"), $this->lang->dept->delete, 'hiddenwin');
|
||||
$linkHtml .= ' ' . html::input("orders[$dept->id]", $dept->order, 'style="width:30px;text-align:center"');
|
||||
return $linkHtml;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the member link.
|
||||
*
|
||||
* @param int $dept
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function createMemberLink($dept)
|
||||
{
|
||||
$linkHtml = html::a(helper::createLink('company', 'browse', "dept={$dept->id}"), $dept->name, '_self', "id='dept{$dept->id}'");
|
||||
return $linkHtml;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get sons of a department.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getSons($deptID)
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_DEPT)->where('parent')->eq($deptID)->orderBy('`order`')->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all childs.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getAllChildId($deptID)
|
||||
{
|
||||
if($deptID == 0) return array();
|
||||
$dept = $this->getById($deptID);
|
||||
$childs = $this->dao->select('id')->from(TABLE_DEPT)->where('path')->like($dept->path . '%')->fetchPairs();
|
||||
return array_keys($childs);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get parents.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getParents($deptID)
|
||||
{
|
||||
if($deptID == 0) return array();
|
||||
$path = $this->dao->select('path')->from(TABLE_DEPT)->where('id')->eq($deptID)->fetch('path');
|
||||
$path = substr($path, 1, -1);
|
||||
if(empty($path)) return array();
|
||||
return $this->dao->select('*')->from(TABLE_DEPT)->where('id')->in($path)->orderBy('grade')->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update order.
|
||||
*
|
||||
* @param int $orders
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function updateOrder($orders)
|
||||
{
|
||||
foreach($orders as $deptID => $order) $this->dao->update(TABLE_DEPT)->set('`order`')->eq($order)->where('id')->eq($deptID)->exec();
|
||||
}
|
||||
|
||||
/**
|
||||
* Manage childs.
|
||||
*
|
||||
* @param int $parentDeptID
|
||||
* @param string $childs
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function manageChild($parentDeptID, $childs)
|
||||
{
|
||||
$parentDept = $this->getByID($parentDeptID);
|
||||
if($parentDept)
|
||||
{
|
||||
$grade = $parentDept->grade + 1;
|
||||
$parentPath = $parentDept->path;
|
||||
}
|
||||
else
|
||||
{
|
||||
$grade = 1;
|
||||
$parentPath = ',';
|
||||
}
|
||||
|
||||
foreach($childs as $deptID => $deptName)
|
||||
{
|
||||
if(empty($deptName)) continue;
|
||||
if(is_numeric($deptID))
|
||||
{
|
||||
$dept->name = strip_tags($deptName);
|
||||
$dept->parent = $parentDeptID;
|
||||
$dept->grade = $grade;
|
||||
$this->dao->insert(TABLE_DEPT)->data($dept)->exec();
|
||||
$deptID = $this->dao->lastInsertID();
|
||||
$childPath = $parentPath . "$deptID,";
|
||||
$this->dao->update(TABLE_DEPT)->set('path')->eq($childPath)->where('id')->eq($deptID)->exec();
|
||||
}
|
||||
else
|
||||
{
|
||||
$deptID = str_replace('id', '', $deptID);
|
||||
$this->dao->update(TABLE_DEPT)->set('name')->eq(strip_tags($deptName))->where('id')->eq($deptID)->exec();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get users of a deparment.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getUsers($deptID, $pager = null, $orderBy = 'id')
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_USER)
|
||||
->where('deleted')->eq(0)
|
||||
->beginIF($deptID)->andWhere('dept')->in($deptID)->fi()
|
||||
->orderBy($orderBy)
|
||||
->page($pager)
|
||||
->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a department.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function delete($deptID)
|
||||
{
|
||||
$this->dao->delete()->from(TABLE_DEPT)->where('id')->eq($deptID)->exec();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,67 +1,67 @@
|
||||
<?php
|
||||
/**
|
||||
* The browse view file of dept module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package dept
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/treeview.html.php';?>
|
||||
<table class="cont-lt4">
|
||||
<tr valign='top'>
|
||||
<td class='side'>
|
||||
<form method='post' target='hiddenwin' action='<?php echo $this->createLink('dept', 'updateOrder');?>'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $header->title;?></caption>
|
||||
<tr>
|
||||
<td>
|
||||
<div id='main'><?php echo $depts;?></div>
|
||||
<div class='a-center'><?php echo html::submitButton($lang->dept->updateOrder);?></div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</td>
|
||||
<td class='divider'></td>
|
||||
<td>
|
||||
<form method='post' target='hiddenwin' action='<?php echo $this->createLink('dept', 'manageChild');?>'>
|
||||
<table align='center' class='table-1'>
|
||||
<caption><?php echo $lang->dept->manageChild;?></caption>
|
||||
<tr>
|
||||
<td width='10%'>
|
||||
<nobr>
|
||||
<?php
|
||||
echo html::a($this->createLink('dept', 'browse'), $this->app->company->name);
|
||||
echo $lang->arrow;
|
||||
foreach($parentDepts as $dept)
|
||||
{
|
||||
echo html::a($this->createLink('dept', 'browse', "deptID=$dept->id"), $dept->name);
|
||||
echo $lang->arrow;
|
||||
}
|
||||
?>
|
||||
</nobr>
|
||||
</td>
|
||||
<td>
|
||||
<?php
|
||||
foreach($sons as $sonDept) echo html::input("depts[id$sonDept->id]", $sonDept->name) . '<br />';
|
||||
for($i = 0; $i < DEPT::NEW_CHILD_COUNT ; $i ++) echo html::input("depts[]") . '<br />';
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='a-center' colspan='2'>
|
||||
<?php echo html::submitButton() . html::resetButton();?>
|
||||
<input type='hidden' value='<?php echo $deptID;?>' name='parentDeptID' />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The browse view file of dept module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package dept
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/treeview.html.php';?>
|
||||
<table class="cont-lt4">
|
||||
<tr valign='top'>
|
||||
<td class='side'>
|
||||
<form method='post' target='hiddenwin' action='<?php echo $this->createLink('dept', 'updateOrder');?>'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $header->title;?></caption>
|
||||
<tr>
|
||||
<td>
|
||||
<div id='main'><?php echo $depts;?></div>
|
||||
<div class='a-center'><?php echo html::submitButton($lang->dept->updateOrder);?></div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</td>
|
||||
<td class='divider'></td>
|
||||
<td>
|
||||
<form method='post' target='hiddenwin' action='<?php echo $this->createLink('dept', 'manageChild');?>'>
|
||||
<table align='center' class='table-1'>
|
||||
<caption><?php echo $lang->dept->manageChild;?></caption>
|
||||
<tr>
|
||||
<td width='10%'>
|
||||
<nobr>
|
||||
<?php
|
||||
echo html::a($this->createLink('dept', 'browse'), $this->app->company->name);
|
||||
echo $lang->arrow;
|
||||
foreach($parentDepts as $dept)
|
||||
{
|
||||
echo html::a($this->createLink('dept', 'browse', "deptID=$dept->id"), $dept->name);
|
||||
echo $lang->arrow;
|
||||
}
|
||||
?>
|
||||
</nobr>
|
||||
</td>
|
||||
<td>
|
||||
<?php
|
||||
foreach($sons as $sonDept) echo html::input("depts[id$sonDept->id]", $sonDept->name) . '<br />';
|
||||
for($i = 0; $i < DEPT::NEW_CHILD_COUNT ; $i ++) echo html::input("depts[]") . '<br />';
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='a-center' colspan='2'>
|
||||
<?php echo html::submitButton() . html::resetButton();?>
|
||||
<input type='hidden' value='<?php echo $deptID;?>' name='parentDeptID' />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
+425
-425
@@ -1,425 +1,425 @@
|
||||
<?php
|
||||
/**
|
||||
* The control file of doc module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: control.php 933 2010-07-06 06:53:40Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class doc extends control
|
||||
{
|
||||
/**
|
||||
* Construct function, load user, tree, action auto.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->loadModel('user');
|
||||
$this->loadModel('tree');
|
||||
$this->loadModel('action');
|
||||
$this->loadModel('product');
|
||||
$this->loadModel('project');
|
||||
$this->libs = $this->doc->getLibs();
|
||||
}
|
||||
|
||||
/**
|
||||
* Go to browse page.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$this->locate(inlink('browse'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Browse docs.
|
||||
*
|
||||
* @param string|int $libID product|project or the int id of custom library
|
||||
* @param int $moduleID
|
||||
* @param int $productID
|
||||
* @param int $projectID
|
||||
* @param string $orderBy
|
||||
* @param int $recTotal
|
||||
* @param int $recPerPage
|
||||
* @param int $pageID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function browse($libID = 'product', $moduleID = 0, $productID = 0, $projectID = 0, $browseType = 'byModule', $param = 0, $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
{
|
||||
/* Set browseType.*/
|
||||
$browseType = strtolower($browseType);
|
||||
$queryID = ($browseType == 'bysearch') ? (int)$param : 0;
|
||||
|
||||
/* Set menu, save session. */
|
||||
$this->doc->setMenu($this->libs, $libID, 'doc');
|
||||
$this->session->set('docList', $this->app->getURI(true));
|
||||
|
||||
/* Set header and position. */
|
||||
$this->view->header->title = $this->lang->doc->index . $this->lang->colon . $this->libs[$libID];
|
||||
$this->view->position[] = $this->libs[$libID];
|
||||
|
||||
/* Load pager. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$pager = new pager($recTotal, $recPerPage, $pageID);
|
||||
|
||||
/* Get docs. */
|
||||
$modules = 0;
|
||||
$docs=array();
|
||||
if($browseType == "bymodule")
|
||||
{
|
||||
if($moduleID) $modules = $this->tree->getAllChildID($moduleID);
|
||||
$docs = $this->doc->getDocs($libID, $productID, $projectID, $modules, $orderBy, $pager);
|
||||
}
|
||||
elseif($browseType == "bysearch")
|
||||
{
|
||||
if($queryID)
|
||||
{
|
||||
$query = $this->loadModel('search')->getQuery($queryID);
|
||||
if($query)
|
||||
{
|
||||
$this->session->set('docQuery', $query->sql);
|
||||
$this->session->set('docForm', $query->form);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->session->set('docQuery', ' 1 = 1');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if($this->session->docQuery == false) $this->session->set('docQuery', ' 1 = 1');
|
||||
}
|
||||
$docQuery = str_replace("`product` = 'all'", '1', $this->session->docQuery); // Search all producti.
|
||||
$docQuery = str_replace("`project` = 'all'", '1', $docQuery); // Search all project.
|
||||
$docQuery = $this->loadModel('search')->replaceDynamic($docQuery);
|
||||
$docs = $this->dao->select('*')->from(TABLE_DOC)->where($docQuery)
|
||||
->andWhere('deleted')->eq(0)
|
||||
->orderBy($orderBy)->page($pager)->fetchAll();
|
||||
}
|
||||
|
||||
/* Get the tree menu. */
|
||||
if($libID == 'product')
|
||||
{
|
||||
$moduleTree = $this->tree->getProductDocTreeMenu();
|
||||
}
|
||||
elseif($libID == 'project')
|
||||
{
|
||||
$moduleTree = $this->tree->getProjectDocTreeMenu();
|
||||
}
|
||||
else
|
||||
{
|
||||
$moduleTree = $this->tree->getTreeMenu($libID, $viewType = 'customdoc', $startModuleID = 0, array('treeModel', 'createDocLink'));
|
||||
}
|
||||
|
||||
/* Build the search form. */
|
||||
$this->config->doc->search['actionURL'] = $this->createLink('doc', 'browse', "libID=$libID&moduleID=$moduleID&procuctID=$productID&projectID=$projectID&browseType=bySearch&queryID=myQueryID");
|
||||
$this->config->doc->search['queryID'] = $queryID;
|
||||
$this->config->doc->search['params']['product']['values'] = array(''=>'') + $this->product->getPairs() + array('all'=>$this->lang->doc->allProduct);
|
||||
$this->config->doc->search['params']['project']['values'] = array(''=>'') + $this->project->getPairs() + array('all'=>$this->lang->doc->allProject);
|
||||
$this->config->doc->search['params']['lib']['values'] = array(''=>'') + $this->libs;
|
||||
$this->config->doc->search['params']['type']['values'] = array(''=>'') + $this->config->doc->search['params']['type']['values'];
|
||||
$this->loadModel('search')->setSearchParams($this->config->doc->search);
|
||||
|
||||
/* Get the modules. */
|
||||
if($libID == 'product' or $libID == 'project')
|
||||
{
|
||||
$moduleOptionMenu = $this->tree->getOptionMenu(0, $libID . 'doc', $startModuleID = 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
$moduleOptionMenu = $this->tree->getOptionMenu($libID, 'customdoc', $startModuleID = 0);
|
||||
}
|
||||
$this->config->doc->search['params']['module']['values'] = array(''=>'') + $moduleOptionMenu;
|
||||
|
||||
$this->view->libID = $libID;
|
||||
$this->view->libName = $this->libs[$libID];
|
||||
$this->view->moduleID = $moduleID;
|
||||
$this->view->moduleTree = $moduleTree;
|
||||
$this->view->parentModules = $this->tree->getParents($moduleID);
|
||||
$this->view->docs = $docs;
|
||||
$this->view->pager = $pager;
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noletter');
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->productID = $productID;
|
||||
$this->view->projectID = $projectID;
|
||||
$this->view->browseType = $browseType;
|
||||
$this->view->param = $param;
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a library.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function createLib()
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$libID = $this->doc->createLib();
|
||||
if(!dao::isError())
|
||||
{
|
||||
$this->loadModel('action')->create('docLib', $libID, 'Created');
|
||||
die(js::locate($this->createLink($this->moduleName, 'browse', "libID=$libID"), 'parent'));
|
||||
}
|
||||
else
|
||||
{
|
||||
echo js::error(dao::getError());
|
||||
}
|
||||
}
|
||||
die($this->display());
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit a library.
|
||||
*
|
||||
* @param int $libID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function editLib($libID)
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$changes = $this->doc->updateLib($libID);
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
if($changes)
|
||||
{
|
||||
$actionID = $this->loadModel('action')->create('docLib', $libID, 'edited');
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
}
|
||||
die(js::locate($this->createLink($this->moduleName, 'browse', "libID=$libID"), 'parent'));
|
||||
}
|
||||
|
||||
$lib = $this->doc->getLibByID($libID);
|
||||
$this->view->libName = empty($lib) ? $libID : $lib->name;
|
||||
$this->view->libID = $libID;
|
||||
|
||||
die($this->display());
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a library.
|
||||
*
|
||||
* @param int $libID
|
||||
* @param string $confirm yes|no
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function deleteLib($libID, $confirm = 'no')
|
||||
{
|
||||
if($libID == 'product' or $libID == 'project') die();
|
||||
if($confirm == 'no')
|
||||
{
|
||||
die(js::confirm($this->lang->doc->confirmDeleteLib, $this->createLink('doc', 'deleteLib', "libID=$libID&confirm=yes")));
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->doc->delete(TABLE_DOCLIB, $libID);
|
||||
die(js::locate($this->createLink('doc', 'browse'), 'parent'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a doc.
|
||||
*
|
||||
* @param int|string $libID
|
||||
* @param int $moduleID
|
||||
* @param int $productID
|
||||
* @param int $projectID
|
||||
* @param string $from
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create($libID, $moduleID = 0, $productID = 0, $projectID = 0, $from = 'doc')
|
||||
{
|
||||
$projectID = (int)$projectID;
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$docID = $this->doc->create();
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
$this->action->create('doc', $docID, 'Created');
|
||||
|
||||
if($from == 'product') $link = $this->createLink('product', 'doc', "productID={$this->post->product}");
|
||||
if($from == 'project') $link = $this->createLink('project', 'doc', "projectID={$this->post->project}");
|
||||
if($from == 'doc')
|
||||
{
|
||||
$productID = intval($this->post->product);
|
||||
$projectID = intval($this->post->project);
|
||||
$vars = "libID=$libID&moduleID={$this->post->module}&productID=$productID&projectID=$projectID";
|
||||
$link = $this->createLink('doc', 'browse', $vars);
|
||||
}
|
||||
die(js::locate($link, 'parent'));
|
||||
}
|
||||
|
||||
$this->loadModel('product');
|
||||
$this->loadModel('project');
|
||||
|
||||
/* According the from, set menus. */
|
||||
if($from == 'product')
|
||||
{
|
||||
$this->lang->doc->menu = $this->lang->product->menu;
|
||||
$this->lang->doc->menuOrder = $this->lang->product->menuOrder;
|
||||
$this->product->setMenu($this->product->getPairs(), $productID);
|
||||
$this->lang->set('menugroup.doc', 'product');
|
||||
}
|
||||
elseif($from == 'project')
|
||||
{
|
||||
$this->lang->doc->menu = $this->lang->project->menu;
|
||||
$this->lang->doc->menuOrder = $this->lang->project->menuOrder;
|
||||
$this->project->setMenu($this->project->getPairs('nocode'), $projectID);
|
||||
$this->lang->set('menugroup.doc', 'project');
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->doc->setMenu($this->libs, $libID);
|
||||
}
|
||||
|
||||
/* Get the modules. */
|
||||
if($libID == 'product' or $libID == 'project')
|
||||
{
|
||||
$moduleOptionMenu = $this->tree->getOptionMenu(0, $libID . 'doc', $startModuleID = 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
$moduleOptionMenu = $this->tree->getOptionMenu($libID, 'customdoc', $startModuleID = 0);
|
||||
}
|
||||
|
||||
$this->view->header->title = $this->libs[$libID] . $this->lang->colon . $this->lang->doc->create;
|
||||
$this->view->position[] = html::a($this->createLink('doc', 'browse', "libID=$libID"), $this->libs[$libID]);
|
||||
$this->view->position[] = $this->lang->doc->create;
|
||||
|
||||
$this->view->libID = $libID;
|
||||
$this->view->moduleOptionMenu = $moduleOptionMenu;
|
||||
$this->view->moduleID = $moduleID;
|
||||
$this->view->productID = $productID;
|
||||
$this->view->projectID = $projectID;
|
||||
$this->view->products = $projectID == 0 ? $this->product->getPairs() : $this->project->getProducts($projectID);
|
||||
$this->view->projects = $this->loadModel('project')->getPairs('all');
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit a doc.
|
||||
*
|
||||
* @param int $docID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function edit($docID)
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$changes = $this->doc->update($docID);
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
$files = $this->loadModel('file')->saveUpload('doc', $docID);
|
||||
if($this->post->comment != '' or !empty($changes) or !empty($files))
|
||||
{
|
||||
$action = !empty($changes) ? 'Edited' : 'Commented';
|
||||
$fileAction = '';
|
||||
if(!empty($files)) $fileAction = $this->lang->addFiles . join(',', $files) . "\n" ;
|
||||
$actionID = $this->action->create('doc', $docID, $action, $fileAction . $this->post->comment);
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
}
|
||||
die(js::locate($this->createLink('doc', 'view', "docID=$docID"), 'parent'));
|
||||
}
|
||||
|
||||
/* Get doc and set menu. */
|
||||
$doc = $this->doc->getById($docID);
|
||||
$libID = $doc->lib;
|
||||
$this->doc->setMenu($this->libs, $libID);
|
||||
|
||||
/* Get modules. */
|
||||
if($libID == 'product' or $libID == 'project')
|
||||
{
|
||||
$moduleOptionMenu = $this->tree->getOptionMenu(0, $libID . 'doc', $startModuleID = 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
$moduleOptionMenu = $this->tree->getOptionMenu($libID, 'customdoc', $startModuleID = 0);
|
||||
}
|
||||
|
||||
$this->view->header->title = $this->libs[$libID] . $this->lang->colon . $this->lang->doc->create;
|
||||
$this->view->position[] = html::a($this->createLink('doc', 'browse', "libID=$libID"), $this->libs[$libID]);
|
||||
$this->view->position[] = $this->lang->doc->edit;
|
||||
|
||||
$this->view->doc = $doc;
|
||||
$this->view->libID = $libID;
|
||||
$this->view->users = $this->user->getPairs('noclosed,nodeleted');
|
||||
$this->view->moduleOptionMenu = $moduleOptionMenu;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* View a doc.
|
||||
*
|
||||
* @param int $docID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function view($docID)
|
||||
{
|
||||
/* Get doc. */
|
||||
$doc = $this->doc->getById($docID, true);
|
||||
if(!$doc) die(js::error($this->lang->notFound) . js::locate('back'));
|
||||
if($doc->project != 0 and !$this->project->checkPriv($this->project->getById($doc->project)))
|
||||
{
|
||||
echo(js::alert($this->lang->error->accessDenied));
|
||||
die(js::locate('back'));
|
||||
}
|
||||
|
||||
/* Get library. */
|
||||
$lib = $doc->libName;
|
||||
if($doc->lib == 'product') $lib = $doc->productName;
|
||||
if($doc->lib == 'project') $lib = $doc->productName . $this->lang->arrow . $doc->projectName;
|
||||
|
||||
/* Set menu. */
|
||||
$this->doc->setMenu($this->libs, $doc->lib);
|
||||
|
||||
$this->view->header->title = "DOC #$doc->id $doc->title - " . $this->libs[$doc->lib];
|
||||
$this->view->position[] = html::a($this->createLink('doc', 'browse', "libID=$doc->lib"), $this->libs[$doc->lib]);
|
||||
$this->view->position[] = $this->lang->doc->view;
|
||||
|
||||
$this->view->doc = $doc;
|
||||
$this->view->lib = $lib;
|
||||
$this->view->actions = $this->loadModel('action')->getList('doc', $docID);
|
||||
$this->view->users = $this->user->getPairs('noclosed,nodeleted,noletter');
|
||||
$this->view->preAndNext = $this->loadModel('common')->getPreAndNextObject('doc', $docID);
|
||||
$this->view->keTableCSS = $this->doc->extractKETableCSS($doc->content);
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a doc.
|
||||
*
|
||||
* @param int $docID
|
||||
* @param string $confirm yes|no
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function delete($docID, $confirm = 'no')
|
||||
{
|
||||
if($confirm == 'no')
|
||||
{
|
||||
die(js::confirm($this->lang->doc->confirmDelete, inlink('delete', "docID=$docID&confirm=yes")));
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->doc->delete(TABLE_DOC, $docID);
|
||||
die(js::locate($this->session->docList, 'parent'));
|
||||
}
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The control file of doc module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: control.php 933 2010-07-06 06:53:40Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class doc extends control
|
||||
{
|
||||
/**
|
||||
* Construct function, load user, tree, action auto.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->loadModel('user');
|
||||
$this->loadModel('tree');
|
||||
$this->loadModel('action');
|
||||
$this->loadModel('product');
|
||||
$this->loadModel('project');
|
||||
$this->libs = $this->doc->getLibs();
|
||||
}
|
||||
|
||||
/**
|
||||
* Go to browse page.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$this->locate(inlink('browse'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Browse docs.
|
||||
*
|
||||
* @param string|int $libID product|project or the int id of custom library
|
||||
* @param int $moduleID
|
||||
* @param int $productID
|
||||
* @param int $projectID
|
||||
* @param string $orderBy
|
||||
* @param int $recTotal
|
||||
* @param int $recPerPage
|
||||
* @param int $pageID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function browse($libID = 'product', $moduleID = 0, $productID = 0, $projectID = 0, $browseType = 'byModule', $param = 0, $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
{
|
||||
/* Set browseType.*/
|
||||
$browseType = strtolower($browseType);
|
||||
$queryID = ($browseType == 'bysearch') ? (int)$param : 0;
|
||||
|
||||
/* Set menu, save session. */
|
||||
$this->doc->setMenu($this->libs, $libID, 'doc');
|
||||
$this->session->set('docList', $this->app->getURI(true));
|
||||
|
||||
/* Set header and position. */
|
||||
$this->view->header->title = $this->lang->doc->index . $this->lang->colon . $this->libs[$libID];
|
||||
$this->view->position[] = $this->libs[$libID];
|
||||
|
||||
/* Load pager. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$pager = new pager($recTotal, $recPerPage, $pageID);
|
||||
|
||||
/* Get docs. */
|
||||
$modules = 0;
|
||||
$docs=array();
|
||||
if($browseType == "bymodule")
|
||||
{
|
||||
if($moduleID) $modules = $this->tree->getAllChildID($moduleID);
|
||||
$docs = $this->doc->getDocs($libID, $productID, $projectID, $modules, $orderBy, $pager);
|
||||
}
|
||||
elseif($browseType == "bysearch")
|
||||
{
|
||||
if($queryID)
|
||||
{
|
||||
$query = $this->loadModel('search')->getQuery($queryID);
|
||||
if($query)
|
||||
{
|
||||
$this->session->set('docQuery', $query->sql);
|
||||
$this->session->set('docForm', $query->form);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->session->set('docQuery', ' 1 = 1');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if($this->session->docQuery == false) $this->session->set('docQuery', ' 1 = 1');
|
||||
}
|
||||
$docQuery = str_replace("`product` = 'all'", '1', $this->session->docQuery); // Search all producti.
|
||||
$docQuery = str_replace("`project` = 'all'", '1', $docQuery); // Search all project.
|
||||
$docQuery = $this->loadModel('search')->replaceDynamic($docQuery);
|
||||
$docs = $this->dao->select('*')->from(TABLE_DOC)->where($docQuery)
|
||||
->andWhere('deleted')->eq(0)
|
||||
->orderBy($orderBy)->page($pager)->fetchAll();
|
||||
}
|
||||
|
||||
/* Get the tree menu. */
|
||||
if($libID == 'product')
|
||||
{
|
||||
$moduleTree = $this->tree->getProductDocTreeMenu();
|
||||
}
|
||||
elseif($libID == 'project')
|
||||
{
|
||||
$moduleTree = $this->tree->getProjectDocTreeMenu();
|
||||
}
|
||||
else
|
||||
{
|
||||
$moduleTree = $this->tree->getTreeMenu($libID, $viewType = 'customdoc', $startModuleID = 0, array('treeModel', 'createDocLink'));
|
||||
}
|
||||
|
||||
/* Build the search form. */
|
||||
$this->config->doc->search['actionURL'] = $this->createLink('doc', 'browse', "libID=$libID&moduleID=$moduleID&procuctID=$productID&projectID=$projectID&browseType=bySearch&queryID=myQueryID");
|
||||
$this->config->doc->search['queryID'] = $queryID;
|
||||
$this->config->doc->search['params']['product']['values'] = array(''=>'') + $this->product->getPairs() + array('all'=>$this->lang->doc->allProduct);
|
||||
$this->config->doc->search['params']['project']['values'] = array(''=>'') + $this->project->getPairs() + array('all'=>$this->lang->doc->allProject);
|
||||
$this->config->doc->search['params']['lib']['values'] = array(''=>'') + $this->libs;
|
||||
$this->config->doc->search['params']['type']['values'] = array(''=>'') + $this->config->doc->search['params']['type']['values'];
|
||||
$this->loadModel('search')->setSearchParams($this->config->doc->search);
|
||||
|
||||
/* Get the modules. */
|
||||
if($libID == 'product' or $libID == 'project')
|
||||
{
|
||||
$moduleOptionMenu = $this->tree->getOptionMenu(0, $libID . 'doc', $startModuleID = 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
$moduleOptionMenu = $this->tree->getOptionMenu($libID, 'customdoc', $startModuleID = 0);
|
||||
}
|
||||
$this->config->doc->search['params']['module']['values'] = array(''=>'') + $moduleOptionMenu;
|
||||
|
||||
$this->view->libID = $libID;
|
||||
$this->view->libName = $this->libs[$libID];
|
||||
$this->view->moduleID = $moduleID;
|
||||
$this->view->moduleTree = $moduleTree;
|
||||
$this->view->parentModules = $this->tree->getParents($moduleID);
|
||||
$this->view->docs = $docs;
|
||||
$this->view->pager = $pager;
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noletter');
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->productID = $productID;
|
||||
$this->view->projectID = $projectID;
|
||||
$this->view->browseType = $browseType;
|
||||
$this->view->param = $param;
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a library.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function createLib()
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$libID = $this->doc->createLib();
|
||||
if(!dao::isError())
|
||||
{
|
||||
$this->loadModel('action')->create('docLib', $libID, 'Created');
|
||||
die(js::locate($this->createLink($this->moduleName, 'browse', "libID=$libID"), 'parent'));
|
||||
}
|
||||
else
|
||||
{
|
||||
echo js::error(dao::getError());
|
||||
}
|
||||
}
|
||||
die($this->display());
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit a library.
|
||||
*
|
||||
* @param int $libID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function editLib($libID)
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$changes = $this->doc->updateLib($libID);
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
if($changes)
|
||||
{
|
||||
$actionID = $this->loadModel('action')->create('docLib', $libID, 'edited');
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
}
|
||||
die(js::locate($this->createLink($this->moduleName, 'browse', "libID=$libID"), 'parent'));
|
||||
}
|
||||
|
||||
$lib = $this->doc->getLibByID($libID);
|
||||
$this->view->libName = empty($lib) ? $libID : $lib->name;
|
||||
$this->view->libID = $libID;
|
||||
|
||||
die($this->display());
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a library.
|
||||
*
|
||||
* @param int $libID
|
||||
* @param string $confirm yes|no
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function deleteLib($libID, $confirm = 'no')
|
||||
{
|
||||
if($libID == 'product' or $libID == 'project') die();
|
||||
if($confirm == 'no')
|
||||
{
|
||||
die(js::confirm($this->lang->doc->confirmDeleteLib, $this->createLink('doc', 'deleteLib', "libID=$libID&confirm=yes")));
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->doc->delete(TABLE_DOCLIB, $libID);
|
||||
die(js::locate($this->createLink('doc', 'browse'), 'parent'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a doc.
|
||||
*
|
||||
* @param int|string $libID
|
||||
* @param int $moduleID
|
||||
* @param int $productID
|
||||
* @param int $projectID
|
||||
* @param string $from
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create($libID, $moduleID = 0, $productID = 0, $projectID = 0, $from = 'doc')
|
||||
{
|
||||
$projectID = (int)$projectID;
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$docID = $this->doc->create();
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
$this->action->create('doc', $docID, 'Created');
|
||||
|
||||
if($from == 'product') $link = $this->createLink('product', 'doc', "productID={$this->post->product}");
|
||||
if($from == 'project') $link = $this->createLink('project', 'doc', "projectID={$this->post->project}");
|
||||
if($from == 'doc')
|
||||
{
|
||||
$productID = intval($this->post->product);
|
||||
$projectID = intval($this->post->project);
|
||||
$vars = "libID=$libID&moduleID={$this->post->module}&productID=$productID&projectID=$projectID";
|
||||
$link = $this->createLink('doc', 'browse', $vars);
|
||||
}
|
||||
die(js::locate($link, 'parent'));
|
||||
}
|
||||
|
||||
$this->loadModel('product');
|
||||
$this->loadModel('project');
|
||||
|
||||
/* According the from, set menus. */
|
||||
if($from == 'product')
|
||||
{
|
||||
$this->lang->doc->menu = $this->lang->product->menu;
|
||||
$this->lang->doc->menuOrder = $this->lang->product->menuOrder;
|
||||
$this->product->setMenu($this->product->getPairs(), $productID);
|
||||
$this->lang->set('menugroup.doc', 'product');
|
||||
}
|
||||
elseif($from == 'project')
|
||||
{
|
||||
$this->lang->doc->menu = $this->lang->project->menu;
|
||||
$this->lang->doc->menuOrder = $this->lang->project->menuOrder;
|
||||
$this->project->setMenu($this->project->getPairs('nocode'), $projectID);
|
||||
$this->lang->set('menugroup.doc', 'project');
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->doc->setMenu($this->libs, $libID);
|
||||
}
|
||||
|
||||
/* Get the modules. */
|
||||
if($libID == 'product' or $libID == 'project')
|
||||
{
|
||||
$moduleOptionMenu = $this->tree->getOptionMenu(0, $libID . 'doc', $startModuleID = 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
$moduleOptionMenu = $this->tree->getOptionMenu($libID, 'customdoc', $startModuleID = 0);
|
||||
}
|
||||
|
||||
$this->view->header->title = $this->libs[$libID] . $this->lang->colon . $this->lang->doc->create;
|
||||
$this->view->position[] = html::a($this->createLink('doc', 'browse', "libID=$libID"), $this->libs[$libID]);
|
||||
$this->view->position[] = $this->lang->doc->create;
|
||||
|
||||
$this->view->libID = $libID;
|
||||
$this->view->moduleOptionMenu = $moduleOptionMenu;
|
||||
$this->view->moduleID = $moduleID;
|
||||
$this->view->productID = $productID;
|
||||
$this->view->projectID = $projectID;
|
||||
$this->view->products = $projectID == 0 ? $this->product->getPairs() : $this->project->getProducts($projectID);
|
||||
$this->view->projects = $this->loadModel('project')->getPairs('all');
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit a doc.
|
||||
*
|
||||
* @param int $docID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function edit($docID)
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$changes = $this->doc->update($docID);
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
$files = $this->loadModel('file')->saveUpload('doc', $docID);
|
||||
if($this->post->comment != '' or !empty($changes) or !empty($files))
|
||||
{
|
||||
$action = !empty($changes) ? 'Edited' : 'Commented';
|
||||
$fileAction = '';
|
||||
if(!empty($files)) $fileAction = $this->lang->addFiles . join(',', $files) . "\n" ;
|
||||
$actionID = $this->action->create('doc', $docID, $action, $fileAction . $this->post->comment);
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
}
|
||||
die(js::locate($this->createLink('doc', 'view', "docID=$docID"), 'parent'));
|
||||
}
|
||||
|
||||
/* Get doc and set menu. */
|
||||
$doc = $this->doc->getById($docID);
|
||||
$libID = $doc->lib;
|
||||
$this->doc->setMenu($this->libs, $libID);
|
||||
|
||||
/* Get modules. */
|
||||
if($libID == 'product' or $libID == 'project')
|
||||
{
|
||||
$moduleOptionMenu = $this->tree->getOptionMenu(0, $libID . 'doc', $startModuleID = 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
$moduleOptionMenu = $this->tree->getOptionMenu($libID, 'customdoc', $startModuleID = 0);
|
||||
}
|
||||
|
||||
$this->view->header->title = $this->libs[$libID] . $this->lang->colon . $this->lang->doc->create;
|
||||
$this->view->position[] = html::a($this->createLink('doc', 'browse', "libID=$libID"), $this->libs[$libID]);
|
||||
$this->view->position[] = $this->lang->doc->edit;
|
||||
|
||||
$this->view->doc = $doc;
|
||||
$this->view->libID = $libID;
|
||||
$this->view->users = $this->user->getPairs('noclosed,nodeleted');
|
||||
$this->view->moduleOptionMenu = $moduleOptionMenu;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* View a doc.
|
||||
*
|
||||
* @param int $docID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function view($docID)
|
||||
{
|
||||
/* Get doc. */
|
||||
$doc = $this->doc->getById($docID, true);
|
||||
if(!$doc) die(js::error($this->lang->notFound) . js::locate('back'));
|
||||
if($doc->project != 0 and !$this->project->checkPriv($this->project->getById($doc->project)))
|
||||
{
|
||||
echo(js::alert($this->lang->error->accessDenied));
|
||||
die(js::locate('back'));
|
||||
}
|
||||
|
||||
/* Get library. */
|
||||
$lib = $doc->libName;
|
||||
if($doc->lib == 'product') $lib = $doc->productName;
|
||||
if($doc->lib == 'project') $lib = $doc->productName . $this->lang->arrow . $doc->projectName;
|
||||
|
||||
/* Set menu. */
|
||||
$this->doc->setMenu($this->libs, $doc->lib);
|
||||
|
||||
$this->view->header->title = "DOC #$doc->id $doc->title - " . $this->libs[$doc->lib];
|
||||
$this->view->position[] = html::a($this->createLink('doc', 'browse', "libID=$doc->lib"), $this->libs[$doc->lib]);
|
||||
$this->view->position[] = $this->lang->doc->view;
|
||||
|
||||
$this->view->doc = $doc;
|
||||
$this->view->lib = $lib;
|
||||
$this->view->actions = $this->loadModel('action')->getList('doc', $docID);
|
||||
$this->view->users = $this->user->getPairs('noclosed,nodeleted,noletter');
|
||||
$this->view->preAndNext = $this->loadModel('common')->getPreAndNextObject('doc', $docID);
|
||||
$this->view->keTableCSS = $this->doc->extractKETableCSS($doc->content);
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a doc.
|
||||
*
|
||||
* @param int $docID
|
||||
* @param string $confirm yes|no
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function delete($docID, $confirm = 'no')
|
||||
{
|
||||
if($confirm == 'no')
|
||||
{
|
||||
die(js::confirm($this->lang->doc->confirmDelete, inlink('delete', "docID=$docID&confirm=yes")));
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->doc->delete(TABLE_DOC, $docID);
|
||||
die(js::locate($this->session->docList, 'parent'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+71
-71
@@ -1,71 +1,71 @@
|
||||
<?php
|
||||
/**
|
||||
* The doc module english file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: en.php 824 2010-05-02 15:32:06Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* Fields. */
|
||||
$lang->doc->common = 'Doc';
|
||||
$lang->doc->id = 'ID';
|
||||
$lang->doc->product = 'Product';
|
||||
$lang->doc->project = 'Project';
|
||||
$lang->doc->lib = 'Library';
|
||||
$lang->doc->module = 'Module';
|
||||
$lang->doc->title = 'Title';
|
||||
$lang->doc->digest = 'Digest';
|
||||
$lang->doc->comment = 'Comment';
|
||||
$lang->doc->type = 'Type';
|
||||
$lang->doc->content = 'Content';
|
||||
$lang->doc->keywords = 'Keywords';
|
||||
$lang->doc->url = 'URL';
|
||||
$lang->doc->files = 'File';
|
||||
$lang->doc->views = 'Views';
|
||||
$lang->doc->addedBy = 'Added by';
|
||||
$lang->doc->addedDate = 'Added date';
|
||||
$lang->doc->editedBy = 'Edited by';
|
||||
$lang->doc->editedDate = 'Edited date';
|
||||
$lang->doc->basicInfo = 'Basic Info';
|
||||
|
||||
$lang->doc->moduleDoc = 'By module';
|
||||
$lang->doc->searchDoc = 'By search';
|
||||
//$lang->doc->allDoc = 'All document';
|
||||
|
||||
$lang->doc->moduleName = 'Module name';
|
||||
$lang->doc->moduleOrder = 'Module order';
|
||||
|
||||
/* Actions. */
|
||||
$lang->doc->index = 'Index';
|
||||
$lang->doc->create = 'Create doc';
|
||||
$lang->doc->edit = 'Edit doc';
|
||||
$lang->doc->delete = 'Delete doc';
|
||||
$lang->doc->browse = 'Browse doc';
|
||||
$lang->doc->view = 'View doc';
|
||||
$lang->doc->manageType = 'Manage type';
|
||||
|
||||
$lang->doc->libName = 'Library name';
|
||||
$lang->doc->createLib = 'Create library';
|
||||
$lang->doc->editLib = 'Edit library';
|
||||
$lang->doc->deleteLib = 'Delete library';
|
||||
|
||||
/* Browse tabs. */
|
||||
$lang->doc->allProduct = 'All products';
|
||||
$lang->doc->allProject = 'All projects';
|
||||
|
||||
$lang->doc->systemLibs['product'] = 'Product doc';
|
||||
$lang->doc->systemLibs['project'] = 'Project doc';
|
||||
|
||||
$lang->doc->types['file'] = 'File';
|
||||
$lang->doc->types['url'] = 'Link';
|
||||
$lang->doc->types['text'] = 'Html';
|
||||
|
||||
$lang->doc->confirmDelete = "Are you sure to delete this doc?";
|
||||
$lang->doc->confirmDeleteLib = " Are you sure to delete this doc library?";
|
||||
$lang->doc->errorEditSystemDoc = "System doc library needn't edit";
|
||||
|
||||
$lang->doc->placeholder = new stdclass();
|
||||
$lang->doc->placeholder->url = 'url';
|
||||
<?php
|
||||
/**
|
||||
* The doc module english file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: en.php 824 2010-05-02 15:32:06Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* Fields. */
|
||||
$lang->doc->common = 'Doc';
|
||||
$lang->doc->id = 'ID';
|
||||
$lang->doc->product = 'Product';
|
||||
$lang->doc->project = 'Project';
|
||||
$lang->doc->lib = 'Library';
|
||||
$lang->doc->module = 'Module';
|
||||
$lang->doc->title = 'Title';
|
||||
$lang->doc->digest = 'Digest';
|
||||
$lang->doc->comment = 'Comment';
|
||||
$lang->doc->type = 'Type';
|
||||
$lang->doc->content = 'Content';
|
||||
$lang->doc->keywords = 'Keywords';
|
||||
$lang->doc->url = 'URL';
|
||||
$lang->doc->files = 'File';
|
||||
$lang->doc->views = 'Views';
|
||||
$lang->doc->addedBy = 'Added by';
|
||||
$lang->doc->addedDate = 'Added date';
|
||||
$lang->doc->editedBy = 'Edited by';
|
||||
$lang->doc->editedDate = 'Edited date';
|
||||
$lang->doc->basicInfo = 'Basic Info';
|
||||
|
||||
$lang->doc->moduleDoc = 'By module';
|
||||
$lang->doc->searchDoc = 'By search';
|
||||
//$lang->doc->allDoc = 'All document';
|
||||
|
||||
$lang->doc->moduleName = 'Module name';
|
||||
$lang->doc->moduleOrder = 'Module order';
|
||||
|
||||
/* Actions. */
|
||||
$lang->doc->index = 'Index';
|
||||
$lang->doc->create = 'Create doc';
|
||||
$lang->doc->edit = 'Edit doc';
|
||||
$lang->doc->delete = 'Delete doc';
|
||||
$lang->doc->browse = 'Browse doc';
|
||||
$lang->doc->view = 'View doc';
|
||||
$lang->doc->manageType = 'Manage type';
|
||||
|
||||
$lang->doc->libName = 'Library name';
|
||||
$lang->doc->createLib = 'Create library';
|
||||
$lang->doc->editLib = 'Edit library';
|
||||
$lang->doc->deleteLib = 'Delete library';
|
||||
|
||||
/* Browse tabs. */
|
||||
$lang->doc->allProduct = 'All products';
|
||||
$lang->doc->allProject = 'All projects';
|
||||
|
||||
$lang->doc->systemLibs['product'] = 'Product doc';
|
||||
$lang->doc->systemLibs['project'] = 'Project doc';
|
||||
|
||||
$lang->doc->types['file'] = 'File';
|
||||
$lang->doc->types['url'] = 'Link';
|
||||
$lang->doc->types['text'] = 'Html';
|
||||
|
||||
$lang->doc->confirmDelete = "Are you sure to delete this doc?";
|
||||
$lang->doc->confirmDeleteLib = " Are you sure to delete this doc library?";
|
||||
$lang->doc->errorEditSystemDoc = "System doc library needn't edit";
|
||||
|
||||
$lang->doc->placeholder = new stdclass();
|
||||
$lang->doc->placeholder->url = 'url';
|
||||
|
||||
+71
-71
@@ -1,71 +1,71 @@
|
||||
<?php
|
||||
/**
|
||||
* The doc module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: zh-cn.php 824 2010-05-02 15:32:06Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* 字段列表。*/
|
||||
$lang->doc->common = '文档视图';
|
||||
$lang->doc->id = '文档编号';
|
||||
$lang->doc->product = '所属产品';
|
||||
$lang->doc->project = '所属项目';
|
||||
$lang->doc->lib = '所属文档库';
|
||||
$lang->doc->module = '所属分类';
|
||||
$lang->doc->title = '文档标题';
|
||||
$lang->doc->digest = '文档摘要';
|
||||
$lang->doc->comment = '文档备注';
|
||||
$lang->doc->type = '文档类型';
|
||||
$lang->doc->content = '文档正文';
|
||||
$lang->doc->keywords = '关键字';
|
||||
$lang->doc->url = '文档URL';
|
||||
$lang->doc->files = '附件';
|
||||
$lang->doc->views = '查阅次数';
|
||||
$lang->doc->addedBy = '由谁添加';
|
||||
$lang->doc->addedDate = '添加时间';
|
||||
$lang->doc->editedBy = '由谁编辑';
|
||||
$lang->doc->editedDate = '编辑时间';
|
||||
$lang->doc->basicInfo = '基本信息';
|
||||
|
||||
$lang->doc->moduleDoc = '按模块浏览';
|
||||
$lang->doc->searchDoc = '搜索';
|
||||
//$lang->doc->allDoc = '所有文档';
|
||||
|
||||
$lang->doc->moduleName = '模块名称';
|
||||
$lang->doc->moduleOrder = '模块排序';
|
||||
|
||||
/* 方法列表。*/
|
||||
$lang->doc->index = '首页';
|
||||
$lang->doc->create = '创建文档';
|
||||
$lang->doc->edit = '编辑文档';
|
||||
$lang->doc->delete = '删除文档';
|
||||
$lang->doc->browse = '文档列表';
|
||||
$lang->doc->view = '文档详情';
|
||||
$lang->doc->manageType = '维护分类';
|
||||
|
||||
$lang->doc->libName = '文档库名称';
|
||||
$lang->doc->createLib = '创建文档库';
|
||||
$lang->doc->editLib = '编辑文档库';
|
||||
$lang->doc->deleteLib = '删除文档库';
|
||||
|
||||
/* 查询条件列表 */
|
||||
$lang->doc->allProduct = '所有产品';
|
||||
$lang->doc->allProject = '所有项目';
|
||||
|
||||
$lang->doc->systemLibs['product'] = '产品文档库';
|
||||
$lang->doc->systemLibs['project'] = '项目文档库';
|
||||
|
||||
$lang->doc->types['file'] = '文件';
|
||||
$lang->doc->types['url'] = '链接';
|
||||
$lang->doc->types['text'] = '网页';
|
||||
|
||||
$lang->doc->confirmDelete = "您确定删除该文档吗?";
|
||||
$lang->doc->confirmDeleteLib = " 您确定删除该文档库吗?";
|
||||
$lang->doc->errorEditSystemDoc = "系统文档库无需修改。";
|
||||
|
||||
$lang->doc->placeholder = new stdclass();
|
||||
$lang->doc->placeholder->url = '相应的链接地址';
|
||||
<?php
|
||||
/**
|
||||
* The doc module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: zh-cn.php 824 2010-05-02 15:32:06Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* 字段列表。*/
|
||||
$lang->doc->common = '文档视图';
|
||||
$lang->doc->id = '文档编号';
|
||||
$lang->doc->product = '所属产品';
|
||||
$lang->doc->project = '所属项目';
|
||||
$lang->doc->lib = '所属文档库';
|
||||
$lang->doc->module = '所属分类';
|
||||
$lang->doc->title = '文档标题';
|
||||
$lang->doc->digest = '文档摘要';
|
||||
$lang->doc->comment = '文档备注';
|
||||
$lang->doc->type = '文档类型';
|
||||
$lang->doc->content = '文档正文';
|
||||
$lang->doc->keywords = '关键字';
|
||||
$lang->doc->url = '文档URL';
|
||||
$lang->doc->files = '附件';
|
||||
$lang->doc->views = '查阅次数';
|
||||
$lang->doc->addedBy = '由谁添加';
|
||||
$lang->doc->addedDate = '添加时间';
|
||||
$lang->doc->editedBy = '由谁编辑';
|
||||
$lang->doc->editedDate = '编辑时间';
|
||||
$lang->doc->basicInfo = '基本信息';
|
||||
|
||||
$lang->doc->moduleDoc = '按模块浏览';
|
||||
$lang->doc->searchDoc = '搜索';
|
||||
//$lang->doc->allDoc = '所有文档';
|
||||
|
||||
$lang->doc->moduleName = '模块名称';
|
||||
$lang->doc->moduleOrder = '模块排序';
|
||||
|
||||
/* 方法列表。*/
|
||||
$lang->doc->index = '首页';
|
||||
$lang->doc->create = '创建文档';
|
||||
$lang->doc->edit = '编辑文档';
|
||||
$lang->doc->delete = '删除文档';
|
||||
$lang->doc->browse = '文档列表';
|
||||
$lang->doc->view = '文档详情';
|
||||
$lang->doc->manageType = '维护分类';
|
||||
|
||||
$lang->doc->libName = '文档库名称';
|
||||
$lang->doc->createLib = '创建文档库';
|
||||
$lang->doc->editLib = '编辑文档库';
|
||||
$lang->doc->deleteLib = '删除文档库';
|
||||
|
||||
/* 查询条件列表 */
|
||||
$lang->doc->allProduct = '所有产品';
|
||||
$lang->doc->allProject = '所有项目';
|
||||
|
||||
$lang->doc->systemLibs['product'] = '产品文档库';
|
||||
$lang->doc->systemLibs['project'] = '项目文档库';
|
||||
|
||||
$lang->doc->types['file'] = '文件';
|
||||
$lang->doc->types['url'] = '链接';
|
||||
$lang->doc->types['text'] = '网页';
|
||||
|
||||
$lang->doc->confirmDelete = "您确定删除该文档吗?";
|
||||
$lang->doc->confirmDeleteLib = " 您确定删除该文档库吗?";
|
||||
$lang->doc->errorEditSystemDoc = "系统文档库无需修改。";
|
||||
|
||||
$lang->doc->placeholder = new stdclass();
|
||||
$lang->doc->placeholder->url = '相应的链接地址';
|
||||
|
||||
+71
-71
@@ -1,71 +1,71 @@
|
||||
<?php
|
||||
/**
|
||||
* The doc module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: zh-tw.php 824 2010-05-02 15:32:06Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* 欄位列表。*/
|
||||
$lang->doc->common = '文檔視圖';
|
||||
$lang->doc->id = '文檔編號';
|
||||
$lang->doc->product = '所屬產品';
|
||||
$lang->doc->project = '所屬項目';
|
||||
$lang->doc->lib = '所屬文檔庫';
|
||||
$lang->doc->module = '所屬分類';
|
||||
$lang->doc->title = '文檔標題';
|
||||
$lang->doc->digest = '文檔摘要';
|
||||
$lang->doc->comment = '文檔備註';
|
||||
$lang->doc->type = '文檔類型';
|
||||
$lang->doc->content = '文檔正文';
|
||||
$lang->doc->keywords = '關鍵字';
|
||||
$lang->doc->url = '文檔URL';
|
||||
$lang->doc->files = '附件';
|
||||
$lang->doc->views = '查閲次數';
|
||||
$lang->doc->addedBy = '由誰添加';
|
||||
$lang->doc->addedDate = '添加時間';
|
||||
$lang->doc->editedBy = '由誰編輯';
|
||||
$lang->doc->editedDate = '編輯時間';
|
||||
$lang->doc->basicInfo = '基本信息';
|
||||
|
||||
$lang->doc->moduleDoc = '按模組瀏覽';
|
||||
$lang->doc->searchDoc = '搜索';
|
||||
//$lang->doc->allDoc = '所有文檔';
|
||||
|
||||
$lang->doc->moduleName = '模組名稱';
|
||||
$lang->doc->moduleOrder = '模組排序';
|
||||
|
||||
/* 方法列表。*/
|
||||
$lang->doc->index = '首頁';
|
||||
$lang->doc->create = '創建文檔';
|
||||
$lang->doc->edit = '編輯文檔';
|
||||
$lang->doc->delete = '刪除文檔';
|
||||
$lang->doc->browse = '文檔列表';
|
||||
$lang->doc->view = '文檔詳情';
|
||||
$lang->doc->manageType = '維護分類';
|
||||
|
||||
$lang->doc->libName = '文檔庫名稱';
|
||||
$lang->doc->createLib = '創建文檔庫';
|
||||
$lang->doc->editLib = '編輯文檔庫';
|
||||
$lang->doc->deleteLib = '刪除文檔庫';
|
||||
|
||||
/* 查詢條件列表 */
|
||||
$lang->doc->allProduct = '所有產品';
|
||||
$lang->doc->allProject = '所有項目';
|
||||
|
||||
$lang->doc->systemLibs['product'] = '產品文檔庫';
|
||||
$lang->doc->systemLibs['project'] = '項目文檔庫';
|
||||
|
||||
$lang->doc->types['file'] = '檔案';
|
||||
$lang->doc->types['url'] = '連結';
|
||||
$lang->doc->types['text'] = '網頁';
|
||||
|
||||
$lang->doc->confirmDelete = "您確定刪除該文檔嗎?";
|
||||
$lang->doc->confirmDeleteLib = " 您確定刪除該文檔庫嗎?";
|
||||
$lang->doc->errorEditSystemDoc = "系統文檔庫無需修改。";
|
||||
|
||||
$lang->doc->placeholder = new stdclass();
|
||||
$lang->doc->placeholder->url = '相應的連結地址';
|
||||
<?php
|
||||
/**
|
||||
* The doc module zh-tw file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青島易軟天創網絡科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: zh-tw.php 824 2010-05-02 15:32:06Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* 欄位列表。*/
|
||||
$lang->doc->common = '文檔視圖';
|
||||
$lang->doc->id = '文檔編號';
|
||||
$lang->doc->product = '所屬產品';
|
||||
$lang->doc->project = '所屬項目';
|
||||
$lang->doc->lib = '所屬文檔庫';
|
||||
$lang->doc->module = '所屬分類';
|
||||
$lang->doc->title = '文檔標題';
|
||||
$lang->doc->digest = '文檔摘要';
|
||||
$lang->doc->comment = '文檔備註';
|
||||
$lang->doc->type = '文檔類型';
|
||||
$lang->doc->content = '文檔正文';
|
||||
$lang->doc->keywords = '關鍵字';
|
||||
$lang->doc->url = '文檔URL';
|
||||
$lang->doc->files = '附件';
|
||||
$lang->doc->views = '查閲次數';
|
||||
$lang->doc->addedBy = '由誰添加';
|
||||
$lang->doc->addedDate = '添加時間';
|
||||
$lang->doc->editedBy = '由誰編輯';
|
||||
$lang->doc->editedDate = '編輯時間';
|
||||
$lang->doc->basicInfo = '基本信息';
|
||||
|
||||
$lang->doc->moduleDoc = '按模組瀏覽';
|
||||
$lang->doc->searchDoc = '搜索';
|
||||
//$lang->doc->allDoc = '所有文檔';
|
||||
|
||||
$lang->doc->moduleName = '模組名稱';
|
||||
$lang->doc->moduleOrder = '模組排序';
|
||||
|
||||
/* 方法列表。*/
|
||||
$lang->doc->index = '首頁';
|
||||
$lang->doc->create = '創建文檔';
|
||||
$lang->doc->edit = '編輯文檔';
|
||||
$lang->doc->delete = '刪除文檔';
|
||||
$lang->doc->browse = '文檔列表';
|
||||
$lang->doc->view = '文檔詳情';
|
||||
$lang->doc->manageType = '維護分類';
|
||||
|
||||
$lang->doc->libName = '文檔庫名稱';
|
||||
$lang->doc->createLib = '創建文檔庫';
|
||||
$lang->doc->editLib = '編輯文檔庫';
|
||||
$lang->doc->deleteLib = '刪除文檔庫';
|
||||
|
||||
/* 查詢條件列表 */
|
||||
$lang->doc->allProduct = '所有產品';
|
||||
$lang->doc->allProject = '所有項目';
|
||||
|
||||
$lang->doc->systemLibs['product'] = '產品文檔庫';
|
||||
$lang->doc->systemLibs['project'] = '項目文檔庫';
|
||||
|
||||
$lang->doc->types['file'] = '檔案';
|
||||
$lang->doc->types['url'] = '連結';
|
||||
$lang->doc->types['text'] = '網頁';
|
||||
|
||||
$lang->doc->confirmDelete = "您確定刪除該文檔嗎?";
|
||||
$lang->doc->confirmDeleteLib = " 您確定刪除該文檔庫嗎?";
|
||||
$lang->doc->errorEditSystemDoc = "系統文檔庫無需修改。";
|
||||
|
||||
$lang->doc->placeholder = new stdclass();
|
||||
$lang->doc->placeholder->url = '相應的連結地址';
|
||||
|
||||
+319
-319
@@ -1,319 +1,319 @@
|
||||
<?php
|
||||
/**
|
||||
* The model file of doc module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: model.php 881 2010-06-22 06:50:32Z chencongzhi520 $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
class docModel extends model
|
||||
{
|
||||
/**
|
||||
* Set menus
|
||||
*
|
||||
* @param array $libs
|
||||
* @param int $libID
|
||||
* @param string $extra
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setMenu($libs, $libID, $extra = '')
|
||||
{
|
||||
$currentModule = $this->app->getModuleName();
|
||||
$currentMethod = $this->app->getMethodName();
|
||||
|
||||
$selectHtml = html::select('libID', $libs, $libID, "onchange=\"switchDocLib(this.value, '$currentModule', '$currentMethod', '$extra');\"");
|
||||
common::setMenuVars($this->lang->doc->menu, 'list', $selectHtml . $this->lang->arrow);
|
||||
foreach($this->lang->doc->menu as $key => $menu)
|
||||
{
|
||||
if($key != 'list') common::setMenuVars($this->lang->doc->menu, $key, $libID);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get library by id.
|
||||
*
|
||||
* @param int $libID
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getLibById($libID)
|
||||
{
|
||||
return $this->dao->findByID($libID)->from(TABLE_DOCLIB)->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get libraries.
|
||||
*
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getLibs()
|
||||
{
|
||||
$libs = $this->dao->select('id, name')->from(TABLE_DOCLIB)->where('deleted')->eq(0)->fetchPairs();
|
||||
return $this->lang->doc->systemLibs + $libs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a library.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function createLib()
|
||||
{
|
||||
$lib = fixer::input('post')->stripTags('name')->get();
|
||||
$this->dao->insert(TABLE_DOCLIB)
|
||||
->data($lib)
|
||||
->autoCheck()
|
||||
->batchCheck('name', 'notempty')
|
||||
->check('name', 'unique')
|
||||
->exec();
|
||||
return $this->dao->lastInsertID();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a library.
|
||||
*
|
||||
* @param int $libID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function updateLib($libID)
|
||||
{
|
||||
$libID = (int)$libID;
|
||||
$oldLib = $this->getLibById($libID);
|
||||
$lib = fixer::input('post')->stripTags('name')->get();
|
||||
$this->dao->update(TABLE_DOCLIB)
|
||||
->data($lib)
|
||||
->autoCheck()
|
||||
->batchCheck('name', 'notempty')
|
||||
->check('name', 'unique', "id != $libID")
|
||||
->where('id')->eq($libID)
|
||||
->exec();
|
||||
if(!dao::isError()) return common::createChanges($oldLib, $lib);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get docs.
|
||||
*
|
||||
* @param int|string $libID
|
||||
* @param int $productID
|
||||
* @param int $projectID
|
||||
* @param int $module
|
||||
* @param string $orderBy
|
||||
* @param object $pager
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getDocs($libID, $productID, $projectID, $module, $orderBy, $pager)
|
||||
{
|
||||
$products = $this->loadModel('product')->getPairs();
|
||||
$projects = $this->loadModel('project')->getPairs();
|
||||
$keysOfProducts = array_keys($products);
|
||||
$keysOfProjects = array_keys($projects);
|
||||
$allKeysOfProjects = $keysOfProjects;
|
||||
$allKeysOfProjects[] = 0;
|
||||
|
||||
return $this->dao->select('*')->from(TABLE_DOC)
|
||||
->where('deleted')->eq(0)
|
||||
->beginIF(is_numeric($libID))->andWhere('lib')->eq($libID)->fi()
|
||||
->beginIF($libID == 'product')->andWhere('product')->in($keysOfProducts)->andWhere('project')->in($allKeysOfProjects)->fi()
|
||||
->beginIF($libID == 'project')->andWhere('project')->in($keysOfProjects)->fi()
|
||||
->beginIF($productID > 0)->andWhere('product')->eq($productID)->fi()
|
||||
->beginIF($projectID > 0)->andWhere('project')->eq($projectID)->fi()
|
||||
->beginIF((string)$projectID == 'int')->andWhere('project')->gt(0)->fi()
|
||||
->beginIF($module)->andWhere('module')->in($module)->fi()
|
||||
->orderBy($orderBy)
|
||||
->page($pager)
|
||||
->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get doc info by id.
|
||||
*
|
||||
* @param int $docID
|
||||
* @param bool $setImgSize
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getById($docID, $setImgSize = false)
|
||||
{
|
||||
$doc = $this->dao->select('*')
|
||||
->from(TABLE_DOC)
|
||||
->where('id')->eq((int)$docID)
|
||||
->fetch();
|
||||
if(!$doc) return false;
|
||||
if($setImgSize) $doc->content = $this->loadModel('file')->setImgSize($doc->content);
|
||||
$doc->files = $this->loadModel('file')->getByObject('doc', $docID);
|
||||
|
||||
$doc->libName = '';
|
||||
$doc->productName = '';
|
||||
$doc->projectName = '';
|
||||
$doc->moduleName = '';
|
||||
if($doc->lib) $doc->libName = $this->dao->findByID($doc->lib)->from(TABLE_DOCLIB)->fetch('name');
|
||||
if($doc->product) $doc->productName = $this->dao->findByID($doc->product)->from(TABLE_PRODUCT)->fetch('name');
|
||||
if($doc->project) $doc->projectName = $this->dao->findByID($doc->project)->from(TABLE_PROJECT)->fetch('name');
|
||||
if($doc->module) $doc->moduleName = $this->dao->findByID($doc->module)->from(TABLE_MODULE)->fetch('name');
|
||||
return $doc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a doc.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
$now = helper::now();
|
||||
$doc = fixer::input('post')
|
||||
->add('addedBy', $this->app->user->account)
|
||||
->add('addedDate', $now)
|
||||
->setDefault('product, project, module', 0)
|
||||
->specialChars('title, digest, keywords')
|
||||
->encodeURL('url')
|
||||
->cleanInt('product, project, module')
|
||||
->remove('files, labels')
|
||||
->get();
|
||||
$condition = "lib = '$doc->lib' AND module = $doc->module";
|
||||
$this->dao->insert(TABLE_DOC)
|
||||
->data($doc)
|
||||
->autoCheck()
|
||||
->batchCheck($this->config->doc->create->requiredFields, 'notempty')
|
||||
->check('title', 'unique', $condition)
|
||||
->exec();
|
||||
if(!dao::isError())
|
||||
{
|
||||
$docID = $this->dao->lastInsertID();
|
||||
$this->loadModel('file')->saveUpload('doc', $docID);
|
||||
return $docID;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a doc.
|
||||
*
|
||||
* @param int $docID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function update($docID)
|
||||
{
|
||||
$oldDoc = $this->getById($docID);
|
||||
$now = helper::now();
|
||||
$doc = fixer::input('post')
|
||||
->cleanInt('module')
|
||||
->setDefault('module', 0)
|
||||
->specialChars('title, digest, keywords')
|
||||
->encodeURL('url')
|
||||
->remove('comment,files, labels')
|
||||
->add('editedBy', $this->app->user->account)
|
||||
->add('editedDate', $now)
|
||||
->get();
|
||||
|
||||
$condition = "lib = '$doc->lib' AND module = $doc->module AND id != $docID";
|
||||
$this->dao->update(TABLE_DOC)->data($doc)
|
||||
->autoCheck()
|
||||
->batchCheck($this->config->doc->edit->requiredFields, 'notempty')
|
||||
->check('title', 'unique', $condition)
|
||||
->where('id')->eq((int)$docID)
|
||||
->exec();
|
||||
if(!dao::isError()) return common::createChanges($oldDoc, $doc);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get docs of a product.
|
||||
*
|
||||
* @param int $productID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getProductDocs($productID)
|
||||
{
|
||||
return $this->dao->select('t1.*, t2.name as module')
|
||||
->from(TABLE_DOC)->alias('t1')
|
||||
->leftjoin(TABLE_MODULE)->alias('t2')->on('t1.module = t2.id')
|
||||
->where('t1.product')->eq($productID)
|
||||
->andWhere('t1.deleted')->eq(0)
|
||||
->orderBy('t1.id_desc')
|
||||
->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get docs of a project.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getProjectDocs($projectID)
|
||||
{
|
||||
return $this->dao->findByProject($projectID)->from(TABLE_DOC)->andWhere('deleted')->eq(0)->orderBy('id_desc')->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get pairs of product modules.
|
||||
*
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getProductModulePairs()
|
||||
{
|
||||
return $this->dao->findByType('productdoc')->from(TABLE_MODULE)->fetchPairs('id', 'name');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get pairs of project modules.
|
||||
*
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getProjectModulePairs()
|
||||
{
|
||||
return $this->dao->findByType('projectdoc')->from(TABLE_MODULE)->andWhere('type')->eq('projectdoc')->fetchPairs('id', 'name');
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract css styles for tables created in kindeditor.
|
||||
*
|
||||
* Like this: <table class="ke-table1" style="width:100%;" cellpadding="2" cellspacing="0" border="1" bordercolor="#000000">
|
||||
*
|
||||
* @param string $content
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function extractKETableCSS($content)
|
||||
{
|
||||
$css = '';
|
||||
$rule = '/<table class="ke(.*)" .*/';
|
||||
if(preg_match_all($rule, $content, $results))
|
||||
{
|
||||
foreach($results[0] as $tableLine)
|
||||
{
|
||||
$attributes = explode(' ', str_replace('"', '', $tableLine));
|
||||
foreach($attributes as $attribute)
|
||||
{
|
||||
if(strpos($attribute, '=') === false) continue;
|
||||
list($attributeName, $attributeValue) = explode('=', $attribute);
|
||||
$$attributeName = $attributeValue;
|
||||
}
|
||||
|
||||
if(!isset($class)) continue;
|
||||
$className = $class;
|
||||
$borderSize = isset($border) ? $border . 'px' : '1px';
|
||||
$borderColor = isset($bordercolor) ? $bordercolor : 'gray';
|
||||
$borderStyle = "{border:$borderSize $borderColor solid}\n";
|
||||
$css .= ".$className$borderStyle";
|
||||
$css .= ".$className td$borderStyle";
|
||||
}
|
||||
}
|
||||
return $css;
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The model file of doc module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: model.php 881 2010-06-22 06:50:32Z chencongzhi520 $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
class docModel extends model
|
||||
{
|
||||
/**
|
||||
* Set menus
|
||||
*
|
||||
* @param array $libs
|
||||
* @param int $libID
|
||||
* @param string $extra
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setMenu($libs, $libID, $extra = '')
|
||||
{
|
||||
$currentModule = $this->app->getModuleName();
|
||||
$currentMethod = $this->app->getMethodName();
|
||||
|
||||
$selectHtml = html::select('libID', $libs, $libID, "onchange=\"switchDocLib(this.value, '$currentModule', '$currentMethod', '$extra');\"");
|
||||
common::setMenuVars($this->lang->doc->menu, 'list', $selectHtml . $this->lang->arrow);
|
||||
foreach($this->lang->doc->menu as $key => $menu)
|
||||
{
|
||||
if($key != 'list') common::setMenuVars($this->lang->doc->menu, $key, $libID);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get library by id.
|
||||
*
|
||||
* @param int $libID
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getLibById($libID)
|
||||
{
|
||||
return $this->dao->findByID($libID)->from(TABLE_DOCLIB)->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get libraries.
|
||||
*
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getLibs()
|
||||
{
|
||||
$libs = $this->dao->select('id, name')->from(TABLE_DOCLIB)->where('deleted')->eq(0)->fetchPairs();
|
||||
return $this->lang->doc->systemLibs + $libs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a library.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function createLib()
|
||||
{
|
||||
$lib = fixer::input('post')->stripTags('name')->get();
|
||||
$this->dao->insert(TABLE_DOCLIB)
|
||||
->data($lib)
|
||||
->autoCheck()
|
||||
->batchCheck('name', 'notempty')
|
||||
->check('name', 'unique')
|
||||
->exec();
|
||||
return $this->dao->lastInsertID();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a library.
|
||||
*
|
||||
* @param int $libID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function updateLib($libID)
|
||||
{
|
||||
$libID = (int)$libID;
|
||||
$oldLib = $this->getLibById($libID);
|
||||
$lib = fixer::input('post')->stripTags('name')->get();
|
||||
$this->dao->update(TABLE_DOCLIB)
|
||||
->data($lib)
|
||||
->autoCheck()
|
||||
->batchCheck('name', 'notempty')
|
||||
->check('name', 'unique', "id != $libID")
|
||||
->where('id')->eq($libID)
|
||||
->exec();
|
||||
if(!dao::isError()) return common::createChanges($oldLib, $lib);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get docs.
|
||||
*
|
||||
* @param int|string $libID
|
||||
* @param int $productID
|
||||
* @param int $projectID
|
||||
* @param int $module
|
||||
* @param string $orderBy
|
||||
* @param object $pager
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getDocs($libID, $productID, $projectID, $module, $orderBy, $pager)
|
||||
{
|
||||
$products = $this->loadModel('product')->getPairs();
|
||||
$projects = $this->loadModel('project')->getPairs();
|
||||
$keysOfProducts = array_keys($products);
|
||||
$keysOfProjects = array_keys($projects);
|
||||
$allKeysOfProjects = $keysOfProjects;
|
||||
$allKeysOfProjects[] = 0;
|
||||
|
||||
return $this->dao->select('*')->from(TABLE_DOC)
|
||||
->where('deleted')->eq(0)
|
||||
->beginIF(is_numeric($libID))->andWhere('lib')->eq($libID)->fi()
|
||||
->beginIF($libID == 'product')->andWhere('product')->in($keysOfProducts)->andWhere('project')->in($allKeysOfProjects)->fi()
|
||||
->beginIF($libID == 'project')->andWhere('project')->in($keysOfProjects)->fi()
|
||||
->beginIF($productID > 0)->andWhere('product')->eq($productID)->fi()
|
||||
->beginIF($projectID > 0)->andWhere('project')->eq($projectID)->fi()
|
||||
->beginIF((string)$projectID == 'int')->andWhere('project')->gt(0)->fi()
|
||||
->beginIF($module)->andWhere('module')->in($module)->fi()
|
||||
->orderBy($orderBy)
|
||||
->page($pager)
|
||||
->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get doc info by id.
|
||||
*
|
||||
* @param int $docID
|
||||
* @param bool $setImgSize
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getById($docID, $setImgSize = false)
|
||||
{
|
||||
$doc = $this->dao->select('*')
|
||||
->from(TABLE_DOC)
|
||||
->where('id')->eq((int)$docID)
|
||||
->fetch();
|
||||
if(!$doc) return false;
|
||||
if($setImgSize) $doc->content = $this->loadModel('file')->setImgSize($doc->content);
|
||||
$doc->files = $this->loadModel('file')->getByObject('doc', $docID);
|
||||
|
||||
$doc->libName = '';
|
||||
$doc->productName = '';
|
||||
$doc->projectName = '';
|
||||
$doc->moduleName = '';
|
||||
if($doc->lib) $doc->libName = $this->dao->findByID($doc->lib)->from(TABLE_DOCLIB)->fetch('name');
|
||||
if($doc->product) $doc->productName = $this->dao->findByID($doc->product)->from(TABLE_PRODUCT)->fetch('name');
|
||||
if($doc->project) $doc->projectName = $this->dao->findByID($doc->project)->from(TABLE_PROJECT)->fetch('name');
|
||||
if($doc->module) $doc->moduleName = $this->dao->findByID($doc->module)->from(TABLE_MODULE)->fetch('name');
|
||||
return $doc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a doc.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
$now = helper::now();
|
||||
$doc = fixer::input('post')
|
||||
->add('addedBy', $this->app->user->account)
|
||||
->add('addedDate', $now)
|
||||
->setDefault('product, project, module', 0)
|
||||
->specialChars('title, digest, keywords')
|
||||
->encodeURL('url')
|
||||
->cleanInt('product, project, module')
|
||||
->remove('files, labels')
|
||||
->get();
|
||||
$condition = "lib = '$doc->lib' AND module = $doc->module";
|
||||
$this->dao->insert(TABLE_DOC)
|
||||
->data($doc)
|
||||
->autoCheck()
|
||||
->batchCheck($this->config->doc->create->requiredFields, 'notempty')
|
||||
->check('title', 'unique', $condition)
|
||||
->exec();
|
||||
if(!dao::isError())
|
||||
{
|
||||
$docID = $this->dao->lastInsertID();
|
||||
$this->loadModel('file')->saveUpload('doc', $docID);
|
||||
return $docID;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a doc.
|
||||
*
|
||||
* @param int $docID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function update($docID)
|
||||
{
|
||||
$oldDoc = $this->getById($docID);
|
||||
$now = helper::now();
|
||||
$doc = fixer::input('post')
|
||||
->cleanInt('module')
|
||||
->setDefault('module', 0)
|
||||
->specialChars('title, digest, keywords')
|
||||
->encodeURL('url')
|
||||
->remove('comment,files, labels')
|
||||
->add('editedBy', $this->app->user->account)
|
||||
->add('editedDate', $now)
|
||||
->get();
|
||||
|
||||
$condition = "lib = '$doc->lib' AND module = $doc->module AND id != $docID";
|
||||
$this->dao->update(TABLE_DOC)->data($doc)
|
||||
->autoCheck()
|
||||
->batchCheck($this->config->doc->edit->requiredFields, 'notempty')
|
||||
->check('title', 'unique', $condition)
|
||||
->where('id')->eq((int)$docID)
|
||||
->exec();
|
||||
if(!dao::isError()) return common::createChanges($oldDoc, $doc);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get docs of a product.
|
||||
*
|
||||
* @param int $productID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getProductDocs($productID)
|
||||
{
|
||||
return $this->dao->select('t1.*, t2.name as module')
|
||||
->from(TABLE_DOC)->alias('t1')
|
||||
->leftjoin(TABLE_MODULE)->alias('t2')->on('t1.module = t2.id')
|
||||
->where('t1.product')->eq($productID)
|
||||
->andWhere('t1.deleted')->eq(0)
|
||||
->orderBy('t1.id_desc')
|
||||
->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get docs of a project.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getProjectDocs($projectID)
|
||||
{
|
||||
return $this->dao->findByProject($projectID)->from(TABLE_DOC)->andWhere('deleted')->eq(0)->orderBy('id_desc')->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get pairs of product modules.
|
||||
*
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getProductModulePairs()
|
||||
{
|
||||
return $this->dao->findByType('productdoc')->from(TABLE_MODULE)->fetchPairs('id', 'name');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get pairs of project modules.
|
||||
*
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getProjectModulePairs()
|
||||
{
|
||||
return $this->dao->findByType('projectdoc')->from(TABLE_MODULE)->andWhere('type')->eq('projectdoc')->fetchPairs('id', 'name');
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract css styles for tables created in kindeditor.
|
||||
*
|
||||
* Like this: <table class="ke-table1" style="width:100%;" cellpadding="2" cellspacing="0" border="1" bordercolor="#000000">
|
||||
*
|
||||
* @param string $content
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function extractKETableCSS($content)
|
||||
{
|
||||
$css = '';
|
||||
$rule = '/<table class="ke(.*)" .*/';
|
||||
if(preg_match_all($rule, $content, $results))
|
||||
{
|
||||
foreach($results[0] as $tableLine)
|
||||
{
|
||||
$attributes = explode(' ', str_replace('"', '', $tableLine));
|
||||
foreach($attributes as $attribute)
|
||||
{
|
||||
if(strpos($attribute, '=') === false) continue;
|
||||
list($attributeName, $attributeValue) = explode('=', $attribute);
|
||||
$$attributeName = $attributeValue;
|
||||
}
|
||||
|
||||
if(!isset($class)) continue;
|
||||
$className = $class;
|
||||
$borderSize = isset($border) ? $border . 'px' : '1px';
|
||||
$borderColor = isset($bordercolor) ? $bordercolor : 'gray';
|
||||
$borderStyle = "{border:$borderSize $borderColor solid}\n";
|
||||
$css .= ".$className$borderStyle";
|
||||
$css .= ".$className td$borderStyle";
|
||||
}
|
||||
}
|
||||
return $css;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,84 +1,84 @@
|
||||
<?php
|
||||
/**
|
||||
* The browse view file of doc module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package lib
|
||||
* @version $Id: browse.html.php 958 2010-07-22 08:09:42Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/datepicker.html.php';?>
|
||||
<?php include '../../common/view/treeview.html.php';?>
|
||||
<?php include '../../common/view/colorize.html.php';?>
|
||||
<script language='Javascript'>
|
||||
var browseType = '<?php echo $browseType;?>';
|
||||
</script>
|
||||
<div id='featurebar'>
|
||||
<div class='f-left'>
|
||||
<span id='bymoduleTab' onclick='browseByModule()'><a href='#'><?php echo $lang->doc->moduleDoc;?></a></span>
|
||||
<span id='bysearchTab'><a href='#'><span class='icon-search'></span><?php echo $lang->doc->searchDoc;?></a></span>
|
||||
</div>
|
||||
<div class='f-right'>
|
||||
<?php common::printIcon('doc', 'create', "libID=$libID&moduleID=$moduleID&productID=$productID&projectID=$projectID&from=doc");?>
|
||||
</div>
|
||||
</div>
|
||||
<div id='querybox' class='<?php if($browseType !='bysearch') echo 'hidden';?>'></div>
|
||||
|
||||
<table class='cont-lt3'>
|
||||
<tr valign='top'>
|
||||
<td class='side' id='treebox'>
|
||||
<div class='box-title'><?php echo $libName;?></div>
|
||||
<div class='box-content'>
|
||||
<?php echo $moduleTree;?>
|
||||
<div class='a-right'>
|
||||
<?php common::printLink('tree', 'browse', "rootID=$libID&view=doc", $lang->doc->manageType);?>
|
||||
<?php if(is_numeric($libID)) common::printLink('tree', 'fix', "root=$libID&type=customdoc", $lang->tree->fix, 'hiddenwin');?>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td class='divider'></td>
|
||||
<td>
|
||||
<table class='table-1 fixed colored tablesorter datatable'>
|
||||
<thead>
|
||||
<tr class='colhead'>
|
||||
<?php $vars = "libID=$libID&module=$moduleID&productID=$productID&projectID=$projectID&browseType=$browseType¶m=$param&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}";?>
|
||||
<th class='w-id'> <?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?></th>
|
||||
<th><?php common::printOrderLink('title', $orderBy, $vars, $lang->doc->title);?></th>
|
||||
<th class='w-100px'><?php common::printOrderLink('type', $orderBy, $vars, $lang->doc->type);?></th>
|
||||
<th class='w-100px'><?php common::printOrderLink('addedBy', $orderBy, $vars, $lang->doc->addedBy);?></th>
|
||||
<th class='w-120px'><?php common::printOrderLink('addedDate', $orderBy, $vars, $lang->doc->addedDate);?></th>
|
||||
<th class='w-100px {sorter:false}'><?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($docs as $key => $doc):?>
|
||||
<?php
|
||||
$viewLink = $this->createLink('doc', 'view', "docID=$doc->id");
|
||||
$canView = common::hasPriv('doc', 'view');
|
||||
?>
|
||||
<tr class='a-center'>
|
||||
<td><?php if($canView) echo html::a($viewLink, sprintf('%03d', $doc->id)); else printf('%03d', $doc->id);?></td>
|
||||
<td class='a-left' title="<?php echo $doc->title?>"><nobr><?php echo html::a($viewLink, $doc->title);?></nobr></td>
|
||||
<td><?php echo $lang->doc->types[$doc->type];?></td>
|
||||
<td><?php isset($users[$doc->addedBy]) ? print($users[$doc->addedBy]) : print($doc->addedBy);?></td>
|
||||
<td><?php echo date("m-d H:i", strtotime($doc->addedDate));?></td>
|
||||
<td>
|
||||
<?php
|
||||
$vars = "doc={$doc->id}";
|
||||
common::printIcon('doc', 'edit', $vars, '', 'list');
|
||||
common::printIcon('doc', 'delete', $vars, '', 'list', '', 'hiddenwin');
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
<tfoot><tr><td colspan='6'><?php $pager->show();?></td></tr></tfoot>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The browse view file of doc module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package lib
|
||||
* @version $Id: browse.html.php 958 2010-07-22 08:09:42Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/datepicker.html.php';?>
|
||||
<?php include '../../common/view/treeview.html.php';?>
|
||||
<?php include '../../common/view/colorize.html.php';?>
|
||||
<script language='Javascript'>
|
||||
var browseType = '<?php echo $browseType;?>';
|
||||
</script>
|
||||
<div id='featurebar'>
|
||||
<div class='f-left'>
|
||||
<span id='bymoduleTab' onclick='browseByModule()'><a href='#'><?php echo $lang->doc->moduleDoc;?></a></span>
|
||||
<span id='bysearchTab'><a href='#'><span class='icon-search'></span><?php echo $lang->doc->searchDoc;?></a></span>
|
||||
</div>
|
||||
<div class='f-right'>
|
||||
<?php common::printIcon('doc', 'create', "libID=$libID&moduleID=$moduleID&productID=$productID&projectID=$projectID&from=doc");?>
|
||||
</div>
|
||||
</div>
|
||||
<div id='querybox' class='<?php if($browseType !='bysearch') echo 'hidden';?>'></div>
|
||||
|
||||
<table class='cont-lt3'>
|
||||
<tr valign='top'>
|
||||
<td class='side' id='treebox'>
|
||||
<div class='box-title'><?php echo $libName;?></div>
|
||||
<div class='box-content'>
|
||||
<?php echo $moduleTree;?>
|
||||
<div class='a-right'>
|
||||
<?php common::printLink('tree', 'browse', "rootID=$libID&view=doc", $lang->doc->manageType);?>
|
||||
<?php if(is_numeric($libID)) common::printLink('tree', 'fix', "root=$libID&type=customdoc", $lang->tree->fix, 'hiddenwin');?>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td class='divider'></td>
|
||||
<td>
|
||||
<table class='table-1 fixed colored tablesorter datatable'>
|
||||
<thead>
|
||||
<tr class='colhead'>
|
||||
<?php $vars = "libID=$libID&module=$moduleID&productID=$productID&projectID=$projectID&browseType=$browseType¶m=$param&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}";?>
|
||||
<th class='w-id'> <?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?></th>
|
||||
<th><?php common::printOrderLink('title', $orderBy, $vars, $lang->doc->title);?></th>
|
||||
<th class='w-100px'><?php common::printOrderLink('type', $orderBy, $vars, $lang->doc->type);?></th>
|
||||
<th class='w-100px'><?php common::printOrderLink('addedBy', $orderBy, $vars, $lang->doc->addedBy);?></th>
|
||||
<th class='w-120px'><?php common::printOrderLink('addedDate', $orderBy, $vars, $lang->doc->addedDate);?></th>
|
||||
<th class='w-100px {sorter:false}'><?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($docs as $key => $doc):?>
|
||||
<?php
|
||||
$viewLink = $this->createLink('doc', 'view', "docID=$doc->id");
|
||||
$canView = common::hasPriv('doc', 'view');
|
||||
?>
|
||||
<tr class='a-center'>
|
||||
<td><?php if($canView) echo html::a($viewLink, sprintf('%03d', $doc->id)); else printf('%03d', $doc->id);?></td>
|
||||
<td class='a-left' title="<?php echo $doc->title?>"><nobr><?php echo html::a($viewLink, $doc->title);?></nobr></td>
|
||||
<td><?php echo $lang->doc->types[$doc->type];?></td>
|
||||
<td><?php isset($users[$doc->addedBy]) ? print($users[$doc->addedBy]) : print($doc->addedBy);?></td>
|
||||
<td><?php echo date("m-d H:i", strtotime($doc->addedDate));?></td>
|
||||
<td>
|
||||
<?php
|
||||
$vars = "doc={$doc->id}";
|
||||
common::printIcon('doc', 'edit', $vars, '', 'list');
|
||||
common::printIcon('doc', 'delete', $vars, '', 'list', '', 'hiddenwin');
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
<tfoot><tr><td colspan='6'><?php $pager->show();?></td></tr></tfoot>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,71 +1,71 @@
|
||||
<?php
|
||||
/**
|
||||
* The create view of doc module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Jia Fu <fujia@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: create.html.php 975 2010-07-29 03:30:25Z jajacn@126.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<?php js::set('holders ', $lang->doc->placeholder, 'json');?>
|
||||
<form method='post' enctype='multipart/form-data' target='hiddenwin' id='dataform'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $lang->doc->create;?></caption>
|
||||
<?php if($libID == 'product'):?>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->product;?></th>
|
||||
<td><?php echo html::select('product', $products, $productID, "class='select-3'");?></td>
|
||||
</tr>
|
||||
<?php elseif($libID == 'project'):?>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->project;?></th>
|
||||
<td><?php echo html::select('project', $projects, $projectID, "class='select-3' onchange=loadProducts(this.value);");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->product;?></th>
|
||||
<td><span id='productBox'><?php echo html::select('product', $products, '', "class='select-3'");?></span></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->module;?></th>
|
||||
<td><?php echo html::select('module', $moduleOptionMenu, $moduleID, "class='select-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->type;?></th>
|
||||
<td><?php echo html::radio('type', $lang->doc->types, 'file', "onclick=setType(this.value)");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->title;?></th>
|
||||
<td><?php echo html::input('title', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr id='urlBox' class='hidden'>
|
||||
<th class='rowhead'><?php echo $lang->doc->url;?></th>
|
||||
<td><?php echo html::input('url', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr id='contentBox' class='hidden'>
|
||||
<th class='rowhead'><?php echo $lang->doc->content;?></th>
|
||||
<td><?php echo html::textarea('content', '', "class='area-1' style='width:90%; height:200px'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->keywords;?></th>
|
||||
<td><?php echo html::input('keywords', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->digest;?></th>
|
||||
<td><?php echo html::textarea('digest', '', "class='text-1' rows=3");?></td>
|
||||
</tr>
|
||||
<tr id='fileBox'>
|
||||
<th class='rowhead'><?php echo $lang->doc->files;?></th>
|
||||
<td><?php echo $this->fetch('file', 'buildform', 'fileCount=2');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'><?php echo html::submitButton() . html::resetButton() . html::hidden('lib', $libID);?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The create view of doc module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Jia Fu <fujia@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: create.html.php 975 2010-07-29 03:30:25Z jajacn@126.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<?php js::set('holders ', $lang->doc->placeholder, 'json');?>
|
||||
<form method='post' enctype='multipart/form-data' target='hiddenwin' id='dataform'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $lang->doc->create;?></caption>
|
||||
<?php if($libID == 'product'):?>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->product;?></th>
|
||||
<td><?php echo html::select('product', $products, $productID, "class='select-3'");?></td>
|
||||
</tr>
|
||||
<?php elseif($libID == 'project'):?>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->project;?></th>
|
||||
<td><?php echo html::select('project', $projects, $projectID, "class='select-3' onchange=loadProducts(this.value);");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->product;?></th>
|
||||
<td><span id='productBox'><?php echo html::select('product', $products, '', "class='select-3'");?></span></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->module;?></th>
|
||||
<td><?php echo html::select('module', $moduleOptionMenu, $moduleID, "class='select-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->type;?></th>
|
||||
<td><?php echo html::radio('type', $lang->doc->types, 'file', "onclick=setType(this.value)");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->title;?></th>
|
||||
<td><?php echo html::input('title', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr id='urlBox' class='hidden'>
|
||||
<th class='rowhead'><?php echo $lang->doc->url;?></th>
|
||||
<td><?php echo html::input('url', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr id='contentBox' class='hidden'>
|
||||
<th class='rowhead'><?php echo $lang->doc->content;?></th>
|
||||
<td><?php echo html::textarea('content', '', "class='area-1' style='width:90%; height:200px'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->keywords;?></th>
|
||||
<td><?php echo html::input('keywords', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->digest;?></th>
|
||||
<td><?php echo html::textarea('digest', '', "class='text-1' rows=3");?></td>
|
||||
</tr>
|
||||
<tr id='fileBox'>
|
||||
<th class='rowhead'><?php echo $lang->doc->files;?></th>
|
||||
<td><?php echo $this->fetch('file', 'buildform', 'fileCount=2');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'><?php echo html::submitButton() . html::resetButton() . html::hidden('lib', $libID);?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
<?php
|
||||
/**
|
||||
* The createlib view of doc module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Jia Fu <fujia@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: createlib.html.php 975 2010-07-29 03:30:25Z jajacn@126.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.lite.html.php';?>
|
||||
<form method='post'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $lang->doc->createLib;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->libName;?></th>
|
||||
<td><?php echo html::input('name', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'><?php echo html::submitButton();?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.lite.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The createlib view of doc module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Jia Fu <fujia@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: createlib.html.php 975 2010-07-29 03:30:25Z jajacn@126.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.lite.html.php';?>
|
||||
<form method='post'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $lang->doc->createLib;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->libName;?></th>
|
||||
<td><?php echo html::input('name', '', "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'><?php echo html::submitButton();?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.lite.html.php';?>
|
||||
|
||||
@@ -1,68 +1,68 @@
|
||||
<?php
|
||||
/**
|
||||
* The edit view of doc module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Jia Fu <fujia@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: edit.html.php 975 2010-07-29 03:30:25Z jajacn@126.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<script language='javascript'>
|
||||
var type = '<?php echo $doc->type;?>';
|
||||
$(document).ready(function()
|
||||
{
|
||||
setType(type);
|
||||
});
|
||||
</script>
|
||||
<form method='post' enctype='multipart/form-data' target='hiddenwin' id='dataform'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $lang->doc->edit;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->module;?></th>
|
||||
<td><?php echo html::select('module', $moduleOptionMenu, $doc->module, "class='select-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->type;?></th>
|
||||
<td><?php echo $lang->doc->types[$doc->type];?></td>
|
||||
</tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->title;?></th>
|
||||
<td><?php echo html::input('title', $doc->title, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->keywords;?></th>
|
||||
<td><?php echo html::input('keywords', $doc->keywords, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr id='urlBox' class='hidden'>
|
||||
<th class='rowhead'><?php echo $lang->doc->url;?></th>
|
||||
<td><?php echo html::input('url', urldecode($doc->url), "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr id='contentBox' class='hidden'>
|
||||
<th class='rowhead'><?php echo $lang->doc->content;?></th>
|
||||
<td><?php echo html::textarea('content', htmlspecialchars($doc->content), "class='text-1' rows='8' style='width:90%; height:200px'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->digest;?></th>
|
||||
<td><?php echo html::textarea('digest', $doc->digest, "class='text-1' rows=3");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->comment;?></th>
|
||||
<td><?php echo html::textarea('comment','', "class='text-1' rows=3");?></td>
|
||||
</tr>
|
||||
<tr id='fileBox' class='hidden'>
|
||||
<th class='rowhead'><?php echo $lang->doc->files;?></th>
|
||||
<td><?php echo $this->fetch('file', 'buildform', 'fileCount=2');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'>
|
||||
<?php echo html::submitButton() . html::resetButton() . html::hidden('lib', $libID);?>
|
||||
<?php echo html::hidden('product', $doc->product) . html::hidden('project', $doc->project);?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The edit view of doc module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Jia Fu <fujia@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: edit.html.php 975 2010-07-29 03:30:25Z jajacn@126.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<script language='javascript'>
|
||||
var type = '<?php echo $doc->type;?>';
|
||||
$(document).ready(function()
|
||||
{
|
||||
setType(type);
|
||||
});
|
||||
</script>
|
||||
<form method='post' enctype='multipart/form-data' target='hiddenwin' id='dataform'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $lang->doc->edit;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->module;?></th>
|
||||
<td><?php echo html::select('module', $moduleOptionMenu, $doc->module, "class='select-3'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->type;?></th>
|
||||
<td><?php echo $lang->doc->types[$doc->type];?></td>
|
||||
</tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->title;?></th>
|
||||
<td><?php echo html::input('title', $doc->title, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->keywords;?></th>
|
||||
<td><?php echo html::input('keywords', $doc->keywords, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr id='urlBox' class='hidden'>
|
||||
<th class='rowhead'><?php echo $lang->doc->url;?></th>
|
||||
<td><?php echo html::input('url', urldecode($doc->url), "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr id='contentBox' class='hidden'>
|
||||
<th class='rowhead'><?php echo $lang->doc->content;?></th>
|
||||
<td><?php echo html::textarea('content', htmlspecialchars($doc->content), "class='text-1' rows='8' style='width:90%; height:200px'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->digest;?></th>
|
||||
<td><?php echo html::textarea('digest', $doc->digest, "class='text-1' rows=3");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->comment;?></th>
|
||||
<td><?php echo html::textarea('comment','', "class='text-1' rows=3");?></td>
|
||||
</tr>
|
||||
<tr id='fileBox' class='hidden'>
|
||||
<th class='rowhead'><?php echo $lang->doc->files;?></th>
|
||||
<td><?php echo $this->fetch('file', 'buildform', 'fileCount=2');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'>
|
||||
<?php echo html::submitButton() . html::resetButton() . html::hidden('lib', $libID);?>
|
||||
<?php echo html::hidden('product', $doc->product) . html::hidden('project', $doc->project);?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,28 +1,28 @@
|
||||
<?php
|
||||
/**
|
||||
* The editlib file of doc module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Jia Fu <fujia@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: editlib.html.php 975 2010-07-29 03:30:25Z jajacn@126.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.lite.html.php';?>
|
||||
<?php if($libID == 'product' or $libID == 'project'):?>
|
||||
<p class='a-center strong mt-10px'><?php echo $lang->doc->errorEditSystemDoc;?></p>
|
||||
<?php else:?>
|
||||
<form method='post'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $lang->doc->editLib;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->libName;?></th>
|
||||
<td><?php echo html::input('name', $libName, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr><td colspan='2' class='a-center'><?php echo html::submitButton();?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php endif;?>
|
||||
<?php include '../../common/view/footer.lite.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The editlib file of doc module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Jia Fu <fujia@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: editlib.html.php 975 2010-07-29 03:30:25Z jajacn@126.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.lite.html.php';?>
|
||||
<?php if($libID == 'product' or $libID == 'project'):?>
|
||||
<p class='a-center strong mt-10px'><?php echo $lang->doc->errorEditSystemDoc;?></p>
|
||||
<?php else:?>
|
||||
<form method='post'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $lang->doc->editLib;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->libName;?></th>
|
||||
<td><?php echo html::input('name', $libName, "class='text-1'");?></td>
|
||||
</tr>
|
||||
<tr><td colspan='2' class='a-center'><?php echo html::submitButton();?></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php endif;?>
|
||||
<?php include '../../common/view/footer.lite.html.php';?>
|
||||
|
||||
+110
-110
@@ -1,110 +1,110 @@
|
||||
<?php
|
||||
/**
|
||||
* The view of doc module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Jia Fu <fujia@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: view.html.php 975 2010-07-29 03:30:25Z jajacn@126.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php echo css::internal($keTableCSS);?>
|
||||
<div id='titlebar'>
|
||||
<div id='main' <?php if($doc->deleted) echo "class='deleted'";?>>DOC #<?php echo $doc->id . ' ' . $doc->title;?></div>
|
||||
<div>
|
||||
<div class='a-center f-16px strong'>
|
||||
<?php
|
||||
$browseLink = $this->session->docList ? $this->session->docList : inlink('browse');
|
||||
$params = "docID=$doc->id";
|
||||
if(!$doc->deleted)
|
||||
{
|
||||
ob_start();
|
||||
common::printIcon('doc', 'edit', $params);
|
||||
common::printIcon('doc', 'delete', $params, '', 'button', '', 'hiddenwin');
|
||||
common::printDivider();
|
||||
common::printRPN($browseLink, $preAndNext);
|
||||
|
||||
$actionLinks = ob_get_contents();
|
||||
ob_end_clean();
|
||||
echo $actionLinks;
|
||||
}
|
||||
else
|
||||
{
|
||||
common::printRPN($browseLink);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table class='cont-rt5'>
|
||||
<tr valign='top'>
|
||||
<td>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->doc->digest;?></legend>
|
||||
<div><?php echo $doc->digest;?></div>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->doc->keywords;?></legend>
|
||||
<div><?php echo $doc->keywords;?></div>
|
||||
</fieldset>
|
||||
<?php if($doc->type == 'url'):?>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->doc->url;?></legend>
|
||||
<div><?php echo html::a(urldecode($doc->url), '', '_blank');?></div>
|
||||
</fieldset>
|
||||
<?php endif;?>
|
||||
<?php if($doc->type == 'text'):?>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->doc->content;?></legend>
|
||||
<div class='content'><?php echo $doc->content;?></div>
|
||||
</fieldset>
|
||||
<?php endif;?>
|
||||
<?php if($doc->type == 'file'):?>
|
||||
<?php echo $this->fetch('file', 'printFiles', array('files' => $doc->files, 'fieldset' => 'true'));?>
|
||||
<?php endif;?>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
<div class='a-center actionlink'><?php if(!$doc->deleted) echo $actionLinks;?></div>
|
||||
</td>
|
||||
<td class='divider'></td>
|
||||
<td class='side'>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->doc->basicInfo;?></legend>
|
||||
<table class='table-1 a-left fixed'>
|
||||
<tr>
|
||||
<th class='rowhead w-200'><?php echo $lang->doc->lib;?></th>
|
||||
<td><?php echo $lib;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->module;?></th>
|
||||
<td><?php echo $doc->moduleName ? $doc->moduleName : '/';?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->type;?></th>
|
||||
<td><?php echo $lang->doc->types[$doc->type];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->addedBy;?></th>
|
||||
<td><?php echo $users[$doc->addedBy];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->addedDate;?></th>
|
||||
<td><?php echo $doc->addedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->editedBy;?></th>
|
||||
<td><?php echo $users[$doc->editedBy];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->editedDate;?></th>
|
||||
<td><?php echo $doc->editedDate;?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/syntaxhighlighter.html.php';?>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The view of doc module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Jia Fu <fujia@cnezsoft.com>
|
||||
* @package doc
|
||||
* @version $Id: view.html.php 975 2010-07-29 03:30:25Z jajacn@126.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php echo css::internal($keTableCSS);?>
|
||||
<div id='titlebar'>
|
||||
<div id='main' <?php if($doc->deleted) echo "class='deleted'";?>>DOC #<?php echo $doc->id . ' ' . $doc->title;?></div>
|
||||
<div>
|
||||
<div class='a-center f-16px strong'>
|
||||
<?php
|
||||
$browseLink = $this->session->docList ? $this->session->docList : inlink('browse');
|
||||
$params = "docID=$doc->id";
|
||||
if(!$doc->deleted)
|
||||
{
|
||||
ob_start();
|
||||
common::printIcon('doc', 'edit', $params);
|
||||
common::printIcon('doc', 'delete', $params, '', 'button', '', 'hiddenwin');
|
||||
common::printDivider();
|
||||
common::printRPN($browseLink, $preAndNext);
|
||||
|
||||
$actionLinks = ob_get_contents();
|
||||
ob_end_clean();
|
||||
echo $actionLinks;
|
||||
}
|
||||
else
|
||||
{
|
||||
common::printRPN($browseLink);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table class='cont-rt5'>
|
||||
<tr valign='top'>
|
||||
<td>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->doc->digest;?></legend>
|
||||
<div><?php echo $doc->digest;?></div>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->doc->keywords;?></legend>
|
||||
<div><?php echo $doc->keywords;?></div>
|
||||
</fieldset>
|
||||
<?php if($doc->type == 'url'):?>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->doc->url;?></legend>
|
||||
<div><?php echo html::a(urldecode($doc->url), '', '_blank');?></div>
|
||||
</fieldset>
|
||||
<?php endif;?>
|
||||
<?php if($doc->type == 'text'):?>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->doc->content;?></legend>
|
||||
<div class='content'><?php echo $doc->content;?></div>
|
||||
</fieldset>
|
||||
<?php endif;?>
|
||||
<?php if($doc->type == 'file'):?>
|
||||
<?php echo $this->fetch('file', 'printFiles', array('files' => $doc->files, 'fieldset' => 'true'));?>
|
||||
<?php endif;?>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
<div class='a-center actionlink'><?php if(!$doc->deleted) echo $actionLinks;?></div>
|
||||
</td>
|
||||
<td class='divider'></td>
|
||||
<td class='side'>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->doc->basicInfo;?></legend>
|
||||
<table class='table-1 a-left fixed'>
|
||||
<tr>
|
||||
<th class='rowhead w-200'><?php echo $lang->doc->lib;?></th>
|
||||
<td><?php echo $lib;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->module;?></th>
|
||||
<td><?php echo $doc->moduleName ? $doc->moduleName : '/';?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->type;?></th>
|
||||
<td><?php echo $lang->doc->types[$doc->type];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->addedBy;?></th>
|
||||
<td><?php echo $users[$doc->addedBy];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->addedDate;?></th>
|
||||
<td><?php echo $doc->addedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->editedBy;?></th>
|
||||
<td><?php echo $users[$doc->editedBy];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->doc->editedDate;?></th>
|
||||
<td><?php echo $doc->editedDate;?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/syntaxhighlighter.html.php';?>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
+164
-164
@@ -1,164 +1,164 @@
|
||||
<?php
|
||||
/**
|
||||
* The control file of editor of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Yidong Wang <yidong@cnezsoft.com>
|
||||
* @package editor
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class editor extends control
|
||||
{
|
||||
/**
|
||||
* Show module files and edit them.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$this->view->moduleList = $this->editor->getModules();
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Show files and methods of the module.
|
||||
*
|
||||
* @param string $moduleDir
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function extend($moduleDir = '')
|
||||
{
|
||||
$moduleFiles = $this->editor->getModuleFiles($moduleDir);
|
||||
$this->view->module = $moduleDir;
|
||||
$this->view->tree = $this->editor->printTree($moduleFiles);
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit extend.
|
||||
*
|
||||
* @param string $filePath
|
||||
* @param string $action
|
||||
* @param string $isExtends
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function edit($filePath = '', $action = '', $isExtends = '')
|
||||
{
|
||||
$this->view->safeFilePath = $filePath;
|
||||
$fileContent = '';
|
||||
if($filePath)
|
||||
{
|
||||
$filePath = helper::safe64Decode($filePath);
|
||||
if($action == 'extendOther' and file_exists($filePath))
|
||||
{
|
||||
$this->view->showContent = htmlspecialchars(file_get_contents($filePath));
|
||||
}
|
||||
if($action == 'edit' or $action == 'override')
|
||||
{
|
||||
if(file_exists($filePath))
|
||||
{
|
||||
$fileContent = file_get_contents($filePath);
|
||||
if($action == 'override')
|
||||
{
|
||||
$fileContent = str_replace('../../', '../../../', $fileContent);
|
||||
$fileContent = str_replace(array('\'./', '"./'), array('\'../../view/', '"../../view'), $fileContent);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$filePath = '';
|
||||
}
|
||||
}
|
||||
elseif($action == 'extendModel')
|
||||
{
|
||||
$fileContent = $this->editor->extendModel($filePath);
|
||||
}
|
||||
elseif($action == 'extendControl')
|
||||
{
|
||||
$okUrl = $this->editor->getExtendLink($filePath, 'extendControl', 'yes');
|
||||
$cancelUrl = $this->editor->getExtendLink($filePath, 'extendControl', 'no');
|
||||
if(!$isExtends) die(js::confirm($this->lang->editor->extendConfirm, $okUrl, $cancelUrl));
|
||||
$fileContent = $this->editor->extendControl($filePath, $isExtends);
|
||||
}
|
||||
elseif($action == 'newPage')
|
||||
{
|
||||
$fileContent = $this->editor->newControl($filePath);
|
||||
}
|
||||
elseif(strrpos(basename($filePath), '.php') !== false and empty($fileContent))
|
||||
{
|
||||
$fileContent = "<?php\n";
|
||||
}
|
||||
}
|
||||
$this->view->fileContent = $fileContent;
|
||||
$this->view->filePath = $filePath;
|
||||
$this->view->action = $action;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Page name.
|
||||
*
|
||||
* @param string $filePath
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function newPage($filePath)
|
||||
{
|
||||
$filePath = helper::safe64Decode($filePath);
|
||||
if($_POST)
|
||||
{
|
||||
$saveFilePath = $this->editor->getSavePath($filePath, 'newMethod');
|
||||
$extendLink = $this->editor->getExtendLink($saveFilePath, 'newPage');
|
||||
if(file_exists($saveFilePath) and !$this->post->override) die(js::confirm($this->lang->editor->repeatPage, $extendLink, '', 'parent'));
|
||||
die(js::locate($extendLink, 'parent'));
|
||||
}
|
||||
$this->view->filePath = $filePath;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Save file to extension.
|
||||
*
|
||||
* @param string $filePath
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function save($filePath = '', $action = '')
|
||||
{
|
||||
if($filePath and $_POST)
|
||||
{
|
||||
$filePath = helper::safe64Decode($filePath);
|
||||
if($action != 'edit' and $action != 'newPage') $filePath = $this->editor->getSavePath($filePath, $action);
|
||||
if($action != 'edit' and $action != 'newPage' and file_exists($filePath) and !$this->post->override) die(js::error($this->lang->editor->repeatFile));
|
||||
$this->editor->save($filePath);
|
||||
echo js::reload('parent.parent.extendWin');
|
||||
die(js::locate(inlink('edit', "filePath=" . helper::safe64Encode($filePath) . "&action=edit"), 'parent'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete extension file.
|
||||
*
|
||||
* @param string $filePath
|
||||
* @param string $confirm
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function delete($filePath = '', $confirm = 'no')
|
||||
{
|
||||
if($confirm == 'no')
|
||||
{
|
||||
die(js::confirm($this->lang->editor->deleteConfirm, inlink('delete', "filePath=$filePath&confirm=yes")));
|
||||
}
|
||||
$filePath = helper::safe64Decode($filePath);
|
||||
if(file_exists($filePath) and unlink($filePath)) die(js::reload('parent'));
|
||||
die(js::alert($this->lang->editor->notDelete));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
<?php
|
||||
/**
|
||||
* The control file of editor of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Yidong Wang <yidong@cnezsoft.com>
|
||||
* @package editor
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class editor extends control
|
||||
{
|
||||
/**
|
||||
* Show module files and edit them.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$this->view->moduleList = $this->editor->getModules();
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Show files and methods of the module.
|
||||
*
|
||||
* @param string $moduleDir
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function extend($moduleDir = '')
|
||||
{
|
||||
$moduleFiles = $this->editor->getModuleFiles($moduleDir);
|
||||
$this->view->module = $moduleDir;
|
||||
$this->view->tree = $this->editor->printTree($moduleFiles);
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit extend.
|
||||
*
|
||||
* @param string $filePath
|
||||
* @param string $action
|
||||
* @param string $isExtends
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function edit($filePath = '', $action = '', $isExtends = '')
|
||||
{
|
||||
$this->view->safeFilePath = $filePath;
|
||||
$fileContent = '';
|
||||
if($filePath)
|
||||
{
|
||||
$filePath = helper::safe64Decode($filePath);
|
||||
if($action == 'extendOther' and file_exists($filePath))
|
||||
{
|
||||
$this->view->showContent = htmlspecialchars(file_get_contents($filePath));
|
||||
}
|
||||
if($action == 'edit' or $action == 'override')
|
||||
{
|
||||
if(file_exists($filePath))
|
||||
{
|
||||
$fileContent = file_get_contents($filePath);
|
||||
if($action == 'override')
|
||||
{
|
||||
$fileContent = str_replace('../../', '../../../', $fileContent);
|
||||
$fileContent = str_replace(array('\'./', '"./'), array('\'../../view/', '"../../view'), $fileContent);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$filePath = '';
|
||||
}
|
||||
}
|
||||
elseif($action == 'extendModel')
|
||||
{
|
||||
$fileContent = $this->editor->extendModel($filePath);
|
||||
}
|
||||
elseif($action == 'extendControl')
|
||||
{
|
||||
$okUrl = $this->editor->getExtendLink($filePath, 'extendControl', 'yes');
|
||||
$cancelUrl = $this->editor->getExtendLink($filePath, 'extendControl', 'no');
|
||||
if(!$isExtends) die(js::confirm($this->lang->editor->extendConfirm, $okUrl, $cancelUrl));
|
||||
$fileContent = $this->editor->extendControl($filePath, $isExtends);
|
||||
}
|
||||
elseif($action == 'newPage')
|
||||
{
|
||||
$fileContent = $this->editor->newControl($filePath);
|
||||
}
|
||||
elseif(strrpos(basename($filePath), '.php') !== false and empty($fileContent))
|
||||
{
|
||||
$fileContent = "<?php\n";
|
||||
}
|
||||
}
|
||||
$this->view->fileContent = $fileContent;
|
||||
$this->view->filePath = $filePath;
|
||||
$this->view->action = $action;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Page name.
|
||||
*
|
||||
* @param string $filePath
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function newPage($filePath)
|
||||
{
|
||||
$filePath = helper::safe64Decode($filePath);
|
||||
if($_POST)
|
||||
{
|
||||
$saveFilePath = $this->editor->getSavePath($filePath, 'newMethod');
|
||||
$extendLink = $this->editor->getExtendLink($saveFilePath, 'newPage');
|
||||
if(file_exists($saveFilePath) and !$this->post->override) die(js::confirm($this->lang->editor->repeatPage, $extendLink, '', 'parent'));
|
||||
die(js::locate($extendLink, 'parent'));
|
||||
}
|
||||
$this->view->filePath = $filePath;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Save file to extension.
|
||||
*
|
||||
* @param string $filePath
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function save($filePath = '', $action = '')
|
||||
{
|
||||
if($filePath and $_POST)
|
||||
{
|
||||
$filePath = helper::safe64Decode($filePath);
|
||||
if($action != 'edit' and $action != 'newPage') $filePath = $this->editor->getSavePath($filePath, $action);
|
||||
if($action != 'edit' and $action != 'newPage' and file_exists($filePath) and !$this->post->override) die(js::error($this->lang->editor->repeatFile));
|
||||
$this->editor->save($filePath);
|
||||
echo js::reload('parent.parent.extendWin');
|
||||
die(js::locate(inlink('edit', "filePath=" . helper::safe64Encode($filePath) . "&action=edit"), 'parent'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete extension file.
|
||||
*
|
||||
* @param string $filePath
|
||||
* @param string $confirm
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function delete($filePath = '', $confirm = 'no')
|
||||
{
|
||||
if($confirm == 'no')
|
||||
{
|
||||
die(js::confirm($this->lang->editor->deleteConfirm, inlink('delete', "filePath=$filePath&confirm=yes")));
|
||||
}
|
||||
$filePath = helper::safe64Decode($filePath);
|
||||
if(file_exists($filePath) and unlink($filePath)) die(js::reload('parent'));
|
||||
die(js::alert($this->lang->editor->notDelete));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+568
-568
File diff suppressed because it is too large
Load Diff
@@ -1,70 +1,70 @@
|
||||
<?php
|
||||
/**
|
||||
* The editor view file of dir module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Yidong Wang <yidong@cnezsoft.com>
|
||||
* @package editor
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.lite.html.php';?>
|
||||
<?php include '../../common/view/colorbox.html.php';?>
|
||||
<form method='post' target='hiddenwin' action='<?php echo inlink('save', "filePath=$safeFilePath&action=$action")?>' id='dataform'>
|
||||
<table class='table-1'>
|
||||
<?php if($filePath):?>
|
||||
<caption>
|
||||
<?php echo "<span class='strong'>{$lang->editor->filePath}</span>"?>
|
||||
<?php echo $filePath?>
|
||||
</caption>
|
||||
<?php endif?>
|
||||
<?php if(!empty($showContent)):?>
|
||||
<tr>
|
||||
<td>
|
||||
<?php echo "<span class='strong'>" . $lang->editor->sourceFile . '</span>'?><br />
|
||||
<textarea id='showContent' class="w-p100"> <?php echo $showContent?></textarea>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif?>
|
||||
<tr>
|
||||
<td>
|
||||
<?php echo html::textarea('fileContent', str_replace('&', '&', $fileContent), "class='w-p100'")?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<?php if($action and $action != 'edit' and $action != 'newPage' and $action != 'override' and $action != 'extendControl'):?>
|
||||
<?php echo "<span class='strong'>" . $lang->editor->fileName . '</span>'?>
|
||||
<span>
|
||||
<?php
|
||||
echo html::input('fileName', '', "class=text-4");
|
||||
if($action == 'newHook')
|
||||
{
|
||||
echo $lang->editor->exampleHook;
|
||||
}
|
||||
elseif($action and $action == 'extendOther' and strpos(basename($filePath), '.js') !== false or $action == 'newJS')
|
||||
{
|
||||
echo $lang->editor->exampleJs;
|
||||
}
|
||||
elseif($action and $action == 'extendOther' and strpos(basename($filePath), '.css') !== false or $action == 'newCSS')
|
||||
{
|
||||
echo $lang->editor->exampleCss;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo $lang->editor->examplePHP;
|
||||
}
|
||||
?>
|
||||
</span>
|
||||
<?php endif;?>
|
||||
<?php if($action and $action != 'edit' and $action != 'newPage'):?>
|
||||
<span class='strong'><input type='checkbox' name='override' id='override' /> <?php echo $lang->editor->isOverride?></span>
|
||||
<?php endif;?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td align='center'><?php echo html::submitButton()?><td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.lite.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The editor view file of dir module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Yidong Wang <yidong@cnezsoft.com>
|
||||
* @package editor
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.lite.html.php';?>
|
||||
<?php include '../../common/view/colorbox.html.php';?>
|
||||
<form method='post' target='hiddenwin' action='<?php echo inlink('save', "filePath=$safeFilePath&action=$action")?>' id='dataform'>
|
||||
<table class='table-1'>
|
||||
<?php if($filePath):?>
|
||||
<caption>
|
||||
<?php echo "<span class='strong'>{$lang->editor->filePath}</span>"?>
|
||||
<?php echo $filePath?>
|
||||
</caption>
|
||||
<?php endif?>
|
||||
<?php if(!empty($showContent)):?>
|
||||
<tr>
|
||||
<td>
|
||||
<?php echo "<span class='strong'>" . $lang->editor->sourceFile . '</span>'?><br />
|
||||
<textarea id='showContent' class="w-p100"> <?php echo $showContent?></textarea>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif?>
|
||||
<tr>
|
||||
<td>
|
||||
<?php echo html::textarea('fileContent', str_replace('&', '&', $fileContent), "class='w-p100'")?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<?php if($action and $action != 'edit' and $action != 'newPage' and $action != 'override' and $action != 'extendControl'):?>
|
||||
<?php echo "<span class='strong'>" . $lang->editor->fileName . '</span>'?>
|
||||
<span>
|
||||
<?php
|
||||
echo html::input('fileName', '', "class=text-4");
|
||||
if($action == 'newHook')
|
||||
{
|
||||
echo $lang->editor->exampleHook;
|
||||
}
|
||||
elseif($action and $action == 'extendOther' and strpos(basename($filePath), '.js') !== false or $action == 'newJS')
|
||||
{
|
||||
echo $lang->editor->exampleJs;
|
||||
}
|
||||
elseif($action and $action == 'extendOther' and strpos(basename($filePath), '.css') !== false or $action == 'newCSS')
|
||||
{
|
||||
echo $lang->editor->exampleCss;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo $lang->editor->examplePHP;
|
||||
}
|
||||
?>
|
||||
</span>
|
||||
<?php endif;?>
|
||||
<?php if($action and $action != 'edit' and $action != 'newPage'):?>
|
||||
<span class='strong'><input type='checkbox' name='override' id='override' /> <?php echo $lang->editor->isOverride?></span>
|
||||
<?php endif;?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td align='center'><?php echo html::submitButton()?><td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.lite.html.php';?>
|
||||
|
||||
@@ -1,29 +1,29 @@
|
||||
<?php
|
||||
/**
|
||||
* The editor view file of dir module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Yidong Wang <yidong@cnezsoft.com>
|
||||
* @package editor
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.lite.html.php';?>
|
||||
<?php include '../../common/view/treeview.html.php';?>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo isset($lang->editor->modules[$module])? $lang->editor->modules[$module] : $module;?></caption>
|
||||
<tr>
|
||||
<td valign='top'><?php echo $tree?></td>
|
||||
</tr>
|
||||
</table>
|
||||
<script type='text/javascript'>
|
||||
$(function()
|
||||
{
|
||||
$("#extendTree").treeview();
|
||||
});
|
||||
</script>
|
||||
<iframe frameborder='0' name='hiddenwin' id='hiddenwin' scrolling='no' class='hidden'></iframe>
|
||||
<body>
|
||||
</html>
|
||||
<?php
|
||||
/**
|
||||
* The editor view file of dir module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Yidong Wang <yidong@cnezsoft.com>
|
||||
* @package editor
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.lite.html.php';?>
|
||||
<?php include '../../common/view/treeview.html.php';?>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo isset($lang->editor->modules[$module])? $lang->editor->modules[$module] : $module;?></caption>
|
||||
<tr>
|
||||
<td valign='top'><?php echo $tree?></td>
|
||||
</tr>
|
||||
</table>
|
||||
<script type='text/javascript'>
|
||||
$(function()
|
||||
{
|
||||
$("#extendTree").treeview();
|
||||
});
|
||||
</script>
|
||||
<iframe frameborder='0' name='hiddenwin' id='hiddenwin' scrolling='no' class='hidden'></iframe>
|
||||
<body>
|
||||
</html>
|
||||
|
||||
@@ -1,24 +1,24 @@
|
||||
<?php
|
||||
/**
|
||||
* The editor view file of dir module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Yidong Wang <yidong@cnezsoft.com>
|
||||
* @package editor
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<table class='table-1 bd-none'>
|
||||
<tr valign='top'>
|
||||
<td width='160'>
|
||||
<div class='box-title'><?php echo $lang->editor->moduleList?></div>
|
||||
<div class='box-content'><?php echo $moduleList?></div>
|
||||
</td>
|
||||
<td width='300'><iframe frameborder='0' name='extendWin' id='extendWin' width='100%'></iframe></td>
|
||||
<td><iframe frameborder='0' name='editWin' id='editWin' width='100%'></iframe></td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The editor view file of dir module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Yidong Wang <yidong@cnezsoft.com>
|
||||
* @package editor
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<table class='table-1 bd-none'>
|
||||
<tr valign='top'>
|
||||
<td width='160'>
|
||||
<div class='box-title'><?php echo $lang->editor->moduleList?></div>
|
||||
<div class='box-content'><?php echo $moduleList?></div>
|
||||
</td>
|
||||
<td width='300'><iframe frameborder='0' name='extendWin' id='extendWin' width='100%'></iframe></td>
|
||||
<td><iframe frameborder='0' name='editWin' id='editWin' width='100%'></iframe></td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,33 +1,33 @@
|
||||
<?php
|
||||
/**
|
||||
* The editor view file of dir module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Yidong Wang <yidong@cnezsoft.com>
|
||||
* @package editor
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.lite.html.php';?>
|
||||
<form method='post' target='hiddenwin'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $lang->editor->newPage?></caption>
|
||||
<tr>
|
||||
<th class='w-70px'><?php echo $lang->editor->filePath?></th>
|
||||
<td><?php echo $filePath?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->editor->pageName?></th>
|
||||
<td>
|
||||
<?php
|
||||
echo html::input('fileName', '', "class=text-5");
|
||||
echo $lang->editor->examplePHP;
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan='2' align='center'><?php echo html::submitButton()?><td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.lite.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The editor view file of dir module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Yidong Wang <yidong@cnezsoft.com>
|
||||
* @package editor
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.lite.html.php';?>
|
||||
<form method='post' target='hiddenwin'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $lang->editor->newPage?></caption>
|
||||
<tr>
|
||||
<th class='w-70px'><?php echo $lang->editor->filePath?></th>
|
||||
<td><?php echo $filePath?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->editor->pageName?></th>
|
||||
<td>
|
||||
<?php
|
||||
echo html::input('fileName', '', "class=text-5");
|
||||
echo $lang->editor->examplePHP;
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan='2' align='center'><?php echo html::submitButton()?><td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.lite.html.php';?>
|
||||
|
||||
+387
-387
@@ -1,387 +1,387 @@
|
||||
<?php
|
||||
/**
|
||||
* The control file of extension module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package extension
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class extension extends control
|
||||
{
|
||||
/**
|
||||
* Browse extensions.
|
||||
*
|
||||
* @param string $status
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function browse($status = 'installed')
|
||||
{
|
||||
$extensions = $this->extension->getLocalExtensions($status);
|
||||
$versions = array();
|
||||
if($extensions and $status == 'installed')
|
||||
{
|
||||
/* Get latest release from remote. */
|
||||
$extCodes = helper::safe64Encode(join(',', array_keys($extensions)));
|
||||
$results = $this->extension->getExtensionsByAPI('bycode', $extCodes, $recTotal = 0, $recPerPage = 1000, $pageID = 1);
|
||||
if(isset($results->extensions))
|
||||
{
|
||||
$remoteReleases = $results->extensions;
|
||||
foreach($remoteReleases as $release)
|
||||
{
|
||||
if(!isset($extensions[$release->code])) continue;
|
||||
|
||||
$extension = $extensions[$release->code];
|
||||
$extension->viewLink = $release->viewLink;
|
||||
if($extension->version != $release->latestRelease->releaseVersion and $this->extension->checkVersion($release->latestRelease->zentaoVersion))
|
||||
{
|
||||
$upgradeLink = inlink('upgrade', "extension=$release->code&downLink=" . helper::safe64Encode($release->latestRelease->downLink) . "&md5={$release->latestRelease->md5}&type=$release->type");
|
||||
$upgradeLink = ($release->latestRelease->charge or !$release->latestRelease->public) ? $release->latestRelease->downLink : $upgradeLink;
|
||||
$extension->upgradeLink = $upgradeLink;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->view->header->title = $this->lang->extension->browse;
|
||||
$this->view->position[] = $this->lang->extension->browse;
|
||||
$this->view->tab = $status;
|
||||
$this->view->extensions = $extensions;
|
||||
$this->view->versions = $versions;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtain extensions from the community.
|
||||
*
|
||||
* @param string $type
|
||||
* @param string $param
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function obtain($type = 'byUpdatedTime', $param = '', $recTotal = 0, $recPerPage = 10, $pageID = 1)
|
||||
{
|
||||
/* Init vars. */
|
||||
$type = strtolower($type);
|
||||
$moduleID = $type == 'bymodule' ? (int)$param : 0;
|
||||
$extensions = array();
|
||||
$pager = null;
|
||||
|
||||
/* Set the key. */
|
||||
if($type == 'bysearch') $param = helper::safe64Encode($this->post->key);
|
||||
|
||||
/* Get results from the api. */
|
||||
$results = $this->extension->getExtensionsByAPI($type, $param, $recTotal, $recPerPage, $pageID);
|
||||
if($results)
|
||||
{
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$pager = new pager($results->dbPager->recTotal, $results->dbPager->recPerPage, $results->dbPager->pageID);
|
||||
$extensions = $results->extensions;
|
||||
}
|
||||
|
||||
$this->view->moduleTree = $this->extension->getModulesByAPI();
|
||||
$this->view->extensions = $extensions;
|
||||
$this->view->installeds = $this->extension->getLocalExtensions('installed');
|
||||
$this->view->pager = $pager;
|
||||
$this->view->tab = 'obtain';
|
||||
$this->view->type = $type;
|
||||
$this->view->moduleID = $moduleID;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Install a extension
|
||||
*
|
||||
* @param string $extension
|
||||
* @param string $downLink
|
||||
* @param string $md5
|
||||
* @param string $type
|
||||
* @param string $overridePackage
|
||||
* @param string $ignoreCompatible
|
||||
* @param string $overrideFile
|
||||
* @param string $agreeLicense
|
||||
* @param int $upgrade
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function install($extension, $downLink = '', $md5 = '', $type = '', $overridePackage = 'no', $ignoreCompatible = 'no', $overrideFile = 'no', $agreeLicense = 'no', $upgrade = 'no')
|
||||
{
|
||||
$this->view->error = '';
|
||||
$installTitle = $upgrade == 'no' ? $this->lang->extension->install : $this->lang->extension->upgrade;
|
||||
$installType = $upgrade == 'no' ? $this->lang->extension->installExt : $this->lang->extension->upgradeExt;
|
||||
$this->view->installType = $installType;
|
||||
$this->view->upgrade = $upgrade;
|
||||
$this->view->header->title = $installTitle . $this->lang->colon . $extension;
|
||||
|
||||
/* Get the package file name. */
|
||||
$packageFile = $this->extension->getPackageFile($extension);
|
||||
|
||||
if($downLink)
|
||||
{
|
||||
/* Checking download path. */
|
||||
$return = $this->extension->checkDownloadPath();
|
||||
if($return->result != 'ok')
|
||||
{
|
||||
$this->view->error = $return->error;
|
||||
die($this->display());
|
||||
}
|
||||
|
||||
/* Check file exists or not. */
|
||||
if(file_exists($packageFile) and $overridePackage == 'no')
|
||||
{
|
||||
$overrideLink = inlink('install', "extension=$extension&downLink=$downLink&md5=$md5&type=$type&overridePackage=yes&ignoreCompatible=$ignoreCompatible&overrideFile=$overrideFile&agreeLicense=$agreeLicense&upgrade=$upgrade");
|
||||
$this->view->error = sprintf($this->lang->extension->errorPackageFileExists, $packageFile, $installType, $overrideLink);
|
||||
die($this->display());
|
||||
}
|
||||
|
||||
/* Download the package file. */
|
||||
$this->extension->downloadPackage($extension, helper::safe64Decode($downLink));
|
||||
if(!file_exists($packageFile))
|
||||
{
|
||||
$this->view->error = sprintf($this->lang->extension->errorDownloadFailed, $packageFile);
|
||||
die($this->display());
|
||||
}
|
||||
elseif($md5 != '' and md5_file($packageFile) != $md5)
|
||||
{
|
||||
unlink($packageFile);
|
||||
$this->view->error = sprintf($this->lang->extension->errorMd5Checking, $packageFile);
|
||||
die($this->display());
|
||||
}
|
||||
}
|
||||
|
||||
/* Check the package file exists or not. */
|
||||
if(!file_exists($packageFile))
|
||||
{
|
||||
$this->view->error = sprintf($this->lang->extension->errorPackageNotFound, $packageFile);
|
||||
die($this->display());
|
||||
}
|
||||
|
||||
/* Checking the extension pathes. */
|
||||
$return = $this->extension->checkExtensionPathes($extension);
|
||||
if($this->session->dirs2Created == false) $this->session->set('dirs2Created', $return->dirs2Created); // Save the dirs to be created.
|
||||
if($return->result != 'ok')
|
||||
{
|
||||
$this->view->error = $return->errors;
|
||||
die($this->display());
|
||||
}
|
||||
|
||||
/* Extract the package. */
|
||||
$return = $this->extension->extractPackage($extension);
|
||||
if($return->result != 'ok')
|
||||
{
|
||||
$this->view->error = sprintf($this->lang->extension->errorExtracted, $packageFile, $return->error);
|
||||
die($this->display());
|
||||
}
|
||||
|
||||
/* Check version comptiable. */
|
||||
$zentaoVersion = $this->extension->getZentaoVersion($extension);
|
||||
if(!$this->extension->checkVersion($zentaoVersion) and $ignoreCompatible == 'no')
|
||||
{
|
||||
$ignoreLink = inlink('install', "extension=$extension&downLink=$downLink&md5=$md5&type=$type&overridePackage=$overridePackage&ignoreCompatible=yes&overrideFile=$overrideFile&agreeLicense=$agreeLicense&upgrade=$upgrade");
|
||||
$returnLink = inlink('obtain');
|
||||
$this->view->error = sprintf($this->lang->extension->errorCheckIncompatible, $installType, $ignoreLink, $installType, $returnLink);
|
||||
die($this->display());
|
||||
}
|
||||
|
||||
/* Check files in the package conflicts with exists files or not. */
|
||||
if($overrideFile == 'no')
|
||||
{
|
||||
$return = $this->extension->checkFile($extension);
|
||||
if($return->result != 'ok')
|
||||
{
|
||||
$overrideLink = inlink('install', "extension=$extension&downLink=$downLink&md5=$md5&type=$type&overridePackage=$overridePackage&ignoreCompatible=$ignoreCompatible&overrideFile=yes&agreeLicense=$agreeLicense&upgrade=$upgrade");
|
||||
$returnLink = inlink('obtain');
|
||||
$this->view->error = sprintf($this->lang->extension->errorFileConflicted, $return->error, $overrideLink, $returnLink);
|
||||
die($this->display());
|
||||
}
|
||||
}
|
||||
|
||||
if($upgrade == 'yes')
|
||||
{
|
||||
$newInfo = $this->extension->parseExtensionCFG($extension);
|
||||
$this->post->upgradeVersion = isset($newInfo->version) ? $newInfo->version : '';
|
||||
$oldInfo = $this->extension->getInfoFromDB($extension);
|
||||
$this->post->installedVersion = $oldInfo ? $oldInfo->version : '';
|
||||
}
|
||||
|
||||
/* Print the license form. */
|
||||
if($agreeLicense == 'no')
|
||||
{
|
||||
$extensionInfo = $this->extension->getInfoFromPackage($extension);
|
||||
$license = $this->extension->processLicense($extensionInfo->license);
|
||||
$agreeLink = inlink('install', "extension=$extension&downLink=$downLink&md5=$md5&type=$type&overridePackage=$overridePackage&ignoreCompatible=$ignoreCompatible&overrideFile=$overrideFile&agreeLicense=yes&upgrade=$upgrade");
|
||||
$this->view->license = $license;
|
||||
$this->view->author = $extensionInfo->author;
|
||||
$this->view->agreeLink = $agreeLink;
|
||||
die($this->display());
|
||||
}
|
||||
|
||||
/* The preInstall hook file. */
|
||||
$hook = $upgrade == 'yes' ? 'preupgrade' : 'preinstall';
|
||||
if($preHookFile = $this->extension->getHookFile($extension, $hook)) include $preHookFile;
|
||||
|
||||
/* Save to database. */
|
||||
$this->extension->saveExtension($extension, $type);
|
||||
|
||||
/* Copy files to target directory. */
|
||||
$this->view->files = $this->extension->copyPackageFiles($extension);
|
||||
|
||||
/* Judge need execute db install or not. */
|
||||
$data->status = 'installed';
|
||||
$data->dirs = $this->session->dirs2Created;
|
||||
$data->files = $this->view->files;
|
||||
$data->installedTime = helper::now();
|
||||
$this->session->set('dirs2Created', array()); // clean the session.
|
||||
|
||||
/* Execute the install.sql. */
|
||||
if($upgrade == 'no' and $this->extension->needExecuteDB($extension, 'install'))
|
||||
{
|
||||
$return = $this->extension->executeDB($extension, 'install');
|
||||
if($return->result != 'ok')
|
||||
{
|
||||
$this->view->error = sprintf($this->lang->extension->errorInstallDB, $return->error);
|
||||
die($this->display());
|
||||
}
|
||||
}
|
||||
|
||||
/* Update status, dirs, files and installed time. */
|
||||
$this->extension->updateExtension($extension, $data);
|
||||
$this->view->downloadedPackage = !empty($downLink);
|
||||
|
||||
/* The postInstall hook file. */
|
||||
$hook = $upgrade == 'yes' ? 'postupgrade' : 'postinstall';
|
||||
if($postHookFile = $this->extension->getHookFile($extension, $hook)) include $postHookFile;
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Uninstall an extension.
|
||||
*
|
||||
* @param string $extension
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function uninstall($extension)
|
||||
{
|
||||
if($preUninstallHook = $this->extension->getHookFile($extension, 'preuninstall')) include $preUninstallHook;
|
||||
|
||||
$this->extension->executeDB($extension, 'uninstall');
|
||||
$this->extension->updateExtension($extension, array('status' => 'available'));
|
||||
$this->view->removeCommands = $this->extension->removePackage($extension);
|
||||
$this->view->header->title = $this->lang->extension->uninstallFinished;
|
||||
|
||||
if($postUninstallHook = $this->extension->getHookFile($extension, 'postuninstall')) include $postUninstallHook;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Activate an extension;
|
||||
*
|
||||
* @param string $extension
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function activate($extension, $ignore = 'no')
|
||||
{
|
||||
if($ignore == 'no')
|
||||
{
|
||||
$return = $this->extension->checkFile($extension);
|
||||
if($return->result != 'ok')
|
||||
{
|
||||
$ignoreLink = inlink('activate', "extension=$extension&ignore=yes");
|
||||
$resetLink = inlink('browse', 'type=deactivated');
|
||||
$this->view->error = sprintf($this->lang->extension->errorFileConflicted, $return->error, $ignoreLink, $resetLink);
|
||||
die($this->display());
|
||||
}
|
||||
}
|
||||
|
||||
$this->extension->copyPackageFiles($extension);
|
||||
$this->extension->updateExtension($extension, array('status' => 'installed'));
|
||||
$this->view->header->title = $this->lang->extension->activateFinished;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Deactivate an extension
|
||||
*
|
||||
* @param string $extension
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function deactivate($extension)
|
||||
{
|
||||
$this->extension->updateExtension($extension, array('status' => 'deactivated'));
|
||||
$this->view->removeCommands = $this->extension->removePackage($extension);
|
||||
$this->view->header->title = $this->lang->extension->deactivateFinished;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Upload an extension
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function upload()
|
||||
{
|
||||
if($_FILES)
|
||||
{
|
||||
$tmpName = $_FILES['file']['tmp_name'];
|
||||
$fileName = $_FILES['file']['name'];
|
||||
$extension = basename($fileName, '.zip');
|
||||
move_uploaded_file($tmpName, $this->app->getTmpRoot() . "/extension/$fileName");
|
||||
$info = $this->extension->getInfoFromDB($extension);
|
||||
$type = $info->status == 'installed' ? 'upgrade' : 'install';
|
||||
$link = $type == 'install' ? inlink('install', "extension=$extension") : inlink('upgrade', "extension=$extension");
|
||||
$this->locate($link);
|
||||
}
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Erase an extension.
|
||||
*
|
||||
* @param string $extension
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function erase($extension)
|
||||
{
|
||||
$this->view->removeCommands = $this->extension->erasePackage($extension);
|
||||
$this->view->header->title = $this->lang->extension->eraseFinished;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update extension.
|
||||
*
|
||||
* @param string $extension
|
||||
* @param string $downLink
|
||||
* @param string $md5
|
||||
* @param string $type
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function upgrade($extension, $downLink = '', $md5 = '', $type = '')
|
||||
{
|
||||
$this->extension->removePackage($extension);
|
||||
$this->locate(inlink('install', "extension=$extension&downLink=$downLink&md5=$md5&type=$type&overridePackage=no&ignoreCompatible=yes&overrideFile=no&agreeLicense=no&upgrade=yes"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Browse the structure of extension.
|
||||
*
|
||||
* @param int $extension
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function structure($extension)
|
||||
{
|
||||
$this->view->extension = $this->extension->getInfoFromDB($extension);
|
||||
$this->display();
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* The control file of extension module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package extension
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class extension extends control
|
||||
{
|
||||
/**
|
||||
* Browse extensions.
|
||||
*
|
||||
* @param string $status
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function browse($status = 'installed')
|
||||
{
|
||||
$extensions = $this->extension->getLocalExtensions($status);
|
||||
$versions = array();
|
||||
if($extensions and $status == 'installed')
|
||||
{
|
||||
/* Get latest release from remote. */
|
||||
$extCodes = helper::safe64Encode(join(',', array_keys($extensions)));
|
||||
$results = $this->extension->getExtensionsByAPI('bycode', $extCodes, $recTotal = 0, $recPerPage = 1000, $pageID = 1);
|
||||
if(isset($results->extensions))
|
||||
{
|
||||
$remoteReleases = $results->extensions;
|
||||
foreach($remoteReleases as $release)
|
||||
{
|
||||
if(!isset($extensions[$release->code])) continue;
|
||||
|
||||
$extension = $extensions[$release->code];
|
||||
$extension->viewLink = $release->viewLink;
|
||||
if($extension->version != $release->latestRelease->releaseVersion and $this->extension->checkVersion($release->latestRelease->zentaoVersion))
|
||||
{
|
||||
$upgradeLink = inlink('upgrade', "extension=$release->code&downLink=" . helper::safe64Encode($release->latestRelease->downLink) . "&md5={$release->latestRelease->md5}&type=$release->type");
|
||||
$upgradeLink = ($release->latestRelease->charge or !$release->latestRelease->public) ? $release->latestRelease->downLink : $upgradeLink;
|
||||
$extension->upgradeLink = $upgradeLink;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->view->header->title = $this->lang->extension->browse;
|
||||
$this->view->position[] = $this->lang->extension->browse;
|
||||
$this->view->tab = $status;
|
||||
$this->view->extensions = $extensions;
|
||||
$this->view->versions = $versions;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtain extensions from the community.
|
||||
*
|
||||
* @param string $type
|
||||
* @param string $param
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function obtain($type = 'byUpdatedTime', $param = '', $recTotal = 0, $recPerPage = 10, $pageID = 1)
|
||||
{
|
||||
/* Init vars. */
|
||||
$type = strtolower($type);
|
||||
$moduleID = $type == 'bymodule' ? (int)$param : 0;
|
||||
$extensions = array();
|
||||
$pager = null;
|
||||
|
||||
/* Set the key. */
|
||||
if($type == 'bysearch') $param = helper::safe64Encode($this->post->key);
|
||||
|
||||
/* Get results from the api. */
|
||||
$results = $this->extension->getExtensionsByAPI($type, $param, $recTotal, $recPerPage, $pageID);
|
||||
if($results)
|
||||
{
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$pager = new pager($results->dbPager->recTotal, $results->dbPager->recPerPage, $results->dbPager->pageID);
|
||||
$extensions = $results->extensions;
|
||||
}
|
||||
|
||||
$this->view->moduleTree = $this->extension->getModulesByAPI();
|
||||
$this->view->extensions = $extensions;
|
||||
$this->view->installeds = $this->extension->getLocalExtensions('installed');
|
||||
$this->view->pager = $pager;
|
||||
$this->view->tab = 'obtain';
|
||||
$this->view->type = $type;
|
||||
$this->view->moduleID = $moduleID;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Install a extension
|
||||
*
|
||||
* @param string $extension
|
||||
* @param string $downLink
|
||||
* @param string $md5
|
||||
* @param string $type
|
||||
* @param string $overridePackage
|
||||
* @param string $ignoreCompatible
|
||||
* @param string $overrideFile
|
||||
* @param string $agreeLicense
|
||||
* @param int $upgrade
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function install($extension, $downLink = '', $md5 = '', $type = '', $overridePackage = 'no', $ignoreCompatible = 'no', $overrideFile = 'no', $agreeLicense = 'no', $upgrade = 'no')
|
||||
{
|
||||
$this->view->error = '';
|
||||
$installTitle = $upgrade == 'no' ? $this->lang->extension->install : $this->lang->extension->upgrade;
|
||||
$installType = $upgrade == 'no' ? $this->lang->extension->installExt : $this->lang->extension->upgradeExt;
|
||||
$this->view->installType = $installType;
|
||||
$this->view->upgrade = $upgrade;
|
||||
$this->view->header->title = $installTitle . $this->lang->colon . $extension;
|
||||
|
||||
/* Get the package file name. */
|
||||
$packageFile = $this->extension->getPackageFile($extension);
|
||||
|
||||
if($downLink)
|
||||
{
|
||||
/* Checking download path. */
|
||||
$return = $this->extension->checkDownloadPath();
|
||||
if($return->result != 'ok')
|
||||
{
|
||||
$this->view->error = $return->error;
|
||||
die($this->display());
|
||||
}
|
||||
|
||||
/* Check file exists or not. */
|
||||
if(file_exists($packageFile) and $overridePackage == 'no')
|
||||
{
|
||||
$overrideLink = inlink('install', "extension=$extension&downLink=$downLink&md5=$md5&type=$type&overridePackage=yes&ignoreCompatible=$ignoreCompatible&overrideFile=$overrideFile&agreeLicense=$agreeLicense&upgrade=$upgrade");
|
||||
$this->view->error = sprintf($this->lang->extension->errorPackageFileExists, $packageFile, $installType, $overrideLink);
|
||||
die($this->display());
|
||||
}
|
||||
|
||||
/* Download the package file. */
|
||||
$this->extension->downloadPackage($extension, helper::safe64Decode($downLink));
|
||||
if(!file_exists($packageFile))
|
||||
{
|
||||
$this->view->error = sprintf($this->lang->extension->errorDownloadFailed, $packageFile);
|
||||
die($this->display());
|
||||
}
|
||||
elseif($md5 != '' and md5_file($packageFile) != $md5)
|
||||
{
|
||||
unlink($packageFile);
|
||||
$this->view->error = sprintf($this->lang->extension->errorMd5Checking, $packageFile);
|
||||
die($this->display());
|
||||
}
|
||||
}
|
||||
|
||||
/* Check the package file exists or not. */
|
||||
if(!file_exists($packageFile))
|
||||
{
|
||||
$this->view->error = sprintf($this->lang->extension->errorPackageNotFound, $packageFile);
|
||||
die($this->display());
|
||||
}
|
||||
|
||||
/* Checking the extension pathes. */
|
||||
$return = $this->extension->checkExtensionPathes($extension);
|
||||
if($this->session->dirs2Created == false) $this->session->set('dirs2Created', $return->dirs2Created); // Save the dirs to be created.
|
||||
if($return->result != 'ok')
|
||||
{
|
||||
$this->view->error = $return->errors;
|
||||
die($this->display());
|
||||
}
|
||||
|
||||
/* Extract the package. */
|
||||
$return = $this->extension->extractPackage($extension);
|
||||
if($return->result != 'ok')
|
||||
{
|
||||
$this->view->error = sprintf($this->lang->extension->errorExtracted, $packageFile, $return->error);
|
||||
die($this->display());
|
||||
}
|
||||
|
||||
/* Check version comptiable. */
|
||||
$zentaoVersion = $this->extension->getZentaoVersion($extension);
|
||||
if(!$this->extension->checkVersion($zentaoVersion) and $ignoreCompatible == 'no')
|
||||
{
|
||||
$ignoreLink = inlink('install', "extension=$extension&downLink=$downLink&md5=$md5&type=$type&overridePackage=$overridePackage&ignoreCompatible=yes&overrideFile=$overrideFile&agreeLicense=$agreeLicense&upgrade=$upgrade");
|
||||
$returnLink = inlink('obtain');
|
||||
$this->view->error = sprintf($this->lang->extension->errorCheckIncompatible, $installType, $ignoreLink, $installType, $returnLink);
|
||||
die($this->display());
|
||||
}
|
||||
|
||||
/* Check files in the package conflicts with exists files or not. */
|
||||
if($overrideFile == 'no')
|
||||
{
|
||||
$return = $this->extension->checkFile($extension);
|
||||
if($return->result != 'ok')
|
||||
{
|
||||
$overrideLink = inlink('install', "extension=$extension&downLink=$downLink&md5=$md5&type=$type&overridePackage=$overridePackage&ignoreCompatible=$ignoreCompatible&overrideFile=yes&agreeLicense=$agreeLicense&upgrade=$upgrade");
|
||||
$returnLink = inlink('obtain');
|
||||
$this->view->error = sprintf($this->lang->extension->errorFileConflicted, $return->error, $overrideLink, $returnLink);
|
||||
die($this->display());
|
||||
}
|
||||
}
|
||||
|
||||
if($upgrade == 'yes')
|
||||
{
|
||||
$newInfo = $this->extension->parseExtensionCFG($extension);
|
||||
$this->post->upgradeVersion = isset($newInfo->version) ? $newInfo->version : '';
|
||||
$oldInfo = $this->extension->getInfoFromDB($extension);
|
||||
$this->post->installedVersion = $oldInfo ? $oldInfo->version : '';
|
||||
}
|
||||
|
||||
/* Print the license form. */
|
||||
if($agreeLicense == 'no')
|
||||
{
|
||||
$extensionInfo = $this->extension->getInfoFromPackage($extension);
|
||||
$license = $this->extension->processLicense($extensionInfo->license);
|
||||
$agreeLink = inlink('install', "extension=$extension&downLink=$downLink&md5=$md5&type=$type&overridePackage=$overridePackage&ignoreCompatible=$ignoreCompatible&overrideFile=$overrideFile&agreeLicense=yes&upgrade=$upgrade");
|
||||
$this->view->license = $license;
|
||||
$this->view->author = $extensionInfo->author;
|
||||
$this->view->agreeLink = $agreeLink;
|
||||
die($this->display());
|
||||
}
|
||||
|
||||
/* The preInstall hook file. */
|
||||
$hook = $upgrade == 'yes' ? 'preupgrade' : 'preinstall';
|
||||
if($preHookFile = $this->extension->getHookFile($extension, $hook)) include $preHookFile;
|
||||
|
||||
/* Save to database. */
|
||||
$this->extension->saveExtension($extension, $type);
|
||||
|
||||
/* Copy files to target directory. */
|
||||
$this->view->files = $this->extension->copyPackageFiles($extension);
|
||||
|
||||
/* Judge need execute db install or not. */
|
||||
$data->status = 'installed';
|
||||
$data->dirs = $this->session->dirs2Created;
|
||||
$data->files = $this->view->files;
|
||||
$data->installedTime = helper::now();
|
||||
$this->session->set('dirs2Created', array()); // clean the session.
|
||||
|
||||
/* Execute the install.sql. */
|
||||
if($upgrade == 'no' and $this->extension->needExecuteDB($extension, 'install'))
|
||||
{
|
||||
$return = $this->extension->executeDB($extension, 'install');
|
||||
if($return->result != 'ok')
|
||||
{
|
||||
$this->view->error = sprintf($this->lang->extension->errorInstallDB, $return->error);
|
||||
die($this->display());
|
||||
}
|
||||
}
|
||||
|
||||
/* Update status, dirs, files and installed time. */
|
||||
$this->extension->updateExtension($extension, $data);
|
||||
$this->view->downloadedPackage = !empty($downLink);
|
||||
|
||||
/* The postInstall hook file. */
|
||||
$hook = $upgrade == 'yes' ? 'postupgrade' : 'postinstall';
|
||||
if($postHookFile = $this->extension->getHookFile($extension, $hook)) include $postHookFile;
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Uninstall an extension.
|
||||
*
|
||||
* @param string $extension
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function uninstall($extension)
|
||||
{
|
||||
if($preUninstallHook = $this->extension->getHookFile($extension, 'preuninstall')) include $preUninstallHook;
|
||||
|
||||
$this->extension->executeDB($extension, 'uninstall');
|
||||
$this->extension->updateExtension($extension, array('status' => 'available'));
|
||||
$this->view->removeCommands = $this->extension->removePackage($extension);
|
||||
$this->view->header->title = $this->lang->extension->uninstallFinished;
|
||||
|
||||
if($postUninstallHook = $this->extension->getHookFile($extension, 'postuninstall')) include $postUninstallHook;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Activate an extension;
|
||||
*
|
||||
* @param string $extension
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function activate($extension, $ignore = 'no')
|
||||
{
|
||||
if($ignore == 'no')
|
||||
{
|
||||
$return = $this->extension->checkFile($extension);
|
||||
if($return->result != 'ok')
|
||||
{
|
||||
$ignoreLink = inlink('activate', "extension=$extension&ignore=yes");
|
||||
$resetLink = inlink('browse', 'type=deactivated');
|
||||
$this->view->error = sprintf($this->lang->extension->errorFileConflicted, $return->error, $ignoreLink, $resetLink);
|
||||
die($this->display());
|
||||
}
|
||||
}
|
||||
|
||||
$this->extension->copyPackageFiles($extension);
|
||||
$this->extension->updateExtension($extension, array('status' => 'installed'));
|
||||
$this->view->header->title = $this->lang->extension->activateFinished;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Deactivate an extension
|
||||
*
|
||||
* @param string $extension
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function deactivate($extension)
|
||||
{
|
||||
$this->extension->updateExtension($extension, array('status' => 'deactivated'));
|
||||
$this->view->removeCommands = $this->extension->removePackage($extension);
|
||||
$this->view->header->title = $this->lang->extension->deactivateFinished;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Upload an extension
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function upload()
|
||||
{
|
||||
if($_FILES)
|
||||
{
|
||||
$tmpName = $_FILES['file']['tmp_name'];
|
||||
$fileName = $_FILES['file']['name'];
|
||||
$extension = basename($fileName, '.zip');
|
||||
move_uploaded_file($tmpName, $this->app->getTmpRoot() . "/extension/$fileName");
|
||||
$info = $this->extension->getInfoFromDB($extension);
|
||||
$type = $info->status == 'installed' ? 'upgrade' : 'install';
|
||||
$link = $type == 'install' ? inlink('install', "extension=$extension") : inlink('upgrade', "extension=$extension");
|
||||
$this->locate($link);
|
||||
}
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Erase an extension.
|
||||
*
|
||||
* @param string $extension
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function erase($extension)
|
||||
{
|
||||
$this->view->removeCommands = $this->extension->erasePackage($extension);
|
||||
$this->view->header->title = $this->lang->extension->eraseFinished;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update extension.
|
||||
*
|
||||
* @param string $extension
|
||||
* @param string $downLink
|
||||
* @param string $md5
|
||||
* @param string $type
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function upgrade($extension, $downLink = '', $md5 = '', $type = '')
|
||||
{
|
||||
$this->extension->removePackage($extension);
|
||||
$this->locate(inlink('install', "extension=$extension&downLink=$downLink&md5=$md5&type=$type&overridePackage=no&ignoreCompatible=yes&overrideFile=no&agreeLicense=no&upgrade=yes"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Browse the structure of extension.
|
||||
*
|
||||
* @param int $extension
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function structure($extension)
|
||||
{
|
||||
$this->view->extension = $this->extension->getInfoFromDB($extension);
|
||||
$this->display();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,98 +1,98 @@
|
||||
<?php
|
||||
/**
|
||||
* The extension module en file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package extension
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->extension->common = 'Extension';
|
||||
$lang->extension->browse = 'Browse';
|
||||
$lang->extension->install = 'Install';
|
||||
$lang->extension->installAuto = 'AutoInstall';
|
||||
$lang->extension->installForce = 'ForceInstall';
|
||||
$lang->extension->uninstall = 'Uninstall';
|
||||
$lang->extension->activate = 'Activate';
|
||||
$lang->extension->deactivate = 'Deactivate';
|
||||
$lang->extension->obtain = 'Obtain';
|
||||
$lang->extension->view = 'Info';
|
||||
$lang->extension->download = 'Download';
|
||||
$lang->extension->downloadAB = 'Down';
|
||||
$lang->extension->upload = 'Upload and install';
|
||||
$lang->extension->erase = 'Erase';
|
||||
$lang->extension->upgrade = 'Upgrade Extension';
|
||||
$lang->extension->agreeLicense = 'I agree the license';
|
||||
|
||||
$lang->extension->structure = 'Structure';
|
||||
$lang->extension->installed = 'Installed';
|
||||
$lang->extension->deactivated = 'Deactivated';
|
||||
$lang->extension->available = 'Downloaded';
|
||||
|
||||
$lang->extension->id = 'ID';
|
||||
$lang->extension->name = 'Name';
|
||||
$lang->extension->code = 'Code';
|
||||
$lang->extension->version = 'Version';
|
||||
$lang->extension->compatible = 'Compatible';
|
||||
$lang->extension->latest = '<small>Latest:<strong><a href="%s" target="_blank" class="extension">%s</a></strong>,need zentao <a href="http://www.zentao.net/goto.php?item=latest" target="_blank"><strong>%s</strong></small>';
|
||||
$lang->extension->author = 'Author';
|
||||
$lang->extension->license = 'License';
|
||||
$lang->extension->intro = 'Description';
|
||||
$lang->extension->abstract = 'Abstract';
|
||||
$lang->extension->site = 'Site';
|
||||
$lang->extension->addedTime = 'Added Time';
|
||||
$lang->extension->updatedTime = 'Updated Time';
|
||||
$lang->extension->downloads = 'Downloads';
|
||||
$lang->extension->public = 'Public';
|
||||
$lang->extension->compatible = 'Compatible';
|
||||
$lang->extension->grade = 'Grade';
|
||||
|
||||
$lang->extension->publicList[0] = 'Manually';
|
||||
$lang->extension->publicList[1] = 'Auto';
|
||||
|
||||
$lang->extension->compatibleList[0] = 'Unknow';
|
||||
$lang->extension->compatibleList[1] = 'Compatible';
|
||||
|
||||
$lang->extension->byDownloads = 'Downloads';
|
||||
$lang->extension->byAddedTime = 'New added';
|
||||
$lang->extension->byUpdatedTime = 'Last updated';
|
||||
$lang->extension->bySearch = 'Search';
|
||||
$lang->extension->byCategory = 'By Category';
|
||||
|
||||
$lang->extension->installFailed = '%s failed, the reason is:';
|
||||
$lang->extension->installFinished = 'Good, the extension has been %s successfully.';
|
||||
$lang->extension->refreshPage = 'Refresh';
|
||||
$lang->extension->uninstallFinished = 'Extension has been successfully uninstalled.';
|
||||
$lang->extension->deactivateFinished = 'Extension has been successfully deactivated.';
|
||||
$lang->extension->activateFinished = 'Extension has been successfully activated.';
|
||||
$lang->extension->eraseFinished = 'Extension has been successfully erased.';
|
||||
$lang->extension->unremovedFiles = 'There are some unremoved files, you need remove them manually';
|
||||
$lang->extension->executeCommands = '<h3>Execute the following commands to fix them:</h3>';
|
||||
$lang->extension->successDownloadedPackage = 'Successfully downloaded the package file.';
|
||||
$lang->extension->successCopiedFiles = 'Successfully copied files. ';
|
||||
$lang->extension->successInstallDB = 'Successfully installed database.';
|
||||
$lang->extension->viewInstalled = 'View installed extensions.';
|
||||
$lang->extension->viewAvailable = 'View available extensions';
|
||||
$lang->extension->viewDeactivated = 'View deactivated extensions';
|
||||
|
||||
$lang->extension->upgradeExt = 'Upgrade';
|
||||
$lang->extension->installExt = 'Install';
|
||||
$lang->extension->upgradeVersion = '(Upgrade from %s to %s)';
|
||||
|
||||
$lang->extension->errorOccurs = 'Error:';
|
||||
$lang->extension->errorGetModules = "Get extensions' categories data from the www.zentao.net failed. ";
|
||||
$lang->extension->errorGetExtensions = 'Get extensions from www.zentao.net failed. You can visit <a href="http://www.zentao.net/extension/" target="_blank">www.zentao.net</a> to find your extensions, download it manually and then upload to zentaopms to install it.';
|
||||
$lang->extension->errorDownloadPathNotFound = 'The save path of package file <strong>%s</strong>does not exists.<br />For linux users, can execute <strong>mkdir -p %s</strong> to fix it.';
|
||||
$lang->extension->errorDownloadPathNotWritable = 'The save path of package file <strong>%s</strong>is not writable.<br />For linux users, can execute <strong>sudo chmod 777 %s</strong> to fix it.';
|
||||
$lang->extension->errorPackageFileExists = 'There is already a file with the same name <strong>%s</strong>.<h3> If you want to %s again, <a href="%s">please click this link</a>.</h3>';
|
||||
$lang->extension->errorDownloadFailed = 'Download failed, please try again. Or you can download it manually and upload it to install.';
|
||||
$lang->extension->errorMd5Checking = 'The downloawd files checking failed, Please download it manually and upload it to install';
|
||||
$lang->extension->errorExtracted = 'The package file <strong> %s </strong> extracted failed. The error is:<br />%s';
|
||||
$lang->extension->errorCheckIncompatible = 'This extenion is not compatible with current zentao version. <h3>You can <a href="%s">Force %s</a> or <a href="#" onclick=parent.location.href="%s">Cancel</a></h3>.';
|
||||
$lang->extension->errorFileConflicted = 'There are some files conflicted: <br />%s <h3>You can <a href="%s">Overide them</a> or <a href="#" onclick=parent.location.href="%s">Cancel</a></h3>.';
|
||||
$lang->extension->errorPackageNotFound = 'The package file <strong>%s </strong> not found, perhaps download failed, try again.';
|
||||
$lang->extension->errorTargetPathNotWritable = 'Target path <strong>%s </strong>not writable.';
|
||||
$lang->extension->errorTargetPathNotExists = 'Target path <strong>%s </strong>not exists';
|
||||
$lang->extension->errorInstallDB = 'Execute database sql failed, the error is: %s';
|
||||
<?php
|
||||
/**
|
||||
* The extension module en file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package extension
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->extension->common = 'Extension';
|
||||
$lang->extension->browse = 'Browse';
|
||||
$lang->extension->install = 'Install';
|
||||
$lang->extension->installAuto = 'AutoInstall';
|
||||
$lang->extension->installForce = 'ForceInstall';
|
||||
$lang->extension->uninstall = 'Uninstall';
|
||||
$lang->extension->activate = 'Activate';
|
||||
$lang->extension->deactivate = 'Deactivate';
|
||||
$lang->extension->obtain = 'Obtain';
|
||||
$lang->extension->view = 'Info';
|
||||
$lang->extension->download = 'Download';
|
||||
$lang->extension->downloadAB = 'Down';
|
||||
$lang->extension->upload = 'Upload and install';
|
||||
$lang->extension->erase = 'Erase';
|
||||
$lang->extension->upgrade = 'Upgrade Extension';
|
||||
$lang->extension->agreeLicense = 'I agree the license';
|
||||
|
||||
$lang->extension->structure = 'Structure';
|
||||
$lang->extension->installed = 'Installed';
|
||||
$lang->extension->deactivated = 'Deactivated';
|
||||
$lang->extension->available = 'Downloaded';
|
||||
|
||||
$lang->extension->id = 'ID';
|
||||
$lang->extension->name = 'Name';
|
||||
$lang->extension->code = 'Code';
|
||||
$lang->extension->version = 'Version';
|
||||
$lang->extension->compatible = 'Compatible';
|
||||
$lang->extension->latest = '<small>Latest:<strong><a href="%s" target="_blank" class="extension">%s</a></strong>,need zentao <a href="http://www.zentao.net/goto.php?item=latest" target="_blank"><strong>%s</strong></small>';
|
||||
$lang->extension->author = 'Author';
|
||||
$lang->extension->license = 'License';
|
||||
$lang->extension->intro = 'Description';
|
||||
$lang->extension->abstract = 'Abstract';
|
||||
$lang->extension->site = 'Site';
|
||||
$lang->extension->addedTime = 'Added Time';
|
||||
$lang->extension->updatedTime = 'Updated Time';
|
||||
$lang->extension->downloads = 'Downloads';
|
||||
$lang->extension->public = 'Public';
|
||||
$lang->extension->compatible = 'Compatible';
|
||||
$lang->extension->grade = 'Grade';
|
||||
|
||||
$lang->extension->publicList[0] = 'Manually';
|
||||
$lang->extension->publicList[1] = 'Auto';
|
||||
|
||||
$lang->extension->compatibleList[0] = 'Unknow';
|
||||
$lang->extension->compatibleList[1] = 'Compatible';
|
||||
|
||||
$lang->extension->byDownloads = 'Downloads';
|
||||
$lang->extension->byAddedTime = 'New added';
|
||||
$lang->extension->byUpdatedTime = 'Last updated';
|
||||
$lang->extension->bySearch = 'Search';
|
||||
$lang->extension->byCategory = 'By Category';
|
||||
|
||||
$lang->extension->installFailed = '%s failed, the reason is:';
|
||||
$lang->extension->installFinished = 'Good, the extension has been %s successfully.';
|
||||
$lang->extension->refreshPage = 'Refresh';
|
||||
$lang->extension->uninstallFinished = 'Extension has been successfully uninstalled.';
|
||||
$lang->extension->deactivateFinished = 'Extension has been successfully deactivated.';
|
||||
$lang->extension->activateFinished = 'Extension has been successfully activated.';
|
||||
$lang->extension->eraseFinished = 'Extension has been successfully erased.';
|
||||
$lang->extension->unremovedFiles = 'There are some unremoved files, you need remove them manually';
|
||||
$lang->extension->executeCommands = '<h3>Execute the following commands to fix them:</h3>';
|
||||
$lang->extension->successDownloadedPackage = 'Successfully downloaded the package file.';
|
||||
$lang->extension->successCopiedFiles = 'Successfully copied files. ';
|
||||
$lang->extension->successInstallDB = 'Successfully installed database.';
|
||||
$lang->extension->viewInstalled = 'View installed extensions.';
|
||||
$lang->extension->viewAvailable = 'View available extensions';
|
||||
$lang->extension->viewDeactivated = 'View deactivated extensions';
|
||||
|
||||
$lang->extension->upgradeExt = 'Upgrade';
|
||||
$lang->extension->installExt = 'Install';
|
||||
$lang->extension->upgradeVersion = '(Upgrade from %s to %s)';
|
||||
|
||||
$lang->extension->errorOccurs = 'Error:';
|
||||
$lang->extension->errorGetModules = "Get extensions' categories data from the www.zentao.net failed. ";
|
||||
$lang->extension->errorGetExtensions = 'Get extensions from www.zentao.net failed. You can visit <a href="http://www.zentao.net/extension/" target="_blank">www.zentao.net</a> to find your extensions, download it manually and then upload to zentaopms to install it.';
|
||||
$lang->extension->errorDownloadPathNotFound = 'The save path of package file <strong>%s</strong>does not exists.<br />For linux users, can execute <strong>mkdir -p %s</strong> to fix it.';
|
||||
$lang->extension->errorDownloadPathNotWritable = 'The save path of package file <strong>%s</strong>is not writable.<br />For linux users, can execute <strong>sudo chmod 777 %s</strong> to fix it.';
|
||||
$lang->extension->errorPackageFileExists = 'There is already a file with the same name <strong>%s</strong>.<h3> If you want to %s again, <a href="%s">please click this link</a>.</h3>';
|
||||
$lang->extension->errorDownloadFailed = 'Download failed, please try again. Or you can download it manually and upload it to install.';
|
||||
$lang->extension->errorMd5Checking = 'The downloawd files checking failed, Please download it manually and upload it to install';
|
||||
$lang->extension->errorExtracted = 'The package file <strong> %s </strong> extracted failed. The error is:<br />%s';
|
||||
$lang->extension->errorCheckIncompatible = 'This extenion is not compatible with current zentao version. <h3>You can <a href="%s">Force %s</a> or <a href="#" onclick=parent.location.href="%s">Cancel</a></h3>.';
|
||||
$lang->extension->errorFileConflicted = 'There are some files conflicted: <br />%s <h3>You can <a href="%s">Overide them</a> or <a href="#" onclick=parent.location.href="%s">Cancel</a></h3>.';
|
||||
$lang->extension->errorPackageNotFound = 'The package file <strong>%s </strong> not found, perhaps download failed, try again.';
|
||||
$lang->extension->errorTargetPathNotWritable = 'Target path <strong>%s </strong>not writable.';
|
||||
$lang->extension->errorTargetPathNotExists = 'Target path <strong>%s </strong>not exists';
|
||||
$lang->extension->errorInstallDB = 'Execute database sql failed, the error is: %s';
|
||||
|
||||
@@ -1,98 +1,98 @@
|
||||
<?php
|
||||
/**
|
||||
* The extension module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package extension
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->extension->common = '插件管理';
|
||||
$lang->extension->browse = '浏览插件';
|
||||
$lang->extension->install = '安装插件';
|
||||
$lang->extension->installAuto = '自动安装';
|
||||
$lang->extension->installForce = '强制安装';
|
||||
$lang->extension->uninstall = '卸载';
|
||||
$lang->extension->activate = '激活';
|
||||
$lang->extension->deactivate = '禁用';
|
||||
$lang->extension->obtain = '获得插件';
|
||||
$lang->extension->view = '详情';
|
||||
$lang->extension->download = '下载插件';
|
||||
$lang->extension->downloadAB = '下载';
|
||||
$lang->extension->upload = '本地安装';
|
||||
$lang->extension->erase = '清除';
|
||||
$lang->extension->upgrade = '升级插件';
|
||||
$lang->extension->agreeLicense = '我同意该授权';
|
||||
|
||||
$lang->extension->structure = '目录结构';
|
||||
$lang->extension->installed = '已安装';
|
||||
$lang->extension->deactivated = '被禁用';
|
||||
$lang->extension->available = '已下载';
|
||||
|
||||
$lang->extension->id = '编号';
|
||||
$lang->extension->name = '名称';
|
||||
$lang->extension->code = '插件代号';
|
||||
$lang->extension->version = '版本';
|
||||
$lang->extension->compatible = '适用版本';
|
||||
$lang->extension->latest = '<small>最新版本<strong><a href="%s" target="_blank" class="extension">%s</a></strong>,兼容禅道<a href="http://www.zentao.net/goto.php?item=latest" target="_blank"><strong>%s</strong></small>';
|
||||
$lang->extension->author = '作者';
|
||||
$lang->extension->license = '授权';
|
||||
$lang->extension->intro = '详情';
|
||||
$lang->extension->abstract = '简介';
|
||||
$lang->extension->site = '官网';
|
||||
$lang->extension->addedTime = '添加时间';
|
||||
$lang->extension->updatedTime = '更新时间';
|
||||
$lang->extension->downloads = '下载量';
|
||||
$lang->extension->public = '下载方式';
|
||||
$lang->extension->compatible = '兼容性';
|
||||
$lang->extension->grade = '评分';
|
||||
|
||||
$lang->extension->publicList[0] = '手工下载';
|
||||
$lang->extension->publicList[1] = '直接下载';
|
||||
|
||||
$lang->extension->compatibleList[0] = '未知';
|
||||
$lang->extension->compatibleList[1] = '兼容';
|
||||
|
||||
$lang->extension->byDownloads = '最多下载';
|
||||
$lang->extension->byAddedTime = '最新添加';
|
||||
$lang->extension->byUpdatedTime = '最近更新';
|
||||
$lang->extension->bySearch = '搜索';
|
||||
$lang->extension->byCategory = '分类浏览';
|
||||
|
||||
$lang->extension->installFailed = '%s失败,错误原因如下:';
|
||||
$lang->extension->installFinished = '恭喜您,插件顺利的%s成功!';
|
||||
$lang->extension->refreshPage = '刷新页面';
|
||||
$lang->extension->uninstallFinished = '插件已经成功卸载';
|
||||
$lang->extension->deactivateFinished = '插件已经成功禁用';
|
||||
$lang->extension->activateFinished = '插件已经成功激活';
|
||||
$lang->extension->eraseFinished = '插件已经成功清除';
|
||||
$lang->extension->unremovedFiles = '有一些文件或目录未能删除,需要手工删除';
|
||||
$lang->extension->executeCommands = '<h3>执行下面的命令来修正这些问题:</h3>';
|
||||
$lang->extension->successDownloadedPackage = '成功下载插件';
|
||||
$lang->extension->successCopiedFiles = '成功拷贝文件';
|
||||
$lang->extension->successInstallDB = '成功安装数据库';
|
||||
$lang->extension->viewInstalled = '查看已安装插件';
|
||||
$lang->extension->viewAvailable = '查看可安装插件';
|
||||
$lang->extension->viewDeactivated = '查看已禁用插件';
|
||||
|
||||
$lang->extension->upgradeExt = '升级';
|
||||
$lang->extension->installExt = '安装';
|
||||
$lang->extension->upgradeVersion = '(从%s升级到%s)';
|
||||
|
||||
$lang->extension->errorOccurs = '错误:';
|
||||
$lang->extension->errorGetModules = '从www.zentao.net获得插件分类失败。可能是因为网络方面的原因,请检查后重新刷新页面。';
|
||||
$lang->extension->errorGetExtensions = '从www.zentao.net获得插件失败。可能是因为网络方面的原因,您可以到<a href="http://www.zentao.net/extension/" target="_blank">www.zentao.net</a>手工下载插件,然后上传安装。';
|
||||
$lang->extension->errorDownloadPathNotFound = '插件下载存储路径<strong>%s</strong>不存在。<br />linux下面请执行命令:<strong>mkdir -p %s</strong>来修正。';
|
||||
$lang->extension->errorDownloadPathNotWritable = '插件下载存储路径<strong>%s</strong>不可写。<br />linux下面请执行命令:<strong>sudo chmod 777 %s</strong>来修正。';
|
||||
$lang->extension->errorPackageFileExists = '下载路径已经有一个名为的<strong>%s</strong>附件。<h3>重新%s,<a href="%s">请点击此链接</a></h3>';
|
||||
$lang->extension->errorDownloadFailed = '下载失败,请重新下载。如果多次重试还不行,请尝试手工下载,然后通过上传功能上传。';
|
||||
$lang->extension->errorMd5Checking = '下载文件不完整,请重新下载。如果多次重试还不行,请尝试手工下载,然后通过上传功能上传。';
|
||||
$lang->extension->errorExtracted = '包文件<strong> %s </strong>解压缩失败,可能不是一个有效的zip文件。错误信息如下:<br />%s';
|
||||
$lang->extension->errorCheckIncompatible = '该插件与禅道版本不兼容,%s后可能无法使用。。<h3>您可以选择 <a href="%s">强制%s</a> 或者 <a href="#" onclick=parent.location.href="%s">取消</a></h3>';
|
||||
$lang->extension->errorFileConflicted = '有以下文件冲突:<br />%s <h3>您可以选择 <a href="%s">覆盖</a> 或者 <a href="#" onclick=parent.location.href="%s">取消</a></h3>';
|
||||
$lang->extension->errorPackageNotFound = '包文件 <strong>%s </strong>没有找到,可能是因为自动下载失败。您可以尝试再次下载。';
|
||||
$lang->extension->errorTargetPathNotWritable = '目标路径 <strong>%s </strong>不可写。';
|
||||
$lang->extension->errorTargetPathNotExists = '目标路径 <strong>%s </strong>不存在。';
|
||||
$lang->extension->errorInstallDB = '执行数据库语句失败。错误信息如下:%s';
|
||||
<?php
|
||||
/**
|
||||
* The extension module zh-cn file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package extension
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->extension->common = '插件管理';
|
||||
$lang->extension->browse = '浏览插件';
|
||||
$lang->extension->install = '安装插件';
|
||||
$lang->extension->installAuto = '自动安装';
|
||||
$lang->extension->installForce = '强制安装';
|
||||
$lang->extension->uninstall = '卸载';
|
||||
$lang->extension->activate = '激活';
|
||||
$lang->extension->deactivate = '禁用';
|
||||
$lang->extension->obtain = '获得插件';
|
||||
$lang->extension->view = '详情';
|
||||
$lang->extension->download = '下载插件';
|
||||
$lang->extension->downloadAB = '下载';
|
||||
$lang->extension->upload = '本地安装';
|
||||
$lang->extension->erase = '清除';
|
||||
$lang->extension->upgrade = '升级插件';
|
||||
$lang->extension->agreeLicense = '我同意该授权';
|
||||
|
||||
$lang->extension->structure = '目录结构';
|
||||
$lang->extension->installed = '已安装';
|
||||
$lang->extension->deactivated = '被禁用';
|
||||
$lang->extension->available = '已下载';
|
||||
|
||||
$lang->extension->id = '编号';
|
||||
$lang->extension->name = '名称';
|
||||
$lang->extension->code = '插件代号';
|
||||
$lang->extension->version = '版本';
|
||||
$lang->extension->compatible = '适用版本';
|
||||
$lang->extension->latest = '<small>最新版本<strong><a href="%s" target="_blank" class="extension">%s</a></strong>,兼容禅道<a href="http://www.zentao.net/goto.php?item=latest" target="_blank"><strong>%s</strong></small>';
|
||||
$lang->extension->author = '作者';
|
||||
$lang->extension->license = '授权';
|
||||
$lang->extension->intro = '详情';
|
||||
$lang->extension->abstract = '简介';
|
||||
$lang->extension->site = '官网';
|
||||
$lang->extension->addedTime = '添加时间';
|
||||
$lang->extension->updatedTime = '更新时间';
|
||||
$lang->extension->downloads = '下载量';
|
||||
$lang->extension->public = '下载方式';
|
||||
$lang->extension->compatible = '兼容性';
|
||||
$lang->extension->grade = '评分';
|
||||
|
||||
$lang->extension->publicList[0] = '手工下载';
|
||||
$lang->extension->publicList[1] = '直接下载';
|
||||
|
||||
$lang->extension->compatibleList[0] = '未知';
|
||||
$lang->extension->compatibleList[1] = '兼容';
|
||||
|
||||
$lang->extension->byDownloads = '最多下载';
|
||||
$lang->extension->byAddedTime = '最新添加';
|
||||
$lang->extension->byUpdatedTime = '最近更新';
|
||||
$lang->extension->bySearch = '搜索';
|
||||
$lang->extension->byCategory = '分类浏览';
|
||||
|
||||
$lang->extension->installFailed = '%s失败,错误原因如下:';
|
||||
$lang->extension->installFinished = '恭喜您,插件顺利的%s成功!';
|
||||
$lang->extension->refreshPage = '刷新页面';
|
||||
$lang->extension->uninstallFinished = '插件已经成功卸载';
|
||||
$lang->extension->deactivateFinished = '插件已经成功禁用';
|
||||
$lang->extension->activateFinished = '插件已经成功激活';
|
||||
$lang->extension->eraseFinished = '插件已经成功清除';
|
||||
$lang->extension->unremovedFiles = '有一些文件或目录未能删除,需要手工删除';
|
||||
$lang->extension->executeCommands = '<h3>执行下面的命令来修正这些问题:</h3>';
|
||||
$lang->extension->successDownloadedPackage = '成功下载插件';
|
||||
$lang->extension->successCopiedFiles = '成功拷贝文件';
|
||||
$lang->extension->successInstallDB = '成功安装数据库';
|
||||
$lang->extension->viewInstalled = '查看已安装插件';
|
||||
$lang->extension->viewAvailable = '查看可安装插件';
|
||||
$lang->extension->viewDeactivated = '查看已禁用插件';
|
||||
|
||||
$lang->extension->upgradeExt = '升级';
|
||||
$lang->extension->installExt = '安装';
|
||||
$lang->extension->upgradeVersion = '(从%s升级到%s)';
|
||||
|
||||
$lang->extension->errorOccurs = '错误:';
|
||||
$lang->extension->errorGetModules = '从www.zentao.net获得插件分类失败。可能是因为网络方面的原因,请检查后重新刷新页面。';
|
||||
$lang->extension->errorGetExtensions = '从www.zentao.net获得插件失败。可能是因为网络方面的原因,您可以到<a href="http://www.zentao.net/extension/" target="_blank">www.zentao.net</a>手工下载插件,然后上传安装。';
|
||||
$lang->extension->errorDownloadPathNotFound = '插件下载存储路径<strong>%s</strong>不存在。<br />linux下面请执行命令:<strong>mkdir -p %s</strong>来修正。';
|
||||
$lang->extension->errorDownloadPathNotWritable = '插件下载存储路径<strong>%s</strong>不可写。<br />linux下面请执行命令:<strong>sudo chmod 777 %s</strong>来修正。';
|
||||
$lang->extension->errorPackageFileExists = '下载路径已经有一个名为的<strong>%s</strong>附件。<h3>重新%s,<a href="%s">请点击此链接</a></h3>';
|
||||
$lang->extension->errorDownloadFailed = '下载失败,请重新下载。如果多次重试还不行,请尝试手工下载,然后通过上传功能上传。';
|
||||
$lang->extension->errorMd5Checking = '下载文件不完整,请重新下载。如果多次重试还不行,请尝试手工下载,然后通过上传功能上传。';
|
||||
$lang->extension->errorExtracted = '包文件<strong> %s </strong>解压缩失败,可能不是一个有效的zip文件。错误信息如下:<br />%s';
|
||||
$lang->extension->errorCheckIncompatible = '该插件与禅道版本不兼容,%s后可能无法使用。。<h3>您可以选择 <a href="%s">强制%s</a> 或者 <a href="#" onclick=parent.location.href="%s">取消</a></h3>';
|
||||
$lang->extension->errorFileConflicted = '有以下文件冲突:<br />%s <h3>您可以选择 <a href="%s">覆盖</a> 或者 <a href="#" onclick=parent.location.href="%s">取消</a></h3>';
|
||||
$lang->extension->errorPackageNotFound = '包文件 <strong>%s </strong>没有找到,可能是因为自动下载失败。您可以尝试再次下载。';
|
||||
$lang->extension->errorTargetPathNotWritable = '目标路径 <strong>%s </strong>不可写。';
|
||||
$lang->extension->errorTargetPathNotExists = '目标路径 <strong>%s </strong>不存在。';
|
||||
$lang->extension->errorInstallDB = '执行数据库语句失败。错误信息如下:%s';
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user