<!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="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>
