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