Merge branch 'master' of github.com:easysoft/zentaopms

This commit is contained in:
xia0ta0
2013-11-07 17:21:21 +08:00
25 changed files with 217 additions and 38 deletions
+1
View File
@@ -0,0 +1 @@
欢迎访问<a href='http://www.zentao.net' target='_blank'>禅道项目管理软件</a>主站,获得最新动态和文档支持。
+1 -1
View File
@@ -1 +1 @@
5.1.stable
5.2.stable
+1 -1
View File
@@ -17,7 +17,7 @@ if(!function_exists('getWebRoot')){function getWebRoot(){}}
/* Basic settings. */
$config = new config();
$config->version = '5.1'; // The version of zentaopms. Don't change it.
$config->version = '5.2'; // The version of zentaopms. Don't change it.
$config->charset = 'UTF-8'; // The charset of zentaopms.
$config->cookieLife = time() + 2592000; // The cookie life time.
$config->timezone = 'Asia/Shanghai'; // The time zone setting, for more see http://www.php.net/manual/en/timezones.php
+122
View File
@@ -1,3 +1,125 @@
2013-11-03 5.2.stable
完成的功能:
1698 处理开源版5.1和专业版3.1的Bug
1709 增加手机和平板访问PC版的功能
1728 调整用例覆盖率的计算逻辑
1705 调整表格的间距
1706 处理字体图标的锯齿
1707 调整搜索表单的样式
1730 调整分解任务的界面
1731 调整“获取插件”的界面
1704 处理禅道的错误日志
路线图只查最近5年内
修复的BUG:
536 项目下拉列表搜索框可以搜索出没有权限的项目
532 【Bug管理】影响版本为空的时候提示语不够明显。建议:将提示语做成红色的,或者采用弹出3秒的方式提醒别人。
531 【Bug管理】在重现步骤里写了多个模板会导致在17寸显示里错位,在19寸显示器里错位。没有做到自适应!
528 【文档管理】文档管理的左边没有必要再默认的情况下全部展开,这样会导致右边出现很长的滚动条
521 查看延期bug会显示已经删除的bug
520 编辑bug的时候切换产品,计划不会跟随产品更新
516 5.1和pro3.1手机访问不能用
515 产品-计划-关联需求 左下角面包屑点击计划名称页面空白
514 5.0项目需求分解任务界面选择模块后,需求刷新后成空白需要重新选择
512 提BUG模块默认指派人员无效
508 pro3.0项目列表点击“剩”报错
507 搜索条件选择“或者”,会搜索全部的产品和项目
506 历史记录的view和diff弹窗失效
465 需求的编辑页面验收标准显示没有处理
修改错误提示信息框架,把实际的路径去掉。只有当本机调试的时候才显示真实的路径。不在一个网段的时候把路径模糊掉。
禁止使用IE兼容模式
复制一个BUG的时候,指派的人员也会变成了管理员,希望还是原来的指派对象。
手机登录的时候,如果没有gd库的时候要处理。文案中的登录地址要去掉sid
pms网站使用手机访问的时候,匿名登录时,查看任务详情的时候会有错误提示。
创建web应用时输入https://网址,系统会自动添加http://
首次更新“开发”任务时,如果直接点“更新工时”,需求阶段不会自动变化,工时更新保存后【任务实际开始日期】的值还是0000-00-00;但如果先点“开始”,需求阶段就会自动变化。
我的地盘首页,测试管理,点击由我创建的bug,出现错误。
2013-10-08 5.1
完成的需求:
1481 调整开源版本的界面
更换图标,使用字体显示图标。
调整页面样式
修复的Bug:
497 计划详情,已关联需求:按id排序不对
513 5.0版本由bug转化来的任务完成弹窗显示不正确
499 列表的checkbox不能用
231 如果action模块有model扩展,删除某一个记录的时候会有错
510 列表页面的checkbox连续点击无法取消还是选中
454 由bug转任务,完成任务是页面跳转问题。
495 4.1 4.2我的地盘空白
509 检查所有的列表页面的删除按钮是否在无权限的情况下还可以点击
504 产品计划列表页面,没有删除计划权限的用户可以点击删除按钮
498 用例执行(待办完成)之后点击colorbox的关闭没有刷新页面。
491 5.0.beta2后台自定义页面有错误
505 5.0经典蓝一级菜单样式有问题
460 解决webapp列表展开二次抖动问题。
511 游客无法搜索项目或者产品列
2013-09-03 5.0.stable
2013-08-27 5.0.beta2
修复的BUG:
484 3.0.beta1 创建bug切换产品后所有产品的模块都显示不出来
483 搜索过滤产品项目权限错误
482 bug,需求,任务的弹窗操作后,抄送给字段样式可以调整下
481 处理备注里面只有<br />的情况
480 项目需求列表页面移除之后没有刷新
479 【Bug新增】新增Bug的时候图片过大导致界面错位
478 【需求查询】没有勾选任何需求就点击批量编辑、批量关闭按钮没有提示信息
476 2.1创建编辑发布报错
475 【Bug管理】【用例管理】建议复制产品视图模块的时候可以将所有的产品模块一下子复制过来)
473 【Bug管理】开发解决问题解决建议使用默认值)
472 【Bug管理】开发点击“解决Bug”以后弹出的界面建议直接关闭
471 【新增BUG】配置了邮箱以后提交BUG,每次点击保存反应都很慢。
470 4.1需求更变后项目中的任务无更变提示了
469 3.0.beta1提bug点击模块维护显示有问题
468 项目中关联需求的搜索没有过滤草稿需求
467 任务点击开始操作的时候会自动更新任务的指派时间
465 需求的编辑页面验收标准显示没有处理
464 bug自定义字段后操作栏没有根据bug的状态判断是否可以进行操作
463 4.2.beta版本项目模块维护不能添加新的模块
461 需求批量关闭:如果都是已经关闭的需求,则会有问题
459 安装填写管理员时没有进行角色设定,进入禅道会报错。
457 搜索用例没有限制为当前的产品,会把所有产品中符合条件的用例都搜索出来
456 需求搜索会搜索出已经删除的需求
修复用例添加时候的问题
用例删除的跳转逻辑问题
2013-08-12 5.0.beta1
完成的需求:
1674 完成测试任务的自定义配置功能
1675 完成待办的自定义配置功能
1676 完成用户的自定义配置功能
1677 为配置页面增加“回复默认”功能
1679 修复四十五期项目产生的Bug
1666 在后台添加二级配置菜单
1667 确定后台配置下的菜单(三级菜单)
1668 确定配置菜单下三级菜单下的各个四级菜单
1669 设计配置数据表结构
1670 完成需求的自定义配置功能
1671 完成任务的自定义配置功能
1672 完成bug的自定义配置功能
1673 完成测试的自定义配置功能
1681 为自定义配置增加语言的选择。
1683 调整bug列表的按钮
1684 调整用例列表的按钮
1685 bug增加批量解决功能
1686 将changeAction方法放到my.full.js,改名为setFormAction
1687 调整需求列表的按钮
1688 调整任务列表的按钮
1689 为bug增加批量确认功能
修复的BUG:
466 查询符合某一条件的需求,选择其中的某一个关闭,点击下一个,又从第一个开始
修复创建版本时,关联Bug的批量操作错误,和action错误。
2013-8-5 4.3.beta
完成的功能:
+1 -1
View File
@@ -1593,7 +1593,7 @@ class router
$errorLog .= "when visiting <strong>" . $this->getURI() . "</strong>\n";
/* If the ip is pulic, hidden the full path of scripts. */
if(!defined('IN_SHELL') and !validater::checkIP($this->server->server_addr, 'private'))
if(!defined('IN_SHELL') and !($this->server->server_addr == '127.0.0.1' or filter_var($this->server->server_addr, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE) === false))
{
$errorLog = str_replace($this->getBasePath(), '', $errorLog);
}
+5 -2
View File
@@ -1,5 +1,8 @@
#steps {width:100%}
#task, #story, .text-1 {width: 85%}
#steps {width:99.6%}
.text-1 {width: 85%}
#task, #story{width: 85.4%;}
#mailto{width: 85.5%}
#keywords{width: 85.1%;}
.w-p100 {margin:0}
/* The build template setting. */
.button-c {padding:2px}
+1
View File
@@ -44,6 +44,7 @@ $lang->save = '保存';
$lang->confirm = '確認';
$lang->preview = '查看';
$lang->goback = '返回';
$lang->goPC = 'PC版';
$lang->go = 'GO';
$lang->more = '更多';
+1 -1
View File
@@ -63,7 +63,7 @@ EOT;
<td>
<form method='post'>
<table class='table-1'>
<caption><?echo $lang->custom->object[$module] . ' >> ' . $lang->custom->$module->fields[$field]?></caption>
<caption><?php echo $lang->custom->object[$module] . ' >> ' . $lang->custom->$module->fields[$field]?></caption>
<tr>
<th class='w-100px'><?php echo $lang->custom->key;?></th>
<th><?php echo $lang->custom->value;?></th>
+2 -1
View File
@@ -46,5 +46,6 @@ $lang->misc->zentao->service['install'] = '禪道安裝服務';
$lang->misc->zentao->service['fixissue'] = '禪道問題解決';
$lang->misc->zentao->service['servicemore']= '更多服務...';
$lang->misc->noGDLib = "請用手機瀏覽器直接訪問:%s";
$lang->misc->mobile = "手機訪問";
$lang->misc->noGDLib = "請用手機瀏覽器訪問:<strong>%s</strong>";
$lang->misc->copyright = "版權所有 &copy;2009-2013 <a href='http://www.cnezsoft.com' target='_blank'>青島易軟天創網絡科技有限公司</a>";
+8 -1
View File
@@ -609,7 +609,14 @@ class productModel extends model
foreach($stories as $key => $story)
{
$totalEstimate += $story->estimate;
$storyIdList[] = $story->id;
/* When the status is not closed or closedReason is done or postponed then add cases rate..*/
if(
$story->status != 'closed' or
($story->status == 'closed' and ($story->closedReason == 'done' or $story->closedReason == 'postponed'))
)
{
$storyIdList[] = $story->id;
}
}
$cases = $this->dao->select('DISTINCT story')->from(TABLE_CASE)->where('story')->in($storyIdList)->fetchAll();
+1
View File
@@ -0,0 +1 @@
#goal,#desc{width: 89.3%}
-8
View File
@@ -1,8 +0,0 @@
.icon-green-task-create {width: 22px;height: 18px; background:url(theme/default/images/main/zt-icons.png) 0px -582px;}
.icon-green-task-create:before{display: none;}
.icon-green-task-batchCreate {width: 22px;height: 18px; background:url(theme/default/images/main/zt-icons.png) -44px -582px;}
.icon-green-task-batchCreate:before {display: none;}
.icon-green-testcase-batchCreate {width: 22px;height: 18px; background:url(theme/default/images/main/zt-icons.png) -22px -582px;}
.icon-green-testcase-batchCreate:before{display: none;}
+1 -1
View File
@@ -1,4 +1,4 @@
.button-c {padding:2px}
#mailto {width:85%}
#mailto {width:90.5%}
#preview{display: inline-block; line-height: 24px;position: relative;top: -10px;+top:0;}
caption .f-right a{color:red}
+19 -14
View File
@@ -455,6 +455,7 @@ class taskModel extends model
$consumed = 0;
$left = $task->left;
$now = helper::now();
$this->loadModel('action');
foreach($estimates as $estimate)
{
@@ -468,25 +469,28 @@ class taskModel extends model
$actionID = $this->action->create('task', $taskID, 'RecordEstimate', $work, $estimate->consumed);
}
if($left == 0)
{
$task->status = 'done';
}
else if($task->status == 'wait')
{
$task->status = 'doing';
}
$data = new stdClass();
$data->consumed = $task->consumed + $consumed;
$data->left = $left;
$data->status = $task->status;
$data->lastEditedBy = $this->app->user->account;
$data->lastEditedDate = helper::now();
if(!$left)
$data->lastEditedDate = $now;
if($left == 0)
{
$task->status = 'done';
$data->status = $task->status;
$data->assignedTo = $task->openedBy;
$data->assignedDate = $now;
$data->finishedBy = $this->app->user->account;
$data->finishedDate = helper::now();
$data->finishedDate = $now;
}
else if($task->status == 'wait')
{
$task->status = 'doing';
$data->status = $task->status;
$data->assignedTo = $this->app->user->account;
$data->assignedDate = $now;
$data->realStarted = date('Y-m-d');
}
$this->dao->update(TABLE_TASK)->data($data)->where('id')->eq($taskID)->exec();
@@ -926,16 +930,17 @@ class taskModel extends model
}
if($left == 0) $task->status = 'done';
$now = helper::now();
$data = new stdClass();
$data->consumed = $consumed;
$data->left = $left;
$data->status = $task->status;
$data->lastEditedBy = $this->app->user->account;
$data->lastEditedDate = helper::now();
$data->lastEditedDate = $now;
if(!$left)
{
$data->finishedBy = $this->app->user->account;
$data->finishedDate = helper::now();
$data->finishedDate = $now;
}
$this->dao->update(TABLE_TASK)->data($data)->where('id')->eq($task->id)->exec();
+1
View File
@@ -76,3 +76,4 @@ $lang->upgrade->fromVersions['4_3_beta'] = '4.3.beta';
$lang->upgrade->fromVersions['5_0_beta1'] = '5.0.beta1';
$lang->upgrade->fromVersions['5_0_beta2'] = '5.0.beta2';
$lang->upgrade->fromVersions['5_0'] = '5.0';
$lang->upgrade->fromVersions['5_1'] = '5.1';
+1
View File
@@ -76,3 +76,4 @@ $lang->upgrade->fromVersions['4_3_beta'] = '4.3.beta';
$lang->upgrade->fromVersions['5_0_beta1'] = '5.0.beta1';
$lang->upgrade->fromVersions['5_0_beta2'] = '5.0.beta2';
$lang->upgrade->fromVersions['5_0'] = '5.0';
$lang->upgrade->fromVersions['5_1'] = '5.1';
+1
View File
@@ -76,3 +76,4 @@ $lang->upgrade->fromVersions['4_3_beta'] = '4.3.beta';
$lang->upgrade->fromVersions['5_0_beta1'] = '5.0.beta1';
$lang->upgrade->fromVersions['5_0_beta2'] = '5.0.beta2';
$lang->upgrade->fromVersions['5_0'] = '5.0';
$lang->upgrade->fromVersions['5_1'] = '5.1';
+3
View File
@@ -96,6 +96,7 @@ class upgradeModel extends model
case '5_0_beta1':
case '5_0_beta2':
case '5_0':
case '5_1':
default: if(!$this->isError()) $this->setting->updateVersion($this->config->version);
}
@@ -150,6 +151,8 @@ class upgradeModel extends model
case '4_3_beta': $confirmContent .= file_get_contents($this->getUpgradeFile('4.3'));
case '5_0_beta1':
case '5_0_beta2':
case '5_0':
case '5_1':
}
return str_replace('zt_', $this->config->db->prefix, $confirmContent);
}
+1 -1
View File
@@ -69,7 +69,7 @@ $lang->user->asGuest = "遊客訪問";
$lang->user->goback = "返回前一頁";
$lang->user->allUsers = '全部用戶';
$lang->user->deleted = '(已刪除)';
$lang->user->select = '--請選擇用戶--';
$lang->user->select = '請選擇用戶';
$lang->user->profile = '檔案';
$lang->user->project = '項目';
+19 -5
View File
@@ -22,7 +22,7 @@ a {text-decoration:none;}
/*-----------------------ICONS-----------------------------------*/
/* icons use fontawesome */
.link-icon{color: #2E6DAD;display: inline-block;}
.link-icon{color: #498cd0;display: inline-block;}
.link-icon:hover{color:#000;text-shadow:1px 1px 3px rgba(0,0,0,0.25);}
i[class^="icon-"],i[class*=" icon-"],.link-icon i[class^="icon-"],.link-icon i[class*=" icon-"]{display: inline-block;min-width: 13px;min-height: 13px;}
.outer td i[class^="icon-"],.outer td i[class*=" icon-"]{font-size: 18px;margin-right: 4px;}
@@ -117,9 +117,6 @@ i[class^="icon-"],i[class*=" icon-"],.link-icon i[class^="icon-"],.link-icon i[c
i[class^="icon-"].disabled,i[class*=" icon-"].disabled,i[class^="icon-"].disabled:hover,i[class*=" icon-"].disabled:hover,i[class^="icon-"].disabled:before,i[class*=" icon-"].disabled:before{color: #ccc;}
.icon-green-testcase-createCase,.icon-green-story-createCase{width: 22px; height: 18px; background:url(images/main/zt-icons.png) -22px -582px;}
.icon-gray-testcase-createCase,.icon-gray-story-createCase{width: 22px; height: 18px; background:url(images/main/zt-icons.png) -22px -604px;}
.change-show,.change-hide,.log-desc,.log-asc,.diff-all,.diff-sort{display: inline-block; font-family: FontAwesome;border: 1px solid #555;color: #555; font-size: 13px;font-weight: lighter; width: 14px;height: 13px;line-height: 13px;text-align: center;}
.change-show:hover,.change-hide:hover,.log-desc:hover,.log-asc:hover,.diff-all:hover,.diff-sort:hover{background-color: #333;color: #fff}
.change-show:before{content: "\f067";}
@@ -129,6 +126,21 @@ i[class^="icon-"].disabled,i[class*=" icon-"].disabled,i[class^="icon-"].disable
.diff-all:before{content: "\f0b2";}
.diff-sort:before{content: "\f036";}
/* zenicon */
@font-face {font-family: 'zenicon';src:url('../fontawesome/font/zenicon.eot');src:url('../fontawesome/font/zenicon.eot?#iefix') format('embedded-opentype'),url('../fontawesome/font/zenicon.ttf') format('truetype'),url('../fontawesome/font/zenicon.woff') format('woff'),url('../fontawesome/font/zenicon.svg#zenicon') format('svg');font-weight: normal;font-style: normal;}
.icon-green-testcase-createCase:before,.icon-green-story-createCase:before,.icon-green-task-create:before,
.icon-green-task-batchCreate:before,.icon-green-testcase-batchCreate:before,.icon-gray-testcase-createCase:before,
.icon-insert-template:before,.icon-stack:before,.icon-share2:before,.icon-usecases:before,.icon-tasks:before{font-family: 'zenicon';speak: none;font-style: normal;font-weight: normal;font-variant: normal;text-transform: none;line-height: 1;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;}
.icon-insert-template:before {content: "\e768";}
.icon-stack:before,
.icon-green-task-batchCreate:before {content: "\e769";}
.icon-share2:before {content: "\e76a";}
.icon-green-testcase-batchCreate:before,
.icon-gray-testcase-createCase:before,
.icon-usecases:before,.icon-green-testcase-createCase,.icon-green-story-createCase {content: "\e600";}
.icon-tasks:before,.icon-green-task-create:before {content: "\e601";}
/*-----------------------BUTTONS -----------------------------------*/
.btn,a.btn,.button-s,.button-c,.button-b,#reversechecker,#allchecker,#goto{padding: 4px 15px;background-color: #f8f8f8;-webkit-transition: border-color .3s;-moz-transition: border-color .3s;-o-transition: border-color .3s;transition: border-color .3s;-webkit-border-radius: 2px;-moz-border-radius: 2px;border-radius: 2px;border: 1px solid #dcdcdc;margin: 0 10px 0 0;position: relative;display: inline-block;*display: inline;*zoom: 1;cursor: pointer;text-shadow: 0 1px 0 #fff;text-decoration: none;line-height: 1.5;font-size: 14px;color: #444;transition-delay: 0,0;transition-duration: .5s,.5s;transition-property: all;}
.btn-primary,a.btn-primary {background-color: #114F8E;border: 1px solid #036;text-shadow: none;color: #fff;}
@@ -144,6 +156,8 @@ i[class^="icon-"].disabled,i[class*=" icon-"].disabled,i[class^="icon-"].disable
.groupButton #moreAction{border: 1px solid #DCDCDC;}
.groupButton #moreAction:hover{border-color: #999;}
.button-d{filter: alpha(opacity=50);-moz-opacity:0.5;opacity: 0.5;cursor: not-allowed;}
.button-s{background-color: #d0dee3;border-color: #a3bbc4}
.button-s:hover{background-color: #b1dff0}
/*---------------------------Form Controls---------------------------*/
select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],
@@ -237,7 +251,7 @@ select{padding: 4px 1px;}
/*-----------------------FORM SETTING----------------------------*/
.text-1 {width: 90%}
td>.text-1{padding-left:2px;padding-right: 2px}
td>.text-1,td>.area-1{padding-left:2px;padding-right: 2px}
.text-2 {width: 120px}
.text-3 {width: 240px}
select.text-3 {width: 250px}
+12 -1
View File
@@ -168,4 +168,15 @@
.diff-all{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0b2;');}
.diff-sort{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf036;');}
.icon-green-user-unlock{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf09C;');}
.icon-gray-user-unlock{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf09C;');}
.icon-gray-user-unlock{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf09C;');}
.icon-insert-template:before {*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe768;');}
.icon-stack:before{*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe769;');}
.icon-green-task-batchCreate:before {*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe769;');}
.icon-share2:before {*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe76a;');}
.icon-green-testcase-batchCreate:before{*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe600;');}
.icon-gray-testcase-createCase:before{*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe600;');}
.icon-usecases:before{*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe600;');}
.icon-green-testcase-createCase{*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe600;');}
.icon-green-story-createCase {*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe600;');}
.icon-tasks:before{*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe601;');}
.icon-green-task-create:before {*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe601;');}
Binary file not shown.
+15
View File
@@ -0,0 +1,15 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Generated by IcoMoon</metadata>
<defs>
<font id="zenicon" horiz-adv-x="1024">
<font-face units-per-em="1024" ascent="960" descent="-64" />
<missing-glyph horiz-adv-x="1024" />
<glyph unicode="&#x20;" d="" horiz-adv-x="512" />
<glyph unicode="&#xe600;" d="M781.198 3.537c-129.722 0-231.354 69.004-231.354 157.066 0 45.995 27.706 86.797 72.64 115.248-75.123 21.383-136.044 53.718-175.107 93.074-34.547-56.789-116.174-95.762-213.674-95.762-129.722 0-231.354 69.027-231.354 157.111s101.61 157.111 231.354 157.111c86.707 0 160.859-30.822 200.51-77.585 38.612 47.034 107.255 85.488 194.323 109.332-41.502 28.247-66.837 67.469-66.837 111.455 0 88.084 101.632 157.111 231.354 157.111s231.331-69.004 231.331-157.111-101.61-157.111-231.331-157.111c-9.958 0-19.757 0.406-29.354 1.197-154.605-14.203-264.276-70.54-290.401-128.073 26.848-58.934 141.35-116.58 301.961-128.954 15.693 0.158 31.522-0.542 46.56-2.281 5.871-0.113 11.764-0.181 17.748-0.181v-2.348c100.594-17.138 173.007-77.878 173.007-152.256-0.023-88.062-101.655-157.043-231.377-157.043zM773.724 249.884c-92.42-2.348-156.14-48.118-156.14-89.281 0-42.247 67.198-89.326 163.614-89.326s163.614 47.079 163.614 89.326c0 36.873-51.098 77.404-128.096 87.159-14.564 0.361-28.88 1.084-42.992 2.123zM233.68 519.646c-96.416 0-163.614-47.079-163.614-89.371s67.198-89.371 163.614-89.371 163.614 47.102 163.614 89.371-67.198 89.371-163.614 89.371zM793.030 819.959c-96.439 0-163.614-47.079-163.614-89.371 0-37.889 54.011-79.662 134.667-87.904 24.454 2.077 49.676 3.161 75.485 3.161v-0.79c70.833 12.058 117.077 50.444 117.077 85.533-0.023 42.27-67.198 89.371-163.614 89.371z" />
<glyph unicode="&#xe601;" d="M1023.21 505.082h-363.56v363.582h363.582v-363.582zM727.39 572.822h228.102v228.102h-228.102v-228.102zM1023.21-37.288h-363.56v363.582h363.582v-363.582zM727.39 30.452h228.102v228.102h-228.102v-228.102zM366.54 247.129h-363.56v363.56h363.582v-363.56zM70.72 314.869h228.102v228.080h-228.102v-228.080zM672.008 744.401l43.028-52.322-351.867-289.365-43.028 52.322 351.867 289.365zM364.173 454.198l351.864-313.548-45.082-50.591-351.864 313.548 45.082 50.591z" />
<glyph unicode="&#xe768;" d="M384 768h128v-64h-128zM576 768h128v-64h-128zM896 768v-256h-192v64h128v128h-64v64zM320 576h128v-64h-128zM512 576h128v-64h-128zM192 704v-128h64v-64h-128v256h192v-64zM384 384h128v-64h-128zM576 384h128v-64h-128zM896 384v-256h-192v64h128v128h-64v64zM320 192h128v-64h-128zM512 192h128v-64h-128zM192 320v-128h64v-64h-128v256h192v-64zM960 896h-896v-896h896v896zM1024 960v0-1024h-1024v1024h1024z" />
<glyph unicode="&#xe769;" d="M1024 640l-512 256-512-256 512-256 512 256zM512 811.030l342.058-171.030-342.058-171.030-342.058 171.030 342.058 171.030zM921.444 499.278l102.556-51.278-512-256-512 256 102.556 51.278 409.444-204.722zM921.444 307.278l102.556-51.278-512-256-512 256 102.556 51.278 409.444-204.722z" />
<glyph unicode="&#xe76a;" d="M864 256c-45.16 0-85.92-18.738-115.012-48.83l-431.004 215.502c1.314 8.252 2.016 16.706 2.016 25.328s-0.702 17.076-2.016 25.326l431.004 215.502c29.092-30.090 69.852-48.828 115.012-48.828 88.366 0 160 71.634 160 160s-71.634 160-160 160-160-71.634-160-160c0-8.622 0.704-17.076 2.016-25.326l-431.004-215.504c-29.092 30.090-69.852 48.83-115.012 48.83-88.366 0-160-71.636-160-160 0-88.368 71.634-160 160-160 45.16 0 85.92 18.738 115.012 48.828l431.004-215.502c-1.312-8.25-2.016-16.704-2.016-25.326 0-88.368 71.634-160 160-160s160 71.632 160 160c0 88.364-71.634 160-160 160z" />
</font></defs></svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.
Binary file not shown.