blackbook 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
data.tar.gz.sig CHANGED
Binary file
@@ -1,3 +1,8 @@
1
+ == 1.0.3 / 2008-02-27
2
+
3
+ * 1 minor enhancement
4
+ * address the change in where AOL contacts are listed
5
+
1
6
  == 1.0.2 / 2008-02-20
2
7
 
3
8
  * 1 minor enhancement
@@ -2,6 +2,7 @@ History.txt
2
2
  Manifest.txt
3
3
  README.txt
4
4
  Rakefile
5
+ debug_blackbook.rb
5
6
  init.rb
6
7
  lib/blackbook.rb
7
8
  lib/blackbook/exporter/base.rb
@@ -14,6 +15,7 @@ lib/blackbook/importer/gmail.rb
14
15
  lib/blackbook/importer/hotmail.rb
15
16
  lib/blackbook/importer/page_scraper.rb
16
17
  lib/blackbook/importer/yahoo.rb
18
+ test/fixtures/aol_application_page.html
17
19
  test/fixtures/aol_bad_login_response_stage_3.html
18
20
  test/fixtures/aol_contacts.html
19
21
  test/fixtures/aol_login_response_stage_1.html
@@ -21,6 +23,7 @@ test/fixtures/aol_login_response_stage_2.html
21
23
  test/fixtures/aol_login_response_stage_3.html
22
24
  test/fixtures/aol_login_response_stage_4.html
23
25
  test/fixtures/aol_login_response_stage_5.html
26
+ test/fixtures/aol_new_contacts.html
24
27
  test/fixtures/gmail.csv
25
28
  test/fixtures/gmail_bad_login_response_stage_2.html
26
29
  test/fixtures/gmail_contacts.html
@@ -0,0 +1,10 @@
1
+ require 'blackbook'
2
+
3
+ aol = Blackbook.get :username => 'mondragonmichael@aol.com', :password => '123aol0'
4
+ puts "===== aol #{aol.inspect}"
5
+
6
+ unless aol.detect{|c| c[:name].downcase == 'Dave Myron'.downcase && c[:email] == 'dave.myron@contentfree.com'}
7
+ puts "AOL not working"
8
+ exit 1
9
+ end
10
+
@@ -4,7 +4,7 @@ require 'rubygems'
4
4
 
5
5
  class Blackbook
6
6
  include ::Singleton
7
- VERSION = '1.0.2'
7
+ VERSION = '1.0.3'
8
8
 
9
9
  class BlackbookError < ::StandardError; end
10
10
  class BadCredentialsError < BlackbookError; end
@@ -32,8 +32,10 @@ class Blackbook::Importer::Aol < Blackbook::Importer::PageScraper
32
32
  # aol bumps to a wait page while logging in. if we can't scrape out the js then its a bad login
33
33
  wait_url = page.body.scan(/onLoad="checkError[^\)]+/).first.scan(/'([^']+)'/).last.first
34
34
  page = agent.get wait_url
35
- # aol generates the URL below from some JS magic in the wait_url page
36
- agent.get 'http://webmail.aol.com/31361/aol/en-us/Suite.aspx'
35
+
36
+ base_uri = page.body.scan(/^var gSuccessPath = \"(.+)\";/).first.first
37
+ raise( Blackbook::BadCredentialsError, "You do not appear to be signed in." ) unless base_uri
38
+ page = agent.get base_uri
37
39
  end
38
40
 
39
41
  ##
@@ -57,11 +59,13 @@ class Blackbook::Importer::Aol < Blackbook::Importer::PageScraper
57
59
  user_id = auth_cookie.value.scan(/&uid:([^&]+)&/).first.first
58
60
 
59
61
  # Get contacts print page
60
- page = agent.get "http://webmail.aol.com/aim/en-us/Lite/addresslist-print.aspx?command=all&sort=FirstLastNick&sortDir=Ascending&nameFormat=FirstLastNick&user=#{user_id}"
61
-
62
+ contacts_uri = agent.current_page.body.scan(/document.forms.searchForm.action = \"(.+)\";/)
63
+ raise( Blackbook::BadCredentialsError, "Must be authenticated to access contacts." ) unless contacts_uri
64
+ page = agent.get contacts_uri.first.first
65
+
62
66
  # Grab all the contacts
63
- names = page.body.scan( /<span class="fullName">([^<]+)<\/span>/ ).flatten
64
- emails = page.body.scan( /<span>Email 1:<\/span> <span>([^<]+)<\/span>/ ).flatten
67
+ names = page.search("//a[@class='contactNameLabel']").map{|a| a.innerText}.flatten
68
+ emails = page.body.scan( /<span class="contactOtherEmailLabel">([^<]+)<\/span>/ ).flatten
65
69
  (0...[names.size,emails.size].max).collect do |i|
66
70
  {
67
71
  :name => names[i],
@@ -0,0 +1,566 @@
1
+
2
+
3
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
+
5
+ <html xmlns="http://www.w3.org/1999/xhtml" >
6
+ <head><link type="text/css" rel="stylesheet" href="http://o.aolcdn.com/cdn.webmail.aol.com/34865/aim/en-us/styles-lite-all.css" /><script type="text/javascript" src="BasicBundle.js.aspx"></script><script type="text/javascript" src="http://o.aolcdn.com/cdn.webmail.aol.com/34865/js/external_compressed/axs.js"></script><script type="text/javascript" src="http://o.aolcdn.com/cdn.webmail.aol.com/34865/js/external_compressed/adsWrapper.js"></script><title>
7
+ AIM Mail - Today on AIM
8
+ </title></head>
9
+
10
+ <body onload="onloadFunctions();">
11
+
12
+
13
+ <div class="WSHat">
14
+ <div class="leftHat">
15
+ <div class="topHat">
16
+ <ul class="hatLinks"><li><a target="_blank" href="http://pr.atwola.com/promoclk/100001269x1116143256x1077350428/aol?redir=http:%2F%2Fwww.aol.com">AOL</a></li><li><a target="_blank" href="http://my.aol.com">myAOL</a></li><li class="last"><a target="_blank" href="http://pr.atwola.com/promoclk/100001269x1115550333x1077361411/aol?redir=http:%2F%2Fwww.aol.com%2Fmksplash.adp">Make AOL My Home Page</a></li></ul>
17
+ </div>
18
+ <div class="logoArea">
19
+ <img src="http://o.aolcdn.com/cdn.webmail.aol.com/34865/aim/en-us/images/hat_logo_lite.gif" class="logo" alt="Mail logo">
20
+ </div>
21
+ <div class="salutation">
22
+ Hi, joe.user@aim.com
23
+ <a href="http://webmail.aol.com/34865/aim/en-us/common/Logout.aspx?siteState=ver%3a3%7cac%3aWS%7cat%3aSNS%7cld%3awebmail.aol.com%7cuv%3aAIM%7clc%3aen-us%7cmt%3aAIM%7csnt%3aScreenName%7crt%3aBASIC" class="signOutLink">
24
+ Sign Out
25
+ </a>
26
+ </div>
27
+ </div>
28
+
29
+ <div class="mlBanner">
30
+
31
+ <script>
32
+ var lowRes = false;
33
+ if (screen.width < 1024) {
34
+ lowRes = true;
35
+ }
36
+ </script>
37
+
38
+ <div id="myAd">
39
+ <script type="text/javascript">
40
+ adsDisableTacoda();
41
+ var myAd = document.getElementById("myAd");
42
+ adSetTarget('_blank');
43
+ adSetType("I");
44
+ if (lowRes) {
45
+ htmlAdWH(93210713, 468, 60);
46
+ myAd.className="mlBannerSmall";
47
+ } else {
48
+ htmlAdWH(93225974, 728, 90);
49
+ myAd.className="mlBannerLarge";
50
+ }
51
+ </script>
52
+ </div>
53
+
54
+ </div>
55
+
56
+ <div class="bottomHat">
57
+ <div class="topHat_bottom">
58
+
59
+ <script type="text/javascript">
60
+ var aolHeader = {
61
+ fSubmitToMsgList: function(sFolder) {
62
+ if (sFolder) {
63
+ document.forms.MsgList.folder.value = sFolder;
64
+ }
65
+ try{document.forms.MsgList.submit();}catch(ex){}
66
+ },
67
+ fSubmitToCompose: function() {
68
+ if(document.forms.contactListForm) {
69
+ document.forms.contactListForm.pageAction.value = "compose";
70
+ document.forms.contactListForm.submit();
71
+ }
72
+ else {
73
+ document.forms.Compose.submit();
74
+ }
75
+ },
76
+ fSearchReturnPress: function(event) {
77
+ var charCode = (event.charCode) ? event.charCode : ((event.which) ? event.which : event.keyCode);
78
+
79
+ if (charCode == 13 || charCode == 3) {
80
+ aol.wsl.fbSearchHandler('Search The Web');
81
+ }
82
+ }
83
+ };
84
+ </script>
85
+
86
+ <form>
87
+ <input type=button value="Check Mail" id="checkMailBtn" onclick="document.forms.MsgList.action='MsgList.aspx#leftNav'; aolHeader.fSubmitToMsgList('Inbox');return false;" />
88
+ <input type=button value="Compose" id="writeMailBtn" onclick="aolHeader.fSubmitToCompose();return false;" />
89
+ <input type=hidden name='folder' value='Inbox' />
90
+ </form>
91
+ <div class=fieldsetHidden>
92
+ <form method=POST name=MsgList action='MsgList.aspx' enctype="multipart/form-data" accept-charset=UTF-8>
93
+ <input type=hidden name='user' value='ULKLrUelQ2' />
94
+ <input type=hidden name='folder' value='Inbox' />
95
+
96
+ <input type=hidden name='sort' value='received' />
97
+ <input type=hidden name='sortDir' value='descending' />
98
+ <input type=hidden name='showUserFolders' value='False' />
99
+ </form>
100
+
101
+ <form method=POST name=Compose action='Compose.aspx' enctype="multipart/form-data" accept-charset=UTF-8>
102
+ <input type=hidden name='user' value='ULKLrUelQ2' />
103
+ <input type=hidden name='folder' value='Inbox' />
104
+ <input type=hidden name='showUserFolders' value='False' />
105
+ </form>
106
+ </div>
107
+ </div>
108
+
109
+ <div class="searchArea nobr">
110
+ <form name="searchFormHeader" id="searchHeader" onsubmit="return false;">
111
+ <input type="text" id=searchEditHeader name="searchQueryHeader" maxlength="256" size=14 onkeypress="aolHeader.fSearchReturnPress(event);" onFocus="aol.wsl.fClearSearchTextboxHeader(this);" class="wsInputDefaultHeader" value="Search The Web">
112
+ <label for=searchEditHeader><span class=SROnly>Search The Web</span></label>
113
+ <select id="searchOptions" style=" display: none;" name="searchIn"><option value="http://search.aol.com/aolcom/search?invocationType=wbmailcayman_centered&query=">Whole Web</option></select>
114
+ <input id="searchSubmitHeader" name="searchSubmitHeader" type=button onclick="return aol.wsl.fbSearchHandler('Search The Web');" disabled="true" value="Search" title="Start searching the Web"/>
115
+ </form>
116
+ </div>
117
+
118
+ <div>
119
+ <span class="searchGoogleText">
120
+ enhanced<br>by
121
+ </span>
122
+ <img alt="Google logo" class="searchGoogle" src="http://o.aolcdn.com/cdn.webmail.aol.com/34865/aim/en-us/images/space.gif"
123
+ </div>
124
+
125
+ <div class="adminLinks">
126
+ <ul class="hatLinks">
127
+
128
+ <li class="link"><a href='GeneralSettings.aspx' onclick="try{document.location='GeneralSettings.aspx?user=ULKLrUelQ2';return false;}catch(e){}">
129
+ Settings</a></li>
130
+ <li class="last"><a href="http://help.channels.aol.com/topic.adp?topicId=Product_WebSuiteBasic" onclick="aol.wsl.fOnHelpClick(event, 'http://webmail.aol.com/34865/aim/en-us/'); return false;">Help</a></li>
131
+ </ul>
132
+ </div>
133
+ </div>
134
+
135
+
136
+
137
+ <script>
138
+ var aol = {wsl: {
139
+ fResetSearch: function(sDefaultSearchQueryHeader, sDropdownId) {
140
+ var oForm = document.forms.searchHeader;
141
+ oForm.searchQueryHeader.value = sDefaultSearchQueryHeader;
142
+ oForm.searchQueryHeader.className = "wsInputDefaultHeader";
143
+ oForm[sDropdownId][0].selected = true;
144
+ oForm.searchSubmitHeader.disabled = true;
145
+ }
146
+ ,fResetSearchTextbox: function(sDefaultSearchQueryHeader) {
147
+ var oForm = document.forms.searchHeader;
148
+ oForm.searchQueryHeader.value = sDefaultSearchQueryHeader;
149
+ oForm.searchQueryHeader.className = "wsInputDefaultHeader";
150
+ oForm.searchSubmitHeader.disabled = true;
151
+ }
152
+ ,fClearSearchTextbox: function() {
153
+ var oSearchForm = document.forms.search;
154
+ var oSearchTextbox = oSearchForm.searchEdit;
155
+ oSearchTextbox.value = "";
156
+ oSearchTextbox.className = "wsInput";
157
+ }
158
+ ,fClearSearchTextboxHeader: function() {
159
+ var oSearchForm = document.forms.searchHeader;
160
+ var oSearchTextbox = oSearchForm.searchEditHeader;
161
+ oSearchTextbox.value = "";
162
+ oSearchTextbox.className = "wsInputHeader";
163
+ oSearchForm.searchSubmitHeader.disabled = false;
164
+ }
165
+ ,fbSearchHandler: function(sDefaultSearchQueryHeader) {
166
+ var oForm = document.forms.searchHeader;
167
+ var iSelectedOption = oForm["searchIn"].selectedIndex;
168
+ var searchQuery = oForm.searchQueryHeader.value.replace(/\s+/, "+");
169
+ aol.wsl.fResetSearchTextbox(sDefaultSearchQueryHeader);
170
+ window.open(oForm.searchIn.options[iSelectedOption].value + searchQuery);
171
+ return false;
172
+ }
173
+ ,fbSearchHandlerForWeb: function(sWebAllSearchUrl, htExtraSearchOptions, sDefaultSearchQueryHeader) {
174
+ var oForm = document.forms.searchHeader;
175
+
176
+ window.open(sWebAllSearchUrl + oForm.searchQueryHeader.value);
177
+ aol.wsl.fResetSearchTextbox(sDefaultSearchQueryHeader);
178
+ return false;
179
+ }
180
+ ,fOnHelpClick: function(evt, url) {
181
+
182
+
183
+ if(!window.event){
184
+ evt.stopPropagation();
185
+ }
186
+
187
+ if (evt.shiftKey){
188
+ window.open(url + "tools/Support.aspx");
189
+ }
190
+ else
191
+ {
192
+ window.open('http://help.channels.aol.com/topic.adp?topicId=Product_WebSuiteBasic');
193
+ }
194
+
195
+ }
196
+ ,fAutoClick: function(oArgs) {
197
+ var oTarget = (oArgs && oArgs.sId && document.getElementById(oArgs.sId)) || this;
198
+ if (!oTarget) {
199
+ return;
200
+ } else if (oTarget.onclick) {
201
+ oTarget.onclick();
202
+ } else if (oTarget.click) {
203
+ oTarget.click();
204
+ } else if (oTarget.href) {
205
+ try{document.location = oTarget.href;} catch(e) {}
206
+ }
207
+ }
208
+ ,afRunAtLoad: []
209
+ ,fRunAllOnloads: function() {
210
+ for (var i=0, n=aol.wsl.afRunAtLoad.length; i < n; i++) {
211
+ aol.wsl.afRunAtLoad[i]();
212
+ }
213
+ }
214
+ ,fFocusPerUri: function() {
215
+
216
+ aol.wsl.afRunAtLoad.push(function() {
217
+ var eBeforeShorts = axs && axs.id("axs_kt_pre");
218
+ if (eBeforeShorts) {
219
+ axs.focus(eBeforeShorts);
220
+ }
221
+ });
222
+ }
223
+ }};
224
+ </script>
225
+
226
+
227
+
228
+
229
+ </div>
230
+
231
+
232
+ <table cellpadding="0" cellspacing="0" border="0" width="100%" class="tblContainer">
233
+ <tr>
234
+
235
+ <td class="tblLeftNav">
236
+ <div class=ws_nav>
237
+
238
+
239
+ <div class=ws_nav_top>
240
+
241
+ <script>
242
+ var aolLeftNav = {
243
+ fSubmitToMsgList: function(sFolder) {
244
+ if (sFolder) {
245
+ document.forms.MsgList.folder.value = sFolder;
246
+ }
247
+ try{document.forms.MsgList.submit();}catch(ex){}
248
+ },
249
+ fSubmitToCompose: function() {
250
+ if(document.forms.contactListForm) {
251
+ document.forms.contactListForm.pageAction.value = "compose";
252
+ document.forms.contactListForm.submit();
253
+ } else {
254
+ document.forms.Compose.submit();
255
+ }
256
+ },
257
+ fSubmitSearchForm: function(){
258
+
259
+ if(document.forms.searchForm.searchIn.value == "Contacts")
260
+ {
261
+ document.forms.searchForm.action = "http://webmail.aol.com/34865/aim/en-us/Lite/ContactList.aspx";
262
+
263
+ }
264
+ }
265
+ };
266
+ </script>
267
+ <div class="searchArea nobr">
268
+ <form name="searchForm" id=search method="POST"
269
+ action="http://webmail.aol.com/34865/aim/en-us/Lite/MsgList.aspx">
270
+ <input type=hidden name="user" value="ULKLrUelQ2">
271
+ <input type=hidden name='folder' value='Inbox' />
272
+ <input type=hidden name="searchAction" value="search">
273
+ <table align="center"><tbody><tr><td colspan="2">
274
+ <input type="text" id=searchEdit name="searchQuery" maxlength="256" size=14 onFocus="aol.wsl.fClearSearchTextbox(this);" class="wsInputDefault" value="Search Mail">
275
+ <label for=searchEdit><span class=SROnly>Search Mail</span></label>
276
+ </td></tr><tr><td>
277
+ <select class ="searchSelect" id=searchOptions name="searchIn">
278
+ <option value="alltext">Mail All</option><option value="subject">Mail Subject</option><option value="from">Mail Sender</option><option value="Contacts">Contacts</option>
279
+ </select>
280
+ </td><td>
281
+ <input onclick="aolLeftNav.fSubmitSearchForm();" class="goImg" id="searchSubmit" name="searchSubmit" type="image" src="http://o.aolcdn.com/cdn.webmail.aol.com/34865/aim/en-us/images/space.gif" value="Go" title="Start searching mail"/>
282
+ </td></tr></tbody></table>
283
+ </form>
284
+ </div>
285
+ </div>
286
+ <div class=swAds>
287
+
288
+ <div class="swAd1">
289
+ <script type="text/javascript">
290
+ adsDisableTacoda();
291
+ adSetType("I");
292
+ adSetTarget('_blank');
293
+ htmlAdWH(93237312, 160, 40);
294
+ </script>
295
+ </div>
296
+
297
+ </div>
298
+ <h1 id=leftNav class=SROnly>
299
+ <a name=leftNav>List of Folders</a>
300
+ </h1>
301
+ <div class=ws_main_pane>
302
+
303
+ <div id=sysFolders>
304
+
305
+ <div class='navItem navItemCurrent'>
306
+ <div class='navItemLabel'>
307
+ <a title='Today on AIM' href="Today.aspx?notc=true">
308
+ <div class='icon iconToday'></div>
309
+ Today on AIM
310
+ </a>
311
+ </div>
312
+ </div>
313
+
314
+
315
+ <div class="navItem "><div class="navItemLabel"><a href='#' id=inboxLnk onclick="aolLeftNav.fSubmitToMsgList('Inbox');return false;" title="Inbox Folder View"><div class="icon iconInbox"></div>Inbox<span id="InboxCount"></span></a></div></div>
316
+ <div class="navItem "><div class="navItemLabel"><a href='#' onclick="aolLeftNav.fSubmitToMsgList('Drafts');return false;" title="Drafts Folder View"><div class="icon iconFolder"></div>Drafts<span id="DraftsCount"></span></a></div></div>
317
+ <div class="navItem "><div class="navItemLabel"><a href='#' id=sentFolderLnk onclick="aolLeftNav.fSubmitToMsgList('Sent');return false;" title="Sent Folder View"><div class="icon iconFolder"></div>Sent</a></div></div>
318
+ <div class="navItem "><div class="navItemLabel"><a href='#' onclick="aolLeftNav.fSubmitToMsgList('SavedIMs');return false;" title="IMs Folder View"><div class="icon iconFolder"></div>IMs</a></div></div>
319
+ <div class="navItem "><div class="navItemLabel"><a href='#' onclick="aolLeftNav.fSubmitToMsgList('Spam');return false;" title="Spam Folder View"><div class="icon iconFolder"></div>Spam<span id="SpamCount"></span></a></div></div>
320
+ <div class="navItem "><div class="navItemLabel"><a href='#' onclick="aolLeftNav.fSubmitToMsgList('Trash');return false;" title="Trash Folder View"><div class="icon iconFolder"></div>Trash</a></div></div>
321
+
322
+ </div>
323
+
324
+ <div class='navItemContacts'><div class='navItem '><div class='navItemLabel'><a title='Contacts' id=contactsLnk href="ContactList.aspx?folder=Inbox&showUserFolders=False"><div class='icon iconContacts'></div>Contacts</a></div></div></div>
325
+
326
+
327
+ <div class="navItemMyFolders">
328
+ <a href="foo" onclick="changeShowUserFolders(true); return false;" title="Show all of your folders">
329
+ <div class="twisty twistyClosed">
330
+ <img src="http://o.aolcdn.com/cdn.webmail.aol.com/34865/aim/en-us/images/space.gif" />
331
+ </div>
332
+ <div class="myFoldersLabel nobr">
333
+ <h2 class="plain">My Folders</h2>
334
+ </div>
335
+ </a>
336
+ <span class="manageFolders wsLink nobr"><a href="Folders.aspx" >Manage Folders</a></span>
337
+ </div>
338
+
339
+
340
+
341
+ <script>
342
+ axs.keyreg("control+alt+a",aol.wsl.fAutoClick,{des:"Contacts",args:[{sId:"contactsLnk"}]});
343
+ axs.keyreg("control+alt+i",aol.wsl.fAutoClick,{des:"Go to Inbox Folder View",args:[{sId:"inboxLnk"}]});
344
+ axs.keyreg("control+alt+m",aol.wsl.fAutoClick,{des:"Check Mail",args:[{sId:"checkMailBtn"}]});
345
+ axs.keyreg("control+alt+n",aol.wsl.fAutoClick,{des:"Compose",args:[{sId:"writeMailBtn"}]});
346
+ axs.keyreg("control+alt+o",aol.wsl.fAutoClick,{des:"Go to Sent Folder View",args:[{sId:"sentFolderLnk"}]});
347
+ </script>
348
+ </div>
349
+ <div class=swAds>
350
+
351
+ <div class="swAd1">
352
+ <script type="text/javascript">
353
+ adsDisableTacoda();
354
+ adSetType("I");
355
+ adSetTarget('_blank');
356
+ htmlAdWH(93210708, 160, 40);
357
+ </script>
358
+ </div>
359
+
360
+ </div>
361
+ </div>
362
+ </td>
363
+ <td class="tblMainArea" id="tblMainArea">
364
+
365
+
366
+
367
+ <div class=omniDiv>
368
+ <script type="text/javascript">
369
+ var s_account = "aolaimmail,aolsvc";
370
+ </script>
371
+
372
+ <!-- In Omniture H code, the file inclusion has to come first -->
373
+ <script type="text/javascript" src="http://o.aolcdn.com/cdn.webmail.aol.com/34865/js/external/OmniUniH.js"></script>
374
+
375
+ <script type="text/javascript">
376
+ if (!window.s_265) s_265 = s;
377
+
378
+ s_265.channel = "aim.mail";
379
+ s_265.pageName = "Today";
380
+ s_265.pfxID = "wml";
381
+ s_265.prop1 = "WebSuite Basic";
382
+ s_265.prop2 = "Mail";
383
+ var idx = document.location.href.indexOf("?");
384
+ s_265.prop12 = (idx == -1) ? document.location.href : document.location.href.substring(0, idx);
385
+ var s_code = s_265.t();
386
+ if (s_code) document.write(s_code);
387
+ </script>
388
+ </div>
389
+
390
+
391
+
392
+ <div class=TodayOnAOL>
393
+
394
+ <h1 id=main class=SROnly><a name=main>Today on AIM</a></h1>
395
+ <div class="welcomeMessage">
396
+ <div class='TodayHeader'>&nbsp;You're using AIM Mail Basic which is optimized for your computer and browser.</div>
397
+
398
+ <div class='TodayGreeting' id='aolTodayGreeting'></div>
399
+ <div class="icon"></div>
400
+ <div class="todayMsgCount">
401
+ <a class="msgCountLabel" href="http://webmail.aol.com/34865/aim/en-us/lite/msglist.aspx">
402
+
403
+ <span id="TodayMailCount"></span>
404
+
405
+ </a>
406
+ </div>
407
+
408
+
409
+ <div>
410
+ <a target="_blank" class="mailBlog" href="http://mailblog.aim.com">Need mail tips? Read our blog.</a>
411
+ </div>
412
+
413
+
414
+
415
+
416
+ <div class='TodayClock'>
417
+ <div class='TodayDate' id='aolLocalDate'></div>
418
+ <div class='TodayTime' id='aolLocalTime'></div>
419
+ </div>
420
+ </div>
421
+ <script>
422
+ try {
423
+ //Morning, afternoon, or evening?
424
+ var dtToday = new Date();
425
+ var iCurrentHour = dtToday.getHours();
426
+ var sPartOfDayGreeting;
427
+ if (iCurrentHour < 12) {
428
+ sPartOfDayGreeting = "Good Morning, joe.user@aim.com";
429
+ } else if (iCurrentHour >= 12 && iCurrentHour < 18) {
430
+ sPartOfDayGreeting = "Good Afternoon, joe.user@aim.com";
431
+ } else {
432
+ sPartOfDayGreeting = "Good Evening, joe.user@aim.com";
433
+ }
434
+ //defined in BasicBundle.js.aspx
435
+
436
+ var sLocalDate = DateFormat.FormatDate(dtToday, "E, NNN d");
437
+
438
+ var sTimeFormatWithPlaceHolders = "h:mm**a++";
439
+
440
+ var sLocalTimeWithPlaceHolders = DateFormat.FormatDate(dtToday, sTimeFormatWithPlaceHolders);
441
+
442
+ var sLocalTime = sLocalTimeWithPlaceHolders.replace("**","<span class='TodayDate'> ");
443
+ sLocalTime = sLocalTime.replace("++","</span>");
444
+
445
+ var tnPartOfDayGreeting = document.createTextNode(sPartOfDayGreeting);
446
+ var eTodayGreeting = document.getElementById('aolTodayGreeting');
447
+ if (eTodayGreeting && tnPartOfDayGreeting) {
448
+ eTodayGreeting.appendChild(tnPartOfDayGreeting);
449
+ }
450
+
451
+ var tnLocalDate = document.createTextNode(sLocalDate);
452
+ var eLocalDate = document.getElementById('aolLocalDate');
453
+ if (eLocalDate && tnLocalDate) {
454
+ eLocalDate.appendChild(tnLocalDate);
455
+ }
456
+
457
+
458
+ var eLocalTime = document.getElementById('aolLocalTime');
459
+ if (eLocalTime) {
460
+ eLocalTime.innerHTML = sLocalTime;
461
+ }
462
+ } catch (ex) {
463
+ }
464
+
465
+
466
+ function changeShowUserFolders(newValue) {
467
+ var newURL = window.location.toString().replace(/[&?]showuserfolders=[^&]*/gi,"");
468
+ newURL += (newURL.indexOf("?") == -1 ? "?" : "&") + "showUserFolders=" + newValue;
469
+ window.location.replace(newURL);
470
+ }
471
+ function fOpenQuotaWindow() {
472
+ var url = Config.BaseLitePagesURL + "SwitchQuotaWelcome.aspx?user=" + "ULKLrUelQ2&t=true";
473
+ var windowParams = "status=yes,resizable=no,menubar=no,scrollbars=no,top=150,screenY=150,left=150,screenX=150,width=480,innerWidth=480,innerHeight=330,height=330,alwaysRaised";
474
+ window.open(url, name, windowParams);
475
+ }
476
+ </script>
477
+
478
+ <iframe id="TodayiFrame" src="http://welcome.mail.aol.com/beta.adp?type=aim&sr=1" title="Today on AIM" width="100%" height=630px frameborder=0 border=0 marginwidth=0 marginheight=0 scrolling="no" align="top" allowTransparency="true"></iframe>
479
+
480
+ <iframe id="tacoda" src="http://webmail.aol.com/js/external/tcodewm.html" title="" width="1px" height="1px" frameborder=0 border=0 marginwidth=0 marginheight=0 scrolling="no"></iframe>
481
+
482
+ </div>
483
+
484
+
485
+
486
+
487
+ </td>
488
+
489
+ </tr>
490
+ <tr><td colspan=2>
491
+
492
+
493
+ <div class="footer_container">
494
+ <table align="center"><tbody><tr width=100%><td><ul class="hatLinks links"><li><a href="http://webmail.aol.com/34865/aim/en-us/Lite/Today.aspx?AccessibilityRedirect=true" title="Click here for the accessible version">Accessible Version</a></li><li><a target="_blank" href="http://www.aol.com/aolnetwork/aolcom_terms.html">Terms of Service</a></li><li><a target="_blank" href="http://about.aol.com/aolnetwork/mem_commitments">Privacy Policy</a></li><li class=last><a target="_blank" href="http://www.aol.com/aolnetwork/trademarks.html">Trademarks</a></li></ul></td></tr></tbody></table>
495
+ <div class="copyright">&copy; 2008 AOL LLC. All Rights Reserved</div>
496
+ <script>
497
+ axs.l10n.keycap_summary = "This table describes the shortcut keys implemented on this page.";
498
+ axs.l10n.keycap_caption = "Key combinations and the actions they invoke.";
499
+ axs.l10n.keycap_combo = "Key Combination";
500
+ axs.l10n.keycap_act = "Action";
501
+ axs.l10n.keycap_keyshow = "Show or hide the keyboard shortcuts table";
502
+ axs.l10n.keycap_linkshow = "Click this link to show or hide the keyboard shortcuts table.";
503
+ aol.wsl.afRunAtLoad.push(function() {
504
+ // Disable the XML/Accessibility feature for the Sony browser.
505
+ if (navigator.userAgent.indexOf("Sony/COM2") === -1)
506
+ axs.keychart();
507
+ });
508
+ if ((typeof aol != 'undefined') && aol && aol.wsl && aol.wsl.fFocusPerUri) { aol.wsl.fFocusPerUri(); }
509
+ </script>
510
+ </div>
511
+ </td></tr>
512
+ </table>
513
+
514
+
515
+ <iframe id="CheckNewMessagesFrame" height=1 style="visibility:hidden;" src=''></iframe>
516
+ <script>
517
+ function updateCheckNewMessagesFrame() {
518
+ var CheckNewMessagesFrame = document.getElementById("CheckNewMessagesFrame");
519
+ if (CheckNewMessagesFrame) {
520
+ CheckNewMessagesFrame.src = 'http://webmail.aol.com/34865/aim/en-us/common/rpc/RPC.aspx?user=ULKLrUelQ2&automatic=true&dojo.transport=iframe&requests=[{"stateToken":"-1","action":"CheckNewMessages"}]]';
521
+ }
522
+ }
523
+ setInterval(updateCheckNewMessagesFrame, 120000);
524
+ </script>
525
+
526
+
527
+ <script>
528
+
529
+ function onloadFunctions() {
530
+ try {
531
+
532
+ aol && aol.wsl && aol.wsl.fRunAllOnloads && aol.wsl.fRunAllOnloads();
533
+ } catch (ex) {
534
+ //DEBUG alert('Exception in onloadFunctions(): '+ex);
535
+ }
536
+ }
537
+
538
+ function setMessageCounts(InboxCount, DraftsCount, SpamCount) {
539
+ var InboxCountSpan = document.getElementById("InboxCount");
540
+ if (InboxCountSpan != null && InboxCount != -1) {InboxCountSpan.innerHTML = "&nbsp;(" + InboxCount + ")";}
541
+ var DraftsCountSpan = document.getElementById("DraftsCount");
542
+ if (DraftsCountSpan != null && DraftsCount != -1) {DraftsCountSpan.innerHTML = "&nbsp;(" + DraftsCount + ")";}
543
+ var SpamCountSpan = document.getElementById("SpamCount");
544
+ if (SpamCountSpan != null && SpamCount != -1) {SpamCountSpan.innerHTML = "&nbsp;(" + SpamCount + ")";}
545
+
546
+
547
+ var TodayMailCountSpan = document.getElementById("TodayMailCount");
548
+ if (TodayMailCountSpan != null && InboxCount != -1) {
549
+ if (InboxCount == 0) {
550
+ TodayMailCountSpan.innerHTML = "0 New Messages";
551
+ } else if (InboxCount == 1) {
552
+ TodayMailCountSpan.innerHTML = "{0} New Message".replace("{0}",InboxCount);
553
+ } else {
554
+ TodayMailCountSpan.innerHTML = "{0} New Messages".replace("{0}",InboxCount);
555
+ }
556
+ }
557
+
558
+ }
559
+ </script>
560
+
561
+
562
+ <iframe height=1 style="visibility:hidden;" src='MailCounts.aspx'></iframe>
563
+
564
+
565
+ </body>
566
+ </html>
@@ -0,0 +1,431 @@
1
+
2
+
3
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
+
5
+ <html xmlns="http://www.w3.org/1999/xhtml" >
6
+ <head><link type="text/css" rel="stylesheet" href="http://o.aolcdn.com/cdn.webmail.aol.com/34865/aim/en-us/styles-lite-all.css" /><script type="text/javascript" src="BasicBundle.js.aspx"></script><script type="text/javascript" src="http://o.aolcdn.com/cdn.webmail.aol.com/34865/js/external_compressed/axs.js"></script><script type="text/javascript" src="http://o.aolcdn.com/cdn.webmail.aol.com/34865/js/lite_compressed/lite.js"></script><script type="text/javascript" src="http://o.aolcdn.com/cdn.webmail.aol.com/34865/js/external_compressed/adsWrapper.js"></script><title>
7
+ AIM Mail - Contacts
8
+ </title></head>
9
+
10
+ <body onload="onloadFunctions();">
11
+
12
+
13
+ <div class="WSHat">
14
+ <div class="leftHat">
15
+ <div class="topHat">
16
+ <ul class="hatLinks"><li><a target="_blank" href="http://pr.atwola.com/promoclk/100001269x1116143256x1077350428/aol?redir=http:%2F%2Fwww.aol.com">AOL</a></li><li><a target="_blank" href="http://my.aol.com">myAOL</a></li><li class="last"><a target="_blank" href="http://pr.atwola.com/promoclk/100001269x1115550333x1077361411/aol?redir=http:%2F%2Fwww.aol.com%2Fmksplash.adp">Make AOL My Home Page</a></li></ul>
17
+ </div>
18
+ <div class="logoArea">
19
+ <img src="http://o.aolcdn.com/cdn.webmail.aol.com/34865/aim/en-us/images/hat_logo_lite.gif" class="logo" alt="Mail logo">
20
+ </div>
21
+ <div class="salutation">
22
+ Hi, joe.user@aim.com
23
+ <a href="http://webmail.aol.com/34865/aim/en-us/common/Logout.aspx?siteState=ver%3a3%7cac%3aWS%7cat%3aSNS%7cld%3awebmail.aol.com%7cuv%3aAIM%7clc%3aen-us%7cmt%3aAIM%7csnt%3aScreenName%7crt%3aBASIC" class="signOutLink">
24
+ Sign Out
25
+ </a>
26
+ </div>
27
+ </div>
28
+
29
+ <div class="mlBanner">
30
+
31
+ <script>
32
+ var lowRes = false;
33
+ if (screen.width < 1024) {
34
+ lowRes = true;
35
+ }
36
+ </script>
37
+
38
+ <div id="myAd">
39
+ <script type="text/javascript">
40
+ adsDisableTacoda();
41
+ var myAd = document.getElementById("myAd");
42
+ adSetTarget('_blank');
43
+ adSetType("I");
44
+ if (lowRes) {
45
+ htmlAdWH(93210713, 468, 60);
46
+ myAd.className="mlBannerSmall";
47
+ } else {
48
+ htmlAdWH(93225974, 728, 90);
49
+ myAd.className="mlBannerLarge";
50
+ }
51
+ </script>
52
+ </div>
53
+
54
+ </div>
55
+
56
+ <div class="bottomHat">
57
+ <div class="topHat_bottom">
58
+
59
+ <script type="text/javascript">
60
+ var aolHeader = {
61
+ fSubmitToMsgList: function(sFolder) {
62
+ if (sFolder) {
63
+ document.forms.MsgList.folder.value = sFolder;
64
+ }
65
+ try{document.forms.MsgList.submit();}catch(ex){}
66
+ },
67
+ fSubmitToCompose: function() {
68
+ if(document.forms.contactListForm) {
69
+ document.forms.contactListForm.pageAction.value = "compose";
70
+ document.forms.contactListForm.submit();
71
+ }
72
+ else {
73
+ document.forms.Compose.submit();
74
+ }
75
+ },
76
+ fSearchReturnPress: function(event) {
77
+ var charCode = (event.charCode) ? event.charCode : ((event.which) ? event.which : event.keyCode);
78
+
79
+ if (charCode == 13 || charCode == 3) {
80
+ aol.wsl.fbSearchHandler('Search The Web');
81
+ }
82
+ }
83
+ };
84
+ </script>
85
+
86
+ <form>
87
+ <input type=button value="Check Mail" id="checkMailBtn" onclick="document.forms.MsgList.action='MsgList.aspx#leftNav'; aolHeader.fSubmitToMsgList('Inbox');return false;" />
88
+ <input type=button value="Compose" id="writeMailBtn" onclick="aolHeader.fSubmitToCompose();return false;" />
89
+ <input type=hidden name='folder' value='Inbox' />
90
+ </form>
91
+ <div class=fieldsetHidden>
92
+ <form method=POST name=MsgList action='MsgList.aspx' enctype="multipart/form-data" accept-charset=UTF-8>
93
+ <input type=hidden name='user' value='ULKLrUelQ2' />
94
+ <input type=hidden name='folder' value='Inbox' />
95
+
96
+ <input type=hidden name='sort' value='received' />
97
+ <input type=hidden name='sortDir' value='descending' />
98
+ <input type=hidden name='showUserFolders' value='False' />
99
+ </form>
100
+
101
+ <form method=POST name=Compose action='Compose.aspx' enctype="multipart/form-data" accept-charset=UTF-8>
102
+ <input type=hidden name='user' value='ULKLrUelQ2' />
103
+ <input type=hidden name='folder' value='Inbox' />
104
+ <input type=hidden name='showUserFolders' value='False' />
105
+ </form>
106
+ </div>
107
+ </div>
108
+
109
+ <div class="searchArea nobr">
110
+ <form name="searchFormHeader" id="searchHeader" onsubmit="return false;">
111
+ <input type="text" id=searchEditHeader name="searchQueryHeader" maxlength="256" size=14 onkeypress="aolHeader.fSearchReturnPress(event);" onFocus="aol.wsl.fClearSearchTextboxHeader(this);" class="wsInputDefaultHeader" value="Search The Web">
112
+ <label for=searchEditHeader><span class=SROnly>Search The Web</span></label>
113
+ <select id="searchOptions" style=" display: none;" name="searchIn"><option value="http://search.aol.com/aolcom/search?invocationType=wbmailcayman_centered&query=">Whole Web</option></select>
114
+ <input id="searchSubmitHeader" name="searchSubmitHeader" type=button onclick="return aol.wsl.fbSearchHandler('Search The Web');" disabled="true" value="Search" title="Start searching the Web"/>
115
+ </form>
116
+ </div>
117
+
118
+ <div>
119
+ <span class="searchGoogleText">
120
+ enhanced<br>by
121
+ </span>
122
+ <img alt="Google logo" class="searchGoogle" src="http://o.aolcdn.com/cdn.webmail.aol.com/34865/aim/en-us/images/space.gif"
123
+ </div>
124
+
125
+ <div class="adminLinks">
126
+ <ul class="hatLinks">
127
+
128
+ <li class="link"><a href='GeneralSettings.aspx' onclick="try{document.location='GeneralSettings.aspx?user=ULKLrUelQ2';return false;}catch(e){}">
129
+ Settings</a></li>
130
+ <li class="last"><a href="http://help.channels.aol.com/topic.adp?topicId=Product_WebSuiteBasic" onclick="aol.wsl.fOnHelpClick(event, 'http://webmail.aol.com/34865/aim/en-us/'); return false;">Help</a></li>
131
+ </ul>
132
+ </div>
133
+ </div>
134
+
135
+
136
+
137
+
138
+
139
+
140
+ </div>
141
+
142
+
143
+ <table cellpadding="0" cellspacing="0" border="0" width="100%" class="tblContainer">
144
+ <tr>
145
+
146
+ <td class="tblLeftNav">
147
+ <div class=ws_nav>
148
+
149
+
150
+ <div class=ws_nav_top>
151
+
152
+ <script>
153
+ var aolLeftNav = {
154
+ fSubmitToMsgList: function(sFolder) {
155
+ if (sFolder) {
156
+ document.forms.MsgList.folder.value = sFolder;
157
+ }
158
+ try{document.forms.MsgList.submit();}catch(ex){}
159
+ },
160
+ fSubmitToCompose: function() {
161
+ if(document.forms.contactListForm) {
162
+ document.forms.contactListForm.pageAction.value = "compose";
163
+ document.forms.contactListForm.submit();
164
+ } else {
165
+ document.forms.Compose.submit();
166
+ }
167
+ },
168
+ fSubmitSearchForm: function(){
169
+
170
+ if(document.forms.searchForm.searchIn.value == "Contacts")
171
+ {
172
+ document.forms.searchForm.action = "http://webmail.aol.com/34865/aim/en-us/Lite/ContactList.aspx";
173
+
174
+ }
175
+ }
176
+ };
177
+ </script>
178
+ <div class="searchArea nobr">
179
+ <form name="searchForm" id=search method="POST"
180
+ action="http://webmail.aol.com/34865/aim/en-us/Lite/MsgList.aspx">
181
+ <input type=hidden name="user" value="ULKLrUelQ2">
182
+ <input type=hidden name='folder' value='Inbox' />
183
+ <input type=hidden name="searchAction" value="search">
184
+ <table align="center"><tbody><tr><td colspan="2">
185
+ <input type="text" id=searchEdit name="searchQuery" maxlength="256" size=14 onFocus="aol.wsl.fClearSearchTextbox(this);" class="wsInputDefault" value="Search Contacts">
186
+ <label for=searchEdit><span class=SROnly>Search Mail</span></label>
187
+ </td></tr><tr><td>
188
+ <select class ="searchSelect" id=searchOptions name="searchIn">
189
+ <option value="Contacts">Contacts</option><option value="alltext">Mail All</option><option value="subject">Mail Subject</option><option value="from">Mail Sender</option>
190
+ </select>
191
+ </td><td>
192
+ <input onclick="aolLeftNav.fSubmitSearchForm();" class="goImg" id="searchSubmit" name="searchSubmit" type="image" src="http://o.aolcdn.com/cdn.webmail.aol.com/34865/aim/en-us/images/space.gif" value="Go" title="Start searching mail"/>
193
+ </td></tr></tbody></table>
194
+ </form>
195
+ </div>
196
+ </div>
197
+ <div class=swAds>
198
+
199
+ <div class="swAd1">
200
+ <script type="text/javascript">
201
+ adsDisableTacoda();
202
+ adSetType("I");
203
+ adSetTarget('_blank');
204
+ htmlAdWH(93237312, 160, 40);
205
+ </script>
206
+ </div>
207
+
208
+ </div>
209
+ <h1 id=leftNav class=SROnly>
210
+ <a name=leftNav>List of Folders</a>
211
+ </h1>
212
+ <div class=ws_main_pane>
213
+
214
+ <div id=sysFolders>
215
+
216
+ <div class='navItem '>
217
+ <div class='navItemLabel'>
218
+ <a title='Today on AIM' href="Today.aspx?notc=true">
219
+ <div class='icon iconToday'></div>
220
+ Today on AIM
221
+ </a>
222
+ </div>
223
+ </div>
224
+
225
+
226
+ <div class="navItem "><div class="navItemLabel"><a href='#' id=inboxLnk onclick="aolLeftNav.fSubmitToMsgList('Inbox');return false;" title="Inbox Folder View"><div class="icon iconInbox"></div>Inbox<span id="InboxCount"></span></a></div></div>
227
+ <div class="navItem "><div class="navItemLabel"><a href='#' onclick="aolLeftNav.fSubmitToMsgList('Drafts');return false;" title="Drafts Folder View"><div class="icon iconFolder"></div>Drafts<span id="DraftsCount"></span></a></div></div>
228
+ <div class="navItem "><div class="navItemLabel"><a href='#' id=sentFolderLnk onclick="aolLeftNav.fSubmitToMsgList('Sent');return false;" title="Sent Folder View"><div class="icon iconFolder"></div>Sent</a></div></div>
229
+ <div class="navItem "><div class="navItemLabel"><a href='#' onclick="aolLeftNav.fSubmitToMsgList('SavedIMs');return false;" title="IMs Folder View"><div class="icon iconFolder"></div>IMs</a></div></div>
230
+ <div class="navItem "><div class="navItemLabel"><a href='#' onclick="aolLeftNav.fSubmitToMsgList('Spam');return false;" title="Spam Folder View"><div class="icon iconFolder"></div>Spam<span id="SpamCount"></span></a></div></div>
231
+ <div class="navItem "><div class="navItemLabel"><a href='#' onclick="aolLeftNav.fSubmitToMsgList('Trash');return false;" title="Trash Folder View"><div class="icon iconFolder"></div>Trash</a></div></div>
232
+
233
+ </div>
234
+
235
+ <div class='navItemContacts'><div class='navItem navItemCurrent'><div class='navItemLabel'><a title='Contacts' id=contactsLnk href="ContactList.aspx?folder=Inbox&showUserFolders=False"><div class='icon iconContacts'></div>Contacts</a></div></div></div>
236
+
237
+
238
+ <div class="navItemMyFolders">
239
+ <a href="foo" onclick="changeShowUserFolders(true); return false;" title="Show all of your folders">
240
+ <div class="twisty twistyClosed">
241
+ <img src="http://o.aolcdn.com/cdn.webmail.aol.com/34865/aim/en-us/images/space.gif" />
242
+ </div>
243
+ <div class="myFoldersLabel nobr">
244
+ <h2 class="plain">My Folders</h2>
245
+ </div>
246
+ </a>
247
+ <span class="manageFolders wsLink nobr"><a href="Folders.aspx" >Manage Folders</a></span>
248
+ </div>
249
+
250
+
251
+
252
+ <script>
253
+ axs.keyreg("control+alt+a",aol.wsl.fAutoClick,{des:"Contacts",args:[{sId:"contactsLnk"}]});
254
+ axs.keyreg("control+alt+i",aol.wsl.fAutoClick,{des:"Go to Inbox Folder View",args:[{sId:"inboxLnk"}]});
255
+ axs.keyreg("control+alt+m",aol.wsl.fAutoClick,{des:"Check Mail",args:[{sId:"checkMailBtn"}]});
256
+ axs.keyreg("control+alt+n",aol.wsl.fAutoClick,{des:"Compose",args:[{sId:"writeMailBtn"}]});
257
+ axs.keyreg("control+alt+o",aol.wsl.fAutoClick,{des:"Go to Sent Folder View",args:[{sId:"sentFolderLnk"}]});
258
+ </script>
259
+ </div>
260
+ <div class=swAds>
261
+
262
+ <div class="swAd1">
263
+ <script type="text/javascript">
264
+ adsDisableTacoda();
265
+ adSetType("I");
266
+ adSetTarget('_blank');
267
+ htmlAdWH(93210708, 160, 40);
268
+ </script>
269
+ </div>
270
+
271
+ </div>
272
+ </div>
273
+ </td>
274
+ <td class="tblMainArea" id="tblMainArea">
275
+
276
+
277
+
278
+ <div class=omniDiv>
279
+ <script type="text/javascript">
280
+ var s_account = "aolaimmail,aolsvc";
281
+ </script>
282
+
283
+ <!-- In Omniture H code, the file inclusion has to come first -->
284
+ <script type="text/javascript" src="http://o.aolcdn.com/cdn.webmail.aol.com/34865/js/external/OmniUniH.js"></script>
285
+
286
+ <script type="text/javascript">
287
+ if (!window.s_265) s_265 = s;
288
+
289
+ s_265.channel = "aim.mail";
290
+ s_265.pageName = "Contact List";
291
+ s_265.pfxID = "wml";
292
+ s_265.prop1 = "WebSuite Basic";
293
+ s_265.prop2 = "Contacts";
294
+ var idx = document.location.href.indexOf("?");
295
+ s_265.prop12 = (idx == -1) ? document.location.href : document.location.href.substring(0, idx);
296
+ var s_code = s_265.t();
297
+ if (s_code) document.write(s_code);
298
+ </script>
299
+ </div>
300
+
301
+
302
+ <div class="contactList">
303
+ <form id="contactListForm" enctype="multipart/form-data" method="post" action="http://webmail.aol.com/34865/aim/en-us/Lite/ContactList.aspx" accept-charset="UTF-8">
304
+
305
+ <div class="toolbar"><div class="basicControls"><input type="submit" name="NewContact" value="New Contact" id="newContactBtn1" title="New Contact Button" tabindex="-1"/><input type="submit" name="NewList" value="New List" id="newListBtn1" title="New List Button" tabindex="-1"/><input type="submit" name="Import" value="Import" title="Import Button" tabindex="-1"/><input type="submit" name="DeleteContacts" value="Delete" id="deleteContactsBtn1" title="Delete Button" tabindex="-1" onclick="return deleteConfirmation('Are you sure you want to delete the selected contacts?');" disabled="disabled" /><input type="submit" name="SendEmail" id="sendEmailBtn1" title="Send Email Button" value="Email" tabindex="-1"/><input type="button" onclick="ProcessCommand('2','An error occurred while processing your command.','The selection is incorrect.','An unspecified error has occurred.','\n\nIf this problem continues, please see our technical support information at ','No contacts are selected. Please select one or more contacts before using this command.','','http://webmail.aol.com/34865/aim/en-us/Lite/','ULKLrUelQ2');" class="toolbarType" name="messageAction" value="Print" tabindex="-1"></div><div class="toolbarRight"><div style="display:inline;float:left; margin-top:3px;"><span class="showLabel">View:</span><select name ="categoryFilter" class="categoryFilterSelect" title="Category Filter Select" tabindex="-1"/><option value = "All">All</option><option value = "Auto-Added">Auto-Added</option><option value = "Co-Workers">Co-Workers</option><option value = "Family">Family</option><option value = "Friends">Friends</option><option value = "Uncategorized">Uncategorized</option></select><input type="submit" title="Filter Submit Button" tabindex="-1" name="filterSubmitButton" value="Go" onclick="categoryFilterSubmit();"/></div><div style="display:inline;float:right;"><select disabled="disabled" name="pageJumpTo" title="PageJumpTo Select" tabindex="-1"><option class="disabled">Page 1 of 1</option></select><input style="margin-right:5px;" type="submit" title="PageJumpTo Submit Button" tabindex="-1"name="pageJumpAction" value="Go" disabled="disabled"/><img class="prevButtonDisabled" src="http://o.aolcdn.com/cdn.webmail.aol.com/34865/aim/en-us/images/space.gif" id="prevBtn1" title="Previous Button" tabindex="-1"/><img class="nextButtonDisabled" src="http://o.aolcdn.com/cdn.webmail.aol.com/34865/aim/en-us/images/space.gif" id="nextBtn1" title="Next Button" tabindex="-1"/></div></div><div style="clear:both;"></div></div>
306
+
307
+ <h1 id=main class=SROnly><a name=main>Contacts</a></h1>
308
+
309
+
310
+
311
+ <table width="100%" class="contactListTable" border="0" cellpadding="0" cellspacing="0">
312
+ <tr><th class="contactCheckCol"><input class="selectAllCB" type="checkbox" name="selectAllCB" onclick="aol.wsl.fContactsSelectAll();"/></th><th class="contactNameCol sortedColumn"><div class="contactNameHeader" onclick="sort('contactListForm','AB_SORT_ASCENDING','AB_SORT_BY_NAME');"><a href="#" class="contactNameHeaderLabel" onclick="sort('contactListForm','AB_SORT_ASCENDING','AB_SORT_BY_NAME');">Name</a></div><div class="sortAscending"></div></th><th class="contactEmailCol"><a href="#" class="contactEmailHeaderLabel" onclick="sort('contactListForm','AB_SORT_DESCENDING','AB_SORT_BY_EMAIL');">Email</a></th><th class="contactPhoneCol"><div class="headerLabel">Phone</div></th><th class="contactEditColSmall"><img src="http://o.aolcdn.com/cdn.webmail.aol.com/34865/aim/en-us/images/space.gif" width="35" height="1"></th></tr>
313
+
314
+ <tr><td class="contactCheck"><input type="checkbox" name="mailto_select" onclick="aol.wsl.fContactsSelectCheckbox(this);" value="1" id="contact_1"/><label for="contact_1"><span class="SROnly">Joe User joe.user</span></label></td>
315
+ <td class="contactName" id="1"><a href="#" id="1" onclick="detailClick('1');" class="contactNameLabel" title="Details-Contact:Joe User joe.user">Joe User</a></td>
316
+ <td class="contactEmail" id="1"><a href="#" id="1" onclick="detailClick('1');" title="Details-Contact:Joe User joe.user"><span class="contactPrimaryEmailLabel">joe.user<span class="contactPrimaryEmailLabel">,</span><span class="contactOtherEmailLabel">joe.user@example.com</span></a></td><td NOWRAP class="contactPhone" id="1"><a href="#" id="1" onclick="detailClick('1');" title="Details-Contact:Joe User joe.user">(Mobile) 2063908743</a></td>
317
+ <td class="contactEdit" id="1"><a href="#" title="Edit-Contact:Joe User joe.user" id="1" onclick="editClick('1');" class="contactEditLink">Edit</a></td></tr>
318
+ <tr><td class="contactCheck"><input type="checkbox" name="mailto_select" onclick="aol.wsl.fContactsSelectCheckbox(this);" value="2" id="contact_2"/><label for="contact_2"><span class="SROnly">Jane User Jane User</span></label></td>
319
+ <td class="contactName" id="2"><a href="#" id="2" onclick="detailClick('2');" class="contactNameLabel" title="Details-Contact:Jane User Jane User">Jane User</a></td>
320
+ <td class="contactEmail" id="2"><a href="#" id="2" onclick="detailClick('2');" title="Details-Contact:Jane User Jane User"><span class="contactPrimaryEmailLabel">Jane User<span class="contactPrimaryEmailLabel">,</span><span class="contactOtherEmailLabel">jane.user@example.com</span></a></td><td NOWRAP class="contactPhone" id="2" onclick="detailClick('2');"></td>
321
+ <td class="contactEdit" id="2"><a href="#" title="Edit-Contact:Jane User Jane User" id="2" onclick="editClick('2');" class="contactEditLink">Edit</a></td></tr>
322
+
323
+ <tr><td><img alt="" src="http://o.aolcdn.com/cdn.webmail.aol.com/34865/aim/en-us/images/space.gif" width="15" height="1" /></td><td><img alt="" src="http://o.aolcdn.com/cdn.webmail.aol.com/34865/aim/en-us/images/space.gif" width="150" height="1" /></td><td><img alt="" src="http://o.aolcdn.com/cdn.webmail.aol.com/34865/aim/en-us/images/space.gif" width="1" height="1" /></td><td><img alt="" src="http://o.aolcdn.com/cdn.webmail.aol.com/34865/aim/en-us/images/space.gif" width="100" height="1" /></td><td><img alt="" src="http://o.aolcdn.com/cdn.webmail.aol.com/34865/aim/en-us/images/space.gif" width="45" height="1"/>
324
+
325
+ <!-- suppresses the padding of hidden form elements -->
326
+ <div style="display:none;">
327
+ <input type="hidden" name="folder" value="" />
328
+ <input type="hidden" id="searchCriteria" name="searchCriteria" value="" />
329
+ <input type="hidden" id="categoryFilterName" name="categoryFilterName" value="" />
330
+ <input type="hidden" id="pageView" name="pageView" value="normal" />
331
+ <input type="hidden" id="pageAction" name="pageAction" value="" />
332
+ <input type="hidden" id="contactUID" name="contactUID" value="" />
333
+ <input type="hidden" id="cancelBackTo" name="cancelBackTo" value="" />
334
+ <input type="hidden" id="startContact" name="startContact" value="1" />
335
+ <input type="hidden" id="previousStartContact" name="previousStartContact" value="0" />
336
+ <input type="hidden" id="nextStartContact" name="nextStartContact" value="0" />
337
+ <input type="hidden" id="paginationAction" name="paginationAction" value="" />
338
+ <input type="hidden" id="contactNameSortDir" name="contactNameSortDir" value="AB_SORT_ASCENDING" />
339
+ <input type="hidden" id="emailSortDir" name="emailSortDir" value="AB_SORT_DESCENDING" />
340
+ <input type="hidden" id="sortBy" name="sortBy" value="AB_SORT_BY_NAME" />
341
+ <input type="hidden" name="user" value="ULKLrUelQ2" />
342
+ </div>
343
+ </td></tr>
344
+ </table>
345
+
346
+ <div class="toolbarLower"><div class="basicControls"><input type="submit" name="NewContact" value="New Contact" id="newContactBtn" title="New Contact Button"/><input type="submit" name="NewList" value="New List" id="newListBtn" title="New List Button"/><input type="submit" name="Import" value="Import" title="Import Button"/><input type="submit" name="DeleteContacts" value="Delete" id="deleteContactsBtn" title="Delete Button" onclick="return deleteConfirmation('Are you sure you want to delete the selected contacts?');" disabled="disabled" /><input type="submit" name="SendEmail" id="sendEmailBtn" title="Send Email Button" value="Email"/><input type="button" onclick="ProcessCommand('2','An error occurred while processing your command.','The selection is incorrect.','An unspecified error has occurred.','\n\nIf this problem continues, please see our technical support information at ','No contacts are selected. Please select one or more contacts before using this command.','','http://webmail.aol.com/34865/aim/en-us/Lite/','ULKLrUelQ2');" class="toolbarType" name="messageAction" value="Print"></div><div class="toolbarRight"><div style="display:inline;float:left; margin-top:3px;"><span class="showLabel">View:</span><select name ="categoryFilter" class="categoryFilterSelect" title="Category Filter Select"/><option value = "All">All</option><option value = "Auto-Added">Auto-Added</option><option value = "Co-Workers">Co-Workers</option><option value = "Family">Family</option><option value = "Friends">Friends</option><option value = "Uncategorized">Uncategorized</option></select><input type="submit" title="Filter Submit Button" name="filterSubmitButton" value="Go" onclick="categoryFilterSubmit();"/></div><div style="display:inline;float:right;"><select disabled="disabled" name="pageJumpTo" title="PageJumpTo Select"><option class="disabled">Page 1 of 1</option></select><input style="margin-right:5px;" type="submit" title="PageJumpTo Submit Button"name="pageJumpAction" value="Go" disabled="disabled"/><img class="prevButtonDisabled" src="http://o.aolcdn.com/cdn.webmail.aol.com/34865/aim/en-us/images/space.gif" id="prevBtn" title="Previous Button"/><img class="nextButtonDisabled" src="http://o.aolcdn.com/cdn.webmail.aol.com/34865/aim/en-us/images/space.gif" id="nextBtn" title="Next Button"/></div></div><div style="clear:both;"></div></div>
347
+
348
+ </form>
349
+ </div>
350
+
351
+
352
+
353
+ <script>
354
+ axs.keyreg("control+alt+d",aol.wsl.fAutoClick,{des:"Delete Button",args:[{sId:"deleteContactsBtn"}]});
355
+ axs.keyreg("control+alt+s",aol.wsl.fAutoClick,{des:"Send Email Button",args:[{sId:"sendEmailBtn"}]});
356
+ axs.keyreg("control+alt+pagedown",aol.wsl.fAutoClick,{des:"Previous",args:[{sId:"prevBtn"}]});
357
+ axs.keyreg("control+alt+pageup",aol.wsl.fAutoClick,{des:"Next",args:[{sId:"nextBtn"}]});
358
+ </script>
359
+
360
+
361
+
362
+
363
+ </td>
364
+
365
+ </tr>
366
+ <tr><td colspan=2>
367
+
368
+
369
+ <div class="footer_container">
370
+ <table align="center"><tbody><tr width=100%><td><ul class="hatLinks links"><li><a href="http://webmail.aol.com/34865/aim/en-us/Lite/Today.aspx?AccessibilityRedirect=true" title="Click here for the accessible version">Accessible Version</a></li><li><a target="_blank" href="http://www.aol.com/aolnetwork/aolcom_terms.html">Terms of Service</a></li><li><a target="_blank" href="http://about.aol.com/aolnetwork/mem_commitments">Privacy Policy</a></li><li class=last><a target="_blank" href="http://www.aol.com/aolnetwork/trademarks.html">Trademarks</a></li></ul></td></tr></tbody></table>
371
+ <div class="copyright">&copy; 2008 AOL LLC. All Rights Reserved</div>
372
+ <script>
373
+ axs.l10n.keycap_summary = "This table describes the shortcut keys implemented on this page.";
374
+ axs.l10n.keycap_caption = "Key combinations and the actions they invoke.";
375
+ axs.l10n.keycap_combo = "Key Combination";
376
+ axs.l10n.keycap_act = "Action";
377
+ axs.l10n.keycap_keyshow = "Show or hide the keyboard shortcuts table";
378
+ axs.l10n.keycap_linkshow = "Click this link to show or hide the keyboard shortcuts table.";
379
+ aol.wsl.afRunAtLoad.push(function() {
380
+ // Disable the XML/Accessibility feature for the Sony browser.
381
+ if (navigator.userAgent.indexOf("Sony/COM2") === -1)
382
+ axs.keychart();
383
+ });
384
+ if ((typeof aol != 'undefined') && aol && aol.wsl && aol.wsl.fFocusPerUri) { aol.wsl.fFocusPerUri(); }
385
+ </script>
386
+ </div>
387
+ </td></tr>
388
+ </table>
389
+
390
+
391
+ <iframe id="CheckNewMessagesFrame" height=1 style="visibility:hidden;" src=''></iframe>
392
+ <script>
393
+ function updateCheckNewMessagesFrame() {
394
+ var CheckNewMessagesFrame = document.getElementById("CheckNewMessagesFrame");
395
+ if (CheckNewMessagesFrame) {
396
+ CheckNewMessagesFrame.src = 'http://webmail.aol.com/34865/aim/en-us/common/rpc/RPC.aspx?user=ULKLrUelQ2&automatic=true&dojo.transport=iframe&requests=[{"stateToken":"-1","action":"CheckNewMessages"}]]';
397
+ }
398
+ }
399
+ setInterval(updateCheckNewMessagesFrame, 120000);
400
+ </script>
401
+
402
+
403
+ <script>
404
+
405
+ function onloadFunctions() {
406
+ try {
407
+
408
+ aol && aol.wsl && aol.wsl.fRunAllOnloads && aol.wsl.fRunAllOnloads();
409
+ } catch (ex) {
410
+ //DEBUG alert('Exception in onloadFunctions(): '+ex);
411
+ }
412
+ }
413
+
414
+ function setMessageCounts(InboxCount, DraftsCount, SpamCount) {
415
+ var InboxCountSpan = document.getElementById("InboxCount");
416
+ if (InboxCountSpan != null && InboxCount != -1) {InboxCountSpan.innerHTML = "&nbsp;(" + InboxCount + ")";}
417
+ var DraftsCountSpan = document.getElementById("DraftsCount");
418
+ if (DraftsCountSpan != null && DraftsCount != -1) {DraftsCountSpan.innerHTML = "&nbsp;(" + DraftsCount + ")";}
419
+ var SpamCountSpan = document.getElementById("SpamCount");
420
+ if (SpamCountSpan != null && SpamCount != -1) {SpamCountSpan.innerHTML = "&nbsp;(" + SpamCount + ")";}
421
+
422
+
423
+ }
424
+ </script>
425
+
426
+
427
+ <iframe height=1 style="visibility:hidden;" src='MailCounts.aspx'></iframe>
428
+
429
+
430
+ </body>
431
+ </html>
@@ -51,7 +51,7 @@ class TestBlackbookImporterAol < Test::Unit::TestCase
51
51
 
52
52
  body = load_fixture('aol_login_response_stage_5.html').join
53
53
  page = WWW::Mechanize::Page.new(uri=nil, response, body, code=nil, mech=nil)
54
- @importer.agent.expects(:get).with('http://webmail.aol.com/31361/aol/en-us/Suite.aspx').once.returns(page)
54
+ @importer.agent.expects(:get).with('/31361/aim/en-us/Lite/Today.aspx').once.returns(page)
55
55
 
56
56
  assert_nothing_raised do
57
57
  assert @importer.login
@@ -88,10 +88,14 @@ class TestBlackbookImporterAol < Test::Unit::TestCase
88
88
  @importer.agent.expects(:cookies).once.returns([cookie])
89
89
 
90
90
  response = {'content-type' => 'text/html'}
91
- body = load_fixture('aol_contacts.html').join
91
+ body = load_fixture('aol_application_page.html').join
92
92
  page = WWW::Mechanize::Page.new(uri=nil, response, body, code=nil, mech=nil)
93
- @importer.agent.expects(:get).with(
94
- 'http://webmail.aol.com/aim/en-us/Lite/addresslist-print.aspx?command=all&sort=FirstLastNick&sortDir=Ascending&nameFormat=FirstLastNick&user=blackbookuid'
93
+ @importer.agent.expects(:current_page).once.returns(page)
94
+
95
+ response = {'content-type' => 'text/html'}
96
+ body = load_fixture('aol_new_contacts.html').join
97
+ page = WWW::Mechanize::Page.new(uri=nil, response, body, code=nil, mech=nil)
98
+ @importer.agent.expects(:get).with('http://webmail.aol.com/34865/aim/en-us/Lite/ContactList.aspx'
95
99
  ).once.returns(page)
96
100
 
97
101
  assert_nothing_raised do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blackbook
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Contentfree
@@ -30,7 +30,7 @@ cert_chain:
30
30
  q8SfeAt4oNk4pWm9Ocmiww==
31
31
  -----END CERTIFICATE-----
32
32
 
33
- date: 2008-02-20 00:00:00 -08:00
33
+ date: 2008-02-27 00:00:00 -08:00
34
34
  default_executable:
35
35
  dependencies:
36
36
  - !ruby/object:Gem::Dependency
@@ -75,6 +75,7 @@ files:
75
75
  - Manifest.txt
76
76
  - README.txt
77
77
  - Rakefile
78
+ - debug_blackbook.rb
78
79
  - init.rb
79
80
  - lib/blackbook.rb
80
81
  - lib/blackbook/exporter/base.rb
@@ -87,6 +88,7 @@ files:
87
88
  - lib/blackbook/importer/hotmail.rb
88
89
  - lib/blackbook/importer/page_scraper.rb
89
90
  - lib/blackbook/importer/yahoo.rb
91
+ - test/fixtures/aol_application_page.html
90
92
  - test/fixtures/aol_bad_login_response_stage_3.html
91
93
  - test/fixtures/aol_contacts.html
92
94
  - test/fixtures/aol_login_response_stage_1.html
@@ -94,6 +96,7 @@ files:
94
96
  - test/fixtures/aol_login_response_stage_3.html
95
97
  - test/fixtures/aol_login_response_stage_4.html
96
98
  - test/fixtures/aol_login_response_stage_5.html
99
+ - test/fixtures/aol_new_contacts.html
97
100
  - test/fixtures/gmail.csv
98
101
  - test/fixtures/gmail_bad_login_response_stage_2.html
99
102
  - test/fixtures/gmail_contacts.html
metadata.gz.sig CHANGED
Binary file