mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-14 17:58:59 +00:00
Merged HEAD-BUG-FIX (5.0/Cloud) to HEAD (5.0/Cloud)
80924: Merged EOL (5.0/Cloud) to HEAD-BUG-FIX (5.0/Cloud) 80469: ACE-2091 EOL Explorer. ACE-2014 EOL URL Addressibility API - 90% of the Explorer Client config, pages and assets moved to privatemodules/thor - Explorer client available via mvn -Pcloud build only - Alfresco minimal index page added - Deprecated and disabled: Servlets related to Explorer e.g. ExternalAccessServlet, CommandServlet - will be removed fully in 5.1 - Removed: Explorer liferay portlet context, jboss portlet context, collaboration WebScript remoteapi (Explorer), old web assets no longer used - Tested: Enterprise build, Cloud build, build unit tests, NTLM SSO/Cookie SSO path git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@83132 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -1,8 +0,0 @@
|
||||
<webscript>
|
||||
<shortname>Blog Custom View</shortname>
|
||||
<description>Collaboration Blog Space view</description>
|
||||
<url>/collaboration/blogSpace?nodeRef={noderef}</url>
|
||||
<format default="html"/>
|
||||
<authentication>user</authentication>
|
||||
<transaction>required</transaction>
|
||||
</webscript>
|
@@ -1,176 +0,0 @@
|
||||
<div id="collabContainer">
|
||||
|
||||
<#if blogSpace.actionResult != "">
|
||||
<div class="collabError">${blogSpace.actionResult}</div>
|
||||
</#if>
|
||||
|
||||
<div class="collabHeader">
|
||||
<span>Articles pending publishing (${blogSpace.pending?size})</span>
|
||||
</div>
|
||||
|
||||
<div class="collabContent">
|
||||
|
||||
<table width="100%" cellpadding="0" cellspacing="0">
|
||||
<tr valign="top">
|
||||
<td width="1" style="background-color:#cacfd3;"></td>
|
||||
<td>
|
||||
|
||||
<table width="100%" cellpadding="16" cellspacing="0">
|
||||
<tr valign="top">
|
||||
<td>
|
||||
|
||||
<table width="100%" cellpadding="0" cellspacing="0">
|
||||
<tr class="blogRowHeader">
|
||||
<td> </td>
|
||||
<td>Name</td>
|
||||
<td>Created on</td>
|
||||
<td>Created by</td>
|
||||
<td>Actions</td>
|
||||
</tr>
|
||||
<#assign rowNum = 0>
|
||||
<#list blogSpace.pending as article>
|
||||
<#assign n = article.node>
|
||||
<#assign p = article.person>
|
||||
<#assign rowNum = rowNum + 1>
|
||||
<tr class="blogRowPost${(rowNum % 2 = 0)?string("Even", "Odd")}">
|
||||
<td><img src="${url.context}${n.icon32}"></td>
|
||||
<td>${n.name}</td>
|
||||
<td>${n.properties["cm:created"]?datetime}</td>
|
||||
<td>${p.properties["cm:firstName"]} ${p.properties["cm:lastName"]}</td>
|
||||
<td>
|
||||
<a class="blogAction" title="Post this article" href="${scripturl("?nodeRef=" + n.parent.nodeRef + "&n=" + n.nodeRef + "&a=p")}"><img src="${url.context}/images/icons/blog_post.png" alt="details"></a>
|
||||
<a class="blogAction" title="Details" href="${url.context}/n/showDocDetails/${n.nodeRef.storeRef.protocol}/${n.nodeRef.storeRef.identifier}/${n.id}"><img src="${url.context}/images/icons/View_details.gif" alt="details"></a>
|
||||
</td>
|
||||
</tr>
|
||||
</#list>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td width="1" style="background-color:#cacfd3;"></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
<div class="collabFooter">
|
||||
<span> </span>
|
||||
</div>
|
||||
|
||||
<div class="collabHeader">
|
||||
<span>Articles to be updated (${blogSpace.updates?size})</span>
|
||||
</div>
|
||||
|
||||
<div class="collabContent">
|
||||
|
||||
<table width="100%" cellpadding="0" cellspacing="0">
|
||||
<tr valign="top">
|
||||
<td width="1" style="background-color:#b9bec4;"></td>
|
||||
<td>
|
||||
<table width="100%" cellpadding="16" cellspacing="0">
|
||||
<tr valign="top">
|
||||
<td>
|
||||
|
||||
<table width="100%" cellpadding="0" cellspacing="0">
|
||||
<tr class="blogRowHeader">
|
||||
<td> </td>
|
||||
<td>Name</td>
|
||||
<td>Published on</td>
|
||||
<td>Modified on</td>
|
||||
<td>Actions</td>
|
||||
</tr>
|
||||
<#assign rowNum = 0>
|
||||
<#list blogSpace.updates as article>
|
||||
<#assign n = article.node>
|
||||
<#assign p = article.person>
|
||||
<#assign rowNum = rowNum + 1>
|
||||
<tr class="blogRowPost${(rowNum % 2 = 0)?string("Even", "Odd")}">
|
||||
<td><img src="${url.context}${n.icon32}"></td>
|
||||
<td>${n.name}</td>
|
||||
<td>${n.properties["blg:lastUpdate"]?datetime}</td>
|
||||
<td>${n.properties["cm:modified"]?datetime}</td>
|
||||
<td>
|
||||
<a class="blogAction" title="Update blog" href="${scripturl("?nodeRef=" + n.parent.nodeRef + "&n=" + n.nodeRef + "&a=u")}"><img src="${url.context}/images/icons/blog_update.png"></a>
|
||||
<a class="blogAction" title="Remove from blog" href="${scripturl("?nodeRef=" + n.parent.nodeRef + "&n=" + n.nodeRef + "&a=r")}"><img src="${url.context}/images/icons/blog_remove.png"></a>
|
||||
<a class="blogAction" title="Details" href="${url.context}/n/showDocDetails/${n.nodeRef.storeRef.protocol}/${n.nodeRef.storeRef.identifier}/${n.id}"><img src="${url.context}/images/icons/View_details.gif" alt="details"></a>
|
||||
</td>
|
||||
</tr>
|
||||
</#list>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td width="1" style="background-color:#b9bec4;"></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
<div class="collabFooter">
|
||||
<span> </span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<style>
|
||||
/* Main Container elements */
|
||||
#collabContainer {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.collabError {
|
||||
background-color: #FFFF90;
|
||||
border: 1px dashed red;
|
||||
font-weight: bold;
|
||||
color: red;
|
||||
padding: 4px;
|
||||
margin: 4px;
|
||||
}
|
||||
|
||||
.collabHeader {
|
||||
background: url(${url.context}/images/parts/collab_topleft.png) no-repeat left top;
|
||||
margin: 0px;
|
||||
padding: 0px 0px 0px 2px;
|
||||
}
|
||||
.collabHeader span {
|
||||
background: url(${url.context}/images/parts/collab_topright.png) no-repeat right top;
|
||||
display: block;
|
||||
float: none;
|
||||
padding: 5px 15px 4px 6px;
|
||||
font-weight: bold;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
.collabContent {
|
||||
}
|
||||
|
||||
.collabFooter {
|
||||
background: url(${url.context}/images/parts/collab_bottomleft.png) no-repeat left top;
|
||||
margin: 0px;
|
||||
padding: 0px 0px 0px 4px;
|
||||
}
|
||||
.collabFooter span {
|
||||
background: url(${url.context}/images/parts/collab_bottomright.png) no-repeat right top;
|
||||
display: block;
|
||||
float: none;
|
||||
padding: 5px 15px 4px 6px;
|
||||
}
|
||||
|
||||
.blogRowHeader {
|
||||
}
|
||||
.blogRowHeader td {
|
||||
border-bottom: 1px solid #ccc;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.blogRowPostEven {
|
||||
background-color: #f0f0f0;
|
||||
}
|
||||
.blogRowPostOdd {
|
||||
}
|
||||
|
||||
.blogAction img {
|
||||
border: none;
|
||||
}
|
||||
</style>
|
@@ -1,100 +0,0 @@
|
||||
/*
|
||||
* blogSpace
|
||||
*
|
||||
* Inputs:
|
||||
* mandatory: nodeRef = parent space nodeRef
|
||||
* optional: n = nodeId for document to action against
|
||||
* a = action
|
||||
* "p" = publish
|
||||
* "u" = update
|
||||
* "r" = remove
|
||||
*
|
||||
* Outputs: blogSpace - object containing node arrays of articles pending and to be updated
|
||||
*/
|
||||
var actionResult = parseArgs(args["n"], args["a"]);
|
||||
model.blogSpace = main(args["nodeRef"], actionResult);
|
||||
|
||||
function parseArgs(nodeId, action)
|
||||
{
|
||||
var result = "";
|
||||
if ((nodeId != null) && (action != null))
|
||||
{
|
||||
var blog = actions.create("blog-post");
|
||||
|
||||
var node = search.findNode(nodeId);
|
||||
if (node != null)
|
||||
{
|
||||
var blogAction = "";
|
||||
var isPublished = false;
|
||||
if ((node.hasAspect("blg:blogPost")) && (node.properties["blg:published"] == true))
|
||||
{
|
||||
isPublished = true;
|
||||
}
|
||||
|
||||
switch (action)
|
||||
{
|
||||
case "p":
|
||||
blogAction = (isPublished ? "" : "post");
|
||||
break;
|
||||
case "u":
|
||||
blogAction = (isPublished ? "update" : "");
|
||||
break;
|
||||
case "r":
|
||||
blogAction = (isPublished ? "remove" : "");
|
||||
break;
|
||||
}
|
||||
|
||||
if (blogAction != "")
|
||||
{
|
||||
blog.parameters.action = blogAction;
|
||||
blog.execute(node);
|
||||
result = blog.parameters["result"];
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
function main(nodeRef, actionResult)
|
||||
{
|
||||
var pending = new Array(),
|
||||
updates = new Array();
|
||||
|
||||
var article = {};
|
||||
var person;
|
||||
|
||||
var space = search.findNode(nodeRef);
|
||||
|
||||
if (space != null)
|
||||
{
|
||||
for each(node in space.children)
|
||||
{
|
||||
person = people.getPerson(node.properties["cm:creator"]);
|
||||
article =
|
||||
{
|
||||
"node": node,
|
||||
"person": person
|
||||
};
|
||||
|
||||
if ((node.hasAspect("blg:blogPost")) && (node.properties["blg:published"] == true))
|
||||
{
|
||||
if (node.properties["cm:modified"] - node.properties["blg:lastUpdate"] > 5000)
|
||||
{
|
||||
updates.push(article);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
pending.push(article);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var blogSpace =
|
||||
{
|
||||
"actionResult": actionResult,
|
||||
"pending": pending,
|
||||
"updates": updates
|
||||
};
|
||||
return blogSpace;
|
||||
}
|
@@ -1,8 +0,0 @@
|
||||
<webscript>
|
||||
<shortname>Blog Summary</shortname>
|
||||
<description>Collaboration Blog Summary</description>
|
||||
<url>/collaboration/blogSummary?nodeRef={noderef}</url>
|
||||
<format default="html"/>
|
||||
<authentication>user</authentication>
|
||||
<transaction>required</transaction>
|
||||
</webscript>
|
@@ -1,2 +0,0 @@
|
||||
${blogSummary.numUpdates} articles need updating<br>
|
||||
${blogSummary.numPending} articles pending
|
@@ -1,53 +0,0 @@
|
||||
/*
|
||||
* blogSummary
|
||||
*
|
||||
* Inputs:
|
||||
* nodeRef = blog space nodeRef
|
||||
*
|
||||
* Outputs:
|
||||
* blogSummary - object containing
|
||||
* numUpdates - number of articles updated since being published
|
||||
* numPending - number of unpublished articles
|
||||
*/
|
||||
model.blogSummary = main(args["nodeRef"]);
|
||||
|
||||
function main(nodeRef)
|
||||
{
|
||||
var numUpdates = 0,
|
||||
numPending = 0;
|
||||
|
||||
if (nodeRef != null)
|
||||
{
|
||||
var space = search.findNode(nodeRef);
|
||||
|
||||
if (space != null)
|
||||
{
|
||||
// generate lucene PATH to get all child documents
|
||||
var path = space.qnamePath + "//*";
|
||||
var nodes = search.luceneSearch("+PATH:\"" + path + "\"" +
|
||||
" +(@cm\\:content.mimetype:\"text/plain\" OR @cm\\:content.mimetype:\"text/html\")");
|
||||
|
||||
for each(node in nodes)
|
||||
{
|
||||
if ((node.hasAspect("blg:blogPost")) && (node.properties["blg:published"] == true))
|
||||
{
|
||||
if (node.properties["cm:modified"] - node.properties["blg:lastUpdate"] > 5000)
|
||||
{
|
||||
++numUpdates;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
++numPending;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var blogSummary =
|
||||
{
|
||||
"numUpdates": numUpdates,
|
||||
"numPending": numPending
|
||||
};
|
||||
return blogSummary;
|
||||
}
|
@@ -1,8 +0,0 @@
|
||||
<webscript>
|
||||
<shortname>Calendar View</shortname>
|
||||
<description>Collaboration Calendar Space view</description>
|
||||
<url>/collaboration/calendar?nodeRef={noderef}</url>
|
||||
<format default="html"/>
|
||||
<authentication>user</authentication>
|
||||
<transaction>required</transaction>
|
||||
</webscript>
|
@@ -1,219 +0,0 @@
|
||||
<!-- Calendar Code v2.1 -->
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="${url.context}/yui/example.css">
|
||||
<link rel="stylesheet" type="text/css" href="${url.context}/yui/assets/tabview.css">
|
||||
<link rel="stylesheet" type="text/css" href="${url.context}/yui/assets/round_tabs.css">
|
||||
<link type="text/css" rel="stylesheet" href="${url.context}/yui/fonts.css"/>
|
||||
<link type="text/css" rel="stylesheet" href="${url.context}/yui/assets/calendar.css"/>
|
||||
<link type="text/css" rel="stylesheet" href="${url.context}/yui/Custom.css"/>
|
||||
|
||||
<script type="text/javascript" src="${url.context}/yui/yahoo.js"></script>
|
||||
<script type="text/javascript" src="${url.context}/yui/event.js"></script>
|
||||
<script type="text/javascript" src="${url.context}/yui/dom.js"></script>
|
||||
<script type="text/javascript" src="${url.context}/yui/element-beta.js"></script>
|
||||
<script type="text/javascript" src="${url.context}/yui/tabview.js"></script>
|
||||
<script type="text/javascript" src="${url.context}/yui/yahoo-min.js" ></script>
|
||||
<script type="text/javascript" src="${url.context}/yui/event-min.js" ></script>
|
||||
<script type="text/javascript" src="${url.context}/yui/connection-min.js" ></script>
|
||||
<script type="text/javascript" src="${url.context}/yui/calendar.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
var tabView;
|
||||
var spaceRef = '${args["nodeRef"]}';
|
||||
|
||||
function showColorWindow(txtColor)
|
||||
{
|
||||
win2 = window.open("${url.context}/images/calendar/color_picker.htm", "colorwind", "height=160,width=200,status=0");
|
||||
win2.colorControl = txtColor;
|
||||
}
|
||||
</script>
|
||||
|
||||
<script type="text/javascript" src="${url.context}/scripts/calendar/calendarScripts.js" ></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/calendar/initializeEventDetails.js" ></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/calendar/saveEventDetails.js" ></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/calendar/eventRetrieversMonthView.js" ></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/calendar/eventRetrieversWeekView.js" ></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/calendar/captureWeekViewEvents.js" ></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/calendar/eventRetrieversDayView.js" ></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/calendar/captureDayViewEvents.js" ></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/calendar/eventCaptureHandlers.js" ></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/calendar/editEventHandlers.js" ></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/calendar/calendarSearch.js" ></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/calendar/calendarUtil.js" ></script>
|
||||
|
||||
<script type="text/javascript" src="${url.context}/scripts/calendar/ColorPicker2.js" ></script>
|
||||
|
||||
<link type="text/css" rel="stylesheet" href="${url.context}/css/calendar/calendarMain.css"/>
|
||||
|
||||
<style type="text/css">
|
||||
#demo .yui-content { padding:1em; } /* pad content container */
|
||||
</style>
|
||||
|
||||
|
||||
<div id="divCalendarMainContainer" class="yui-navset">
|
||||
<ul class="yui-nav">
|
||||
<li class="selected" id="lnkShowMonthEvents"><a href="#showMonthEvents"><em>Month</em></a></li>
|
||||
<li id="lnkShowWeekEvents"><a href="#showWeekEvents"><em>Week</em></a></li>
|
||||
<li id="lnkShowDayEvents"><a href="#showDayEvents"><em>Day</em></a></li>
|
||||
<li id="lnkEventCapture"><a href="#eventCapture"><em>Create New Event</em></a></li>
|
||||
<li id="lnkCalendarSubscribe"><a href="#calendarSubscribe"><em>Calendar Admin</em></a></li>
|
||||
</ul>
|
||||
<div class="yui-content">
|
||||
|
||||
<!-- Start Show and Capture Month View Events -->
|
||||
<div id="showMonthEvents">
|
||||
<BR>
|
||||
<div style="text-align:center">
|
||||
<img src="${url.context}/yui/img/prev.gif" title="Previous Year" onclick="addYearsMonthView(-1)" style="cursor:pointer" />
|
||||
<img src="${url.context}/yui/img/prevMinor.gif" title="Previous Month" onclick="addMonthsMonthView(-1)" style="cursor:pointer" />
|
||||
<img src="${url.context}/yui/img/now.gif" title="This Month" onclick="setCurrentMonthView(event)" style="cursor:pointer" />
|
||||
<img src="${url.context}/yui/img/nextMinor.gif" title="Next Month" onclick="addMonthsMonthView(1)" style="cursor:pointer"/>
|
||||
<img src="${url.context}/yui/img/next.gif" title="Next Year" onclick="addYearsMonthView(1)" style="cursor:pointer" />
|
||||
<span id="spnCurrentDisplayMonth"></span>
|
||||
</div>
|
||||
|
||||
<table id="tabMonthViewMain" border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tr>
|
||||
<th>
|
||||
<span id="spnCurrentDisplayMonthMonthView"></span>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div id="divMonthView"></div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
<!-- Start Show and Capture Month View Events -->
|
||||
|
||||
<!-- Start Show and Capture Week View Events -->
|
||||
<div id="showWeekEvents">
|
||||
<BR>
|
||||
<div style="text-align:center">
|
||||
<img src="${url.context}/yui/img/prevMinor.gif" title="Previous Week" onclick="callLoadersWeekView(-7)" style="cursor:pointer" />
|
||||
<img src="${url.context}/yui/img/now.gif" title="This Week" onclick="callLoadersWeekView(0)" style="cursor:pointer" />
|
||||
<img src="${url.context}/yui/img/nextMinor.gif" title="Next Week" onclick="callLoadersWeekView(7)" style="cursor:pointer" />
|
||||
<span id="spnCurrentDisplayWeek"></span>
|
||||
</div>
|
||||
<table id="tabWeekViewMain" border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tr>
|
||||
<th>
|
||||
<span id="spnCurrentDisplayWeekWeekView"></span>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div id="divWeekView">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<!-- End Show and Capture Week View Events -->
|
||||
|
||||
<!-- Start Show and Capture Day View Events -->
|
||||
<div id="showDayEvents">
|
||||
<BR>
|
||||
<div style="text-align:center">
|
||||
<img src="${url.context}/yui/img/prevMinor.gif" title="Previous Day" onclick="callLoadersDayView(-1)" style="cursor:pointer" />
|
||||
<img src="${url.context}/yui/img/now.gif" title="Today" onclick="callLoadersDayView(0)" style="cursor:pointer" />
|
||||
<img src="${url.context}/yui/img/nextMinor.gif" title="Next Day" onclick="callLoadersDayView(1)" style="cursor:pointer" />
|
||||
<span id="spnCurrentDisplayDay"></span>
|
||||
</div>
|
||||
<table id="tabDayViewMain" border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tr>
|
||||
<th>
|
||||
<span id="spnCurrentDisplayDayDayView"></span>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div id="divDayView">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<!-- End Show and Capture Day View Events -->
|
||||
|
||||
<!-- Start Create/Edit Events -->
|
||||
<div id="eventCapture">
|
||||
<BR>
|
||||
<div id="cal1Container" style="display:none; position:absolute"></div>
|
||||
<input type="hidden" id="hidFromDate"/>
|
||||
<input type="hidden" id="hidToDate"/>
|
||||
<table id="tabEventCapture" border="0" cellpadding="4" cellspacing="1" width="100%">
|
||||
<thead>
|
||||
<tr>
|
||||
<th colspan="2">Enter Event Information<span id="spnEventCapture"></span></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tr class='alternateRow'>
|
||||
<td>What *</td>
|
||||
<td><input type="text" id="txtWhatEvent" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>When *</td>
|
||||
<td>
|
||||
<input type="text" id="txtFromDate" readonly="readonly" onfocus="ToggleCalendar(1, this)" />
|
||||
<select id="lstFromTime"></select>
|
||||
to
|
||||
<input type="text" id="txtToDate" readonly="readonly" onfocus="ToggleCalendar(1, this)" />
|
||||
<select id="lstToTime"></select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class='alternateRow'>
|
||||
<td>Where</td>
|
||||
<td><input type="text" id="txtWhereEvent" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Description</td>
|
||||
<td><textarea id="txtDescriptionEvent" rows="4" cols="50"></textarea></td>
|
||||
</tr>
|
||||
<tr style="display: none;">
|
||||
<td>Color</td>
|
||||
<td><input type="text" size="10" maxlength="7" id="txtColor" readonly="readonly"><input type="button" class="buttonStyle" value="Color picker" onclick="showColorWindow('txtColor')"></td>
|
||||
</tr>
|
||||
<tr class='alternateRow'>
|
||||
<td></td>
|
||||
<td><input class="buttonStyle" type="button" id="btnSubmit" value="Submit" onclick="saveCalendarEvent(false)" /><input class="buttonStyle" type="button" id="btnReset" value="New" onclick="resetEventDetails()" /><input class="buttonStyle" type="button" id="btnDelete" value="Delete" onclick="saveCalendarEvent(true)" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<!-- End Create/Edit Events -->
|
||||
<!-- Start calendar subscription -->
|
||||
<div id="calendarSubscribe">
|
||||
|
||||
<script language="JavaScript">
|
||||
|
||||
function colorHandler(o) {
|
||||
// Success
|
||||
};
|
||||
|
||||
function colorFailureHandler(o) {
|
||||
alert("Failed to set color");
|
||||
};
|
||||
|
||||
// Color picker functions
|
||||
function pickColor(color) {
|
||||
document.getElementById("color2").style.background = color;
|
||||
// Update the calendar color property
|
||||
var params = new Array();
|
||||
params[0] = "ref=" + spaceRef;
|
||||
params[1] = "color=" + escape(color);
|
||||
var url = getContextPath() + "/wcservice/camden/setColor";
|
||||
var colorCallback = {
|
||||
success:colorHandler,
|
||||
failure:colorFailureHandler,
|
||||
argument: { foo:"foo", bar:"bar" }
|
||||
};
|
||||
var request = YAHOO.util.Connect.asyncRequest("POST", url + "?" + params.join("&"), colorCallback, null);
|
||||
};
|
||||
|
||||
var picker = new ColorPicker();
|
||||
</script>
|
||||
</div> <!-- end of calendar subscription -->
|
||||
</div>
|
||||
</div>
|
@@ -1,8 +0,0 @@
|
||||
<webscript>
|
||||
<shortname>Calendar Summary</shortname>
|
||||
<description>Collaboration Calendar Summary</description>
|
||||
<url>/collaboration/calendarSummary?nodeRef={noderef}</url>
|
||||
<format default="html"/>
|
||||
<authentication>user</authentication>
|
||||
<transaction>required</transaction>
|
||||
</webscript>
|
@@ -1,2 +0,0 @@
|
||||
${calendarSummary.thisWeek} events this week<br>
|
||||
${calendarSummary.nextWeek} events next week
|
@@ -1,56 +0,0 @@
|
||||
/*
|
||||
* calendarSummary
|
||||
*
|
||||
* Inputs:
|
||||
* nodeRef = Calendar space nodeRef
|
||||
*
|
||||
* Outputs:
|
||||
* calendarSummary - object containing
|
||||
* eventsthis - Number of events occuring this
|
||||
* eventsTomorrow - Number of events occuring tomorrow
|
||||
*/
|
||||
model.calendarSummary = main(args["nodeRef"]);
|
||||
|
||||
function main(nodeRef)
|
||||
{
|
||||
var thisWeek = 0,
|
||||
nextWeek = 0;
|
||||
|
||||
if (nodeRef != null)
|
||||
{
|
||||
var calSpace = search.findNode(nodeRef);
|
||||
if (calSpace != null)
|
||||
{
|
||||
// generate lucene PATH to calendar events
|
||||
var path = calSpace.qnamePath + "/cm:CalEvents/*";
|
||||
|
||||
// find the events scheduled for this week
|
||||
var fromDate = new Date();
|
||||
// go back to previous Sunday
|
||||
fromDate.setDate(fromDate.getDate() - fromDate.getDay());
|
||||
var fromQuery = fromDate.getFullYear() + "\\-" + (fromDate.getMonth()+1) + "\\-" + fromDate.getDate();
|
||||
var toDate = new Date();
|
||||
toDate.setDate(fromDate.getDate() + 7);
|
||||
var toQuery = toDate.getFullYear() + "\\-" + (toDate.getMonth()+1) + "\\-" + toDate.getDate();
|
||||
var events = search.luceneSearch("+PATH:\"" + path + '"' +
|
||||
" +@ia\\:fromDate:[" + fromQuery + "T00\\:00\\:00 TO " + toQuery + "T23\\:59\\:59]");
|
||||
thisWeek = events.length;
|
||||
|
||||
// increment to and from dates to cover next week
|
||||
fromDate.setDate(toDate.getDate());
|
||||
fromQuery = fromDate.getFullYear() + "\\-" + (fromDate.getMonth()+1) + "\\-" + fromDate.getDate();
|
||||
toDate.setDate(toDate.getDate() + 7);
|
||||
toQuery = toDate.getFullYear() + "\\-" + (toDate.getMonth()+1) + "\\-" + toDate.getDate();
|
||||
events = search.luceneSearch("+PATH:\"" + path + '"' +
|
||||
" +@ia\\:fromDate:[" + fromQuery + "T00\\:00\\:00 TO " + toQuery + "T23\\:59\\:59]");
|
||||
nextWeek = events.length;
|
||||
}
|
||||
}
|
||||
|
||||
var calendarSummary =
|
||||
{
|
||||
"thisWeek": thisWeek,
|
||||
"nextWeek": nextWeek
|
||||
};
|
||||
return calendarSummary
|
||||
}
|
@@ -1,8 +0,0 @@
|
||||
<webscript>
|
||||
<shortname>Colleague Presence Custom View</shortname>
|
||||
<description>Collaboration Colleague Presence view</description>
|
||||
<url>/collaboration/colleaguePresence?nodeRef={noderef}</url>
|
||||
<format default="html"/>
|
||||
<authentication>user</authentication>
|
||||
<transaction>required</transaction>
|
||||
</webscript>
|
@@ -1,119 +0,0 @@
|
||||
<script type="text/javascript" src="${url.context}/scripts/ajax/project_presence.js"></script>
|
||||
|
||||
<div class="collabHeader">
|
||||
<span>
|
||||
<img id="refreshColleagues" src="${url.context}/images/icons/reset.gif" align="top" alt="Refresh">
|
||||
Colleagues Online
|
||||
</span>
|
||||
</div>
|
||||
<div class="colleagueList" rel="${colleaguePresence.colleagues?size}">
|
||||
<div id="colleaguesOnline">
|
||||
</div>
|
||||
<div id="colleaguesNotOnline">
|
||||
<#list colleaguePresence.colleagues?keys as key>
|
||||
<#assign c = colleaguePresence.colleagues[key]>
|
||||
<div class="colleagueRow"<#if c.nodeRef = colleaguePresence.self.nodeRef>rel="self"</#if>>
|
||||
<div class="colleagueAvatar">
|
||||
<#if (c.assocs["cm:avatar"]?exists)>
|
||||
<#assign avatarURL = c.assocs["cm:avatar"][0].url>
|
||||
<#else>
|
||||
<#assign avatarURL = "images/icons/default_avatar.png">
|
||||
</#if>
|
||||
<img src="${url.context}/${avatarURL}" height="48" width="48" alt="avatar">
|
||||
<div class="colleaguePresence" rel="${c.properties["presenceProvider"]!""}|${c.properties["presenceUsername"]!""}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="colleagueDetails">
|
||||
<div class="colleagueName">${c.properties["firstName"]!""} ${c.properties["lastName"]!""}</div>
|
||||
<div class="colleagueDetail">${c.properties["jobtitle"]!""}</div>
|
||||
<div class="colleagueDetail">${c.properties["location"]!""}</div>
|
||||
</div>
|
||||
</div>
|
||||
</#list>
|
||||
</div>
|
||||
</div>
|
||||
<div class="collabFooter">
|
||||
<span> </span>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
/* Colleague Status */
|
||||
#refreshColleagues {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.colleagueList {
|
||||
border-left: 1px solid #CACFD3;
|
||||
border-right: 1px solid #CACFD3;
|
||||
height: 297px;
|
||||
overflow-x: hidden;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
#colleaguesOnline {
|
||||
float: left;
|
||||
}
|
||||
#colleaguesNotOnline {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.colleagueRow {
|
||||
clear: both;
|
||||
float: left;
|
||||
min-height: 56px;
|
||||
padding: 8px 8px 0px;
|
||||
width: 208px;
|
||||
}
|
||||
|
||||
.colleagueAvatar {
|
||||
float: left;
|
||||
position: relative;
|
||||
height: 48px;
|
||||
width: 48px;
|
||||
padding-right: 8px;
|
||||
}
|
||||
|
||||
.colleaguePresence {
|
||||
background-image: url(${url.context}/images/icons/ajax_anim.gif);
|
||||
position: absolute;
|
||||
left: 32px;
|
||||
top: 32px;
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
}
|
||||
|
||||
.colleaguePresence.skype-online
|
||||
{
|
||||
background-image: url(${url.context}/images/icons/presence_skype_online.png) !important;
|
||||
}
|
||||
.colleaguePresence.skype-offline
|
||||
{
|
||||
background-image: url(${url.context}/images/icons/presence_skype_offline.png) !important;
|
||||
}
|
||||
.colleaguePresence.yahoo-online
|
||||
{
|
||||
background-image: url(${url.context}/images/icons/presence_yahoo_online.png) !important;
|
||||
}
|
||||
.colleaguePresence.yahoo-offline
|
||||
{
|
||||
background-image: url(${url.context}/images/icons/presence_yahoo_offline.png) !important;
|
||||
}
|
||||
.colleaguePresence.unknown, .colleaguePresence.skype-unknown, .colleaguePresence.yahoo-unknown
|
||||
{
|
||||
background-image: url(${url.context}/images/icons/presence_status_unknown.png) !important;
|
||||
}
|
||||
.colleaguePresence.none
|
||||
{
|
||||
background-image: url(${url.context}/images/icons/presence_status_none.png) !important;
|
||||
}
|
||||
|
||||
.colleagueDetails {
|
||||
}
|
||||
|
||||
.colleagueName {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.colleagueDetail {
|
||||
}
|
||||
</style>
|
@@ -1,68 +0,0 @@
|
||||
/*
|
||||
* colleaguePresence
|
||||
*
|
||||
* Inputs:
|
||||
* mandatory: nodeRef = parent space nodeRef
|
||||
*
|
||||
* Outputs: colleaguePresence - object containing presence data model
|
||||
*/
|
||||
model.colleaguePresence = main(args["nodeRef"]);
|
||||
|
||||
function main(nodeRef)
|
||||
{
|
||||
var space = search.findNode(nodeRef);
|
||||
var colleagues = {};
|
||||
|
||||
if (space != null)
|
||||
{
|
||||
colleagues = parsePermissions(space);
|
||||
}
|
||||
|
||||
var colleaguePresence =
|
||||
{
|
||||
"colleagues": colleagues,
|
||||
"self": person
|
||||
};
|
||||
return colleaguePresence;
|
||||
}
|
||||
|
||||
function parsePermissions(space)
|
||||
{
|
||||
var tokens, user, group;
|
||||
var userHash = {};
|
||||
|
||||
try
|
||||
{
|
||||
for each(perm in space.permissions)
|
||||
{
|
||||
tokens = perm.split(";");
|
||||
if (tokens[0] == "ALLOWED")
|
||||
{
|
||||
if (("AllCollaboratorContributorCoordinatorEditor").indexOf(tokens[2]) != -1)
|
||||
{
|
||||
user = people.getPerson(tokens[1]);
|
||||
if (user != null)
|
||||
{
|
||||
userHash[user.name] = user;
|
||||
}
|
||||
else
|
||||
{
|
||||
group = people.getGroup(tokens[1]);
|
||||
if (group != null)
|
||||
{
|
||||
for each(user in people.getMembers(group))
|
||||
{
|
||||
userHash[user.name] = user;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
}
|
||||
|
||||
return userHash;
|
||||
}
|
@@ -1,8 +0,0 @@
|
||||
<webscript>
|
||||
<shortname>DocLib Custom View</shortname>
|
||||
<description>Collaboration Document Library view</description>
|
||||
<url>/collaboration/docLibrary?nodeRef={noderef}</url>
|
||||
<format default="html"/>
|
||||
<authentication>user</authentication>
|
||||
<transaction>required</transaction>
|
||||
</webscript>
|
@@ -1,120 +0,0 @@
|
||||
<#assign doclib = companyhome.nodeByReference[args["nodeRef"]]>
|
||||
<#assign datetimeformat="EEE, dd MMM yyyy HH:mm">
|
||||
<div id="collabContainer">
|
||||
|
||||
<div class="collabHeader">
|
||||
<span>Recent Changes</span>
|
||||
</div>
|
||||
|
||||
<table width="100%" cellpadding="0" cellspacing="0">
|
||||
<tr valign="top">
|
||||
<td width="1" style="background-color:#b9bec4;"></td>
|
||||
<td>
|
||||
|
||||
<div class="collabContent">
|
||||
|
||||
<#assign count=0>
|
||||
<#list doclib.childrenByXPath[".//*[subtypeOf('cm:content')]"] as c>
|
||||
<#assign count=count+1>
|
||||
<#assign curl=url.serviceContext + c.serviceUrl>
|
||||
<div class="collab${(count%2=0)?string("RowEven", "RowOdd")}">
|
||||
<div style="float:left">
|
||||
<a href="${curl}" target="new"><img src="${url.context}${c.icon32}" width="32" height="32" border="0" alt="${c.name?html}" title="${c.name?html}"></a>
|
||||
</div>
|
||||
<div style="margin-left:36px;padding: 4px 0px 4px 0px">
|
||||
<div>
|
||||
<div class="collabNodeActions">
|
||||
<a href="${url.context}/n/showDocDetails/${c.nodeRef.storeRef.protocol}/${c.nodeRef.storeRef.identifier}/${c.id}" alt="Details" title="Details"><img src="${url.context}/images/icons/View_details.gif" border="0"></a>
|
||||
</div>
|
||||
<a class="collabNodeLink" href="${curl}" target="new">${c.name?html}</a>
|
||||
</div>
|
||||
<div>
|
||||
<span class="metaData"><#if c.properties.description?exists>${c.properties.description?html}</#if></span>
|
||||
</div>
|
||||
<div>
|
||||
<span class="metaTitle">Modified:</span> <span class="metaData">${c.properties.modified?string(datetimeformat)}</span>
|
||||
<span class="metaTitle">Modified By:</span> <span class="metaData">${c.properties.modifier}</span>
|
||||
<span class="metaTitle">Size:</span> <span class="metaData">${(c.size/1000)?string("0.##")} KB</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</#list>
|
||||
|
||||
</div>
|
||||
|
||||
</td>
|
||||
<td width="1" style="background-color:#b9bec4;"></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div class="collabFooter">
|
||||
<span> </span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
/* Main Container elements */
|
||||
#collabContainer {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.collabHeader {
|
||||
background: url(${url.context}/images/parts/collab_topleft.png) no-repeat left top;
|
||||
margin: 0px;
|
||||
padding: 0px 0px 0px 2px;
|
||||
}
|
||||
.collabHeader span {
|
||||
background: url(${url.context}/images/parts/collab_topright.png) no-repeat right top;
|
||||
display: block;
|
||||
float: none;
|
||||
padding: 5px 15px 4px 6px;
|
||||
font-weight: bold;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
.collabContent {
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.collabFooter {
|
||||
background: url(${url.context}/images/parts/collab_bottomleft.png) no-repeat left top;
|
||||
margin: 0px;
|
||||
padding: 0px 0px 0px 4px;
|
||||
}
|
||||
|
||||
.collabFooter span {
|
||||
background: url(${url.context}/images/parts/collab_bottomright.png) no-repeat right top;
|
||||
display: block;
|
||||
float: none;
|
||||
padding: 5px 15px 4px 6px;
|
||||
}
|
||||
|
||||
div.collabRowOdd {
|
||||
padding: 4px 2px;
|
||||
}
|
||||
|
||||
div.collabRowEven {
|
||||
padding: 4px 2px;
|
||||
background-color: #F1F7FD;
|
||||
}
|
||||
|
||||
span.metaTitle {
|
||||
font-size: 11px;
|
||||
color: #666677;
|
||||
}
|
||||
|
||||
span.metaData {
|
||||
font-size: 11px;
|
||||
color: #515D6B;
|
||||
}
|
||||
|
||||
a.collabNodeLink, a.collabNodeLink:hover {
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
div.collabNodeActions {
|
||||
float: right;
|
||||
padding: 0px 4px;
|
||||
}
|
||||
</style>
|
@@ -1,8 +0,0 @@
|
||||
<webscript>
|
||||
<shortname>Doc Summary</shortname>
|
||||
<description>Collaboration Doc Summary</description>
|
||||
<url>/collaboration/docSummary?nodeRef={noderef}</url>
|
||||
<format default="html"/>
|
||||
<authentication>user</authentication>
|
||||
<transaction>required</transaction>
|
||||
</webscript>
|
@@ -1,2 +0,0 @@
|
||||
${docSummary.numNew} added in the last 7 days<br>
|
||||
${docSummary.numModified} modified in the last 7 days
|
@@ -1,59 +0,0 @@
|
||||
/*
|
||||
* docSummary
|
||||
*
|
||||
* Inputs:
|
||||
* nodeRef = doc space nodeRef
|
||||
*
|
||||
* Outputs:
|
||||
* docSummary - object containing
|
||||
* numNew - number new documents added in the last 7 days
|
||||
* numModified - number of documents modified in the last 7 days
|
||||
*/
|
||||
model.docSummary = main(args["nodeRef"]);
|
||||
|
||||
function main(nodeRef)
|
||||
{
|
||||
var numNew = 0,
|
||||
numModified = 0;
|
||||
|
||||
if (nodeRef != null)
|
||||
{
|
||||
var space = search.findNode(nodeRef);
|
||||
|
||||
if (space != null)
|
||||
{
|
||||
// generate lucene PATH to get all child documents
|
||||
var path = space.qnamePath + "//*";
|
||||
|
||||
var date = new Date();
|
||||
var toQuery = date.getFullYear() + "\\-" + (date.getMonth()+1) + "\\-" + date.getDate();
|
||||
date.setDate(date.getDate() - 7);
|
||||
var fromQuery = date.getFullYear() + "\\-" + (date.getMonth()+1) + "\\-" + date.getDate();
|
||||
|
||||
// documents created in the last 7 days
|
||||
var docs = search.luceneSearch("+PATH:\"" + path + "\"" +
|
||||
" +@cm\\:created:[" + fromQuery + "T00\\:00\\:00 TO " + toQuery + "T23\\:59\\:59]");
|
||||
numNew = docs.length;
|
||||
|
||||
// documents modified in the last 7 days
|
||||
docs = search.luceneSearch("+PATH:\"" + path + "\"" +
|
||||
" +@cm\\:modified:[" + fromQuery + "T00\\:00\\:00 TO " + toQuery + "T23\\:59\\:59]");
|
||||
|
||||
numModified = 0;
|
||||
for each(doc in docs)
|
||||
{
|
||||
if (doc.properties["cm:modified"] - doc.properties["cm:created"] > 1000)
|
||||
{
|
||||
++numModified;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var docSummary =
|
||||
{
|
||||
"numNew": numNew,
|
||||
"numModified": numModified
|
||||
};
|
||||
return docSummary;
|
||||
}
|
@@ -1,8 +0,0 @@
|
||||
<webscript>
|
||||
<shortname>Email Summary</shortname>
|
||||
<description>Collaboration Email Summary</description>
|
||||
<url>/collaboration/emailSummary?nodeRef={noderef}</url>
|
||||
<format default="html"/>
|
||||
<authentication>user</authentication>
|
||||
<transaction>required</transaction>
|
||||
</webscript>
|
@@ -1,2 +0,0 @@
|
||||
${emailSummary.numToday} e-mails have arrived today<br>
|
||||
${emailSummary.numWeek} e-mails in the last 7 days
|
@@ -1,54 +0,0 @@
|
||||
/*
|
||||
* emailSummary
|
||||
*
|
||||
* Inputs:
|
||||
* nodeRef = email space nodeRef
|
||||
*
|
||||
* Outputs:
|
||||
* emailSummary - object containing
|
||||
* numToday - number of articles updated since being published
|
||||
* numWeek - number of unpublished articles
|
||||
*/
|
||||
model.emailSummary = main(args["nodeRef"]);
|
||||
|
||||
function main(nodeRef)
|
||||
{
|
||||
var numToday = 0,
|
||||
numWeek = 0;
|
||||
|
||||
if (nodeRef != null)
|
||||
{
|
||||
var space = search.findNode(nodeRef);
|
||||
|
||||
if (space != null)
|
||||
{
|
||||
// generate lucene PATH to get all child documents
|
||||
var path = space.qnamePath + "//*";
|
||||
|
||||
var date = new Date();
|
||||
var toQuery = date.getFullYear() + "\\-" + (date.getMonth()+1) + "\\-" + date.getDate();
|
||||
var fromQuery = toQuery;
|
||||
|
||||
// emails today
|
||||
var docs = search.luceneSearch("+PATH:\"" + path + "\"" +
|
||||
" +@cm\\:created:[" + fromQuery + "T00\\:00\\:00 TO " + toQuery + "T23\\:59\\:59]");
|
||||
numToday = docs.length;
|
||||
|
||||
date.setDate(date.getDate() - 7);
|
||||
fromQuery = date.getFullYear() + "\\-" + (date.getMonth()+1) + "\\-" + date.getDate();
|
||||
|
||||
// documents modified in the last 7 days
|
||||
docs = search.luceneSearch("+PATH:\"" + path + "\"" +
|
||||
" +@cm\\:modified:[" + fromQuery + "T00\\:00\\:00 TO " + toQuery + "T23\\:59\\:59]");
|
||||
|
||||
numWeek = docs.length;
|
||||
}
|
||||
}
|
||||
|
||||
var emailSummary =
|
||||
{
|
||||
"numToday": numToday,
|
||||
"numWeek": numWeek
|
||||
};
|
||||
return emailSummary;
|
||||
}
|
@@ -1,8 +0,0 @@
|
||||
<webscript>
|
||||
<shortname>Forum Summary</shortname>
|
||||
<description>Collaboration Forum Summary</description>
|
||||
<url>/collaboration/forumSummary?nodeRef={noderef}</url>
|
||||
<format default="html"/>
|
||||
<authentication>user</authentication>
|
||||
<transaction>required</transaction>
|
||||
</webscript>
|
@@ -1,2 +0,0 @@
|
||||
${forumSummary.numPosts} posts in the last 7 days<br>
|
||||
${forumSummary.numTopics} new topics in the last 7 days
|
@@ -1,59 +0,0 @@
|
||||
/*
|
||||
* forumSummary
|
||||
*
|
||||
* Inputs:
|
||||
* nodeRef = forum space nodeRef
|
||||
*
|
||||
* Outputs:
|
||||
* forumSummary - object containing
|
||||
* numPosts - posts in last 7 days
|
||||
* numTopics - new topics in last 7 days
|
||||
*/
|
||||
model.forumSummary = main(args["nodeRef"]);
|
||||
|
||||
function main(nodeRef)
|
||||
{
|
||||
var numPosts = 0,
|
||||
numTopics = 0;
|
||||
|
||||
if (nodeRef != null)
|
||||
{
|
||||
var space = search.findNode(nodeRef);
|
||||
|
||||
if (space != null)
|
||||
{
|
||||
// generate lucene PATH to get forums
|
||||
var path = space.qnamePath + "//*";
|
||||
|
||||
var date = new Date();
|
||||
var toQuery = date.getFullYear() + "\\-" + (date.getMonth()+1) + "\\-" + date.getDate();
|
||||
date.setDate(date.getDate() - 7);
|
||||
var fromQuery = date.getFullYear() + "\\-" + (date.getMonth()+1) + "\\-" + date.getDate();
|
||||
|
||||
// posts created in the last 7 days
|
||||
var docs = search.luceneSearch("+PATH:\"" + path + "\"" +
|
||||
" +TYPE:\"{http://www.alfresco.org/model/forum/1.0}post\"" +
|
||||
" +@cm\\:created:[" + fromQuery + "T00\\:00\\:00 TO " + toQuery + "T23\\:59\\:59]");
|
||||
numPosts = docs.length;
|
||||
|
||||
// topics created in the last 7 days
|
||||
docs = search.luceneSearch("+PATH:\"" + path + "\"" +
|
||||
" +TYPE:\"{http://www.alfresco.org/model/forum/1.0}topic\"" +
|
||||
" +@cm\\:created:[" + fromQuery + "T00\\:00\\:00 TO " + toQuery + "T23\\:59\\:59]");
|
||||
numTopics = docs.length;
|
||||
}
|
||||
}
|
||||
|
||||
var forumSummary =
|
||||
{
|
||||
"numPosts": numPosts,
|
||||
"numTopics": numTopics
|
||||
};
|
||||
return forumSummary;
|
||||
}
|
||||
|
||||
// var query = "TYPE:\"{http://www.alfresco.org/model/content/1.0}person\"";
|
||||
|
||||
|
||||
// {http://www.alfresco.org/model/forum/1.0}topic
|
||||
// {http://www.alfresco.org/model/forum/1.0}post
|
@@ -1,14 +0,0 @@
|
||||
<webscript>
|
||||
|
||||
<!-- Details of the web script -->
|
||||
<shortname>Gallery Sample Data</shortname>
|
||||
<description>Returns data used to populate the Flex gallery sample.</description>
|
||||
|
||||
<!-- Web script URL's -->
|
||||
<url>/collaboration/gallery/{noderef}</url>
|
||||
|
||||
<format default="xml">extension</format>
|
||||
<authentication>user</authentication>
|
||||
<transaction>required</transaction>
|
||||
|
||||
</webscript>
|
@@ -1,9 +0,0 @@
|
||||
|
||||
var gallery = search.findNode(url.extension);
|
||||
if (gallery == undefined || gallery.isContainer == false)
|
||||
{
|
||||
status.code = 404;
|
||||
status.message = "Gallery " + url.extension + " not found.";
|
||||
status.redirect = true;
|
||||
}
|
||||
model.gallery = gallery;
|
@@ -1,21 +0,0 @@
|
||||
|
||||
<gallery>
|
||||
<name>${gallery.name}</name>
|
||||
<#list gallery.children as image>
|
||||
<#if image.isDocument>
|
||||
<image>
|
||||
<url>${absurl(url.context)}${image.url}</url>
|
||||
<#if image.properties["cm:title"]?exists>
|
||||
<title>${image.properties["cm:title"]}</title>
|
||||
<#else>
|
||||
<title/>
|
||||
</#if>
|
||||
<#if image.properties["cm:description"]?exists>
|
||||
<description>${image.properties["cm:description"]}</description>
|
||||
<#else>
|
||||
<description/>
|
||||
</#if>
|
||||
</image>
|
||||
</#if>
|
||||
</#list>
|
||||
</gallery>
|
@@ -1,8 +0,0 @@
|
||||
<webscript>
|
||||
<shortname>Gallery Summary</shortname>
|
||||
<description>Collaboration Gallery Summary</description>
|
||||
<url>/collaboration/gallerySummary?nodeRef={noderef}</url>
|
||||
<format default="html"/>
|
||||
<authentication>user</authentication>
|
||||
<transaction>required</transaction>
|
||||
</webscript>
|
@@ -1,2 +0,0 @@
|
||||
${gallerySummary.numNew} added in the last 7 days<br>
|
||||
${gallerySummary.numTotal} images in this gallery
|
@@ -1,50 +0,0 @@
|
||||
/*
|
||||
* gallerySummary
|
||||
*
|
||||
* Inputs:
|
||||
* nodeRef = gallery space nodeRef
|
||||
*
|
||||
* Outputs:
|
||||
* gallerySummary - object containing
|
||||
* numNew - number of new images in the last 7 days
|
||||
* numTotal - total number of images
|
||||
*/
|
||||
model.gallerySummary = main(args["nodeRef"]);
|
||||
|
||||
function main(nodeRef)
|
||||
{
|
||||
var numNew = 0,
|
||||
numTotal = 0;
|
||||
|
||||
if (nodeRef != null)
|
||||
{
|
||||
var space = search.findNode(nodeRef);
|
||||
|
||||
if (space != null)
|
||||
{
|
||||
// generate lucene PATH to all gallery images
|
||||
var path = space.qnamePath + "//*";
|
||||
|
||||
var date = new Date();
|
||||
var toQuery = date.getFullYear() + "\\-" + (date.getMonth()+1) + "\\-" + date.getDate();
|
||||
date.setDate(date.getDate() - 7);
|
||||
var fromQuery = date.getFullYear() + "\\-" + (date.getMonth()+1) + "\\-" + date.getDate();
|
||||
|
||||
// images added in the last 7 days
|
||||
var images = search.luceneSearch("+PATH:\"" + path + "\"" +
|
||||
" +@cm\\:created:[" + fromQuery + "T00\\:00\\:00 TO " + toQuery + "T23\\:59\\:59]");
|
||||
numNew = images.length;
|
||||
|
||||
// total images
|
||||
images = search.luceneSearch("+PATH:\"" + path + "\"");
|
||||
numTotal = images.length;
|
||||
}
|
||||
}
|
||||
|
||||
var gallerySummary =
|
||||
{
|
||||
"numNew": numNew,
|
||||
"numTotal": numTotal
|
||||
};
|
||||
return gallerySummary;
|
||||
}
|
@@ -1,8 +0,0 @@
|
||||
<webscript>
|
||||
<shortname>Project Space Custom View</shortname>
|
||||
<description>Collaboration Project Space Space view</description>
|
||||
<url>/collaboration/projectSpace?nodeRef={noderef}</url>
|
||||
<format default="html"/>
|
||||
<authentication>user</authentication>
|
||||
<transaction>required</transaction>
|
||||
</webscript>
|
@@ -1,150 +0,0 @@
|
||||
<script type="text/javascript" src="${url.context}/scripts/ajax/project_space.js"></script>
|
||||
|
||||
<div class="collabHeader">
|
||||
<span>
|
||||
<img id="refreshProjectSpace" src="${url.context}/images/icons/reset.gif" align="top" alt="Refresh">
|
||||
${projectSpace.title} Summary
|
||||
</span>
|
||||
</div>
|
||||
<div class="collabContainer">
|
||||
|
||||
<table width="100%" cellpadding="0" cellspacing="0">
|
||||
<tr valign="top">
|
||||
<td width="1" style="background-color:#cacfd3;"></td>
|
||||
<td>
|
||||
<table width="100%" cellpadding="8" cellspacing="0">
|
||||
<tr valign="top">
|
||||
<td>
|
||||
<#assign panelCount = 0>
|
||||
<#list projectSpace.subSpaces?keys?sort as key>
|
||||
<#assign node = projectSpace.subSpaces[key]>
|
||||
<#assign summary = node.properties["cm:summaryWebscript"]!"">
|
||||
<div class="projectSpace">
|
||||
<span>
|
||||
<a class="projectSpaceArrow" href="${url.context}${node.url}"><img src="${url.context}/images/parts/collab_arrow.png" height="16" width="16" alt=">"></a>
|
||||
<div class="projectSpaceIcon">
|
||||
<a href="${url.context}${node.url}"><img src="${url.context}${node.icon64}" height="64" width="64"></a>
|
||||
</div>
|
||||
<div><a class="projectSpaceTitle" href="${url.context}${node.url}">${node.name}</a></div>
|
||||
<div class="projectSpaceSummary" rel="<#if summary != "">${url.context}${summary}?nodeRef=${node.nodeRef}</#if>"></div>
|
||||
</span>
|
||||
</div>
|
||||
<#assign panelCount = panelCount + 1>
|
||||
<#if (panelCount % 2 = 0)>
|
||||
<div style="clear:left;"></div>
|
||||
</#if>
|
||||
</#list>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td width="1" style="background-color:#cacfd3;"></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
<div class="collabFooter">
|
||||
<span> </span>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
/* Main Container elements */
|
||||
#projectContainer {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#projectContainer a img {
|
||||
border: none;
|
||||
}
|
||||
|
||||
#projectSummary {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
#projectColleagues {
|
||||
vertical-align: top;
|
||||
width: 240px;
|
||||
}
|
||||
|
||||
/* Project Summary */
|
||||
.projectTitle {
|
||||
font-family: "Trebuchet MS", Verdana, Helvetica, sans-serif;
|
||||
font-size: medium;
|
||||
font-weight: bold;
|
||||
margin: -8px 0px 4px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.collabHeader {
|
||||
background: url(${url.context}/images/parts/collab_topleft.png) no-repeat left top;
|
||||
margin: 0px;
|
||||
padding: 0px 0px 0px 2px;
|
||||
}
|
||||
.collabHeader span {
|
||||
background: url(${url.context}/images/parts/collab_topright.png) no-repeat right top;
|
||||
display: block;
|
||||
float: none;
|
||||
padding: 5px 15px 4px 6px;
|
||||
font-weight: bold;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
#refreshProjectSpace {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.collabContainer {
|
||||
min-height: 289px;
|
||||
}
|
||||
|
||||
.projectSpace {
|
||||
background: url(${url.context}/images/parts/collab_gradleft.png) no-repeat left top;
|
||||
float: left;
|
||||
margin: 1em 0px;
|
||||
padding: 0px;
|
||||
width: 50%;
|
||||
}
|
||||
.projectSpace span {
|
||||
background: url(${url.context}/images/parts/collab_gradright.png) no-repeat right top;
|
||||
display: block;
|
||||
float: none;
|
||||
margin: 0px 0px 0px 16px;
|
||||
padding: 8px 0px 0px;
|
||||
}
|
||||
|
||||
.projectSpaceArrow {
|
||||
float: right;
|
||||
margin: 0px 16px 0px 0px;
|
||||
}
|
||||
|
||||
.projectSpaceIcon {
|
||||
float: left;
|
||||
padding-right: 8px;
|
||||
}
|
||||
a.projectSpaceTitle:link, a.projectSpaceTitle:visited {
|
||||
font-weight: bold;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
a.projectSpaceTitle:hover {
|
||||
font-weight: bold;
|
||||
font-size: 10pt;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.projectSpaceSummary {
|
||||
margin: 0px 8px;
|
||||
}
|
||||
|
||||
.collabFooter {
|
||||
background: url(${url.context}/images/parts/collab_bottomleft.png) no-repeat left top;
|
||||
margin: 0px;
|
||||
padding: 0px 0px 0px 4px;
|
||||
}
|
||||
.collabFooter span {
|
||||
background: url(${url.context}/images/parts/collab_bottomright.png) no-repeat right top;
|
||||
display: block;
|
||||
float: none;
|
||||
padding: 5px 15px 4px 6px;
|
||||
}
|
||||
</style>
|
@@ -1,36 +0,0 @@
|
||||
/*
|
||||
* projectSpace
|
||||
*
|
||||
* Inputs:
|
||||
* mandatory: nodeRef = parent space nodeRef
|
||||
*
|
||||
* Outputs: projectSpace - object containing pproject space details
|
||||
*/
|
||||
model.projectSpace = main(args["nodeRef"]);
|
||||
|
||||
function main(nodeRef)
|
||||
{
|
||||
var title = "";
|
||||
var subSpaces = {};
|
||||
var space = search.findNode(nodeRef);
|
||||
|
||||
if (space != null)
|
||||
{
|
||||
title = space.name;
|
||||
// Discover the nodeRef of each project subspace
|
||||
for each(node in space.children)
|
||||
{
|
||||
if (node.hasAspect("{http://www.alfresco.org/model/content/1.0}projectsummary"))
|
||||
{
|
||||
subSpaces[node.name] = node;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var projectSpace =
|
||||
{
|
||||
"title": title,
|
||||
"subSpaces": subSpaces
|
||||
};
|
||||
return projectSpace;
|
||||
}
|
@@ -1,14 +0,0 @@
|
||||
<webscript>
|
||||
|
||||
<!-- Details of the web script -->
|
||||
<shortname>Views the specified gallery</shortname>
|
||||
<description>Views the specified gallery.</description>
|
||||
|
||||
<!-- Web script URL's -->
|
||||
<url>/collaboration/gallery/view/{noderef}</url>
|
||||
|
||||
<format default="html">extension</format>
|
||||
<authentication>user</authentication>
|
||||
<transaction>required</transaction>
|
||||
|
||||
</webscript>
|
@@ -1,28 +0,0 @@
|
||||
|
||||
<#assign dataURL=absurl(url.context) + "/wcs/collaboration/gallery/" + path>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
|
||||
</head>
|
||||
|
||||
<body scroll='no' height="100%" width="100%">
|
||||
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
|
||||
id="Flexbook" width="100%" height="100%"
|
||||
codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
|
||||
<param name="movie" value="/alfresco/swf/Flexbook.swf?dataURL=${dataURL?url}&ticket=${ticket}" />
|
||||
<param name="quality" value="high" />
|
||||
<param name="bgcolor" value="#282828" />
|
||||
<param name="allowScriptAccess" value="sameDomain" />
|
||||
<embed src="/alfresco/swf/Flexbook.swf?dataURL=${dataURL?url}&ticket=${ticket}" quality="high" bgcolor="#000000"
|
||||
width="100%" height="310" name="Flexbook" align="middle"
|
||||
play="true"
|
||||
loop="false"
|
||||
quality="high"
|
||||
allowScriptAccess="sameDomain"
|
||||
type="application/x-shockwave-flash"
|
||||
pluginspage="http://www.adobe.com/go/getflashplayer">
|
||||
</embed>
|
||||
</object>
|
||||
</body>
|
||||
</html>
|
@@ -1,3 +0,0 @@
|
||||
|
||||
model.ticket = session.ticket;
|
||||
model.path = url.extension;
|
@@ -1,72 +0,0 @@
|
||||
<#-- get the path location from the passed in args -->
|
||||
<#if args.p?exists><#assign path=args.p><#else><#assign path=""></#if>
|
||||
<#-- see if lucene query specified - this overrides any path argument -->
|
||||
<#if !args.q?exists || args.q?length=0>
|
||||
<#assign query="">
|
||||
<#-- resolve the path (from Company Home) into a node or fall back to userhome-->
|
||||
<#if path?starts_with("/Company Home")>
|
||||
<#if path?length=13>
|
||||
<#assign home=companyhome>
|
||||
<#elseif companyhome.childByNamePath[args.p[14..]]?exists>
|
||||
<#assign home=companyhome.childByNamePath[args.p[14..]]>
|
||||
<#else>
|
||||
<#assign home=userhome>
|
||||
</#if>
|
||||
<#else>
|
||||
<#assign home=userhome>
|
||||
</#if>
|
||||
<#else>
|
||||
<#assign query=args.q>
|
||||
</#if>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
||||
<channel rdf:about="http://www.alfresco.com/">
|
||||
<title>Alfresco - My Documents</title>
|
||||
<link>${absurl(url.context)}/</link>
|
||||
<description>Alfresco - My Documents</description>
|
||||
<lastBuildDate>${date?string("EEE, dd MMM yyyy HH:mm:ss zzz")}</lastBuildDate>
|
||||
<pubDate>${date?string("EEE, dd MMM yyyy HH:mm:ss zzz")}</pubDate>
|
||||
<generator>Alfresco ${server.edition} v${server.version}</generator>
|
||||
<image>
|
||||
<title>Alfresco - My Documents</title>
|
||||
<url>${absurl(url.context)}/images/logo/AlfrescoLogo200.png</url>
|
||||
</image>
|
||||
<#assign weekms=1000*60*60*24*7>
|
||||
<#assign count=0>
|
||||
<#-- get the filter mode from the passed in args -->
|
||||
<#-- filters: 0=all, 1=word, 2=html, 3=pdf, 4=recent -->
|
||||
<#if args.f?exists && args.f?length!=0><#assign filter=args.f?number><#else><#assign filter=0></#if>
|
||||
<#if home?exists>
|
||||
<#assign docs=home.children?reverse>
|
||||
<#else>
|
||||
<#assign docs=companyhome.childrenByLuceneSearch[query]?sort_by('name')>
|
||||
</#if>
|
||||
<#list docs as d>
|
||||
<#if d.isDocument>
|
||||
<#assign isImage=(d.mimetype="image/gif" || d.mimetype="image/jpeg" || d.mimetype="image/png")>
|
||||
<#assign isMP3=(d.mimetype="audio/x-mpeg" || d.mimetype="audio/mpeg")>
|
||||
<#if (filter=0) ||
|
||||
(filter=1 && d.mimetype="application/msword" || d.mimetype="application/vnd.openxmlformats-officedocument.wordprocessingml.document") ||
|
||||
(filter=2 && d.mimetype="text/html") ||
|
||||
(filter=3 && d.mimetype="application/pdf") ||
|
||||
(filter=4 && (dateCompare(d.properties["cm:modified"],date,weekms) == 1 || dateCompare(d.properties["cm:created"], date, weekms) == 1))>
|
||||
<#assign count=count+1>
|
||||
<item>
|
||||
<title>${d.name?html}</title>
|
||||
<#assign navurl='/navigate/showDocDetails/' + d.nodeRef.storeRef.protocol + '/' + d.nodeRef.storeRef.identifier + '/' + d.nodeRef.id>
|
||||
<link>${absurl(url.context)}${navurl}?ticket=${session.ticket}</link>
|
||||
<#if isMP3>
|
||||
<enclosure url="${absurl(url.context)}${d.url}ticket=${session.ticket}}" length="${d.size?string?replace(",","")}" type="audio/mpeg"/>
|
||||
</#if>
|
||||
<description>
|
||||
<#if isImage><img src="${absurl(url.context)}${d.url}?ticket=${session.ticket}"><br></#if>
|
||||
<#if d.properties.description?exists>${d.properties.description?html}</#if>
|
||||
</description>
|
||||
<pubDate>${d.properties.modified?string("EEE, dd MMM yyyy HH:mm:ss zzz")}</pubDate>
|
||||
<guid isPermaLink="false">${d.id}</guid>
|
||||
</item>
|
||||
</#if>
|
||||
</#if>
|
||||
</#list>
|
||||
</channel>
|
||||
</rss>
|
@@ -1,8 +0,0 @@
|
||||
<webscript>
|
||||
<shortname>Document List</shortname>
|
||||
<description>Generate the Document list portlet page</description>
|
||||
<url>/ui/doclist?f={filter?}&p={path?}&q={query?}</url>
|
||||
<url>/ui/doclist.atom?f={filter?}&p={path?}&q={query?}</url>
|
||||
<authentication>user</authentication>
|
||||
<transaction>required</transaction>
|
||||
</webscript>
|
@@ -1,443 +0,0 @@
|
||||
<link rel="stylesheet" href="${url.context}/css/main.css" TYPE="text/css">
|
||||
|
||||
<script type="text/javascript" src="${url.context}/scripts/ajax/yahoo/yahoo/yahoo-min.js"></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/ajax/yahoo/connection/connection-min.js"></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/ajax/mootools.v1.11.js"></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/ajax/common.js"></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/ajax/summary-info.js"></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/ajax/doclist.js"></script>
|
||||
<script type="text/javascript">setContextPath('${url.context}');</script>
|
||||
|
||||
<script>
|
||||
// create manager object for the pop-up summary panels
|
||||
var AlfNodeInfoMgr = new Alfresco.PanelManager("NodeInfoBean.sendNodeInfo", "noderef", "portlet_node_summary_panel.ftl");
|
||||
</script>
|
||||
|
||||
<#-- get the filter mode from the passed in args -->
|
||||
<#-- filters: 0=all, 1=word, 2=html, 3=pdf, 4=recent -->
|
||||
<#if args.f?exists && args.f?length!=0><#assign filter=args.f?number><#else><#assign filter=0></#if>
|
||||
|
||||
<#-- get the path location from the passed in args -->
|
||||
<#if args.p?exists><#assign path=args.p><#else><#assign path=""></#if>
|
||||
|
||||
<#-- see if lucene query specified - this overrides any path argument -->
|
||||
<#if !args.q?exists || args.q?length=0>
|
||||
<#assign query="">
|
||||
<#-- resolve the path (from Company Home) into a node or fall back to userhome-->
|
||||
<#assign chLen=companyhome.name?length>
|
||||
<#if path?starts_with("/" + companyhome.name)>
|
||||
<#if path?length=chLen+1>
|
||||
<#assign home=companyhome>
|
||||
<#elseif companyhome.childByNamePath[path[(chLen+2)..]]?exists>
|
||||
<#assign home=companyhome.childByNamePath[path[(chLen+2)..]]>
|
||||
<#else>
|
||||
<#assign home=userhome>
|
||||
</#if>
|
||||
<#else>
|
||||
<#assign home=userhome>
|
||||
</#if>
|
||||
<#else>
|
||||
<#assign query=args.q>
|
||||
</#if>
|
||||
|
||||
<table border=0 cellspacing=0 cellpadding=0 class="docTable">
|
||||
<tr>
|
||||
<td class="docHeader">
|
||||
<table border="0" cellspacing="0" cellpadding="0" width="100%">
|
||||
<tr>
|
||||
<th><a id="docFilter0" class="docfilterLink <#if filter=0>docfilterLinkSelected</#if>" href="#" onclick="MyDocs.filter(0); return false;"><span>${message("portlets.doclist.all_items")}</span></a></th>
|
||||
<th><a id="docFilter1" class="docfilterLink <#if filter=1>docfilterLinkSelected</#if>" href="#" onclick="MyDocs.filter(1); return false;"><span>${message("portlets.doclist.word_documents")}</span></a></th>
|
||||
<th><a id="docFilter2" class="docfilterLink <#if filter=2>docfilterLinkSelected</#if>" href="#" onclick="MyDocs.filter(2); return false;"><span>${message("portlets.doclist.html_documents")}</span></a></th>
|
||||
<th><a id="docFilter3" class="docfilterLink <#if filter=3>docfilterLinkSelected</#if>" href="#" onclick="MyDocs.filter(3); return false;"><span>${message("portlets.doclist.pdf_documents")}</span></a></th>
|
||||
<th><a id="docFilter4" class="docfilterLink <#if filter=4>docfilterLinkSelected</#if>" href="#" onclick="MyDocs.filter(4); return false;"><span>${message("portlets.doclist.recently_modified")}</span></a></th>
|
||||
<th align=right>
|
||||
<a href="#" onclick="MyDocs.refreshList(); return false;" class="docRefreshViewLink"><img src="${url.context}/images/icons/reset.gif" border="0" width="16" height="16" style="vertical-align:-25%;padding-right:4px">${message("portlets.refresh")}</a>
|
||||
</th>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div id="docUpdatePanel">
|
||||
<input class="docFormItem" type="button" value="${message('portlets.button.ok')}" onclick="MyDocs.updateOK(this);">
|
||||
<input class="docFormItem" type="button" value="${message('portlets.button.cancel')}" onclick="MyDocs.closePopupPanel();">
|
||||
</div>
|
||||
<div id="docPanelOverlay"></div>
|
||||
<div id="docPanelOverlayAjax"></div>
|
||||
<div id="docPanel">
|
||||
<#-- populated via an AJAX call to 'doclistpanel' webscript -->
|
||||
<#-- resolved path, filter and home.noderef required as arguments -->
|
||||
<script>
|
||||
MyDocs.ServiceContext="${url.serviceContext}";
|
||||
MyDocs.Filter="${filter}";
|
||||
<#if home?exists>MyDocs.Home="${home.nodeRef}";</#if>
|
||||
MyDocs.Query="${query?replace("\"","\\\"")}";
|
||||
</script>
|
||||
</div>
|
||||
<div id="docMessagePanel">
|
||||
<div class="docMessagePanelClose"><img id="docMessagePanelCloseImage" src="${url.context}/images/icons/close_portlet_static.gif" onclick="MyDocs.closeMessage();" /></div>
|
||||
<div class="docMessagePanelLabel"></div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="docFooter">
|
||||
<span class="docFooterText" id="docCount" />
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<style type="text/css">
|
||||
a.docfilterLink, a.docfilterLink:hover
|
||||
{
|
||||
color: #8EA1B3 !important;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif !important;
|
||||
font-size: 12px !important;
|
||||
font-weight: bold !important;
|
||||
text-decoration: none !important;
|
||||
padding: 8px 4px 16px;
|
||||
outline: none;
|
||||
display: block;
|
||||
}
|
||||
|
||||
a.docfilterLink:hover span
|
||||
{
|
||||
color: #168ECE;
|
||||
background-color: #EEF7FB;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a.docfilterLinkSelected
|
||||
{
|
||||
background: transparent url("${url.context}/images/parts/doclist_item_marker.png") no-repeat scroll center 29px !important;
|
||||
padding-bottom: 16px;
|
||||
}
|
||||
|
||||
a.docfilterLinkSelected:link, a.docfilterLinkSelected:visited
|
||||
{
|
||||
color: #0085CA;
|
||||
}
|
||||
|
||||
.docTable
|
||||
{
|
||||
background-color: #FFFFFF;
|
||||
border: 1px solid #CCD4DB;
|
||||
}
|
||||
|
||||
#docPanel
|
||||
{
|
||||
height: 320px;
|
||||
width: 716px;
|
||||
overflow: none;
|
||||
overflow-y: scroll;
|
||||
border-top: 1px solid #CCD4DB;
|
||||
border-bottom: 1px solid #CCD4DB;
|
||||
visibility: hidden;
|
||||
scrollbar-face-color: #fafdfd;
|
||||
scrollbar-3dlight-color: #d2dde0;
|
||||
scrollbar-highlight-color: #d2dde0;
|
||||
scrollbar-shadow-color: #c3cdd0;
|
||||
scrollbar-darkshadow-color: #c3cdd0;
|
||||
scrollbar-arrow-color: #239ad7;
|
||||
scrollbar-track-color: #ecf1f2;
|
||||
}
|
||||
|
||||
#docPanelOverlay
|
||||
{
|
||||
background-color: #fff;
|
||||
position: absolute;
|
||||
height: 320px;
|
||||
width: 716px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
#docPanelOverlayAjax
|
||||
{
|
||||
background-color: #fff;
|
||||
background-image: url(${url.context}/images/icons/ajax_anim.gif);
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
position: absolute;
|
||||
height: 320px;
|
||||
width: 716px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.docRow
|
||||
{
|
||||
padding-top: 4px;
|
||||
}
|
||||
.docRowOdd
|
||||
{
|
||||
background-color: #F1F7FD;
|
||||
}
|
||||
.docRowEven
|
||||
{
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
|
||||
.docHeader
|
||||
{
|
||||
background-image: url(${url.context}/images/parts/doclist_headerbg.png);
|
||||
height: 40px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.docHeader th
|
||||
{
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.docFooter
|
||||
{
|
||||
height: 34px;
|
||||
width: 716px;
|
||||
padding: 0px;
|
||||
border: 1px solid #F8FCFD;
|
||||
background-image: url(${url.context}/images/parts/doclist_footerbg.png);
|
||||
text-align: center;
|
||||
color: #515D6B;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 13px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.docFooterText
|
||||
{
|
||||
display: block;
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
a.docItem, a.docItem:hover
|
||||
{
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif !important;
|
||||
font-size: 14px !important;
|
||||
color: #515D6B !important;
|
||||
padding: 0px 8px 6px 8px;
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
.docIcon
|
||||
{
|
||||
float: left;
|
||||
padding-left: 16px;
|
||||
padding-top: 4px;
|
||||
}
|
||||
|
||||
.docInfo
|
||||
{
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.docDetail
|
||||
{
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
color: #000000;
|
||||
display: none;
|
||||
overflow: hidden;
|
||||
padding-left: 16px;
|
||||
}
|
||||
|
||||
.docItemSelected
|
||||
{
|
||||
background: #CCE7F3 url("${url.context}/images/parts/doclist_arrow_down.png") no-repeat right top;
|
||||
border-bottom: 1px solid #0092DD !important;
|
||||
border-top: 1px solid #0092DD !important;
|
||||
}
|
||||
|
||||
.docItemSelectedOpen
|
||||
{
|
||||
background-image: url("${url.context}/images/parts/doclist_arrow_up.png") !important;
|
||||
}
|
||||
|
||||
.docResource
|
||||
{
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
background-color: #bad7e4;
|
||||
color: #000000;
|
||||
margin: 0px;
|
||||
border-top: 1px dotted #0092dd;
|
||||
visibility: hidden;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.docMetadata
|
||||
{
|
||||
color: #515D6B;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
.docMetaprop
|
||||
{
|
||||
color: #515D6B;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
.docPreview
|
||||
{
|
||||
background-color: #ddebf2;
|
||||
color: #515D6B;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
overflow: hidden;
|
||||
height: 140px;
|
||||
width: 406px;
|
||||
border: 1px solid #75badd;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.docAction
|
||||
{
|
||||
color: #515D6B;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 9pt;
|
||||
font-weight: bolder;
|
||||
background-color: #c3dce7;
|
||||
background-repeat: no-repeat;
|
||||
background-position: left;
|
||||
width: 87px;
|
||||
height: 20px;
|
||||
border: 1px solid #fff;
|
||||
padding: 10px 0px 8px 36px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.docActionCheckout
|
||||
{
|
||||
background-image: url(${url.context}/images/icons/doclist_action_checkout.png);
|
||||
border-bottom: none;
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
.docActionCheckin
|
||||
{
|
||||
background-image: url(${url.context}/images/icons/doclist_action_checkin.png);
|
||||
border-bottom: none;
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
.docActionLocked
|
||||
{
|
||||
background-image: url(${url.context}/images/icons/doclist_action_locked.png) !important;
|
||||
cursor: default !important;
|
||||
}
|
||||
|
||||
.docActionEditDetails
|
||||
{
|
||||
background-image: url(${url.context}/images/icons/doclist_action_edit.png);
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.docActionUpdate
|
||||
{
|
||||
background-image: url(${url.context}/images/icons/doclist_action_update.png);
|
||||
border-bottom: none;
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
.docActionViewContent
|
||||
{
|
||||
background-image: url(${url.context}/images/icons/doclist_action_view.png);
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.docActionDelete
|
||||
{
|
||||
background-image: url(${url.context}/images/icons/doclist_action_delete.png);
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
.docActionMoreActions
|
||||
{
|
||||
padding-left: 20px;
|
||||
padding-right: 16px;
|
||||
}
|
||||
|
||||
.docListAjaxWait
|
||||
{
|
||||
background-image: url(${url.context}/images/icons/ajax_anim.gif);
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
width: 696px;
|
||||
height: 150px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
a.docRefreshViewLink
|
||||
{
|
||||
padding: 8px 4px 0px 0px;
|
||||
display: block;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
a.docRefreshViewLink:link, a.docRefreshViewLink:visited, a.docRefreshViewLink:hover
|
||||
{
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
color: #515D6B;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#docUpdatePanel
|
||||
{
|
||||
position: absolute;
|
||||
border: 1px solid #CCD4DB;
|
||||
background-color: #EEF7FB;
|
||||
width: 24em;
|
||||
height: 5em;
|
||||
padding: 8px;
|
||||
margin: 8px;
|
||||
display: none;
|
||||
z-index: 1;
|
||||
-moz-border-radius: 5px;
|
||||
}
|
||||
|
||||
.docFormItem
|
||||
{
|
||||
margin: 4px;
|
||||
padding: 2px;
|
||||
background-color: #F8FCFD;
|
||||
border: 1px solid #CCD4DB;
|
||||
}
|
||||
|
||||
#docMessagePanel
|
||||
{
|
||||
position: absolute;
|
||||
border: 1px solid #65696C;
|
||||
background-color: #eeeeee;
|
||||
width: 250px;
|
||||
height: 72px;
|
||||
padding: 8px;
|
||||
margin-left: 440px;
|
||||
display: none;
|
||||
z-index: 1;
|
||||
-moz-border-radius: 7px;
|
||||
}
|
||||
|
||||
.docMessagePanelClose
|
||||
{
|
||||
margin: -4px -4px 2px 2px;
|
||||
float:right;
|
||||
}
|
||||
|
||||
#docMessagePanelCloseImage
|
||||
{
|
||||
cursor: pointer;
|
||||
display: block;
|
||||
height: 23px;
|
||||
width: 23px;
|
||||
}
|
||||
|
||||
.docMessagePanelLabel
|
||||
{
|
||||
color: #45494C;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
}
|
||||
</style>
|
@@ -1,7 +0,0 @@
|
||||
<webscript>
|
||||
<shortname>Document List Panel</shortname>
|
||||
<description>Generate the inner panel for the Document List portlet page</description>
|
||||
<url>/ui/doclistpanel?f={filter}&p={path}&h={home};q={query?}</url>
|
||||
<authentication>user</authentication>
|
||||
<transaction>required</transaction>
|
||||
</webscript>
|
@@ -1,56 +0,0 @@
|
||||
<#assign weekms=1000*60*60*24*7>
|
||||
<#assign count=0>
|
||||
<#-- get the filter mode from the passed in args -->
|
||||
<#-- filters: 0=all, 1=word, 2=html, 3=pdf, 4=recent -->
|
||||
<#if args.f?exists && args.f?length!=0><#assign filter=args.f?number><#else><#assign filter=0></#if>
|
||||
<#if args.h?exists>
|
||||
<#assign docs=companyhome.nodeByReference[args.h].children?sort_by('name')>
|
||||
<#else>
|
||||
<#assign docs=companyhome.childrenByLuceneSearch[args.q]?sort_by('name')>
|
||||
</#if>
|
||||
<#list docs as d>
|
||||
<#if d.isDocument>
|
||||
<#if (filter=0) ||
|
||||
(filter=1 && (d.mimetype="application/msword" || d.mimetype="application/vnd.openxmlformats-officedocument.wordprocessingml.document")) ||
|
||||
(filter=2 && d.mimetype="text/html") ||
|
||||
(filter=3 && d.mimetype="application/pdf") ||
|
||||
(filter=4 && (dateCompare(d.properties["cm:modified"],date,weekms) == 1 || dateCompare(d.properties["cm:created"], date, weekms) == 1))>
|
||||
<#assign count=count+1>
|
||||
<div class="docRow docRow${(count % 2 = 0)?string("Odd", "Even")}" id="${d.id}">
|
||||
<div class="docIcon">
|
||||
<a href="${url.context}${d.url}" target="new"><img class="docIconImage" alt="" width="16" height="16" src="${url.context}${d.icon16?replace(".gif",".png")}" border=0></a>
|
||||
</div>
|
||||
<div style="display:none"><img class="docIconImage64" alt="" width="64" height="64" src="${url.context}${d.icon64}"></div>
|
||||
<div>
|
||||
<a class="docItem" href="${url.context}${d.url}" target="new">${d.name?html}</a>
|
||||
<span class="docInfo" onclick="event.cancelBubble=true; AlfNodeInfoMgr.toggle('${d.nodeRef}',this);">
|
||||
<img src="${url.context}/images/icons/popup.gif" class="popupImage" width="16" height="16" />
|
||||
</span>
|
||||
</div>
|
||||
<div class="docDetail">
|
||||
<table cellpadding="2" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
<span class="docMetaprop">${message("portlets.panel.description")}:</span> <span class="docMetadata"><#if d.properties.description?exists>${d.properties.description?html}<#else> </#if></span><br />
|
||||
<span class="docMetaprop">${message("portlets.panel.modified")}:</span> <span class="docMetadata">${d.properties.modified?datetime}</span><br />
|
||||
<span class="docMetaprop">${message("portlets.panel.modified_by")}:</span> <span class="docMetadata">${d.properties.modifier}</span>
|
||||
</td>
|
||||
<td width="24"> </td>
|
||||
<td>
|
||||
<span class="docMetaprop">${message("portlets.panel.created")}:</span> <span class="docMetadata">${d.properties.created?datetime}</span><br />
|
||||
<span class="docMetaprop">${message("portlets.panel.created_by")}:</span> <span class="docMetadata">${d.properties.creator}</span><br />
|
||||
<span class="docMetaprop">${message("portlets.panel.size")}:</span> <span class="docMetadata">${(d.size/1000)?string("0.##")} ${message("portlets.panel.kb")}</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="docResource doclistAjaxWait" id="${d.nodeRef}"></div>
|
||||
</div>
|
||||
</#if>
|
||||
</#if>
|
||||
</#list>
|
||||
<#-- hidden div with the count value for the page -->
|
||||
<div id="docCountValue" style="display:none">${message("portlets.message.showing_items", count)}</div>
|
||||
<#-- hidden div with the error message -->
|
||||
<div id="displayTheError" style="display:none">${message("portlets.error.data_currently_unavailable")}</div>
|
||||
<div id="previewCurrentlyUnavailable" style="display:none">${message("portlets.preview_currently_unavailable")}</div>
|
@@ -1,7 +0,0 @@
|
||||
<webscript>
|
||||
<shortname>My Spaces</shortname>
|
||||
<description>Generate the My Spaces portlet page</description>
|
||||
<url>/ui/myspaces?f={filter?}&p={path?}</url>
|
||||
<authentication>user</authentication>
|
||||
<transaction>required</transaction>
|
||||
</webscript>
|
@@ -1,565 +0,0 @@
|
||||
<link rel="stylesheet" href="${url.context}/css/main.css" TYPE="text/css">
|
||||
|
||||
<script type="text/javascript" src="${url.context}/scripts/ajax/yahoo/yahoo/yahoo-min.js"></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/ajax/yahoo/connection/connection-min.js"></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/ajax/mootools.v1.11.js"></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/ajax/common.js"></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/ajax/summary-info.js"></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/ajax/myspaces.js"></script>
|
||||
<script type="text/javascript">setContextPath('${url.context}');</script>
|
||||
|
||||
<script>
|
||||
// create manager object for the pop-up summary panels
|
||||
var AlfNodeInfoMgr = new Alfresco.PanelManager("NodeInfoBean.sendNodeInfo", "noderef", "portlet_node_summary_panel.ftl");
|
||||
</script>
|
||||
|
||||
<#-- get the filter mode from the passed in args -->
|
||||
<#-- filters: 0=all, 1=spaces, 2=docs, 3=mine, 4=recent -->
|
||||
<#if args.f?exists && args.f?length!=0><#assign filter=args.f?number><#else><#assign filter=0></#if>
|
||||
|
||||
<#-- get the path location from the passed in args, remove trailing slash -->
|
||||
<#if args.p?exists><#assign path=args.p><#else><#assign path=""></#if>
|
||||
<#if path?ends_with("/")><#assign path=path[0..path?length-2]></#if>
|
||||
<#-- resolve the path (from Company Home) into a node or fall back to userhome-->
|
||||
<#assign chLen=companyhome.name?length>
|
||||
<#if path?starts_with("/" + companyhome.name)>
|
||||
<#if path?length=chLen+1>
|
||||
<#assign home=companyhome>
|
||||
<#elseif companyhome.childByNamePath[path[(chLen+2)..]]?exists>
|
||||
<#assign home=companyhome.childByNamePath[path[(chLen+2)..]]>
|
||||
<#else>
|
||||
<#assign home=userhome>
|
||||
</#if>
|
||||
<#else>
|
||||
<#assign home=userhome>
|
||||
</#if>
|
||||
<#assign path=home.displayPath + "/" + home.name>
|
||||
|
||||
<div class="spaceTable">
|
||||
<div class="spaceBreadcrumb">
|
||||
<#-- construct breadcrumb elements as links -->
|
||||
<#assign bcpath="/">
|
||||
<#assign crumbs=path?split("/")>
|
||||
<#list crumbs as c>
|
||||
<#if c?length != 0>
|
||||
<#assign bcpath=bcpath+c+"/">
|
||||
<a class="spaceBreadcrumbLink<#if c_index = (crumbs?size - 1)> spaceCurrentSpace</#if>" href="${scripturl("?f=${filter}&p=${bcpath?url}")}"><img src="${url.context}/images/icons/space-icon-default-16.png" border="0" width="16" height="16" alt="" style="vertical-align:-25%;margin-right:4px">${c}</a>
|
||||
<#if c_index < (crumbs?size - 1)> > </#if>
|
||||
</#if>
|
||||
</#list>
|
||||
</div>
|
||||
<div class="spaceToolbar">
|
||||
<#-- TODO: permission checks on the actions! -->
|
||||
<#-- Upload File action -->
|
||||
<div class="spaceToolbarAction spaceToolbarActionUpload" title="${message('portlets.myspaces.upload.title')}" <#if home.hasPermission("CreateChildren")>onclick="MySpaces.upload(this);"</#if>>${message("portlets.myspaces.upload")}</div>
|
||||
<div class="spaceUploadPanel">
|
||||
<#-- Url encode the path value, and encode any single quotes to generate valid string -->
|
||||
<input class="spaceFormItem" type="button" value="${message('portlets.button.ok')}" onclick='MySpaces.uploadOK(this, "${path?url?replace("'","_%_")}");'>
|
||||
<input class="spaceFormItem" type="button" value="${message('portlets.button.cancel')}" onclick="MySpaces.closePopupPanel();">
|
||||
</div>
|
||||
<div id="spaceUpdateDocPanel">
|
||||
<input class="spaceFormItem" type="button" value="${message('portlets.button.ok')}" onclick="MySpaces.updateOK(this);">
|
||||
<input class="spaceFormItem" type="button" value="${message('portlets.button.cancel')}" onclick="MySpaces.closePopupPanel();">
|
||||
</div>
|
||||
<#-- Create Space action -->
|
||||
<div class="spaceToolbarAction spaceToolbarActionCreateSpace" title="${message('portlets.myspaces.create_space.title')}" <#if home.hasPermission("CreateChildren")>onclick="MySpaces.createSpace(this);"</#if>>${message("portlets.myspaces.create_space")}</div>
|
||||
<div class="spaceCreateSpacePanel">
|
||||
<table cellspacing="2" cellpadding="2" border="0">
|
||||
<tr><td class="spaceFormLabel">${message("portlets.myspaces.name")}:</td><td><input class="spaceFormItem" type="text" size="32" maxlength="1024" id="space-name"></td></tr>
|
||||
<tr><td class="spaceFormLabel">${message("portlets.myspaces.title")}:</td><td><input class="spaceFormItem" type="text" size="32" maxlength="1024" id="space-title"></td></tr>
|
||||
<tr><td class="spaceFormLabel">${message("portlets.myspaces.description")}:</td><td><input class="spaceFormItem" type="text" size="32" maxlength="1024" id="space-description"></td></tr>
|
||||
</table>
|
||||
<input class="spaceFormItem" type="button" value="${message('portlets.button.ok')}" onclick='MySpaces.createSpaceOK(this, "${path?url?replace("'","_%_")}");'>
|
||||
<input class="spaceFormItem" type="button" value="${message('portlets.button.cancel')}" onclick="MySpaces.closePopupPanel();">
|
||||
</div>
|
||||
</div>
|
||||
<div class="spaceHeader">
|
||||
<table border="0" cellspacing="6" cellpadding="0" width="100%">
|
||||
<tr>
|
||||
<th><a class="spacefilterLink <#if filter=0>spacefilterLinkSelected</#if>" href="#" onclick="MySpaces.filter(0); return false;">${message("portlets.myspaces.all_items")}</a></th>
|
||||
<th><a class="spacefilterLink <#if filter=1>spacefilterLinkSelected</#if>" href="#" onclick="MySpaces.filter(1); return false;">${message("portlets.myspaces.spaces")}</a></th>
|
||||
<th><a class="spacefilterLink <#if filter=2>spacefilterLinkSelected</#if>" href="#" onclick="MySpaces.filter(2); return false;">${message("portlets.myspaces.documents")}</a></th>
|
||||
<th><a class="spacefilterLink <#if filter=3>spacefilterLinkSelected</#if>" href="#" onclick="MySpaces.filter(3); return false;">${message("portlets.myspaces.my_items")}</a></th>
|
||||
<th><a class="spacefilterLink <#if filter=4>spacefilterLinkSelected</#if>" href="#" onclick="MySpaces.filter(4); return false;">${message("portlets.myspaces.recently_modified")}</a></th>
|
||||
<td align=right>
|
||||
<a href="#" onclick="MySpaces.refreshList(); return false;" class="refreshViewLink"><img src="${url.context}/images/icons/reset.gif" border="0" width="16" height="16" class="spaceImageIcon">${message("portlets.refresh")}</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div id="spacePanelOverlay"></div>
|
||||
<div id="spacePanelOverlayAjax"></div>
|
||||
<div id="spacePanel">
|
||||
<#-- populated via an AJAX call to 'myspacespanel' webscript -->
|
||||
<#-- resolved path, filter and home.noderef required as arguments -->
|
||||
<script>
|
||||
MySpaces.ServiceContext="${url.serviceContext}";
|
||||
MySpaces.ScriptUrlEncoder=eval("MySpaces.ScriptUrlEncoder=" + unescape("${clienturlfunction("encUrl")}"));
|
||||
MySpaces.Path="${path?replace("\"","\\\"")}";
|
||||
MySpaces.Filter="${filter}";
|
||||
MySpaces.Home="${home.nodeRef}";
|
||||
</script>
|
||||
</div>
|
||||
<div id="spaceMessagePanel" class="spaceMessagePanel">
|
||||
<div style="margin:2px;float:right"><img src="${url.context}/images/icons/close_portlet_panel.gif" style="cursor:pointer;" width="16" height="16" onclick="MySpaces.closeMessage();"></div>
|
||||
<div class="spaceMessagePanelLabel"></div>
|
||||
</div>
|
||||
<div class="spaceFooter">
|
||||
<#-- the count value is retrieved and set dynamically from the AJAX webscript output above -->
|
||||
<span class="spaceFooterText" id="spaceCount" />0</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style type="text/css">
|
||||
a.spacefilterLink:link, a.spacefilterLink:visited
|
||||
{
|
||||
color: #8EA1B3;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
outline: none;
|
||||
padding-left: 4px;
|
||||
padding-right: 4px;
|
||||
}
|
||||
|
||||
a.spacefilterLink:hover
|
||||
{
|
||||
color: #168ECE;
|
||||
background-color: #EEF7FB;
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a.spacefilterLinkSelected:link, a.spacefilterLinkSelected:visited, .spaceCurrentSpace
|
||||
{
|
||||
color: #0085CA !important;
|
||||
font-weight: bold !important;
|
||||
}
|
||||
|
||||
.spaceTable
|
||||
{
|
||||
background-color: #F8FCFD;
|
||||
border: 1px solid #CCD4DB;
|
||||
width: 720px;
|
||||
}
|
||||
|
||||
.spaceTitle
|
||||
{
|
||||
background-color: #F8FCFD;
|
||||
color: #515D6B;
|
||||
text-align: center;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
padding: 6px;
|
||||
border-bottom: 1px solid #CCD4DB;
|
||||
}
|
||||
|
||||
.spaceHeader
|
||||
{
|
||||
background-image: url(${url.context}/images/parts/doclist_headerbg.png);
|
||||
height: 30px;
|
||||
}
|
||||
.spaceHeader table
|
||||
{
|
||||
border-collapse: separate;
|
||||
border-spacing: 6px 6px;
|
||||
}
|
||||
|
||||
#spacePanel
|
||||
{
|
||||
height: 320px;
|
||||
width: 718px;
|
||||
overflow: auto;
|
||||
overflow-y: scroll;
|
||||
border-top: 1px solid #CCD4DB;
|
||||
border-bottom: 1px solid #CCD4DB;
|
||||
visibility: hidden;
|
||||
scrollbar-face-color: #fafdfd;
|
||||
scrollbar-3dlight-color: #d2dde0;
|
||||
scrollbar-highlight-color: #d2dde0;
|
||||
scrollbar-shadow-color: #c3cdd0;
|
||||
scrollbar-darkshadow-color: #c3cdd0;
|
||||
scrollbar-arrow-color: #239ad7;
|
||||
scrollbar-track-color: #ecf1f2;
|
||||
}
|
||||
|
||||
#spacePanelOverlay
|
||||
{
|
||||
background-color: #fff;
|
||||
position: absolute;
|
||||
height: 320px;
|
||||
width: 720px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
#spacePanelOverlayAjax
|
||||
{
|
||||
background-color: #fff;
|
||||
background-image: url(${url.context}/images/icons/ajax_anim.gif);
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
position: absolute;
|
||||
height: 320px;
|
||||
width: 720px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.spaceRow
|
||||
{
|
||||
padding-top: 4px;
|
||||
}
|
||||
.spaceRowOdd
|
||||
{
|
||||
background-color: #F1F7FD;
|
||||
}
|
||||
.spaceRowEven
|
||||
{
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
|
||||
.spaceFooter
|
||||
{
|
||||
height: 34px;
|
||||
width: 718px;
|
||||
padding: 0px;
|
||||
border: 1px solid #F8FCFD;
|
||||
background-image: url(${url.context}/images/parts/doclist_footerbg.png);
|
||||
text-align: center;
|
||||
color: #515D6B;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 13px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.spaceFooterText
|
||||
{
|
||||
display: block;
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
.spaceItem
|
||||
{
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 14px;
|
||||
color: #515D6B;
|
||||
padding: 0px 8px 6px 40px;
|
||||
}
|
||||
|
||||
.spaceIcon
|
||||
{
|
||||
float: left;
|
||||
padding-left: 16px;
|
||||
padding-top: 4px;
|
||||
}
|
||||
|
||||
.spaceInfo
|
||||
{
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.spaceDetail
|
||||
{
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
color: #000000;
|
||||
display: none;
|
||||
overflow: hidden;
|
||||
padding-left: 16px;
|
||||
}
|
||||
|
||||
.spaceResource
|
||||
{
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
background-color: #bad7e4;
|
||||
color: #000000;
|
||||
margin: 0px;
|
||||
border-top: 1px dotted #0092dd;
|
||||
visibility: hidden;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.spacesAjaxWait
|
||||
{
|
||||
background-image: url(${url.context}/images/icons/ajax_anim.gif);
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
width: 696px;
|
||||
height: 150px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.spaceItemSelected
|
||||
{
|
||||
background-color: #CCE7F3 !important;
|
||||
border-bottom: 1px solid #0092DD !important;
|
||||
border-top: 1px solid #0092DD !important;
|
||||
}
|
||||
|
||||
.spaceMetadata
|
||||
{
|
||||
color: #515D6B;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
.spaceMetaprop
|
||||
{
|
||||
color: #515D6B;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
.spaceBreadcrumb
|
||||
{
|
||||
background-image: url(${url.context}/images/parts/spacelist_breadbg.png);
|
||||
border-bottom: 1px solid #CCD4DB;
|
||||
padding: 6px;
|
||||
}
|
||||
|
||||
a.spaceBreadcrumbLink:link, a.spaceBreadcrumbLink:visited, a.spaceBreadcrumbLink:hover
|
||||
{
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
color: #515D6B;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.spaceFormLabel
|
||||
{
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 11px;
|
||||
color: #515D6B;
|
||||
}
|
||||
|
||||
.spaceFormItem
|
||||
{
|
||||
margin: 4px;
|
||||
padding: 2px;
|
||||
background-color: #F8FCFD;
|
||||
border: 1px solid #CCD4DB;
|
||||
}
|
||||
|
||||
.spaceFormItemError
|
||||
{
|
||||
border-color: red !important;
|
||||
}
|
||||
|
||||
.spaceToolbar
|
||||
{
|
||||
background-color: #D0D8E0;
|
||||
border-bottom: 1px solid #CCD4DB;
|
||||
height: 28px;
|
||||
}
|
||||
|
||||
.spaceToolbarAction
|
||||
{
|
||||
background-repeat: no-repeat;
|
||||
background-position: 2px;
|
||||
color: #515D6B;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
float: left;
|
||||
margin: 3px 3px 3px 3px;
|
||||
height: 17px;
|
||||
cursor: pointer;
|
||||
padding: 2px 4px 1px 22px;
|
||||
}
|
||||
|
||||
.spaceToolbarActionUpload
|
||||
{
|
||||
background-image: url(${url.context}/images/icons/add.gif);
|
||||
}
|
||||
|
||||
.spaceToolbarActionCreateSpace
|
||||
{
|
||||
background-image: url(${url.context}/images/icons/create_space.gif);
|
||||
}
|
||||
|
||||
.spaceAction
|
||||
{
|
||||
color: #515D6B;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 9pt;
|
||||
font-weight: bolder;
|
||||
background-color: #c3dce7;
|
||||
background-repeat: no-repeat;
|
||||
background-position: left;
|
||||
width: 87px;
|
||||
height: 20px;
|
||||
border: 1px solid #ffffff;
|
||||
padding: 10px 0px 8px 36px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.docActionCheckout
|
||||
{
|
||||
background-image: url(${url.context}/images/icons/doclist_action_checkout.png);
|
||||
border-bottom: none;
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
.docActionCheckin
|
||||
{
|
||||
background-image: url(${url.context}/images/icons/doclist_action_checkin.png);
|
||||
border-bottom: none;
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
.docActionLocked
|
||||
{
|
||||
background-image: url(${url.context}/images/icons/doclist_action_locked.png) !important;
|
||||
cursor: default !important;
|
||||
}
|
||||
|
||||
.docActionEditDetails
|
||||
{
|
||||
background-image: url(${url.context}/images/icons/doclist_action_edit.png);
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.docActionUpdate
|
||||
{
|
||||
background-image: url(${url.context}/images/icons/doclist_action_update.png);
|
||||
border-bottom: none;
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
.docActionViewContent
|
||||
{
|
||||
background-image: url(${url.context}/images/icons/doclist_action_view.png);
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.docActionDelete
|
||||
{
|
||||
background-image: url(${url.context}/images/icons/doclist_action_delete.png);
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
.docActionMoreActions
|
||||
{
|
||||
padding-left: 20px;
|
||||
padding-right: 16px;
|
||||
}
|
||||
|
||||
.spaceActionMoreActions
|
||||
{
|
||||
padding-left: 20px;
|
||||
padding-right: 16px;
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
.spaceActionEditDetails
|
||||
{
|
||||
background-image: url(${url.context}/images/icons/doclist_action_edit.png);
|
||||
}
|
||||
|
||||
.spaceActionDelete
|
||||
{
|
||||
background-image: url(${url.context}/images/icons/doclist_action_delete.png);
|
||||
border-left: none;
|
||||
}
|
||||
|
||||
.spaceUploadPanel
|
||||
{
|
||||
position: absolute;
|
||||
border: 1px solid #CCD4DB;
|
||||
background-color: #EEF7FB;
|
||||
width: 24em;
|
||||
height: 5em;
|
||||
padding: 8px;
|
||||
margin: 8px;
|
||||
display: none;
|
||||
z-index: 1;
|
||||
-moz-border-radius: 5px;
|
||||
}
|
||||
|
||||
.spaceCreateSpacePanel
|
||||
{
|
||||
position: absolute;
|
||||
border: 1px solid #CCD4DB;
|
||||
background-color: #EEF7FB;
|
||||
width: 27em;
|
||||
height: 11.4em;
|
||||
padding: 8px;
|
||||
margin: 8px;
|
||||
display: none;
|
||||
z-index: 1;
|
||||
-moz-border-radius: 5px;
|
||||
}
|
||||
|
||||
.spaceMessagePanel
|
||||
{
|
||||
position: absolute;
|
||||
border: 1px solid #65696C;
|
||||
background-color: #7E8387;
|
||||
width: 250px;
|
||||
*width: 260px;
|
||||
height: 72px;
|
||||
padding: 8px;
|
||||
margin-left: 440px;
|
||||
display: none;
|
||||
z-index: 1;
|
||||
-moz-border-radius: 7px;
|
||||
}
|
||||
|
||||
.spaceMessagePanelLabel
|
||||
{
|
||||
color: white;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
#spaceUpdateDocPanel
|
||||
{
|
||||
position: absolute;
|
||||
border: 1px solid #CCD4DB;
|
||||
background-color: #EEF7FB;
|
||||
width: 24em;
|
||||
height: 5em;
|
||||
padding: 8px;
|
||||
margin: 8px;
|
||||
display: none;
|
||||
z-index: 1;
|
||||
-moz-border-radius: 5px;
|
||||
}
|
||||
|
||||
a.refreshViewLink:link, a.refreshViewLink:visited, a.refreshViewLink:hover
|
||||
{
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
color: #515D6B;
|
||||
text-decoration: none;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.spacePreview
|
||||
{
|
||||
color: #515D6B;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
overflow: hidden;
|
||||
height: 144px;
|
||||
width: 410px;
|
||||
border: 1px solid #0092dd;
|
||||
}
|
||||
|
||||
a.childSpaceLink:link, a.childSpaceLink:visited, a.childSpaceLink:hover
|
||||
{
|
||||
color: #5A5741;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
div.spacesNoItems
|
||||
{
|
||||
color: #5A5741;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
img.spaceImageIcon
|
||||
{
|
||||
vertical-align: -25%;
|
||||
padding-right:4px;
|
||||
}
|
||||
</style>
|
@@ -1,7 +0,0 @@
|
||||
<webscript>
|
||||
<shortname>My Spaces Panel</shortname>
|
||||
<description>Generate the inner panel for the My Spaces portlet page</description>
|
||||
<url>/ui/myspacespanel?f={filter}&p={path}&h={home}</url>
|
||||
<authentication>user</authentication>
|
||||
<transaction>required</transaction>
|
||||
</webscript>
|
@@ -1,64 +0,0 @@
|
||||
<#assign user=person.properties.userName>
|
||||
<#assign count=0>
|
||||
<#assign weekms=1000*60*60*24*7>
|
||||
<#function encodepath node>
|
||||
<#if node.parent?exists><#return encodepath(node.parent) + "/" + node.name?url><#else><#return ""></#if>
|
||||
</#function>
|
||||
<#list companyhome.nodeByReference[args.h].children?sort_by('name') as d>
|
||||
<#if (d.isDocument ||
|
||||
(d.type != "{http://www.alfresco.org/model/forum/1.0}forums" &&
|
||||
d.type != "{http://www.alfresco.org/model/wcmappmodel/1.0}webfolder" &&
|
||||
d.type != "{http://www.alfresco.org/model/content/1.0}systemfolder")) &&
|
||||
((args.f="0") ||
|
||||
(args.f="1" && !d.isDocument) ||
|
||||
(args.f="2" && d.isDocument) ||
|
||||
(args.f="3" && (d.properties.creator == user || d.properties.modifier == user)) ||
|
||||
(args.f="4" && (dateCompare(d.properties["cm:modified"],date,weekms) == 1 || dateCompare(d.properties["cm:created"], date, weekms) == 1)))>
|
||||
<#assign count=count+1>
|
||||
<div class="spaceRow spaceRow${(count % 2 = 0)?string("Odd", "Even")}" id="${d.id}">
|
||||
<div class="spaceIcon">
|
||||
<#if d.isDocument>
|
||||
<a href="${url.context}${d.url}" target="new" onclick="event.cancelBubble=true"><img class="spaceIconImage" alt="" width="16" height="16" src="${url.context}${d.icon16?replace(".gif",".png")}" border=0></a>
|
||||
<#elseif d.type="{http://www.alfresco.org/model/application/1.0}folderlink">
|
||||
<#-- the component parts need to build up an encoded url to the outer webscript -->
|
||||
<#-- the client-side url encoder method of the outer webscript runtime will be used -->
|
||||
<span class="spaceNavLinkUrl">${url.serviceContext}/ui/myspaces?f=${args.f}&p=${encodepath(d.properties.destination)}</span>
|
||||
<span class="spaceNavLinkImg" style="display:none"><img class="spaceIconImage" alt="" width="16" height="16" src="${url.context}${d.icon16?replace(".gif",".png")}" border="0"></span>
|
||||
<#else>
|
||||
<span class="spaceNavLinkUrl">${url.serviceContext}/ui/myspaces?f=${args.f}&p=${args.p?url}%2F${d.name?url}</span>
|
||||
<span class="spaceNavLinkImg" style="display:none"><img class="spaceIconImage" alt="" width="16" height="16" src="${url.context}${d.icon16?replace(".gif",".png")}" border="0"></span>
|
||||
</#if>
|
||||
<div style="display:none"><img class="spaceIconImage64" alt="" width="64" height="64" src="${url.context}${d.icon64}"></div>
|
||||
</div>
|
||||
<div class="spaceItem">
|
||||
${d.name?html}
|
||||
<span class="spaceInfo" onclick="event.cancelBubble=true; AlfNodeInfoMgr.toggle('${d.nodeRef}',this);">
|
||||
<img src="${url.context}/images/icons/popup.gif" class="popupImage" width="16" height="16" />
|
||||
</span>
|
||||
</div>
|
||||
<div class="spaceDetail">
|
||||
<table cellpadding="2" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
<span class="spaceMetaprop">${message("portlets.panel.description")}:</span> <span class="spaceMetadata"><#if d.properties.description?exists>${d.properties.description?html}<#else> </#if></span><br />
|
||||
<span class="spaceMetaprop">${message("portlets.panel.modified")}:</span> <span class="spaceMetadata">${d.properties.modified?datetime}</span><br />
|
||||
<span class="spaceMetaprop">${message("portlets.panel.modified_by")}:</span> <span class="spaceMetadata">${d.properties.modifier}</span>
|
||||
</td>
|
||||
<td width="24"> </td>
|
||||
<td>
|
||||
<span class="spaceMetaprop">${message("portlets.panel.created")}:</span> <span class="spaceMetadata">${d.properties.created?datetime}</span><br />
|
||||
<span class="spaceMetaprop">${message("portlets.panel.created_by")}:</span> <span class="spaceMetadata">${d.properties.creator}</span><br />
|
||||
<span class="spaceMetaprop">${message("portlets.panel.size")}:</span> <span class="spaceMetadata">${(d.size/1000)?string("0.##")} ${message("portlets.panel.kb")}</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="spaceResource spacesAjaxWait" id="${d.nodeRef}"></div>
|
||||
</div>
|
||||
</#if>
|
||||
</#list>
|
||||
<#-- hidden div with the count value for the page -->
|
||||
<div id="spaceCountValue" style="display:none">${message("portlets.message.showing_items", count)}</div>
|
||||
<#-- hidden div with the error message -->
|
||||
<div id="displayTheError" style="display:none">${message("portlets.error.data_currently_unavailable")}</div>
|
||||
<div id="previewCurrentlyUnavailable" style="display:none">${message("portlets.preview_currently_unavailable")}</div>
|
@@ -1,7 +0,0 @@
|
||||
<webscript>
|
||||
<shortname>My Tasks</shortname>
|
||||
<description>Generate the My Tasks portlet page</description>
|
||||
<url>/ui/mytasks?f={filter?}</url>
|
||||
<authentication>user</authentication>
|
||||
<transaction>required</transaction>
|
||||
</webscript>
|
@@ -1,482 +0,0 @@
|
||||
<link rel="stylesheet" href="${url.context}/css/main.css" TYPE="text/css">
|
||||
|
||||
<script type="text/javascript" src="${url.context}/scripts/ajax/yahoo/yahoo/yahoo-min.js"></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/ajax/yahoo/connection/connection-min.js"></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/ajax/mootools.v1.11.js"></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/ajax/common.js"></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/ajax/summary-info.js"></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/ajax/mytasks.js"></script>
|
||||
<script type="text/javascript">setContextPath('${url.context}');</script>
|
||||
|
||||
<script>
|
||||
// create manager object for the pop-up summary panels
|
||||
var TaskInfoMgr = new Alfresco.PanelManager("TaskInfoBean.sendTaskInfo", "taskId");
|
||||
</script>
|
||||
|
||||
<#-- get the filter mode from the passed in args -->
|
||||
<#-- filters: 0=all, 1=today, 2=next week, 3=no due date, 4=overdue -->
|
||||
<#if args.f?exists && args.f?length!=0><#assign filter=args.f?number><#else><#assign filter=0></#if>
|
||||
|
||||
<table border="0" cellspacing="0" cellpadding="0" class="taskTable">
|
||||
<tr>
|
||||
<td width="36" bgcolor="#F8F2AC"> </td>
|
||||
<td>
|
||||
<table border="0" cellspacing="0" cellpadding="0">
|
||||
<tr>
|
||||
<td align=center height=40 style="border-left: 1px solid #EBE398;">
|
||||
<table border="0" cellspacing="8" cellpadding="0" width="100%">
|
||||
<tr>
|
||||
<td>
|
||||
<div id="taskFilterBar">
|
||||
<ul>
|
||||
<li <#if filter=0>class="taskCurrent"</#if>><a href="#" onclick="MyTasks.filter(0); return false;"><span>${message("portlets.mytasks.tasks_to_do")}</span></a></li>
|
||||
<li <#if filter=1>class="taskCurrent"</#if>><a href="#" onclick="MyTasks.filter(1); return false;"><span style="color: #399DF7;">${message("portlets.mytasks.due_today")}</span></a></li>
|
||||
<li <#if filter=2>class="taskCurrent"</#if>><a href="#" onclick="MyTasks.filter(2); return false;"><span>${message("portlets.mytasks.next_7_days")}</span></a></li>
|
||||
<li <#if filter=3>class="taskCurrent"</#if>><a href="#" onclick="MyTasks.filter(3); return false;"><span>${message("portlets.mytasks.no_due_date")}</span></a></li>
|
||||
<li <#if filter=4>class="taskCurrent"</#if>><a href="#" onclick="MyTasks.filter(4); return false;"><span style="color: #DF3704;">${message("portlets.mytasks.overdue")}</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
<td width="150" align="right" style="padding: 5px 5px 0px 0px;">
|
||||
<a class="refreshViewLink" href="#" onclick="MyTasks.refreshList(); return false;"><img src="${url.context}/images/icons/reset.gif" border="0" width="16" height="16" style="vertical-align:-25%;padding-right:4px"><span>${message("portlets.refresh")}</span></a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div id="taskPanelOverlay"></div>
|
||||
<div id="taskPanel">
|
||||
<#-- populated via an AJAX call to 'mytaskspanel' webscript -->
|
||||
<#-- resolved filter required as argument -->
|
||||
<script>MyTasks.ServiceContext="${url.serviceContext}";MyTasks.Filter="${filter}";</script>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div id="taskFooter">
|
||||
<#-- the count value is retrieved and set dynamically from the AJAX webscript output above -->
|
||||
<span class="taskFooterText">${message("portlets.message.showing")} <span id="taskCount">0</span> <#if filter=4>${message("portlets.mytasks.showing_overdue")}</#if> ${message("portlets.mytasks.showing_task")}<#if filter=1> ${message("portlets.mytasks.showing_due_today")}</#if><#if filter=2> ${message("portlets.mytasks.showing_due_next_week")}</#if><#if filter=3> ${message("portlets.mytasks.showing_with_no_due_date_set")}</#if></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="paperEdgeRight"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
<div id="taskMessagePanel">
|
||||
<div class="taskMessagePanelClose"><img id="taskMessagePanelCloseImage" src="${url.context}/images/icons/close_portlet_static.gif" onclick="MyTasks.closeMessage();" /></div>
|
||||
<div class="taskMessagePanelLabel"></div>
|
||||
</div>
|
||||
<div style="font-size: 3px;">
|
||||
<span class="paperLeftCorner"></span>
|
||||
<span class="paperBottomEdge"></span>
|
||||
<span class="paperRightCorner"></span>
|
||||
</div>
|
||||
|
||||
<style type="text/css">
|
||||
.taskTable
|
||||
{
|
||||
background-color: #FEF8BC;
|
||||
border-top: 1px solid #EBE398;
|
||||
border-left: 1px solid #EBE398;
|
||||
background-image: url(${url.context}/images/logo/alf_task_bg.png);
|
||||
background-repeat: no-repeat;
|
||||
background-position: 72 64;
|
||||
width: 716px;
|
||||
}
|
||||
|
||||
#taskPanel
|
||||
{
|
||||
height: 300px;
|
||||
width: 672px;
|
||||
overflow: auto;
|
||||
overflow-y: scroll;
|
||||
border-top: 1px solid #EBE398;
|
||||
border-left: 1px solid #F6DEA0;
|
||||
visibility: hidden;
|
||||
scrollbar-face-color: #fcf49a;
|
||||
scrollbar-3dlight-color: #ede591;
|
||||
scrollbar-highlight-color: #fcf49a;
|
||||
scrollbar-shadow-color: #d5cc75;
|
||||
scrollbar-darkshadow-color: #d5cc75;
|
||||
scrollbar-arrow-color: #c2bb70;
|
||||
scrollbar-track-color: #f3e985;
|
||||
}
|
||||
|
||||
#taskPanelOverlay
|
||||
{
|
||||
background-image: url(${url.context}/images/icons/ajax_anim.gif);
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
position: absolute;
|
||||
border-top: 1px solid #EBE398;
|
||||
border-left: 1px solid #F6DEA0;
|
||||
height: 300px;
|
||||
width: 672px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
#taskFilterBar {
|
||||
float: left;
|
||||
width: 100%;
|
||||
}
|
||||
#taskFilterBar ul {
|
||||
margin: 0px;
|
||||
padding: 4px 10px 0px 4px;
|
||||
list-style: none;
|
||||
}
|
||||
#taskFilterBar li {
|
||||
display: inline;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
height: 27px;
|
||||
}
|
||||
#taskFilterBar a {
|
||||
background: none;
|
||||
float:left;
|
||||
margin: 0px;
|
||||
padding: 0px 0px 0px 4px;
|
||||
text-decoration: none;
|
||||
outline: none;
|
||||
}
|
||||
#taskFilterBar a span {
|
||||
background: none;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 13px;
|
||||
font-weight: bold;
|
||||
color: #5A5741;
|
||||
display: block;
|
||||
float: none;
|
||||
padding: 5px 15px 4px 6px;
|
||||
}
|
||||
|
||||
#taskFilterBar a:hover {
|
||||
background: url("${url.context}/images/parts/marker_effect_left.png") no-repeat left top;
|
||||
}
|
||||
|
||||
#taskFilterBar a:hover span {
|
||||
background: url("${url.context}/images/parts/marker_effect_right.png") no-repeat right top;
|
||||
color: #ffffff !important;
|
||||
}
|
||||
|
||||
#taskFilterBar .taskCurrent a {
|
||||
background: url("${url.context}/images/parts/marker_effect_left.png") no-repeat left top;
|
||||
}
|
||||
#taskFilterBar .taskCurrent a span {
|
||||
background: url("${url.context}/images/parts/marker_effect_right.png") no-repeat right top;
|
||||
color: #ffffff !important;
|
||||
}
|
||||
|
||||
.refreshViewLink, .refreshViewLink
|
||||
{
|
||||
text-decoration: none !important;
|
||||
}
|
||||
.refreshViewLink span
|
||||
{
|
||||
color: #5A5741;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 13px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.taskRow
|
||||
{
|
||||
padding-top: 4px;
|
||||
border-top: 1px solid transparent;
|
||||
border-bottom: 1px solid #EBE398;
|
||||
}
|
||||
|
||||
#taskFooter
|
||||
{
|
||||
height: 36px;
|
||||
width: 656px;
|
||||
padding: 0px;
|
||||
border-top: 1px solid #EBE398;
|
||||
border-left: 1px solid #F6DEA0;
|
||||
text-align: center;
|
||||
color: #5A5741;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 13px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.taskFooterText
|
||||
{
|
||||
display: block;
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
.taskTitle
|
||||
{
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.taskItem
|
||||
{
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 14px;
|
||||
color: #5A5741;
|
||||
margin: 0px 0px 0px 24px;
|
||||
padding: 0px 8px 8px;
|
||||
}
|
||||
|
||||
.taskItemOverdue
|
||||
{
|
||||
color: #DF3704;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.taskItemToday
|
||||
{
|
||||
color: #399DF7;
|
||||
}
|
||||
|
||||
.taskIndicator
|
||||
{
|
||||
float: left;
|
||||
padding-top:6px;
|
||||
padding-left:8px;
|
||||
}
|
||||
|
||||
.taskDetail
|
||||
{
|
||||
color: #5A5741;
|
||||
background-color: #DFC900;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.taskDetailTopSpacer {
|
||||
padding: 4px 0px 0px;
|
||||
}
|
||||
|
||||
.taskDetailSeparator
|
||||
{
|
||||
border-right: 1px solid #c1af05;
|
||||
}
|
||||
|
||||
.taskItemSelected
|
||||
{
|
||||
background: #FFE500 url("${url.context}/images/parts/mytasks_arrow_down.png") no-repeat right top;
|
||||
border-bottom: 1px solid #82770B !important;
|
||||
border-top: 1px solid #82770B !important;
|
||||
}
|
||||
|
||||
.taskItemSelectedOpen
|
||||
{
|
||||
background-image: url("${url.context}/images/parts/mytasks_arrow_up.png") !important;
|
||||
}
|
||||
|
||||
.taskResources
|
||||
{
|
||||
border: 1px solid #FFE500;
|
||||
background-color: #fff;
|
||||
margin: 4px 0px 0px 0px;
|
||||
width: 300px;
|
||||
height: 80px;
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.taskResourceEven
|
||||
{
|
||||
}
|
||||
|
||||
.taskResourceOdd
|
||||
{
|
||||
background-color: #FEF8BC;
|
||||
}
|
||||
|
||||
.taskResourceHeader
|
||||
{
|
||||
color: #5A5741;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
padding: 0px;
|
||||
font-weight: bold;
|
||||
display: inline;
|
||||
}
|
||||
|
||||
a.resourceLink:link, a.resourceLink:visited
|
||||
{
|
||||
color: #5A5741;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
.resourceLink
|
||||
{
|
||||
color: #5A5741;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
.taskAction
|
||||
{
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
.taskAction ul {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
list-style: none;
|
||||
text-align: center;
|
||||
}
|
||||
.taskAction ul li {
|
||||
display: inline;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.taskAction a {
|
||||
background: url("${url.context}/images/parts/task_btn_normal_right.png") no-repeat 100% 50%;
|
||||
float: left;
|
||||
margin: 4px;
|
||||
padding: 0px;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
.taskAction a span {
|
||||
background: url("${url.context}/images/parts/task_btn_normal_left.png") no-repeat 0 50%;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 11px;
|
||||
font-weight: bold;
|
||||
color: #5A5741;
|
||||
padding: 4px 1.5em;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.taskAction a:hover {
|
||||
background: url("${url.context}/images/parts/task_btn_rollover_right.png") no-repeat 100% 50%;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.taskAction a:hover span {
|
||||
background: url("${url.context}/images/parts/task_btn_rollover_left.png") no-repeat 0 50%;
|
||||
}
|
||||
|
||||
.taskManage ul {
|
||||
margin: 0px;
|
||||
padding: 4px 0px 0px;
|
||||
list-style: none;
|
||||
}
|
||||
.taskManage li {
|
||||
display: inline;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
height: 27px;
|
||||
}
|
||||
|
||||
.taskManage a {
|
||||
background: url("${url.context}/images/parts/task_btn_normal_left.png") no-repeat left top;
|
||||
float:left;
|
||||
margin: 0px;
|
||||
padding: 0px 0px 0px 8px;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
.taskManage a span {
|
||||
background: url("${url.context}/images/parts/task_btn_normal_right.png") no-repeat right top;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 11px;
|
||||
font-weight: bold;
|
||||
color: #5A5741;
|
||||
display: block;
|
||||
float: none;
|
||||
padding: 4px 15px 4px 6px;
|
||||
}
|
||||
|
||||
.taskManage a:hover {
|
||||
background: url("${url.context}/images/parts/task_btn_rollover_left.png") no-repeat left top;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.taskManage a:hover span {
|
||||
background: url("${url.context}/images/parts/task_btn_rollover_right.png") no-repeat right top;
|
||||
}
|
||||
|
||||
.taskMetadata
|
||||
{
|
||||
color: #5A5741;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
.taskMetaprop
|
||||
{
|
||||
color: #5A5741;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.paperEdgeRight
|
||||
{
|
||||
background-image: url(${url.context}/images/parts/paper_rightedge.png);
|
||||
}
|
||||
|
||||
.paperLeftCorner
|
||||
{
|
||||
background-image: url(${url.context}/images/parts/paper_leftcorner.png);
|
||||
float: left;
|
||||
height: 6px;
|
||||
width: 36px;
|
||||
}
|
||||
|
||||
.paperBottomEdge
|
||||
{
|
||||
background-image: url(${url.context}/images/parts/paper_bottomedge.png);
|
||||
float: left;
|
||||
height: 6px;
|
||||
width: 676px;
|
||||
}
|
||||
|
||||
.paperRightCorner
|
||||
{
|
||||
background-image: url(${url.context}/images/parts/paper_rightcorner.gif);
|
||||
float: left;
|
||||
height: 6px;
|
||||
width: 4px;
|
||||
}
|
||||
|
||||
#taskMessagePanel
|
||||
{
|
||||
position: absolute;
|
||||
border: 1px solid #65696C;
|
||||
background-color: #eeeeee;
|
||||
width: 250px;
|
||||
height: 72px;
|
||||
padding: 8px;
|
||||
margin-left: 440px;
|
||||
display: none;
|
||||
z-index: 1;
|
||||
-moz-border-radius: 7px;
|
||||
}
|
||||
|
||||
.taskMessagePanelClose
|
||||
{
|
||||
margin: -4px -4px 2px 2px;
|
||||
float:right;
|
||||
}
|
||||
|
||||
#taskMessagePanelCloseImage
|
||||
{
|
||||
cursor: pointer;
|
||||
display: block;
|
||||
height: 23px;
|
||||
width: 23px;
|
||||
}
|
||||
|
||||
.taskMessagePanelLabel
|
||||
{
|
||||
color: #45494C;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
</style>
|
@@ -1,7 +0,0 @@
|
||||
<webscript>
|
||||
<shortname>My Tasks Panel</shortname>
|
||||
<description>Generate the Generate the inner panel for the My Tasks portlet page</description>
|
||||
<url>/ui/mytaskspanel?f={filter?}</url>
|
||||
<authentication>user</authentication>
|
||||
<transaction>required</transaction>
|
||||
</webscript>
|
@@ -1,104 +0,0 @@
|
||||
<#assign weekms=1000*60*60*24*7>
|
||||
<#assign count=0>
|
||||
<#list workflow.assignedTasks as t>
|
||||
<#-- TODO: is it better to use a js script to pre-filter the list? -->
|
||||
<#assign hasDue=t.properties["bpm:dueDate"]?exists>
|
||||
<#if hasDue>
|
||||
<#assign due=t.properties["bpm:dueDate"]>
|
||||
</#if>
|
||||
<#-- filters: 0=all, 1=today, 2=next week, 3=no due date, 4=overdue -->
|
||||
<#if (args.f="0") ||
|
||||
(args.f="3" && !hasDue) ||
|
||||
(args.f="1" && hasDue && (dateCompare(date?date, due?date, 0, "==") == 1)) ||
|
||||
(args.f="2" && hasDue && (dateCompare(due?date, date?date) == 1 && dateCompare(date?date, due?date, weekms) == 1)) ||
|
||||
(args.f="4" && hasDue && (dateCompare(date?date, due?date) == 1))>
|
||||
<#assign count=count+1>
|
||||
<div class="taskRow" id="${t.id}" rel="<#if hasDue>${due?date?string("yyyyMMddHHmmss")}<#else>99999999999999</#if>">
|
||||
<div class="taskTitle">
|
||||
<div class="taskIndicator">
|
||||
<#if hasDue>
|
||||
<#-- items due today? -->
|
||||
<#if (args.f="0" || args.f="1") && (dateCompare(date?date, due?date, 0, "==") == 1)>
|
||||
<img src="${url.context}/images/icons/task_today.gif"></div><div class="taskItem taskItemToday">
|
||||
<#-- items overdue? -->
|
||||
<#elseif (args.f="0" || args.f="4") && (dateCompare(date?date, due?date) == 1)>
|
||||
<img src="${url.context}/images/icons/task_overdue.gif"></div><div class="taskItem taskItemOverdue">
|
||||
<#else>
|
||||
</div><div class="taskItem">
|
||||
</#if>
|
||||
<#else>
|
||||
</div><div class="taskItem">
|
||||
</#if>
|
||||
<#if t.description?exists>
|
||||
${t.description?html} (${t.type?html})
|
||||
<#else>
|
||||
${t.type?html} (${t.type?html})
|
||||
</#if>
|
||||
<#if hasDue>
|
||||
(Due: ${due?date})
|
||||
</#if>
|
||||
<span class="taskInfo" onclick="event.cancelBubble=true; TaskInfoMgr.toggle('${t.id}',this);">
|
||||
<img src="${url.context}/images/icons/popup.gif" class="popupImage" width="16" height="16" />
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="taskDetail">
|
||||
<div class="taskDetailTopSpacer"></div>
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td width="190" class="taskDetailSeparator">
|
||||
<table cellpadding="2" cellspacing="2" style="margin-left:24px; margin-top:4px">
|
||||
<tr><td class="taskMetaprop">${message("portlets.mytaskspanel.status")}:</td><td class="taskMetadata">${t.properties["bpm:status"]}</td>
|
||||
<tr><td class="taskMetaprop">${message("portlets.mytaskspanel.priority")}:</td><td class="taskMetadata">${t.properties["bpm:priority"]}</td>
|
||||
<tr><td class="taskMetaprop">${message("portlets.mytaskspanel.start_date")}:</td><td class="taskMetadata">${t.startDate?date}</td></tr>
|
||||
<tr><td class="taskMetaprop">${message("portlets.mytaskspanel.complete")}:</td><td class="taskMetadata">${t.properties["bpm:percentComplete"]}%</td>
|
||||
</table>
|
||||
</td>
|
||||
<td width="8"> </td>
|
||||
<td width="300">
|
||||
<div class="taskResourceHeader">${t.name?html}:</div>
|
||||
<div class="taskResources"></div>
|
||||
</td>
|
||||
<td width="8" class="taskDetailSeparator"> </td>
|
||||
<td align="center">
|
||||
<table cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
<div class="taskManage">
|
||||
<ul>
|
||||
<li><a href="#" onclick="event.cancelBubble=true; openWindowCallback('${url.context}/command/ui/managetask?id=${t.id}&type=${t.qnameType}&container=plain', MyTasks.manageTaskCallback);"><span style="white-space:nowrap"><img src="${url.context}/images/icons/manage_workflow_task.gif" align="top" alt="" border="0"> ${message("portlets.mytaskspanel.manage_task")}</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2"> </td>
|
||||
<td width="300" align="center">
|
||||
<table cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
<div class="taskAction">
|
||||
<ul>
|
||||
<#list t.transitions as wt>
|
||||
<li><a href="#" onclick="event.cancelBubble=true; MyTasks.transitionTask('/command/task/end/${t.id}<#if wt.id?exists>/${wt.id}</#if>', '${message("portlets.mytaskspanel.workflow_action")} \'${wt.label?html}\' ${message("portlets.mytaskspanel.workflow_complited")}.');"><span>${wt.label?html}</span></a></li>
|
||||
</#list>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td colspan="2"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</#if>
|
||||
</#list>
|
||||
<#-- hidden div with the error message -->
|
||||
<div id="displayTheError" style="display:none">${message("portlets.error.data_currently_unavailable")}</div>
|
||||
<#-- hidden div with the count value for the page -->
|
||||
<div id="taskCountValue" style="display:none">${count}</div>
|
@@ -1,7 +0,0 @@
|
||||
<webscript>
|
||||
<shortname>My Web Modified Files</shortname>
|
||||
<description>Generate the My Web Modified Files portlet page</description>
|
||||
<url>/ui/mywebfiles</url>
|
||||
<authentication>user</authentication>
|
||||
<transaction>required</transaction>
|
||||
</webscript>
|
@@ -1,271 +0,0 @@
|
||||
<link rel="stylesheet" href="${url.context}/css/main.css" TYPE="text/css">
|
||||
|
||||
<script type="text/javascript" src="${url.context}/scripts/ajax/yahoo/yahoo/yahoo-min.js"></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/ajax/yahoo/connection/connection-min.js"></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/ajax/mootools.v1.11.js"></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/ajax/common.js"></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/ajax/summary-info.js"></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/ajax/mywebfiles.js"></script>
|
||||
<script type="text/javascript">setContextPath('${url.context}');</script>
|
||||
|
||||
<script>
|
||||
// create manager object for the pop-up summary panels
|
||||
var AlfNodeInfoMgr = new Alfresco.PanelManager("NodeInfoBean.sendNodeInfo", "noderef", "portlet_node_summary_panel.ftl");
|
||||
</script>
|
||||
|
||||
<#-- List the user modified files in all web projects the user is assigned to -->
|
||||
<table cellspacing=0 cellpadding=0 border=0 class="webFilesTable">
|
||||
<tr><td>
|
||||
<div id="webFilesPanel">
|
||||
<#assign filecount=0>
|
||||
<#assign projectcount=0>
|
||||
<#assign search="TYPE:\"{http://www.alfresco.org/model/wcmappmodel/1.0}webfolder\"">
|
||||
<#list companyhome.childrenByLuceneSearch[search]?sort_by('name') as wp>
|
||||
<#list wp.getChildAssocsByType("wca:webuser") as user>
|
||||
<#if user.properties["wca:username"] = person.properties.userName>
|
||||
<#assign projectcount=projectcount+1>
|
||||
<#-- construct the sandbox name based on the webproject and current username -->
|
||||
<#assign storeId=wp.properties["wca:avmstore"]>
|
||||
<#assign username=person.properties.userName>
|
||||
<#assign sandbox=avm.userSandboxStore(storeId, username)>
|
||||
<#if avm.lookupStore(sandbox)?exists>
|
||||
<div class="webProjectRow">
|
||||
<div class="webProjectTitle">
|
||||
<a class="webPreviewLink" href="${avm.websiteUserSandboxUrl(storeId, username)}" target="new"><img src="${url.context}/images/icons/website_large.gif" width=32 height=32 border=0><span class="websiteLink">${wp.name}</span></a>
|
||||
<span class="webProjectInfo" onclick="event.cancelBubble=true; AlfNodeInfoMgr.toggle('${wp.nodeRef}',this);">
|
||||
<img src="${url.context}/images/icons/popup.gif" class="popupImage" width="16" height="16" />
|
||||
</span>
|
||||
<a class="webProjectLink" href="${url.context}${wp.url}" target="new"><img class="itemImageIcon" src="${url.context}/images/icons/view_web_project.gif" width="16" height="16" border="0">${message("portlets.mywebfiles.view_web_project")}</a>
|
||||
<#if wp.properties.description?exists && wp.properties.description?length!=0>
|
||||
<br>
|
||||
<span class="webprojectDesc">${wp.properties.description?html}</span>
|
||||
</#if>
|
||||
</div>
|
||||
<div class="webProjectFiles"> <#-- marker class for dynamic click script -->
|
||||
<#assign moditems = avm.getModifiedItems(storeId, username, wp.properties["wca:defaultwebapp"])>
|
||||
<div class="fileTitleRow">${message("portlets.mywebfiles.my_modified_items")}</div>
|
||||
<div class="fileResources">
|
||||
<#if moditems?size != 0>
|
||||
<#assign lcount=0>
|
||||
<#list moditems as t>
|
||||
<#assign filecount=filecount+1>
|
||||
<div class="fileItemRow${(lcount%2=0)?string("", "Alt")}">
|
||||
<#if t.isDocument>
|
||||
<a class="fileItemLink" href="${url.context}${t.url}" target="new" title="${t.path?html}"><img class="itemImageIcon" src="${url.context}${t.icon16}" border="0">${t.name?html}</a>
|
||||
<#else>
|
||||
<span title="${t.path?html}"><img class="itemImageIcon" src="${url.context}${t.icon16}"><span class="fileItemLink">${t.name?html}</span></span>
|
||||
</#if>
|
||||
</a>
|
||||
<#if t.isDocument>
|
||||
<#if t.isLocked>
|
||||
<img class="itemImageIcon" src="${url.context}/images/icons/locked${(t.isLockOwner)?string("_owner", "")}.gif" border="0">
|
||||
</#if>
|
||||
<#if t.hasAspect("wca:forminstancedata") && !t.hasAspect("wcmwf:submitted") && t.hasLockAccess>
|
||||
<a class="fileActionLink" href="${url.context}/c/ui/editwebcontent?sandbox=${sandbox}&webproject=${wp.id}&path=${t.path?url}&container=plain" target="new"><img class="itemImageIcon" src="${url.context}/images/icons/edit_icon.gif" border="0">${message("portlets.mywebfiles.edit")}</a>
|
||||
</#if>
|
||||
</#if>
|
||||
<#assign lcount=lcount+1>
|
||||
</div>
|
||||
</#list>
|
||||
<#else>
|
||||
<div class="fileItemRow">${message("portlets.mywebfiles.no_items_modified")}</div>
|
||||
</#if>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</#if>
|
||||
</#if>
|
||||
</#list>
|
||||
</#list>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="filesFooter">
|
||||
${message("portlets.mywebfiles.showing_count_files_in_count_web_projects", filecount, projectcount)}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<STYLE type="text/css">
|
||||
.webFilesTable
|
||||
{
|
||||
background-color: #F8FCFD;
|
||||
border: 1px solid #CCD4DB;
|
||||
}
|
||||
|
||||
#webFilesPanel
|
||||
{
|
||||
height: 320px;
|
||||
width: 716px;
|
||||
overflow: auto;
|
||||
overflow-y: scroll;
|
||||
scrollbar-face-color: #fafdfd;
|
||||
scrollbar-3dlight-color: #d2dde0;
|
||||
scrollbar-highlight-color: #d2dde0;
|
||||
scrollbar-shadow-color: #c3cdd0;
|
||||
scrollbar-darkshadow-color: #c3cdd0;
|
||||
scrollbar-arrow-color: #239ad7;
|
||||
scrollbar-track-color: #ecf1f2;
|
||||
}
|
||||
|
||||
a.webPreviewLink:link, a.webPreviewLink:visited, a.webPreviewLink:hover
|
||||
{
|
||||
color: #5A5741;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 13px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
a.webProjectLink:link, a.webProjectLink:visited, a.webProjectLink:hover
|
||||
{
|
||||
color: #5A5741;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 11px;
|
||||
padding-left: 16px;
|
||||
vertical-align: 60%;
|
||||
}
|
||||
|
||||
a.fileActionLink:link, a.fileActionLink:visited, a.fileActionLink:hover
|
||||
{
|
||||
color: #5A5741;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 11px;
|
||||
padding-left: 8px;
|
||||
}
|
||||
|
||||
span.webProjectInfo
|
||||
{
|
||||
vertical-align: 60%;
|
||||
}
|
||||
|
||||
.webProjectRow
|
||||
{
|
||||
background-color: #EEF7FB;
|
||||
border-top: 1px solid #EEF7FB;
|
||||
border-bottom: 1px solid #CCD4DB;
|
||||
}
|
||||
|
||||
.webProjectRowSelected
|
||||
{
|
||||
background-color: #CCE7F3;
|
||||
border-bottom: 1px solid #0092DD;
|
||||
border-top: 1px solid #0092DD;
|
||||
}
|
||||
|
||||
.webProjectFiles
|
||||
{
|
||||
background-color: #BAD7E4;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.webprojectDesc
|
||||
{
|
||||
color: #5A5741;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
padding-left: 40px;
|
||||
}
|
||||
|
||||
.webProjectTitle
|
||||
{
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.fileResources
|
||||
{
|
||||
border: 1px solid #AFBDC3;
|
||||
background-color: #F8FCFD;
|
||||
margin: 0px 0px 0px 48px;
|
||||
width: 360px;
|
||||
height: 92px;
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.fileTitleRow
|
||||
{
|
||||
border-top: 1px solid #CCD4DB;
|
||||
border-bottom: 1px dotted #CCD4DB;
|
||||
color: #5A5741;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 13px;
|
||||
font-weight: bold;
|
||||
padding: 4px 0px 4px 48px;
|
||||
}
|
||||
|
||||
.fileItemRow
|
||||
{
|
||||
background-color: #F8FCFD;
|
||||
color: #5A5741;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 13px;
|
||||
padding: 3px 0px 2px 3px;
|
||||
}
|
||||
|
||||
.fileItemRowAlt
|
||||
{
|
||||
background-color: #EEF7FB;
|
||||
color: #5A5741;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 13px;
|
||||
padding: 3px 0px 2px 3px;
|
||||
}
|
||||
|
||||
a.fileItemLink:link, a.fileItemLink:visited, a.fileItemLink:hover
|
||||
{
|
||||
color: #5A5741;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 11px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
span.fileItemLink
|
||||
{
|
||||
color: #5A5741;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
.filesRow, a.filesRow:link, a.filesRow:visited, a.filesRow:hover
|
||||
{
|
||||
background-color: #F8FCFD;
|
||||
color: #5A5741;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 13px;
|
||||
padding-left: 44px;
|
||||
padding-top: 4px;
|
||||
border-bottom: 1px solid #F8FCFD;
|
||||
}
|
||||
|
||||
.filesRowAlt
|
||||
{
|
||||
}
|
||||
|
||||
img.itemImageIcon
|
||||
{
|
||||
vertical-align: -25%;
|
||||
padding-right:4px;
|
||||
}
|
||||
|
||||
span.websiteLink
|
||||
{
|
||||
padding-left:8px;
|
||||
vertical-align:60%;
|
||||
}
|
||||
|
||||
.filesFooter
|
||||
{
|
||||
width: 700px;
|
||||
padding: 8px;
|
||||
border: 1px solid #F8FCFD;
|
||||
background-image: url(${url.context}/images/parts/doclist_footerbg.png);
|
||||
text-align: center;
|
||||
color: #515D6B;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 13px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
</STYLE>
|
@@ -1,7 +0,0 @@
|
||||
<webscript>
|
||||
<shortname>My Web Forms</shortname>
|
||||
<description>Generate the My Web Forms portlet page</description>
|
||||
<url>/ui/mywebforms</url>
|
||||
<authentication>user</authentication>
|
||||
<transaction>required</transaction>
|
||||
</webscript>
|
@@ -1,196 +0,0 @@
|
||||
<link rel="stylesheet" href="${url.context}/css/main.css" TYPE="text/css">
|
||||
|
||||
<script type="text/javascript" src="${url.context}/scripts/ajax/yahoo/yahoo/yahoo-min.js"></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/ajax/yahoo/connection/connection-min.js"></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/ajax/mootools.v1.11.js"></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/ajax/common.js"></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/ajax/summary-info.js"></script>
|
||||
<script type="text/javascript" src="${url.context}/scripts/ajax/mywebforms.js"></script>
|
||||
<script type="text/javascript">setContextPath('${url.context}');</script>
|
||||
|
||||
<script>
|
||||
// create manager object for the pop-up summary panels
|
||||
var AlfNodeInfoMgr = new Alfresco.PanelManager("NodeInfoBean.sendNodeInfo", "noderef", "portlet_node_summary_panel.ftl");
|
||||
</script>
|
||||
|
||||
<#-- List the available web form objects in all web projects the user is assigned to -->
|
||||
<table cellspacing=0 cellpadding=0 border=0 class="formsTable">
|
||||
<tr><td>
|
||||
<div id="formsPanel">
|
||||
<#assign formcount=0>
|
||||
<#assign projectcount=0>
|
||||
<#assign search="TYPE:\"{http://www.alfresco.org/model/wcmappmodel/1.0}webfolder\"">
|
||||
<#list companyhome.childrenByLuceneSearch[search]?sort_by('name') as wp>
|
||||
<#list wp.childAssocs["wca:webuser"] as user>
|
||||
<#if user.properties["wca:username"] = person.properties.userName>
|
||||
<#assign projectcount=projectcount+1>
|
||||
<#-- construct the sandbox name based on the webproject and current username -->
|
||||
<#assign storeId=wp.properties["wca:avmstore"]>
|
||||
<#assign username=person.properties.userName>
|
||||
<#assign sandbox=avm.userSandboxStore(storeId, username)>
|
||||
<#if avm.lookupStore(sandbox)?exists>
|
||||
<div class="webProjectRow">
|
||||
<div class="webProjectTitle">
|
||||
<a class="webPreviewLink" href="${avm.websiteUserSandboxUrl(storeId, username)}" target="new"><img src="${url.context}/images/icons/website_large.gif" width=32 height=32 border=0><span class="websiteLink">${wp.name}</span></a>
|
||||
<span class="webProjectInfo" onclick="event.cancelBubble=true; AlfNodeInfoMgr.toggle('${wp.nodeRef}',this);">
|
||||
<img src="${url.context}/images/icons/popup.gif" class="popupImage" width="16" height="16" />
|
||||
</span>
|
||||
<a class="webProjectLink" href="${url.context}${wp.url}" target="new"><img class="itemImageIcon" src="${url.context}/images/icons/view_web_project.gif" width="16" height="16" border="0">${message("portlets.mywebfiles.view_web_project")}</a>
|
||||
<#if wp.properties.description?exists && wp.properties.description?length!=0>
|
||||
<br>
|
||||
<span class="webprojectDesc">${wp.properties.description?html}</span>
|
||||
</#if>
|
||||
</div>
|
||||
<div class="webProjectForms"> <#-- marker class for rollover script -->
|
||||
<#if wp.childAssocs["wca:webform"]?exists>
|
||||
<div class="formsRowSeparator"></div>
|
||||
<#list wp.childAssocs["wca:webform"] as form>
|
||||
<#assign formcount=formcount+1>
|
||||
<div class="formsRow">
|
||||
<img src="${url.context}/images/icons/webform_large.gif" width=32 height=32 border=0>
|
||||
<a class="webformLink" href="${url.context}/c/ui/createwebcontent?sandbox=${sandbox}&webproject=${wp.id}&form=${form.properties["wca:formname"]}&container=plain" target="new">${form.properties.title?html}</a>
|
||||
<#if (form.properties.description?exists) && (form.properties.description?length!=0)>
|
||||
<span style="vertical-align:50%">(${form.properties.description?html})</span>
|
||||
</#if>
|
||||
</div>
|
||||
</#list>
|
||||
</#if>
|
||||
</div>
|
||||
</div>
|
||||
</#if>
|
||||
</#if>
|
||||
</#list>
|
||||
</#list>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="formsFooter">
|
||||
${message("portlets.mywebfiles.showing_count_files_in_count_web_projects", formcount, projectcount)}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<STYLE type="text/css">
|
||||
.formsTable
|
||||
{
|
||||
background-color: #F8FCFD;
|
||||
border: 1px solid #CCD4DB;
|
||||
}
|
||||
|
||||
#formsPanel
|
||||
{
|
||||
height: 320px;
|
||||
width: 716px;
|
||||
overflow: auto;
|
||||
overflow-y: scroll;
|
||||
scrollbar-face-color: #fafdfd;
|
||||
scrollbar-3dlight-color: #d2dde0;
|
||||
scrollbar-highlight-color: #d2dde0;
|
||||
scrollbar-shadow-color: #c3cdd0;
|
||||
scrollbar-darkshadow-color: #c3cdd0;
|
||||
scrollbar-arrow-color: #239ad7;
|
||||
scrollbar-track-color: #ecf1f2;
|
||||
}
|
||||
|
||||
a.webPreviewLink:link, a.webPreviewLink:visited, a.webPreviewLink:hover
|
||||
{
|
||||
color: #5A5741;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 13px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
a.webProjectLink:link, a.webProjectLink:visited, a.webProjectLink:hover
|
||||
{
|
||||
color: #5A5741;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 11px;
|
||||
padding-left: 16px;
|
||||
vertical-align: 60%;
|
||||
}
|
||||
|
||||
span.webProjectInfo
|
||||
{
|
||||
vertical-align: 60%;
|
||||
}
|
||||
|
||||
.webProjectRow
|
||||
{
|
||||
background-color: #EEF7FB;
|
||||
border-bottom: 1px solid #CCD4DB;
|
||||
}
|
||||
|
||||
.webProjectForms
|
||||
{
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.webprojectDesc
|
||||
{
|
||||
color: #5A5741;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
padding-left: 40px;
|
||||
}
|
||||
|
||||
.webProjectTitle
|
||||
{
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
img.itemImageIcon
|
||||
{
|
||||
vertical-align: -25%;
|
||||
padding-right:4px;
|
||||
}
|
||||
|
||||
.formsRowSeparator
|
||||
{
|
||||
border-bottom: 1px dotted #CCD4DB;
|
||||
}
|
||||
|
||||
.formsRow, a.formsRow:link, a.formsRow:visited, a.formsRow:hover
|
||||
{
|
||||
background-color: #F8FCFD;
|
||||
color: #5A5741;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 13px;
|
||||
padding-left: 44px;
|
||||
padding-top: 4px;
|
||||
border-bottom: 1px solid #F8FCFD;
|
||||
}
|
||||
|
||||
.formsRowAlt
|
||||
{
|
||||
}
|
||||
|
||||
span.websiteLink
|
||||
{
|
||||
padding-left:8px;
|
||||
vertical-align:60%;
|
||||
}
|
||||
|
||||
a.webformLink:link, a.webformLink:visited, a.webformLink:hover
|
||||
{
|
||||
color: #5A5741;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 13px;
|
||||
vertical-align:50%;
|
||||
}
|
||||
|
||||
.formsFooter
|
||||
{
|
||||
width: 700px;
|
||||
padding: 8px;
|
||||
border: 1px solid #F8FCFD;
|
||||
background-image: url(${url.context}/images/parts/doclist_footerbg.png);
|
||||
text-align: center;
|
||||
color: #515D6B;
|
||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||
font-size: 13px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
</STYLE>
|
@@ -1,9 +0,0 @@
|
||||
<webscript>
|
||||
<shortname>JSF Redirection Handler</shortname>
|
||||
<description>JSF Redirection Handler</description>
|
||||
<url>/webframework/redirect/jsf-client/{command}/{objectType}/{storeType}/{storeId}/{nodeId}</url>
|
||||
<url>/webframework/redirect/jsf-client/{command}/{objectType}/{id}</url>
|
||||
<format default="html">argument</format>
|
||||
<authentication>user</authentication>
|
||||
<transaction>required</transaction>
|
||||
</webscript>
|
@@ -1,5 +0,0 @@
|
||||
<#if redirectUrl?exists>
|
||||
<script language="Javascript">
|
||||
window.location.href = "${redirectUrl}";
|
||||
</script>
|
||||
</#if>
|
@@ -1,47 +0,0 @@
|
||||
model.command = url.templateArgs["command"];
|
||||
model.objectType = url.templateArgs["objectType"];
|
||||
|
||||
if("browse" == model.command)
|
||||
{
|
||||
if("node" == model.objectType)
|
||||
{
|
||||
var storeType = url.templateArgs["storeType"];
|
||||
var storeId = url.templateArgs["storeId"];
|
||||
var nodeId = url.templateArgs["nodeId"];
|
||||
|
||||
model.redirectUrl = url.context + "/n/browse/"+storeType+"/"+storeId+"/"+nodeId;
|
||||
}
|
||||
|
||||
if("webproject" == model.objectType)
|
||||
{
|
||||
model.webprojectref = url.templateArgs["id"];
|
||||
|
||||
// load the web project metadata
|
||||
var service = webprojects;
|
||||
var data = service.getWebProject(model.webprojectref);
|
||||
|
||||
// look up the node ref for the web project
|
||||
// TODO: could this be made to be part of the web projects service?
|
||||
|
||||
// look up the web project
|
||||
var dmType = "{http://www.alfresco.org/model/wcmappmodel/1.0}webfolder";
|
||||
var query = "TYPE:\"" + dmType + "\"";
|
||||
|
||||
var webprojects = search.luceneSearch(query);
|
||||
|
||||
// walk through the projects, get the avm store id (for staging)
|
||||
for(var i = 0; i < webprojects.length; i++)
|
||||
{
|
||||
var dns = webprojects[i].properties["{http://www.alfresco.org/model/wcmappmodel/1.0}avmstore"];
|
||||
if(dns == model.webprojectref)
|
||||
{
|
||||
var storeType = webprojects[i].properties["{http://www.alfresco.org/model/system/1.0}store-protocol"];
|
||||
var storeId = webprojects[i].properties["{http://www.alfresco.org/model/system/1.0}store-identifier"];
|
||||
var nodeId = webprojects[i].properties["{http://www.alfresco.org/model/system/1.0}node-uuid"];
|
||||
|
||||
model.redirectUrl = url.context + "/n/browse/"+storeType+"/"+storeId+"/"+nodeId;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -38,6 +38,7 @@ import javax.servlet.http.HttpSession;
|
||||
* safe.
|
||||
*
|
||||
* @author Alan Davis
|
||||
* @deprecated 5.0 not exposed in web-client web.xml
|
||||
*/
|
||||
public class SessionSynchronizedFilter implements Filter
|
||||
{
|
||||
|
Reference in New Issue
Block a user