WordPress.org

GlotPress

Ticket #14: glotpress-profile-3.2.patch

File glotpress-profile-3.2.patch, 10.2 KB (added by joostdevalk, 3 years ago)

Patch #4

  • css/style.css

     
    538538} 
    539539span.or-cancel { 
    540540        font-size: 0.85em; 
     541} 
     542table.form-table th { 
     543        text-align: left; 
     544        vertical-align: text-top; 
     545} 
     546table.form-table th, table.form-table td { 
     547        padding: 10px 0 0 0; 
    541548} 
     549 No newline at end of file 
  • gp-templates/profile.php

     
     1<?php  
     2gp_title( __('Profile &lt; GlotPress') ); 
     3gp_breadcrumb( array( __('Profile') ) ); 
     4gp_tmpl_header(); 
     5 
     6$per_page = GP::$user->get_meta('per_page'); 
     7if ( 0 == $per_page ) 
     8        $per_page = 15; 
     9         
     10$default_sort = GP::$user->get_meta('default_sort'); 
     11if ( ! is_array($default_sort) ) { 
     12        $default_sort = array( 
     13                'by' => 'priority', 
     14                'how' => 'DESC' 
     15        ); 
     16} 
     17?> 
     18<h2><?php _e( "Profile" ); ?></h2> 
     19<form method="post"> 
     20        <table class="form-table"> 
     21                <tr> 
     22                        <th><label for="per_page"><?php _e( "Number of items per page:" ); ?></label></th> 
     23                        <td><input type="number" id="per_page" name="per_page" value="<?php echo $per_page ?>"/></td> 
     24                </tr> 
     25                <tr> 
     26                        <th><label for="default_sort[by]"><?php _e("Default Sort By:") ?></label></th> 
     27                        <td><?php echo gp_radio_buttons('default_sort[by]', 
     28                array( 
     29                        'original_date_added' => __('Date added (original)'), 
     30                        'translation_date_added' => __('Date added (translation)'), 
     31                        'original' => __('Original string'), 
     32                        'translation' => __('Translation'), 
     33                        'priority' => __('Priority'), 
     34                        'references' => __('Filename in source'), 
     35                        'random' => __('Random'), 
     36                ), gp_array_get( $default_sort, 'by', 'priority' ) ); ?></td> 
     37                </tr> 
     38                <tr> 
     39                        <th><label for="default_sort[how]"><?php _e("Default Sort Order:") ?></label></th> 
     40                        <td><?php echo gp_radio_buttons('default_sort[how]', 
     41                                array( 
     42                                        'asc' => __('Ascending'), 
     43                                        'desc' => __('Descending'), 
     44                                ), gp_array_get( $default_sort, 'how', 'desc' ) ); 
     45                        ?></td> 
     46                </tr> 
     47        </table> 
     48        <br> 
     49        <input type="submit" name="submit" value="<?php _e("Change Settings"); ?>"> 
     50</form> 
     51 No newline at end of file 
  • gp-templates/translations.php

     
    9393        <dl class="filters-expanded sort hidden clearfix"> 
    9494                <dt><?php _e('By:'); ?></dt> 
    9595                <dd> 
    96                 <?php echo gp_radio_buttons('sort[by]', 
     96                <?php  
     97                $default_sort = GP::$user->get_meta('default_sort'); 
     98                if ( ! is_array($default_sort) ) { 
     99                        $default_sort = array( 
     100                                'by' => 'priority', 
     101                                'how' => 'desc' 
     102                        ); 
     103                }  
     104                 
     105                echo gp_radio_buttons('sort[by]', 
    97106                        array( 
    98107                                'original_date_added' => __('Date added (original)'), 
    99108                                'translation_date_added' => __('Date added (translation)'), 
     
    102111                                'priority' => __('Priority'), 
    103112                                'references' => __('Filename in source'), 
    104113                                'random' => __('Random'), 
    105                         ), gp_array_get( $sort, 'by', 'priority' ) ); 
     114                        ), gp_array_get( $sort, 'by', $default_sort['by'] ) ); 
    106115                ?> 
    107116                </dd> 
    108                 <dt><?php _e('How:'); ?></dt> 
     117                <dt><?php _e('Order:'); ?></dt> 
    109118                <dd> 
    110119                <?php echo gp_radio_buttons('sort[how]', 
    111120                        array( 
    112121                                'asc' => __('Ascending'), 
    113122                                'desc' => __('Descending'), 
    114                         ), gp_array_get( $sort, 'how', 'desc' ) ); 
     123                        ), gp_array_get( $sort, 'how', $default_sort['how'] ) ); 
    115124                ?> 
    116125                </dd> 
    117126                <dd><input type="submit" value="<?php echo esc_attr(__('Sort')); ?>" name="sorts" /></dd> 
  • gp-templates/header.php

     
    2222                        if (GP::$user->logged_in()): 
    2323                                $user = GP::$user->current(); 
    2424                                 
    25                                 printf( __('Hi, %s.'), $user->user_login ); 
     25                                printf( __('Hi, %s.'), '<a href="'.gp_url( '/profile' ).'">'.$user->user_login.'</a>' ); 
    2626                                ?> 
    2727                                <a href="<?php echo gp_url('/logout')?>"><?php _e('Log out'); ?></a> 
    2828                        <?php else: ?> 
  • gp-includes/routes/translation.php

     
    6767                if ( 'random' == gp_array_get( $sort, 'by') ) { 
    6868                        add_filter( 'gp_pagination', create_function( '$html', 'return "";' ) ); 
    6969                } 
     70 
     71                $per_page = GP::$user->get_meta('per_page'); 
     72                if ( 0 == $per_page ) 
     73                        $per_page = GP::$translation->per_page; 
     74                else 
     75                        GP::$translation->per_page = $per_page; 
     76 
    7077                $translations = GP::$translation->for_translation( $project, $translation_set, $page, $filters, $sort ); 
    7178                $total_translations_count = GP::$translation->found_rows; 
    72                 $per_page = GP::$translation->per_page; 
     79                 
    7380                $can_edit = GP::$user->logged_in(); 
    7481                $can_write = $this->can( 'write', 'project', $project->id ); 
    7582                $can_approve = $this->can( 'approve', 'translation-set', $translation_set->id ); 
  • gp-includes/routes/profile.php

     
     1<?php 
     2class GP_Route_Profile extends GP_Route_Main { 
     3        function profile_get() { 
     4                if ( !GP::$user->logged_in() ) { 
     5                        $this->redirect( gp_url( '/login?redirect_to=' ).urlencode( gp_url( '/profile') ) ); 
     6                        return; 
     7                } 
     8 
     9                gp_tmpl_load( 'profile', array() ); 
     10        } 
     11 
     12        function profile_post() { 
     13                if ( isset( $_POST['submit'] ) ) { 
     14                        $per_page = (int) $_POST['per_page']; 
     15                        GP::$user->set_meta( 'per_page', $per_page ); 
     16 
     17                        $default_sort = $_POST['default_sort']; 
     18                        GP::$user->set_meta( 'default_sort', $default_sort ); 
     19                } 
     20                 
     21                $this->redirect( gp_url( '/profile' ) ); 
     22        } 
     23} 
  • gp-includes/things/translation.php

     
    7171                $sort_bys = array('original' => 'o.singular %s', 'translation' => 't.translation_0 %s', 'priority' => 'o.priority %s, o.date_added DESC', 
    7272                        'random' => 'o.priority DESC, RAND()', 'translation_date_added' => 't.date_added %s', 'original_date_added' => 'o.date_added %s', 
    7373                        'references' => 'o.references' ); 
    74                 $sort_by = gp_array_get( $sort_bys, gp_array_get( $sort, 'by' ), 'o.priority %1$s, o.date_added %1$s' ); 
     74 
     75                $default_sort = GP::$user->get_meta('default_sort'); 
     76                if ( ! is_array($default_sort) ) { 
     77                        $default_sort = array( 
     78                                'by' => 'priority', 
     79                                'how' => 'desc' 
     80                        ); 
     81                }  
     82                 
     83                $sort_by = gp_array_get( $sort_bys, gp_array_get( $sort, 'by' ),  gp_array_get( $sort_bys, $default_sort['by'] ) ); 
    7584                $sort_hows = array('asc' => 'ASC', 'desc' => 'DESC', ); 
    76                 $sort_how = gp_array_get( $sort_hows, gp_array_get( $sort, 'how' ), 'DESC' ); 
     85                $sort_how = gp_array_get( $sort_hows, gp_array_get( $sort, 'how' ), gp_array_get( $sort_hows, $default_sort['how'] ) ); 
    7786 
    7887                $where = array(); 
    7988                if ( gp_array_get( $filters, 'term' ) ) { 
     
    148157                        $where = 'AND '.$where; 
    149158                } 
    150159                 
    151                  
    152160                $join_where = implode( ' AND ', $join_where ); 
    153161                if ( $join_where ) { 
    154162                        $join_where = 'AND '.$join_where; 
    155163                } 
    156164 
    157165                $sql_sort = sprintf( $sort_by, $sort_how ); 
    158                 $limit = $this->sql_limit_for_paging( $page ); 
     166 
     167                $limit = $this->sql_limit_for_paging( $page, $this->per_page ); 
     168                 
    159169                $rows = $this->many_no_map( " 
    160170                    SELECT SQL_CALC_FOUND_ROWS t.*, o.*, t.id as id, o.id as original_id, t.status as translation_status, o.status as original_status, t.date_added as translation_added, o.date_added as original_added 
    161171                    FROM $gpdb->originals as o 
  • gp-includes/things/user.php

     
    112112        } 
    113113         
    114114        function get_meta( $key ) { 
    115                 global $wp_users_object; 
    116                 if ( !$user = $wp_users_object->get_user( $this->id ) ) { 
    117                         return; 
    118                 } 
     115                $user = $this->current(); 
    119116 
    120117                $key = gp_sanitize_meta_key( $key ); 
    121118                if ( !isset( $user->$key ) ) { 
     
    125122        } 
    126123         
    127124        function set_meta( $key, $value ) { 
    128                 return gp_update_meta( $this->id, $key, $value, 'user' ); 
     125                $user = $this->current(); 
     126                return gp_update_meta( $user->id, $key, $value, 'user' ); 
    129127        } 
    130128         
    131129        function delete_meta( $key ) { 
    132                 return gp_delete_meta( $this->id, $key, '', 'user' ); 
     130                $user = $this->current(); 
     131                return gp_delete_meta( $user->id, $key, '', 'user' ); 
    133132        } 
    134133         
    135134         
  • gp-includes/thing.php

     
    383383                $per_page = is_null( $per_page )? $this->per_page : $per_page; 
    384384                if ( 'no-limit' == $per_page || 'no-limit' == $page ) return ''; 
    385385                $page = intval( $page )? intval( $page ) : 1; 
    386                 return sprintf( "LIMIT %d OFFSET %d", $this->per_page, ($page-1)*$this->per_page ); 
     386                return sprintf( "LIMIT %d OFFSET %d", $per_page, ($page-1)*$per_page ); 
    387387        } 
    388388         
    389389        function found_rows() { 
  • gp-includes/router.php

     
    4444                        'get:/login' => array('GP_Route_Login', 'login_get'), 
    4545                        'post:/login' => array('GP_Route_Login', 'login_post'), 
    4646                        'get:/logout' => array('GP_Route_Login', 'logout'), 
     47                         
     48                        'get:/profile' => array('GP_Route_Profile', 'profile_get'), 
     49                        'post:/profile' => array('GP_Route_Profile', 'profile_post'), 
    4750 
    4851                        "get:/$project/import-originals" => array('GP_Route_Project', 'import_originals_get'), 
    4952                        "post:/$project/import-originals" => array('GP_Route_Project', 'import_originals_post'), 
  • gp-includes/meta.php

     
    1717 */ 
    1818function gp_update_meta( $object_id = 0, $meta_key, $meta_value, $type, $global = false ) { 
    1919        global $gpdb; 
    20         if ( !is_numeric( $object_id ) || empty( $object_id ) && !$global ) { 
     20 
     21        if ( !is_numeric( $object_id ) || empty( $object_id ) ) { 
    2122                return false; 
    2223        } 
    2324        $cache_object_id = $object_id = (int) $object_id;