Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
97 changes: 97 additions & 0 deletions event-nodetype/PDFService.grs
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
// simple groovy script

import javax.ws.rs.Path
import javax.ws.rs.GET
import javax.ws.rs.PathParam
import javax.ws.rs.Produces
import javax.ws.rs.core.Context
import javax.ws.rs.core.Response
import javax.ws.rs.core.UriInfo

import java.net.*
import java.io.*

import javax.jcr.ItemNotFoundException
import javax.jcr.Node
import javax.jcr.Property
import javax.jcr.PathNotFoundException
import javax.jcr.RepositoryException
import javax.jcr.Session
import javax.jcr.Value
import javax.jcr.ValueFormatException

import net.sf.jasperreports.engine.JRException
import net.sf.jasperreports.engine.JasperCompileManager
import net.sf.jasperreports.engine.JasperExportManager
import net.sf.jasperreports.engine.JasperFillManager
import net.sf.jasperreports.engine.JasperPrint
import net.sf.jasperreports.engine.JasperReport
import net.sf.jasperreports.engine.design.JasperDesign
import net.sf.jasperreports.engine.xml.JRXmlLoader
import net.sf.jasperreports.engine.JREmptyDataSource

import org.exoplatform.container.ExoContainerContext
import org.exoplatform.services.security.ConversationState
import org.exoplatform.services.jcr.ext.common.SessionProvider
import org.exoplatform.services.jcr.RepositoryService
import org.exoplatform.services.jcr.core.ManageableRepository

@Path("/pdf")
public class PDFService {
@GET
@Path("export/event/{nodeId}")
@Produces("application/pdf")
public Response getPdf(@PathParam("nodeId") String nodeId, @Context UriInfo uriInfo) {

try {
// Load and compile the report template (compile should have been done before, not at runtime)
String baseUri = uriInfo.getBaseUri().toString();
if(baseUri.endsWith("/private")) {
baseUri = baseUri.substring(0, baseUri.indexOf("/private"));
}
URL urlReport = new URL(baseUri + "/jcr/repository/dev-monit/jasper/event-report.xml");
InputStream input = urlReport.openStream();
JasperDesign jasperDesign = JRXmlLoader.load(input);

JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);

jasperReport.setWhenNoDataType(jasperReport.WHEN_NO_DATA_TYPE_ALL_SECTIONS_NO_DETAIL);

// Retrieve node
RepositoryService repositoryService = (RepositoryService) ExoContainerContext.getCurrentContainer().getComponentInstanceOfType(RepositoryService.class);
ManageableRepository manageableRepository = repositoryService.getRepository("repository");
SessionProvider sessionProvider = new SessionProvider(ConversationState.getCurrent());
def session = sessionProvider.getSession("collaboration", manageableRepository);
def node = session.getNodeByUUID(nodeId);
def name = node.getProperty("exo:name").getString();
def title = node.getProperty("exo:title").getString();
def location = node.getProperty("exo:location").getString();
def url = node.getProperty("exo:url").getString();
def startDate = node.getProperty("exo:startEvent").getDate().getTime();
def endDate = node.getProperty("exo:endEvent").getDate().getTime();
def summary = node.getProperty("exo:summary").getString();
def content = node.getProperty("exo:text").getString();

// Data sent to the report engine
Map parameters = new HashMap();
parameters.put("title", title);
parameters.put("location", location);
parameters.put("url", url);
parameters.put("startDate", startDate.format('dd/MM/yyyy'));
parameters.put("endDate", endDate.format('dd/MM/yyyy'));
parameters.put("summary", summary);
parameters.put("content", content);

// Feed the report engine
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JREmptyDataSource());

// Get the PDF version
byte[] pdfContent = JasperExportManager.exportReportToPdf(jasperPrint);

return Response.ok().entity(pdfContent).header("Content-Disposition","attachment; filename="+name+".pdf").build();

} catch(Exception e) {
e.printStackTrace();
}
}
}
257 changes: 257 additions & 0 deletions event-nodetype/Stylesheet-lt.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,257 @@
/**
LTR skin for exo:article template
*/
.UIArticle {
background: white;
padding: 8px;
}

.TitleLabel {
background: white;
padding: 0px 0px 5px 10px;
font-size: 16px;
color: #060606;
font-weight: bold;
}

.LocationLabel {
padding: 0px 0px 5px 10px;
font-size: 12px;
color: #080808;
font-weight: bold;
}

.MapsFrame {
padding: 0px 0px 5px 10px;
}

.LabelContent {
padding-bottom: 5px;
}

.StartDateLabel {
float: right;
}

.EndDateLabel {
float: right;
}

.ArrowDate {
float: right;
background: url('/eXoDMSResources/skin/images/event/RightArrow.gif') no-repeat;
width:16px;
height:16px;
margin: 10px;
}


/* Outer div */
div.datetime {
border:1px solid #000;
width:40px;
}

div.datetime p {
margin:0 auto;
padding:0;
text-align:center;
font-size:x-small;
}

div.datetime .top {
color:#fefefe;
background-color:#2f4765;
padding: 2px 0px;
}

div.datetime .top p {
font:bold x-small/100% Georgia, "New Century Schoolbook", "Book Antiqua", "Times New Roman", serif;
letter-spacing:0.12em;
text-transform:uppercase;
}

/* day of the month (NUMBER) */
div.datetime p.day {
font:bold 1.5em/98% Georgia, "New Century Schoolbook", "Book Antiqua", "Times New Roman", serif;
letter-spacing:0.13em;
padding-left: 2px;
}

/* year */
div.datetime p.yr {
font:x-small/110% Verdana,Geneva,Arial,Helvetica,sans-serif;
letter-spacing:0.05em;
padding-bottom: 2px;
}


.UIArticle .ArticleFrame {
background: white;
padding: 0px 10px;
}

.UIArticle .ArticleFrame .TopLeftArticleFrame {
background: url('/eXoDMSResources/skin/images/article/ImageArticle.gif') no-repeat left -16px;
padding-left: 9px;
}

.UIArticle .ArticleFrame .TopRightArtictleFrame {
background: url('/eXoDMSResources/skin/images/article/ImageArticle.gif') no-repeat right -16px;
padding-right: 2px;
}

.UIArticle .ArticleFrame .TopCenterArticleFrame {
background: url('/eXoDMSResources/skin/images/article/ImageArticle.gif') repeat-x right -32px;
height: 16px;
}

.UIArticle .ArticleFrame .ArticleFrameContainer {
border: solid 1px #e0e0e0;
border-top: none;
}

.UIArticle .TopCenterArticleFrame .ArticleField {
padding: 0px 0px 0px 5px;
width: 120px;
background: #fff;
height: 16px;
float: left;
}

.UIArticle .MidlleLeftArticleFrame {
background: white;
}

.UIArticle .FieldLabel {
float: left;
font-weight: bold;
}

.UIArticle .FieldIcon {
float: left;
margin-right: 5px;
width: 16px;
height: 16px;
}

.UIArticle .SummaryIcon {
background: url('/eXoDMSResources/skin/images/article/ImageArticle.gif') no-repeat left -48px;
}

.UIArticle .AttachmentsIcon {
background: url('/eXoDMSResources/skin/images/article/ImageArticle.gif') no-repeat left -64px;
}

.UIArticle .RatingIcon {
background: url('/eXoDMSResources/skin/images/article/Artitcle.gif') no-repeat left -64px;
}

.UIArticle .AttachmentsContainer .AttachmentsContentIcon {
background: url('/eXoDMSResources/skin/images/article/AttachmentsIcon.gif') no-repeat left top;
margin: 0px 5px 0px 3px;
padding-left: 18px;
height: 15px;
float: left;
}

.UIArticle .AttachmentsContainer .RemoveAttachments {
background: url('/eXoDMSResources/skin/images/article/DustBin.gif') no-repeat left top;
margin: 0px 5px 0px 3px;
padding-left: 18px;
height: 16px;
cursor: pointer;
float: left;
}

.UIArticle .ContentIcon {
background: url('/eXoDMSResources/skin/images/article/ImageArticle.gif') no-repeat left -96px;
}

.UIArticle .LinksIcon {
background: url('/eXoDMSResources/skin/images/article/ImageArticle.gif') no-repeat left -80px;
}

.UIArticle .FieldContent {
padding: 1px 5px 5px 0px;
width: 90%;
}

.UIArticle .FieldContent .FieldContainerContent {
font: normal 11px Verdana;
background: white;
margin: 5px 2px 3px 5px;
}

.UIArticle .FieldContent .LabelContent{
padding: 5px 0px 0px 5px;
overflow: auto;
text-align: left;
}

.UIArticle .LabelContent p a {
color: #058EE6;
text-decoration: underline;
}

.UIArticle .DocumentRating {
margin-left: 150px;
width: 300px;
}

.UIArticle .ContainerLinks {
border-top: dotted 1px #dcdcdc;
margin: 12px 10px 0px 10px;
padding: 5px;
}

.UIArticle .ContentLinks {
float: left;
width: 75px;
}

.UIArticle .WorkContentLinks {
float: left;
padding-left: 5px;
}

.UIArticle .Links div {
padding-bottom: 3px;
}

.UIArticle .Links a {
text-decoration: none;
color: #058ee6;
}

.UIArticle .Links a:hover {
text-decoration: underline;
color: orange;
}

.UIArticle .ArticleTCDecorator .Language {
text-align: left;
color: #7d7d7d;
padding: 12px 0px 0px 10px;
font-weight: bold;
}

.UIArticle .Language a.LanguageTitle {
text-align: left;
color: #058ee6;
font-weight: normal;
}

.UIArticle .Language a:hover.LanguageTitle {
text-align: left;
color: #ffa21d;
font-weight: normal;
}

.UIArticle .Language a:hover.DefaultLanguageTitle {
text-align: left;
color: #ffa21d;
font-weight: bold;
}


Loading