<tal:block metal:use-macro="templates/page/macros/frame">
<title metal:fill-slot="head_title" i18n:translate=""
 >"Your Queries" Editing - <span tal:replace="config/TRACKER_NAME"
 i18n:name="tracker" /></title>
<span metal:fill-slot="body_title" tal:omit-tag="python:1"
 i18n:translate="">"Your Queries" Editing</span>

<td class="content" metal:fill-slot="content"
    tal:define="anti_csrf_this_page python:utils.anti_csrf_nonce()" >

<span tal:condition="not:context/is_edit_ok"
 i18n:translate="">You are not allowed to edit queries.</span>

<script tal:attributes="nonce request/client/client_nonce"
        language="javascript" >
// This allows us to make the delete button an immediate action.
// The post_to_url function comes from:
//    http://stackoverflow.com/questions/133925/javascript-post-request-like-a-form-submit
function retire(qid, csrf) {
    post_to_url('query'+qid, {'@action': 'retire', '@template':'edit',
                '@csrf': csrf});
}

function restore(qid, csrf) {
    post_to_url('query'+qid, {'@action': 'restore', '@template': 'edit',
                '@csrf': csrf});
}
function post_to_url(path, params, method) {
    method = method || "post"; // Set method to post by default if not specified.

    var form = document.createElement("form");
    form.setAttribute("method", method);
    form.setAttribute("action", path);

    for(var key in params) {
        if(params.hasOwnProperty(key)) {
            var hiddenField = document.createElement("input");
            hiddenField.setAttribute("type", "hidden");
            hiddenField.setAttribute("name", key);
            hiddenField.setAttribute("value", params[key]);

            form.appendChild(hiddenField);
         }
    }

    document.body.appendChild(form);
    form.submit();
}

// note restore() is defined above but not yet used in this template.
// see classic template and integrate it.
</script>

<form method="POST" onSubmit="return submit_once()" action="query"
      enctype="multipart/form-data" tal:condition="context/is_edit_ok">

<table class="list" width="100%"
       tal:define="uid request/user/id; mine request/user/queries">

<tr><th i18n:translate="">Query</th>
    <th i18n:translate="">Include in "Your Queries"</th>
    <th i18n:translate="">Edit</th>
    <th i18n:translate="">Private to you?</th>
    <th i18n:translate="">delete/restore<br> (javascript<br>required)</th>
</tr>

<tr tal:repeat="query mine">
 <tal:block condition="query/is_retired">

 <td><a tal:attributes="href string:${query/klass}?${query/url}"
        tal:content="query/name">query</a></td>

 <td metal:define-macro="include">
  <select tal:condition="python:query.id not in mine"
          tal:attributes="name string:user${uid}@add@queries">
    <option value="" i18n:translate="">leave out</option>
    <option tal:attributes="value query/id" i18n:translate="">include</option>
  </select>
  <select tal:condition="python:query.id in mine"
          tal:attributes="name string:user${uid}@remove@queries">
    <option value="" i18n:translate="">leave in</option>
    <option tal:attributes="value query/id" i18n:translate="">remove</option>
  </select>
 </td>

 <td colspan="3" i18n:translate="">[query is retired]</td>

 <!-- <td> maybe offer "restore" some day </td> -->
 </tal:block>
</tr>

<tr tal:define="queries python:db.query.filter(filterspec={'private_for':uid})"
     tal:repeat="query queries">
 <td><a tal:attributes="href string:${query/klass}?${query/url}"
        tal:content="query/name">query</a></td>

 <td metal:use-macro="template/macros/include" />

 <td><a tal:attributes="href string:query${query/id}" i18n:translate="">edit</a></td>

 <td>
  <select tal:attributes="name string:query${query/id}@private_for">
   <option tal:attributes="selected python:query.private_for == uid;
           value uid" i18n:translate="">yes</option>
   <option tal:attributes="selected python:query.private_for == None"
           value="-1" i18n:translate="">no</option>
  </select>
 </td>

 <td>
  <input type="button" value="Delete" i18n:attributes="value"
  tal:attributes="onClick python:'''retire('%s','%s')'''%(query.id,anti_csrf_this_page)">
  </td>
</tr>

<tr tal:define="queries python:db.query.filter(filterspec={'private_for':None})"
     tal:repeat="query queries">
 <td><a tal:attributes="href string:${query/klass}?${query/url}"
        tal:content="query/name">query</a></td>

 <td metal:use-macro="template/macros/include" />

 <td colspan="3" tal:condition="query/is_edit_ok">
  <a tal:attributes="href string:query${query/id}" i18n:translate="">edit</a>
 </td>
 <td tal:condition="not:query/is_edit_ok" colspan="3"
    i18n:translate="">[not yours to edit]</td>

</tr>

<tr><td colspan="5">
   <input name="@csrf" type="hidden"
	  tal:attributes="value anti_csrf_this_page">
   <input type="hidden" name="@action" value="edit">
   <input type="hidden" name="@template" value="edit">
   <input type="submit" value="Save Selection" i18n:attributes="value">
</td></tr>

</table>

</form>
</td>
</tal:block>
