Merged V2.1 to HEAD
6609: Portlet UI (doclist, myspaces, mytasks) updates following design review 6610: AR-1270 6611: debugging WCM-778. 6612: Improved API documentation. 6613: Added store lookup cache to EHCache config for default and extended cluster sample 6614: AWC-1531 and AWC-1146. Link objects that have targets which the user does not have access to are now filtered from the view. 6615: AR-1664: Bootstraping from full export fails if file names differs only with a space: my file, my file 6616: Fixed AR-1519: Possible duplicate entries when moving nodes between stores 6617: Removed deprecated aspects; Added emailed aspect to messages; Added OOo command line options 6618: Fix for AWC-1350 6619: Fix for AWC-1509 6620: AWC-1179: Searching for users in Invite User Wizard is slow with large number of users 6621: Changed shutdown logic to avoid classloader cleanup race. 6622: Fix for AWC-1533 (can't save office docs to Company Home) 6623: Fix for AR-1705 6624: Better fix for AWC-1256 (links generated by tinyMCE editor) 6625: Fixed AR-1713: Transformers that do nothing don't break full text indexing 6626: Fixed AWC-1438: Added explcit TXT to PDF converter that wraps the PDFBox TextToPDF class 6627: Portlet templates now handle missing description property on web form 6628: Fix WCM-788 6635: Make workflow available for users who cannot see company home Resolved conflicted state of 'root\projects\repository\source\java\org\alfresco\repo\workflow\jbpm\JBPMEngine.java' git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@6748 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
@@ -13,34 +13,44 @@
|
|||||||
</#if>
|
</#if>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td width="24"></td>
|
<td width="24" align="center">
|
||||||
|
<table cellpadding="0" cellspacing="0" border="0" width="1">
|
||||||
|
<tr>
|
||||||
|
<td width="1" style="background-color: #75badd; height: 140px; width: 1px;"></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
<td width="300">
|
<td width="300">
|
||||||
<table width="100%" cellpadding="0" cellspacing="0">
|
<table width="100%" cellpadding="0" cellspacing="0">
|
||||||
<tr>
|
<tr>
|
||||||
<#assign navurl='/navigate/showDocDetails/' + node.nodeRef.storeRef.protocol + '/' + node.nodeRef.storeRef.identifier + '/' + node.nodeRef.id>
|
<#assign navurl='/navigate/showDocDetails/' + node.nodeRef.storeRef.protocol + '/' + node.nodeRef.storeRef.identifier + '/' + node.nodeRef.id>
|
||||||
<#if node.isLocked >
|
<#if node.isLocked>
|
||||||
<td class="docAction docActionCheckout docActionLocked">(Locked)</td>
|
<td class="docAction docActionCheckout docActionLocked">(Locked)</td>
|
||||||
<#elseif hasAspect(node, "cm:workingcopy") == 1>
|
<#elseif hasAspect(node, "cm:workingcopy") == 1>
|
||||||
<td class="docAction docActionCheckin" <#if node.hasPermission("CheckIn")>onclick='event.cancelBubble=true;MyDocs.checkinItem("${node.name}", "${node.nodeRef}");'</#if>>Check In</td>
|
<td class="docAction docActionCheckin" <#if node.hasPermission("CheckIn")>onclick='event.cancelBubble=true;MyDocs.checkinItem("${node.name}", "${node.nodeRef}");'</#if>>Check In</td>
|
||||||
<#else>
|
<#else>
|
||||||
<td class="docAction docActionCheckout" <#if node.hasPermission("CheckOut")>onclick='event.cancelBubble=true;MyDocs.checkoutItem("${node.name}", "${node.nodeRef}");'</#if>>Check Out</td>
|
<td class="docAction docActionCheckout" <#if node.hasPermission("CheckOut")>onclick='event.cancelBubble=true;MyDocs.checkoutItem("${node.name}", "${node.nodeRef}");'</#if>>Check Out</td>
|
||||||
</#if>
|
</#if>
|
||||||
<#if node.isLocked >
|
<#if node.isLocked>
|
||||||
<td class="docAction docActionEditDetails docActionLocked">Edit Details</td>
|
<td class="docAction docActionEditDetails docActionLocked">Edit Details</td>
|
||||||
<#else>
|
<#else>
|
||||||
<td class="docAction docActionEditDetails" onclick="openWindowCallback('${url.context}/command/ui/editcontentprops?container=plain&noderef=${node.nodeRef}', MyDocs.editDetailsCallback);">Edit Details</td>
|
<td class="docAction docActionEditDetails" onclick="openWindowCallback('${url.context}/command/ui/editcontentprops?container=plain&noderef=${node.nodeRef}', MyDocs.editDetailsCallback);">Edit Details</td>
|
||||||
</#if>
|
</#if>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<#if node.isLocked >
|
<#if node.isLocked>
|
||||||
<td class="docAction docActionUpdate docActionLocked">Update</td>
|
<td class="docAction docActionUpdate docActionLocked">Update</td>
|
||||||
<#else>
|
<#else>
|
||||||
<td class="docAction docActionUpdate" onclick="event.cancelBubble=true;MyDocs.updateItem(this, '${node.nodeRef}');">Update</td>
|
<td class="docAction docActionUpdate" onclick="event.cancelBubble=true;MyDocs.updateItem(this, '${node.nodeRef}');">Update</td>
|
||||||
</#if>
|
</#if>
|
||||||
<td class="docAction docActionViewContent" onclick="window.open('${url.context}${node.downloadUrl}', '_blank');">View Content</td>
|
<td class="docAction docActionViewContent" onclick="window.open('${url.context}${node.downloadUrl}', '_blank');">Download</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
<#if node.isLocked>
|
||||||
|
<td class="docAction docActionDelete docActionLocked">Delete</td>
|
||||||
|
<#else>
|
||||||
<td class="docAction docActionDelete" <#if node.hasPermission("Delete")>onclick='event.cancelBubble=true;MyDocs.deleteItem("${node.name}", "${node.nodeRef}");'</#if>>Delete</td>
|
<td class="docAction docActionDelete" <#if node.hasPermission("Delete")>onclick='event.cancelBubble=true;MyDocs.deleteItem("${node.name}", "${node.nodeRef}");'</#if>>Delete</td>
|
||||||
|
</#if>
|
||||||
<td class="docAction docActionMoreActions" onclick="window.open('${url.context}${navurl}', '_blank');">More Actions...</td>
|
<td class="docAction docActionMoreActions" onclick="window.open('${url.context}${navurl}', '_blank');">More Actions...</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
@@ -33,29 +33,33 @@
|
|||||||
<#assign navurl='/navigate/showDocDetails/' + node.nodeRef.storeRef.protocol + '/' + node.nodeRef.storeRef.identifier + '/' + node.nodeRef.id>
|
<#assign navurl='/navigate/showDocDetails/' + node.nodeRef.storeRef.protocol + '/' + node.nodeRef.storeRef.identifier + '/' + node.nodeRef.id>
|
||||||
<#if node.isDocument>
|
<#if node.isDocument>
|
||||||
<tr>
|
<tr>
|
||||||
<#if node.isLocked>
|
<#if node.isLocked>
|
||||||
<td class="spaceAction docActionCheckout docActionLocked">(Locked)</td>
|
<td class="spaceAction docActionCheckout docActionLocked">(Locked)</td>
|
||||||
<#elseif hasAspect(node, "cm:workingcopy") == 1>
|
<#elseif hasAspect(node, "cm:workingcopy") == 1>
|
||||||
<td class="spaceAction docActionCheckin" <#if node.hasPermission("CheckIn")>onclick='event.cancelBubble=true;MySpaces.checkinItem("${node.name}", "${node.nodeRef}");'</#if>>Check In</td>
|
<td class="spaceAction docActionCheckin" <#if node.hasPermission("CheckIn")>onclick='event.cancelBubble=true;MySpaces.checkinItem("${node.name}", "${node.nodeRef}");'</#if>>Check In</td>
|
||||||
<#else>
|
<#else>
|
||||||
<td class="spaceAction docActionCheckout" <#if node.hasPermission("CheckOut")>onclick='event.cancelBubble=true;MySpaces.checkoutItem("${node.name}", "${node.nodeRef}");'</#if>>Check Out</td>
|
<td class="spaceAction docActionCheckout" <#if node.hasPermission("CheckOut")>onclick='event.cancelBubble=true;MySpaces.checkoutItem("${node.name}", "${node.nodeRef}");'</#if>>Check Out</td>
|
||||||
</#if>
|
</#if>
|
||||||
<#if node.isLocked >
|
<#if node.isLocked>
|
||||||
<td class="spaceAction docActionEditDetails docActionLocked">Edit Details</td>
|
<td class="spaceAction docActionEditDetails docActionLocked">Edit Details</td>
|
||||||
<#else>
|
<#else>
|
||||||
<td class="spaceAction docActionEditDetails" onclick="openWindowCallback('${url.context}/command/ui/editcontentprops?container=plain&noderef=${node.nodeRef}', MySpaces.editDetailsCallback);">Edit Details</td>
|
<td class="spaceAction docActionEditDetails" onclick="openWindowCallback('${url.context}/command/ui/editcontentprops?container=plain&noderef=${node.nodeRef}', MySpaces.editDetailsCallback);">Edit Details</td>
|
||||||
</#if>
|
</#if>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<#if node.isLocked >
|
<#if node.isLocked>
|
||||||
<td class="spaceAction docActionUpdate docActionLocked">Update</td>
|
<td class="spaceAction docActionUpdate docActionLocked">Update</td>
|
||||||
<#else>
|
<#else>
|
||||||
<td class="spaceAction docActionUpdate" onclick="event.cancelBubble=true;MySpaces.updateItem(this, '${node.nodeRef}');">Update</td>
|
<td class="spaceAction docActionUpdate" onclick="event.cancelBubble=true;MySpaces.updateItem(this, '${node.nodeRef}');">Update</td>
|
||||||
</#if>
|
</#if>
|
||||||
<td class="spaceAction docActionViewContent" onclick="window.open('${url.context}${node.downloadUrl}', '_blank');">View Content</td>
|
<td class="spaceAction docActionViewContent" onclick="window.open('${url.context}${node.downloadUrl}', '_blank');">View Content</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
<#if node.isLocked>
|
||||||
|
<td class="spaceAction docActionDelete docActionLocked">Delete</td>
|
||||||
|
<#else>
|
||||||
<td class="spaceAction docActionDelete" <#if node.hasPermission("Delete")>onclick='event.cancelBubble=true;MySpaces.deleteItem("${node.name}", "${node.nodeRef}");'</#if>>Delete</td>
|
<td class="spaceAction docActionDelete" <#if node.hasPermission("Delete")>onclick='event.cancelBubble=true;MySpaces.deleteItem("${node.name}", "${node.nodeRef}");'</#if>>Delete</td>
|
||||||
|
</#if>
|
||||||
<td class="spaceAction docActionMoreActions" onclick="window.open('${url.context}${navurl}', '_blank');">More Actions...</td>
|
<td class="spaceAction docActionMoreActions" onclick="window.open('${url.context}${navurl}', '_blank');">More Actions...</td>
|
||||||
</tr>
|
</tr>
|
||||||
<#else>
|
<#else>
|
||||||
|
@@ -42,17 +42,17 @@
|
|||||||
|
|
||||||
<table border=0 cellspacing=0 cellpadding=0 class="docTable">
|
<table border=0 cellspacing=0 cellpadding=0 class="docTable">
|
||||||
<tr>
|
<tr>
|
||||||
<td height="30" class="docHeader">
|
<td class="docHeader">
|
||||||
<table border="0" cellspacing="6" cellpadding="0" width="100%">
|
<table border="0" cellspacing="0" cellpadding="0" width="100%">
|
||||||
<tr>
|
<tr>
|
||||||
<th><a id="docFilter0" class="docfilterLink <#if filter=0>docfilterLinkSelected</#if>" href="#" onclick="MyDocs.filter(0); return false;">All Items</a></th>
|
<th><a id="docFilter0" class="docfilterLink <#if filter=0>docfilterLinkSelected</#if>" href="#" onclick="MyDocs.filter(0); return false;"><span>All Items</span></a></th>
|
||||||
<th><a id="docFilter1" class="docfilterLink <#if filter=1>docfilterLinkSelected</#if>" href="#" onclick="MyDocs.filter(1); return false;">Word Documents</a></th>
|
<th><a id="docFilter1" class="docfilterLink <#if filter=1>docfilterLinkSelected</#if>" href="#" onclick="MyDocs.filter(1); return false;"><span>Word Documents</span></a></th>
|
||||||
<th><a id="docFilter2" class="docfilterLink <#if filter=2>docfilterLinkSelected</#if>" href="#" onclick="MyDocs.filter(2); return false;">HTML Documents</a></th>
|
<th><a id="docFilter2" class="docfilterLink <#if filter=2>docfilterLinkSelected</#if>" href="#" onclick="MyDocs.filter(2); return false;"><span>HTML Documents</span></a></th>
|
||||||
<th><a id="docFilter3" class="docfilterLink <#if filter=3>docfilterLinkSelected</#if>" href="#" onclick="MyDocs.filter(3); return false;">PDF Documents</a></th>
|
<th><a id="docFilter3" class="docfilterLink <#if filter=3>docfilterLinkSelected</#if>" href="#" onclick="MyDocs.filter(3); return false;"><span>PDF Documents</span></a></th>
|
||||||
<th><a id="docFilter4" class="docfilterLink <#if filter=4>docfilterLinkSelected</#if>" href="#" onclick="MyDocs.filter(4); return false;">Recently Modified</a></th>
|
<th><a id="docFilter4" class="docfilterLink <#if filter=4>docfilterLinkSelected</#if>" href="#" onclick="MyDocs.filter(4); return false;"><span>Recently Modified</span></a></th>
|
||||||
<td align=right>
|
<th align=right>
|
||||||
<a href="#" onclick="MyDocs.refreshList(); return false;" class="refreshViewLink"><img src="${url.context}/images/icons/reset.gif" border="0" width="16" height="16" style="vertical-align:-25%;padding-right:4px">Refresh</a>
|
<a href="#" onclick="MyDocs.refreshList(); return false;" class="refreshViewLink"><img src="${url.context}/images/icons/reset.gif" border="0" width="16" height="16" style="vertical-align:-25%;padding-right:4px">Refresh</a>
|
||||||
</td>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</td>
|
</td>
|
||||||
@@ -75,6 +75,10 @@
|
|||||||
MyDocs.Query="${query?replace("\"","\\\"")}";
|
MyDocs.Query="${query?replace("\"","\\\"")}";
|
||||||
</script>
|
</script>
|
||||||
</div>
|
</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>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -87,21 +91,29 @@
|
|||||||
</table>
|
</table>
|
||||||
|
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
a.docfilterLink:link, a.docfilterLink:visited
|
a.docfilterLink, a.docfilterLink:hover
|
||||||
{
|
{
|
||||||
color: #8EA1B3;
|
color: #8EA1B3;
|
||||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
padding-left: 4px;
|
padding: 8px 4px 16px;
|
||||||
padding-right: 4px;
|
outline: none;
|
||||||
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
a.docfilterLink:hover
|
a.docfilterLink:hover span
|
||||||
{
|
{
|
||||||
color: #168ECE;
|
color: #168ECE;
|
||||||
background-color: #EEF7FB;
|
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
|
a.docfilterLinkSelected:link, a.docfilterLinkSelected:visited
|
||||||
@@ -111,7 +123,7 @@ a.docfilterLinkSelected:link, a.docfilterLinkSelected:visited
|
|||||||
|
|
||||||
.docTable
|
.docTable
|
||||||
{
|
{
|
||||||
background-color: #F8FCFD;
|
background-color: #FFFFFF;
|
||||||
border: 1px solid #CCD4DB;
|
border: 1px solid #CCD4DB;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -119,7 +131,7 @@ a.docfilterLinkSelected:link, a.docfilterLinkSelected:visited
|
|||||||
{
|
{
|
||||||
height: 320px;
|
height: 320px;
|
||||||
width: 716px;
|
width: 716px;
|
||||||
overflow: auto;
|
overflow: none;
|
||||||
overflow-y: scroll;
|
overflow-y: scroll;
|
||||||
border-top: 1px solid #CCD4DB;
|
border-top: 1px solid #CCD4DB;
|
||||||
border-bottom: 1px solid #CCD4DB;
|
border-bottom: 1px solid #CCD4DB;
|
||||||
@@ -170,6 +182,8 @@ a.docfilterLinkSelected:link, a.docfilterLinkSelected:visited
|
|||||||
.docHeader
|
.docHeader
|
||||||
{
|
{
|
||||||
background-image: url(${url.context}/images/parts/doclist_headerbg.png);
|
background-image: url(${url.context}/images/parts/doclist_headerbg.png);
|
||||||
|
height: 40px;
|
||||||
|
vertical-align: top;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -193,12 +207,13 @@ a.docfilterLinkSelected:link, a.docfilterLinkSelected:visited
|
|||||||
margin-top: 8px;
|
margin-top: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.docItem
|
a.docItem, a.docItem:hover
|
||||||
{
|
{
|
||||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
color: #515D6B;
|
color: #515D6B;
|
||||||
padding: 0px 8px 6px 40px;
|
padding: 0px 8px 6px 8px;
|
||||||
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.docIcon
|
.docIcon
|
||||||
@@ -225,11 +240,16 @@ a.docfilterLinkSelected:link, a.docfilterLinkSelected:visited
|
|||||||
|
|
||||||
.docItemSelected
|
.docItemSelected
|
||||||
{
|
{
|
||||||
background-color: #CCE7F3 !important;
|
background: #CCE7F3 url("${url.context}/images/parts/doclist_arrow_down.png") no-repeat right top;
|
||||||
border-bottom: 1px solid #0092DD !important;
|
border-bottom: 1px solid #0092DD !important;
|
||||||
border-top: 1px solid #0092DD !important;
|
border-top: 1px solid #0092DD !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.docItemSelectedOpen
|
||||||
|
{
|
||||||
|
background-image: url("${url.context}/images/parts/doclist_arrow_up.png") !important;
|
||||||
|
}
|
||||||
|
|
||||||
.docResource
|
.docResource
|
||||||
{
|
{
|
||||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||||
@@ -257,12 +277,14 @@ a.docfilterLinkSelected:link, a.docfilterLinkSelected:visited
|
|||||||
|
|
||||||
.docPreview
|
.docPreview
|
||||||
{
|
{
|
||||||
|
background-color: #ddebf2;
|
||||||
color: #515D6B;
|
color: #515D6B;
|
||||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
height: 144px;
|
height: 140px;
|
||||||
width: 410px;
|
width: 406px;
|
||||||
border: 1px solid #0092dd;
|
border: 1px solid #75badd;
|
||||||
|
padding: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.docAction
|
.docAction
|
||||||
@@ -344,6 +366,13 @@ a.docfilterLinkSelected:link, a.docfilterLinkSelected:visited
|
|||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
a.refreshViewLink
|
||||||
|
{
|
||||||
|
padding: 8px 4px 0px 0px;
|
||||||
|
display: block;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
a.refreshViewLink:link, a.refreshViewLink:visited, a.refreshViewLink:hover
|
a.refreshViewLink:link, a.refreshViewLink:visited, a.refreshViewLink:hover
|
||||||
{
|
{
|
||||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||||
@@ -373,4 +402,40 @@ a.refreshViewLink:link, a.refreshViewLink:visited, a.refreshViewLink:hover
|
|||||||
background-color: #F8FCFD;
|
background-color: #F8FCFD;
|
||||||
border: 1px solid #CCD4DB;
|
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>
|
</style>
|
@@ -21,8 +21,8 @@
|
|||||||
<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>
|
<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>
|
||||||
<div style="display:none"><img class="docIconImage64" alt="" width="64" height="64" src="${url.context}${d.icon64}"></div>
|
<div style="display:none"><img class="docIconImage64" alt="" width="64" height="64" src="${url.context}${d.icon64}"></div>
|
||||||
<div class="docItem">
|
<div>
|
||||||
${d.name?html}
|
<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);">
|
<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" />
|
<img src="${url.context}/images/icons/popup.gif" class="popupImage" width="16" height="16" />
|
||||||
</span>
|
</span>
|
||||||
|
@@ -26,13 +26,19 @@
|
|||||||
<td align=center height=40 style="border-left: 1px solid #EBE398;">
|
<td align=center height=40 style="border-left: 1px solid #EBE398;">
|
||||||
<table border="0" cellspacing="8" cellpadding="0" width="100%">
|
<table border="0" cellspacing="8" cellpadding="0" width="100%">
|
||||||
<tr>
|
<tr>
|
||||||
<th><a class="taskfilterLink <#if filter=0>taskfilterLinkSelected</#if>" href="#" onclick="MyTasks.filter(0); return false;">Tasks to do</a></th>
|
<td>
|
||||||
<th><a class="taskfilterLink <#if filter=1>taskfilterLinkSelected</#if>" href="#" onclick="MyTasks.filter(1); return false;" style="color: #399DF7;">Due Today</a></th>
|
<div id="taskFilterBar">
|
||||||
<th><a class="taskfilterLink <#if filter=2>taskfilterLinkSelected</#if>" href="#" onclick="MyTasks.filter(2); return false;">Next 7 days</a></th>
|
<ul>
|
||||||
<th><a class="taskfilterLink <#if filter=3>taskfilterLinkSelected</#if>" href="#" onclick="MyTasks.filter(3); return false;">No due date</a></th>
|
<li <#if filter=0>class="taskCurrent"</#if>><a href="#" onclick="MyTasks.filter(0); return false;"><span>Tasks to do</span></a></li>
|
||||||
<th><a class="taskfilterLink <#if filter=4>taskfilterLinkSelected</#if>" href="#" onclick="MyTasks.filter(4); return false;" style="color: #DF3704;">Overdue</a></th>
|
<li <#if filter=1>class="taskCurrent"</#if>><a href="#" onclick="MyTasks.filter(1); return false;"><span style="color: #399DF7;">Due Today</span></a></li>
|
||||||
<td width="150" align="right">
|
<li <#if filter=2>class="taskCurrent"</#if>><a href="#" onclick="MyTasks.filter(2); return false;"><span>Next 7 days</span></a></li>
|
||||||
<a href="#" onclick="MyTasks.refreshList(); return false;" class="refreshViewLink"><img src="${url.context}/images/icons/reset.gif" border="0" width="16" height="16" style="vertical-align:-25%;padding-right:4px">Refresh</a>
|
<li <#if filter=3>class="taskCurrent"</#if>><a href="#" onclick="MyTasks.filter(3); return false;"><span>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;">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>Refresh</span></a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
@@ -52,7 +58,7 @@
|
|||||||
<td>
|
<td>
|
||||||
<div id="taskFooter">
|
<div id="taskFooter">
|
||||||
<#-- the count value is retrieved and set dynamically from the AJAX webscript output above -->
|
<#-- the count value is retrieved and set dynamically from the AJAX webscript output above -->
|
||||||
<span class="taskFooterText">Showing <span id="taskCount">0</span> <#if filter=4>overdue</#if> task(s)<#if filter=1> due today</#if><#if filter=2> due next week</#if><#if filter=3> with no due date set</#if></span>
|
<span onclick="MyTasks.displayMessage('sljfsdfjlsdjifds lsdfj lsidjfoi jsdofij sodfj ');" class="taskFooterText">Showing <span id="taskCount">0</span> <#if filter=4>overdue</#if> task(s)<#if filter=1> due today</#if><#if filter=2> due next week</#if><#if filter=3> with no due date set</#if></span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -61,6 +67,10 @@
|
|||||||
<td class="paperEdgeRight"> </td>
|
<td class="paperEdgeRight"> </td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</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;">
|
<div style="font-size: 3px;">
|
||||||
<span class="paperLeftCorner"></span>
|
<span class="paperLeftCorner"></span>
|
||||||
<span class="paperBottomEdge"></span>
|
<span class="paperBottomEdge"></span>
|
||||||
@@ -110,34 +120,74 @@
|
|||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
a.taskfilterLink:link, a.taskfilterLink:visited
|
#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;
|
color: #5A5741;
|
||||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
text-decoration: none;
|
|
||||||
padding-left: 4px;
|
|
||||||
padding-right: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
a.taskfilterLink:hover
|
|
||||||
{
|
|
||||||
color: #FFFFFF !important;
|
|
||||||
background-color: #FDB64F;
|
|
||||||
}
|
|
||||||
|
|
||||||
a.taskfilterLinkSelected:link, a.taskfilterLinkSelected:visited
|
|
||||||
{
|
|
||||||
color: #FFFFFF !important;
|
|
||||||
background-color: #FDB64F;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.taskRow
|
.taskRow
|
||||||
{
|
{
|
||||||
padding-top: 4px;
|
padding-top: 4px;
|
||||||
|
border-top: 1px solid transparent;
|
||||||
border-bottom: 1px solid #EBE398;
|
border-bottom: 1px solid #EBE398;
|
||||||
border-top: 1px solid #FEF8BC;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#taskFooter
|
#taskFooter
|
||||||
@@ -170,8 +220,8 @@ a.taskfilterLinkSelected:link, a.taskfilterLinkSelected:visited
|
|||||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
color: #5A5741;
|
color: #5A5741;
|
||||||
margin: 0 0 0 24;
|
margin: 0px 0px 0px 24px;
|
||||||
padding: 0px 8px 6px 8px;
|
padding: 0px 8px 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.taskItemOverdue
|
.taskItemOverdue
|
||||||
@@ -199,23 +249,38 @@ a.taskfilterLinkSelected:link, a.taskfilterLinkSelected:visited
|
|||||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
|
padding: 0px;
|
||||||
display: none;
|
display: none;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.taskDetailTopSpacer {
|
||||||
|
padding: 4px 0px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.taskDetailSeparator
|
||||||
|
{
|
||||||
|
border-right: 1px solid #c1af05;
|
||||||
|
}
|
||||||
|
|
||||||
.taskItemSelected
|
.taskItemSelected
|
||||||
{
|
{
|
||||||
background-color: #FFE500 !important;
|
background: #FFE500 url("${url.context}/images/parts/mytasks_arrow_down.png") no-repeat right top;
|
||||||
border-bottom: 1px solid #82770B !important;
|
border-bottom: 1px solid #82770B !important;
|
||||||
border-top: 1px solid #82770B !important;
|
border-top: 1px solid #82770B !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.taskItemSelectedOpen
|
||||||
|
{
|
||||||
|
background-image: url("${url.context}/images/parts/mytasks_arrow_up.png") !important;
|
||||||
|
}
|
||||||
|
|
||||||
.taskResources
|
.taskResources
|
||||||
{
|
{
|
||||||
border: 1px solid #FFE500;
|
border: 1px solid #FFE500;
|
||||||
background-color: #FEF8BC;
|
background-color: #fff;
|
||||||
margin: 4px 0px 0px 0px;
|
margin: 4px 0px 0px 0px;
|
||||||
width: 360px;
|
width: 300px;
|
||||||
height: 80px;
|
height: 80px;
|
||||||
display: block;
|
display: block;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
@@ -227,7 +292,7 @@ a.taskfilterLinkSelected:link, a.taskfilterLinkSelected:visited
|
|||||||
|
|
||||||
.taskResourceOdd
|
.taskResourceOdd
|
||||||
{
|
{
|
||||||
background-color: #F8FCFD;
|
background-color: #FEF8BC;
|
||||||
}
|
}
|
||||||
|
|
||||||
.taskResourceHeader
|
.taskResourceHeader
|
||||||
@@ -251,33 +316,90 @@ a.resourceLink:link, a.resourceLink:visited
|
|||||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
.taskActions td
|
.taskAction
|
||||||
{
|
{
|
||||||
padding: 4px;
|
margin: 0px;
|
||||||
|
padding: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
a.taskAction:link, a.taskAction:visited
|
.taskAction ul {
|
||||||
{
|
margin: 0px;
|
||||||
color: #5A5741;
|
padding: 0px;
|
||||||
font-size: 13px;
|
list-style: none;
|
||||||
font-weight: bold;
|
text-align: center;
|
||||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
}
|
||||||
border: 1px solid #F6F1BA;
|
.taskAction ul li {
|
||||||
padding-left: 4px;
|
display: inline;
|
||||||
padding-right: 4px;
|
margin: 0px;
|
||||||
|
padding: 0px;
|
||||||
|
list-style: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
a.taskAction:hover
|
.taskAction a {
|
||||||
{
|
background: url("${url.context}/images/parts/task_btn_normal_right.png") no-repeat 100% 0;
|
||||||
font-size: 13px;
|
float: left;
|
||||||
font-weight: bold;
|
margin: 4px;
|
||||||
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
|
padding: 0px;
|
||||||
border: 1px solid #F6F1BA;
|
|
||||||
padding-left: 4px;
|
|
||||||
padding-right: 4px;
|
|
||||||
color: #FFFFFF;
|
|
||||||
background-color: #FDB64F;
|
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.taskAction a span {
|
||||||
|
background: url("${url.context}/images/parts/task_btn_normal_left.png") no-repeat;
|
||||||
|
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% 0;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.taskAction a:hover span {
|
||||||
|
background: url("${url.context}/images/parts/task_btn_rollover_left.png") no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
.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
|
.taskMetadata
|
||||||
@@ -321,4 +443,41 @@ a.taskAction:hover
|
|||||||
height: 6px;
|
height: 6px;
|
||||||
width: 4px;
|
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>
|
</style>
|
@@ -43,39 +43,57 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="taskDetail">
|
<div class="taskDetail">
|
||||||
|
<div class="taskDetailTopSpacer"></div>
|
||||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||||
<tr>
|
<tr>
|
||||||
<td width="182">
|
<td width="190" class="taskDetailSeparator">
|
||||||
<table cellpadding="2" cellspacing="2" style="margin-left:24px; margin-top:4px">
|
<table cellpadding="2" cellspacing="2" style="margin-left:24px; margin-top:4px">
|
||||||
<tr><td class="taskMetaprop">Status:</td><td class="taskMetadata">${t.properties["bpm:status"]}</td>
|
<tr><td class="taskMetaprop">Status:</td><td class="taskMetadata">${t.properties["bpm:status"]}</td>
|
||||||
<tr><td class="taskMetaprop">Priority:</td><td class="taskMetadata">${t.properties["bpm:priority"]}</td>
|
<tr><td class="taskMetaprop">Priority:</td><td class="taskMetadata">${t.properties["bpm:priority"]}</td>
|
||||||
<tr><td class="taskMetaprop">Start Date:</td><td class="taskMetadata">${t.startDate?date}</td></tr>
|
<tr><td class="taskMetaprop">Start Date:</td><td class="taskMetadata">${t.startDate?date}</td></tr>
|
||||||
<tr><td class="taskMetaprop">Type:</td><td class="taskMetadata">${t.type?html}</td></tr>
|
|
||||||
<tr><td class="taskMetaprop">Complete:</td><td class="taskMetadata">${t.properties["bpm:percentComplete"]}%</td>
|
<tr><td class="taskMetaprop">Complete:</td><td class="taskMetadata">${t.properties["bpm:percentComplete"]}%</td>
|
||||||
</table>
|
</table>
|
||||||
</td>
|
</td>
|
||||||
<td width="8"> </td>
|
<td width="8"> </td>
|
||||||
<td width="360">
|
<td width="300">
|
||||||
<div class="taskResourceHeader">${t.name?html}:</div>
|
<div class="taskResourceHeader">${t.name?html}:</div>
|
||||||
<div class="taskResources"></div>
|
<div class="taskResources"></div>
|
||||||
<table border="0" class="taskActions">
|
</td>
|
||||||
|
<td width="8" class="taskDetailSeparator"> </td>
|
||||||
|
<td align="center">
|
||||||
|
<table cellpadding="0" cellspacing="0" border="0">
|
||||||
<tr>
|
<tr>
|
||||||
<#list t.transitions as wt>
|
<td>
|
||||||
<td style="text-align: left"><a class="taskAction" href="#" onclick="event.cancelBubble=true; MyTasks.transitionTask('/command/task/end/${t.id}<#if wt.id?exists>/${wt.id}</#if>', 'Workflow action \'${wt.label?html}\' completed.');">${wt.label?html}</a></td>
|
<div class="taskManage">
|
||||||
</#list>
|
<ul>
|
||||||
<td width="70"> </td>
|
<li><a href="#" onclick="event.cancelBubble=true; openWindowCallback('${url.context}/command/ui/managetask?id=${t.id}&type=${t.qnameType}&container=plain', MyTasks.manageTaskCallback);"><span><img src="${url.context}/images/icons/manage_workflow_task.gif" align="top" alt="" border="0"> Manage Task</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</td>
|
</td>
|
||||||
<td width="16"> </td>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2"> </td>
|
||||||
|
<td width="300" align="center">
|
||||||
|
<table cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<div class="taskMetaprop" style="padding-bottom: 4px;">Manage Task</div>
|
<div class="taskAction">
|
||||||
<a class="taskAction" style="display: block; width: 18px; padding: 4px; margin-left: 20px;" onclick="event.cancelBubble=true;" href="${url.context}/command/ui/managetask?id=${t.id}&type=${t.qnameType}&container=plain" target="new"><img src="${url.context}/images/icons/manage_workflow_task.gif" width="16" height="16" border="0" alt="Manage Task Details" title="Manage Task Details"></a>
|
<ul>
|
||||||
<br>
|
<#list t.transitions as wt>
|
||||||
<br>
|
<li><a href="#" onclick="event.cancelBubble=true; MyTasks.transitionTask('/command/task/end/${t.id}<#if wt.id?exists>/${wt.id}</#if>', 'Workflow action \'${wt.label?html}\' completed.');"><span>${wt.label?html}</span></a></li>
|
||||||
|
</#list>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
</td>
|
||||||
|
<td colspan="2"> </td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</#if>
|
</#if>
|
||||||
|
@@ -48,7 +48,7 @@
|
|||||||
<div class="formsRow">
|
<div class="formsRow">
|
||||||
<img src="${url.context}/images/icons/webform_large.gif" width=32 height=32 border=0>
|
<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}</a>
|
<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}</a>
|
||||||
<#if form.properties.description?length!=0>
|
<#if (form.properties.description?exists) && (form.properties.description?length!=0)>
|
||||||
<span style="vertical-align:50%">(${form.properties.description})</span>
|
<span style="vertical-align:50%">(${form.properties.description})</span>
|
||||||
</#if>
|
</#if>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -321,8 +321,6 @@
|
|||||||
<aspect name="summarizable"/>
|
<aspect name="summarizable"/>
|
||||||
<aspect name="versionable"/>
|
<aspect name="versionable"/>
|
||||||
<aspect name="templatable"/>
|
<aspect name="templatable"/>
|
||||||
<aspect name="translatable"/>
|
|
||||||
<aspect name="localizable"/>
|
|
||||||
<aspect name="emailed"/>
|
<aspect name="emailed"/>
|
||||||
</aspects>
|
</aspects>
|
||||||
<!-- List of aspects to only show in the add features action -->
|
<!-- List of aspects to only show in the add features action -->
|
||||||
|
@@ -60,6 +60,7 @@ import org.alfresco.service.cmr.search.ResultSet;
|
|||||||
import org.alfresco.service.cmr.search.ResultSetRow;
|
import org.alfresco.service.cmr.search.ResultSetRow;
|
||||||
import org.alfresco.service.cmr.search.SearchParameters;
|
import org.alfresco.service.cmr.search.SearchParameters;
|
||||||
import org.alfresco.service.cmr.search.SearchService;
|
import org.alfresco.service.cmr.search.SearchService;
|
||||||
|
import org.alfresco.service.cmr.security.PermissionService;
|
||||||
import org.alfresco.service.namespace.QName;
|
import org.alfresco.service.namespace.QName;
|
||||||
import org.alfresco.web.app.Application;
|
import org.alfresco.web.app.Application;
|
||||||
import org.alfresco.web.app.context.IContextListener;
|
import org.alfresco.web.app.context.IContextListener;
|
||||||
@@ -787,6 +788,10 @@ public class BrowseBean implements IContextListener
|
|||||||
{
|
{
|
||||||
// create our File Link Node representation
|
// create our File Link Node representation
|
||||||
node = new MapNode(nodeRef, this.nodeService, fileInfo.getProperties());
|
node = new MapNode(nodeRef, this.nodeService, fileInfo.getProperties());
|
||||||
|
// only display the user has the permissions to navigate to the target of the link
|
||||||
|
NodeRef destRef = (NodeRef)node.getProperties().get(ContentModel.PROP_LINK_DESTINATION);
|
||||||
|
if (new Node(destRef).hasPermission(PermissionService.READ) == true)
|
||||||
|
{
|
||||||
node.addPropertyResolver("url", this.resolverLinkUrl);
|
node.addPropertyResolver("url", this.resolverLinkUrl);
|
||||||
node.addPropertyResolver("webdavUrl", this.resolverLinkWebdavUrl);
|
node.addPropertyResolver("webdavUrl", this.resolverLinkWebdavUrl);
|
||||||
node.addPropertyResolver("cifsPath", this.resolverLinkCifsPath);
|
node.addPropertyResolver("cifsPath", this.resolverLinkCifsPath);
|
||||||
@@ -797,15 +802,21 @@ public class BrowseBean implements IContextListener
|
|||||||
|
|
||||||
this.contentNodes.add(node);
|
this.contentNodes.add(node);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else if (ApplicationModel.TYPE_FOLDERLINK.equals(type))
|
else if (ApplicationModel.TYPE_FOLDERLINK.equals(type))
|
||||||
{
|
{
|
||||||
// create our Folder Link Node representation
|
// create our Folder Link Node representation
|
||||||
node = new MapNode(nodeRef, this.nodeService, fileInfo.getProperties());
|
node = new MapNode(nodeRef, this.nodeService, fileInfo.getProperties());
|
||||||
|
// only display the user has the permissions to navigate to the target of the link
|
||||||
|
NodeRef destRef = (NodeRef)node.getProperties().get(ContentModel.PROP_LINK_DESTINATION);
|
||||||
|
if (new Node(destRef).hasPermission(PermissionService.READ) == true)
|
||||||
|
{
|
||||||
node.addPropertyResolver("icon", this.resolverSpaceIcon);
|
node.addPropertyResolver("icon", this.resolverSpaceIcon);
|
||||||
node.addPropertyResolver("smallIcon", this.resolverSmallIcon);
|
node.addPropertyResolver("smallIcon", this.resolverSmallIcon);
|
||||||
|
|
||||||
this.containerNodes.add(node);
|
this.containerNodes.add(node);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// inform any listeners that a Node wrapper has been created
|
// inform any listeners that a Node wrapper has been created
|
||||||
if (node != null)
|
if (node != null)
|
||||||
@@ -954,6 +965,10 @@ public class BrowseBean implements IContextListener
|
|||||||
{
|
{
|
||||||
// create our File Link Node representation
|
// create our File Link Node representation
|
||||||
node = new MapNode(nodeRef, this.nodeService, false);
|
node = new MapNode(nodeRef, this.nodeService, false);
|
||||||
|
// only display the user has the permissions to navigate to the target of the link
|
||||||
|
NodeRef destRef = (NodeRef)node.getProperties().get(ContentModel.PROP_LINK_DESTINATION);
|
||||||
|
if (new Node(destRef).hasPermission(PermissionService.READ) == true)
|
||||||
|
{
|
||||||
node.addPropertyResolver("url", this.resolverLinkUrl);
|
node.addPropertyResolver("url", this.resolverLinkUrl);
|
||||||
node.addPropertyResolver("webdavUrl", this.resolverLinkWebdavUrl);
|
node.addPropertyResolver("webdavUrl", this.resolverLinkWebdavUrl);
|
||||||
node.addPropertyResolver("cifsPath", this.resolverLinkCifsPath);
|
node.addPropertyResolver("cifsPath", this.resolverLinkCifsPath);
|
||||||
@@ -966,10 +981,15 @@ public class BrowseBean implements IContextListener
|
|||||||
|
|
||||||
this.contentNodes.add(node);
|
this.contentNodes.add(node);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else if (ApplicationModel.TYPE_FOLDERLINK.equals(type))
|
else if (ApplicationModel.TYPE_FOLDERLINK.equals(type))
|
||||||
{
|
{
|
||||||
// create our Folder Link Node representation
|
// create our Folder Link Node representation
|
||||||
node = new MapNode(nodeRef, this.nodeService, false);
|
node = new MapNode(nodeRef, this.nodeService, false);
|
||||||
|
// only display the user has the permissions to navigate to the target of the link
|
||||||
|
NodeRef destRef = (NodeRef)node.getProperties().get(ContentModel.PROP_LINK_DESTINATION);
|
||||||
|
if (new Node(destRef).hasPermission(PermissionService.READ) == true)
|
||||||
|
{
|
||||||
node.addPropertyResolver("icon", this.resolverSpaceIcon);
|
node.addPropertyResolver("icon", this.resolverSpaceIcon);
|
||||||
node.addPropertyResolver("smallIcon", this.resolverSmallIcon);
|
node.addPropertyResolver("smallIcon", this.resolverSmallIcon);
|
||||||
node.addPropertyResolver("path", this.resolverPath);
|
node.addPropertyResolver("path", this.resolverPath);
|
||||||
@@ -977,6 +997,7 @@ public class BrowseBean implements IContextListener
|
|||||||
|
|
||||||
this.containerNodes.add(node);
|
this.containerNodes.add(node);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// inform any listeners that a Node wrapper has been created
|
// inform any listeners that a Node wrapper has been created
|
||||||
if (node != null)
|
if (node != null)
|
||||||
|
@@ -416,7 +416,7 @@ public class SubmitDialog extends BaseDialogBean
|
|||||||
diffs.add(diff);
|
diffs.add(diff);
|
||||||
|
|
||||||
// recursively remove locks from this item
|
// recursively remove locks from this item
|
||||||
recursivelyRemoveLocks(storeId, -1, srcPath);
|
recursivelyRemoveLocks(storeId, -1, this.avmService.lookup(-1, srcPath, true), srcPath);
|
||||||
|
|
||||||
// If nothing has required notifying the virtualization server
|
// If nothing has required notifying the virtualization server
|
||||||
// so far, check to see if destPath forces a notification
|
// so far, check to see if destPath forces a notification
|
||||||
@@ -635,9 +635,8 @@ public class SubmitDialog extends BaseDialogBean
|
|||||||
* Recursively remove locks from a path. Walking child folders looking for files
|
* Recursively remove locks from a path. Walking child folders looking for files
|
||||||
* to remove locks from.
|
* to remove locks from.
|
||||||
*/
|
*/
|
||||||
private void recursivelyRemoveLocks(String webProject, int version, String path)
|
private void recursivelyRemoveLocks(String webProject, int version, AVMNodeDescriptor desc, String path)
|
||||||
{
|
{
|
||||||
AVMNodeDescriptor desc = this.avmService.lookup(version, path, true);
|
|
||||||
if (desc.isFile() || desc.isDeletedFile())
|
if (desc.isFile() || desc.isDeletedFile())
|
||||||
{
|
{
|
||||||
this.avmLockingService.removeLock(webProject, path.substring(path.indexOf(":") + 1));
|
this.avmLockingService.removeLock(webProject, path.substring(path.indexOf(":") + 1));
|
||||||
@@ -655,10 +654,12 @@ public class SubmitDialog extends BaseDialogBean
|
|||||||
desc = history.get(1);
|
desc = history.get(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<String, AVMNodeDescriptor> list = avmService.getDirectoryListing(desc, true);
|
Map<String, AVMNodeDescriptor> list = avmService.getDirectoryListingDirect(desc, true);
|
||||||
for (AVMNodeDescriptor child : list.values())
|
for (Map.Entry<String, AVMNodeDescriptor> child : list.entrySet())
|
||||||
{
|
{
|
||||||
recursivelyRemoveLocks(webProject, version, child.getPath());
|
String name = child.getKey();
|
||||||
|
AVMNodeDescriptor childDesc = child.getValue();
|
||||||
|
recursivelyRemoveLocks(webProject, version, childDesc, path + "/" + name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -42,6 +42,8 @@ import javax.transaction.UserTransaction;
|
|||||||
|
|
||||||
import org.alfresco.model.ContentModel;
|
import org.alfresco.model.ContentModel;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
|
import org.alfresco.service.cmr.search.ResultSet;
|
||||||
|
import org.alfresco.service.cmr.search.SearchService;
|
||||||
import org.alfresco.service.cmr.security.AuthorityService;
|
import org.alfresco.service.cmr.security.AuthorityService;
|
||||||
import org.alfresco.service.cmr.security.AuthorityType;
|
import org.alfresco.service.cmr.security.AuthorityType;
|
||||||
import org.alfresco.service.cmr.security.PermissionService;
|
import org.alfresco.service.cmr.security.PermissionService;
|
||||||
@@ -301,16 +303,12 @@ public abstract class InviteUsersWizard extends BaseWizardBean
|
|||||||
{
|
{
|
||||||
// build xpath to match available User/Person objects
|
// build xpath to match available User/Person objects
|
||||||
NodeRef peopleRef = personService.getPeopleContainer();
|
NodeRef peopleRef = personService.getPeopleContainer();
|
||||||
// NOTE: see SearcherComponentTest
|
|
||||||
String xpath = "*[like(@" + NamespaceService.CONTENT_MODEL_PREFIX + ":" + "firstName, '%" + contains + "%', false)" +
|
|
||||||
" or " + "like(@" + NamespaceService.CONTENT_MODEL_PREFIX + ":" + "lastName, '%" + contains + "%', false)]";
|
|
||||||
|
|
||||||
List<NodeRef> nodes = searchService.selectNodes(
|
// Use lucene search to retrieve user details
|
||||||
peopleRef,
|
String lucene = "@" + NamespaceService.CONTENT_MODEL_PREFIX + "\\:firstName:*" + contains + "* " +
|
||||||
xpath,
|
"@" + NamespaceService.CONTENT_MODEL_PREFIX + "\\:lastName:*" + contains + "* ";
|
||||||
null,
|
ResultSet resultSet = searchService.query(peopleRef.getStoreRef(), SearchService.LANGUAGE_LUCENE, lucene);
|
||||||
this.namespaceService,
|
List<NodeRef> nodes = resultSet.getNodeRefs();
|
||||||
false);
|
|
||||||
|
|
||||||
items = new SelectItem[nodes.size()];
|
items = new SelectItem[nodes.size()];
|
||||||
for (int index=0; index<nodes.size(); index++)
|
for (int index=0; index<nodes.size(); index++)
|
||||||
|
@@ -45,6 +45,7 @@ import org.alfresco.model.ContentModel;
|
|||||||
import org.alfresco.repo.workflow.WorkflowModel;
|
import org.alfresco.repo.workflow.WorkflowModel;
|
||||||
import org.alfresco.service.cmr.dictionary.PropertyDefinition;
|
import org.alfresco.service.cmr.dictionary.PropertyDefinition;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
|
import org.alfresco.service.cmr.repository.NodeService;
|
||||||
import org.alfresco.service.cmr.workflow.WorkflowDefinition;
|
import org.alfresco.service.cmr.workflow.WorkflowDefinition;
|
||||||
import org.alfresco.service.cmr.workflow.WorkflowPath;
|
import org.alfresco.service.cmr.workflow.WorkflowPath;
|
||||||
import org.alfresco.service.cmr.workflow.WorkflowService;
|
import org.alfresco.service.cmr.workflow.WorkflowService;
|
||||||
@@ -86,8 +87,15 @@ public class StartWorkflowWizard extends BaseWizardBean
|
|||||||
protected boolean isItemBeingAdded = false;
|
protected boolean isItemBeingAdded = false;
|
||||||
protected boolean nextButtonDisabled = false;
|
protected boolean nextButtonDisabled = false;
|
||||||
|
|
||||||
|
protected NodeService unprotectedNodeService;
|
||||||
|
|
||||||
private static final Log logger = LogFactory.getLog(StartWorkflowWizard.class);
|
private static final Log logger = LogFactory.getLog(StartWorkflowWizard.class);
|
||||||
|
|
||||||
|
public void setUnprotectedNodeService(NodeService unprotectedNodeService)
|
||||||
|
{
|
||||||
|
this.unprotectedNodeService = unprotectedNodeService;
|
||||||
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------
|
||||||
// Wizard implementation
|
// Wizard implementation
|
||||||
|
|
||||||
@@ -159,7 +167,7 @@ public class StartWorkflowWizard extends BaseWizardBean
|
|||||||
for (String addedItem : this.packageItemsToAdd)
|
for (String addedItem : this.packageItemsToAdd)
|
||||||
{
|
{
|
||||||
NodeRef addedNodeRef = new NodeRef(addedItem);
|
NodeRef addedNodeRef = new NodeRef(addedItem);
|
||||||
this.nodeService.addChild(workflowPackage, addedNodeRef,
|
this.unprotectedNodeService.addChild(workflowPackage, addedNodeRef,
|
||||||
ContentModel.ASSOC_CONTAINS, QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI,
|
ContentModel.ASSOC_CONTAINS, QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI,
|
||||||
QName.createValidLocalName((String)this.nodeService.getProperty(
|
QName.createValidLocalName((String)this.nodeService.getProperty(
|
||||||
addedNodeRef, ContentModel.PROP_NAME))));
|
addedNodeRef, ContentModel.PROP_NAME))));
|
||||||
|
@@ -41,6 +41,7 @@ import org.chiba.xml.ns.NamespaceConstants;
|
|||||||
import org.chiba.xml.events.XFormsEventNames;
|
import org.chiba.xml.events.XFormsEventNames;
|
||||||
import org.chiba.xml.events.XMLEvent;
|
import org.chiba.xml.events.XMLEvent;
|
||||||
import org.chiba.xml.xforms.ChibaBean;
|
import org.chiba.xml.xforms.ChibaBean;
|
||||||
|
import org.chiba.xml.xforms.exception.XFormsException;
|
||||||
import org.chiba.xml.xforms.XFormsElement;
|
import org.chiba.xml.xforms.XFormsElement;
|
||||||
import org.chiba.xml.events.DOMEventNames;
|
import org.chiba.xml.events.DOMEventNames;
|
||||||
import org.w3c.dom.*;
|
import org.w3c.dom.*;
|
||||||
@@ -96,6 +97,25 @@ public class Schema2XFormsTest
|
|||||||
assertEquals("test", ((Element)pointer.getNode()).getTextContent());
|
assertEquals("test", ((Element)pointer.getNode()).getTextContent());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testNumbers()
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
final Document schemaDocument = this.loadTestResourceDocument("xforms/unit-tests/automated/number-test.xsd");
|
||||||
|
final Document xformsDocument = Schema2XFormsTest.buildXForm(null, schemaDocument, "number-test");
|
||||||
|
System.err.println("generated xform " + XMLUtil.toString(xformsDocument));
|
||||||
|
final Element[] repeatedNumbers = Schema2XFormsTest.resolveXFormsControl(xformsDocument, "/number-test/repeated_numbers");
|
||||||
|
final ChibaBean chibaBean = this.runXForm(xformsDocument);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
chibaBean.dispatch(repeatedNumbers[0].getAttribute("id") + "-insert_before", DOMEventNames.ACTIVATE);
|
||||||
|
fail("expected to reproduce WCM-778");
|
||||||
|
}
|
||||||
|
catch (XFormsException bindingIssue)
|
||||||
|
{
|
||||||
|
// tracked as WCM-778
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void testRepeatConstraintsTest()
|
public void testRepeatConstraintsTest()
|
||||||
throws Exception
|
throws Exception
|
||||||
{
|
{
|
||||||
|
@@ -35,6 +35,15 @@
|
|||||||
</xs:restriction>
|
</xs:restriction>
|
||||||
</xs:simpleType>
|
</xs:simpleType>
|
||||||
</xs:element>
|
</xs:element>
|
||||||
|
<xs:element name="implicitly_bounded_int" type="xs:int"/>
|
||||||
|
<xs:element name="repeated_numbers" minOccurs="1" maxOccurs="unbounded">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="repeated_integer" type="xs:integer"/>
|
||||||
|
<xs:element name="repeated_int" type="xs:int"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</xs:element>
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
<xs:complexType name="multi-input">
|
<xs:complexType name="multi-input">
|
||||||
<xs:sequence>
|
<xs:sequence>
|
||||||
<xs:element name="string" type="xs:normalizedString"/>
|
<xs:element name="string" type="xs:normalizedString"/>
|
||||||
<xs:element name="int" type="xs:int"/>
|
<xs:element name="integer" type="xs:integer"/>
|
||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
<xs:element name="repeat-multi-simple">
|
<xs:element name="repeat-multi-simple">
|
||||||
|
@@ -2174,6 +2174,10 @@
|
|||||||
<managed-property>
|
<managed-property>
|
||||||
<property-name>workflowService</property-name>
|
<property-name>workflowService</property-name>
|
||||||
<value>#{WorkflowService}</value>
|
<value>#{WorkflowService}</value>
|
||||||
|
</managed-property>
|
||||||
|
<managed-property>
|
||||||
|
<property-name>unprotectedNodeService</property-name>
|
||||||
|
<value>#{nodeService}</value>
|
||||||
</managed-property>
|
</managed-property>
|
||||||
</managed-bean>
|
</managed-bean>
|
||||||
|
|
||||||
|
BIN
source/web/images/icons/close_portlet_animation.gif
Normal file
After Width: | Height: | Size: 1001 B |
BIN
source/web/images/icons/close_portlet_static.gif
Normal file
After Width: | Height: | Size: 653 B |
BIN
source/web/images/parts/doclist_arrow_down.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
source/web/images/parts/doclist_arrow_up.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
source/web/images/parts/doclist_item_marker.png
Normal file
After Width: | Height: | Size: 3.0 KiB |
BIN
source/web/images/parts/marker_effect_left.png
Normal file
After Width: | Height: | Size: 3.2 KiB |
BIN
source/web/images/parts/marker_effect_right.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
source/web/images/parts/mytasks_arrow_down.png
Normal file
After Width: | Height: | Size: 3.0 KiB |
BIN
source/web/images/parts/mytasks_arrow_up.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
BIN
source/web/images/parts/task_btn_normal_left.png
Normal file
After Width: | Height: | Size: 3.0 KiB |
BIN
source/web/images/parts/task_btn_normal_right.png
Normal file
After Width: | Height: | Size: 427 B |
BIN
source/web/images/parts/task_btn_rollover_left.png
Normal file
After Width: | Height: | Size: 3.0 KiB |
BIN
source/web/images/parts/task_btn_rollover_right.png
Normal file
After Width: | Height: | Size: 446 B |
@@ -35,9 +35,9 @@
|
|||||||
tinyMCE.init({
|
tinyMCE.init({
|
||||||
theme : "advanced",
|
theme : "advanced",
|
||||||
mode : "exact",
|
mode : "exact",
|
||||||
|
relative_urls: false,
|
||||||
elements : "editor",
|
elements : "editor",
|
||||||
save_callback : "saveContent",
|
save_callback : "saveContent",
|
||||||
urlconverter_callback: "convertUrl",
|
|
||||||
plugins : "table",
|
plugins : "table",
|
||||||
theme_advanced_toolbar_location : "top",
|
theme_advanced_toolbar_location : "top",
|
||||||
theme_advanced_toolbar_align : "left",
|
theme_advanced_toolbar_align : "left",
|
||||||
@@ -53,13 +53,6 @@
|
|||||||
document.getElementById("wizard:wizard-body:editor-output").value = content;
|
document.getElementById("wizard:wizard-body:editor-output").value = content;
|
||||||
}
|
}
|
||||||
|
|
||||||
function convertUrl(href, element, onsave)
|
|
||||||
{
|
|
||||||
// just return the passed href, this is enough to stop TinyMCE
|
|
||||||
// from converting the URL to it's relative form
|
|
||||||
return href;
|
|
||||||
}
|
|
||||||
|
|
||||||
var isIE = (document.all);
|
var isIE = (document.all);
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
@@ -41,9 +41,9 @@
|
|||||||
tinyMCE.init({
|
tinyMCE.init({
|
||||||
theme : "advanced",
|
theme : "advanced",
|
||||||
mode : "exact",
|
mode : "exact",
|
||||||
|
relative_urls: false,
|
||||||
elements : "editor",
|
elements : "editor",
|
||||||
save_callback : "saveContent",
|
save_callback : "saveContent",
|
||||||
urlconverter_callback: "convertUrl",
|
|
||||||
plugins : "table",
|
plugins : "table",
|
||||||
theme_advanced_toolbar_location : "top",
|
theme_advanced_toolbar_location : "top",
|
||||||
theme_advanced_toolbar_align : "left",
|
theme_advanced_toolbar_align : "left",
|
||||||
@@ -58,14 +58,6 @@
|
|||||||
{
|
{
|
||||||
document.forms['edit-file']['edit-file:editorOutput'].value = content;
|
document.forms['edit-file']['edit-file:editorOutput'].value = content;
|
||||||
}
|
}
|
||||||
|
|
||||||
function convertUrl(href, element, onsave)
|
|
||||||
{
|
|
||||||
// just return the passed href, this is enough to stop TinyMCE
|
|
||||||
// from converting the URL to it's relative form
|
|
||||||
return href;
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
@@ -517,7 +517,7 @@ function openWindowCallback(url, callback)
|
|||||||
// Register our "well known" callback function
|
// Register our "well known" callback function
|
||||||
window.alfrescoCallback = openWindowOnCallback;
|
window.alfrescoCallback = openWindowOnCallback;
|
||||||
// Use a named window so that only one dialog is active at a time
|
// Use a named window so that only one dialog is active at a time
|
||||||
window.open(url, 'alfrescoDialog', 'width=1024,height=768');
|
window.open(url, 'alfrescoDialog', 'width=1024,height=768,scrollbars=yes');
|
||||||
}
|
}
|
||||||
|
|
||||||
function openWindowOnCallback(fromTimeout)
|
function openWindowOnCallback(fromTimeout)
|
||||||
|
@@ -2,7 +2,7 @@ var MyDocs = {
|
|||||||
IMG_SMALL: 16,
|
IMG_SMALL: 16,
|
||||||
IMG_LARGE: 64,
|
IMG_LARGE: 64,
|
||||||
ANIM_LENGTH: 300,
|
ANIM_LENGTH: 300,
|
||||||
DETAIL_MARGIN: 56,
|
DETAIL_MARGIN: 8,
|
||||||
TITLE_FONT_SIZE: 18,
|
TITLE_FONT_SIZE: 18,
|
||||||
RESOURCE_PANEL_HEIGHT: 150,
|
RESOURCE_PANEL_HEIGHT: 150,
|
||||||
OVERLAY_OPACITY: 0.8,
|
OVERLAY_OPACITY: 0.8,
|
||||||
@@ -20,6 +20,11 @@ var MyDocs = {
|
|||||||
// show AJAX loading overlay
|
// show AJAX loading overlay
|
||||||
$('docPanelOverlayAjax').setStyle('visibility', 'visible');
|
$('docPanelOverlayAjax').setStyle('visibility', 'visible');
|
||||||
$('docPanel').setStyle('visibility', 'hidden');
|
$('docPanel').setStyle('visibility', 'hidden');
|
||||||
|
|
||||||
|
var messagePanel = $('docMessagePanel');
|
||||||
|
messagePanel.setStyle('opacity', 0);
|
||||||
|
messagePanel.setStyle('display', 'block');
|
||||||
|
|
||||||
// fire off the ajax request to populate the doc list - the 'doclistpanel' webscript
|
// fire off the ajax request to populate the doc list - the 'doclistpanel' webscript
|
||||||
// is responsible for rendering just the contents of the main panel div
|
// is responsible for rendering just the contents of the main panel div
|
||||||
YAHOO.util.Connect.asyncRequest(
|
YAHOO.util.Connect.asyncRequest(
|
||||||
@@ -252,6 +257,8 @@ var MyDocs = {
|
|||||||
|
|
||||||
if (!doc.isOpen)
|
if (!doc.isOpen)
|
||||||
{
|
{
|
||||||
|
doc.addClass("docItemSelectedOpen");
|
||||||
|
|
||||||
if (!resource.isLoaded)
|
if (!resource.isLoaded)
|
||||||
{
|
{
|
||||||
// fire off the ajax request to get the resources for this task
|
// fire off the ajax request to get the resources for this task
|
||||||
@@ -333,6 +340,8 @@ var MyDocs = {
|
|||||||
|
|
||||||
// reset selected class?
|
// reset selected class?
|
||||||
otherDoc.removeClass('docItemSelected');
|
otherDoc.removeClass('docItemSelected');
|
||||||
|
otherDoc.removeClass("docItemSelectedOpen");
|
||||||
|
|
||||||
// move the title back to the left?
|
// move the title back to the left?
|
||||||
var ml = otherItem.getStyle('margin-left').toInt();
|
var ml = otherItem.getStyle('margin-left').toInt();
|
||||||
if (ml != otherItem.defMarginLeft)
|
if (ml != otherItem.defMarginLeft)
|
||||||
@@ -389,6 +398,8 @@ var MyDocs = {
|
|||||||
// flag this document as closed
|
// flag this document as closed
|
||||||
doc.isOpen = false;
|
doc.isOpen = false;
|
||||||
|
|
||||||
|
doc.removeClass("docItemSelectedOpen");
|
||||||
|
|
||||||
// reset resource panel back to it's default height
|
// reset resource panel back to it's default height
|
||||||
animResource[i] = {
|
animResource[i] = {
|
||||||
'height': [resourceHeight, resource.defHeight],
|
'height': [resourceHeight, resource.defHeight],
|
||||||
@@ -523,6 +534,7 @@ var MyDocs = {
|
|||||||
if (response.responseText.indexOf("OK:") == 0)
|
if (response.responseText.indexOf("OK:") == 0)
|
||||||
{
|
{
|
||||||
MyDocs.refreshList();
|
MyDocs.refreshList();
|
||||||
|
MyDocs.displayMessage("A working copy for the checked out item 'Working Copy of " + name + "' has been created.");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -557,6 +569,7 @@ var MyDocs = {
|
|||||||
if (response.responseText.indexOf("OK:") == 0)
|
if (response.responseText.indexOf("OK:") == 0)
|
||||||
{
|
{
|
||||||
MyDocs.refreshList();
|
MyDocs.refreshList();
|
||||||
|
MyDocs.displayMessage("Item 'Working Copy of " + name + "' has been checked in.");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -764,6 +777,71 @@ var MyDocs = {
|
|||||||
{
|
{
|
||||||
// Refresh the inner panel
|
// Refresh the inner panel
|
||||||
MyDocs.refreshList(true);
|
MyDocs.refreshList(true);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Display a message bubble of helpful info to the user. Calling this function in quick
|
||||||
|
* succession will cause previous message to be lost as the new ones are displayed.
|
||||||
|
*
|
||||||
|
* @param message Message text to display
|
||||||
|
*/
|
||||||
|
displayMessage: function(message)
|
||||||
|
{
|
||||||
|
var panel = $("docMessagePanel");
|
||||||
|
if ($defined(panel.timeout))
|
||||||
|
{
|
||||||
|
clearTimeout(panel.timeout);
|
||||||
|
panel.timeout = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
panel.setStyle("opacity", 0);
|
||||||
|
panel.setStyle("margin-top", -60);
|
||||||
|
|
||||||
|
panel.getChildren()[1].setHTML(message);
|
||||||
|
|
||||||
|
// reset the close box animation by refreshing the image source
|
||||||
|
$("docMessagePanelCloseImage").src = getContextPath() + "/images/icons/close_portlet_animation.gif";
|
||||||
|
|
||||||
|
panel.fxMessage = new Fx.Styles(panel,
|
||||||
|
{
|
||||||
|
duration: 1000,
|
||||||
|
transition: Fx.Transitions.sineInOut
|
||||||
|
});
|
||||||
|
panel.fxMessage.start({'margin-top': -40, 'opacity': [0, 0.75]});
|
||||||
|
|
||||||
|
|
||||||
|
panel.timeout = window.setTimeout(this.fadeOutMessage, 9000);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Timer callback function to fade out the message panel
|
||||||
|
*/
|
||||||
|
fadeOutMessage: function()
|
||||||
|
{
|
||||||
|
var panel = $("docMessagePanel");
|
||||||
|
panel.timeout = null;
|
||||||
|
|
||||||
|
var fxMessage = new Fx.Styles(panel,
|
||||||
|
{
|
||||||
|
duration: 1000,
|
||||||
|
transition: Fx.Transitions.sineInOut
|
||||||
|
});
|
||||||
|
fxMessage.start({'margin-top': -60, 'opacity': [0]});
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Close the message panel immediately when the user clicks the close icon
|
||||||
|
*/
|
||||||
|
closeMessage: function()
|
||||||
|
{
|
||||||
|
var panel = $("docMessagePanel");
|
||||||
|
if ($defined(panel.timeout))
|
||||||
|
{
|
||||||
|
clearTimeout(panel.timeout);
|
||||||
|
panel.timeout = null;
|
||||||
|
}
|
||||||
|
panel.fxMessage.stop();
|
||||||
|
panel.setStyle("opacity", 0);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
var MyTasks = {
|
var MyTasks = {
|
||||||
ANIM_LENGTH: 300,
|
ANIM_LENGTH: 300,
|
||||||
DETAIL_PANEL_HEIGHT: 132,
|
DETAIL_PANEL_HEIGHT: 137,
|
||||||
Filter: null,
|
Filter: null,
|
||||||
ServiceContext: null,
|
ServiceContext: null,
|
||||||
|
|
||||||
@@ -8,6 +8,10 @@ var MyTasks = {
|
|||||||
{
|
{
|
||||||
if ($('taskPanel'))
|
if ($('taskPanel'))
|
||||||
{
|
{
|
||||||
|
var messagePanel = $("taskMessagePanel");
|
||||||
|
messagePanel.setStyle('opacity', 0);
|
||||||
|
messagePanel.setStyle('display', 'block');
|
||||||
|
|
||||||
// fire off the ajax request to populate the task panel - the 'mytaskspanel' webscript
|
// fire off the ajax request to populate the task panel - the 'mytaskspanel' webscript
|
||||||
// is responsible for rendering just the contents of the main panel div
|
// is responsible for rendering just the contents of the main panel div
|
||||||
YAHOO.util.Connect.asyncRequest(
|
YAHOO.util.Connect.asyncRequest(
|
||||||
@@ -45,6 +49,12 @@ var MyTasks = {
|
|||||||
// hide the ajax wait panel and show the main task panel
|
// hide the ajax wait panel and show the main task panel
|
||||||
$('taskPanelOverlay').setStyle('visibility', 'hidden');
|
$('taskPanelOverlay').setStyle('visibility', 'hidden');
|
||||||
$('taskPanel').setStyle('visibility', 'visible');
|
$('taskPanel').setStyle('visibility', 'visible');
|
||||||
|
|
||||||
|
if (MyTasks.postInit)
|
||||||
|
{
|
||||||
|
MyTasks.postInit();
|
||||||
|
MyTasks.postInit = null;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
parseTaskPanels: function()
|
parseTaskPanels: function()
|
||||||
@@ -170,6 +180,8 @@ var MyTasks = {
|
|||||||
// open up this task
|
// open up this task
|
||||||
// flag this task as open
|
// flag this task as open
|
||||||
task.isOpen = true;
|
task.isOpen = true;
|
||||||
|
task.addClass("taskItemSelected");
|
||||||
|
task.addClass("taskItemSelectedOpen");
|
||||||
|
|
||||||
if (task.loadingResources == false)
|
if (task.loadingResources == false)
|
||||||
{
|
{
|
||||||
@@ -212,6 +224,7 @@ var MyTasks = {
|
|||||||
|
|
||||||
// unhighlight the item title
|
// unhighlight the item title
|
||||||
otherTask.removeClass('taskItemSelected');
|
otherTask.removeClass('taskItemSelected');
|
||||||
|
otherTask.removeClass("taskItemSelectedOpen");
|
||||||
|
|
||||||
// does this task detail panel need resetting back to it's default height?
|
// does this task detail panel need resetting back to it's default height?
|
||||||
var otherHeight = otherDetail.getStyle('height').toInt();
|
var otherHeight = otherDetail.getStyle('height').toInt();
|
||||||
@@ -237,6 +250,7 @@ var MyTasks = {
|
|||||||
// close this task
|
// close this task
|
||||||
// flag this task as closed
|
// flag this task as closed
|
||||||
task.isOpen = false;
|
task.isOpen = false;
|
||||||
|
task.removeClass("taskItemSelectedOpen");
|
||||||
|
|
||||||
// fade in info button
|
// fade in info button
|
||||||
animInfo[i] = {'opacity': [infoOpacity, 1]};
|
animInfo[i] = {'opacity': [infoOpacity, 1]};
|
||||||
@@ -292,21 +306,39 @@ var MyTasks = {
|
|||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
||||||
displayMessage: function(message)
|
|
||||||
{
|
|
||||||
var footer = $('taskFooter');
|
|
||||||
if (footer.oldMessage == undefined)
|
|
||||||
{
|
|
||||||
footer.oldMessage = footer.innerHTML;
|
|
||||||
}
|
|
||||||
footer.innerHTML = message + ' ' + footer.oldMessage;
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Refresh the main data list contents within the taskPanel container
|
* Refresh the main data list contents within the taskPanel container
|
||||||
*/
|
*/
|
||||||
refreshList: function()
|
refreshList: function(reopenActive)
|
||||||
{
|
{
|
||||||
|
// do we want to remember which panel was open?
|
||||||
|
if (reopenActive)
|
||||||
|
{
|
||||||
|
// do we have an open panel?
|
||||||
|
var openPanel = $E('#taskPanel .taskItemSelected');
|
||||||
|
var openPanelId = null;
|
||||||
|
if (openPanel != null)
|
||||||
|
{
|
||||||
|
openPanelId = openPanel.id;
|
||||||
|
// Re-open the panel if the id still exists
|
||||||
|
MyTasks.postInit = function()
|
||||||
|
{
|
||||||
|
if ($(openPanelId))
|
||||||
|
{
|
||||||
|
$(openPanelId).fireEvent("click");
|
||||||
|
|
||||||
|
// scroll the open panel into view
|
||||||
|
var fxScroll = new Fx.Scroll($('taskPanel'),
|
||||||
|
{
|
||||||
|
duration: MyTasks.ANIM_LENGTH,
|
||||||
|
transition: Fx.Transitions.linear
|
||||||
|
});
|
||||||
|
fxScroll.toElement($(openPanelId));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// empty the main panel div and restart by reloading the panel contents
|
// empty the main panel div and restart by reloading the panel contents
|
||||||
var taskPanel = $('taskPanel');
|
var taskPanel = $('taskPanel');
|
||||||
taskPanel.setStyle('visibility', 'hidden');
|
taskPanel.setStyle('visibility', 'hidden');
|
||||||
@@ -322,15 +354,15 @@ var MyTasks = {
|
|||||||
*/
|
*/
|
||||||
filter: function(filter)
|
filter: function(filter)
|
||||||
{
|
{
|
||||||
$$('.taskfilterLink').each(function(filterLink, i)
|
$$('#taskFilterBar li').each(function(filterLink, i)
|
||||||
{
|
{
|
||||||
if (i == filter)
|
if (i == filter)
|
||||||
{
|
{
|
||||||
filterLink.addClass("taskfilterLinkSelected");
|
filterLink.addClass("taskCurrent");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
filterLink.removeClass("taskfilterLinkSelected");
|
filterLink.removeClass("taskCurrent");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
MyTasks.Filter = filter;
|
MyTasks.Filter = filter;
|
||||||
@@ -361,8 +393,81 @@ var MyTasks = {
|
|||||||
var x = a.dueDate;
|
var x = a.dueDate;
|
||||||
var y = b.dueDate;
|
var y = b.dueDate;
|
||||||
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
|
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when the Manage Task dialog returns
|
||||||
|
*/
|
||||||
|
manageTaskCallback: function()
|
||||||
|
{
|
||||||
|
// The manage task dialog window has closed
|
||||||
|
MyTasks.refreshList(true);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Display a message bubble of helpful info to the user. Calling this function in quick
|
||||||
|
* succession will cause previous message to be lost as the new ones are displayed.
|
||||||
|
*
|
||||||
|
* @param message Message text to display
|
||||||
|
*/
|
||||||
|
displayMessage: function(message)
|
||||||
|
{
|
||||||
|
var panel = $("taskMessagePanel");
|
||||||
|
if ($defined(panel.timeout))
|
||||||
|
{
|
||||||
|
clearTimeout(panel.timeout);
|
||||||
|
panel.timeout = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
panel.setStyle("opacity", 0);
|
||||||
|
panel.setStyle("margin-top", -90);
|
||||||
|
|
||||||
|
panel.getChildren()[1].setHTML(message);
|
||||||
|
|
||||||
|
// reset the close box animation by refreshing the image source
|
||||||
|
$("taskMessagePanelCloseImage").src = getContextPath() + "/images/icons/close_portlet_animation.gif";
|
||||||
|
|
||||||
|
panel.fxMessage = new Fx.Styles(panel,
|
||||||
|
{
|
||||||
|
duration: 1000,
|
||||||
|
transition: Fx.Transitions.sineInOut
|
||||||
|
});
|
||||||
|
panel.fxMessage.start({'margin-top': -70, 'opacity': [0, 0.75]});
|
||||||
|
|
||||||
|
|
||||||
|
panel.timeout = window.setTimeout(this.fadeOutMessage, 9000);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Timer callback function to fade out the message panel
|
||||||
|
*/
|
||||||
|
fadeOutMessage: function()
|
||||||
|
{
|
||||||
|
var panel = $("taskMessagePanel");
|
||||||
|
panel.timeout = null;
|
||||||
|
|
||||||
|
var fxMessage = new Fx.Styles(panel,
|
||||||
|
{
|
||||||
|
duration: 1000,
|
||||||
|
transition: Fx.Transitions.sineInOut
|
||||||
|
});
|
||||||
|
fxMessage.start({'margin-top': -90, 'opacity': [0]});
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Close the message panel immediately when the user clicks the close icon
|
||||||
|
*/
|
||||||
|
closeMessage: function()
|
||||||
|
{
|
||||||
|
var panel = $("taskMessagePanel");
|
||||||
|
if ($defined(panel.timeout))
|
||||||
|
{
|
||||||
|
clearTimeout(panel.timeout);
|
||||||
|
panel.timeout = null;
|
||||||
|
}
|
||||||
|
panel.fxMessage.stop();
|
||||||
|
panel.setStyle("opacity", 0);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
window.addEvent('load', MyTasks.start);
|
window.addEvent('load', MyTasks.start);
|
@@ -34,7 +34,7 @@ var MyWebFiles = {
|
|||||||
var file = files[i];
|
var file = files[i];
|
||||||
|
|
||||||
// animated elements defaults
|
// animated elements defaults
|
||||||
file.maxHeight = file.getStyle('height').toInt();
|
file.maxHeight = Math.max(file.getStyle('height').toInt(), 1);
|
||||||
file.defHeight = 1;
|
file.defHeight = 1;
|
||||||
file.setStyle('height', file.defHeight);
|
file.setStyle('height', file.defHeight);
|
||||||
file.setStyle('display', 'block');
|
file.setStyle('display', 'block');
|
||||||
|
@@ -21,7 +21,7 @@ var MyWebForms = {
|
|||||||
var frm = frms[i];
|
var frm = frms[i];
|
||||||
|
|
||||||
// animated elements defaults
|
// animated elements defaults
|
||||||
frm.maxHeight = frm.getStyle('height').toInt();
|
frm.maxHeight = Math.max(frm.getStyle('height').toInt(), 1);
|
||||||
frm.defHeight = 1;
|
frm.defHeight = 1;
|
||||||
frm.setStyle('height', frm.defHeight);
|
frm.setStyle('height', frm.defHeight);
|
||||||
frm.setStyle('opacity', 0);
|
frm.setStyle('opacity', 0);
|
||||||
|