/lenasys/trunk

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/lenasys/trunk
1 by Henrik G.
First seed of Lenasys ... Needs to be Organized Further
1
<?php
11.5.1 by a11vikob
Fixed hopefully everything in Bug #1164597
2
/* function menulayout
3
 * Takes 6 arguments and outputs a HTML navigation menu
4
* $forwardLink = link to "next page", i.e. "nextPage.html"
5
* $backwardLink = link to "previous page", i.e. "previousPage.html"
6
* $downloadLink = link to download source file, on download button, i.e. "sourceFile.txt"
7
* headingLink = link in heading, i.e. "sourceFile.txt"
8
* fileContent = file containing info in the left panel, i.e. "panelContent.txt"
9
*/
10
function menulayout($forwardLink, $backwardLink, $downloadLink, $heading, $headingLink, $fileContent) {
11
	if($backwardLink != "") {
12
		$backwardButton = "<a href='".$backwardLink."'><img src='../media/codeviewer/CodeViewerLeftbutton.png'></a>";
13
	} else {
14
		$backwardButton = "<img src='../media/codeviewer/CodeViewerLeftbuttonGrayed.png'>";
15
	}
16
17
	if($forwardLink != "") {
18
		$forwardButton = "<a href='".$forwardLink."'><img src='../media/codeviewer/CodeViewerRightbutton.png'></a>";
19
	} else {
20
		$forwardButton = "<img src='../media/codeviewer/CodeViewerLeftbuttonGrayed.png'>";
21
	}
22
23
	if($downloadLink != "") {
24
		$downloadButton = "<a href='".$downloadLink."'><img src='../media/codeviewer/CodeViewerDownloadbutton.png'></a>";
25
	} else {
26
		$downloadButton = "<img src='../media/codeviewer/CodeViewerLeftbuttonGrayed.png'>";
27
	}
28
29
	echo '<body onload="resize();" onresize="resize();">
9.4.1 by elof.bigestans at gmail
* Re-structured according to new folder structure - moved media out, moved things in /Codeviewer/Codeviewer to /Codeviewer
30
			<div class="Topmenu">
31
				<table style="width:100%;height:100%;border:solid 1px;">
4.9.5 by elof.bigestans at gmail
Added comments to functions in showcode.php
32
					<tr>
33
						<td class="buttonstyle">
9.4.1 by elof.bigestans at gmail
* Re-structured according to new folder structure - moved media out, moved things in /Codeviewer/Codeviewer to /Codeviewer
34
							'. $backwardButton .'
35
						</td>
36
						<td class="buttonstyle">
37
							'. $forwardButton .'
38
						</td>
39
						<td class="buttonstyle">
40
							<a href="../Lindex.html"><img src="../media/codeviewer/CodeViewerRightbutton.png"></a>
4.9.6 by elof.bigestans at gmail
Cleaned up showcode.php, function menulayout()
41
						</td>
42
						<td class="verticalaligntext">
11.5.1 by a11vikob
Fixed hopefully everything in Bug #1164597
43
							<a href="'. $headingLink .'" style="text-decoration: none">'. $heading .'</a>
4.9.6 by elof.bigestans at gmail
Cleaned up showcode.php, function menulayout()
44
						</td>
9.4.1 by elof.bigestans at gmail
* Re-structured according to new folder structure - moved media out, moved things in /Codeviewer/Codeviewer to /Codeviewer
45
						<td class="buttonstyle">
46
							'. $downloadButton .'
4.9.6 by elof.bigestans at gmail
Cleaned up showcode.php, function menulayout()
47
						</td>
48
					</tr>
49
				</table>
50
			</div>
51
			<div id="bottom" class="restContainer">
52
				<div style="float: left;">
9.4.1 by elof.bigestans at gmail
* Re-structured according to new folder structure - moved media out, moved things in /Codeviewer/Codeviewer to /Codeviewer
53
					<div id="panel" class="panel" onmousemove="resizepanel(event)" onmousedown="mdpanel(event)" onmouseup="mupanel(event)">';
11.5.1 by a11vikob
Fixed hopefully everything in Bug #1164597
54
						include($fileContent);
55
				echo '</div>
56
				</div>
57
			<div class="codecontent">';
58
}
59
60
/* function menulayoutend
61
 * Outputs ending tags in HTML
62
*/
63
function menulayoutEnd() {
64
	echo '</div>
65
		</div>
66
		<div style="clear: both;">
67
		</div>
68
	</body>';
69
}
70
71
/* function showfile
72
 * Outputs html with syntax highlighting.
73
* Takes 4 arguments_
74
* interestingRows: array containing arrays, each with 3 set values -- start line number, end line number, comment
75
* keywords: array containing keywords
76
* highlight: array containing arrays, each with two values - string to highlight, and HTML class to apply to highlight */
77
function showfile($interestingRows, $keywords, $highlight, $fileName) {
78
	echo "<pre>";
79
	$handle = @fopen($fileName, "r");
80
	if ($handle) {
81
82
		$lineNumber = 1;
83
		$commentKind = 0;
84
		$commentOn = 0;
85
86
		while (($buffer = fgets($handle, 4096)) !== false) {
87
			$buffer = str_replace("\n", "", $buffer);
88
			$buffer = str_replace("\r", "", $buffer);
89
			$buffer = str_pad($buffer, 150, " ", STR_PAD_RIGHT);
90
			$buffer = str_replace("&", "&amp;", $buffer);
91
			$buffer = str_replace("<", "&lt;", $buffer);
92
			$buffer = str_replace(">", "&gt;", $buffer);
93
			$buffer = str_replace("\t", "&nbsp;", $buffer);
94
95
			$interesting = 0;
96
			$startspan = 0;
97
			foreach($interestingRows as $row) {
98
				if($lineNumber >= $row[0] && $lineNumber <= $row[1]) {
99
					$interesting = true;
100
				}
101
			}
102
103
			foreach($keywords as $keyword) {
104
				if($interesting) {
105
					$buffer = str_replace($keyword,"<span class='keywordinteresting'>".$keyword."</span>", $buffer);
4.9.4 by elof.bigestans at gmail
Cleaned up showcode.php -- Fixed spacing between operators and variable declarations
106
				} else {
11.5.1 by a11vikob
Fixed hopefully everything in Bug #1164597
107
					$buffer = str_replace($keyword,"<span class='keyword'>".$keyword."</span>", $buffer);
108
				}
109
			}
110
111
			// Detect comments - 0 == No comment 1 == Line comment 2 == Start Comment 3 == End Comment
112
			$commentKind = 0;
113
			$commentPos = strpos($buffer,"/*");
114
115
			if($commentPos >= 0) {
116
				$subby = substr($buffer, $commentPos+2, 1);
117
			} else {
118
				$subby = "Foo";
119
			}
120
121
			if($commentPos && $subby != '"') {
122
				$commentKind = 2;
123
				$commentOn = 1;
124
			}
125
126
			$commentPos = strpos($buffer, "*/");
127
128
			if($commentPos) {
129
				$commentKind = 3;
130
				$commentOn = 0;
131
			}
132
133
			$commentPos=strpos($buffer, "//");
134
135
			if($commentPos) {
136
				$commentKind = 1;
137
				$commentOn = 0;
138
			}
139
140
			foreach($highlight as $highlightkeyword) {
141
				$foundpos = strpos($buffer, $highlightkeyword[0]);
142
143
				// If line comment and keyword before comment marker
144
				if(($foundpos <= $commentPos && ($commentKind == 1 || $commentKind == 2)) || ($commentKind == 0) || ($foundpos > $commentPos && $commentKind == 3)) {
145
					if(!($commentKind == 0 && $commentOn == 1)) {
146
						$buffer = str_replace($highlightkeyword[0], "<span class='".$highlightkeyword[1]."'>".$highlightkeyword[0]."</span>", $buffer);
147
					}
148
				}
149
150
			}
151
152
			// echo $commentKind.$commentOn;
153
			if($commentKind > 0) {
154
				if($commentKind == 1) {
155
					$buffer = str_replace("//","<span class='commented'>//", $buffer);
156
					$buffer .= "</span>";
157
				}
158
				if($commentKind == 2) {
159
					$buffer=str_replace("/*","<span class='commented'>/*", $buffer);
160
				}
161
				if($commentKind == 3) {
162
					$buffer=str_replace("*/","*/</span>", $buffer);
163
				}
164
			}
165
166
			$linenostr = $lineNumber;
167
			$linenostr = str_pad($linenostr, 3, " ", STR_PAD_RIGHT);
168
169
			if($interesting) {
170
				echo "<span class='interesting'>";
171
				echo "<span class='linenointeresting'>".$linenostr."</span>&nbsp;";
172
				$startspan = 1;
173
			} else {
174
				echo "<span class='lineno'>".$linenostr."</span>&nbsp;";
175
			}
176
177
			echo $buffer;
178
179
			if($startspan) {
180
				echo "</span>";
181
			}
182
183
			$lineNumber++;
184
			echo "<br>";
185
		}
186
		if (!feof($handle)) {
187
			echo "Error: unexpected fgets() fail\n";
188
		}
189
		fclose($handle);
1 by Henrik G.
First seed of Lenasys ... Needs to be Organized Further
190
	}
11.5.1 by a11vikob
Fixed hopefully everything in Bug #1164597
191
	echo "</pre>";
192
}
1 by Henrik G.
First seed of Lenasys ... Needs to be Organized Further
193
?>