/************************************************************************* * * ADOBE CONFIDENTIAL * ___________________ * * Copyright 2004 Adobe Systems Incorporated * All Rights Reserved. * * NOTICE: All information contained herein is, and remains * the property of Adobe Systems Incorporated and its suppliers, * if any. The intellectual and technical concepts contained * herein are proprietary to Adobe Systems Incorporated and its * suppliers and may be covered by U.S. and Foreign Patents, * patents in process, and are protected by trade secret or copyright law. * Dissemination of this information or reproduction of this material * is strictly forbidden unless prior written permission is obtained * from Adobe Systems Incorporated. * * $Id: //ols/research/cs2/ols.jsx#69 $ * $DateTime: 2005/03/10 21:10:14 $ * $Change: 7418 $ * $Author: gscott $ * **************************************************************************/ onlineservices = { }; if ( BridgeTalk.appName == "bridge" && app.language != "Chinese" && app.language != "Korean" ) { $.level=0 onlineservices.versionString = "3.0.29"; onlineservices.logging = 0; onlineservices.debugMenu = false; onlineservices.newServices = false; onlineservices.longpath = ""; onlineservices.isMac = (File.fs == "Macintosh"); onlineservices.isWin = (File.fs == "Windows"); /***************************************************************************** * Add menuitems *****************************************************************************/ onlineservices.menubarLocation0 = "after submenu/VersionCue"; // Do not localize. onlineservices.menubarLocation = "before FileInfo"; // Do not localize. onlineservices.contextmenuLocation = "before Thumbnail/FileInfo"; // Do not localize. onlineservices.menuitemLocation = "at the end of Tools/PhotoshopServices"; // Do not localize. // Find localized files onlineservices.beginLocalize = function() { var pathSpec = "{STARTUP}" + "/"; pathSpec += (File.fs == "Macintosh") ? "../" : ""; pathSpec += "Resources/"; if (app.language == "Chinese") pathSpec += "{LOCALE}"; else pathSpec += "{LANGUAGE}"; pathSpec += (File.fs == "Macintosh") ? ".lproj/" : "/"; pathSpec += "{FILENAME}" + ".dat"; onlineservices.oldZStringPath = app.zStringPathSpecifier; app.zStringPathSpecifier = pathSpec; } onlineservices.endLocalize = function() { app.zStringPathSpecifier = onlineservices.oldZStringPath; } onlineservices.localize = function( str ) { onlineservices.beginLocalize(); var result = localize( str ); onlineservices.endLocalize(); return result; } // Photo Services onlineservices.menubar = new MenuElement ( "menu" , onlineservices.localize("$$$/CS2/OLS/Menus/PhotoshopServices=Photoshop Services") , '-' + onlineservices.menubarLocation0 , "Tools/PhotoshopServices" ); onlineservices.menubar.photoPrints = new MenuElement ( "command" , onlineservices.localize("$$$/CS2/OLS/Menus/PhotoPrints=Photo Prints...") , onlineservices.menuitemLocation ); onlineservices.menubar.photoPrints.onSelect = function() { onlineservices.printOnline(); }; onlineservices.menubar.photoPrints.onDisplay = function() { this.enabled = onlineservices.isDocumentSelected(); }; if ( onlineservices.newServices ) { onlineservices.menubar.photoBooks = new MenuElement ( "command" , onlineservices.localize("$$$/CS2/OLS/Menus/PhotoBooks=Photo Books...") , onlineservices.menuitemLocation ); onlineservices.menubar.photoBooks.onSelect = function() { onlineservices.printBooks(); }; onlineservices.menubar.photoBooks.onDisplay = function() { this.enabled = onlineservices.isDocumentSelected(); }; onlineservices.menubar.photoCalendars = new MenuElement ( "command" , onlineservices.localize("$$$/CS2/OLS/Menus/PhotoCalendars=Photo Calendars...") , onlineservices.menuitemLocation ); onlineservices.menubar.photoCalendars.onSelect = function() { onlineservices.printCalendars(); }; onlineservices.menubar.photoCalendars.onDisplay = function() { this.enabled = onlineservices.isDocumentSelected(); }; onlineservices.menubar.photoGreetingCards = new MenuElement ( "command" , onlineservices.localize("$$$/CS2/OLS/Menus/PhotoGreetingCards=Photo Greeting Cards...") , onlineservices.menuitemLocation ); onlineservices.menubar.photoGreetingCards.onSelect = function() { onlineservices.printCards(); }; onlineservices.menubar.photoGreetingCards.onDisplay = function() { this.enabled = onlineservices.isDocumentSelected(); }; } // endif ( onlineservices.newServices ) onlineservices.menubar.photoSharing = new MenuElement ( "command" , onlineservices.localize("$$$/CS2/OLS/Menus/PhotoSharing=Photo Sharing...") , onlineservices.menuitemLocation ); onlineservices.menubar.photoSharing.onSelect = function() { onlineservices.shareOnline(); }; onlineservices.menubar.photoSharing.onDisplay = function() { this.enabled = onlineservices.isDocumentSelected(); }; onlineservices.menubar.chooseLocation = new MenuElement ( "command" , onlineservices.localize("$$$/CS2/OLS/Menus/ChooseLocation=Choose Location...") , '-' + onlineservices.menuitemLocation ); onlineservices.menubar.chooseLocation.onSelect = function() { onlineservices.chooseLocation(); }; onlineservices.menubar.chooseLocation.onDisplay = function() { this.enabled = true; }; if ( onlineservices.debugMenu ) { onlineservices.menubar.debugInfo = new MenuElement ( "command" , onlineservices.localize("$$$/CS2/OLS/Menus/DebugInfo=Debug Info...") , onlineservices.menuitemLocation ); onlineservices.menubar.debugInfo.onSelect = function() { onlineservices.showDebugInfo(); }; } /***************************************************************************** * Common code *****************************************************************************/ onlineservices.printOnline = function(thumbs) { if (thumbs == undefined) thumbs = app.document.selections; onlineservices.begin( "job" ); onlineservices.begin( "service-spec" ); onlineservices.set( "workflow", "print-photo" ); onlineservices.end(); onlineservices.includeDocuments( thumbs ); onlineservices.end(); onlineservices.startTask(); } onlineservices.shareOnline = function() { onlineservices.begin( "job" ); onlineservices.begin( "service-spec" ); onlineservices.set( "workflow", "share-photo-upload" ); onlineservices.end(); onlineservices.includeDocuments( app.document.selections ); onlineservices.end(); onlineservices.startTask(); } onlineservices.printBooks = function() { onlineservices.begin( "job" ); onlineservices.begin( "service-spec" ); onlineservices.set( "workflow", "print-creation" ); onlineservices.begin( "creation-type-list" ) onlineservices.set( "creation-type", "album" ); onlineservices.end(); onlineservices.end(); onlineservices.includeDocuments( app.document.selections ); onlineservices.end(); onlineservices.startTask(); } onlineservices.printCards = function() { onlineservices.begin( "job" ); onlineservices.begin( "service-spec" ); onlineservices.set( "workflow", "print-creation" ); onlineservices.begin( "creation-type-list" ) onlineservices.set( "creation-type", "postcard" ); onlineservices.end(); onlineservices.end(); onlineservices.includeDocuments( app.document.selections ); onlineservices.end(); onlineservices.startTask(); } onlineservices.printCalendars = function() { onlineservices.begin( "job" ); onlineservices.begin( "service-spec" ); onlineservices.set( "workflow", "print-creation" ); onlineservices.begin( "creation-type-list" ) onlineservices.set( "creation-type", "calendar" ); onlineservices.end(); onlineservices.end(); onlineservices.includeDocuments( app.document.selections ); onlineservices.end(); onlineservices.startTask(); } onlineservices.chooseLocation = function() { onlineservices.begin( "job" ); onlineservices.begin( "service-spec" ); onlineservices.set( "workflow", "preferences" ); onlineservices.end(); onlineservices.end(); onlineservices.startTask(); } onlineservices.begin = function( name ) { app.initializeOpera(); onlineservices.loadLib(); onlineservices.lib.begin( name ); } onlineservices.end = function() { onlineservices.loadLib(); onlineservices.lib.end(); } onlineservices.set = function( name, value ) { onlineservices.loadLib(); onlineservices.lib.set( name, value ); } onlineservices.isDocumentSelected = function() { return app.document.selections.length > 0; } onlineservices.log = function(str) { app.console( "[OnlineServices] " + str + "\n" ); }; onlineservices.dumpObj = function( prefix, obj ) { var e = ""; for (i in obj) { if (e == "") { e += "{ "; } else { e += ", "; } e += i + ":" + obj[i]; } e += " }"; onlineservices.log(prefix + e); } onlineservices.createUpdateServicesView = function() { var v = new Window( 'palette' ); v.orientation = 'column'; v.alignChildren = 'center'; v.description = v.add( 'statictext' ); v.description.text = onlineservices.localize( "$$$/CS2/OLS/ServiceListUpdate/ProgressMessage=Updating online service list..." ); v.cancelButton = v.add( 'button' ); v.cancelButton.alignment = 'right'; v.cancelButton.text = onlineservices.localize( "$$$/CS2/OLS/SessionManager/CancelButton=Cancel" ); v.layout.layout( true ); v.cancelButton.onClick = function() { onlineservices.lib.terminateSession(); } v.onClose = function() { onlineservices.lib.terminateSession(); } return v; } onlineservices.showUpdateServicesView = function() { var v = onlineservices.updateServicesView; if ( v == undefined ) { v = onlineservices.updateServicesView = onlineservices.createUpdateServicesView(); } v.show(); } onlineservices.hideUpdateServicesView = function() { var v = onlineservices.updateServicesView; if ( v != undefined ) { v.hide(); } } onlineservices.createProgressView = function( description, percent, detail ) { if (onlineservices.progressView) { onlineservices.progressView.description.text = description; onlineservices.progressView.progress.value = percent; onlineservices.progressView.detail.text = detail; onlineservices.progressView.layout.layout(true); onlineservices.progressView.show(); } else { var v = new Window( 'palette' ); v.orientation = 'column'; v.alignChildren = 'fill'; v.description = v.add( 'statictext' ); v.description.text = onlineservices.longpath; v.progress = v.add( 'progressbar' ); v.progress.preferredSize = { width:300, height:20 }; v.progress.value = percent; v.detail = v.add( 'statictext' ); v.detail.justify = 'center'; v.detail.text = detail; v.cancelButton = v.add( 'button' ); v.cancelButton.alignment = 'right'; v.cancelButton.text = onlineservices.localize( "$$$/CS2/OLS/SessionManager/CancelButton=Cancel" ); v.center(); v.show(); v.cancelButton.onClick = function() { onlineservices.lib.terminateSession(); } v.onClose = function() { onlineservices.lib.terminateSession(); } onlineservices.progressView = v; v.description.text = description; } } onlineservices.updateProgressView = function( description, bytesCompleted, bytesTotal ) { if ( bytesCompleted != bytesTotal ) { var descriptionDecoded = unescape( description ); var detail = bytesCompleted.toString() + " / " + bytesTotal.toString(); // FIXME: Zstring needed; var percent; if ( bytesCompleted == 0 ) { percent = 0; } else if ( bytesCompleted >= bytesTotal ) { percent = 100; } else { percent = Math.ceil( bytesCompleted / bytesTotal * 100 ); } if ( onlineservices.progressView ) { if ( onlineservices.progressView.description.text != descriptionDecoded ) { onlineservices.createProgressView( descriptionDecoded, percent, detail ); } else { onlineservices.progressView.progress.value = percent; onlineservices.progressView.detail.text = detail; } } else { onlineservices.createProgressView( descriptionDecoded, percent, detail ); } } else { if ( onlineservices.progressView ) { onlineservices.progressView.hide(); } } } onlineservices.hideProgressView = function() { if ( onlineservices.progressView ) { onlineservices.progressView.hide(); } } onlineservices.finishProgressView = function() { if ( onlineservices.progressView ) { onlineservices.progressView.close(); onlineservices.progressView = undefined; } } onlineservices.loadLocale = function() { if ( onlineservices.lib ) { onlineservices.lib.set("app_locale", app.locale); } } onlineservices.bringAppToFront = function() { BridgeTalk.bringToFront("bridge"); } onlineservices.getLibFilename = function() { var libFilename; if ( onlineservices.isWin ) { libFilename = "ols.dll"; } else // if ( onlineservices.isMac ) { libFilename = "ols.bundle"; } return libFilename; } onlineservices.getLibPath = function() { var libFilename = onlineservices.getLibFilename(); var libPath; if ( onlineservices.isWin ) { libPath = Folder.startup + "/" + libFilename; } else // if ( onlineservices.isMac ) { libPath = Folder.startup.fsName + "/../../../Plug-ins/" + libFilename; } return libPath; } onlineservices.loadLib = function() { if ( onlineservices.lib == undefined ) { var libPath = onlineservices.getLibPath(); var libFileObj = new File( libPath ); if ( libFileObj.exists ) { onlineservices.lib = new ExternalObject( "lib:" + libPath ); onlineservices.lib.setLogging( onlineservices.logging ); onlineservices.restoreProperties(); onlineservices.loadLocale(); } else { Window.alert( "OLS library not found: " + libPath ); } } } onlineservices.restoreProperties = function() { if ( app.preferences.onlineservicesPropertyKeysA == undefined || app.preferences.onlineservicesPropertyKeysB == undefined || app.preferences.onlineservicesPropertyValues == undefined ) { return; } var keysA = eval( app.preferences.onlineservicesPropertyKeysA ); var keysB = eval( app.preferences.onlineservicesPropertyKeysB ); var values = eval( app.preferences.onlineservicesPropertyValues ); if ( keysA.length != keysB.length || keysB.length != values.length ) { return; } onlineservices.begin( "cs2-ols-properties" ); // Do not localize. for ( var i in keysA ) { onlineservices.begin( "cs2-ols-property" ); // Do not localize. onlineservices.set( "key-a", unescape( keysA[i] ) ); // Do not localize. onlineservices.set( "key-b", unescape( keysB[i] ) ); // Do not localize. onlineservices.set( "value", unescape( values[i] ) ); // Do not localize. onlineservices.end(); } onlineservices.end(); } onlineservices.beginProperties = function() { onlineservices.propertyKeysA = new Array; onlineservices.propertyKeysB = new Array; onlineservices.propertyValues = new Array; } onlineservices.setProperty = function( keyA, keyB, value ) { onlineservices.propertyKeysA.push( escape( keyA ) ); onlineservices.propertyKeysB.push( escape( keyB ) ); onlineservices.propertyValues.push( escape( value ) ); } onlineservices.endProperties = function() { app.preferences.onlineservicesPropertyKeysA = onlineservices.propertyKeysA.toSource(); app.preferences.onlineservicesPropertyKeysB = onlineservices.propertyKeysB.toSource(); app.preferences.onlineservicesPropertyValues = onlineservices.propertyValues.toSource(); } onlineservices.pumpOls = function() { if ( onlineservices.lib.pumpOLS() ) { onlineservices.processMessages(); } } onlineservices.processMessages = function() { while ( onlineservices.processMessage() ) { } } onlineservices.processMessage = function() { var msg = onlineservices.lib.getMessage(); if ( typeof( msg ) == "script" ) { var delay = 1; // In milliseconds. var repeat = false; app.scheduleTask( script, delay, repeat ); return true; } else { return false; } } onlineservices.startTask = function() { if ( onlineservices.taskId == undefined ) { var script = 'onlineservices.pumpOls();'; var delay = 100; // In milliseconds. var repeat = true; onlineservices.taskId = app.scheduleTask( script, delay, repeat ); } } onlineservices.stopTask = function() { if ( onlineservices.taskId != undefined ) { var repeat = true; app.cancelTask( onlineservices.taskId, repeat ); onlineservices.taskId = undefined; } } onlineservices.concat_paths = function( path1, path2 ) { var separator; if ( onlineservices.isWin ) { separator = '\\'; } else // if ( onlineservices.isMac ) { separator = '/'; } // FIXME: Can't blindly insert a separator. return path1 + '\\' + path2; } onlineservices.includeDocuments = function( documents ) { onlineservices.gotNonJPEG = false; onlineservices.longpath = ""; onlineservices.lib.begin( "file-list" ); var thePath = app.document.thumbnail.path; for (i=0; i