From 19feb29e00be9d55b842c832794edac23d14a7b1 Mon Sep 17 00:00:00 2001 From: "rjc%netscape.com" Date: Mon, 17 Aug 1998 20:17:06 +0000 Subject: [PATCH] Import IE favorites and history on Mac might like how its also done on Windows. --- modules/rdf/include/vocab.h | 5 +++ modules/rdf/macbuild/RDF.mcp | Bin 74580 -> 73196 bytes modules/rdf/src/bmk2mcf.c | 12 +++-- modules/rdf/src/fs2rdf.c | 85 +++++++++++++++++++++++++++++++++++ modules/rdf/src/fs2rdf.h | 5 +++ modules/rdf/src/ht.c | 12 ++++- modules/rdf/src/nlcstore.c | 37 ++++++++------- modules/rdf/src/rdfht.c | 4 +- modules/rdf/src/vocab.c | 16 +++++++ 9 files changed, 152 insertions(+), 24 deletions(-) diff --git a/modules/rdf/include/vocab.h b/modules/rdf/include/vocab.h index 6b66bdf729c..43219db52ac 100644 --- a/modules/rdf/include/vocab.h +++ b/modules/rdf/include/vocab.h @@ -64,6 +64,11 @@ typedef struct _RDF_NCVocabStruct { RDF_Resource RDF_HistoryBySite; RDF_Resource RDF_HistoryByDate; RDF_Resource RDF_HistoryMostVisited; + + /* IE items */ + RDF_Resource RDF_IEBookmarkFolderCategory; + RDF_Resource RDF_IEHistory; + RDF_Resource RDF_bookmarkAddDate; RDF_Resource RDF_PersonalToolbarFolderCategory; RDF_Resource RDF_Column; diff --git a/modules/rdf/macbuild/RDF.mcp b/modules/rdf/macbuild/RDF.mcp index d1c5c7a22c7d39492928a9bd22530ba467aa3112..ecdccaaa423276f21f1fe4be508e0b87557ebffe 100644 GIT binary patch delta 1404 zcmY*ZYfPI}7(VaU)0Rt1Y1bB7DW!$!dKpX{n*)}OagodD3Y%M8VpI&sw1oz`O}EG; zW@awNP*3zEQ^?d8QY62Hm2+3|D z#Dr5aL7GoAL=Q!i1IE#>%%d%>M~^plqCMk@0o9;wETwll2?fA7I?#q15@+nM8V^+& zHcWTh(V$xYCu85yy==`KqnR2`=&R`lYS?tAi+w^1#ZCPqy?z`MeJXC`dKLCYI?uR% zbKl0s?FV8c?NC@r%@Vtt-(|_fMjZ|{1N&nnAl|iJvKrTyhX{H7qPRN$2$*fVQ!`i= z(Xa+=ENx|Dm04-yH^36-DO(Em!V|0_^dkFE?_w8%HEe?x8x@SI5G7Uj6d2f0WdTzH z*Vy}^AJ|f0QY?mx&9-bGO4K@WWbeVxM5@jsa;jHAt&WMsYB5zC&Mv8L?;q%HIu+|4 zZ0PPf{aX28Z>)=K8OzzO>t*8S`3@x&ZDn)KF{(CLw4bk``UplHXX8VqVtV)^9c%3P zmRV~j+3byc_C;+@>bU@$>Da3i8iVpw8GVvEEwiHbzOL@KdWqCsMj zM32Os60;;0Bihu&UTH98kOeGdpkonBk##dtqZG8UK}(fp#VgRPS~FK+#&W0<T{LagqI2gMvq3Qf8Ajz`nPsr^%wT zrF_E)?QD8(M|$3;<8e2%!sXdHH$15*Ejj#F5jYL>F^UuX-y%5aHm~8O3C9zIr|_Bl ziFP?U@9~5O%9Q}{D<1gGZN`^od>BtAbf3P1JC&&(cu*hG^k?sX z?88a|KjKnW+MPgpr$+x0cJv0~$S2 u&u{s$s*WXGf37v*%Vp&2r27G$UyA(b3tOB10RLj3KEp%S0zX&^_WuBT?o8+a delta 1425 zcmZ`&ZERCj7(VaqyaG%@kqoIdxw z&vTylQbr z9p~-h*TO?VTzbOA(YtC51tCH2$NV`=(z!LfJ%s2`(5qmRg4-2bry!?bt%AIQ5e3x> zx)iKbuvtNkf>nrSDRH$D&=-+T?pRlk(aqhlol)#bT7tHBD4R$nPQ(vLCrO8$hN!B) zO*U}X2q@}SI~ApislOceFn45+4RZB53LSl=$6r<1WwwCOXQ;N%H$ zi`V-2;n@-*oq12#8l*>>Vk*I0^e5$ z#F10q`RJbpW68bw8->Ef_o#in8>{&pE_gK4rwlNmVt*K+!PtogFL78qE*u@OoC)I7 z*Gv#riHWHlFHY+X5aj<~MpZB~9koC`S9LN%NXdg#c1Zf?$&N)^!x}=8y<>yj+|;XV z)dp6sG|n`3@Ntbd*+x5j$(ggv=l~mxvIYmVIA)|9scbThh(mk4_*dAF1FX*2eM0OD zLz(yhsa;#bWL8-bZf1Fjzg9y?)yFbFw~D-7=J_|+f&-2@cHuD~)61VDU8T@dY_Ahq z;08PIggx*VTXmwDU`AF~RM+_rqPkvIdw|tcU<;mk7L~B~88%#j`oq@=;ksn~&UaDo zmG#0HyDIUE-~Lm4U8D_ppUe*eTax%+r~WPeP&M+cGS7d-j4n9pYJ7h-!Q{`K!MW|iwM udw}m9GT&}w=OsR-#j{W5H=RL#i_9N=#AYkOVk5^status == IN_TITLE) || (f->status == IN_H3) || (f->status == IN_ITEM_TITLE)) { if (IN_H3 && gBkFolderDate) { - char url[150]; + char *url; RDF_Resource newFolder; - sprintf(url, "%s%s.rdf", gBkFolderDate, token); + url = PR_smprintf("%s%s.rdf", gBkFolderDate, token); newFolder = createContainer(url); + XP_FREE(url); addSlotValue(f,newFolder, gCoreVocab->RDF_parent, f->stack[f->depth-1], RDF_RESOURCE_TYPE, true); freeMem(gBkFolderDate); gBkFolderDate = NULL; f->lastItem = newFolder; } - addSlotValue(f, f->lastItem, gCoreVocab->RDF_name, - copyString(token), RDF_STRING_TYPE, true); + if ((f->db == gLocalStore) || (f->status != IN_TITLE)) + { + addSlotValue(f, f->lastItem, gCoreVocab->RDF_name, + copyString(token), RDF_STRING_TYPE, true); + } if (startsWith("Personal Toolbar", token) && (containerp(f->lastItem))) nlocalStoreAssert(gLocalStore, f->lastItem, gCoreVocab->RDF_instanceOf, gNavCenter->RDF_PersonalToolbarFolderCategory, diff --git a/modules/rdf/src/fs2rdf.c b/modules/rdf/src/fs2rdf.c index 3ae587bc92a..236923c5d6f 100644 --- a/modules/rdf/src/fs2rdf.c +++ b/modules/rdf/src/fs2rdf.c @@ -30,6 +30,8 @@ /* external string references in allxpstr */ extern int RDF_UNABLETODELETEFILE, RDF_UNABLETODELETEFOLDER; +extern RDF gNCDB; + #define IMPORT_LIST_SIZE 12 /* XXX localization */ @@ -122,6 +124,89 @@ GuessIEBookmarks (void) importForProfile("file:///c|/windows/", NULL); } XP_FREE(nativePath); + +#elif XP_MAC + + Handle nameH; + RDFFile newFile; + char *nativePath, *url; + short len, prefsVRefNum; + long prefsDirID; + OSErr err; + + if (!(err = FindFolder(kOnSystemDisk, kPreferencesFolderType, + kDontCreateFolder, &prefsVRefNum, &prefsDirID))) + { + if (!(err = GetFullPath(prefsVRefNum, prefsDirID, "\p:Explorer:Favorites.html", &len, &nameH))) + { + if (nameH != NULL) + { + HLock(nameH); + nativePath = PR_smprintf("%.*s", (int)len, *nameH); + DisposeHandle(nameH); + if (nativePath != NULL) + { + url = XP_PlatformFileToURL(nativePath); + XP_FREE(nativePath); + if (url != NULL) + { + if ((newFile = makeRDFFile(url, gNavCenter->RDF_IEBookmarkFolderCategory, + true)) != NULL) + { + newFile->fileType = RDF_BOOKMARKS; + /* + newFile->db = gLocalStore; + newFile->assert = nlocalStoreAssert1; + */ + newFile->db = gRemoteStore; + newFile->assert = remoteAssert3; + readInBookmarksOnInit(newFile); + + RDF_Assert(gNCDB, gNavCenter->RDF_IEBookmarkFolderCategory, + gCoreVocab->RDF_parent, + gNavCenter->RDF_BookmarkFolderCategory, + RDF_RESOURCE_TYPE); + } + XP_FREE(url); + } + } + } + } + if (!(err = GetFullPath(prefsVRefNum, prefsDirID, "\p:Explorer:History.html", &len, &nameH))) + { + if (nameH != NULL) + { + HLock(nameH); + nativePath = PR_smprintf("%.*s", (int)len, *nameH); + DisposeHandle(nameH); + if (nativePath != NULL) + { + url = XP_PlatformFileToURL(nativePath); + XP_FREE(nativePath); + if (url != NULL) + { + if ((newFile = makeRDFFile(url, gNavCenter->RDF_IEHistory, + true)) != NULL) + { + newFile->fileType = RDF_BOOKMARKS; + /* + newFile->db = gLocalStore; + newFile->assert = nlocalStoreAssert1; + */ + newFile->db = gRemoteStore; + newFile->assert = remoteAssert3; + readInBookmarksOnInit(newFile); + + RDF_Assert(gNCDB, gNavCenter->RDF_IEHistory, + gCoreVocab->RDF_parent, gNavCenter->RDF_History, + RDF_RESOURCE_TYPE); + } + XP_FREE(url); + } + } + } + } + } #endif } diff --git a/modules/rdf/src/fs2rdf.h b/modules/rdf/src/fs2rdf.h index c565bade95b..df409338466 100644 --- a/modules/rdf/src/fs2rdf.h +++ b/modules/rdf/src/fs2rdf.h @@ -25,13 +25,18 @@ #include "client.h" #include "prio.h" #include "prlong.h" +#include "nlcstore.h" +#include "remstore.h" #ifdef XP_MAC #include #include #include #include +#include #include + +#include "FullPath.h" #endif diff --git a/modules/rdf/src/ht.c b/modules/rdf/src/ht.c index 7086402bba2..ce32b5f837d 100644 --- a/modules/rdf/src/ht.c +++ b/modules/rdf/src/ht.c @@ -9006,10 +9006,20 @@ dropOn (HT_Resource dropTarget, HT_Resource dropObject, PRBool justAction) break; case LDAP_RT: + return DROP_NOT_ALLOWED; + break; + case RDF_RT : if (justAction) { - return COPY_MOVE_LINK; + if (HT_IsLocalData(dropTarget)) + { + return COPY_MOVE_LINK; + } + else + { + return DROP_NOT_ALLOWED; + } } else { diff --git a/modules/rdf/src/nlcstore.c b/modules/rdf/src/nlcstore.c index 423de4a1949..f7b4ed3524c 100644 --- a/modules/rdf/src/nlcstore.c +++ b/modules/rdf/src/nlcstore.c @@ -95,25 +95,27 @@ readInBookmarksOnInit(RDFFile f) parseNextBkBlob(f, buf, len); } - /* if no personal toolbar was specified in bookmark file, create one */ - - ptFolder = nlocalStoreGetSlotValue(f->db, gNavCenter->RDF_PersonalToolbarFolderCategory, - gCoreVocab->RDF_instanceOf, RDF_RESOURCE_TYPE, true, true); - - if (ptFolder == NULL) + if (f->db == gLocalStore) { - if ((ptFolder = createContainer("personaltoolbar.rdf")) != NULL) - { - addSlotValue(f, ptFolder, gCoreVocab->RDF_parent, - gNavCenter->RDF_BookmarkFolderCategory, - RDF_RESOURCE_TYPE, true); - addSlotValue(f, ptFolder, gCoreVocab->RDF_name, - copyString(XP_GetString(RDF_PERSONAL_TOOLBAR_NAME)), - RDF_STRING_TYPE, true ); - RDFUtil_SetPTFolder(ptFolder); - } - } + /* if no personal toolbar was specified in bookmark file, create one */ + ptFolder = nlocalStoreGetSlotValue(f->db, gNavCenter->RDF_PersonalToolbarFolderCategory, + gCoreVocab->RDF_instanceOf, RDF_RESOURCE_TYPE, true, true); + + if (ptFolder == NULL) + { + if ((ptFolder = createContainer("personaltoolbar.rdf")) != NULL) + { + addSlotValue(f, ptFolder, gCoreVocab->RDF_parent, + gNavCenter->RDF_BookmarkFolderCategory, + RDF_RESOURCE_TYPE, true); + addSlotValue(f, ptFolder, gCoreVocab->RDF_name, + copyString(XP_GetString(RDF_PERSONAL_TOOLBAR_NAME)), + RDF_STRING_TYPE, true ); + RDFUtil_SetPTFolder(ptFolder); + } + } + } PR_Close(fp); freeMem(f->line); freeMem(f->currentSlot); @@ -177,6 +179,7 @@ DBM_OpenDBMStore (DBMRDF store, char* directory) newFile->db = gLocalStore; newFile->assert = nlocalStoreAssert1; readInBookmarksOnInit(newFile); + doingFirstTimeInitp = 0; (*store->propDB->sync)(store->propDB, 0); (*store->invPropDB->sync)(store->invPropDB, 0); diff --git a/modules/rdf/src/rdfht.c b/modules/rdf/src/rdfht.c index 5582d856e04..bcd7055ebb3 100644 --- a/modules/rdf/src/rdfht.c +++ b/modules/rdf/src/rdfht.c @@ -127,9 +127,9 @@ RDF_Init(RDF_InitParams params) freeMem(navCenterURL); HT_Startup(); -#ifdef XP_WIN + GuessIEBookmarks(); -#endif + #endif walkThroughAllBookmarks(RDF_GetResource(NULL, "NC:Bookmarks", true)); return 0; diff --git a/modules/rdf/src/vocab.c b/modules/rdf/src/vocab.c index 694fefe2c95..b82d4cb6080 100644 --- a/modules/rdf/src/vocab.c +++ b/modules/rdf/src/vocab.c @@ -140,6 +140,12 @@ createNavCenterVocab () { setResourceType(gNavCenter->RDF_HistoryBySite, HISTORY_RT); setResourceType(gNavCenter->RDF_HistoryByDate, HISTORY_RT); setResourceType(gNavCenter->RDF_HistoryMostVisited, HISTORY_RT); + + /* IE items */ + gNavCenter->RDF_IEBookmarkFolderCategory = createContainer("NC:IEBookmarks"); + gNavCenter->RDF_IEHistory = createContainer("NC:IEHistory"); + setResourceType(gNavCenter->RDF_IEHistory, HISTORY_RT); + gNavCenter->RDF_bookmarkAddDate = newResource("bookmarkAddDate", RDF_ADDED_ON_STR); gNavCenter->RDF_PersonalToolbarFolderCategory = RDF_GetResource(gCoreDB, "PersonalToolbarCat", true); @@ -375,6 +381,16 @@ getResourceDefaultName(RDF_Resource node) { defaultName = XP_GetString(strID); } + /* XXX localization !!! */ + else if (node == gNavCenter->RDF_IEBookmarkFolderCategory) + { + defaultName = "Your IE Favorites"; + } + else if (node == gNavCenter->RDF_IEHistory) + { + defaultName = "Your IE History"; + } + #endif /* MOZILLA_CLIENT */ return(defaultName); }