Merged V3.1 to HEAD

12950: JAWS-11 -  Integrate OpenOffice addin contribution (webscripts only)
          ETHREEOH-991 - Window without scroll bars is opened when we click "Manage" button on "Task details" screen(Microsoft Office Add-in)
          ETHREEOH-994 - Incorrect work when we try to open document by cliking on its version number on View Details tab(Microsoft Office Add-in)
          ETHREEOH-988 - Incorrect work of Search Alfresco tab(Microsoft Office Add-in)
   12951: ETHREEOH-1010 - IE window was not closed when we click "Save Changes" button on "Manage Task" page(Office Add-in)
   12952: JAWS-226 - Support Office 2007 Transformations
   12953: ALFCOM-2490 - MS Office 2007 documents can't be previewed

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@13532 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Mike Hatfield
2009-03-10 14:59:16 +00:00
parent ba48c270d0
commit 77cee95439
9 changed files with 587 additions and 25 deletions

View File

@@ -1,6 +1,7 @@
##
## Microsoft Office Add-In Messages
##
# Page Titles
office.title.my_alfresco=My Alfresco
office.title.navigation=Browse Spaces and Documents
office.title.search=Search Alfresco
@@ -8,16 +9,132 @@ office.title.document_details=Document Details
office.title.my_tasks=My Tasks
office.title.document_tags=Document Tags
## My Alfresco
office.my_alfresco.my_checked_out_documents=My Checked Out Documents
# Headers and Subheaders
office.header.my_checked_out_documents=My Checked Out Documents
office.header.my_tasks=My Tasks
office.header.current_space=Current Space
office.header.spaces_in=Spaces in {0}
office.header.documents_in=Documents in {0}
office.header.document_actions=Document Actions
office.header.actions=Actions
office.header.details=Current Document Details
office.header.document_tags=Document Tags
office.header.document_tags.for=Document Tags for {0}
office.header.version_history=Version History
office.header.version_history.for=Version History for {0}
office.header.search=Search
office.header.task_details=Task Details
office.header.tag_cloud=Tag Cloud
office.header.tagged=Tagged Documents
## Navigation
office.navigation.header=Current Space
# Document Status
office.status.locked=Locked
## Search
# Actions
office.action.add_tag=Add a tag
office.action.remove_tag=Remove tag "{0}"
office.action.download=Download {0}
office.action.open=Open {0}
office.action.make_versionable=Make Versionable
office.action.compare_current=Compare with current
office.action.checkin=Check In
office.action.checkin.description=Check in the current document.
office.action.checkout=Check Out
office.action.checkout.description=Check out the current document to a working copy.
office.action.start_workflow=Start Workflow
office.action.start_workflow.description=Start Advanced Workflow for the current document.
office.action.transform_pdf=Transform to PDF
office.action.transform_pdf.description=Transform to Adobe PDF format.
office.action.open_details=Open Full Details
office.action.open_details.description=Open the document details in Alfresco Explorer.
office.action.save_to_alfresco=Save To Alfresco
office.action.save_to_alfresco.description=Allows you to place the current document under Alfresco management.
office.action.insert=Insert File into Current Document
office.action.create_collaboration_space=Create Collaboration Space
office.action.create_collaboration_space.description=Create a new Collaboration Space in the Alfresco Repository.
office.action.launch_alfresco=Launch Alfresco
office.action.launch_alfresco.description=Start the Alfresco Explorer Web Client.
office.action.userhome=To User Home Space
office.action.parent_space=Up to Parent Space
office.action.create_space=Create New Space
office.action.create_collaboration_space=Create New Collaboration Space
office.action.delete=Delete
office.action.return_search=Back to Search Results
office.action.return_search.description=Return to the Search Tab
office.action.manage_task=Manage
## Document Details
# Buttons
office.button.submit=Submit
office.button.cancel=Cancel
office.button.ok=OK
office.button.search=Search
## My Tasks
# Messages
office.message.unmanaged=The current document is not managed by Alfresco.
office.message.unversioned=The current document is not versioned.
office.message.none=None
office.message.no_documents=No documents
office.message.no_due_date=No due date
office.message.no_tasks=No tasks
office.message.no_subspaces=No subspaces
office.message.search_for=Search for
office.message.results_max.before=Return a maximum of
office.message.results_max.after=items
office.message.no_results=No results found
office.message.confirm_delete=Are you sure you want to delete this document?
office.message.enter_workflow_details=Enter new workflow details below
office.message.workflow_action_complete=Workflow action '{0}' completed.
## Document Tags
# Properties
office.property.title=Title
office.property.description=Description
office.property.creator=Creator
office.property.created=Created
office.property.modifier=Modifier
office.property.modified=Modified
office.property.size=Size
office.property.categories=Categories
office.property.author=Author
office.property.date=Date
office.property.due_date=Due date
office.property.name=Name
office.property.template=Template
office.property.filename=Document filename
office.property.workflow=Workflow
office.property.assign_to=Assign to
office.property.due_on=Due on
office.property.status=Status
office.property.priority=Priority
office.property.start_date=Start Date
office.property.type=Type
office.property.complete=Complete
# Workflow
office.workflow.review=Review and Approve
office.workflow.adhoc=Adhoc Task
# Result messages
office.result.failed=Action failed
office.result.convert.failed=Could not convert document
office.result.converted=Document converted
office.result.delete.failed=Could not delete document
office.result.deleted=Document deleted
office.result.checkout.failed=Could not checkout document
office.result.checked_out=Document checked out
office.result.checkin.failed=Could not checkin document
office.result.checked_in=Document checked in
office.result.version.failed=Could not version document
office.result.versioned=Document versioned
office.result.workflow_started=New workflow started
office.result.unknown=Unknown action
office.result.exception=Action failed due to exception
office.result.create_space.failed=Could not create space
office.result.create_space.missing_name=Space must have a Name
office.result.space_created=New space created
# Miscellaneous
office.unit.kb=KB
office.version.notes=Notes
office.task.overdue=overdue
office.task.due_today=due today
office.tip.task_item=Task item

View File

@@ -0,0 +1,139 @@
##
## Microsoft Office Add-In Messages
##
# Page Titles
office.title.my_alfresco=Mein Alfresco
office.title.navigation=Verzeichnisse und Dokumente durchsuchen
office.title.search=In Alfresco suchen
office.title.document_details=Detailinformationen ansehen
office.title.my_tasks=Meine Aufgaben
office.title.document_tags=Dokumente Tags
# Headers and Subheaders
office.header.my_checked_out_documents=Meine ausgecheckten Dokumente
office.header.my_tasks=Meine Aufgaben
office.header.current_space=Aktuelles Verzeichnis
office.header.spaces_in=Ordner in {0}
office.header.documents_in=Dokumente in {0}
office.header.document_actions=Dokumente Aktionen
office.header.actions=Aktionen
office.header.details=Aktuelle Detailinformationen zum Dokument
office.header.document_tags=Dokumente Tags
office.header.document_tags.for=Dokumente Tags für {0}
office.header.version_history=Vorgangshistorie
office.header.version_history.for=Vorgangshistorie für {0}
office.header.search=Suche
office.header.task_details=Detailinformationen zum Aufgaben
office.header.tag_cloud=Tagwolke
office.header.tagged=Dokumente mit Tag
# Document Status
office.status.locked=gesperrt
# Actions
office.action.add_tag=Tag hinzufügen
office.action.remove_tag=Tag "{0}" entfernen
office.action.download=Herunterladen {0}
office.action.open=Öffnen {0}
office.action.make_versionable=Versionierung generieren
office.action.compare_current=Vergleich mit aktuellem Dokument
office.action.checkin=Check-in
office.action.checkin.description=Aktuelles Dokument zuweisen
office.action.checkout=Check-out
office.action.checkout.description=Aktuelles Dokument als Arbeitskopie auslesen
office.action.start_workflow=Workflow anlegen
office.action.start_workflow.description=Workflow mit aktuelles Dokument anlegen
office.action.transform_pdf=In PDF konvertieren
office.action.transform_pdf.description=Aktuelles Dokument in ein Adobe PDF Format konvertieren
office.action.open_details=Dateilinformationen öffnen
office.action.open_details.description=Detailinformationen zum aktuellen Dokument im Alfresco Explorer öffnen
office.action.save_to_alfresco=Speichern unter Alfresco
office.action.save_to_alfresco.description=Das aktuelle Dokument kann im Alfresco Management abgelegt werden
office.action.insert=Datei in aktuelles Dokument einfügen
office.action.create_collaboration_space=Neues Verzeichnis anlegen
office.action.create_collaboration_space.description=Im Alfresco Aktenplan und Aktenverzeichnis einen neuen Ornder anlegen
office.action.launch_alfresco=Alfresco starten
office.action.launch_alfresco.description=Den Alfresco Web Client starten
office.action.userhome=Meine Basis
office.action.parent_space=Ebene nach oben
office.action.create_space=Neu Anlegen
office.action.create_collaboration_space=Neu Anlegen (Mitarbeit)
office.action.delete=Löschen
office.action.return_search=Zurück zu Ergebnissen
office.action.return_search.description=Zurück zu den Suchergebnissen
# Buttons
office.button.submit=Zusenden
office.button.cancel=Abbrechen
office.button.ok=OK
office.button.search=Suche
# Messages
office.message.unmanaged=Das aktuelle Dokument wird nicht von Alfresco verwaltet.
office.message.unversioned=Das aktuelle Dokument ist nicht versioniert
office.message.none=keine
office.message.no_documents=Keine Dokumente
office.message.no_due_date=Kein Abgabedatum
office.message.no_tasks=Keine Aufgaben
office.message.no_subspaces=Kein Ordner
office.message.search_for=Suche nach
office.message.results_max.before=Erhalte ein Maximum von
office.message.results_max.after=Ergebnisse
office.message.no_results=Keine Suchergebnisse
office.message.confirm_delete=Möchten Sie dieses Dokument wirklich löschen
office.message.enter_workflow_details=Workfloweinstellungen
office.message.workflow_action_complete=Workflow '{0}' abgeschlossen
# Properties
office.property.title=Titel
office.property.description=Beschreibung
office.property.creator=Erstellt von
office.property.created=Erstellt am
office.property.modifier=Bearbeiter
office.property.modified=Bearbeitet am
office.property.size=Größe
office.property.categories=Kategorien
office.property.author=Erfasser
office.property.date=Datum
office.property.due_date=Abgabedatum
office.property.name=Name
office.property.template=Template
office.property.filename=Dateiname
office.property.workflow=Workflow
office.property.assign_to=Zuweisen zu
office.property.due_on=Abgabedatum
office.property.status=Status
office.property.priority=Priorität
office.property.start_date=Beginn
office.property.type=Typ
office.property.complete=Abgeschlossen
# Workflow
office.workflow.review=Überprüft und genehmigt
office.workflow.adhoc=Adhoc Task
# Result messages
office.result.failed=Action failed
office.result.convert.failed=Could not convert document
office.result.converted=Document converted
office.result.delete.failed=Could not delete document
office.result.deleted=Document deleted
office.result.checkout.failed=Could not checkout document
office.result.checked_out=Document checked out
office.result.checkin.failed=Could not checkin document
office.result.checked_in=Document checked in
office.result.version.failed=Could not version document
office.result.versioned=Document versioned
office.result.workflow_started=New workflow started
office.result.unknown=Unknown action
office.result.exception=Action failed due to exception
office.result.create_space.failed=Could not create space
office.result.create_space.missing_name=Space must have a Name
office.result.space_created=Ordner angelegt
# Miscellaneous
office.unit.kb=KB
office.version.notes=Notizen
office.task.overdue=überfällig
office.task.due_today=heute fällig
office.tip.task_item=Aufgaben

View File

@@ -502,6 +502,22 @@ input.button {
width: 160px;
}
.searchButton {
background-color: #cce6ff;
border: 1px solid #0073e6;
color: #0073e6;
float: left;
font-size: 11px;
font-weight: bold;
cursor: pointer;
margin: 0px 0px 0px 4px;
padding: 4px;
filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr='#ffffff', EndColorStr='#cce6ff');
}
.searchButtonDisabled {
}
#searchResultsList {
overflow: hidden;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 600 B

View File

@@ -0,0 +1,270 @@
/**
* External component static wrapper that composes and 'calls' external component methods
*/
var ExternalComponent =
{
extender: null,
init: function(params, extenderType)
{
if (typeof extenderType == "undefined")
{
// MSOffice mode check
extenderType = (typeof top.window.external != "undefined" && typeof top.window.external.saveToAlfresco != "undefined") ? "msoffice" : "openoffice";
}
switch (extenderType.toLowerCase())
{
case "msoffice":
this.extender = new MSOffice(params);
break;
case "openoffice":
this.extender = new OpenOffice(params);
break;
default:
alert('ExtenderType "' + extenderType + '" is not supported.');
return;
}
},
openDocument: function()
{
return this.extender.openDocument.apply(this.extender, arguments);
},
docHasExtension: function()
{
return this.extender.docHasExtension.apply(this.extender, arguments);
},
saveToAlfresco: function()
{
return this.extender.saveToAlfresco.apply(this.extender, arguments);
},
saveToAlfrescoAs: function()
{
return this.extender.saveToAlfrescoAs.apply(this.extender, arguments);
},
compareDocument: function()
{
return this.extender.compareDocument.apply(this.extender, arguments);
},
insertDocument: function()
{
return this.extender.insertDocument.apply(this.extender, arguments);
}
}
/**
* External component wrapper for Microsoft Internet Explorer and MSOffice add-in
*/
var MSOffice = new Class(
{
params: {},
initialize: function(params)
{
$extend(this.params, params);
},
openDocument: function(relativePath)
{
window.external.openDocument(relativePath);
},
docHasExtension: function(fnTrue, fnFalse)
{
if (window.external.docHasExtension())
{
fnTrue.apply(arguments.callee);
}
else
{
fnFalse.apply(arguments.callee);
}
},
saveToAlfresco: function(relativePath)
{
return window.external.saveToAlfresco(relativePath);
},
saveToAlfrescoAs: function(relativePath, filename)
{
return window.external.saveToAlfrescoAs(relativePath, filename);
},
compareDocument: function(url)
{
return window.external.compareDocument(url);
},
insertDocument: function(relativePath)
{
return window.external.insertDocument();
}
});
/**
* External component wrapper for OpenOffice.org add-in
*/
var OpenOffice = new Class(
{
debugMode: false,
queryResults: [],
params: {},
initialize: function(params)
{
$extend(this.params, params);
},
// Open document with given relativePath
openDocument: function(relativePath)
{
with (this)
{
logDebug('openDocument', 'relativePath=' + relativePath);
doExternalCall('openDocument', relativePath);
}
},
// call external hoster object method
docHasExtension: function(functionIfTrue, functionIfFalse)
{
with (this)
{
logDebug('docHasExtension', 'functionIfTrue, functionIfFalse');
queryResults["docHasExtension"] = null;
checkBooleanResult(10, 'docHasExtension', functionIfTrue, functionIfFalse).delay(100, this);
doExternalCall('docHasExtension', '').delay(1000, this);
}
},
// call external hoster object method
saveToAlfresco: function(currentPath)
{
with (this)
{
logDebug('saveToAlfresco', 'currentPath=' + currentPath);
doExternalCall('saveToAlfresco', currentPath);
}
},
// call external hoster object method
saveToAlfrescoAs: function(currentPath, filename)
{
with (this)
{
logDebug('saveToAlfrescoAs', 'currentPath=' + currentPath + ", filename=" + filename);
doExternalCallEx('saveToAlfrescoAs', currentPath, filename);
}
},
compareDocument: function(currentPath)
{
with (this)
{
logDebug('compareDocument', 'currentPath=' + currentPath);
doExternalCall('compareDocument', currentPath);
}
},
// Insert a document into the currently open one
insertDocument: function(relativePath)
{
with (this)
{
logDebug('insertDocument', 'relativePath=' + relativePath);
doExternalCall('insertDocument', relativePath);
}
},
/**
* Implementation-specific functions
*/
// Set external method call result
setResult: function(methodName, success)
{
with (this)
{
logDebug('setResult', 'method=' + methodName + ', success=' + success);
queryResults[methodName] = success;
}
},
// used by timer for checking boolean result of external method call
checkBooleanResult: function(maxCount, methodName, functionIfTrue, functionIfFalse)
{
with (this)
{
var result = queryResults[methodName];
logDebug('checkBooleanResult', 'waiting: maxCount=' + maxCount + ", methodName=" + methodName + ", ...");
if (result != null)
{
if (result)
{
functionIfTrue();
}
else
{
functionIfFalse();
}
return;
}
if (maxCount <= 0)
{
logDebug('checkBooleanResult', 'waiting timeout: maxCount=' + maxCount + ", methodName=" + methodName + ", ...");
return;
}
checkBooleanResult(maxCount-1, methodName, functionIfTrue, functionIfFalse).delay(1000, this);
}
},
// compose URL for purpose to call external object method
doExternalCall: function(methodName, path)
{
with (this)
{
var newUrl = params.folderPath + "callexternal?extcall=&action=" + methodName
+ "&path=" + path + "&ts=" + new Date().getTime()
+ (params.ticket != "" ? "&ticket=" + params.ticket : "");
logDebug('doExternalCall', 'url=' + newUrl);
$("if_externalComponenetMethodCall").src = newUrl;
}
},
// compose URL for purpose to call external object method
doExternalCallEx: function(methodName, path, filename)
{
with (this)
{
var newUrl = params.folderPath + "callexternal?extcall=&action=" + methodName
+ "&path=" + path + "&filename=" + filename + "&ts=" + new Date().getTime()
+ (params.ticket != "" ? "&ticket=" + params.ticket : "");
logDebug('doExternalCallEx', 'url=' + newUrl);
$("if_externalComponenetMethodCall").src = newUrl;
}
},
// logger method
logDebug: function(methodName, message)
{
with (this)
{
if (debugMode.enabled && debugMode.methods[methodName])
{
alert("[DEBUG][ExternalComponent::" + methodName + "] " + message);
}
}
}
});

View File

@@ -6,11 +6,15 @@ var OfficeMyAlfresco =
{
TOGGLE_AMOUNT: 150,
ANIM_LENGTH: 800,
taskCount: 0,
init: function()
{
if (OfficeMyAlfresco.taskCount > 0)
{
OfficeAddin.sortTasks($('taskList'));
OfficeMyAlfresco.setupTasks();
}
OfficeMyAlfresco.setupToggles();
},

View File

@@ -34,7 +34,12 @@ var OfficeNavigation =
var toggles = $$('.toggle');
// Animation
var fxPanel = new Fx.Elements(panels, {wait: false, duration: OfficeNavigation.ANIM_LENGTH, transition: Fx.Transitions.Back.easeInOut});
var fxPanel = new Fx.Elements(panels,
{
wait: false,
duration: OfficeNavigation.ANIM_LENGTH,
transition: Fx.Transitions.Back.easeInOut
});
panels.each(function(panel, i)
{
@@ -183,9 +188,13 @@ var OfficeNavigation =
actionURL += "&st=" + encodeURIComponent(spaceTitle);
actionURL += "&sd=" + encodeURIComponent(spaceDescription);
actionURL += "&t=" + encodeURIComponent(spaceTemplate);
var myAjax = new Ajax(actionURL, {
var myAjax = new Ajax(actionURL,
{
method: 'get',
headers: {'If-Modified-Since': 'Sat, 1 Jan 2000 00:00:00 GMT'},
headers:
{
'If-Modified-Since': 'Sat, 1 Jan 2000 00:00:00 GMT'
},
onComplete: function(textResponse, xmlResponse)
{
// Remove any trailing hash
@@ -206,16 +215,14 @@ var OfficeNavigation =
saveToAlfresco: function(currentPath)
{
// Does the current doc have an extension?
if (!window.external.docHasExtension())
// Does the current doc have an extension? - async request
ExternalComponent.docHasExtension(function()
{
// No - we need to ask for a filename
OfficeNavigation.showSaveFilenamePanel(currentPath);
}
else
ExternalComponent.saveToAlfresco(currentPath)
}, function()
{
window.external.saveToAlfresco(currentPath);
}
OfficeNavigation.showSaveFilenamePanel(currentPath)
});
},
showSaveFilenamePanel: function(currentPath)
@@ -291,7 +298,7 @@ var OfficeNavigation =
if (!cancelSave)
{
window.external.saveToAlfrescoAs(currentPath, filename);
ExternalComponent.saveToAlfrescoAs(currentPath, filename);
}
}
OfficeNavigation.saveCancel();

View File

@@ -233,7 +233,7 @@ var OfficeAddin =
// Register our "well known" callback function
window.alfrescoCallback = OfficeAddin.openWindowOnCallback;
// 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');
},
openWindowOnCallback: function(fromTimeout)

View File

@@ -4,6 +4,8 @@
*/
var OfficeSearch =
{
MIN_LENGTH: 3,
init: function()
{
$('searchText').addEvent('keydown', function(event)
@@ -16,6 +18,8 @@ var OfficeSearch =
});
$('itemsFound').innerHTML = "Results Shown Below";
$('searchText').focus();
},
itemsFound: function(shownResults, totalResults)
@@ -39,11 +43,16 @@ var OfficeSearch =
/* AJAX call to perform server-side search */
runSearch: function(useTemplate, argPath)
{
OfficeAddin.showStatusText("Searching...", "ajax_anim.gif", false);
var searchString = $('searchText').value;
var maxResults = $('maxResults').value;
if (searchString.length < OfficeSearch.MIN_LENGTH)
{
OfficeAddin.showStatusText("Minimum " + OfficeSearch.MIN_LENGTH + " characters.", "info.gif", true);
return;
}
OfficeAddin.showStatusText("Searching...", "ajax_anim.gif", false);
var actionURL = useTemplate + argPath + "&search=" + encodeURIComponent(searchString) + "&maxresults=" + maxResults;
var myAjax = new Ajax(actionURL, {
method: 'get',