<?php  																														require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); 	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); 	$App 	= new App();	$Nav	= new Nav();	$Menu 	= new Menu();		include($App->getProjectCommon());    # All on the same line to unclutter the user's desktop'
	$pageTitle 		= "SMILA - Newsgroup";
	$pageKeywords	= "SMILA, Unified Information Access Architecture, unstructured information management, information logistics, semantic web, framework, platform, eclipse";
	$pageAuthor		= "Igor Novakovic";
		
	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML

	<div id="midcolumn">
		<h1>Newsgroup</h1>
		<p>
		    <b>The SMILA newsgroup is the main forum for user questions and support.</b>
		</p>
		<p>
			Chances are your question has already been answered in the newsgroup. Therefore, before posting a 
			question to the newsgroup, please <a href="http://dev.eclipse.org/newslists/news.eclipse.rt.smila/maillist.html">
			browse</a> or <a href="http://www.eclipse.org/search/search.cgi?cmd=Search%21&form=extended&wf=574a74&ps=10&m=all&t=5&ul=%2Fnewslists%2Fnews.eclipse.rt.smila&wm=wrd&t=News&t=Mail">  
			search</a> the newsgroup archives online. To post a question, you have to <a href="http://www.eclipse.org/newsgroups/register.php">
			require a password</a> first.
		</p>
		<p>
			Frequently asked questions in the newsgroup will ultimately end up in the 
			<a href="http://wiki.eclipse.org/SMILA/FAQ">FAQ</a>. Feel free to contribute!
		</p>
		<p>
			Although eclipse.org offers a <a href="http://www.eclipse.org/newsportal/thread.php?group=eclipse.rt.smila">
			web user interface for news</a>, we suggest you to use a newsreader, such as e.g.
			<a href="http://www.mozilla.org/products/thunderbird/" target="_out">Mozilla Thunderbird</a>. 
		</p>

		<div class="homeitem3col">
			<h3>Newsgroup links</h3>
			<ul>
               	<li>
					<a href="http://www.eclipse.org/search/search.cgi?cmd=Search%21&form=extended&wf=574a74&ps=10&m=all&t=5&ul=%2Fnewslists%2Fnews.eclipse.rt.smila&wm=wrd&t=News&t=Mail">
					Newsgroup search</a>
               	</li>
               	<li>
					<a href="http://www.eclipse.org/newsportal/thread.php?group=eclipse.rt.smila">
					Newsgroup web user interface</a>  
               	</li>
               	<li>
					<a href="http://dev.eclipse.org/newslists/news.eclipse.rt.smila/maillist.html">
					Newsgroup archive</a>
               	</li>
               	<li>
					<a href="http://dev.eclipse.org/newslists/news.eclipse.technology.eilf/maillist.html">
					Newsgroup OLD archive</a> (Old news during the proposal phase.)
               	</li>
               	<li>
					<a href="news://news.eclipse.org/eclipse.rt.smila">
					NNTP (news://)</a>
                </li>
			</ul>
		</div>
	</div>
	  
EOHTML;

	include('rightColumn.php');
	$html .= $rightColumn;

	# Generate the web page
	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
