mypackage_wrt/Wiki.js
author nithyar
Tue, 13 Jul 2010 12:02:22 +0100
changeset 57 c6348ed5ec7f
parent 42 20be4dd42b12
permissions -rwxr-xr-x
wk 27 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 resultsPerPage = 30;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    11
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    12
var wikiSearchBaseUrl = symbianOrgBaseUrl + "/wiki/api.php?format=xml&action=query&list=search&srsearch=";
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    13
var wikiSearchOffsetQueryPart = "&sroffset=";
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    14
var wikiSearchLimitQueryPart = "&srlimit=";
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    15
var wikiSearchWhatQueryPart = "&srwhat=";
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    16
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    17
var wikiViewPageUrlBase = symbianOrgBaseUrl + "/wiki/index.php?title=";
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    18
var wikiPrintableParam = "&printable=yes";
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    19
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    20
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    21
//var wikiListCategoriesUrl = symbianOrgBaseUrl + "/wiki/api.php?format=xml&action=query&list=allcategories&aclimit=500&acprop=size";
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    22
//var wikiWatchListUrl = "http://en.wikipedia.org/w/api.php?action=query&list=watchlist&wlallrev&wlprop=ids|title|timestamp|user|comment";
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    23
//var wikiWatchListFeed = "/wiki/api.php?action=feedwatchlist&feedformat=rss";
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    24
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    25
var wikiSearchOptions = [
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    26
    { value: "title", text: "Search in title only" },
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    27
    { value: "text", text: "Full text search" },
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    28
];
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    29
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    30
function WikiHome (parent) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    31
	ListView.prototype.init.call(this, null, createCaption("Symbian Wiki"));	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    32
	this.previousView = parent;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    33
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    34
	this.wikiMainPageButton = new NavigationButton(1, "right.gif", "Browse: Main page");
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    35
	this.wikiSearchButton = new FormButton(null, "Search");
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    36
	this.wikiSearchSelection = new SelectionList(null, null, wikiSearchOptions, false, wikiSearchOptions[0]);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    37
	this.wikiSearchString = new TextField('wikiSearchString', null, "");
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    38
	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    39
	var self = this;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    40
	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    41
	this.wikiMainPageButton.addEventListener("ActionPerformed", function(){wikiBrowse("Main Page");});
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    42
	this.wikiSearchButton.addEventListener("ActionPerformed", function(){self.search(0);});
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.wikiMainPageButton);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    45
	this.addControl(new Label(null, "Search Wiki", null));
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    46
	this.addControl(this.wikiSearchString);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    47
	this.addControl(this.wikiSearchSelection);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    48
	this.addControl(this.wikiSearchButton);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    49
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    50
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    51
//	wikiBrowseButton = new NavigationButton(1, "right.gif", "Browse categories");
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    52
//	wikiBrowseButton.addEventListener("ActionPerformed", function(){browseWikiCategories.show();});
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    53
//	this.addControl(wikiBrowseButton);
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
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    57
WikiHome.prototype = new ListView(null, null);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    58
WikiHome.prototype.wikiMainPageButton = null;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    59
WikiHome.prototype.wikiSearchButton = null;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    60
WikiHome.prototype.wikiSearchString = null;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    61
WikiHome.prototype.wikiSearchSelection = null;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    62
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    63
var lastWikiSearchWasFrom = 0;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    64
var lastWikiSearchResultCountWas = 0;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    65
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    66
WikiHome.prototype.search = function(from) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    67
	lastWikiSearchWasFrom = from;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    68
	var srstring = this.wikiSearchString.getText();
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    69
    var selectedTitleOrText = this.wikiSearchSelection.getSelected();
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    70
    var titleOrText = (selectedTitleOrText != null) ? selectedTitleOrText.value : "title";
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    71
	var url = this.formSearchUrl( srstring , from, resultsPerPage, titleOrText );
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    72
	var reader = new RssReader("Wiki: " + srstring, url, new WikiFeedPresenter(null), this, wikiResponseParser);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    73
	reader.show();
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    74
}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    75
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    76
WikiHome.prototype.formSearchUrl = function(query, offset, limit, what) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    77
	var buf = wikiSearchBaseUrl + query
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    78
	if (offset > 0) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    79
		buf += wikiSearchOffsetQueryPart + offset;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    80
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    81
	buf += wikiSearchLimitQueryPart + limit
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    82
	buf += wikiSearchWhatQueryPart + what;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    83
	return buf;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    84
}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    85
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    86
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    87
// /////////////////////////////////////////////////////////////////////////////
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    88
// RssReader customisations
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    89
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    90
// response parser for forum groups
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    91
function wikiResponseParser(broker, responseStatus, xmlDoc) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    92
    if (responseStatus == 200 && xmlDoc != null) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    93
		// for compatibility with rss
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    94
		var lastModified = new Date();
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    95
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    96
        // init result items array
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    97
        var items = [];
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    98
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    99
		var elements = xmlDoc.getElementsByTagName("p");
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   100
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   101
		for (var i = 0; i < elements.length; i++) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   102
			var pagetitle = elements[i].getAttribute("title");
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   103
            items.push({ id: ""+i, title: pagetitle});
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
		lastWikiSearchResultCountWas = elements.length;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   107
        // update was completed successfully
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   108
        return { status: "ok", lastModified: lastModified, items: items };
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   109
    } else {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   110
        // update failed
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   111
        return { status: "error" };
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   112
    }
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   113
}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   114
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   115
// FeedPresenter implementation for wiki
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   116
function WikiFeedPresenter(rssreader){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   117
	if (rssreader) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   118
		this.init(rssreader);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   119
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   120
}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   121
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   122
// WikiFeedPresenter is a subclass of ButtonFeedPresenter
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   123
WikiFeedPresenter.prototype = new ButtonFeedPresenter(null);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   124
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   125
// WikiFeedPresenter "Constructor"
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   126
WikiFeedPresenter.prototype.init = function(rssreader) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   127
	ButtonFeedPresenter.prototype.init.call(this, rssreader);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   128
}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   129
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   130
// Handle the click on a specific item
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   131
WikiFeedPresenter.prototype.feedClicked = function(event){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   132
	var buttonid = event.source.id;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   133
	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   134
	if (buttonid == "Next page") {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   135
		wiki.search(lastWikiSearchWasFrom + resultsPerPage);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   136
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   137
	else if (buttonid == "Previous page") {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   138
		var from = lastWikiSearchWasFrom - resultsPerPage; 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   139
		if ( from < 0 ) from = 0;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   140
		wiki.search(from);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   141
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   142
	else {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   143
		// show article
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   144
		var title = this.items[buttonid].title;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   145
		wikiBrowse(title);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   146
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   147
}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   148
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   149
// Create and add controls to be shown before items list.
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   150
WikiFeedPresenter.prototype.addFooterItems = function(){
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   151
    var self = this;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   152
	if (lastWikiSearchResultCountWas == resultsPerPage) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   153
		var nextPageButton = new NavigationButton("Next page", "blueright.gif", "Next page");
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   154
		nextPageButton.addEventListener("ActionPerformed", function(event){ self.feedClicked(event); });
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   155
		this.rssreader.addControl(nextPageButton);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   156
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   157
	if (lastWikiSearchWasFrom > 0) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   158
		var prevPageButton = new NavigationButton("Previous page", "blueright.gif", "Previous page");
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   159
		prevPageButton.addEventListener("ActionPerformed", function(event) { self.feedClicked(event); });
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   160
		this.rssreader.addControl(prevPageButton);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   161
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   162
}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   163
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   164
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   165
// /////////////////////////////////////////////////////////////////////////////////
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   166
// Browse / view wiki pages in 'printable format'
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   167
var wikiAjax;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   168
var pageBeingShown;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   169
function wikiBrowse(page) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   170
	pageBeingShown = page;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   171
	uiManager.showNotification(-1, "wait", "Loading page...", -1);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   172
	if ( page ) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   173
		wikiAjax = new Ajax();
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   174
	    
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   175
		wikiAjax.onreadystatechange = function() { wikiPageDownloadStateChanged(); };
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   176
		
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   177
		var url = wikiViewPageUrlBase  + encodeURIComponent(page) + wikiPrintableParam; 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   178
	    // initiate the request
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   179
	    wikiAjax.open("GET", url, true);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   180
	    wikiAjax.send(null);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   181
	}
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
function wikiPageDownloadStateChanged() {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   185
    if (wikiAjax.readyState == 4) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   186
		uiManager.hideNotification();
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   187
		var html = wikiAjax.responseText;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   188
		var start = html.indexOf('<div id="bodyContent">');
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   189
		var end = findDivEnd(html, start);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   190
		var pageView = new ListView(null, createCaption(pageBeingShown));
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   191
		var container = new TextPane(null, null, modWikiLinks(html.substring(start, end)));
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   192
		pageView.addControl(container);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   193
		pageView.previousView = uiManager.currentView;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   194
		pageView.show();
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   195
		if (window.widget) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   196
			widget.setNavigationEnabled(true);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   197
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   198
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   199
}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   200
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   201
function modWikiLinks(text) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   202
	var tmp = text.replace(/ src="/g, ' src="http://developer.symbian.org');
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   203
	// images sorted. now links
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   204
	var strToLookFor = ' href="/wiki/index.php/';
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   205
	var from = 0;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   206
	var ind = tmp.indexOf(strToLookFor);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   207
	var buf ="";
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   208
	while ( ind > 0 ) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   209
		buf = buf + tmp.substring(from, ind);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   210
		// extract page name
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   211
		var ind2 = tmp.indexOf('"', ind + strToLookFor.length);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   212
		var pageName = tmp.substring(ind + strToLookFor.length, ind2);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   213
		buf += " style=\"text-decoration: underline;\" href=\"JavaScript:void(0)\" onclick=\"wikiBrowse('" + pageName + "'); return false;\"";
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   214
		from = ind2;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   215
		ind = tmp.indexOf(strToLookFor, from);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   216
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   217
	buf = buf + tmp.substring(from);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   218
	return buf; 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   219
}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   220
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   221
function findDivEnd(text, from) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   222
	var openDivCount = 1;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   223
	var divind = text.indexOf("<div", from+1);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   224
	var cdivind = text.indexOf("</div", from+1);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   225
	var pos = from;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   226
	while ( openDivCount > 0 && divind > 0 && cdivind > 0 ) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   227
		pos = Math.min(divind, cdivind);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   228
		if ( pos == divind ) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   229
			openDivCount ++;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   230
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   231
		if ( pos == cdivind ) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   232
			openDivCount --;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   233
		}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   234
		divind = text.indexOf("<div", pos+1);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   235
		cdivind = text.indexOf("</div", pos+1);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   236
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   237
	return pos;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   238
}