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:
Erik Winlof
2014-09-04 05:52:30 +00:00
parent 62d83b04bb
commit dfc91becc7
58 changed files with 1 additions and 3879 deletions

View File

@@ -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>

View File

@@ -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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -1,2 +0,0 @@
${blogSummary.numUpdates} articles need updating<br>
${blogSummary.numPending} articles pending

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -1,2 +0,0 @@
${calendarSummary.thisWeek} events this week<br>
${calendarSummary.nextWeek} events next week

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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>&nbsp;</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>

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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>&nbsp;<span class="metaData">${c.properties.modified?string(datetimeformat)}</span>&nbsp;
<span class="metaTitle">Modified&nbsp;By:</span>&nbsp;<span class="metaData">${c.properties.modifier}</span>
<span class="metaTitle">Size:</span>&nbsp;<span class="metaData">${(c.size/1000)?string("0.##")}&nbsp;KB</span>
</div>
</div>
</div>
</#list>
</div>
</td>
<td width="1" style="background-color:#b9bec4;"></td>
</tr>
</table>
<div class="collabFooter">
<span>&nbsp;</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>

View File

@@ -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>

View File

@@ -1,2 +0,0 @@
${docSummary.numNew} added in the last 7 days<br>
${docSummary.numModified} modified in the last 7 days

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -1,2 +0,0 @@
${emailSummary.numToday} e-mails have arrived today<br>
${emailSummary.numWeek} e-mails in the last 7 days

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -1,2 +0,0 @@
${forumSummary.numPosts} posts in the last 7 days<br>
${forumSummary.numTopics} new topics in the last 7 days

View File

@@ -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

View File

@@ -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>

View File

@@ -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;

View File

@@ -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>

View File

@@ -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>

View File

@@ -1,2 +0,0 @@
${gallerySummary.numNew} added in the last 7 days<br>
${gallerySummary.numTotal} images in this gallery

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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>&nbsp;</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>

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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>

View File

@@ -1,3 +0,0 @@
model.ticket = session.ticket;
model.path = url.extension;

View File

@@ -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>&lt;img src=&quot;${absurl(url.context)}${d.url}?ticket=${session.ticket}&quot;&gt;&lt;br&gt;</#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>

View File

@@ -1,8 +0,0 @@
<webscript>
<shortname>Document List</shortname>
<description>Generate the Document list portlet page</description>
<url>/ui/doclist?f={filter?}&amp;p={path?}&amp;q={query?}</url>
<url>/ui/doclist.atom?f={filter?}&amp;p={path?}&amp;q={query?}</url>
<authentication>user</authentication>
<transaction>required</transaction>
</webscript>

View File

@@ -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>

View File

@@ -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}&amp;p={path}&amp;h={home};q={query?}</url>
<authentication>user</authentication>
<transaction>required</transaction>
</webscript>

View File

@@ -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>&nbsp;<span class="docMetadata"><#if d.properties.description?exists>${d.properties.description?html}<#else>&nbsp;</#if></span><br />
<span class="docMetaprop">${message("portlets.panel.modified")}:</span>&nbsp;<span class="docMetadata">${d.properties.modified?datetime}</span><br />
<span class="docMetaprop">${message("portlets.panel.modified_by")}:</span>&nbsp;<span class="docMetadata">${d.properties.modifier}</span>
</td>
<td width="24">&nbsp;</td>
<td>
<span class="docMetaprop">${message("portlets.panel.created")}:</span>&nbsp;<span class="docMetadata">${d.properties.created?datetime}</span><br />
<span class="docMetaprop">${message("portlets.panel.created_by")}:</span>&nbsp;<span class="docMetadata">${d.properties.creator}</span><br />
<span class="docMetaprop">${message("portlets.panel.size")}:</span>&nbsp;<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>

View File

@@ -1,7 +0,0 @@
<webscript>
<shortname>My Spaces</shortname>
<description>Generate the My Spaces portlet page</description>
<url>/ui/myspaces?f={filter?}&amp;p={path?}</url>
<authentication>user</authentication>
<transaction>required</transaction>
</webscript>

View File

@@ -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)>&nbsp;&gt;&nbsp;</#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>

View File

@@ -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}&amp;p={path}&amp;h={home}</url>
<authentication>user</authentication>
<transaction>required</transaction>
</webscript>

View File

@@ -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}&amp;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}&amp;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>&nbsp;<span class="spaceMetadata"><#if d.properties.description?exists>${d.properties.description?html}<#else>&nbsp;</#if></span><br />
<span class="spaceMetaprop">${message("portlets.panel.modified")}:</span>&nbsp;<span class="spaceMetadata">${d.properties.modified?datetime}</span><br />
<span class="spaceMetaprop">${message("portlets.panel.modified_by")}:</span>&nbsp;<span class="spaceMetadata">${d.properties.modifier}</span>
</td>
<td width="24">&nbsp;</td>
<td>
<span class="spaceMetaprop">${message("portlets.panel.created")}:</span>&nbsp;<span class="spaceMetadata">${d.properties.created?datetime}</span><br />
<span class="spaceMetaprop">${message("portlets.panel.created_by")}:</span>&nbsp;<span class="spaceMetadata">${d.properties.creator}</span><br />
<span class="spaceMetaprop">${message("portlets.panel.size")}:</span>&nbsp;<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>

View File

@@ -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>

View File

@@ -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">&nbsp;</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">&nbsp;</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>

View File

@@ -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>

View File

@@ -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">&nbsp;</td>
<td width="300">
<div class="taskResourceHeader">${t.name?html}:</div>
<div class="taskResources"></div>
</td>
<td width="8" class="taskDetailSeparator">&nbsp;</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}&amp;type=${t.qnameType}&amp;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">&nbsp;</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">&nbsp;</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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -1,5 +0,0 @@
<#if redirectUrl?exists>
<script language="Javascript">
window.location.href = "${redirectUrl}";
</script>
</#if>

View File

@@ -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;
}
}
}
}

View File

@@ -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
{