Go Back  FlyerTalk Forums > Miles&Points > Airlines and Mileage Programs > Southwest Airlines | Rapid Rewards
Reload this Page >

Portable DING! fix available (was Portable Ding no longer works)

Community
Wiki Posts
Search

Portable DING! fix available (was Portable Ding no longer works)

Thread Tools
 
Search this Thread
 
Old Apr 30, 2011, 8:53 am
  #1  
nsx
Moderator: Southwest Airlines, Capital One
Original Poster
Hyatt Contributor Badge
 
Join Date: Sep 1999
Location: California
Programs: WN Companion Pass, A-list preferred, Hyatt Globalist; United Club Lietime (sic) Member
Posts: 21,622
Smile Portable DING! fix available (was Portable Ding no longer works)

When it rains, it pours. On the same day that TTFs became non-portable, Ding became non-portable.

For many years FTers have been able to access our own Ding sales from any computer or mobile device. Those days now appear to be over.

This capability was never supported by Southwest, and probably not even understood by the implementers. We had an informal "don't ask, don't tell" arrangement with Southwest on this topic. Loss of the capability is therefore probably entirely accidental. My guess is that some change in Ding sale display code was included in the same release as the TTF change.

Our portable Ding URLs still reveal the sale headlines and the start and end times, so we can figure out if we will get home in time to check the sale. We just cannot see the fares and city pairs or buy a Ding ticket. Instead, we just get the dreaded Oops! "undefined error" page.

More complex techniques discovered several years ago by a curious FT member may allow us to regain access, but several steps would be needed to see a single Ding sale. Given the relatively meager benefits of Ding in recent years, such effort is probably not warranted other than for the fun of overcoming a challenge. Furthermore, Ding sales now tend to last 12 hours or more, making timely access less important than when sales lasted only 6 hours.

Looking on the bright side, Southwest is once again saving me time: I no longer need to spend 20 seconds per day checking for Ding sales at work.

Last edited by nsx; Apr 30, 2011 at 9:00 am
nsx is offline  
Old Apr 30, 2011, 9:39 am
  #2  
 
Join Date: Oct 2003
Location: Evergreen Park, IL
Posts: 1,384
Yeah, I posted how I was getting undefined errors (two days ago) and now I see I am not alone. For a bit I thought it was due to me having the oldest? version of 1.00.
OzzyOzzie is offline  
Old May 10, 2011, 10:06 pm
  #3  
Moderator, Southwest Airlines and Choice Privileges
 
Join Date: Mar 2008
Location: Central Texas
Posts: 3,036
Portable DING! isn't totally broken; the advertising URLs that appear on the portable DING! xml page still work fine.

I caught an active DING! sale today for the first time since learning about this issue. Unfortunately (or perhaps fortunately, at least for me), I had less than 15 minutes to experiment before the end of the offer. I therefore did not have enough time to try all possible solutions. Sadly, the ones I did try were not fruitful.

The cause of the problem is that DING! offer URLs no longer work without a session variable. The DING! activation URL on the xml page does not include a session variable, but when you click on an offer headline in DING! you are taken to a URL that includes a session variable as a parameter (example: disc=0:33:1294723322.957197:3909@BFB86EEF53CF71809 7EB159F208E77120A81E4E7). If you had a valid session variable you could use to modify the DING! activation URL, you could still view the DING! offers.

I tried a couple approaches to improvising a session variable, and got a variety of error messages.

I did not know whether DING! offer URLs included a session variable before this problem came up. So I did a browser history search and found that on this computer I have viewed DING! headlines at least as old as #5961974 where disc= was part of the URL. Today's DING! headline was #6330107, so it seems that disc= has been part of the headline URL via the DING! application for quite some time.

(I believe the disc= parameter on the URL line is a key part of how SWA previously ensured that DING! fares could not be purchased within swabiz. It would be interesting to see whether so much as glancing at a DING! still kills an active MySouthwest session.)
ftnoob is offline  
Old May 10, 2011, 10:32 pm
  #4  
nsx
Moderator: Southwest Airlines, Capital One
Original Poster
Hyatt Contributor Badge
 
Join Date: Sep 1999
Location: California
Programs: WN Companion Pass, A-list preferred, Hyatt Globalist; United Club Lietime (sic) Member
Posts: 21,622
Originally Posted by ftnoob
(I believe the disc= parameter on the URL line is a key part of how SWA previously ensured that DING! fares could not be purchased within swabiz. It would be interesting to see whether so much as glancing at a DING! still kills an active MySouthwest session.)
I have not mentioned it, but Ding has not killed the MySouthwest session since the RR 2.0 website rolled out. In fact, the only way to use Ding with MySouthwest is to login first, before activating Ding. Portable Ding broke some weeks after this change.
nsx is offline  
Old May 10, 2011, 10:53 pm
  #5  
Moderator, Southwest Airlines and Choice Privileges
 
Join Date: Mar 2008
Location: Central Texas
Posts: 3,036
Is that observation w/r/t viewing DING! offers via the portable DING! URL, via the DING! application, or both?
ftnoob is offline  
Old May 10, 2011, 11:21 pm
  #6  
nsx
Moderator: Southwest Airlines, Capital One
Original Poster
Hyatt Contributor Badge
 
Join Date: Sep 1999
Location: California
Programs: WN Companion Pass, A-list preferred, Hyatt Globalist; United Club Lietime (sic) Member
Posts: 21,622
Originally Posted by ftnoob
Is that observation w/r/t viewing DING! offers via the portable DING! URL, via the DING! application, or both?
Both.
nsx is offline  
Old May 13, 2011, 8:03 pm
  #7  
Moderator, Southwest Airlines and Choice Privileges
 
Join Date: Mar 2008
Location: Central Texas
Posts: 3,036
Here is the Beta 0.2 (19-Apr-2011) version of the bookmarklet that will perform the above transformation that restores usability to portable DING! URLs:
Code:
javascript:function $(a){return document.getElementsByTagName(a)}function $$(a,b,c){typeof c==="undefined"&&(c=document);typeof b==="undefined"&&(b=0);a=c.getElementsByTagName(a);return a.length<b+1?"":a[b].firstChild.data}function loadXMLDoc(a){if(window.XMLHttpRequest)xhttp=new XMLHttpRequest;else return alert("Sorry, your browser can't handle this!"),!1;xhttp.open("GET",a,!1);xhttp.send("");return xhttp.responseXML}function fnObj(a,b,c){return{attrName:a,attrVal:b,text:c}} function newNode(a){var b=document.createElementNS("http://www.w3.org/1999/xhtml",a),c;arguments.length>1&&(c=arguments[1],c.attrName.length&&c.attrVal.length&&b.setAttribute(c.attrName,c.attrVal),c.text.length&&b.appendChild(document.createTextNode(c.text)));return b}function link(a,b){return newNode("a",fnObj("href",a,b))}function nestNodes(a){for(var b=a.length-1;b>0;b--)a[b-1].appendChild(a[b])} function getDisc(){var a=window.location.toString().replace("getMessages","createSession"),a=loadXMLDoc(a);if($$("status",0,a)!=="0")alert("Unable to create session; verify installId and cksum");else return $$("disc",0,a)} function addBetaTag(){var a,b,c;a=newNode("html:div",fnObj("style","margin: 2.5em 5em; color: red; font-size: 90%; font-style: italic;",""));b=newNode("p",fnObj("style","padding: 5px;",""));c=newNode("span",fnObj("style","border: 1px solid black; padding:2px;","Caution: You are using Beta v0.2 of this script. Be sure to "));c.appendChild(link("http://www.flyertalk.com/forum/16382603-post.html","check periodically"));c.appendChild(document.createTextNode(" for an updated version.")); nestNodes([a,b,c]);return a} function showAll(){var a=$("headline"),b,c,g,f,e,d,h;if(a.length===0)alert("No messages!");else{g="&disc="+getDisc();c=newNode("ul",fnObj("style","margin:2em;",""),"");for(b=0;b<a.length;b++)f=$$("activationText",0,a[b]).replace(/(<([^>]+)>)/ig,""),e=$$("activationUrl",0,a[b]),e.length>0?($$("type",0,a[b])==="offer"?(e+=g,d=$$("activationNewDelta",0,a[b])*1,h=newNode("span",fnObj("style","margin-left:2em; font-size:80%;","Active in "+(d/60).toFixed(0)+":"+(d% 60/100).toFixed(2)*100))):d=0,nestNodes([c, newNode("li"),link(e,f)]),d>0&&nestNodes([c.lastChild,h])):nestNodes([c,newNode("li",fnObj("","",f))])}a=newNode("div");nestNodes([a,c]);nestNodes([a,addBetaTag()]);nestNodes([a,newNode("p",fnObj("style","font-size:80%; margin:2em;",document.lastModified))]);document.replaceChild(a,document.firstChild)}showAll();
Beta 0.2 is the first version that works in the CYW Add On for Firefox, and perhaps the first version compatible with GreaseMonkey as well. That means you don't have to save a bookmarklet and manually apply it every time you view your portable DING! XML getMessages response file. That could be especially important for portable devices, though I don't know how compatible those tend to be with user scripts.

I have recently learned that there are ways to run GM scripts in IE and other browsers, but this particular script uses an XML command that, at best, until recently (ever?) has not existed in IE; if it doesn't work for you and you are restricted to using IE, but can use a script add-on and would like an IE version of the script, please let me know.

Otherwise, here is what to do: Install GreaseMonkey and this script, and the script's transformation will be applied automatically with every visit to your portable DING! URL, assuming there are any Headlines. (A "No messages" alert is displayed if there are no headlines.)

To add to Firefox as a GM script, save the following code to portableDingFixer.user.js (or whatever, as long as it ends in user.js), and drag the file onto Firefox.
Code:
// ==UserScript==
// @name            Portable DING! Enhancer
// @author          wnProTips
// @namespace       http://www.flyertalk.com/forum/members/ftnoob.html
// @description     Generates session ID, creates clickable links from displayed portable DING! getMessages page
// @license         Creative Commons Attribution License
// @version	    Beta 0.2
// @include         http://ding.southwest.com/cgi-bin/systray?action=getMessages*
// @released        2011-05-17
// @updated         2011-05-19
// @compatible      Greasemonkey
// ==/UserScript==
 
/* 
 * This file is a Greasemonkey user script. To install it, you need 
 * the Firefox plugin "Greasemonkey" (URL: http://greasemonkey.mozdev.org/)
 * After you installed the extension, restart Firefox and revisit 
 * this script. Now you will see a new menu item "Install User Script"
 * in your tools menu.
 * 
 * To uninstall this script, go to your "Tools" menu and select 
 * "Manage User Scripts", then select this script from the list
 * and click uninstall :-)
 *
 * Creative Commons Attribution License (--> or Public Domain)
 * http://creativecommons.org/licenses/by/2.5/
*/
function $(a){return document.getElementsByTagName(a)}function $$(a,b,c){typeof c==="undefined"&&(c=document);typeof b==="undefined"&&(b=0);a=c.getElementsByTagName(a);return a.length<b+1?"":a[b].firstChild.data}function loadXMLDoc(a){if(window.XMLHttpRequest)xhttp=new XMLHttpRequest;else return alert("Sorry, your browser can't handle this!"),!1;xhttp.open("GET",a,!1);xhttp.send("");return xhttp.responseXML}function fnObj(a,b,c){return{attrName:a,attrVal:b,text:c}} function newNode(a){var b=document.createElementNS("http://www.w3.org/1999/xhtml",a),c;arguments.length>1&&(c=arguments[1],c.attrName.length&&c.attrVal.length&&b.setAttribute(c.attrName,c.attrVal),c.text.length&&b.appendChild(document.createTextNode(c.text)));return b}function link(a,b){return newNode("a",fnObj("href",a,b))}function nestNodes(a){for(var b=a.length-1;b>0;b--)a[b-1].appendChild(a[b])} function getDisc(){var a=window.location.toString().replace("getMessages","createSession"),a=loadXMLDoc(a);if($$("status",0,a)!=="0")alert("Unable to create session; verify installId and cksum");else return $$("disc",0,a)} function addBetaTag(){var a,b,c;a=newNode("html:div",fnObj("style","margin: 2.5em 5em; color: red; font-size: 90%; font-style: italic;",""));b=newNode("p",fnObj("style","padding: 5px;",""));c=newNode("span",fnObj("style","border: 1px solid black; padding:2px;","Caution: You are using Beta v0.2 of this script. Be sure to "));c.appendChild(link("http://www.flyertalk.com/forum/16382603-post.html","check periodically"));c.appendChild(document.createTextNode(" for an updated version.")); nestNodes([a,b,c]);return a} function showAll(){var a=$("headline"),b,c,g,f,e,d,h;if(a.length===0)alert("No messages!");else{g="&disc="+getDisc();c=newNode("ul",fnObj("style","margin:2em;",""),"");for(b=0;b<a.length;b++)f=$$("activationText",0,a[b]).replace(/(<([^>]+)>)/ig,""),e=$$("activationUrl",0,a[b]),e.length>0?($$("type",0,a[b])==="offer"?(e+=g,d=$$("activationNewDelta",0,a[b])*1,h=newNode("span",fnObj("style","margin-left:2em; font-size:80%;","Active in "+(d/60).toFixed(0)+":"+(d %60/100).toFixed(2)*100))):d=0,nestNodes([c, newNode("li"),link(e,f)]),d>0&&nestNodes([c.lastChild,h])):nestNodes([c,newNode("li",fnObj("","",f))])}a=newNode("div");nestNodes([a,c]);nestNodes([a,addBetaTag()]);nestNodes([a,newNode("p",fnObj("style","font-size:80%; margin:2em;",document.lastModified))]);document.replaceChild(a,document.firstChild)}showAll();

// you can completely copy this template, including
// the install description, have fun! :-)
This is the first time ever that yours truly has ever shared a GM script with anyone (sorry, no alpha testing, yet alone beta testing). Truth be told, it has only been a day or so since I tested my first 'Hello World' example GM user script, so go easy on me if it has problems.

What you need to do:
  • Install GreaseMonkey, if not already installed;
  • Save the script above as [something].user.js;
  • Add [something].user.js as one of your GM scripts;
  • Load your portable DING! URL as usual.
Voila! (If all goes well).

Stuck with a browser that doesn't support GreaseMonkey? Google IE greasemonkey user scripts" or similar and explore Trixie and such. No use if you can't install *anything* at work, but check it out otherwise.

Mobile device feedback specifically requested.

Last edited by ftnoob; Aug 31, 2011 at 10:45 pm
ftnoob is offline  
Old May 13, 2011, 8:03 pm
  #8  
Moderator, Southwest Airlines and Choice Privileges
 
Join Date: Mar 2008
Location: Central Texas
Posts: 3,036
The rumors of the death of portable DING!s have been greatly exaggerated!!

OK, somewhat exaggerated.

If you have used portable DING! on Firefox you know the page looks something like this:
As reported above, copying and pasting an activation URL is no longer sufficient to load a DING! offer. Applying some JavaScript, however, can transform the portable DING! display so that it includes clickable links and looks like this:


See the next post for the code.

Last edited by ftnoob; May 14, 2011 at 2:13 pm
ftnoob is offline  
Old May 14, 2011, 2:21 pm
  #9  
Moderator, Southwest Airlines and Choice Privileges
 
Join Date: Mar 2008
Location: Central Texas
Posts: 3,036
Beta v0.1 of the portable DING! transformer bookmarklet is now available for testing (see previous post).

Note that it surely doesn't work on IE through at least version 7; almost surely doesn't work on IE 8, and I have no idea about IE 9, but would guess not.

I don't have a way to test it on Opera Mini, so we need a volunteer to do that.

Big ^ and thanks to nsx for digging up a key piece of information provided to him via PM from zackr back in February, 2007! nsx also served as alpha tester, and reports that he successfully booked a flight via portable DING! on Friday.
ftnoob is offline  
Old May 14, 2011, 5:02 pm
  #10  
 
Join Date: Oct 2003
Location: Evergreen Park, IL
Posts: 1,384
Excellent!!!!

Worked using FF 4.01 on Win 7 system

^^^^^^^^^^^^^^
OzzyOzzie is offline  
Old May 14, 2011, 5:50 pm
  #11  
 
Join Date: Mar 2006
Programs: WN Rapid Rewards, Delta Skymiles
Posts: 400
Excellent news. Now if we could only get some decent Ding fares....
normalone is offline  
Old May 19, 2011, 1:49 am
  #12  
Moderator, Southwest Airlines and Choice Privileges
 
Join Date: Mar 2008
Location: Central Texas
Posts: 3,036
I won't normally bump this thread for every minor release, but it is kind of big news that I have for the first time ever created a GM script to share, and that there is now a way to automatically convert your portable DING! XML response page to clickable URLs. Check out the code in the post above and contribute feedback here.
ftnoob is offline  
Old May 23, 2011, 8:17 am
  #13  
 
Join Date: Nov 2008
Programs: southwest
Posts: 4
Portable DING! fix available (was Portable Ding no longer works)

Hello. I can't get the script to work. In this thread you say I should drag the
script into Firefox. Later on you say I should install the script. I've tried both dragging the script into firefox and adding a new script into GM. It still does not work. After I click ok on GM I get:
// ==UserScript==
// @name portableDingFixer.user.js
// @namespace C:\Documents and Settings\lkincy259\My Documents\misc\
// @include http://www.flyertalk.com/forum/newre...e=1&p=16412854
// ==/UserScript==
I've attached a screen print of the installation. [IMG]C:\Documents and Settings\lkincy259\My Documents\misc\ding.jpg[/IMG] Any suggestions?
lkincy is offline  
Old May 23, 2011, 11:59 am
  #14  
Moderator, Southwest Airlines and Choice Privileges
 
Join Date: Mar 2008
Location: Central Texas
Posts: 3,036
There are different ways to use the fix depending on your configuration. The script that starts with javascript: must be used as a bookmarklet (you have to run it every time you want to use it). The one that begins // ==UserScript== is for GreaseMonkey (causes it to run automatically every time you use it).

Do I understand correctly that you are trying to install the GreaseMonkey version? If so, something clearly went wrong, as the script source posted above says
Code:
// @namespace       http://www.flyertalk.com/forum/members/ftnoob.html
whereas the namespace line in your post reads:
Code:
// @namespace C:\Documents and Settings\lkincy259\My Documents\misc\
There are other differences just in the snippet you posted, including important ones such as a line that appears to be telling GM to run the script on a FlyerTalk page rather than on ding.southwest.com.

Are you using Firefox and GM, or another browser? (Chrome has native GM supports, IE has options such as Trixie, but I have not yet made this script compatible with IE.)

You need to save the full, unaltered GM script with a valid name (meaning: ending with .user.js). Once you have saved it you can either drag the file on to Firefox, or use the GM menus to install the script.
ftnoob is offline  
Old Sep 28, 2011, 6:29 pm
  #15  
 
Join Date: Oct 2003
Location: Evergreen Park, IL
Posts: 1,384
The bookmarklet seems to crash FF 7.0 (note to self: disable auto updates!)

Off to try the greasemonkey option.

*edit - greasemonkey also failed - must be something in that javascript command the FF 7.0 does not like.

Here is what the error report states (I xxx'ed out the installId on the URL section):
====================
AdapterDeviceID: 0046
AdapterVendorID: 8086
Add-ons: {195A3098-0BD5-4e90-AE22-BA1C540AFD1E}:3.0.1,{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}:1.3.10,{e4a8a97b-f2ed-450b-b12d-ee082ba24781}:0.9.11,{972ce4c6-7e08-4474-a285-3208198ce6fd}:7.0
AvailableVirtualMemory: 3940843520
BuildID: 20110922153450
CrashTime: 1317297267
EMCheckCompatibility: true
FramePoisonBase: 00000000f0de0000
FramePoisonSize: 65536
InstallTime: 1317253576
Notes: AdapterVendorID: 8086, AdapterDeviceID: 0046, AdapterDriverVersion: 8.15.10.2202
D2D? D2D+
DWrite? DWrite+
D3D10 Layers? D3D10 Layers+

ProductName: Firefox
ReleaseChannel: release
SecondsSinceLastCrash: 41454
StartupTime: 1317297261
SystemMemoryUsePercentage: 33
Theme: classic/1.0
Throttleable: 1
TotalVirtualMemory: 4294836224
URL: http://ding.southwest.com/cgi-bin/sy...P&version=1.00
Vendor: Mozilla
Version: 7.0
Winsock_LSP: MSAFD Tcpip [TCP/IP] : 2 : 1 : %SystemRoot%\system32\mswsock.dll
MSAFD Tcpip [UDP/IP] : 2 : 2 :
MSAFD Tcpip [RAW/IP] : 2 : 3 : %SystemRoot%\system32\mswsock.dll
MSAFD Tcpip [TCP/IPv6] : 2 : 1 :
MSAFD Tcpip [UDP/IPv6] : 2 : 2 : %SystemRoot%\system32\mswsock.dll
MSAFD Tcpip [RAW/IPv6] : 2 : 3 :
RSVP TCPv6 Service Provider : 2 : 1 : %SystemRoot%\system32\mswsock.dll
RSVP TCP Service Provider : 2 : 1 :
RSVP UDPv6 Service Provider : 2 : 2 : %SystemRoot%\system32\mswsock.dll
RSVP UDP Service Provider : 2 : 2 :

Last edited by OzzyOzzie; Sep 29, 2011 at 6:03 am
OzzyOzzie is offline  


Contact Us - Manage Preferences - Archive - Advertising - Cookie Policy - Privacy Statement - Terms of Service -

This site is owned, operated, and maintained by MH Sub I, LLC dba Internet Brands. Copyright © 2024 MH Sub I, LLC dba Internet Brands. All rights reserved. Designated trademarks are the property of their respective owners.