精华内容
下载资源
问答
  • Docker-撰写zentao练习部署 zentao网站提供了一个Docker部署映像,但是该映像是一个软件包,并且数据库没有单独部署。 此处提供了docker-compose方法,该方法将数据库和PHP分为两个容器。 还添加了AdMiner容器,以使...
  • 禅道部署,zentao

    2018-05-03 16:03:52
    禅道项目管理软件,项目名称zentao,可以监控任务,项目管理,测试管理
  • Zentao的Docker映像 自动为禅道构建docker镜像,包括开源版和专业版。 DockerHub: ://hub.docker.com/r/idoop/zentao/ 办事处支持: : 标签 公开版 12.5.3 , latest 12.0 , 12.0.1 , 12.3 , 12.3.2 , ...
  • Zentao.rar

    2020-04-30 21:30:43
    用于软件测试的一个软件,很方面,保留一下,之前上课软件老师分享的资源,可以记录一下,以后从事软件测试方向,也许可以用得上。
  • ONOFFOFFICE Docker 介绍 | 该存储库是由支持的Cloud Native解决方案,用于安装并自动预配置所需的项目,用户只需要在Linux上运行命令。 它简化了复杂的安装和初始化过程。 系统要求 以下是建议的最低要求: ...
  • zentao.sql

    2019-07-16 10:51:36
    禅道数据库备份。sql文件。
  • zentao禅道

    2017-08-09 22:39:37
    禅道
  • ZenTao是适用于应用程序开发项目的开源Scrum工具,其功能包括积压管理✓Sprint和任务✓Bug跟踪✓Scrum✓Waterfall✓路线图✓Burndown✓看板✓SaaS✓自托管✓
  • zentao_report - 副本.zip

    2020-03-26 15:17:01
    禅道报表统计详细说明:https://www.cnblogs.com/drewgg/p/11792150.html
  • Docker部署禅道zentao

    2020-09-02 00:24:23
    Docker部署禅道zentao一、Docker部署禅道zentao(官方版)二、Docker部署禅道zentao(简易版) 一、Docker部署禅道zentao(官方版) 一、环境准备 运行环境需成功部署Docker服务,推荐使用Docker 18版本以上,对主机环境...

    一、Docker部署禅道zentao(官方版)

    一、环境准备
    运行环境需成功部署Docker服务,推荐使用Docker 18版本以上,对主机环境没有要求。
    可通过命令查看Docker版本。

    [root@ZhongHao ~]#  docker -v
    


    二、下载禅道镜像
    目前支持在线下载和离线导入两种部署禅道镜像的方式,可根据自己环境进行选择。

    1、在线下载
    禅道镜像已放于Docker Hub上,地址为: https://hub.docker.com/r/easysoft/zentao/tags
    可根据所需版本拉取对应版本的镜像,默认latest为禅道开源最新版本。

    sudo docker pull [镜像名]:[镜像标签]
    

    例如拉取禅道开源版12.3.3版本命令如下:

    sudo docker pull easysoft/zentao:12.3.3
    

    在这里插入图片描述
    禅道版本和镜像tag对应关系如下:

    版本标签
    开源版以数字开头,如:12.3.3
    专业版以pro开头,如:pro8.8.3
    企业版以biz开头,如:biz3.7.2

    2、离线导入
    禅道版本对应的镜像归档文件如下表所示:

    版本镜像名字镜像归档文件下载路径
    开源版12.3.3easysoft/zentao:12.3.3/dl/docker/zentao_12.3.3.tar.gz
    专业版8.8.3easysoft/zentao: pro8.8.3/dl/docker/zentao_pro8.8.3.tar.gz
    企业版3.7.2easysoft/zentao: biz3.7.2/dl/docker/zentao_biz3.7.2.tar.gz

    备:归档文件的命名格式为产品名+下划线+版本号+.tar.gz,以后发布产品也依照此格式。
    导入镜像步骤如下:

    • 选择合适的版本进行下载,拷贝至主机下某位置;
    • 进入主机的镜像归档文件目录, 执行导入镜像命令。
    sudo gunzip -c [镜像归档文件名] | docker load
    

    例如拉取禅道开源版12.3.3版本命令如下:

    sudo gunzip -c zentao_12.3.3.tar.gz | docker load 
    


    三、启动禅道容器
    1、创建docker网络驱动

    sudo docker network create --subnet=[ip范围] [网络驱动名]
    

    其中,ip范围:例如172.172.172.0/24的意思ip可以指定范围为172.172.172.1到172.172.172.254;
    网络驱动名:创建的网络驱动名,可随意指定;
    例如:

    sudo docker network create --subnet=172.172.172.0/24 zentaonet
    

    2、启动禅道容器
    命令格式如下:

    sudo docker run --name [容器名] -p [主机端口]:80 --network=[网络驱动名] --ip [容器IP] --mac-address [mac地址] -v [主机禅道目录]:/www/zentaopms -v [主机mysql目录]:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=[数据库密码] -d easysoft/zentao:[镜像标签]

    • 容器名:启动的容器名字,可随意指定;
    • 主机端口:主机端口为web访问端口;
    • 网络驱动名:刚刚创建的网络驱动名;
    • 容器IP:在网络驱动范围内选择一个作为该容器的固定ip;
    • mac地址:指定固定的mac地址,建议范围为02:42:ac:11:00:00 到 02:42:ac:11:ff:ff;
    • 主机禅道目录:必须指定,方便禅道代码、附件等数据的持久化,非升级情况需指定空目录;
    • 主机mysql目录:必须指定,方便禅道数据持久化,非升级情况需指定空目录;
    • 数据库密码: 容器内置mysql用户名为root,默认密码123456,如果不修改可以不指定该变量,如果想更改密码可以设置 MYSQL_ROOT_PASSWORD变量来更改密码;
    • 镜像标签:禅道版本。

    例如:在主机上创建空目录/www/zentaopms和/www/mysqldata,执行如下命令
    sudo docker run --name zentao -p 80:80 --network=zentaonet --ip 172.172.172.172 --mac-address 02:42:ac:11:00:00 -v /www/zentaopms:/www/zentaopms -v /www/mysqldata:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d easysoft/zentao:12.3.3

    备注:如果在单个主机上部署多个禅道系统,只需要指定不同的[容器名]、[主机端口]、[容器IP]、[mac地址]、[主机禅道目录]、[主机mysql目录]即可部署多个禅道系统,例如:
    sudo docker run --name zentao2 -p 8080:80 --network=zentaonet --ip 172.172.172.173 --mac-address 02:42:ac:11:00:01 -v /www/zentaopms:/www/zentaopms -v /www/mysqldata2:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d easysoft/zentao:12.3.3
    3、查看容器是否启动成功
    执行如下命令查看容器是否启动成功,如果没有则启动失败,去掉-d选项进行前台运行调试容器,如有任何问题请咨询禅道商务同事。

    docker ps
    

    在这里插入图片描述

    四、安装禅道
    浏览器直接访问 http://容器ip:宿主机映射端口
    在这里插入图片描述在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述 五、升级禅道
    1.先停止禅道容器,为备份数据做准备

    命令格式如下:

    docker stop [容器名]
    

    例如:

    docker stop zentao 
    

    2 .备份禅道数据
    为安全起见,将上文所述的[主机禅道目录]和[主机mysql目录]进行备份,例如将/www/zentaopms和/www/mysqldata进行 拷贝至主机其他目录。
    3.获取最新版源码包,开源版从禅道官网获取,其他版本可咨询禅道商务获取
    4.解压缩后,覆盖 [主机禅道目录],例如解压缩后覆盖主机/www/zentaopms目录
    5.启禅道容器

    docker start [容器名]
    

    例如:

    docker start zentao
    

    6.访问upgrade.php,选择对应的版本,按照提示进行即可
    开源版、专业版、企业版的升级相似,具体可以参考开源版禅道的升级 http://www.zentao.net/help-read-78960.html。

    六、安装svn、git客户端 (如果不使用svn、git集成的话,不用安装)

    1. 进入容器
    docker exec -it [容器名] /bin/bash
    
    2. 执行命令
    
    apt-get install git -y
    apt-get install subversion -y
    

    七、FAQ
    A:如果修改容器里的mysql等配置文件

    Q:使用如下命令

    docker exec -it [容器名] /bin/bash
    

    比如进入禅道容器,修改my.cnf后保存,重启mysql服务

    docker exec -it zentao /bin/bash
    vi /etc/mysql/my.cnf 
    

    同理,修改apache、php.ini的配置也类似,以下列出容器内相关组件的路径。
    容器内apache配置文件目录:/etc/apache2/
    容器内禅道目录:/www/zentaopms
    容器内mysql配置文件目录: /etc/mysql/
    容器内php配置文件目录:/etc/php/7.0/apache2

    A:为什么容器挂载出来的/www/zentaopms目录是空文件夹
    Q:在禅道12.3.1、12.2.stable、biz3.7、pro8.8这四个镜像中,禅道的挂载目录为/app/zentaopms,需修改挂载目录
    例如:在主机上创建空目录/app/zentaopms和/app/mysqldata,执行如下命令
    sudo docker run --name zentao -p 80:80 --network=zentaonet --ip 172.172.172.172 --mac-address 02:42:ac:11:00:00 -v /app/zentaopms:/app/zentaopms -v /app/mysqldata:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d easysoft/zentao:12.3.3

    二、Docker部署禅道zentao(简易版)

    一、查看服务器是否有禅道容器

    docker ps -a # 查看到所有容器
    

    二、从docker库下载禅道镜像
    如果服务器上没有禅道容器或者禅道镜像,则从docker库中下载镜像

    docker pull idoop/zentao
    

    三、创建禅道挂载目录,运行镜像

    mkdir -p /data/zbox && docker run -d -p 80:80 -p 3306:3306 \
            -e USER="root" -e PASSWD="password" \
            -e BIND_ADDRESS="false" \
            -e SMTP_HOST="163.177.90.125 smtp.exmail.qq.com" \
            -v /data/zbox/:/opt/zbox/ \
            --name zentao-server \
            idoop/zentao:latest
    
    • 关于端口映射:将宿主机的80端口和3306端口分别映射到了禅道容器的80端口和3306端口,也可以进行自主更改。
    • 关于挂载目录:将禅道容器的/opt/zbox/目录挂载到了宿主机的/data/zbox/下,实现目录同步。
    • 关于命名:将运行生成的禅道容器命名为zentao-server

    四、登陆禅道
    在浏览器输入:http://服务器ip:80 即可访问到禅道容器。如果和禅道容器的80端口映射的是宿主机的其他端口,而非80端口,则将浏览器地址栏的端口号改成相应的宿主机端口即可。

    三、Docker部署禅道zentao(懒人版)

    1.安装

    # 拉取镜像(最新的镜像中已经包含了mysql服务,不用重新搭建,也可以启动后更改配置连入自己的数据库)
    docker pull idoop/zentao
     
    # 运行镜像
    docker run -d -p 6062:80 -p 6063:3306 -e ADMINER_USER="root" -e ADMINER_PASSWD="password" -e BIND_ADDRESS="false" -v /data/zbox/:/opt/zbox/ --add-host smtp.exmail.qq.com:47.112.182.87 --name zentao-server idoop/zentao:latest
    
    • 启动完成后,使用IP+端口访问,默认用户名:admin,密码:123456;数据库用户:root,默认密码:123456

    2.数据库

    想改成自己的MySQL数据库,如下操作:
    # 修改MySQL配置文件为自己的数据库连接即可
    vi /data/zbox/app/zentao/config/my.php
     
    # 复制文件(前面目录为禅道的基础数据,后面为你要使用的数据库目录)
    cp  /data/zbox/data/mysql/zentao/ /var/lib/mysql/
     
    # 赋予权限
     chown -R mysql:mysql /var/lib/mysql/zentao
     
    注意:不同版本的禅道文件路径和文件名可能不一样,低版本的事my.cnf,查找即可
    

                                                                                                                    本文由网络收集整理,如有侵权,告知必删!

    展开全文
  • zentao安装包

    2015-12-28 19:52:57
    这是zentao的安装包.exe
  • 文章目录Docker - 搭建禅道管理软件 zentao1、拉取镜像2、运行镜像3、删除容器4、进入面板5、同步时区6、查看运行状态7、禅道的dockerfile8、如何登陆禅道 Docker - 搭建禅道管理软件 zentao 这里使用的开源版的...

    Docker - 搭建禅道管理软件 zentao


    这里使用的开源版的禅道

    1、拉取镜像

    docker pull idoop/zentao
    
    

    2、运行镜像

    docker hub 官方镜像地址 https://hub.docker.com/r/idoop/zentao

    docker run \
      --name zentao \
      --hostname=zentao \
      --restart=always \
    展开全文
  • 项目管理软件zentao

    2016-04-28 15:02:32
    项目管理软件zentao,php,mysql
  • ZenTao.9.0.1.zbox_64.tar.gz

    2018-08-08 11:27:22
    禅道安装包, linux, 64位版本 禅道安装包, linux, 64位版本 禅道安装包, linux, 64位版本
  • 借助zentao提供的二次开发,实现在zentao中,直接基于story / task / bug 粒度的完成情况,向公司内部ERP进行工作量同步(也就是俗称的"ERP每日报工")。

    借助zentao提供的二次开发,实现在zentao中直接基于story / task / bug 粒度的完成情况,向公司内部ERP进行工作量同步(也就是俗称的"ERP每日报工")。

    1. 前言

    "上ERP找死,不上ERP等死”,这短短的一句话在揭示启用ERP的必要性同时,也暴露了推进ERP的艰难。

    笔者所在的公司属于传统软件企业,秉承资源高效利用和业务特殊性考虑,决策层最终采取了自主进行ERP开发的路线。

    同时为了对项目进行精细化管理,精确把控项目进度,公司又专门引入了zentao作为项目全生命周期管理平台。于是出现了:

    1. 人员需要在zentao中完成story / task / bug 状态扭转,接着在ERP中就所完成的工作进行填报。
    2. 人员需要在erp中进行项目计划的制定,接着在zentao中进行计划的再次创建。
    3. …凡此种种重复性的工作。

    本文尝试解决第一个重复性问题,实现在zentao中,直接基于story / task / bug 粒度的完成情况,向公司内部ERP进行工作量同步(也就是俗称的"ERP每日报工")。

    2. 优点

    做任何一件事都必须得有理由,本文要介绍的工作也不例外。通过“zentao + ERP报工同步”,我们可以:

    1. 降低人员心智负担,通过减少重复性工作,减少低级错误出现频率,提高事情的完成度。
    2. 推进ERP报工日志格式的统一,为之后的各类报表打下坚实基础(周报 / 半月报 / 月报等)。
    3. 减少需求管理规范化的推进阻力。公司引入zentao是为了进行项目需求的有序性管理,只是就个人而言,原本一句话就能解决的问题现在必须在zentao上大费周章,因此"zentao规范化使用"的推进过程中势必困难重重,而通过这样的同步打通,将能够有效降低推进阻力。

    3. 效果

    先让我们看看最终的效果(笔者的主职语言为Java后端,php是初次接触,界面美观啥的还请读者多多包涵)。

    1. 在 story / task / bug 操作页面, 提供“ERP报工”按钮。
      在这里插入图片描述
    2. 点击以上按钮,弹出"ERP报工"填报页面。
      在这里插入图片描述
    3. 点击"上传"按钮,等待"ERP报工"结果反馈。
      在这里插入图片描述

    4. 实现

    关键文件说明。

    4.1 文件module\common\model.php
        /**
         * `module\common\model.php`文件
         */
        public static function printDailyTaskIcon($storyOrBugOrTask, $session)
        {
            global $lang;
    
            echo html::commonButton('<i class="icon icon-cards-view"></i> ' . "对当前需求进行ERP报工", 'style="font-weight:bold" ', 'btn btn-link pull-right btn-dailyWork');
    		
    		// 模拟登录, 并从ERP中获取当前员工所参与的项目情况
    		$cookie = common::loginErp("username","password");
    		$taskList = common::http("http://xxxx/xxxx_queryDailyTask.action",array("rwzt" => 0, "sdate" => "", "edate" =>"", "xmmc" => "", "rwmc"=>""),array(CURLOPT_COOKIE => $cookie));
    		
    		
    		$taskListForCurrentUser = json_decode($taskList)->data->tasks;
    		// 将从erp查询到的员工参与项目情况存入session, 留作后用
    		$session->set('taskListForCurrentUser',     $taskListForCurrentUser);
    		foreach ($taskListForCurrentUser as $key => $value) {
    			$arr2[sprintf("%s-%s", $value->xmId,$value->rwId)] = sprintf("%s > %s",$value->xmmc, $value->rwmc);
    		}
    		
    		// 上面对key进行了特殊处理, 所以这里就不排序
    		//rsort($arr2);
    
    		// html <select> 其中第四个参数直接让<select>变成可筛选的(摘抄自 `module\story\view\change.html.php`)
    		$projectHtmlSelect = html::select('taskSelected', $arr2, "", 'class="form-control chosen"');
    		// 报工内容
    		$dailyWorkContent = sprintf("从事禅道开发-%s %s", $storyOrBugOrTask->id, $storyOrBugOrTask->title);
    		
    		list($module,$method,$objectType,$objectId) = explode('-', $commentFormLink);
    		$commentFormLink = sprintf("/zentao/action-dailyTask-%s-%s.html",$objectType,explode('.',$objectId)[0]);
    /* */
            echo <<<EOD
    <div class="modal fade modal-dailyWork">
      <div class="modal-dialog">
        <div class="modal-content">
          <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal"><i class="icon icon-close"></i></button>
            <h4 class="modal-title">添加ERP报工</h4>
          </div>
          <div class="modal-body">
            <form class="load-indicator" action="{$formLink}" target='hiddenwin' method='post'>
    			<div class="form-group">
    			 <table class='table table-data'>
    				<tr>
    				  <th class='effortThWidth'>项目:</th>
    				  <td>{$projectHtmlSelect}</td>
    				</tr>
    				<tr>
    				  <th class='effortThWidth'>工时:</th>
    				  <td> <input type="text" name="zctrgs" />小时 </td>
    				</tr>
    				<tr>
    				  <th class='effortThWidth'>完成百分比:</th>
    				  <td> <input type="text" name="wcbfb" />% </td>
    				</tr>
    			 </table>
    			
    			
    			</div>
              <div class="form-group">
                <textarea id='comment' name='comment' class="form-control" rows="8" autofocus="autofocus">{$dailyWorkContent}</textarea>
              </div>
    		  <div class="form-group form-actions text-center">
                <button type="submit" class="btn btn-primary btn-wide">{$lang->save}</button>
                <button type="button" class="btn btn-wide" data-dismiss="modal">{$lang->close}</button>
              </div>          
            </form>
          </div>
        </div>
      </div>
    </div>
    <script>
    $(function()
    {
        \$body = $('body', window.parent.document);
        if(\$body.hasClass('hide-modal-close')) \$body.removeClass('hide-modal-close');
    });
    </script>
    EOD;
    
        }
    
        /**
         * 推送每日报工 (`module\common\model.php`文件)
         */	
    	public static function writeDailyTask($data = array())
    	{
    		$cookie = common::loginErp("username","password");
    		return common::http("http://xxxx/writeDiaryTask.action", $data, array(CURLOPT_COOKIE => $cookie));
    	}
    	
    	  //登录接口,获取cookie
       static function loginErp($erpUsername, $erpPassowrd)
        {
            $re = common::http(sprintf("http://xxxxx/login.action?name=%s&pswd=%s",$erpUsername,$erpPassowrd), null, array(CURLOPT_HEADER=>true));
    
            // 解析HTTP数据流
            list($header, $body) = explode("\r\n\r\n", $re);
            // 解析COOKIE
            preg_match_all("/set\-cookie:([^\r\n]*)/i", $header, $matches);
           return $matches[1][1];
    
        }
    
    
    4.2 文件module\action\control.php

    针对url请求 /zentao/action-dailyTask.html

    	// module\action\control.php 文件
        public function dailyTask($objectType, $objectID)
        {
    		// 工时
    		$zctrgs = $this->post->zctrgs;
    		if(!filter_var($zctrgs, FILTER_VALIDATE_INT)){
    			die(js::alert("[工时]必须为数值"));
    		}
    		if(((int)$zctrgs) > 8){
    			die(js::alert("[工时]必须小于等于8"));
    		}
    		
    		$taskSelected = $this->post->taskSelected;
    		list($xmId,$rwId) = explode('-', $taskSelected);
    		$item = null;
    		foreach ($this->session->taskListForCurrentUser as $key => $value) {
    			if($value->xmId == $xmId and $value->rwId == $rwId){
    				$item = $value;
    				break;
    			}
    		}
    		
    		if(!$item){
    			die(js::alert("没有找到可报工的项目!"));
    			return;
    		}
    		
    		
            $result = common::writeDailyTask(array("xmbh" => $xmId, "rwId" => $rwId, "rwmc" =>$item->rwmc, "txrq" => date("Y-m-d")));
            // 同时向zentao的当前story写入一条comment
    		if($result->status == 0){
    			$this->action->create($objectType, $objectID, 'Commented', sprintf("ERP-%s-%s-%s-%s-%s-%s", $xmId, $rwId, $item->xmmc, $item->rwmc,$this->post->zctrgs,$this->post->wcbfb));
    		}
            if(defined('RUN_MODE') && RUN_MODE == 'api')
            {
                die(array('status' => 'success', 'data' => $actionID));
            }
            else
            {
            	// 为了最大化真实地反馈报工情况,我们直接将ERP的返回值进行弹框展示, 不进行二次封装.
    			echo js::alert(json_encode($result));
                die(js::reload('parent'));
            }
        }	
    
    4.3 更新权限 zt_grouppriv

    这一步操作的必要性是实际的试点过程中发现的,我们需要为当前操作用户授予填写报工的权限。

    鉴权初期管理还没有细化,这里我们直接给出为所有用户组赋予填写报工的权限。

    -- 创建存储过程之前需判断该存储过程是否已存在,若存在则删除
    DROP PROCEDURE IF EXISTS shxc40;
    -- 创建存储过程
    CREATE PROCEDURE shxc40()
    BEGIN
         
    -- 定义变量
        DECLARE s int DEFAULT 0;
    		DECLARE gro int;
        DECLARE p varchar(255);
    
     
        -- 定义游标,并将sql结果集赋值到游标中
        DECLARE groups CURSOR FOR select distinct `group` from zt_grouppriv;
     
        -- 声明当游标遍历完后将标志变量置成某个值
        DECLARE CONTINUE HANDLER FOR NOT FOUND SET s=1;
     
        -- 打开游标
        open groups;
     
            -- 将游标中的值赋值给变量,注意:变量名不要和返回的列名同名,变量顺序要和sql结果列的顺序一致
            fetch groups into gro;
     
            -- 当s不等于1,也就是未遍历完时,会一直循环
            while s<>1 do
                 
                -- 执行业务逻辑
                INSERT INTO zt_grouppriv (`group`, module, method) VALUES(gro, 'action', 'dailyTask');
     
                -- 当s等于1时表明遍历以完成,退出循环
                fetch groups into gro;
            end while;
        -- 关闭游标
        close groups;
    END;
    
    
    -- 执行存储过程
    call shxc40()
    
    
    -- // Other 
    -- select distinct `group` from zt_grouppriv
    -- select  * from zt_grouppriv where method='dailyTask'
    -- delete from zt_grouppriv where  method='dailyTask'
    
    4.4 备注说明
    1. module\story\control.php 文件。
      a. 其中的 view($storyID, $version = 0, $from = 'product', $param = 0)方法负责请求story-view-xxx.html的响应 。
    2. module\story\view\view.html.php文件。
      a. 请求story-view-xxx.html的响应页面,这属于zentao中默认的二次开发约定。
      b. 其中的 <div class="cell"><?php include '../../common/view/action.html.php';?></div>属于以模块化引入的"历史修改记录"模块。
    3. module\common\view\action.html.php文件。
      a. 上一步以模块化引入的"历史修改记录"模块文件。
      b. 其中的<?php if(isset($actionFormLink)) echo common::printCommentIcon($actionFormLink);?> 正是zentao中默认的"添加备注"按钮的实现,也是本次我们的借鉴对象。
      c. 最终我们的实现为:<?php if(in_array($this->app->user->account, array('admin','xxxx')) and isset($actionFormLink)) echo common::printDailyTaskIcon($actionFormLink, $story, $this->session);?>
    4. module\common\model.php文件。
      a. 上一步中common::printCommentIcon($actionFormLink);的实现位置。
    5. www\js\zui\min.js文件。
      a. 让我们扩展的按钮点击生效。
      b. 实现代码:;n.on("click",".btn-comment",function(t){r.modal("toggle"),t.preventDefault()}).on("click",".btn-dailyWork",function(t){var r = n.find(".modal-dailyWork");
    6. www\theme\zui\css\min.css文件。
      a. 按钮前面icon的来源,例如这里的icon-cards-view
    7. module\action\control.php文件。
      a. 添加 public function dailyTask() 方法。
    8. \lib\base\front\front.class.php文件。
      a. html::commonButton的来源。
    9. 权限配置。
      a. 按钮执行是需要权限的。相关表为zt_grouppriv
      b. 执行SQL:INSERT INTO zt_grouppriv (group, module, method) VALUES('2', 'action', 'dailyTask') 。其中 2 为 group Id,需要自行查找用户所在组对应的id。

    5. 优化方向

    目前想到的,还未来得及做的:

    1. 已有报工展示。针对当天,人员尚未报工的时长进行展示,方便人员知晓当前报工情况,避免人员需要再次登录ERP查看。
    2. 更新。当出现填报错误时候,能够用新的报工替换掉之前的报工。
    3. 界面输入参数校验。例如需求完成用时只能为数值。

    6. Links

    1. 【DEVOPS】zentao核心概念速览
    展开全文
  • Docker 之 部署 Zentao

    2019-09-09 16:41:53
    本小节我们学习一下使用Docker部署Zentao 在根目录下创建workspace/zentao目录 拉取镜像 docker pull registry.cn-shenzhen.aliyuncs.com/dustyone/dustyone_repository:zentao-latest [root@iZwz92qakfc7zvdr9...

    前言

    本小节我们学习一下使用Docker部署Zentao

    • 在根目录下创建workspace/zentao目录

    • 拉取镜像

      docker pull registry.cn-shenzhen.aliyuncs.com/dustyone/dustyone_repository:zentao-latest
      
      [root@iZwz92qakfc7zvdr9h0gipZ zentao]# docker pull registry.cn-shenzhen.aliyuncs.com/dustyone/dustyone_repository:zentao-latest
      Trying to pull repository registry.cn-shenzhen.aliyuncs.com/dustyone/dustyone_repository ... 
      zentao-latest: Pulling from registry.cn-shenzhen.aliyuncs.com/dustyone/dustyone_repository
      35c102085707: Already exists 
      251f5509d51d: Already exists 
      8e829fe70a46: Already exists 
      6001e1789921: Already exists 
      b02e5e097fa2: Pull complete 
      791e294222ef: Pull complete 
      b64b5e0952b6: Pull complete 
      28d0d85ab66d: Pull complete 
      82565559bc19: Pull complete 
      Digest: sha256:d05701d97424e788b4fdb0110c776feeb3e6ff40c6efa9ca3f0703017cab57f3
      Status: Downloaded newer image for registry.cn-shenzhen.aliyuncs.com/dustyone/dustyone_repository:zentao-latest
      [root@iZwz92qakfc7zvdr9h0gipZ zentao]# 
      
    • 运行

      docker run --name zentao -p 8868:80 -p 3306:3303 -v /workspace/zentao:/app/zentaopms -v /workspace/zentao:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d 766b2eda1768
      

      参数说明:
      /app/zentaopms:该目录为禅道目录,里面包含禅道代码及附件上传目录。
      /var/lib/mysql:该目录为数据库的数据目录。
      -e MYSQL_ROOT_PASSWORD=123456 容器内Mysql ROOT用户登录密码
      -p 8868:80 -p 3306:3303 zentao 容器运行时是使用两个容器端口,分别为80和3306,其中80为服务端口,3306为数据库端口,如上命令:将宿主机8868映射到zentao运行时容器的80端口,将3306映射到容器的3306端口。

    • 访问:http://你的公网IP:8868
      在这里插入图片描述

      登录口令为:admin/123456

    展开全文
  • vi 0zentao-namespace.yaml apiVersion: v1 kind: Namespace metadata: name: zentao kubectl apply -f 0zentao-namespace.yaml 创建时区及lxcfs 自动挂在docker vi 1allow-lxcfs-tz-env.yaml apiVersion: ...
  • This article mainly introduces how to manage Zentao based on Docker
  • docker_zentao.zip

    2021-03-31 17:05:12
    【数据库】 ... 【可挂载目录】 /app/zentaopms:该目录为禅道目录,里面包含禅道代码及附件上传目录。 /var/lib/mysql:该目录为数据库的数据目录。... 进入docker_zentao目录,执行命令 ...docker build -t zentao ./
  • zentao二次开发成果

    2015-07-01 13:45:20
    在开源的禅道上自己做了写二次开发,与大家分享下。
  • 上面命令完了会要你输入密码 切换至新服务器 找到刚刚传过来的备份文件/home/back/zentao.back.zip # 解压 unzip /home/back/zentao.back.zip -d /home/zentao/ 4.拉去镜像,并运行 上面已经拉取过镜像了,当然不...
  • zentao_reader zentao_reader
  • 使用Docker制作zentao禅道镜像(资源内部有说明)
  • 开源版禅道ZenTao集成LDAP 注: 本文仅针对开源版。 禅道ZenTao专业版,默认集成有LDAP插件,直接配置即可。 Docker安装禅道ZenTao 如果未安装禅道的,可使用Docker快速安装,如果已经安装的,可跳过。 Docker Hub...
  • 一、运行环境说明 本文推荐运行环境为 :CentOS7+Apache + PHP... cd /var/www/html/ #切换到apache的网站文件默认访问目录 wget http://dl.cnezsoft.com/zentao/12.4.1/ZenTaoPMS.12.4.1.zip #开源版本 wget ...
  • 基于Jenkins + Zentao+ JMeter实现自动化测试集成de起步阶段。 0. 目录 1. 前言 2. 流程介绍 3. 环境准备 4. Jenkins端 5. Zentao端 6. 优化 7. Links 1. 前言 千呼万唤之下,公司内部的自动化测试流程终于蹒跚起步...
  • 依赖环境: 1、docker 2、docker-compose docker-compose.yml文件 ... image: idoop/zentao:12.5.3 container_name: zentao restart: always environment: ADMINER_USER: "root" ADMINER_PASSWD: "root" B.
  • ZenTao是由青岛自然易软网络技术有限公司开发的一种开源项目管理软件,它将产品管理,项目管理,QA管理,文档管理,公司管理和待办事项管理结合在一起。 它是一款专业的项目管理软件,涵盖了软件开发项目的核心流程...
  • 文章目录前言一、界面布局1、顶部工具条2、左右布局二、其他修改总结 前言 记录升级禅道的问题与解决方法 ...版本:7 一、界面布局 1、顶部工具条 2、左右布局 ...zentao 12的主要布局,左右伸缩的...这个和zentao 8的有

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,502
精华内容 1,400
关键字:

zentao