Как сделать поля views редактируемыми

Модули editablefields и editview не подошли, поэтому, не придумав ничего лучше, сделал такой хак. Переопределил для view тему, заменил текстовые поля на input-ы/select-ы/checkbox-ы и добавил обработку POST:

 

views-view-table--catalog.tpl.php

$updated = false;
foreach($_POST as $k=>$v) {
    if(substr($k, 0, 4) == 'nid-') {
        $nid = $v;
        $status = $_POST['status-'.$nid] == 'on' ? 1 : 0;
        $status_old = $_POST["status-$nid-old"];
        if($status != $status_old) {
            db_query("UPDATE node SET status=$status WHERE nid=$nid");
            $updated = true;
        }
        $price = $_POST['sell_price-'.$nid];
        $price_old = $_POST["sell_price-$nid-old"];
        if($price != $price_old) {
            db_query("UPDATE uc_products SET sell_price=$price WHERE nid=$nid");
            $updated = true;
        }
        $availability = $_POST['field_availability_value-'.$nid];
        $availability_old = $_POST["field_availability_value-$nid-old"];
        if($availability_values[$availability] != $availability_old) {
            db_query("DELETE FROM content_field_availability WHERE nid=$nid");
            db_query("INSERT INTO content_field_availability (nid, vid, field_availability_value) VALUES ($nid, $nid, '$availability')");
            $updated = true;
        }
    }
}
if($updated) {
    cache_clear_all();
    drupal_set_message('Изменения сохранены');
    $p = substr($_SERVER['REQUEST_URI'], 1);
    list($path, $query) = explode('?', $p, 2);
    drupal_goto($path, $query);
}
//echo $_SERVER['REQUEST_URI'];
?>
<form method='post'>
<table class="<?php print $class; ?>">
  <?php if (!empty($title)) : ?>
    <caption><?php print $title; ?></caption>
  <?php endif; ?>
  <thead>
    <tr>
      <?php foreach ($header as $field => $label):
      if($field == 'status') {
          $label = "<input type='checkbox' id='header-status' onclick=\"
              if($('#header-status:checked').val() == 'on')
                  $('.field-status').attr('checked', 'on');
              else
                  $('.field-status').removeAttr('checked');
              \">$label";
      }
      ?>
        <th class="views-field views-field-<?php print $fields[$field]; ?>">
          <?php print $label; ?>
        </th>
      <?php endforeach; ?>
    </tr>
  </thead>
  <tbody>
    <?php foreach ($rows as $count => $row): ?>
      <tr class="<?php print implode(' ', $row_classes[$count]); ?>">
        <?php foreach ($row as $field => $content){
            $name = "$field-{$row['nid']}";
            if($field == 'nid') {
                $content .= "<input type='hidden' name='$name' value='{$row['nid']}'>";
            }
            if($field == 'status') {
                if($content == 'Да') {
                    $content = "<input name='$name' type='checkbox' class='field-status' checked='checked'>";
                    $content .= "<input name='$name-old' type='hidden' value='1'>";
                } else {
                    $content = "<input name='$name' type='checkbox' class='field-status'>";
                    $content .= "<input name='$name-old' type='hidden' value='0'>";
                }
            }
            if($field == 'sell_price') {
                  $content = "<input name='$name' value='$content' style='width:80px'><input name='$name-old' type='hidden' value='$content'>";
            }
            if($field == 'field_availability_value') {
                $current = $content;
                  $content = "<select name='$name'>";
                  foreach($availability_values as $k=>$v) {
                      if(empty($v)) continue;
                      $selected = $current == $v ? "selected" : ""; 
                      $content .= "<option $selected value='$k'>$v</option>";
                  }
                  $content .= "</select>";
                  $content .= "<input name='$name-old' type='hidden' value='$current'>";
            }
            ?>
          <td class="views-field views-field-<?php print $fields[$field]; ?>">
            <?php print $content; ?>
          </td>
        <?php } ?>
      </tr>
    <?php endforeach; ?>
  </tbody>
</table>
<input type='submit' value='Сохранить изменения'>
</form>