Adding an Archive button to posts page for administrators

Here is something i have used before as a solution for changing the post category (or any term/taxonomy) just make sure you set the right $post_type,$append,$taxonomy,$terms

<?php
/*
Plugin Name: Simple Ajax set cat
Plugin URI: http://en.bainternet.info
Description: dead simple lightweight plugin to add a post row action link to set a post category by ajax
Version: 0.1
Author: Bainternet
Author Email: [email protected]
License:

  Copyright 2013 Bainternet ([email protected])

  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License, version 2, as 
  published by the Free Software Foundation.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

*/
/**
* SimpleCat
* @author Ohad Raz <[email protected]>
*/
class SimpleArchive
{
    public $post_type="post";
    public $append    = false;
    public $taxonomy  = 'category';
    public $terms     = array(1); //you can change this to string of term names

    /**
     * Class constructor
     *
     * @author Ohad Raz <[email protected]>
     * @since 0.1
     * @param array $args optional for feuture
     */
    function __construct($args = array()){
        //add row action link
        add_filter('post_row_actions',array($this,'_action_row'), 10, 2);
        //add javascript fp ajax call
        add_action('admin_footer-edit.php',array($this,'addJS'));
        //ajax function
        add_action('wp_ajax_setToCat', array($this,'ajaxSetToCat'));
    }
    /**
     * adds an action link to post listing row
     * @author Ohad Raz <[email protected]>
     * @since 0.1
     * @param  array  $actions row actions
     * @param  onject $post    Post object
     * @return array modified actions
     */
    function _action_row($actions, $post){
        //check for your post type
        if ($post->post_type == $this->post_type){
            $actions['archive'] = '<a href="#" class="move_TO_CAT" data-pid="'.$post->ID.'">'.__('Archive').'</a>';
        }
        return $actions;
    }

    /**
     * Adds the javascript magic to make the ajax request
     * 
     * @author Ohad Raz <[email protected]>
     * @since 0.1
     * @return void
     */
    function addJS(){
        wp_enqueue_script( 'jquery');
        ?>
         <div id="status_update_working" style="background-color: green; color: #fff; font-wieght: bolder;   font-size: 22px;   height: 33px;   left: 40%;   padding: 35px;   position: fixed;   top: 100px;   width: 350px; display:none !important; "><?php _e('Changing status...'); ?></div>
        <script type="text/javascript">
        jQuery(document).ready(function($){
            function ajaxSetCat(p){
                jQuery("#status_update_working").show('fast');
                jQuery.getJSON(ajaxurl,
                    {   pid: p.attr("data-pid"),
                        action: "setToCat",
                        _nonce: "<?php echo wp_create_nonce('setToCat'); ?>"
                    },
                    function(data) {
                        if (data.error){
                            alert(data.error);
                        }else{
                             alert(data.text);
                        }
                    }
                );
                jQuery("#status_update_working").hide('9500');
            }
            $('.move_TO_CAT').click(function(){
                ajaxSetCat($(this))
            });
        });
        </script>
        <?php

    }

    /**
     * ajax callback function to actually set the category
     * 
     * @author Ohad Raz <[email protected]>
     * @since 0.1
     * @return void
     */
    function ajaxSetToCat(){
        //minor validation
        if (!isset($_GET['pid']) || ! wp_verify_nonce($_GET['_nonce'], 'setToCat')){
            $re['error'] = __('something went wrong ...');
            echo json_encode($re);
            die();
        }
        $results = wp_set_post_terms( intval($_GET['pid']), $this->terms, $this->taxonomy, $this->append );
        if ( is_wp_error( $results ) ){
            $re['error'] = __('something went wrong ...') ." ". $results->get_error_message();
        }elseif($results === false || !is_array($results)){
            $re['error'] = __('something went wrong ...');
        }else{
            $re['text'] = __('Set to cat successful');
        }
        echo json_encode($re);
        die();
    }
}//end class
new SimpleArchive();