您的位置:首页 > 其它

基于sae实现多人文件管理系统的MantisBT 插件

2013-05-02 22:49 519 查看
mantisBT开发一个基于新浪云计算sae的多人文件管理系统的项目遇到问题总结:
这个首先就是申请一个新浪的账号,用于搭建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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐