Merge branch 'master' of https://gitlab.zcorp.cc/easycorp/zentaopms
This commit is contained in:
@@ -1,22 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* 禅道API的my地盘资源类
|
||||
* 版本V1
|
||||
*
|
||||
* The bug entry point of zentaopms
|
||||
* Version 1
|
||||
*/
|
||||
class myEntry extends entry
|
||||
{
|
||||
public function get()
|
||||
{
|
||||
$info = $this->loadModel('my')->getInfo();
|
||||
$info->products = $this->loadModel('my')->getProducts();
|
||||
$info->projects = $this->loadModel('my')->getProjects();
|
||||
$info->joinProjectCount = count($info->projects);
|
||||
$info->dynamic = $this->loadModel('my')->getDynamic();
|
||||
|
||||
if(!$info) return $this->sendError(400, $info->message);
|
||||
$this->send(200, $info);
|
||||
}
|
||||
}
|
||||
@@ -10,6 +10,10 @@ class userEntry extends Entry
|
||||
{
|
||||
public function get($userID = 0)
|
||||
{
|
||||
/* Get my info defaultly. */
|
||||
if(!$userID) return $this->getInfo();
|
||||
|
||||
/* Get user by id. */
|
||||
$control = $this->loadController('user', 'profile');
|
||||
$control->profile($userID);
|
||||
|
||||
@@ -20,6 +24,25 @@ class userEntry extends Entry
|
||||
$this->send(200, $this->format($user, 'last:time,locked:time'));
|
||||
}
|
||||
|
||||
private function getInfo()
|
||||
{
|
||||
$info = $this->loadModel('my')->getInfo();
|
||||
|
||||
$products = $this->my->getProducts();
|
||||
$info->product = new stdclass();
|
||||
$info->product->total = count($products);
|
||||
$info->product->products = $products;
|
||||
|
||||
$projects = $this->my->getProjects();
|
||||
$info->project = new stdclass();
|
||||
$info->project->total = count($projects);
|
||||
$info->project->projects = $projects;
|
||||
|
||||
$info->actions = $this->my->getActions();
|
||||
|
||||
$this->send(200, $info);
|
||||
}
|
||||
|
||||
public function put($userID)
|
||||
{
|
||||
$oldUser = $this->loadModel('user')->getByID($userID, 'id');
|
||||
|
||||
+1
-1
@@ -33,7 +33,7 @@ $routes['/tasks/:id/finish'] = 'taskFinish';
|
||||
|
||||
$routes['/users'] = 'users';
|
||||
$routes['/users/:id'] = 'user';
|
||||
$routes['/my'] = 'my';
|
||||
$routes['/user'] = 'user';
|
||||
|
||||
$routes['/programs'] = 'programs';
|
||||
$routes['/programs/:id'] = 'program';
|
||||
|
||||
@@ -447,7 +447,7 @@ CREATE TABLE `zt_history` (
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `action` (`action`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
CREATE TABLE `zt_pipeline` (
|
||||
CREATE TABLE `zt_jenkins` (
|
||||
`id` smallint(8) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(50) NOT NULL,
|
||||
`url` varchar(255) DEFAULT NULL,
|
||||
|
||||
@@ -1006,7 +1006,8 @@ class actionModel extends model
|
||||
if($object->type == 'project') $objectProject[$object->id] = $object->id;
|
||||
}
|
||||
}
|
||||
elseif($objectType == 'stakeholder'){
|
||||
elseif($objectType == 'stakeholder')
|
||||
{
|
||||
$objectName = $this->dao->select("t1.id, t2.realname")->from($table)->alias('t1')
|
||||
->leftJoin(TABLE_USER)->alias('t2')->on("t1.{$field} = t2.account")
|
||||
->where('t1.id')->in($objectIds)
|
||||
@@ -1055,7 +1056,8 @@ class actionModel extends model
|
||||
$objectType = strtolower($action->objectType);
|
||||
$action->originalDate = $action->date;
|
||||
$action->date = date(DT_MONTHTIME2, strtotime($action->date));
|
||||
$action->actionLabel = isset($this->lang->action->label->$actionType) ? $this->lang->action->label->$actionType : (isset($this->lang->$objectType->$actionType) ? $this->lang->$objectType->$actionType : $action->action);
|
||||
$action->actionLabel = isset($this->lang->$objectType->$actionType) ? $this->lang->$objectType->$actionType : $action->action;
|
||||
$action->actionLabel = isset($this->lang->action->label->$actionType) ? $this->lang->action->label->$actionType : $action->actionLabel;
|
||||
$action->objectLabel = $objectType;
|
||||
if(isset($this->lang->action->label->$objectType))
|
||||
{
|
||||
|
||||
@@ -2177,7 +2177,7 @@ EOD;
|
||||
if($result)
|
||||
{
|
||||
if($timestamp <= $entry->calledTime) $this->response('CALLED_TIME');
|
||||
$this->loadModel('entry')->updateTime($entry->code, $timestamp);
|
||||
$this->loadModel('entry')->updateCalledTime($entry->code, $timestamp);
|
||||
unset($_GET['time']);
|
||||
return $result;
|
||||
}
|
||||
|
||||
@@ -5,8 +5,7 @@ $.initSidebar();
|
||||
<?php if($extView = $this->getExtViewFile(__FILE__)){include $extView; return helper::cd();}?>
|
||||
|
||||
<iframe frameborder='0' name='hiddenwin' id='hiddenwin' scrolling='no' class='debugwin hidden'></iframe>
|
||||
|
||||
<?php if($onlybody != 'yes'):?>
|
||||
<?php if($onlybody != 'yes' and $app->viewType != 'xhtml'):?>
|
||||
</main><?php /* end '#wrap' in 'header.html.php'. */ ?>
|
||||
<div id="noticeBox"><?php echo $this->loadModel('score')->getNotice(); ?></div>
|
||||
<script>
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
<tbody>
|
||||
<?php foreach($latestEditedDocs as $doc):?>
|
||||
<tr>
|
||||
<td class="c-name"><?php echo html::a($this->createLink('doc', 'view', "docID={$doc->id}", '', true), $doc->title, '', "data-toggle='modal' data-type='iframe' data-width='90%'")?></a></td>
|
||||
<td class="c-name"><?php echo html::a($this->createLink('doc', 'view', "docID={$doc->id}", '', true), $doc->title, '', "data-toggle='modal' data-type='iframe' data-width='90%' title='{$doc->title}'")?></a></td>
|
||||
<td class="c-num text-right"><?php echo $doc->fileSize ? $doc->fileSize : '-';?></td>
|
||||
<td class="c-user"><?php echo zget($users, $doc->addedBy);?></td>
|
||||
<td class="c-datetime"><?php echo helper::isZeroDate($doc->editedDate) ? formatTime($doc->addedDate, 'Y-m-d') : formatTime($doc->editedDate, 'Y-m-d');?></td>
|
||||
@@ -142,7 +142,7 @@
|
||||
<tbody>
|
||||
<?php foreach($myDocs as $doc):?>
|
||||
<tr>
|
||||
<td class="c-name"><?php echo html::a($this->createLink('doc', 'view', "docID={$doc->id}", '', true), $doc->title, '', "data-toggle='modal' data-type='iframe' data-width='90%'")?></a></td>
|
||||
<td class="c-name"><?php echo html::a($this->createLink('doc', 'view', "docID={$doc->id}", '', true), $doc->title, '', "data-toggle='modal' data-type='iframe' data-width='90%' title='{$doc->title}'")?></a></td>
|
||||
<td class="c-num text-right"><?php echo $doc->fileSize ? $doc->fileSize : '-';?></td>
|
||||
<td class="c-user"><?php echo zget($users, $doc->addedBy);?></td>
|
||||
<td class="c-datetime"><?php echo formatTime($doc->editedDate) ? formatTime($doc->editedDate, 'Y-m-d') : formatTime($doc->addedDate, 'y-m-d');?></td>
|
||||
|
||||
@@ -126,7 +126,7 @@ class entry extends control
|
||||
|
||||
$entry = $this->entry->getByID($id);
|
||||
$this->view->title = $this->lang->entry->log . $this->lang->colon . $entry->name;
|
||||
$this->view->logs = $this->entry->getLogList($id, $orderBy, $pager);
|
||||
$this->view->logs = $this->entry->getLogs($id, $orderBy, $pager);
|
||||
$this->view->position[] = html::a(inlink('browse'), $this->lang->entry->api);
|
||||
$this->view->position[] = html::a(inlink('browse'), $this->lang->entry->common);
|
||||
$this->view->position[] = $this->lang->entry->log;
|
||||
|
||||
@@ -69,7 +69,7 @@ class entryModel extends model
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getLogList($id, $orderBy = 'date_desc', $pager = null)
|
||||
public function getLogs($id, $orderBy = 'date_desc', $pager = null)
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_LOG)
|
||||
->where('objectType')->eq('entry')
|
||||
@@ -149,7 +149,7 @@ class entryModel extends model
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function updateTime($code, $time)
|
||||
public function updateCalledTime($code, $time)
|
||||
{
|
||||
$this->dao->update(TABLE_ENTRY)->set('calledTime')->eq($time)->where('code')->eq($code)->exec();
|
||||
return !dao::isError();
|
||||
|
||||
@@ -506,7 +506,7 @@ class executionModel extends model
|
||||
->checkIF($execution->begin != '', 'begin', 'date')
|
||||
->checkIF($execution->end != '', 'end', 'date')
|
||||
->checkIF($execution->end != '', 'end', 'gt', $execution->begin)
|
||||
->check('code', 'unique', "id!=$executionID and code!='' and deleted='0'")
|
||||
->check('code', 'unique', "id != $executionID and code != '' and deleted = '0'")
|
||||
->where('id')->eq($executionID)
|
||||
->limit(1)
|
||||
->exec();
|
||||
|
||||
+61
-59
@@ -58,7 +58,7 @@ class myModel extends model
|
||||
}
|
||||
|
||||
/**
|
||||
* My charged products.
|
||||
* Get my charged products.
|
||||
*
|
||||
* @access public
|
||||
* @return array
|
||||
@@ -114,11 +114,12 @@ class myModel extends model
|
||||
if(isset($stories[$product->id])) $product->stories = $stories[$product->id];
|
||||
if(isset($executions[$product->id])) $product->executions = $executions[$product->id];
|
||||
}
|
||||
|
||||
return array_values($products);
|
||||
}
|
||||
|
||||
/**
|
||||
* All projects.
|
||||
* Get my projects.
|
||||
*
|
||||
* @access public
|
||||
* @return array
|
||||
@@ -130,21 +131,21 @@ class myModel extends model
|
||||
{
|
||||
if($project->status == 'doing')
|
||||
{
|
||||
$workhour = $this->loadModel('project')->getWorkhour($project->id);
|
||||
$workhour = $this->project->getWorkhour($project->id);
|
||||
$projects[$key]->progress = ($workhour->totalConsumed + $workhour->totalLeft) ? floor($workhour->totalConsumed / ($workhour->totalConsumed + $workhour->totalLeft) * 1000) / 1000 * 100 : 0;
|
||||
}
|
||||
}
|
||||
|
||||
return array_values($projects);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Dynamic.
|
||||
* Get latest actions.
|
||||
*
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getDynamic()
|
||||
public function getActions()
|
||||
{
|
||||
$actions = $this->loadModel('action')->getDynamic('all', 'today', 'date_desc');
|
||||
$users = $this->loadModel('user')->getPairs('noletter');
|
||||
@@ -174,12 +175,12 @@ class myModel extends model
|
||||
if(common::hasPriv('task', 'view'))
|
||||
{
|
||||
$tasks = $this->dao->select('*')->from(TABLE_TASK)
|
||||
->where('assignedTo')->eq($this->app->user->account)
|
||||
->andWhere('deleted')->eq('0')
|
||||
->andWhere('status')->ne('closed')
|
||||
->orderBy('id_desc')
|
||||
->limit(3)
|
||||
->fetchAll();
|
||||
->where('assignedTo')->eq($this->app->user->account)
|
||||
->andWhere('deleted')->eq('0')
|
||||
->andWhere('status')->ne('closed')
|
||||
->orderBy('id_desc')
|
||||
->limit(3)
|
||||
->fetchAll();
|
||||
$info->task->dynamic = $tasks;
|
||||
}
|
||||
|
||||
@@ -190,12 +191,12 @@ class myModel extends model
|
||||
if(common::hasPriv('story', 'view'))
|
||||
{
|
||||
$stories = $this->dao->select('*')->from(TABLE_STORY)
|
||||
->where('assignedTo')->eq($this->app->user->account)
|
||||
->andWhere('deleted')->eq('0')
|
||||
->andWhere('status')->ne('closed')
|
||||
->orderBy('id_desc')
|
||||
->limit(3)
|
||||
->fetchAll();
|
||||
->where('assignedTo')->eq($this->app->user->account)
|
||||
->andWhere('deleted')->eq('0')
|
||||
->andWhere('status')->ne('closed')
|
||||
->orderBy('id_desc')
|
||||
->limit(3)
|
||||
->fetchAll();
|
||||
$info->story->dynamic = $stories;
|
||||
}
|
||||
|
||||
@@ -207,30 +208,30 @@ class myModel extends model
|
||||
{
|
||||
$this->app->loadLang('bug');
|
||||
$bugs = $this->dao->select('*')->from(TABLE_BUG)
|
||||
->where('assignedTo')->eq($this->app->user->account)
|
||||
->andWhere('deleted')->eq('0')
|
||||
->andWhere('status')->ne('closed')
|
||||
->orderBy('id_desc')
|
||||
->limit(3)
|
||||
->fetchAll();
|
||||
->where('assignedTo')->eq($this->app->user->account)
|
||||
->andWhere('deleted')->eq('0')
|
||||
->andWhere('status')->ne('closed')
|
||||
->orderBy('id_desc')
|
||||
->limit(3)
|
||||
->fetchAll();
|
||||
$info->bug->dynamic = $bugs;
|
||||
}
|
||||
|
||||
/* My todos. */
|
||||
$info->todo = new stdclass();
|
||||
$info->todo->total = (int) $this->dao->select('count(*) AS count')->from(TABLE_TODO)->where('assignedTo')->eq($this->app->user->account)->andWhere('status')->ne('closed')->andWhere('deleted')->eq(0)->fetch('count');
|
||||
$info->todo->dynamic = new stdclass();
|
||||
$info->todo->dynamic = array();
|
||||
if(common::hasPriv('todo', 'view'))
|
||||
{
|
||||
$this->app->loadClass('date');
|
||||
$todos = $this->dao->select('*')->from(TABLE_TODO)
|
||||
->where('assignedTo')->eq($this->app->user->account)
|
||||
->andWhere('cycle')->eq(0)
|
||||
->andWhere('deleted')->eq(0)
|
||||
->andWhere('status')->eq('wait')
|
||||
->orderBy('`date` desc')
|
||||
->limit(3)
|
||||
->fetchAll();
|
||||
->where('assignedTo')->eq($this->app->user->account)
|
||||
->andWhere('cycle')->eq(0)
|
||||
->andWhere('deleted')->eq(0)
|
||||
->andWhere('status')->eq('wait')
|
||||
->orderBy('`date` desc')
|
||||
->limit(3)
|
||||
->fetchAll();
|
||||
foreach($todos as $key => $todo)
|
||||
{
|
||||
$todo->begin = date::formatTime($todo->begin);
|
||||
@@ -242,16 +243,16 @@ class myModel extends model
|
||||
/* My risks. */
|
||||
$info->risk = new stdclass();
|
||||
$info->risk->total = 0;
|
||||
$info->risk->dynamic = new stdclass();
|
||||
$info->risk->dynamic = array();
|
||||
if(common::hasPriv('risk', 'view') and isset($this->config->maxVersion))
|
||||
{
|
||||
$risks = $this->dao->select('*')->from(TABLE_RISK)
|
||||
->where('assignedTo')->eq($this->app->user->account)
|
||||
->andWhere('deleted')->eq('0')
|
||||
->andWhere('status')->ne('closed')
|
||||
->orderBy('id_desc')
|
||||
->limit(3)
|
||||
->fetchAll();
|
||||
->where('assignedTo')->eq($this->app->user->account)
|
||||
->andWhere('deleted')->eq('0')
|
||||
->andWhere('status')->ne('closed')
|
||||
->orderBy('id_desc')
|
||||
->limit(3)
|
||||
->fetchAll();
|
||||
$info->risk->total = (int) $this->dao->select('count(*) AS count')->from(TABLE_RISK)->where('assignedTo')->eq($this->app->user->account)->andWhere('status')->ne('closed')->andWhere('deleted')->eq(0)->fetch('count');
|
||||
$info->risk->dynamic = $risks;
|
||||
}
|
||||
@@ -259,23 +260,23 @@ class myModel extends model
|
||||
/* My meetings. */
|
||||
$info->meeting = new stdclass();
|
||||
$info->meeting->total = 0;
|
||||
$info->meeting->dynamic = new stdclass();
|
||||
$info->meeting->dynamic = array();
|
||||
if(common::hasPriv('meeting', 'view') and isset($this->config->maxVersion))
|
||||
{
|
||||
$today = helper::today();
|
||||
$now = date('H:i:s', strtotime(helper::now()));
|
||||
|
||||
$meetings = $this->dao->select('*')->from(TABLE_MEETING)
|
||||
->Where('deleted')->eq('0')
|
||||
->andWhere('(date')->gt($today)
|
||||
->orWhere('(begin')->gt($now)
|
||||
->andWhere('date')->eq($today)
|
||||
->markRight(2)
|
||||
->andwhere('(host')->eq($this->app->user->account)
|
||||
->orWhere('participant')->in($this->app->user->account)
|
||||
->markRight(1)
|
||||
->orderBy('id_desc')
|
||||
->fetchAll();
|
||||
->Where('deleted')->eq('0')
|
||||
->andWhere('(date')->gt($today)
|
||||
->orWhere('(begin')->gt($now)
|
||||
->andWhere('date')->eq($today)
|
||||
->markRight(2)
|
||||
->andwhere('(host')->eq($this->app->user->account)
|
||||
->orWhere('participant')->in($this->app->user->account)
|
||||
->markRight(1)
|
||||
->orderBy('id_desc')
|
||||
->fetchAll();
|
||||
$info->meeting->total = count($meetings);
|
||||
$info->meeting->dynamic = array_slice($meetings, 0, 3);
|
||||
}
|
||||
@@ -283,22 +284,23 @@ class myModel extends model
|
||||
/* My issues. */
|
||||
$info->issue = new stdclass();
|
||||
$info->issue->total = 0;
|
||||
$info->issue->dynamic = new stdclass();
|
||||
$info->issue->dynamic = array();
|
||||
if(common::hasPriv('issue', 'view') and isset($this->config->maxVersion))
|
||||
{
|
||||
$issues = $this->dao->select('*')->from(TABLE_ISSUE)
|
||||
->where('assignedTo')->eq($this->app->user->account)
|
||||
->andWhere('deleted')->eq('0')
|
||||
->andWhere('status')->ne('closed')
|
||||
->orderBy('id_desc')
|
||||
->limit(3)
|
||||
->fetchAll();
|
||||
->where('assignedTo')->eq($this->app->user->account)
|
||||
->andWhere('deleted')->eq('0')
|
||||
->andWhere('status')->ne('closed')
|
||||
->orderBy('id_desc')
|
||||
->limit(3)
|
||||
->fetchAll();
|
||||
$info->issue->total = (int) $this->dao->select('count(*) AS count')->from(TABLE_ISSUE)->where('assignedTo')->eq($this->app->user->account)->andWhere('status')->ne('closed')->andWhere('deleted')->eq(0)->fetch('count');
|
||||
$info->issue->dynamic = $issues;
|
||||
}
|
||||
|
||||
/* Some count. */
|
||||
$info->createdDocs = $this->dao->select('count(*) AS count')->from(TABLE_DOC)->where('addedBy')->eq($this->app->user->account)->andWhere('deleted')->eq('0')->fetch('count');
|
||||
/* Get count of docs created by me. */
|
||||
$info->doc = new stdclass();
|
||||
$info->doc->total = $this->dao->select('count(*) AS count')->from(TABLE_DOC)->where('addedBy')->eq($this->app->user->account)->andWhere('deleted')->eq('0')->fetch('count');
|
||||
|
||||
return $info;
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
<?php $star = strpos($doc->collector, ',' . $this->app->user->account . ',') !== false ? 'icon-star text-yellow' : 'icon-star-empty';?>
|
||||
<?php $collectTitle = strpos($doc->collector, ',' . $this->app->user->account . ',') !== false ? $lang->doc->cancelCollection : $lang->doc->collect;?>
|
||||
<tr>
|
||||
<td class="c-name"><?php echo html::a($this->createLink('doc', 'view', "docID=$doc->id&version=0&from={$lang->navGroup->doc}", '', true), "<i class='icon icon-file-text text-muted'></i> " . $doc->title, '', "title={$doc->title} class='iframe' data-width='90%'");?></td>
|
||||
<td class="c-name"><?php echo html::a($this->createLink('doc', 'view', "docID=$doc->id&version=0&from={$lang->navGroup->doc}", '', true), "<i class='icon icon-file-text text-muted'></i> " . $doc->title, '', "title='{$doc->title}' class='iframe' data-width='90%'");?></td>
|
||||
<td class='c-name'>
|
||||
<?php if(!empty($doc->objectType)):?>
|
||||
<?php echo $lang->{$doc->objectType}->common . ' : ';?>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#createActionMenu .dropdown-menu {width: 100%;}
|
||||
#productStoryForm table tbody tr td {overflow: hidden; text-overflow: ellipsis; white-space: nowrap;}
|
||||
#productStoryForm table tbody tr td {overflow: hidden; white-space: nowrap;}
|
||||
|
||||
.dropdown-menu.with-search {padding: 0; min-width: 150px; overflow: hidden; max-height: 302px;}
|
||||
.dropdown-menu > .menu-search .input-group {width: 100%;}
|
||||
|
||||
@@ -34,74 +34,74 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php $i = 0; $memberCount = 0;?>
|
||||
<?php $i = 0;?>
|
||||
<?php foreach($currentMembers as $member):?>
|
||||
<?php if(!isset($users[$member->account])) continue;?>
|
||||
<?php unset($users[$member->account]);?>
|
||||
<tr>
|
||||
<td><input type='text' name='realnames[]' id='account<?php echo $i;?>' value='<?php echo $member->realname;?>' readonly class='form-control' /></td>
|
||||
<td><input type='text' name='roles[]' id='role<?php echo $i;?>' value='<?php echo $member->role;?>' class='form-control' /></td>
|
||||
<td><input type='text' name='days[] ' id='days<?php echo $i;?>' value='<?php echo $member->days;?>' class='form-control' /></td>
|
||||
<td><?php echo html::input("realnames[$i]", $member->realname, "class='form-control' readonly");?></td>
|
||||
<td><?php echo html::input("roles[$i]", $member->role, "class='form-control'");?></td>
|
||||
<td><?php echo html::input("days[$i]", $member->days, "class='form-control'");?></td>
|
||||
<td>
|
||||
<input type='text' name='hours[]' id='hours<?php echo $i;?>' value='<?php echo $member->hours;?>' class='form-control' />
|
||||
<input type='hidden' name='accounts[]' value='<?php echo $member->account;?>' />
|
||||
<?php echo html::input("hours[$i]", $member->hours, "class='form-control'");?>
|
||||
<?php echo html::hidden("accounts[$i]", $member->account);?>
|
||||
</td>
|
||||
<td><?php echo html::radio("limited[$i]", $lang->team->limitedList, $member->limited);?></td>
|
||||
<td class='c-actions text-center'>
|
||||
<a href='javascript:;' onclick='addItem(this)' class='btn btn-link'><i class='icon-plus'></i></a>
|
||||
<a href='javascript:;' onclick='deleteItem(this)' class='btn btn-link'><i class='icon icon-close'></i></a>
|
||||
<?php echo html::a('javascript:;', "<i class='icon-plus'></i>", '', "onclick='addItem(this)' class='btn btn-link'");?>
|
||||
<?php echo html::a('javascript:;', "<i class='icon icon-close'></i>", '', "onclick='deleteItem(this)' class='btn btn-link'");?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php $i ++; $memberCount ++;?>
|
||||
<?php $i ++;?>
|
||||
<?php endforeach;?>
|
||||
|
||||
<?php foreach($deptUsers as $deptAccount => $userName):?>
|
||||
<?php if(!isset($users[$deptAccount])) continue;?>
|
||||
<tr class='addedItem'>
|
||||
<td><?php echo html::select("accounts[]", $users, $deptAccount, "class='form-control chosen' onchange='setRole(this.value, $i)'");?></td>
|
||||
<td><input type='text' name='roles[]' id='role<?php echo $i;?>' class='form-control' value='<?php echo $roles[$deptAccount]?>'/></td>
|
||||
<td><input type='text' name='days[]' id='days<?php echo $i;?>' class='form-control' value='<?php echo $project->days?>'/></td>
|
||||
<td><input type='text' name='hours[]' id='hours<?php echo $i;?>' class='form-control' value='<?php echo $config->execution->defaultWorkhours?>' /></td>
|
||||
<td><?php echo html::select("accounts[$i]", $users, $deptAccount, "class='form-control chosen' onchange='setRole(this.value, $i)'");?></td>
|
||||
<td><?php echo html::input("roles[$i]", $roles[$deptAccount], "class='form-control'");?></td>
|
||||
<td><?php echo html::input("days[$i]", $project->days, "class='form-control'");?></td>
|
||||
<td><?php echo html::input("hours[$i]", $config->execution->defaultWorkhours, "class='form-control'");?></td>
|
||||
<td><?php echo html::radio("limited[$i]", $lang->team->limitedList, 'no');?></td>
|
||||
<td class='c-actions text-center'>
|
||||
<a href='javascript:;' onclick='addItem(this)' class='btn btn-link'><i class='icon-plus'></i></a>
|
||||
<a href='javascript:;' onclick='deleteItem(this)' class='btn btn-link'><i class='icon icon-close'></i></a>
|
||||
<?php echo html::a('javascript:;', "<i class='icon-plus'></i>", '', "onclick='addItem(this)' class='btn btn-link'");?>
|
||||
<?php echo html::a('javascript:;', "<i class='icon icon-close'></i>", '', "onclick='deleteItem(this)' class='btn btn-link'");?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php unset($users[$deptAccount]);?>
|
||||
<?php $i ++; $memberCount ++;?>
|
||||
<?php $i ++;?>
|
||||
<?php endforeach;?>
|
||||
|
||||
<?php foreach($members2Import as $member2Import):?>
|
||||
<?php if(!isset($users[$member2Import->account])) continue;?>
|
||||
<tr class='addedItem'>
|
||||
<td><?php echo html::select("accounts[]", $users, $member2Import->account, "class='form-control chosen' onchange='setRole(this.value, $i)'");?></td>
|
||||
<td><input type='text' name='roles[]' id='role<?php echo $i;?>' class='form-control' value='<?php echo $member2Import->role;?>' /></td>
|
||||
<td><input type='text' name='days[]' id='days<?php echo $i;?>' class='form-control' value='<?php echo $project->days?>'/></td>
|
||||
<td><input type='text' name='hours[]' id='hours<?php echo $i;?>' class='form-control' value='<?php echo $member2Import->hours;?>' /></td>
|
||||
<td><?php echo html::select("accounts[$i]", $users, $member2Import->account, "class='form-control chosen' onchange='setRole(this.value, $i)'");?></td>
|
||||
<td><?php echo html::input("roles[$i]", $member2Import->role, "class='form-control'");?></td>
|
||||
<td><?php echo html::input("days[$i]", $project->days, "class='form-control'");?></td>
|
||||
<td><?php echo html::input("hours[$i]", $member2Import->hours, "class='form-control'");?></td>
|
||||
<td><?php echo html::radio("limited[$i]", $lang->team->limitedList, 'no');?></td>
|
||||
<td class='c-actions text-center'>
|
||||
<a href='javascript:;' onclick='addItem(this)' class='btn btn-link'><i class='icon-plus'></i></a>
|
||||
<a href='javascript:;' onclick='deleteItem(this)' class='btn btn-link'><i class='icon icon-close'></i></a>
|
||||
<?php echo html::a('javascript:;', "<i class='icon-plus'></i>", '', "onclick='addItem(this)' class='btn btn-link'");?>
|
||||
<?php echo html::a('javascript:;', "<i class='icon icon-close'></i>", '', "onclick='deleteItem(this)' class='btn btn-link'");?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php unset($users[$member2Import->account]);?>
|
||||
<?php $i ++; $memberCount ++;?>
|
||||
<?php $i ++;?>
|
||||
<?php endforeach;?>
|
||||
|
||||
<?php for($j = 0; $j < 5; $j ++):?>
|
||||
<tr class='addedItem'>
|
||||
<td><?php echo html::select("accounts[]", $users, '', "class='form-control chosen' onchange='setRole(this.value, $i)'");?></td>
|
||||
<td><input type='text' name='roles[]' id='role<?php echo ($i);?>' class='form-control' /></td>
|
||||
<td><input type='text' name='days[]' id='days<?php echo ($i);?>' class='form-control' value='<?php echo $project->days?>'/></td>
|
||||
<td><input type='text' name='hours[]' id='hours<?php echo ($i);?>' class='form-control' value='<?php echo $config->execution->defaultWorkhours?>' /></td>
|
||||
<td><?php echo html::select("accounts[$i]", $users, '', "class='form-control chosen' onchange='setRole(this.value, $i)'");?></td>
|
||||
<td><?php echo html::input("roles[$i]", '', "class='form-control'");?></td>
|
||||
<td><?php echo html::input("days[$i]", $project->days, "class='form-control'");?></td>
|
||||
<td><?php echo html::input("hours[$i]", $config->execution->defaultWorkhours, "class='form-control'");?></td>
|
||||
<td><?php echo html::radio("limited[$i]", $lang->team->limitedList, 'no');?></td>
|
||||
<td class='c-actions text-center'>
|
||||
<a href='javascript:;' onclick='addItem(this)' class='btn btn-link'><i class='icon-plus'></i></a>
|
||||
<a href='javascript:;' onclick='deleteItem(this)' class='btn btn-link'><i class='icon icon-close'></i></a>
|
||||
<?php echo html::a('javascript:;', "<i class='icon-plus'></i>", '', "onclick='addItem(this)' class='btn btn-link'");?>
|
||||
<?php echo html::a('javascript:;', "<i class='icon icon-close'></i>", '', "onclick='deleteItem(this)' class='btn btn-link'");?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php $i ++; $memberCount ++;?>
|
||||
<?php $i ++;?>
|
||||
<?php endfor;?>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
@@ -122,13 +122,13 @@
|
||||
<table class='hidden'>
|
||||
<tr id='addItem' class='hidden'>
|
||||
<td><?php echo html::select("accounts[]", $users, '', "class='form-control' onchange='setRole(this.value, $i)'");?></td>
|
||||
<td><input type='text' name='roles[]' id='role<?php echo ($i);?>' class='form-control' /></td>
|
||||
<td><input type='text' name='days[]' id='days<?php echo ($i);?>' class='form-control' value='<?php echo $project->days?>'/></td>
|
||||
<td><input type='text' name='hours[]' id='hours<?php echo ($i);?>' class='form-control' value='<?php echo $config->execution->defaultWorkhours?>' /></td>
|
||||
<td><?php echo html::input("roles[$i]", '', "class='form-control'");?></td>
|
||||
<td><?php echo html::input("days[$i]", $project->days, "class='form-control'");?></td>
|
||||
<td><?php echo html::input("hours[$i]", $config->execution->defaultWorkhours, "class='form-control'");?></td>
|
||||
<td><?php echo html::radio("limited[$i]", $lang->team->limitedList, 'no');?></td>
|
||||
<td class='c-actions text-center'>
|
||||
<a href='javascript:;' onclick='addItem(this)' class='btn btn-link'><i class='icon-plus'></i></a>
|
||||
<a href='javascript:;' onclick='deleteItem(this)' class='btn btn-link'><i class='icon icon-close'></i></a>
|
||||
<?php echo html::a('javascript:;', "<i class='icon-plus'></i>", '', "onclick='addItem(this)' class='btn btn-link'");?>
|
||||
<?php echo html::a('javascript:;', "<i class='icon icon-close'></i>", '', "onclick='deleteItem(this)' class='btn btn-link'");?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -116,9 +116,9 @@ class projectrelease extends control
|
||||
}
|
||||
|
||||
/* Get the builds that can select. */
|
||||
$builds = $this->build->getProjectBuildPairs($projectID, 0, 0, 'notrunk|withbranch');
|
||||
$releaseBuilds = $this->projectrelease->getReleaseBuilds($projectID);
|
||||
foreach($releaseBuilds as $build) unset($builds[$build]);
|
||||
$builds = $this->build->getProjectBuildPairs($projectID, 0, 0, 'notrunk|withbranch');
|
||||
$releasedBuilds = $this->projectrelease->getReleasedBuilds($projectID);
|
||||
foreach($releasedBuilds as $build) unset($builds[$build]);
|
||||
unset($builds['trunk']);
|
||||
|
||||
$this->project->setMenu($projectID);
|
||||
@@ -170,11 +170,11 @@ class projectrelease extends control
|
||||
$build = $this->build->getById($release->build);
|
||||
|
||||
/* Get the builds that can select. */
|
||||
$builds = $this->build->getProjectBuildPairs($release->project, $release->product, $release->branch, 'notrunk|withbranch');
|
||||
$releaseBuilds = $this->projectrelease->getReleaseBuilds($release->project);
|
||||
foreach($releaseBuilds as $releaseBuild)
|
||||
$builds = $this->build->getProjectBuildPairs($release->project, $release->product, $release->branch, 'notrunk|withbranch');
|
||||
$releasedBuilds = $this->projectrelease->getReleasedBuilds($release->project);
|
||||
foreach($releasedBuilds as $releasedBuild)
|
||||
{
|
||||
if($releaseBuild != $build->id) unset($builds[$releaseBuild]);
|
||||
if($releasedBuild != $build->id) unset($builds[$releasedBuild]);
|
||||
}
|
||||
unset($builds['trunk']);
|
||||
|
||||
|
||||
@@ -79,13 +79,13 @@ class projectreleaseModel extends model
|
||||
}
|
||||
|
||||
/**
|
||||
* Get release builds from project.
|
||||
* Get released builds from project.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getReleaseBuilds($projectID)
|
||||
public function getReleasedBuilds($projectID)
|
||||
{
|
||||
$releases = $this->dao->select('build')->from(TABLE_RELEASE)
|
||||
->where('deleted')->eq(0)
|
||||
|
||||
@@ -36,9 +36,6 @@ class projectStory extends control
|
||||
*/
|
||||
public function story($projectID = 0, $productID = 0, $branch = 0, $browseType = '', $param = 0, $storyType = 'story', $orderBy = '', $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
{
|
||||
$this->session->set('storyList', $this->app->getURI(true), 'product');
|
||||
$this->session->set('executionList', $this->app->getURI(true), 'execution');
|
||||
|
||||
$this->products = $this->loadModel('product')->getProductPairsByProject($projectID);
|
||||
if(empty($this->products)) die($this->locate($this->createLink('product', 'showErrorNone', 'moduleName=project&activeMenu=story&projectID=' . $projectID)));
|
||||
echo $this->fetch('product', 'browse', "productID=$productID&branch=$branch&browseType=$browseType¶m=$param&storyType=$storyType&orderBy=$orderBy&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID&projectID=$projectID");
|
||||
@@ -117,30 +114,27 @@ class projectStory extends control
|
||||
*/
|
||||
public function batchUnlinkStory($projectID, $storyIdList = '')
|
||||
{
|
||||
$storyIdList = trim($storyIdList, ',');
|
||||
$stories = explode(',', $storyIdList);
|
||||
$storyIdList = array_filter(explode(',', $storyIdList));
|
||||
$executionStories = $this->projectstory->getExecutionStories($projectID, $storyIdList);
|
||||
$html = '';
|
||||
|
||||
if(!empty($executionStories))
|
||||
foreach($executionStories as $story)
|
||||
{
|
||||
foreach($executionStories as $story)
|
||||
{
|
||||
$storyLink = $this->createLink('story', 'view', "storyID={$story->id}");
|
||||
$executionLink = $this->createLink('execution', 'story', "executionID={$story->executionID}");
|
||||
$html .=<<<ETO
|
||||
$storyLink = $this->createLink('story', 'view', "storyID={$story->id}");
|
||||
$executionLink = $this->createLink('execution', 'story', "executionID={$story->executionID}");
|
||||
$html .=<<<ETO
|
||||
<tr>
|
||||
<td class='c-name w-500px'><a href="$storyLink" title={$story->title} style='color:#5988e2'>{$story->title}</a></td>
|
||||
<td class='c-name w-200px'><a href="$executionLink" title={$story->execution} style='color:#32579c'>{$story->execution}</a></td>
|
||||
</tr>
|
||||
ETO;
|
||||
}
|
||||
}
|
||||
|
||||
foreach($stories as $storyID)
|
||||
$this->loadModel('execution');
|
||||
foreach($storyIdList as $storyID)
|
||||
{
|
||||
if(isset($executionStories[$storyID])) continue;
|
||||
$this->loadModel('execution')->unlinkStory($projectID, $storyID);
|
||||
$this->execution->unlinkStory($projectID, $storyID);
|
||||
}
|
||||
|
||||
if(!dao::isError()) $this->loadModel('score')->create('ajax', 'batchOther');
|
||||
|
||||
@@ -34,13 +34,15 @@ class projectstoryModel extends model
|
||||
* Get the stories for execution linked.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @param string $storyIdList
|
||||
* @param array $storyIdList
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getExecutionStories($projectID, $storyIdList = '')
|
||||
public function getExecutionStories($projectID, $storyIdList = array())
|
||||
{
|
||||
$stories = array();
|
||||
$stories = array();
|
||||
$storyIdList = (array)$storyIdList;
|
||||
|
||||
if(empty($storyIdList)) return $stories;
|
||||
|
||||
$stories = $this->dao->select('t2.id as id, t2.title as title, t3.id as executionID, t3.name as execution')->from(TABLE_PROJECTSTORY)->alias('t1')
|
||||
|
||||
@@ -75,9 +75,9 @@ class release extends control
|
||||
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inlink('view', "releaseID=$releaseID")));
|
||||
}
|
||||
|
||||
$builds = $this->loadModel('build')->getProductBuildPairs($productID, $branch, 'notrunk|withbranch', false);
|
||||
$releaseBuilds = $this->release->getReleaseBuilds($productID, $branch);
|
||||
foreach($releaseBuilds as $build) unset($builds[$build]);
|
||||
$builds = $this->loadModel('build')->getProductBuildPairs($productID, $branch, 'notrunk|withbranch', false);
|
||||
$releasedBuilds = $this->release->getReleasedBuilds($productID, $branch);
|
||||
foreach($releasedBuilds as $build) unset($builds[$build]);
|
||||
unset($builds['trunk']);
|
||||
|
||||
$this->commonAction($productID, $branch);
|
||||
@@ -124,11 +124,11 @@ class release extends control
|
||||
$this->commonAction($release->product, $release->branch);
|
||||
$build = $this->build->getById($release->build);
|
||||
|
||||
$builds = $this->loadModel('build')->getProductBuildPairs($release->product, $release->branch, 'notrunk|withbranch', false);
|
||||
$releaseBuilds = $this->release->getReleaseBuilds($release->product, $release->branch);
|
||||
foreach($releaseBuilds as $releaseBuild)
|
||||
$builds = $this->loadModel('build')->getProductBuildPairs($release->product, $release->branch, 'notrunk|withbranch', false);
|
||||
$releasedBuilds = $this->release->getReleasedBuilds($release->product, $release->branch);
|
||||
foreach($releasedBuilds as $releasedBuild)
|
||||
{
|
||||
if($releaseBuild != $build->id) unset($builds[$releaseBuild]);
|
||||
if($releasedBuild != $build->id) unset($builds[$releasedBuild]);
|
||||
}
|
||||
unset($builds['trunk']);
|
||||
|
||||
|
||||
@@ -83,14 +83,14 @@ class releaseModel extends model
|
||||
}
|
||||
|
||||
/**
|
||||
* Get release builds from product.
|
||||
* Get released builds from product.
|
||||
*
|
||||
* @param int $productID
|
||||
* @param int $branch
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getReleaseBuilds($productID, $branch = 0)
|
||||
public function getReleasedBuilds($productID, $branch = 0)
|
||||
{
|
||||
$releases = $this->dao->select('build')->from(TABLE_RELEASE)
|
||||
->where('deleted')->eq(0)
|
||||
|
||||
@@ -205,8 +205,12 @@ class repo extends control
|
||||
{
|
||||
if($confirm == 'no') die(js::confirm($this->lang->repo->notice->delete, $this->repo->createLink('delete', "repoID=$repoID&objectID=$objectID&confirm=yes")));
|
||||
|
||||
$error = '';
|
||||
$relationID = $this->dao->select('id')->from(TABLE_RELATION)->where('extra')->eq($repoID)->fetch();
|
||||
$error = '';
|
||||
$relationID = $this->dao->select('id')->from(TABLE_RELATION)
|
||||
->where('extra')->eq($repoID)
|
||||
->andWhere('AType')->eq('design')
|
||||
->fetch();
|
||||
|
||||
if($relationID) $error .= $this->lang->repo->error->deleted;
|
||||
|
||||
$jobs = $this->dao->select('*')->from(TABLE_JOB)->where('repo')->eq($repoID)->andWhere('deleted')->eq('0')->fetchAll();
|
||||
|
||||
@@ -947,6 +947,8 @@ class searchModel extends model
|
||||
{
|
||||
$words = explode(' ', trim($keywords, ' '));
|
||||
$markedWords = array();
|
||||
$leftMark = '|0000';
|
||||
$rightMark = '0000|';
|
||||
|
||||
foreach($words as $key => $word)
|
||||
{
|
||||
@@ -962,10 +964,11 @@ class searchModel extends model
|
||||
{
|
||||
$words[$key] = strlen($word) == 5 ? str_replace('_', '', $word) : $word;
|
||||
}
|
||||
$markedWords[] = "<span class='text-danger'>" . $this->decode($word) . "</span > ";
|
||||
$markedWords[] = $leftMark . $this->decode($word) . $rightMark;
|
||||
}
|
||||
|
||||
$content = str_replace($words, $markedWords, $content . ' ');
|
||||
$content = str_replace(array($leftMark, $rightMark), array("<span class='text-danger'>", "</span > "), $content);
|
||||
$content = str_replace("</span > <span class='text-danger'>", '', $content);
|
||||
$content = str_replace("</span >", '</span>', $content);
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
Binary file not shown.
@@ -83,7 +83,7 @@
|
||||
<glyph unicode="" glyph-name="color" d="M512-227.536c-282.759 0-511.98 229.221-511.98 511.98s229.221 511.98 511.98 511.98c282.759 0 508.252-204.169 511.98-447.983 1.318-86.219-30.006-212.303-192.409-275.415-69.232-26.904-186.27-1.378-234.428-25.237-64.809-32.11-47.245-111.882-22.099-133.338 43.832-37.4 17.103-141.988-63.044-141.988zM749.952 342.969c0-53.017 42.979-95.996 95.996-95.996s95.996 42.979 95.996 95.996c0 53.017-42.979 95.996-95.996 95.996s-95.996-42.979-95.996-95.996zM246.317 300.233c23.242 47.652 3.452 105.122-44.198 128.363s-105.122 3.452-128.363-44.198c-23.242-47.652-3.452-105.122 44.198-128.363s105.122-3.452 128.363 44.198zM380.748 471.568c51.658 11.927 83.868 63.472 71.941 115.13s-63.472 83.868-115.13 71.941c-51.658-11.927-83.868-63.472-71.941-115.13s63.472-83.868 115.13-71.941zM611.036 497.827c41.203-33.365 101.651-27.011 135.015 14.19s27.011 101.651-14.19 135.015c-41.203 33.365-101.651 27.011-135.015-14.19s-27.011-101.651 14.19-135.015z" />
|
||||
<glyph unicode="" glyph-name="paper-clip" d="M453.734-121.983l429.193 429.193c82.479 82.479 82.479 216.090 0 298.57s-216.090 82.479-298.57 0l-466.514-466.514c-51.503-51.503-51.503-135.102 0-186.605s135.102-51.503 186.605 0l391.873 391.873c20.526 20.526 20.526 54.116 0 74.642s-54.116 20.526-74.642 0l-354.55-354.55-55.981 55.981 354.55 354.55c51.503 51.503 135.102 51.503 186.605 0s51.503-135.102 0-186.605l-391.873-391.873c-82.479-82.479-216.090-82.479-298.57 0s-82.479 216.090 0 298.57l466.514 466.514c113.456 113.456 297.076 113.456 410.533 0s113.456-297.076 0-410.533l-429.193-429.193-55.981 55.981z" />
|
||||
<glyph unicode="" glyph-name="arrow-right" d="M849.601 267.375c4.266 8.534 4.266 21.332 0 34.134-4.266 4.266-4.266 8.534-8.534 12.798l-298.667 298.667c-17.069 17.069-42.666 17.069-59.732 0s-17.069-42.666 0-59.732l226.133-226.133h-494.934c-25.602 0-42.666-17.069-42.666-42.666s17.069-42.666 42.666-42.666h494.934l-226.133-226.133c-17.069-17.069-17.069-42.666 0-59.732 8.534-8.534 21.332-12.798 29.867-12.798s21.332 4.266 29.867 12.798l298.667 298.667c4.266 4.266 8.534 8.534 8.534 12.798z" />
|
||||
<glyph unicode="" glyph-name="back" d="M160.311-170.157c-0.23-0.002-0.461-0.003-0.692-0.003-37.104 0-67.175 30.073-67.175 67.177 0 37.097 30.073 67.175 67.175 67.175 2.813 0 5.585-0.173 8.307-0.508h462.609c111.3 0 201.527 90.226 201.527 201.527s-90.226 201.527-201.527 201.527h-470.224v134.343h469.777c185.319 0 335.556-150.433 335.556-336 0-185.564-150.234-336-335.556-336h-469.777v0.763zM82.125 484.904l293.273 251.415c5.634 4.828 14.116 4.18 18.944-1.456 2.786-3.25 3.858-7.628 2.884-11.799l-67.463-289.161 67.463-289.161c1.689-7.225-2.807-14.452-10.030-16.137-4.169-0.971-8.549 0.1-11.799 2.884l-293.273 251.415c-28.169 24.148-31.426 66.553-7.278 94.722 2.235 2.61 4.67 5.044 7.278 7.278h0.002z" />
|
||||
<glyph unicode="" glyph-name="back" d="M300.686 720.36c12.534-13.805 11.502-35.154-2.298-47.685l-121.189-110.039h436.075c187.398 0 337.58-160.388 337.58-354.461s-150.184-354.461-337.58-354.461h-371.339c-18.642 0-33.759 15.114-33.759 33.759s15.114 33.759 33.759 33.759h371.339c146.814 0 270.066 126.778 270.066 286.944s-123.25 286.944-270.066 286.944h-436.075l121.189-110.042c13.805-12.533 14.832-33.882 2.298-47.682-12.534-13.805-33.882-14.834-47.685-2.298l-157.188 142.725c-30.222 26.91-30.222 75.201 0.001 102.113l157.187 142.727c13.805 12.534 35.154 11.502 47.685-2.298z" />
|
||||
<glyph unicode="" glyph-name="chat, message" d="M512 1.686l-224.594-174.669c-22.332-17.345-54.497-13.302-71.842 9.031-6.973 8.979-10.76 20.022-10.764 31.391v134.247h-102.4c-56.554 0-102.4 45.846-102.4 102.4 0 0 0 0 0 0v546.15c0 56.554 45.846 102.4 102.4 102.4h819.2c56.554 0 102.4-45.846 102.4-102.4v-546.15c0-56.554-45.846-102.4-102.4-102.4h-409.601zM273.050-97.626l197.010 153.209c12.003 9.309 26.751 14.404 41.94 14.404h409.6c18.822 0.027 34.074 15.279 34.101 34.101v546.15c0 18.841-15.26 34.123-34.101 34.149h-819.2c-18.86 0-34.149-15.289-34.149-34.149 0 0 0 0 0 0v-546.15c0-18.815 15.286-34.101 34.149-34.101h102.4c37.727 0 68.25-30.573 68.25-68.3v-99.314zM716.8 325.987v0c-28.277 0-51.2 22.923-51.2 51.2s22.923 51.2 51.2 51.2c0 0 0 0 0 0v0c28.277 0 51.2-22.923 51.2-51.2s-22.923-51.2-51.2-51.2v0zM512 325.987v0c-28.277 0-51.2 22.923-51.2 51.2s22.923 51.2 51.2 51.2c0 0 0 0 0 0v0c28.277 0 51.2-22.923 51.2-51.2s-22.923-51.2-51.2-51.2v0zM307.199 325.987v0c-28.277 0-51.2 22.923-51.2 51.2s22.923 51.2 51.2 51.2c0 0 0 0 0 0v0c28.277 0 51.2-22.923 51.2-51.2s-22.923-51.2-51.2-51.2v0z" />
|
||||
<glyph unicode="" glyph-name="person" d="M723.15 247.068c115.4 0 208.952-93.512 208.952-208.868v0-105.532c0-57.070-46.282-103.336-103.376-103.336v0h-633.452c-57.094 0-103.376 46.264-103.376 103.336v0 105.532c0 115.353 93.55 208.868 208.952 208.868v0zM723.15 181.108h-422.302c-78.958 0-142.967-63.982-142.967-142.909v0-105.532c0-20.643 16.741-37.376 37.392-37.376v0h633.452c20.65 0 37.392 16.734 37.392 37.376v0 105.532c0 78.926-64.008 142.909-142.967 142.909v0zM512 739.556c115.4 0 208.952-93.512 208.952-208.868s-93.55-208.868-208.952-208.868c-115.4 0-208.952 93.512-208.952 208.868s93.55 208.868 208.952 208.868zM512 673.597c-78.958 0-142.967-63.982-142.967-142.909s64.008-142.909 142.967-142.909c78.959 0 142.967 63.982 142.967 142.909s-64.008 142.909-142.967 142.909z" />
|
||||
<glyph unicode="" glyph-name="folder-account" d="M85.333-56.895c0 15.709-12.736 28.444-28.446 28.444h28.446v-28.444zM85.333-28.449v682.671h288.302l80.842-113.778h484.189v-42.997h85.333v71.441c0 31.419-25.47 56.889-56.889 56.889h-468.584l-63.833 89.839c-10.67 15.018-27.952 23.939-46.374 23.939h-331.43c-31.419 0-56.889-25.47-56.889-56.889v-739.561c0-31.419 25.47-56.889 56.889-56.889l355.669 0.006-0.001 85.333-327.223-0.004zM85.333 654.222v28.444c0-15.709-12.736-28.444-28.444-28.444h28.444zM388.319 654.222c-9.211 0-17.852 4.46-23.188 11.969l8.504-11.969h14.683zM967.111 540.444c-15.709 0-28.444 12.736-28.444 28.444v-28.444h28.444zM938.667 568.888c0-15.709 12.736-28.444 28.444-28.444h-28.444v28.444zM938.667 497.447h85.333v71.441c0 31.419-25.47 56.889-56.889 56.889h-468.584l-63.833 89.839c-10.67 15.018-27.952 23.939-46.374 23.939h-331.43c-31.419 0-56.889-25.47-56.889-56.889v-739.561c0-31.419 25.47-56.889 56.889-56.889l355.669 0.006-0.001 85.333-327.223-0.004v682.671h288.302l80.842-113.778h484.189v-42.997zM388.319 654.222c-9.211 0-17.852 4.46-23.188 11.969l8.504-11.969h14.683zM56.889 654.222c15.709 0 28.444 12.736 28.444 28.444v-28.444h-28.444zM56.888-28.449c15.711 0 28.446-12.736 28.446-28.444v28.444h-28.446zM1023.318-75.202c0.448-2.122 0.682-4.322 0.682-6.577 0-17.673-14.456-32-32.288-32-0.022 0-0.043 0-0.066 0-0.011 0-0.023 0-0.034 0-196.601 0-345.434 0-446.5 0-0.098 0-0.196 0.001-0.291 0.004-0.177-0.003-0.354-0.004-0.532-0.004-17.832 0-32.288 14.327-32.288 32 0 1.13 0.059 2.246 0.174 3.344-0.016 0.392 0.010 0.823 0.078 1.298 13.262 91.708 75.569 167.727 159.737 201.118-35.96 28.129-59.042 71.712-59.042 120.64 0 84.831 69.388 153.6 154.981 153.6s154.981-68.769 154.981-153.6c0-48.927-23.082-92.511-59.042-120.64 83.576-33.156 145.597-108.341 159.45-199.183zM981.333 455.111c23.564 0 42.667 19.102 42.667 42.667s-19.102 42.667-42.667 42.667c-23.564 0-42.667-19.102-42.667-42.667s19.102-42.667 42.667-42.667zM412.444-113.778c23.564 0 42.667 19.102 42.667 42.667s-19.102 42.667-42.667 42.667c-23.564 0-42.667-19.102-42.667-42.667s19.102-42.667 42.667-42.667z" />
|
||||
|
||||
|
Before Width: | Height: | Size: 189 KiB After Width: | Height: | Size: 189 KiB |
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user