mypackage_wrt/ForumPostForm.js
author nithyar
Wed, 25 Aug 2010 17:05:15 +0100
changeset 60 eeb963985c97
parent 44 48bcd0bbc1ab
permissions -rwxr-xr-x
week33 integration plan, tools and SMP plan updates
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
42
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     1
// ////////////////////////////////////////////////////////////////////////////
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     2
// Symbian Foundation Example Code
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     3
//
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     4
// This software is in the public domain. No copyright is claimed, and you 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     5
// may use it for any purpose without license from the Symbian Foundation.
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     6
// No warranty for any purpose is expressed or implied by the authors or
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     7
// the Symbian Foundation. 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     8
// ////////////////////////////////////////////////////////////////////////////
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     9
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    10
var allowRetry = true;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    11
function ForumPostForm(aParentView, forumid) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    12
	ListView.prototype.init.call(this, null, null);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    13
	this.previousView = aParentView;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    14
	this.forumid = forumid;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    15
	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    16
	// add the banner / 'title bar' - avoids the caption bug
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    17
	var titleBar = new NavigationButton(null, "titlebar.png", "New thread in " + aParentView.feedName);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    18
	titleBar.setEnabled(false);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    19
	this.addControl(titleBar);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    20
	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    21
	// add topic name textfield
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    22
	this.topicNameTf = new TextField('threadPostTopic', "Topic title", "");
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    23
	this.addControl(this.topicNameTf);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    24
	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    25
	// add content textarea
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    26
	this.contentTa = new TextArea('threadPostContent', "Message", "", 6);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    27
	this.addControl(this.contentTa);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    28
	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    29
	var self = this;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    30
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    31
    // post button
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    32
    this.postButton = new FormButton(null, "Submit");
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    33
    this.postButton.addEventListener("ActionPerformed", function(){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    34
		isHideNotifications = false;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    35
		login( function(){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    36
			submitNewTopic(
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    37
				self.topicNameTf.getText(), // title
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    38
				self.contentTa.getText(), // message
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    39
				self.forumid, // forumid
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    40
				function() { self.goBack();uiManager.currentView.update(true);}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    41
				);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    42
			});
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    43
		});
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    44
    this.addControl(this.postButton);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    45
    
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    46
    // cancel settings button
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    47
    this.cancelButton = new FormButton(null, "Cancel");
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    48
    this.cancelButton.addEventListener("ActionPerformed", function(){self.goBack();});
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    49
    this.addControl(this.cancelButton);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    50
	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    51
}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    52
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    53
ForumPostForm.prototype = new ListView(null, null);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    54
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    55
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    56
function ForumReplyForm(aParentView, threadid, postid, parentTitle) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    57
	ListView.prototype.init.call(this, null, null);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    58
	this.previousView = aParentView;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    59
	this.threadid = threadid;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    60
	this.postid = postid;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    61
	this.parentTitle = parentTitle;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    62
	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    63
	// add the banner / 'title bar' - avoids the caption bug
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    64
	var titleBar = new NavigationButton(null, "titlebar.png", "Reply to " + parentTitle);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    65
	titleBar.setEnabled(false);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    66
	this.addControl(titleBar);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    67
	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    68
	// add topic name textfield
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    69
	this.topicNameTf = new TextField('threadPostTopic', "Title", "");
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    70
	this.addControl(this.topicNameTf);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    71
	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    72
	// add content textarea
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    73
	this.contentTa = new TextArea('threadPostContent', "Message", "", 6);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    74
	this.addControl(this.contentTa);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    75
	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    76
	var self = this;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    77
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    78
    // post button
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    79
    this.postButton = new FormButton(null, "Submit");
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    80
    this.postButton.addEventListener("ActionPerformed", function(){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    81
		isHideNotifications = false;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    82
		login(
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    83
		function(){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    84
			submitNewReply(self.topicNameTf.getText(), // title
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    85
			 self.contentTa.getText(), // message
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    86
			 self.threadid, // threadid
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    87
			 self.postid, // threadid
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    88
			 function(){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    89
				self.goBack();
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    90
				uiManager.currentView.update(true);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    91
			});
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    92
		});
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    93
	});
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    94
    this.addControl(this.postButton);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    95
    
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    96
    // cancel settings button
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    97
    this.cancelButton = new FormButton(null, "Cancel");
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    98
    this.cancelButton.addEventListener("ActionPerformed", function(){self.goBack();});
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    99
    this.addControl(this.cancelButton);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   100
	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   101
}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   102
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   103
ForumReplyForm.prototype = new ListView(null, null);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   104
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   105
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   106
// Submitting a new to vBulletin is somewhat complex. There appears to be
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   107
// no XML based interface so we have to go through the usual web posting
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   108
// procedure. So, first we must be logged in. Then, we must request forums
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   109
// home page to get bbsessionhash cookie. Next, we request the form,
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   110
// to collect required security information (securitytoken etc) from the form.
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   111
// If all goes well, we can now post a message.
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   112
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   113
var submitUrlContent = null;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   114
var submitUrlHttpReq = null;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   115
var submitCallback = null;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   116
var submitTitle = null;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   117
var submitContent = null;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   118
var submitForumId = null;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   119
var submitThreadId = null;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   120
var submitPostId = null;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   121
var submitCallback = null;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   122
var reply = false;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   123
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   124
// Initiates the submission process by requesting the form
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   125
function submitNewTopic(title, content, forumid, callback){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   126
	uiManager.showNotification(-1, "wait", "Submitting...", -1);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   127
	isHideNotifications = false;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   128
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   129
	// Dealing with vBulletin nastiness...
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   130
	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   131
	// ensure we have all the cookies we need
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   132
	var vbCookieGet = new Ajax();
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   133
	var vburl = symbianOrgBaseUrl + "/forum/";
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   134
	vbCookieGet.open('GET', vburl, false);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   135
	vbCookieGet.send(null);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   136
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   137
	// Now we have to harvest some info from the post form. 	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   138
	submitUrlHttpReq = new Ajax();
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   139
	var self = this;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   140
	submitTitle = title;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   141
	submitContent = content;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   142
	submitForumId = forumid;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   143
	submitThreadId = null;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   144
	submitPostId = null;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   145
	submitCallback = callback;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   146
    submitUrlHttpReq.onreadystatechange = submitFormReady;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   147
	reply = false;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   148
	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   149
	var url = symbianOrgBaseUrl + "/forum/newthread.php?do=newthread&f=" + forumid;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   150
	submitUrlHttpReq.open('GET', url, true);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   151
	submitUrlHttpReq.send(null);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   152
}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   153
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   154
// Initiates the submission process by requesting the form
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   155
function submitNewReply(title, content, threadid, postid, callback){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   156
	uiManager.showNotification(-1, "wait", "Submitting...", -1);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   157
	isHideNotifications = false;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   158
	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   159
	// Dealing with vBulletin nastiness...
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   160
	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   161
	// ensure we have all the cookies we need
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   162
	var vbCookieGet = new Ajax();
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   163
	var vburl = symbianOrgBaseUrl + "/forum/";
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   164
	vbCookieGet.open('GET', vburl, false);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   165
	vbCookieGet.send(null);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   166
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   167
	// Now we have to harvest some info from the post form. 	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   168
	submitUrlHttpReq = new Ajax();
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   169
	var self = this;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   170
	submitTitle = title;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   171
	submitContent = content;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   172
	submitForumId = null;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   173
	submitThreadId = threadid;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   174
	submitPostId = postid;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   175
	submitCallback = callback;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   176
    submitUrlHttpReq.onreadystatechange = submitFormReady;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   177
	reply = true;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   178
	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   179
	var url = symbianOrgBaseUrl + "/forum/newreply.php?do=newreply&noquote=1&p=" + postid;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   180
	submitUrlHttpReq.open('GET', url, true);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   181
	submitUrlHttpReq.send(null);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   182
}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   183
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   184
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   185
var forumPostHarvestString_loggedinuser = "name=\"loggedinuser\" value=\"";
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   186
var forumPostHarvestString_poststarttime = "name=\"poststarttime\" value=\"";		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   187
var forumPostHarvestString_posthash = "name=\"posthash\" value=\"";		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   188
var forumPostHarvestString_securitytoken = "name=\"securitytoken\" value=\"";		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   189
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   190
// Form has been received, extract important info
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   191
function submitFormReady(){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   192
	uiManager.showNotification(-1, "wait", "Submitting...", -1);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   193
	isHideNotifications = false;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   194
    if (submitUrlHttpReq.readyState == 4) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   195
        // attempt to get response status
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   196
        var responseStatus = null;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   197
        try {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   198
            responseStatus = submitUrlHttpReq.status;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   199
        } catch (noStatusException) {}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   200
        
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   201
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   202
		var content = submitUrlHttpReq.responseText;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   203
		checkForSecurityToken("submitFormReady", content);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   204
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   205
		// this is what we need to hardvest
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   206
		var forumPostSecurityToken, forumPostHash, forumPostStartTime, forumPostLoggedInUser;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   207
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   208
		if ( content.indexOf(forumPostHarvestString_loggedinuser) == -1 ) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   209
			uiManager.showNotification(5000, "warning", "Submit failed.");	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   210
		} else {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   211
			forumPostLoggedInUser = extractFormField(content, forumPostHarvestString_loggedinuser);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   212
			forumPostStartTime = extractFormField(content, forumPostHarvestString_poststarttime);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   213
			forumPostHash = extractFormField(content, forumPostHarvestString_posthash);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   214
			forumPostSecurityToken = extractFormField(content, forumPostHarvestString_securitytoken);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   215
			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   216
			if (forumPostSecurityToken == null || forumPostSecurityToken.length < 5) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   217
				if (!allowRetry) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   218
					uiManager.showNotification(3000, "warning", "Failed, please try again...");
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   219
				}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   220
				else {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   221
				    // workaround for a vBulletin bug, restart the process...
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   222
					isHideNotifications = true;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   223
					login( function(){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   224
						if (reply) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   225
							submitNewReply(submitTitle, // title
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   226
							 submitContent, // message
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   227
							 submitThreadId, // threadid
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   228
							 submitPostId, // threadid
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   229
							 submitCallback);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   230
						}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   231
						else {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   232
							submitNewTopic(submitTitle, // title
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   233
								 submitContent, // message
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   234
								 submitForumId, // forumid
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   235
								 submitCallback);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   236
						}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   237
					});
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   238
					// avoid loop
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   239
					allowRetry = false;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   240
				}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   241
			} else {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   242
				doSubmitPost(submitTitle, submitContent, submitForumId, submitCallback, forumPostSecurityToken, forumPostHash, forumPostStartTime, forumPostLoggedInUser);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   243
			}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   244
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   245
    }
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   246
}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   247
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   248
// Send a POST request with our post information
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   249
function doSubmitPost(title, message, forumid, callback, 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   250
			forumPostSecurityToken, forumPostHash, forumPostStartTime, forumPostLoggedInUser){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   251
	uiManager.showNotification(-1, "wait", "Submitting...", -1);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   252
	isHideNotifications = false;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   253
	var url = null;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   254
	var parameters = null;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   255
	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   256
	if (reply) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   257
		// posting a reply to an article
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   258
		url = symbianOrgNewReplyUrl + "do=postreply&t=" + submitThreadId;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   259
		parameters = "title=" + title + "&message=" + message +
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   260
		"&wysiwyg=0&iconid=0&s=&securitytoken=" + forumPostSecurityToken +
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   261
		"&do=postreply" +
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   262
		"&t=" + submitThreadId + "&p=" + submitPostId + 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   263
		"&specifiedpost=0" +
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   264
		"&posthash" + forumPostHash +
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   265
		"&poststarttime=" + forumPostStartTime +
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   266
		"&loggedinuser=" + forumPostLoggedInUser +
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   267
		"&multiquoteempty=&sbutton=Submit+Reply&parseurl=1&emailupdate=9999&rating=0";
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   268
	} else {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   269
		// posting a new thread
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   270
		url = symbianOrgNewThreadUrl + "do=postthread&f=" + forumid;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   271
		parameters = "do=postthread&f=" + forumid + "&subject=" + title + "&message=" + message +
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   272
		"&wysiwyg=0&taglist=&iconid=0&s=&securitytoken=" + forumPostSecurityToken +
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   273
		"&posthash" + forumPostHash +
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   274
		"&poststarttime=" + forumPostStartTime +
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   275
		"&loggedinuser=" + forumPostLoggedInUser +
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   276
		"&sbutton=Submit+New+Thread&parseurl=1&emailupdate=9999&polloptions=4";
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   277
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   278
	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   279
	submitUrlHttpReq = new Ajax();
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   280
    submitUrlHttpReq.onreadystatechange = submitComplete;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   281
    // initiate the request
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   282
	submitUrlHttpReq.open('POST', url, true);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   283
	submitUrlHttpReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   284
	submitUrlHttpReq.setRequestHeader("Content-length", parameters.length);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   285
	submitUrlHttpReq.setRequestHeader("Connection", "close");
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   286
	submitUrlHttpReq.send(parameters);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   287
}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   288
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   289
// Response to our POST has been received, analyse the result
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   290
function submitComplete(){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   291
    if (submitUrlHttpReq.readyState == 4) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   292
		// attempt to get response status
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   293
		var responseStatus = null;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   294
		try {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   295
			responseStatus = submitUrlHttpReq.status;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   296
		} 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   297
		catch (noStatusException) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   298
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   299
		var content = submitUrlHttpReq.responseText;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   300
		if ( content.indexOf(submitTitle) == -1 ) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   301
			uiManager.showNotification(3000, "warning", "Posting failed.");	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   302
		} else {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   303
			uiManager.showNotification(3000, "warning", "Please wait...");	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   304
			if ( submitCallback != null ) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   305
				submitCallback.call();
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   306
			}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   307
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   308
	}	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   309
}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   310
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   311
// Test weather page HTML contains a login form. This is useful in
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   312
// being able to tell weather a login has been successfull, or if
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   313
// we received login prompt instead of XML at any point.
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   314
function isLoginPrompt (text) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   315
	return text.indexOf("<title>Sign in</title>") != -1;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   316
}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   317
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   318
// Stores the current view, then shows the settings dialog
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   319
// so that once settings dialog is closed, we go back to current screen
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   320
function promptForPassword() {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   321
		if (uiManager.currentView == settings) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   322
			settings.previousView = home;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   323
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   324
		else {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   325
			settings.previousView = uiManager.currentView;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   326
		}
44
48bcd0bbc1ab My package wiki v0.3 - http://developer.symbian.org/wiki/index.php/My_Package_Widget#Current_version
victorp@symbian.org
parents: 42
diff changeset
   327
		if (isHideNotifications) {
48bcd0bbc1ab My package wiki v0.3 - http://developer.symbian.org/wiki/index.php/My_Package_Widget#Current_version
victorp@symbian.org
parents: 42
diff changeset
   328
			uiManager.hideNotification();
48bcd0bbc1ab My package wiki v0.3 - http://developer.symbian.org/wiki/index.php/My_Package_Widget#Current_version
victorp@symbian.org
parents: 42
diff changeset
   329
		}
42
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   330
		settings.show();
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   331
}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   332
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   333
function extractFormField(content, harvestString){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   334
	var startind = content.indexOf(harvestString);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   335
	if ( startind == -1 ) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   336
		return null;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   337
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   338
	startind += harvestString.length;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   339
	var endind = content.indexOf("\"", startind);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   340
	return content.substring(startind, endind);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   341
}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   342
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   343
function checkForSecurityToken(where, content) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   344
//	var stpos = content.indexOf("securitytoken");
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   345
//	if ( stpos == -1 ) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   346
//		var test = content.substring(stpos , stpos + 100);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   347
//		alert("securityToken not found in " + where + " : "+ test);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   348
//	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   349
}