From 8162580014f447b81d5b3f4a06514ea1ebb8ba66 Mon Sep 17 00:00:00 2001
From: wlx
Date: Sun, 12 May 2013 10:30:30 +0000
Subject: [PATCH] remove docAction in DataController, add doiAction, add doi
view
---
.../default/controllers/DataController.php | 129 ++++++------------
.../default/views/scripts/data/doi.phtml | 58 ++++++++
2 files changed, 97 insertions(+), 90 deletions(-)
create mode 100644 application/default/views/scripts/data/doi.phtml
diff --git a/application/default/controllers/DataController.php b/application/default/controllers/DataController.php
index 4e683426..0ab51b1b 100755
--- a/application/default/controllers/DataController.php
+++ b/application/default/controllers/DataController.php
@@ -1851,95 +1851,7 @@ class DataController extends Zend_Controller_Action
}
}
- /*
- * 转换元数据为WORD DOC格式
- */
- public function docAction()
- {
- $this->_helper->layout->disableLayout();
- $this->_helper->viewRenderer->setNoRender();
- $uuid=$this->_request->getParam('uuid');
- $review=$this->_request->getParam('review');
- if (!empty($uuid))
- {
- $sql="select x.data,m.title,m.description,g.id,m.projection from xml x left join metadata m on m.id=x.id left join geonetworkmetadata g on g.uuid=m.uuid where m.uuid=".$this->db->quote($uuid);
- $row=$this->db->fetchRow($sql);
- $sql="select r.* from reference r left join mdref m on m.refid=r.id where m.uuid=?";
- $sql=$this->db->quoteInto($sql,$uuid);
- $ref=$this->db->fetchAll($sql);
- $reference='';
- foreach($ref as $refer)
- {
- $reference.='- '.$refer['reference'].'
';
- }
- $reference.='
';
- if (is_numeric($row['projection']))
- {
- $sql="select proj4text from spatial_ref_sys where auth_srid=?";
- $rs=$this->db->fetchRow($sql,array($row['projection']));
- if ($rs) $projection=$rs['proj4text'];
- }
- if (empty($projection)) $projection=$row['projection'];
- } else
- $projection='';
-
- $dom = new DOMDocument();
- $dom->loadXML($row['data']);
- //提前对表格进行预处理
- $wiki=new WikiFormat();
- $abs=$wiki->parseTable($this->view->escape($row["description"]));
- //处理外部链接
- $abs=preg_replace('/\[\s*(http:\/\/.+?)\s+(.*?)\]/m','$2',$abs);
- $abs=str_replace(array("\r\n", "\n", "\r"),'
',$abs);
- $abs=str_replace("'","'",$abs);//not needed?
- $id = $row['id'];
- $thumburl=sprintf('%05d',floor(($id+0.1)/100)*100).'-'.sprintf('%05d',ceil(($id+0.1)/100)*100-1)."/".$id;
- $xslt = new XSLTProcessor();
- $xslt->registerPHPFunctions();
- $xslt->setParameter('', 'thumburl', $thumburl);
- $xslt->setParameter('', 'abstract', $abs);
- $xslt->setParameter('','projection',$projection);
- $xslt->setParameter('','reference',$reference);
- $XSL = new DOMDocument();
- $XSL->load( '../data/doc.xsl', LIBXML_NOCDATA);
- $xslt->importStylesheet($XSL);
- $content='
-
';
- $content.=''.$row['title'].'';
- $content.='
-
- ';
- $content.=$xslt->transformToXML($dom);
- if ($review==1) $content.=file_get_contents('../data/review-table.htm',true);
- $content.="";
- $this->getResponse()->setHeader('Content-Type', 'application/vnd.ms-doc')
- ->setHeader('Content-Disposition','attachment; filename="'.$row['title'].'.doc"')
- ->setHeader('Content-Length', strlen($content))
- ->setHeader('Content-Type','application/force-download')
- ->setHeader('Content-Type','application/download')
- ->setHeader('Content-Description','File Transfer')
- ->setHeader('Content-Transfer-Encoding','binary')
- ->setHeader('Expires',0)
- ->setHeader('Cache-Control','must-revalidate, post-check=0, pre-check=0')
- ->setHeader('Pragma','public')
- ->setBody($content);
- }
+
public function jsonexit($data){
$this->getResponse()->setHeader('Content-Type', 'application/json')->appendBody(json_encode($data,JSON_NUMERIC_CHECK));
@@ -1999,6 +1911,43 @@ class DataController extends Zend_Controller_Action
$this->view->paginator=$paginator;
$this->_helper->viewRenderer('fund-list');
}
- }
+ }
+
+ //实现基于DOI信息的浏览
+ function doiAction()
+ {
+ $ac = $this->_request->getParam('ac');
+ if ($ac=='unready') {
+ //列出没有DOI的数据
+ $sql="select m.* from normalmetadata m where length(m.doi)<3 and m.uuid not in (select uuid from datadoi) order by m.ts_created desc";
+ $this->view->pageID='doi-unready';
+ } else if ($ac=='prepare') {
+ //列出有DOI但还未进行提交申请的数据
+ $sql="select m.* from normalmetadata m where length(m.doi)>3 and m.uuid not in (select uuid from datadoi) order by m.ts_created desc";
+ $this->view->pageID='doi-prepare';
+ } else if ($ac=='unsubmit') {
+ //列出有DOI并计划提交申请的数据
+ $sql="select m.*,d.doi as datadoi,date(d.ts_created) as ts_created from normalmetadata m left join datadoi d on m.uuid=d.uuid where length(m.doi)>3 and d.ts_created is not null and d.ts_submitted is null order by d.ts_created desc";
+ $this->view->pageID='doi-unsubmit';
+ } else if ($ac=='submit') {
+ //列出有DOI并计划提交申请的数据
+ $sql="select m.*,d.doi as datadoi,date(d.ts_submitted) as ts_submitted from normalmetadata m left join datadoi d on m.uuid=d.uuid where length(m.doi)>3 and d.ts_submitted is not null and d.ts_published is null order by d.ts_submitted desc,d.ts_created desc";
+ $this->view->pageID='doi-submit';
+ } else if ($ac=='publish' || empty($ac)) {
+ //默认:列出最新发布的DOI数据
+ $sql="select m.*,d.doi as datadoi,date(d.ts_submitted) as ts_submitted,date(d.ts_published) as ts_published from normalmetadata m left join datadoi d on m.uuid=d.uuid where length(m.doi)>3 and d.ts_published is not null order by d.ts_published desc,d.ts_submitted desc,d.ts_created desc";
+ $this->view->pageID='doi-publish';
+ }
+ $sth = $this->db->prepare($sql);
+ $sth->execute();
+ $rows = $sth->fetchAll();
+ $paginator = Zend_Paginator::factory($rows);
+ $paginator->setCurrentPageNumber($this->_getParam('page'));
+ $paginator->setItemCountPerPage(10);
+ $paginator->setView($this->view);
+ Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination_param.phtml');
+ $this->view->paginator=$paginator;
+
+ }
}
diff --git a/application/default/views/scripts/data/doi.phtml b/application/default/views/scripts/data/doi.phtml
new file mode 100644
index 00000000..1e43d7e1
--- /dev/null
+++ b/application/default/views/scripts/data/doi.phtml
@@ -0,0 +1,58 @@
+headTitle($this->config->title->site);
+$this->headTitle($this->config->title->data);
+$this->headTitle('支持项目');
+$this->headTitle()->setSeparator(' - ');
+$this->breadcrumb('首页');
+$this->breadcrumb(''.$this->config->title->data.'');
+$this->breadcrumb('DOI浏览');
+$this->breadcrumb()->setSeparator(' > ');
+$this->theme->AppendPlus($this,'colorbox');
+?>
+
+
= $this->breadcrumb() ?>
+= $this->partial('data/tools.phtml'); ?>
+
+
+paginator)) : ?>
+
+= $this->paginator; ?>
+paginator as $md) : ?>
+
+
+= $this->paginator; ?>
+
+暂无对应信息。
+
+