实现数据文献的功能(ticket #123)
This commit is contained in:
parent
0cfa50d3f1
commit
68f852dbf0
|
@ -504,6 +504,97 @@ class Admin_DataController extends Zend_Controller_Action
|
|||
Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination.phtml');
|
||||
$this->view->paginator=$paginator;
|
||||
}
|
||||
/*
|
||||
* 数据文献管理
|
||||
*/
|
||||
function referenceAction()
|
||||
{
|
||||
$add=(int)$this->_getParam('add');
|
||||
$edit=(int)$this->_getParam('edit');
|
||||
$delete=(int)$this->_getParam('delete');
|
||||
$uuid=$this->_getParam('uuid');
|
||||
if ($add) {
|
||||
$form=new ReferenceForm();
|
||||
if ($this->_request->isPost()) {
|
||||
$formdata=$this->_request->getPost();
|
||||
if ($form->isValid($formdata)) {
|
||||
$sql="select id from reference where reference=?";
|
||||
$row=$this->db->query($sql,array($formdata['reference']));
|
||||
if (!$row)
|
||||
{
|
||||
$sql="insert into reference (reference,link) values(?,?)";
|
||||
$this->db->query($sql,array($formdata['reference'],$formdata['link']));
|
||||
$sql="select id from reference where reference=?";
|
||||
$row=$this->db->query($sql,array($formdata['reference']));
|
||||
}
|
||||
$sql="insert into mdref (uuid,refid) values(?,?)";
|
||||
$this->db->query($sql,array($formdata['uuid'],$row['id']));
|
||||
$this->messenger->addMessage('提示信息:您已经成功添加该数据文献。');
|
||||
$this->_redirect('/admin/data/reference');
|
||||
}else {
|
||||
$form->populate($formdata);
|
||||
}
|
||||
} else {
|
||||
if ($uuid)
|
||||
{
|
||||
$formdata['uuid']=$uuid;
|
||||
$form->populate($formdata);
|
||||
}
|
||||
}
|
||||
$this->view->form=$form;
|
||||
$this->_helper->viewRenderer('referenceadd');
|
||||
} elseif ($edit){
|
||||
$form=new ReferenceForm();
|
||||
if ($this->_request->isPost()) {
|
||||
$formdata=$this->_request->getPost();
|
||||
if ($form->isValid($formdata)) {
|
||||
$sql="select id from reference where reference=?";
|
||||
$row=$this->db->query($sql,array($formdata['reference']));
|
||||
if (!$row)
|
||||
{
|
||||
//更新文献信息
|
||||
$sql="update reference set reference=?,link=? where id=?";
|
||||
$param=array($formdata['reference'],$formdata['link'],$edit);
|
||||
$this->db->query($sql,$param);
|
||||
} else {
|
||||
//更新文献链接表
|
||||
$sql="update mdref set refid=? where uuid=? and refid=?";
|
||||
$this->db->query($sql,array($row['id'],$formdata['uuid'],$edit));
|
||||
}
|
||||
$this->messenger->addMessage('提示信息:您已经编辑该数据文献。');
|
||||
$this->_redirect('/admin/data/reference');
|
||||
} else {
|
||||
$form->populate($formdata);
|
||||
}
|
||||
} else {
|
||||
$sql="select * from reference r left join mdref m on r.id=m.refid where r.id=?";
|
||||
$formdata=$this->db->fetchRow($sql,array($edit));
|
||||
$form->populate($formdata);
|
||||
}
|
||||
$this->view->form=$form;
|
||||
$this->_helper->viewRenderer('referenceadd');
|
||||
} elseif ($delete) {
|
||||
$sql="delete from mdref where id=?";
|
||||
try {
|
||||
$this->db->query($sql,array($delete));
|
||||
$this->messenger->addMessage('提示信息:您已经成功删除该数据文献。');
|
||||
} catch (Exception $e) {
|
||||
$this->messenger->addMessage($e->getMessage());
|
||||
}
|
||||
$this->_redirect("/admin/data/reference");
|
||||
}
|
||||
$select=$this->db->select();
|
||||
$select->from('mdref',array('id as mdid','refid'))
|
||||
->join('metadata','metadata.uuid=mdref.uuid')
|
||||
->join('reference','reference.id=mdref.refid')
|
||||
->order('reference.id desc');
|
||||
$paginator = Zend_Paginator::factory($select);
|
||||
$paginator->setCurrentPageNumber($this->_getParam('page'));
|
||||
$paginator->setItemCountPerPage($this->view->config->page->max);
|
||||
$paginator->setView($this->view);
|
||||
Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination.phtml');
|
||||
$this->view->paginator=$paginator;
|
||||
}
|
||||
/*
|
||||
* 删除元数据,删除前有确认
|
||||
*/
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<ul>
|
||||
<li><a href="/admin/data/md">元数据管理</a></li>
|
||||
<li><a href="/admin/data/comment">数据反馈管理</a></li>
|
||||
<li><a href="/admin/data/reference">数据文献管理</a></li>
|
||||
<li><a href="/admin/data/import">上传元数据文件</a></li>
|
||||
<li><a href="/admin/data/batchimport">导入服务器元数据目录</a></li>
|
||||
<li><a href="/admin/data/sync">同步GeoNetwork元数据</a></li>
|
||||
|
|
|
@ -0,0 +1,46 @@
|
|||
<?php
|
||||
$this->headTitle($this->config->title->site);
|
||||
$this->headTitle('后台管理');
|
||||
$this->headTitle()->setSeparator(' - ');
|
||||
$this->headLink()->appendStylesheet('/css/admin.css');
|
||||
$this->breadcrumb('<a href="/">首页</a>');
|
||||
$this->breadcrumb('<a href="/admin">后台首页</a>');
|
||||
$this->breadcrumb('<a href="/admin/data">数据管理</a>');
|
||||
$this->breadcrumb('数据文献管理</a>');
|
||||
$this->breadcrumb()->setSeparator(' > ');
|
||||
?>
|
||||
<div id="leftPanel">
|
||||
<?= $this->partial('data/left.phtml'); ?>
|
||||
</div>
|
||||
<div id="rightPanel">
|
||||
<?php if ($this->msg or $this->messages) :?>
|
||||
<div id="message">
|
||||
<?php if ($this->msg) : ?>
|
||||
<p><?php echo $this->msg; ?></p>
|
||||
<?php endif; if ($this->messages): foreach($this->messages as $msg): ?>
|
||||
<p><?php echo $msg; ?></p>
|
||||
<?php endforeach;endif; ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<a href="/admin/data/reference/add/1">添加新的数据文献</a><?= $this->paginator; ?>
|
||||
<?php if (count($this->paginator)): ?>
|
||||
<div id="datasetcd">
|
||||
<?php
|
||||
$u='';
|
||||
$i=0;
|
||||
foreach ($this->paginator as $item):
|
||||
if ($u==$item['uuid']) :
|
||||
$i+=1;
|
||||
else :
|
||||
if (!empty($u)) echo '</ul>';
|
||||
$i=0;
|
||||
$u=$item['uuid'];
|
||||
endif;
|
||||
if ($i==0) echo '<ul><li>元数据:<a href="/data/'.$item['uuid'].'">'.$item['title'].'</a>(<a href="/admin/data/reference/add/1/uuid/'.$item['uuid'].'">添加</a>)</li>';
|
||||
echo '<li>文献(<a href="/admin/data/reference/edit/'.$item['refid'].'">编辑</a> <a href="/admin/data/reference/delete/'.$item['mdid'].'">删除</a>):'.$item['reference'].'</li>';
|
||||
endforeach;
|
||||
echo '</ul>';
|
||||
?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
|
@ -0,0 +1,46 @@
|
|||
<?php
|
||||
$this->headTitle($this->config->title->site);
|
||||
$this->headTitle('后台管理');
|
||||
$this->headTitle()->setSeparator(' - ');
|
||||
$this->headLink()->appendStylesheet('/css/admin.css');
|
||||
$this->breadcrumb('<a href="/">首页</a>');
|
||||
$this->breadcrumb('<a href="/admin">后台首页</a>');
|
||||
$this->breadcrumb('<a href="/admin/data">数据管理</a>');
|
||||
$this->breadcrumb('数据文献管理</a>');
|
||||
$this->breadcrumb()->setSeparator(' > ');
|
||||
?>
|
||||
<div id="leftPanel">
|
||||
<?= $this->partial('data/left.phtml'); ?>
|
||||
</div>
|
||||
<div id="rightPanel">
|
||||
<?php if ($this->msg or $this->messages) :?>
|
||||
<div id="message">
|
||||
<?php if ($this->msg) : ?>
|
||||
<p><?php echo $this->msg; ?></p>
|
||||
<?php endif; if ($this->messages): foreach($this->messages as $msg): ?>
|
||||
<p><?php echo $msg; ?></p>
|
||||
<?php endforeach;endif; ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<a href="/admin/data/reference/add/1">添加新的数据文献</a><?= $this->paginator; ?>
|
||||
<?php if (count($this->paginator)): ?>
|
||||
<div id="datasetcd">
|
||||
<?php
|
||||
$u='';
|
||||
$i=0;
|
||||
foreach ($this->paginator as $item):
|
||||
if ($u==$item['uuid']) :
|
||||
$i+=1;
|
||||
else :
|
||||
if (!empty($u)) echo '</ul>';
|
||||
$i=0;
|
||||
$u=$item['uuid'];
|
||||
endif;
|
||||
if ($i==0) echo '<ul><li>元数据:<a href="/data/'.$item['uuid'].'">'.$item['title'].'</a>(<a href="/admin/data/reference/add/1/uuid/'.$item['uuid'].'">添加</a>)</li>';
|
||||
echo '<li>文献(<a href="/admin/data/reference/edit/'.$item['mdid'].'">编辑</a> <a href="/admin/data/reference/delete/'.$item['mdid'].'">删除</a>):'.$item['reference'].'</li>';
|
||||
endforeach;
|
||||
echo '</ul>';
|
||||
?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
|
@ -0,0 +1,27 @@
|
|||
<?php
|
||||
$this->headTitle($this->config->title->site);
|
||||
$this->headTitle('后台管理');
|
||||
$this->headTitle()->setSeparator(' - ');
|
||||
$this->headLink()->appendStylesheet('/css/admin.css');
|
||||
$this->breadcrumb('<a href="/">首页</a>');
|
||||
$this->breadcrumb('<a href="/admin">后台首页</a>');
|
||||
$this->breadcrumb('<a href="/admin/data">数据管理</a>');
|
||||
$this->breadcrumb('数据文献管理</a>');
|
||||
$this->breadcrumb()->setSeparator(' > ');
|
||||
?>
|
||||
<div id="leftPanel">
|
||||
<?= $this->partial('data/left.phtml'); ?>
|
||||
</div>
|
||||
<div id="rightPanel">
|
||||
<?php if ($this->msg or $this->messages) :?>
|
||||
<div id="message">
|
||||
<?php if ($this->msg) : ?>
|
||||
<p><?php echo $this->msg; ?></p>
|
||||
<?php endif; if ($this->messages): foreach($this->messages as $msg): ?>
|
||||
<p><?php echo $msg; ?></p>
|
||||
<?php endforeach;endif; ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<a href="/admin/data/reference/add/1">添加新的数据文献</a>
|
||||
<?= $this->form; ?>
|
||||
</div>
|
|
@ -0,0 +1,27 @@
|
|||
<?php
|
||||
$this->headTitle($this->config->title->site);
|
||||
$this->headTitle('后台管理');
|
||||
$this->headTitle()->setSeparator(' - ');
|
||||
$this->headLink()->appendStylesheet('/css/admin.css');
|
||||
$this->breadcrumb('<a href="/">首页</a>');
|
||||
$this->breadcrumb('<a href="/admin">后台首页</a>');
|
||||
$this->breadcrumb('<a href="/admin/data">数据管理</a>');
|
||||
$this->breadcrumb('特色推荐管理</a>');
|
||||
$this->breadcrumb()->setSeparator(' > ');
|
||||
?>
|
||||
<div id="leftPanel">
|
||||
<?= $this->partial('data/left.phtml'); ?>
|
||||
</div>
|
||||
<div id="rightPanel">
|
||||
<?php if ($this->msg or $this->messages) :?>
|
||||
<div id="message">
|
||||
<?php if ($this->msg) : ?>
|
||||
<p><?php echo $this->msg; ?></p>
|
||||
<?php endif; if ($this->messages): foreach($this->messages as $msg): ?>
|
||||
<p><?php echo $msg; ?></p>
|
||||
<?php endforeach;endif; ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<a href="/admin/data/reference/add/1">添加新的数据文献</a>
|
||||
<?= $this->form; ?>
|
||||
</div>
|
|
@ -551,6 +551,10 @@ class DataController extends Zend_Controller_Action
|
|||
$sql="select * from onlineresource where uuid=? and description<>'数据说明文档' and (linkage not like '%ftp.westgis%') and (linkage not like '%westdc%')";
|
||||
$sql=$db->quoteInto($sql,$uuid);
|
||||
$this->view->resources=$db->fetchAll($sql);
|
||||
//建议参考文献
|
||||
$sql="select r.* from reference r left join mdref m on m.refid=r.id where m.uuid=?";
|
||||
$sql=$db->quoteInto($sql,$uuid);
|
||||
$this->view->ref=$db->fetchAll($sql);
|
||||
//相关用户
|
||||
$sql="select p.individual,p.organisation,r.role from role r left join responsible p on r.resid=p.id where r.uuid=? order by r.role,r.id";
|
||||
$this->view->authors=$db->fetchAll($sql,array($uuid));
|
||||
|
|
|
@ -144,8 +144,18 @@ endforeach;
|
|||
<h2>本数据引用方式</h2>
|
||||
<p><?php echo $this->escape($md->citation);?></p>
|
||||
<?php endif; ?>
|
||||
<h2>数据使用声明</h2>
|
||||
<?php if ($this->uselimits) :
|
||||
<?php if ($this->ref) : ?>
|
||||
<h2>建议参考文献</h2>
|
||||
<ol>
|
||||
<?php foreach($this->ref as $ref) :
|
||||
echo '<li>'.$ref['reference'].'</li>';
|
||||
endforeach;
|
||||
?>
|
||||
</ol>
|
||||
<?php endif; ?>
|
||||
<h2>数据使用声明</h2>
|
||||
<?php
|
||||
if ($this->uselimits) :
|
||||
foreach($this->uselimits as $uselimit) :
|
||||
echo str_replace(array("\r\n", "\n", "\r"),'</p><p>',$this->escape($uselimit['uselimit']));
|
||||
endforeach;
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
<?php
|
||||
|
||||
class ReferenceForm extends Zend_Form
|
||||
{
|
||||
public function __construct($options = null)
|
||||
{
|
||||
parent::__construct($options);
|
||||
$this->setName('Reference');
|
||||
|
||||
$uuid = new Zend_Form_Element_Text('uuid');
|
||||
$uuid->setLabel('UUID')->setRequired(true)->addValidator('NotEmpty')
|
||||
->addFilter('StripTags') ->addFilter('StringTrim');
|
||||
|
||||
|
||||
$reference=new Zend_Form_Element_Text('reference');
|
||||
$reference->setLabel('文献')
|
||||
->setRequired(true)
|
||||
->addFilter('StringTrim')
|
||||
->addValidator('NotEmpty');
|
||||
|
||||
$link=new Zend_Form_Element_Text('link');
|
||||
$link->setLabel('URL(optional)')
|
||||
->addFilter('StringTrim');
|
||||
|
||||
$submit = new Zend_Form_Element_Submit('submit');
|
||||
$submit->setAttrib('id', 'submitbutton')->setLabel('发送');
|
||||
$this->addElements(array($uuid,$reference,$link,$submit));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue