Ticket #14: glotpress-profile-2.patch
| File glotpress-profile-2.patch, 9.6 KB (added by joostdevalk, 20 months ago) |
|---|
-
gp-templates/profile.php
1 <?php 2 gp_title( __('Profile < GlotPress') ); 3 gp_breadcrumb( array( __('Profile') ) ); 4 gp_tmpl_header(); 5 6 $per_page = GP::$user->get_meta('per_page'); 7 if ( 0 == $per_page ) 8 $per_page = 15; 9 10 $default_sort = GP::$user->get_meta('default_sort'); 11 if ( ! 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
93 93 <dl class="filters-expanded sort hidden clearfix"> 94 94 <dt><?php _e('By:'); ?></dt> 95 95 <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]', 97 106 array( 98 107 'original_date_added' => __('Date added (original)'), 99 108 'translation_date_added' => __('Date added (translation)'), … … 102 111 'priority' => __('Priority'), 103 112 'references' => __('Filename in source'), 104 113 'random' => __('Random'), 105 ), gp_array_get( $sort, 'by', 'priority') );114 ), gp_array_get( $sort, 'by', $default_sort['by'] ) ); 106 115 ?> 107 116 </dd> 108 <dt><?php _e(' How:'); ?></dt>117 <dt><?php _e('Order:'); ?></dt> 109 118 <dd> 110 119 <?php echo gp_radio_buttons('sort[how]', 111 120 array( 112 121 'asc' => __('Ascending'), 113 122 'desc' => __('Descending'), 114 ), gp_array_get( $sort, 'how', 'desc') );123 ), gp_array_get( $sort, 'how', $default_sort['how'] ) ); 115 124 ?> 116 125 </dd> 117 126 <dd><input type="submit" value="<?php echo esc_attr(__('Sort')); ?>" name="sorts" /></dd> -
gp-templates/header.php
22 22 if (GP::$user->logged_in()): 23 23 $user = GP::$user->current(); 24 24 25 printf( __('Hi, %s.'), $user->user_login);25 printf( __('Hi, %s.'), '<a href="'.gp_url( '/profile' ).'">'.$user->user_login.'</a>' ); 26 26 ?> 27 27 <a href="<?php echo gp_url('/logout')?>"><?php _e('Log out'); ?></a> 28 28 <?php else: ?> -
gp-includes/routes/profile.php
1 <?php 2 class GP_Route_Profile extends GP_Route_Main { 3 function profile_get() { 4 gp_tmpl_load( 'profile', array() ); 5 } 6 7 function profile_post() { 8 if ( isset( $_POST['submit'] ) ) { 9 $per_page = (int) $_POST['per_page']; 10 GP::$user->set_meta( 'per_page', $per_page ); 11 12 $default_sort = $_POST['default_sort']; 13 GP::$user->set_meta( 'default_sort', $default_sort ); 14 } 15 16 $this->redirect( gp_url( '/profile' ) ); 17 } 18 } -
gp-includes/things/translation.php
71 71 $sort_bys = array('original' => 'o.singular %s', 'translation' => 't.translation_0 %s', 'priority' => 'o.priority %s, o.date_added DESC', 72 72 'random' => 'o.priority DESC, RAND()', 'translation_date_added' => 't.date_added %s', 'original_date_added' => 'o.date_added %s', 73 73 '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'] ) ); 75 84 $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'] ) ); 77 86 78 87 $where = array(); 79 88 if ( gp_array_get( $filters, 'term' ) ) { … … 116 125 $where[] = 'o.priority > -2'; 117 126 } 118 127 128 $status = gp_array_get( $filters, 'status', 'current_or_waiting_or_fuzzy' ); 129 $statuses = explode( '_or_', $status ); 119 130 $join_where = array(); 120 $status = gp_array_get( $filters, 'status', 'current_or_waiting_or_fuzzy' );121 131 $all_in = true; 122 $statuses = explode( '_or_', $status );132 123 133 foreach( $statuses as $single_status ) { 124 134 if ( !in_array( $single_status, $this->get_static( 'statuses' ) ) ) { 125 135 $all_in = false; 126 136 break; 127 } 137 } 128 138 } 139 129 140 if ( $all_in ) { 130 141 $statuses_where = array(); 131 142 foreach( $statuses as $single_status ) { … … 142 153 $where[] = $statuses_where; 143 154 } 144 155 } 145 156 146 157 $where = implode( ' AND ', $where ); 147 158 if ( $where ) { 148 159 $where = 'AND '.$where; 149 160 } 150 161 151 152 162 $join_where = implode( ' AND ', $join_where ); 153 163 if ( $join_where ) { 154 164 $join_where = 'AND '.$join_where; 155 165 } 156 166 157 167 $sql_sort = sprintf( $sort_by, $sort_how ); 158 $limit = $this->sql_limit_for_paging( $page ); 168 169 $per_page = GP::$user->get_meta('per_page'); 170 if ( 0 == $per_page ) 171 $per_page = $this->per_page; 172 173 $limit = $this->sql_limit_for_paging( $page, $per_page ); 174 159 175 $rows = $this->many_no_map( " 160 176 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 161 177 FROM $gpdb->originals as o -
gp-includes/things/user.php
112 112 } 113 113 114 114 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(); 119 116 120 117 $key = gp_sanitize_meta_key( $key ); 121 118 if ( !isset( $user->$key ) ) { … … 125 122 } 126 123 127 124 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' ); 129 127 } 130 128 131 129 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' ); 133 132 } 134 133 135 134 -
gp-includes/thing.php
383 383 $per_page = is_null( $per_page )? $this->per_page : $per_page; 384 384 if ( 'no-limit' == $per_page || 'no-limit' == $page ) return ''; 385 385 $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 ); 387 387 } 388 388 389 389 function found_rows() { -
gp-includes/router.php
44 44 'get:/login' => array('GP_Route_Login', 'login_get'), 45 45 'post:/login' => array('GP_Route_Login', 'login_post'), 46 46 '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'), 47 50 48 51 "get:/$project/import-originals" => array('GP_Route_Project', 'import_originals_get'), 49 52 "post:/$project/import-originals" => array('GP_Route_Project', 'import_originals_post'), -
gp-includes/meta.php
17 17 */ 18 18 function gp_update_meta( $object_id = 0, $meta_key, $meta_value, $type, $global = false ) { 19 19 global $gpdb; 20 if ( !is_numeric( $object_id ) || empty( $object_id ) && !$global ) { 20 21 if ( !is_numeric( $object_id ) || empty( $object_id ) ) { 21 22 return false; 22 23 } 23 24 $cache_object_id = $object_id = (int) $object_id;
