基于sae实现多人文件管理系统的MantisBT 插件
2013-05-02 22:49
519 查看
mantisBT开发一个基于新浪云计算sae的多人文件管理系统的项目遇到问题总结:
这个首先就是申请一个新浪的账号,用于搭建MantisBT缺陷追踪系统。搭建过程还是略过吧,我感觉这些过程都不是特别重要,自己花个半天时间或一天时间也就搭建成功了,现在我主要讲一讲我开发的时候遇到的一些问题,以及相应的解决方法。
搭建过程中如果是开发使用,就不用一定会用到mail功能,那么我们就可以注释掉注册时邮箱验证。
下面我简单介绍一下MantisBugTracker系统插件开发的规范。
首先是插件开发:
MantisBT的插件类,是继承于MantisPlugin类,其中注册函数主要是设置插件的基本配置。例如插件名、插件描述、插件的主页等等.如何给插件添加一个主页面,其中print_project_menu主要实现在系统的主菜单栏中添加改插件。
插件首页是以插件名称命名的。内容如之前所占的代码,其中lang放置的多语言支持文件,pages是放置插件的相关页面,files放置css,js图片等文件,core主要放置一些引用类库的文件。
其中插件编写常用函数和问题介绍
1.如何获取当前登录用户信息:
plugin_page( '页面的名字(除去扩展名)' );
5.如何获取file目录下的文件
plugin_file( 'foo.css' );
6.如何跳转页面
print_successful_redirect( plugin_page( 'foo', true ) );
7.如何获取lang里面设置的常量:
plugin_config_delete( 'foo_or_bar' );
8.打印页面的头布局:
html_page_top( plugin_lang_get( 'configuration' ) );
9.打印页面的尾布局:
html_page_bottom();
10.引发一个事件:
event_signal( 'EVENT_EXAMPLE_FOO' );
以上是常见的问题和指南,如果想要更详细的信息请参考,MantisBugTracker开发手册。
本文出自 “大工软院的技术生活” 博客,请务必保留此出处http://webcrawler.blog.51cto.com/3663163/1191888
这个首先就是申请一个新浪的账号,用于搭建MantisBT缺陷追踪系统。搭建过程还是略过吧,我感觉这些过程都不是特别重要,自己花个半天时间或一天时间也就搭建成功了,现在我主要讲一讲我开发的时候遇到的一些问题,以及相应的解决方法。
搭建过程中如果是开发使用,就不用一定会用到mail功能,那么我们就可以注释掉注册时邮箱验证。
下面我简单介绍一下MantisBugTracker系统插件开发的规范。
首先是插件开发:
MantisBT的插件类,是继承于MantisPlugin类,其中注册函数主要是设置插件的基本配置。例如插件名、插件描述、插件的主页等等.如何给插件添加一个主页面,其中print_project_menu主要实现在系统的主菜单栏中添加改插件。
<?php class FileManagerPlugin extends MantisPlugin { function register() { $this->name = plugin_lang_get( 'title' ); $this->description = plugin_lang_get( 'description' ); $this->page = 'file_show'; $this->version = '1.0'; $this->requires = array( 'MantisCore' => '1.2.0', ); $this->author = 'jerry'; $this->contact = 'mantisbt-dev@lists.sourceforge.net'; $this->url = 'http://www.mantisbt.org'; } function install() { return true; } function hooks( ) { $t_hooks = array( 'EVENT_MENU_MAIN' => 'print_menu_projects', ); return array_merge( parent::hooks(), $t_hooks ); } /* * 添加link */ function print_menu_projects( ) { $t_links = array(); // plugin_page函数用来拼接pages目录下面的php页面 $t_page = plugin_page( 'file_show.php' ); $t_lang = 'fileManager'; $t_links[] = "<a href=\"$t_page\">$t_lang</a>"; return $t_links; } }插件所在目录结构如下:
插件首页是以插件名称命名的。内容如之前所占的代码,其中lang放置的多语言支持文件,pages是放置插件的相关页面,files放置css,js图片等文件,core主要放置一些引用类库的文件。
其中插件编写常用函数和问题介绍
1.如何获取当前登录用户信息:
//获取用户信息 $row = user_get_row( auth_get_current_user_id() ); extract( $row, EXTR_PREFIX_ALL, 'u' ); $_SESSION['u_id'] = $u_id; $_SESSION['u_name'] = $u_username;2.如何将该插件添加到菜单栏中:
function hooks( ) { $t_hooks = array( 'EVENT_MENU_MAIN' => 'print_menu_projects', ); return array_merge( parent::hooks(), $t_hooks ); } /* * 添加link */ function print_menu_projects( ) { $t_links = array(); // plugin_page函数用来拼接pages目录下面的php页面 $t_page = plugin_page( 'file_show.php' ); $t_lang = 'fileManager'; $t_links[] = "<a href=\"$t_page\">$t_lang</a>"; return $t_links; } 3.如如何3.如何解决sae上storage下载的问题。
<?php require_once '../core/config.php'; if(!isset($_GET["filename"])){ echo "short of filename"; exit(); } $filename = $_GET["filename"]; $downFile = $_GET["downFile"]; //检查文件是否存在 if (!$sae->fileExists( $domain,$filename)) { exit (); } else { $newName = urlencode($downFile); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename='.$newName); header('Content-Transfer-Encoding: binary'); echo file_get_contents('saestor://'.$domain.'/'.$filename); } ?>4.如何获取页面的连接。
plugin_page( '页面的名字(除去扩展名)' );
5.如何获取file目录下的文件
plugin_file( 'foo.css' );
6.如何跳转页面
print_successful_redirect( plugin_page( 'foo', true ) );
7.如何获取lang里面设置的常量:
plugin_config_delete( 'foo_or_bar' );
8.打印页面的头布局:
html_page_top( plugin_lang_get( 'configuration' ) );
9.打印页面的尾布局:
html_page_bottom();
10.引发一个事件:
event_signal( 'EVENT_EXAMPLE_FOO' );
以上是常见的问题和指南,如果想要更详细的信息请参考,MantisBugTracker开发手册。
本文出自 “大工软院的技术生活” 博客,请务必保留此出处http://webcrawler.blog.51cto.com/3663163/1191888
相关文章推荐
- Linux环境下C语言实现简单的基于文件的学生信息管理系统
- mui初级入门教程(七)— 基于native.js的文件系统管理功能实现
- 数字天堂HBuilder+MUI(五)基于native.js的文件系统管理功能实现
- 基于GIS、、geosever插件实现当地旅游资源网格化管理系统的架构
- .NET 插件系统框架设计(二) 使用对象序列化实现自定义配置文件管理
- 搭建基于mantisbt的bug跟踪管理系统
- 基于文件系统的图书管理系统的设计与实现
- 基于.net框架下的插件系统的实现方法
- 嵌入式 linux 基于fuse 的 exfat 文件系统实现
- 在嵌入式Linux 系统中实现基于Web 的配置管理
- 【SSH】:基于Struts2+HIbernate3+Spring3实现员工管理系统之框架整合篇
- 基于SSH实现管理系统之框架整合篇
- 【SSH】:基于Struts2+HIbernate3+Spring3实现员工管理系统之案例实现篇(上)
- SpringMVC(24):使用springmvc+spring+jdbc 优化订单管理系统的示例(多文件上传功能的实现)
- B/S(WEB)系统中使用Activex插件调用扫描仪实现连续扫描并上传图像(IE文件扫描并自动上传)
- 十分给力jquery插件miniui框架整合java实现各种图形报表管理系统
- RHCS + GNBD实现基于multipath上的GFS文件系统
- 基于UML和ASP.NET实现三层B/S学生管理系统开发
- 基于链表的学生成绩管理系统——C++二进制文件读写string对象时出现的错误
- Linux系统管理——高级文件系统管理(磁盘配额&软RAID实现)