添加了多个上传自动提取文件名作为文献名称的功能,添加了文献删除的功能,优化页面跳转

This commit is contained in:
Li Jianxuan 2013-09-29 10:06:49 +00:00
parent 579a204c0f
commit 8ab7186eab
6 changed files with 123 additions and 113 deletions

View File

@ -1167,11 +1167,12 @@ class Admin_DataController extends Zend_Controller_Action
if(!empty($id)) if(!empty($id))
{ {
$msg = "文献修改成功!"; $msg = "文献修改成功!";
view::Post($this,$msg,-2);
}else{ }else{
$msg = "文献添加成功!"; $msg = "文献添加成功!";
}
view::Post($this,$msg,"/admin/data/ref/ac/add"); view::Post($this,$msg,"/admin/data/ref/ac/add");
} }
}
}else{ }else{
$this->view->data = array(); $this->view->data = array();
if(!empty($id) && is_numeric($id)) if(!empty($id) && is_numeric($id))
@ -1196,7 +1197,12 @@ class Admin_DataController extends Zend_Controller_Action
{ {
$this->_helper->layout->disableLayout(); $this->_helper->layout->disableLayout();
$this->_helper->viewRenderer->setNoRender(); $this->_helper->viewRenderer->setNoRender();
$statu = $reference->uploadReferencePdf($_FILES['Filedata']); $autoread = false;
if($this->_getParam('multi'))
{
$autoread = true;
}
$statu = $reference->uploadReferencePdf($_FILES['Filedata'],$autoread);
$this->jsonexit($statu); $this->jsonexit($statu);
return true; return true;
} }
@ -1226,6 +1232,19 @@ class Admin_DataController extends Zend_Controller_Action
return true; return true;
} }
//删除文献
if($ac == "deleteref")
{
$refid = $this->_getParam('id');
if($reference->deleteReference($refid))
{
view::Post($this,"删除成功!",-1);
}else{
view::Post($this,"删除失败!",-1);
}
return true;
}
}//文献管理 refAction() }//文献管理 refAction()

View File

@ -51,6 +51,7 @@ var uploader;
var param; var param;
param = { param = {
"PHPSESSID" : _this.SessionID, "PHPSESSID" : _this.SessionID,
"multi" : 'yes'
}; };
$(function() { $(function() {
$('#file_upload').uploadify({ $('#file_upload').uploadify({
@ -80,7 +81,7 @@ var upload = {
}, },
makeFileHtml : function(data){ makeFileHtml : function(data){
return '<div class="alert alert-success">' return '<div class="alert alert-success">'
+'<button type="button" class="close" data-dismiss="alert" onclick="upload.deleteFile('+data.id+')"><i class="icon-trash icon-white"></i></button>' //+'<button type="button" class="close" data-dismiss="alert" onclick="upload.deleteFile('+data.id+')"><i class="icon-trash icon-white"></i></button>'
+ data.realname + data.realname
+'<input type="hidden" name="attid" value="'+data.id+'"></input>' +'<input type="hidden" name="attid" value="'+data.id+'"></input>'
+'</div>'; +'</div>';

View File

@ -49,13 +49,27 @@ table thead tr th {background:#EBF2F6;}
foreach ($this->paginator as $item): foreach ($this->paginator as $item):
$autoindex++;?> $autoindex++;?>
<tr id="DataLine_<?= $item['id']?>"> <tr id="DataLine_<?= $item['id']?>">
<?php if(!empty($item['title']) || !empty($item['year'])) { ?>
<td><?= $item['title'] ?></td> <td><?= $item['title'] ?></td>
<td><?= $item['year'] ?></td> <td><?= $item['year'] ?></td>
<td> <td rowspan="2">
<a href="/admin/data/ref/ac/add/id/<?= $item['id']?>">编辑</a> <a href="/admin/data/ref/ac/add/id/<?= $item['id']?>">编辑</a>
<a href="javascript:void(0);" onclick="onedel(<?= $item['id']?>)" id="delbtn_<?= $item['id']?>">删除</a> <a href="/admin/data/ref/ac/deleteref/id/<?= $item['id']?>">删除</a>
</td> </td>
</tr> </tr>
<tr>
<td colspan="2"><?= $item['reference'] ?></td>
</tr>
<?php } ?>
<?php if(empty($item['title']) && empty($item['year'])) { ?>
<td colspan="2"><?= $item['reference'] ?></td>
<td>
<a href="/admin/data/ref/ac/add/id/<?= $item['id']?>">编辑</a>
<a href="/admin/data/ref/ac/deleteref/id/<?= $item['id']?>">删除</a>
</td>
</tr>
<?php } ?>
<?php endforeach; ?> <?php endforeach; ?>
</tbody> </tbody>
</table> </table>
@ -67,96 +81,4 @@ table thead tr th {background:#EBF2F6;}
</div> </div>
<!-- //页面内容 --> <!-- //页面内容 -->
<script> <script>
var info = {
btn_prefix : "delbtn_",
item_prefix : "DataLine_",
url : "/admin/data/doi/ac/del"
}
$(document).ready(function(e) {
$('.verified_btn').click(function(e) {
$(this).ajaxmsg({
callback:function(){window.location.reload();}
});
});
});
(function( $ ){
$.fn.ajaxmsg = function( options ) {
var settings = $.extend( {
url:'',
callback : '',
}, options);
var methods = {
msg : function(id)
{
methods.submited();
},
creatWindow : function(content){
$.colorbox({
initialHeight: '0',
initialWidth: '0',
html: methods.dialog(content),
opacity: '0.3',
onComplete: function(){
$('.confirm_yes').click(function(e){
e.preventDefault();
if(typeof(settings.callback)=='function')
{
settings.callback();
}
$.colorbox.close();
});
$('.confirm_no').click(function(e){
e.preventDefault();
$.colorbox.close();
});
}
});
},
submited : function(){
$.ajax({
'type':"POST",
'url':settings.url,
'data':'',
'success':function(data){
if (typeof(data)=='object')
{
if(typeof(data.error)!='undefined')
{alert(data.error);}
if(typeof(data.success)!='undefined')
{
methods.creatWindow(data.success);
}
}
else{
alert('出现错误,请稍候再试');
}
},
'timeout': 30000,
'error': function(){
alert('出现错误,请刷新后重试');
}
});
},
dialog : function(content){
HTML = '<div class=""><div class="modal-header"><h3>提示信息</h3></div>'
+ '<div class="modal-body"><div class=" span5">'+content+'</div></div>'
+ '<div class="modal-footer"><a href="javascript:void(0);" class="btn btn-primary confirm_yes">确定</a></div></div>';
return HTML;
}
}
this.each(function() {
settings.url = $(this).attr('rel');
if(settings.url == '')
{
alert('参数错误');
}
methods.msg();
});
};
})( jQuery );
</script> </script>

View File

@ -1,8 +1,11 @@
<?php <?php
namespace Reference\Handler; namespace Reference\Handler;
use Helpers\View as view; use \Helpers\View as view;
use Helpers\dbh; use \Helpers\dbh;
use \Helpers\Table;
use \Files\Files;
use \Reference\Reference;
//事件中存在的操作 //事件中存在的操作
class ReferenceHandler implements \Reference\Event\ReferenceEvent class ReferenceHandler implements \Reference\Event\ReferenceEvent
@ -10,6 +13,7 @@ class ReferenceHandler implements \Reference\Event\ReferenceEvent
private $db; //传入PDO对象误 private $db; //传入PDO对象误
private $config; //全局配置 private $config; //全局配置
public $table;
public $tbl_maillog = ""; //邮件日志表 public $tbl_maillog = ""; //邮件日志表
function __construct($db = NULL) function __construct($db = NULL)
@ -22,6 +26,7 @@ class ReferenceHandler implements \Reference\Event\ReferenceEvent
} }
$this->config = \Zend_Registry::get('config'); $this->config = \Zend_Registry::get('config');
$this->table = new Table();
} }
public function checkReferenceParam(\Zend_EventManager_Event $e) public function checkReferenceParam(\Zend_EventManager_Event $e)
@ -58,4 +63,27 @@ class ReferenceHandler implements \Reference\Event\ReferenceEvent
return $data; return $data;
} }
public function insertToReferenceTable(\Zend_EventManager_Event $e)
{
$att = $e->getParam('file_data');
$reference = new Reference();
$title = $reference->getReferenceTitleFromFilenName($att['realname']);
$data = array(
'title'=>$title,
'attid'=>$att['id'],
'reference'=>$title.'---'.date("Y-m-d H:i:s").".".microtime().rand()
);
$dbh = new dbh();
$cache_data = array();
$cache_data['ref_id'] = $dbh->insert($this->table->reference,$data,true);
$cache_data['ref_title'] = $title;
return $cache_data;
}
} }

View File

@ -16,6 +16,7 @@ class ReferenceListener implements \Zend_EventManager_ListenerAggregate
$Handler = new ReferenceHandler(); $Handler = new ReferenceHandler();
$events->attach('submit.checkParam', array($Handler, 'checkReferenceParam'), 100); $events->attach('submit.checkParam', array($Handler, 'checkReferenceParam'), 100);
$events->attach('submit.processData', array($Handler, 'processReferenceData'), 100); $events->attach('submit.processData', array($Handler, 'processReferenceData'), 100);
$events->attach('upload.insertToReferenceTable', array($Handler, 'insertToReferenceTable'), 100);
} }
public function detach(\Zend_EventManager_EventCollection $events) public function detach(\Zend_EventManager_EventCollection $events)

View File

@ -5,6 +5,7 @@ use \Helpers\View as view;
use \Helpers\dbh; use \Helpers\dbh;
use \Reference\Listener\ReferenceListener; use \Reference\Listener\ReferenceListener;
use \Files\Files; use \Files\Files;
use \Search\Search;
class Reference class Reference
{ {
@ -13,6 +14,7 @@ class Reference
protected $events = NULL; protected $events = NULL;
public $table; public $table;
public $keyword;
function __construct($db = NULL,$mail = NULL) function __construct($db = NULL,$mail = NULL)
{ {
@ -84,19 +86,19 @@ class Reference
{ {
$request = new \Zend_Controller_Request_Http(); $request = new \Zend_Controller_Request_Http();
$data = array( $data = array(
'reference'=>$request->getParam('reference'), 'reference' => trim($request->getParam('reference')),
'link'=>$request->getParam('link'), 'link' => trim($request->getParam('link')),
'publisher'=>$request->getParam('publisher'), 'publisher' => trim($request->getParam('publisher')),
'year' => $request->getParam('year'), 'year' => (int)$request->getParam('year'),
'title' => $request->getParam('title'), 'title' => trim($request->getParam('title')),
'bibtex' => $request->getParam('bibtex'), 'ris' => trim($request->getParam('ris')),
'attid' => $request->getParam('attid') 'attid' => (int)$request->getParam('attid')
); );
return $data; return $data;
} }
//上传文献PDF //上传文献PDF
public function uploadReferencePdf($file) public function uploadReferencePdf($file,$autoread = false)
{ {
$files = new Files(); $files = new Files();
$file_info = $files->upload($file,'literature/',true); $file_info = $files->upload($file,'literature/',true);
@ -118,12 +120,27 @@ class Reference
$dbh = new dbh(); $dbh = new dbh();
$file_id = $dbh->insert($this->table->attachments,$file_data,true); $file_id = $dbh->insert($this->table->attachments,$file_data,true);
$file_data['id'] = $file_id; $file_data['id'] = $file_id;
if($autoread)
{
$params = compact('file_data');
$results = $this->events()->trigger('upload.insertToReferenceTable', $this, $params);
$cache_data = $results->bottom();
$file_data = array_merge($file_data,$cache_data);
}
return $file_data; return $file_data;
} }
//通过文件名自动提取文章标题
public function getReferenceTitleFromFilenName($filename)
{
$file = new Files();
$title = str_replace( ".".$file->getFileTextExt($filename),"",$filename);
return $title;
}
//删除文献文件 //删除文献文件
public function deleteReferenceAttchment($attid) public function deleteReferenceAttchment($attid)
{ {
@ -146,6 +163,11 @@ class Reference
//所有文献 //所有文献
public function fetchReferences() public function fetchReferences()
{ {
if(!empty($this->keyword))
{
$search = new Search();
$keyword = $search->splitKeyword($this->keyword);
}
$sql = "SELECT * FROM {$this->table->reference} ORDER BY id DESC"; $sql = "SELECT * FROM {$this->table->reference} ORDER BY id DESC";
$rs = $this->db->query($sql); $rs = $this->db->query($sql);
return $rs->fetchAll(); return $rs->fetchAll();
@ -154,8 +176,8 @@ class Reference
//获取专题数据的文献 //获取专题数据的文献
public function fetchThemeReferences($code) public function fetchThemeReferences($code)
{ {
$sql="select distinct ref.* from mdref r left join reference ref on r.refid=ref.id $sql="select distinct ref.* from mdref r left join {$this->table->reference} ref on r.refid=ref.id
left join datasource ds on r.uuid=ds.uuid left join source s on s.id=ds.sourceid left join datasource ds on r.uuid=ds.uuid left join {$this->table->source} s on s.id=ds.sourceid
where s.code='$code' where s.code='$code'
order by ref.year,ref.title"; order by ref.year,ref.title";
$rs=$this->db->query($sql); $rs=$this->db->query($sql);
@ -194,4 +216,21 @@ class Reference
return $rows; return $rows;
} }
//删除文献
public function deleteReference($id,$delete_att = false)
{
if(empty($id) || !is_numeric($id))
{
return false;
}
if($delete_att == false)
{
$sql = "DELETE FROM {$this->table->reference} WHERE id=$id";
return $this->db->exec($sql);
}else{
}
}
} }