${d.name?html}
@@ -189,9 +190,9 @@ a.docfilterLinkSelected:link, a.docfilterLinkSelected:visited
font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
font-size: 12px;
color: #000000;
- margin: 0px 0px 0px 48px;
display: none;
overflow: hidden;
+ padding-left: 48px;
}
.docItemSelected
diff --git a/config/alfresco/templates/webscripts/org/alfresco/portlets/myspaces_get_desc.xml b/config/alfresco/templates/webscripts/org/alfresco/portlets/myspaces_get_desc.xml
new file mode 100644
index 0000000000..40c61baec2
--- /dev/null
+++ b/config/alfresco/templates/webscripts/org/alfresco/portlets/myspaces_get_desc.xml
@@ -0,0 +1,7 @@
+
+ My Spaces
+ Generate the My Spaces portlet page
+
+ user
+ required
+
\ No newline at end of file
diff --git a/config/alfresco/templates/webscripts/org/alfresco/portlets/myspaces_get_html.ftl b/config/alfresco/templates/webscripts/org/alfresco/portlets/myspaces_get_html.ftl
new file mode 100644
index 0000000000..1ac8198d53
--- /dev/null
+++ b/config/alfresco/templates/webscripts/org/alfresco/portlets/myspaces_get_html.ftl
@@ -0,0 +1,292 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+<#-- get the filter mode from the passed in args -->
+<#-- filters: 0=all, 1=spaces, 2=docs, 3=mine -->
+<#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-->
+<#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>
+<#assign path=home.displayPath + "/" + home.name>
+
+
+
+ <#-- construct breadcrumb elements as links -->
+ <#assign bcpath="/">
+ <#assign crumbs=path?split("/")>
+ <#list crumbs as c>
+ <#if c?length != 0>
+ <#assign bcpath=bcpath+c+"/">
+
${c}
+ <#if c_index
> #if>
+ #if>
+ #list>
+
+
+

${home.name?html}
+
+
+
Upload
+
Create Space
+
+
+
+ <#assign user=person.properties.userName>
+ <#assign count=0>
+ <#list home.children?sort_by('name') as d>
+ <#if (filter=0) ||
+ (filter=1 && d.isContainer) ||
+ (filter=2 && d.isDocument) ||
+ (filter=3 && (d.properties.creator == user || d.properties.modifier == user))>
+ <#assign count=count+1>
+
+
+ <#if d.isDocument>
+

+ <#else>
+

+ #if>
+
+
+ ${d.name?html}
+
+
+
+
+
+
+
+
+ Description: <#if d.properties.description?exists>${d.properties.description?html}<#else> #if>
+ Modified: ${d.properties.modified?datetime}
+ Modified By: ${d.properties.modifier}
+ |
+ |
+
+ Created: ${d.properties.created?datetime}
+ Created By: ${d.properties.creator}
+ Size: ${(d.size/1000)?string("0.##")} KB
+ |
+
+
+
+
+ #if>
+ #list>
+
+
+
+
+
\ No newline at end of file
diff --git a/config/alfresco/templates/webscripts/org/alfresco/portlets/mytasks_get_html.ftl b/config/alfresco/templates/webscripts/org/alfresco/portlets/mytasks_get_html.ftl
index 579c6dc67c..c7faf2829d 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/portlets/mytasks_get_html.ftl
+++ b/config/alfresco/templates/webscripts/org/alfresco/portlets/mytasks_get_html.ftl
@@ -232,10 +232,7 @@ a.taskfilterLinkSelected:link, a.taskfilterLinkSelected:visited
.taskResources
{
- border-left: 1px solid #0092DD;
- border-top: 1px solid #0092DD;
- border-bottom: 1px solid #CCD4DB;
- border-right: 1px solid #CCD4DB;
+ border: 1px solid #FFE500;
background-color: #FEF8BC;
margin: 4px 0px 0px 16px;
width: 400px;
diff --git a/source/web/images/icons/doclist_action_createspace.png b/source/web/images/icons/doclist_action_createspace.png
new file mode 100644
index 0000000000..fff40ce8b0
Binary files /dev/null and b/source/web/images/icons/doclist_action_createspace.png differ
diff --git a/source/web/images/icons/doclist_action_upload.png b/source/web/images/icons/doclist_action_upload.png
new file mode 100644
index 0000000000..3b06568bbd
Binary files /dev/null and b/source/web/images/icons/doclist_action_upload.png differ
diff --git a/source/web/images/icons/space-icon-cd-16.png b/source/web/images/icons/space-icon-cd-16.png
new file mode 100644
index 0000000000..58f5e278b6
Binary files /dev/null and b/source/web/images/icons/space-icon-cd-16.png differ
diff --git a/source/web/images/icons/space-icon-cd-64.png b/source/web/images/icons/space-icon-cd-64.png
new file mode 100644
index 0000000000..1d0d922376
Binary files /dev/null and b/source/web/images/icons/space-icon-cd-64.png differ
diff --git a/source/web/images/icons/space-icon-default-16.png b/source/web/images/icons/space-icon-default-16.png
new file mode 100644
index 0000000000..d336c705ca
Binary files /dev/null and b/source/web/images/icons/space-icon-default-16.png differ
diff --git a/source/web/images/icons/space-icon-default-64.png b/source/web/images/icons/space-icon-default-64.png
new file mode 100644
index 0000000000..dfa2cedad7
Binary files /dev/null and b/source/web/images/icons/space-icon-default-64.png differ
diff --git a/source/web/images/icons/space-icon-doc-16.png b/source/web/images/icons/space-icon-doc-16.png
new file mode 100644
index 0000000000..2a741d3940
Binary files /dev/null and b/source/web/images/icons/space-icon-doc-16.png differ
diff --git a/source/web/images/icons/space-icon-doc-64.png b/source/web/images/icons/space-icon-doc-64.png
new file mode 100644
index 0000000000..adcfb30fc2
Binary files /dev/null and b/source/web/images/icons/space-icon-doc-64.png differ
diff --git a/source/web/images/icons/space-icon-image-16.png b/source/web/images/icons/space-icon-image-16.png
new file mode 100644
index 0000000000..0fdf161d01
Binary files /dev/null and b/source/web/images/icons/space-icon-image-16.png differ
diff --git a/source/web/images/icons/space-icon-image-64.png b/source/web/images/icons/space-icon-image-64.png
new file mode 100644
index 0000000000..6216641902
Binary files /dev/null and b/source/web/images/icons/space-icon-image-64.png differ
diff --git a/source/web/images/icons/space-icon-pen-16.png b/source/web/images/icons/space-icon-pen-16.png
new file mode 100644
index 0000000000..77101b12eb
Binary files /dev/null and b/source/web/images/icons/space-icon-pen-16.png differ
diff --git a/source/web/images/icons/space-icon-pen-64.png b/source/web/images/icons/space-icon-pen-64.png
new file mode 100644
index 0000000000..cecf78c50d
Binary files /dev/null and b/source/web/images/icons/space-icon-pen-64.png differ
diff --git a/source/web/images/icons/space-icon-star-16.png b/source/web/images/icons/space-icon-star-16.png
new file mode 100644
index 0000000000..bc39f4ce83
Binary files /dev/null and b/source/web/images/icons/space-icon-star-16.png differ
diff --git a/source/web/images/icons/space-icon-star-64.png b/source/web/images/icons/space-icon-star-64.png
new file mode 100644
index 0000000000..e002f888d3
Binary files /dev/null and b/source/web/images/icons/space-icon-star-64.png differ
diff --git a/source/web/scripts/ajax/myspaces.js b/source/web/scripts/ajax/myspaces.js
new file mode 100644
index 0000000000..46f0a48f7a
--- /dev/null
+++ b/source/web/scripts/ajax/myspaces.js
@@ -0,0 +1,206 @@
+var MySpaces = {
+
+ start: function()
+ {
+ if ($('spacePanel'))
+ {
+ MySpaces.parseSpacePanels();
+ $('spacePanel').setStyle('visibility', 'visible');
+ }
+ },
+
+ parseSpacePanels: function()
+ {
+ var spaces = $$('#spacePanel .spaceRow');
+ var items = $$('#spacePanel .spaceItem');
+ var infos = $$('#spacePanel .spaceInfo');
+ var details = $$('#spacePanel .spaceDetail');
+ var icons = $$('#spacePanel .spaceIcon');
+ var imgs = $$('#spacePanel .spaceIconImage');
+ var fxItem = new Fx.Elements(items, {wait: false, duration: 300, transition: Fx.Transitions.linear});
+ var fxDetail = new Fx.Elements(details, {wait: false, duration: 300, transition: Fx.Transitions.linear});
+ var fxInfo = new Fx.Elements(infos, {wait: false, duration: 300, transition: Fx.Transitions.linear});
+ var fxIcon = new Fx.Elements(icons, {wait: false, duration: 300, transition: Fx.Transitions.linear});
+ var fxImage = new Fx.Elements(imgs,
+ {
+ wait: false,
+ duration: 300,
+ transition: Fx.Transitions.linear,
+ onComplete: function()
+ {
+ this.elements.each(function(img, i)
+ {
+ img.src = (img.getStyle('height').toInt() == 16) ? img.defSrc : img.bigSrc;
+ });
+ }
+ });
+
+ spaces.each(function(space, i)
+ {
+ var item = items[i],
+ info = infos[i],
+ detail = details[i],
+ img = imgs[i];
+
+ // animated elements defaults
+ item.defMarginLeft = item.getStyle('margin-left').toInt();
+ item.defFontSize = item.getStyle('font-size').toInt();
+ item.defBColor = (item.getStyle('background-color') == 'transparent') ? '' : item.getStyle('background-color');
+ detail.defHeight = 1;
+ detail.setStyle('opacity', 0);
+ detail.setStyle('display', 'block');
+ detail.setStyle('height', detail.defHeight);
+ info.setStyle('opacity', 0);
+ img.defSrc = img.src;
+ if (img.src.indexOf("/filetypes/") != -1)
+ {
+ img.bigSrc = img.src.replace(/filetypes\//, 'filetypes64/');
+ }
+ else
+ {
+ img.bigSrc = img.src.replace(/16.png$/, '64.png');
+ }
+
+ // register 'mouseenter' (subclassed mouseover) event for each space
+ space.addEvent('mouseenter', function(e)
+ {
+ var animItem = {},
+ animDetail = {},
+ animInfo = {};
+ animImage = {};
+ // highlight the item title
+ space.addClass('spaceItemSelected');
+ // move the item title to the right
+ animItem[i] = {
+ 'margin-left': [item.getStyle('margin-left').toInt(), 89],
+ 'font-size': [item.getStyle('font-size').toInt(), 18]
+ };
+ // fade in the info button
+ animInfo[i] = {'opacity': [info.getStyle('opacity'), 1]};
+ // slide and fade in the details panel
+ animDetail[i] = {
+ 'height': [detail.getStyle('height').toInt(), detail.defHeight + 64],
+ 'opacity': [detail.getStyle('opacity'), 1]
+ };
+ // grow the spacetype image
+ animImage[i] = {
+ 'height': [img.getStyle('height').toInt(), 64],
+ 'width': [img.getStyle('width').toInt(), 64]
+ };
+ img.src = img.bigSrc;
+
+ // reset styles on all other space
+ spaces.each(function(otherSpace, j)
+ {
+ var otherItem = items[j];
+ var otherInfo = infos[j];
+ var otherDetail = details[j];
+ var otherImg = imgs[j];
+ if ((otherSpace != space) && (!otherSpace.isOpen))
+ {
+ // reset selected class?
+ otherSpace.removeClass('spaceItemSelected');
+ // move the title back to the left?
+ var ml = otherItem.getStyle('margin-left').toInt();
+ if (ml != otherItem.defMarginLeft)
+ {
+ animItem[j] = {
+ 'margin-left': [ml, otherItem.defMarginLeft],
+ 'font-size': [otherItem.getStyle('font-size').toInt(), otherItem.defFontSize]
+ };
+ }
+ // does this space detail panel need resetting back to it's default height?
+ var h = otherDetail.getStyle('height').toInt();
+ if (h != otherDetail.defHeight)
+ {
+ animDetail[j] = {
+ 'height': [h, otherDetail.defHeight],
+ 'opacity': [otherDetail.getStyle('opacity'), 0]};
+ }
+ // does the info button need fading out
+ var o = otherInfo.getStyle('opacity');
+ if (o != 0)
+ {
+ animInfo[j] = {'opacity': [o, 0]};
+ }
+ // does the image need shrinking?
+ var ih = otherImg.getStyle('height').toInt();
+ if (ih != 16)
+ {
+ animImage[j] = {
+ 'height': [ih, 16],
+ 'width': [ih, 16]
+ };
+ }
+ }
+ });
+ fxItem.start(animItem);
+ fxDetail.start(animDetail);
+ fxInfo.start(animInfo);
+ fxImage.start(animImage);
+ });
+ });
+
+ $('spacePanel').addEvent('mouseleave', function(e)
+ {
+ // handler for mouse leaving the entire space panel
+ var animItem = {},
+ animDetail = {},
+ animInfo = {},
+ animImage = {};
+
+ spaces.each(function(space, i)
+ {
+ var item = items[i],
+ detail = details[i],
+ info = infos[i],
+ img = imgs[i];
+
+ if (space.isOpen)
+ {
+ // continue animations that may have been going on before the click
+ // move the item title to the right
+ animItem[i] = {
+ 'margin-left': [item.getStyle('margin-left').toInt(), 89],
+ 'font-size': [item.getStyle('font-size').toInt(), 18]
+ };
+ // fade in the info button
+ animInfo[i] = {'opacity': [info.getStyle('opacity'), 1]};
+ // slide and fade in the details panel
+ animDetail[i] = {
+ 'height': [detail.getStyle('height').toInt(), detail.defHeight + 64],
+ 'opacity': [detail.getStyle('opacity'), 1]
+ };
+ // grow the spacetype image
+ animImage[i] = {
+ 'height': [img.getStyle('height').toInt(), 64],
+ 'width': [img.getStyle('width').toInt(), 64]
+ };
+ }
+ else
+ {
+ space.removeClass('spaceItemSelected');
+ animItem[i] = {
+ 'margin-left': [item.getStyle('margin-left').toInt(), item.defMarginLeft],
+ 'font-size': [item.getStyle('font-size').toInt(), item.defFontSize]
+ };
+ animDetail[i] = {
+ 'height': [detail.getStyle('height').toInt(), detail.defHeight],
+ 'opacity': [detail.getStyle('opacity'), 0]
+ };
+ animInfo[i] = {'opacity': [infos[i].getStyle('opacity'), 0]};
+ animImage[i] = {
+ 'height': [img.getStyle('height').toInt(), 16],
+ 'width': [img.getStyle('width').toInt(), 16]
+ };
+ }
+ });
+ fxItem.start(animItem);
+ fxDetail.start(animDetail);
+ fxInfo.start(animInfo);
+ fxImage.start(animImage);
+ });
+ }
+};
+
+window.addEvent('load', MySpaces.start);
\ No newline at end of file