<!DOCTYPE HTML>
<html>
  <head>
    <title>Projects - Go Dashboard</title>
    <link rel="stylesheet" type="text/css" href="static/style.css">
    <style>
      .unapproved a.name { color: red }
      .tag { font-size: 0.8em; color: #666 }
    </style>
  </head>

  <body>
    <ul class="menu">
      <li><a href="/">Build Status</a></li>
      <li><a href="/package">Packages</a></li>
      <li>Projects</li>
      <li><a href="/benchmarks">Benchmarks</a></li>
      <li><a href="http://golang.org/">golang.org</a></li>
    </ul>

    <h1>Go Dashboard</h1>
    
    <p>
    These are external projects and not endorsed or supported by the Go project.
    </p>
    
    <h2>Projects</h2>

    <div class="submit">
    <h3>Submit a Project</h3>
    <p>
    Using this form you can submit a project to be included in the list.
    </p>
    <form action="/project" method="POST">
    <table>
      <tr><td>Name:<td><input type="text" name="name">
      <tr><td>Description:<td><input type="text" name="descr">
      <tr><td>URL:<td><input type="text" name="web_url">
      <tr><td>&nbsp;<td><input type="submit" value="Send">
      {% if submitMsg %}
      <tr><td class="msg" colspan="2">{{ submitMsg }}</td></tr>
      {% endif %}
    </table>
    </form>
    </div>

    <p>
      Filter by tag:
      {% if tag %}
       <a href="/project">all</a>
      {% else %}
       <b>all</b>
      {% endif %}
      {% for t in tags %}
        {% ifequal t tag %}
	 <b>{{t}}</b>
	{% else %}
	 <a href="?tag={{t}}">{{t}}</a>
	{% endifequal %}
      {% endfor %}
    </p>

      {% for r in projects %}
      {% ifchanged r.category %}
      {% if not forloop.first %}
      </ul>
      {% endif %}
      <h3>{{r.category}}</h3>
      <ul>
      {% endifchanged %}
	<li{% if not r.approved %} class="unapproved"{% endif %}>
	  {% if admin %}[<a href="/project/edit?name={{r.name}}">edit</a>]{% endif %}
	  <a class="name" href="{{r.web_url}}">{{r.name}}</a> - {{r.descr}}
	{% for tag in r.tags %}
	<span class="tag">{{tag}}</span>
	{% endfor %}
	</li>
      {% if forloop.last %}
      </ul>
      {% endif %}
      {% endfor %}
    </ul>


  </body>
</html>
