HRESULT GetStrFromAttribute(IXMLDOMNode *pdn, LPCTSTR pszAttribute, LPTSTR pszBuffer, int cch); HRESULT SetAttributeFromStr(IXMLDOMNode *pdn, LPCTSTR pszAttribute, LPCTSTR pszValue); HRESULT GetIntFromAttribute(IXMLDOMNode *pdn, LPCTSTR pszAttribute, int *piValue); HRESULT CreateElement(IXMLDOMDocument *pdoc, LPCTSTR pszName, VARIANT *pvar, IXMLDOMElement **ppdelResult); HRESULT CreateAndAppendElement(IXMLDOMDocument *pdoc, IXMLDOMNode *pdnParent, LPCTSTR pszName, VARIANT *pvar, IXMLDOMElement **ppdelOut); void SpewXML(IUnknown *punk); HRESULT GetURLFromElement(IXMLDOMNode *pdn, LPCTSTR pszElement, LPTSTR pszBuffer, int cch); DWORD SHWNetGetConnection(LPCWSTR lpLocalName, LPCTSTR lpRemoteName, LPDWORD lpnLength); // used to communicate between the transfer logic and the main page. #define PWM_UPDATE WM_APP+1 #define PWM_TRANSFERCOMPLETE WM_APP+2 #define PWM_UPDATEICON WM_APP+3 // transfer manifest information, this is used to communicate between the site and the publishing // wizard to move the files between the local storage and the site. // // // // // // // [ cy= quality=<0-100>>] // // // // // // // // // // // // // // // #define ELEMENT_TRANSFERMANIFEST L"transfermanifest" #define ELEMENT_FOLDERS L"folderlist" #define ELEMENT_FOLDER L"folder" #define ATTRIBUTE_DESTINATION L"destination" #define ELEMENT_FILES L"filelist" #define ATTRIBUTE_HASFOLDERS L"usesfolders" #define ELEMENT_FILE L"file" #define ATTRIBUTE_ID L"id" #define ATTRIBUTE_EXTENSION L"extension" #define ATTRIBUTE_CONTENTTYPE L"contenttype" #define ATTRIBUTE_SIZE L"size" #define ATTRIBUTE_SOURCE L"source" #define ATTRIBUTE_DESTINATION L"destination" #define ELEMENT_METADATA L"metadata" #define ELEMENT_IMAGEDATA L"imageproperty" #define ATTRIBUTE_ID L"id" #define ELEMENT_RESIZE L"resize" #define ATTRIBUTE_CX L"cx" #define ATTRIBUTE_CY L"cy" #define ATTRIBUTE_QUALITY L"quality" #define ELEMENT_POSTDATA L"post" #define ATTRIBUTE_HREF L"href" #define ATTRIBUTE_VERB L"verb" #define ATTRIBUTE_NAME L"name" #define ATTRIBUTE_FILENAME L"filename" #define ELEMENT_FORMDATA L"formdata" #define ATTRIBUTE_NAME L"name" #define ELEMENT_UPLOADINFO L"uploadinfo" #define ATTRIBUTE_FRIENDLYNAME L"friendlyname" #define ELEMENT_TARGET L"target" #define ATTRIBUTE_HREF L"href" #define ATTRIBUTE_USERNAME L"username" #define ELEMENT_NETPLACE L"netplace" #define ATTRIBUTE_HREF L"href" #define ATTRIBUTE_FILENAME L"filename" #define ATTRIBUTE_COMMENT L"comment" #define ELEMENT_HTMLUI L"htmlui" #define ATTRIBUTE_HREF L"href" #define ELEMENT_PUBLISHWIZARD L"publishwizard" #define ATTRIBUTE_HREF L"href" #define ELEMENT_SUCCESSPAGE L"successpage" #define ATTRIBUTE_HREF L"href" #define ELEMENT_FAILUREPAGE L"failurepage" #define ATTRIBUTE_HREF L"href" #define ELEMENT_CANCELLEDPAGE L"cancelledpage" #define ATTRIBUTE_HREF L"href" #define ELEMENT_FAVORITE L"favorite" #define ATTRIBUTE_HREF L"href" #define ATTRIBUTE_NAME L"name" #define ATTRIBUTE_COMMENT L"comment" // xpaths for common items #define XPATH_MANIFEST ELEMENT_TRANSFERMANIFEST #define XPATH_FOLDERSROOT ELEMENT_TRANSFERMANIFEST L"/" ELEMENT_FOLDERS #define XPATH_FILESROOT ELEMENT_TRANSFERMANIFEST L"/" ELEMENT_FILES #define XPATH_ALLFILESTOUPLOAD ELEMENT_TRANSFERMANIFEST L"/" ELEMENT_FILES L"/" ELEMENT_FILE #define XPATH_UPLOADINFO ELEMENT_TRANSFERMANIFEST L"/" ELEMENT_UPLOADINFO #define XPATH_UPLOADTARGET ELEMENT_TRANSFERMANIFEST L"/" ELEMENT_UPLOADINFO L"/" ELEMENT_TARGET #define XPATH_PUBLISHWIZARD ELEMENT_TRANSFERMANIFEST L"/" ELEMENT_PUBLISHWIZARD // stuff relating to the file transfer engine typedef struct { HWND hwnd; // parent HWND for any messages / dialogs DWORD dwFlags; // flags from original wizard ::SetOptions BOOL fUsePost; // use post to transfer the bits TCHAR szSiteName[MAX_PATH]; // site name - shown in wizard TCHAR szSiteURL[MAX_PATH]; // site URL - opened in the browser TCHAR szFileTarget[INTERNET_MAX_URL_LENGTH]; // destination for file copy TCHAR szLinkTarget[INTERNET_MAX_URL_LENGTH]; // destination for favorites link etc TCHAR szLinkName[MAX_PATH]; TCHAR szLinkDesc[MAX_PATH]; } TRANSFERINFO; typedef struct { VARIANT varName; // name of the form value VARIANT varValue; // its value } FORMDATA; typedef struct { BOOL fResizeOnUpload; // this item should be resized LPITEMIDLIST pidl; // pidl of the item we are posting TCHAR szFilename[MAX_PATH]; // filename to associate with the object TCHAR szVerb[10]; // verb used for transfer TCHAR szName[MAX_PATH]; // name for the object we are posting TCHAR szURL[INTERNET_MAX_URL_LENGTH]; // destination for file copy CDSA dsaFormData; // form data for extra information published int cxResize; // height and width of item for resizing int cyResize; int iQuality; IShellItem *psi; // shell item for each of the objects IStream *pstrm; // posting stream (for file bits) STATSTG ststg; // stat of the file } TRANSFERITEM; // post engines which handle the transfer of files accordingly int _FreeTransferItems(TRANSFERITEM *pti, void *pvState = NULL); HRESULT PublishViaCopyEngine(TRANSFERINFO *pti, CDPA *pdpaItems, ITransferAdviseSink *ptas); HRESULT PublishViaPost(TRANSFERINFO *pti, CDPA *pdpaItems, ITransferAdviseSink *ptas);