<?php  	
		
	/* Required eclipse basic classes */
    require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");	
    /* Functions and modules related to Navbar objects */
    require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); 	
    /* Functions and modules related to the page top eclipse menu */
    require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); 	
    /* Functions used for display events */
    require_once($_SERVER['DOCUMENT_ROOT'] . "/mtj/events.func.php");
    
    $App 	= new App();
    /* Left Navbar */	
    $Nav	= new Nav();	
    /*  Page top eclipse menu */
    $Menu 	= new Menu();

    /* Find the _projectCommon.php file and include it */
    include($App->getProjectCommon());

	/* Begin: page-specific settings. */ 
	$pageTitle 		= "Mobile Tools for Java &nbsp; (MTJ) &nbsp; Bugs Page";
	$pageKeywords	= "mobile, tools, Java, runtime, design, framework, ";
	$pageAuthor		= "Diego Madruga Sandin";
		
    
	$html = <<<EOHTML

<div id="maincontent">
	<div id="midcolumn">
	<h1>$pageTitle</h1>
		<div class="homeitem3col">
			<h3>New Bugs</h3>
			<ul>
				<li>
					<a href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=MTJ">
						The Bugzilla Web Interface
					</a> 
					must be used to report bugs.  Please manually search
					for duplicates first.  For defects provide details on how to reproduce.  For enhancements please outline a use case.
				</li>
			</ul>
		</div> <!-- New Bugs -->
		 
		<div class="homeitem3col">
			<h3>Queries</h3>
			<ul>
				<li>
					<a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=MTJ&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_severity=blocker&bug_severity=critical&bug_severity=major&bug_severity=normal&emailtype1=substring&email1=&emailtype2=notregexp&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">
						All open bugs with severity of normal or higher
					</a> 
				</li>
				<li>
					<a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=MTJ&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_severity=minor&bug_severity=trivial&bug_severity=enhancement&emailtype1=substring&email1=&emailtype2=notregexp&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">
						All open bugs marked enhancement, minor, or trivial
					</a> 
				</li>			
			</ul>
		</div>
		<div class="homeitem3col">
            <h3>Atom Feeds</h3>
            <ul>
                <li>
                    <a href="https://bugs.eclipse.org/bugs/buglist.cgi?bug_file_loc=&bug_file_loc_type=allwordssubstr&bug_id=&bug_severity=blocker&bug_severity=critical&bug_severity=major&bug_severity=normal&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bugidtype=include&chfieldfrom=&chfieldto=Now&chfieldvalue=&email1=&email2=&emailtype1=substring&emailtype2=notregexp&field-1-0-0=product&field-1-1-0=bug_status&field-1-2-0=bug_severity&field0-0-0=noop&keywords=&keywords_type=allwords&long_desc=&long_desc_type=allwordssubstr&product=MTJ&query_format=advanced&remaction=&short_desc=&short_desc_type=allwordssubstr&status_whiteboard=&status_whiteboard_type=allwordssubstr&type-1-0-0=anyexact&type-1-1-0=anyexact&type-1-2-0=anyexact&type0-0-0=noop&value-1-0-0=MTJ&value-1-1-0=UNCONFIRMED%2CNEW%2CASSIGNED%2CREOPENED&value-1-2-0=blocker%2Ccritical%2Cmajor%2Cnormal&value0-0-0=&votes=&title=Bug%20List&ctype=atom">
                        <img src="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/images/rss_btn.gif"> All open bugs with severity of normal or higher
                    </a> 
                </li>
                <li>
                    <a href="https://bugs.eclipse.org/bugs/buglist.cgi?bug_file_loc=&bug_file_loc_type=allwordssubstr&bug_id=&bug_severity=minor&bug_severity=trivial&bug_severity=enhancement&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bugidtype=include&chfieldfrom=&chfieldto=Now&chfieldvalue=&email1=&email2=&emailtype1=substring&emailtype2=notregexp&field-1-0-0=product&field-1-1-0=bug_status&field-1-2-0=bug_severity&field0-0-0=noop&keywords=&keywords_type=allwords&long_desc=&long_desc_type=allwordssubstr&product=MTJ&query_format=advanced&remaction=&short_desc=&short_desc_type=allwordssubstr&status_whiteboard=&status_whiteboard_type=allwordssubstr&type-1-0-0=anyexact&type-1-1-0=anyexact&type-1-2-0=anyexact&type0-0-0=noop&value-1-0-0=MTJ&value-1-1-0=UNCONFIRMED%2CNEW%2CASSIGNED%2CREOPENED&value-1-2-0=minor%2Ctrivial%2Cenhancement&value0-0-0=&votes=&title=Bug%20List&ctype=atom">
                        <img src="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/images/rss_btn.gif"> All open bugs marked enhancement, minor, or trivial
                    </a> 
                </li>           
            </ul>
        </div>
	</div>	
</div>
<div id="rightcolumn">
	<div class="sideitem">
		<h6>Bug Process</h6>
		<ul>
		  	<li> See the <a href="/dsdp/mtj/development/bug_process.php">Bug Process Page</a> for more queries and information.</li>
		</ul>
	</div> <!-- sideitem -->
</div>
EOHTML;

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