digitalkaoz / issues-bundle
digitalkaoz/issues 的 Symfony 扩展包
Requires
- digitalkaoz/issues: ~0.4
- friendsofsymfony/elastica-bundle: ~3.0.0
- jms/serializer-bundle: ~0.13
- symfony/framework-bundle: ~2.0
Requires (Dev)
- phpspec/phpspec: ~2.0
This package is not auto-updated.
Last update: 2024-09-10 02:17:48 UTC
README
#IssuesBundle
digitalkaoz/issues 的 Symfony 集成
##安装
我们当然使用 composer
进行安装
$ composer require digitalkaoz/issues-bundle
在 Kernel 中启用它
<?php // app/AppKernel.php public function registerBundles() { $bundles = array( //... new Rs\IssuesBundle\RsIssuesBundle(), //... ); }
##配置
###问题跟踪器简单地引入以下结构到您的 config.yml
或(对于敏感数据)在您的 parameters.yml
rs_issues: github: - digitalkaoz/issues # concrete repo - phpcr/* # all user/org repos - symfony/[Console|Debug]+$ # only symfony/Console and symfony/Debug - doctrine/(?!common|lexer)([a-z0-9\.-]+)$ # all but doctrine/common and doctrine/lexer jira: - https://jira.com PROJKEY [USER] [PASSWORD] # username and password are optional gitlab: - http://gitlab.com/api/v3/ johnsmith/* TOKEN # the repo patterns are the same like for github - http://gitlab.com/api/v3/ gitlab/[gitlab\-shell|Testme] TOKEN - http://gitlab.com/api/v3/ root/(?!six)([a-zA-Z0-9\.-]+)$ TOKEN
###存储适配器如果您使用 elasticsearch 作为存储
,您应该导入所需的映射并配置 elastica
#app/config/config.yml imports: - { resource: @RsIssuesBundle/Resources/config/es_mapping.yml } fos_elastica: clients: default: { host: localhost, port: 9200 }
###路由
包含路由
rs_issues: resource: "@RsIssuesBundle/Resources/config/routing.xml" prefix: /issues
##使用
如果您使用 elasticsearch
作为适配器存储(目前唯一支持的一种)您有两种方法将所有存储库信息同步到存储中
$ app/console fos:elastica:populate # preferred way
对于其他存储适配器
$ app/console issues:sync
然后您可以访问 http://yourdomain.com/issues
(或您用路由前缀替换的任何内容)
##扩展
###实现新的存储适配器
简单地实现 Storage
接口
<?php interface Storage { /** * remove old issues and projects */ public function cleanup(); /** * save a Project and all its Issues * * @param Project $project */ public function saveProject(Project $project); /** * get all imported Projects * * @return Project[] */ public function getProjects(); /** * get all Issues for the provided Project-Id * * @param string $projectId * @return Issue[] */ public function getIssues($projectId); }
之后创建服务并将其标记为默认存储
<service id="rs_issues.storage.my_storage" class="%rs_issues.storage.my_storage.class%"> <tag name="rs_issues.storage" /> </service>
###实现新的同步器
如果您实现了一个新的跟踪器(带有项目和问题)您需要编写一个新的同步器。只需实现 Synchronizer
接口。
<?php interface Synchronizer { /** * synchronizes all Projects and Issues from the Tracker into the Storage * * @param \Closure $cb */ public function synchronize($cb = null); /** * set the repositories to synchronize * * @param array $repos */ public function setRepos(array $repos); }
之后创建服务并标记它
<service id="rs_issues.synchronizer.mytracker" class="%rs_issues.synchronizer.mytracker.class%"> <argument type="service" id="rs_issues.storage" /> <tag name="rs_issues.synchronizer" /> </service>
###构建前端代码
我们使用 Bootstrap
和 Sass
进行样式表处理,以及 ReactJs
+ CortexJs
进行 JavaScript 部分。
我们在本仓库提供 预编译
文件,但我们不保证它们是最新的。如果您愿意尝试,请按照以下步骤操作
简单地将以下依赖项包含在您的 bower.json
中
{ "dependencies": { "bootstrap-sass-official": "~3.2.0", "modernizr": "~2.8.3", "respond": "~1.4.2", "octicons": "~2.1.2" } }
并在您的 package.json
中包含以下依赖项
{ "dependencies": { "cortexjs": "^0.6.0", "marked": "^0.3.2", "moment": "^2.8.3", "react": "^0.11.2", "reqwest": "^1.1.2", "xss": "^0.1.12" } }
之后您应该运行这两个包管理器
$ npm install
$ bower install
现在您应该编译所有内容
我们不会详细介绍这一点。对于处理 Sass 文件,可以使用 Gulp 或 Grunt,甚至 assetic 都可以做到。
处理 JS 的工具选择众多
在这个仓库中提供了一个示例 bower.json
、package.json
和 gulpfile.js
。您应该将它们复制到项目的根目录。