1 Commits
Author SHA1 Message Date
biztechc 9024922290 tagging version 4.1.0 2024-12-26 13:13:41 +00:00
2 changed files with 283 additions and 267 deletions
+6 -2
View File
@@ -2,8 +2,8 @@
Contributors: biztechc Contributors: biztechc
Tags: WP jQuery DataTable, jQuery, jQuery DataTable, Table ,DataTable Tags: WP jQuery DataTable, jQuery, jQuery DataTable, Table ,DataTable
Requires at least: 3.6.1 Requires at least: 3.6.1
Tested up to: 6.1.1 Tested up to: 6.7.1
Stable tag: 4.0.1 Stable tag: 4.1.0
License: GPLv2 or later License: GPLv2 or later
Features can be settings to meet your exact needs for your table implementations. like Paging,Ordering,search, etc... Features can be settings to meet your exact needs for your table implementations. like Paging,Ordering,search, etc...
@@ -68,6 +68,10 @@ Is this plugin prepared for multisites? Yes.
== Changelog == == Changelog ==
= 4.1.0 =
* Compatibility with WordPress version 6.7.1
* Vulnerability Fix
= 4.0.1 = = 4.0.1 =
* Compatibility with WordPress version 6.1.1 * Compatibility with WordPress version 6.1.1
+60 -48
View File
@@ -1,15 +1,17 @@
<?php <?php
/** /**
* Plugin Name: WP jQuery DataTable * Plugin Name: WP jQuery DataTable
* Description: Features can be settings to meet your exact needs for your table implementations. like Paging,Ordering,Searching, etc... * Description: Features can be settings to meet your exact needs for your table implementations. like Paging,Ordering,Searching, etc...
* Author: biztechc * Author: biztechc
* Author URI: https://www.appjetty.com/ * Author URI: https://www.appjetty.com/
* Version: 4.0.1 * Version: 4.1.0
* WordPress Tested up to: 6.1.1 * WordPress Tested up to: 6.7.1
*/ */
register_activation_hook(__FILE__, 'wp_jdt_activate_plugin'); register_activation_hook(__FILE__, 'wp_jdt_activate_plugin');
function wp_jdt_activate_plugin() { function wp_jdt_activate_plugin()
{
$fields = array( $fields = array(
'wp_jdt_info', 'wp_jdt_info',
@@ -44,7 +46,8 @@ function wp_jdt_activate_plugin() {
} }
add_action('admin_menu', 'wp_jdt_create_menu'); add_action('admin_menu', 'wp_jdt_create_menu');
function wp_jdt_create_menu(){ function wp_jdt_create_menu()
{
//create admin side menu //create admin side menu
add_menu_page(__('WP jQuery DataTable Settings'), __('WP jQuery DataTable'), 'administrator', 'wp-jdt', 'wp_jdt_settings_page'); add_menu_page(__('WP jQuery DataTable Settings'), __('WP jQuery DataTable'), 'administrator', 'wp-jdt', 'wp_jdt_settings_page');
@@ -53,7 +56,8 @@ function wp_jdt_create_menu(){
add_action('admin_init', 'wp_jdt_settings'); add_action('admin_init', 'wp_jdt_settings');
} }
function wp_jdt_settings(){ function wp_jdt_settings()
{
//register our settings //register our settings
register_setting('wp-jdt-settings-group', 'wp_jdt_info'); register_setting('wp-jdt-settings-group', 'wp_jdt_info');
register_setting('wp-jdt-settings-group', 'wp_jdt_paging'); register_setting('wp-jdt-settings-group', 'wp_jdt_paging');
@@ -66,7 +70,8 @@ function wp_jdt_settings(){
register_setting('wp-jdt-settings-group', 'wp_jdt_searching'); register_setting('wp-jdt-settings-group', 'wp_jdt_searching');
} }
function wp_jdt_settings_page(){ function wp_jdt_settings_page()
{
// Admin side page options // Admin side page options
$wp_jdt_info = get_option('wp_jdt_info'); $wp_jdt_info = get_option('wp_jdt_info');
$wp_jdt_paging = get_option('wp_jdt_paging'); $wp_jdt_paging = get_option('wp_jdt_paging');
@@ -95,8 +100,7 @@ function wp_jdt_settings_page(){
<label title="<?php _e('Yes'); ?>"><input type="radio" checked="checked" value="true" name="wp_jdt_info"> <span><?php _e('Yes'); ?></span></label><br> <label title="<?php _e('Yes'); ?>"><input type="radio" checked="checked" value="true" name="wp_jdt_info"> <span><?php _e('Yes'); ?></span></label><br>
<label title="<?php _e('No'); ?>"><input type="radio" value="false" name="wp_jdt_info"> <span><?php _e('No'); ?></span></label><br> <label title="<?php _e('No'); ?>"><input type="radio" value="false" name="wp_jdt_info"> <span><?php _e('No'); ?></span></label><br>
<?php <?php
} } else {
else {
?> ?>
<label title="<?php _e('Yes'); ?>"><input type="radio" value="true" name="wp_jdt_info"> <span><?php _e('Yes'); ?></span></label><br> <label title="<?php _e('Yes'); ?>"><input type="radio" value="true" name="wp_jdt_info"> <span><?php _e('Yes'); ?></span></label><br>
<label title="<?php _e('No'); ?>"><input type="radio" checked="checked" value="false" name="wp_jdt_info"> <span><?php _e('No'); ?></span></label><br> <label title="<?php _e('No'); ?>"><input type="radio" checked="checked" value="false" name="wp_jdt_info"> <span><?php _e('No'); ?></span></label><br>
@@ -117,8 +121,7 @@ function wp_jdt_settings_page(){
<label title="<?php _e('Yes'); ?>"><input type="radio" checked="checked" value="true" name="wp_jdt_paging"> <span><?php _e('Yes'); ?></span></label><br> <label title="<?php _e('Yes'); ?>"><input type="radio" checked="checked" value="true" name="wp_jdt_paging"> <span><?php _e('Yes'); ?></span></label><br>
<label title="<?php _e('No'); ?>"><input type="radio" value="false" name="wp_jdt_paging"> <span><?php _e('No'); ?></span></label><br> <label title="<?php _e('No'); ?>"><input type="radio" value="false" name="wp_jdt_paging"> <span><?php _e('No'); ?></span></label><br>
<?php <?php
} } else {
else {
?> ?>
<label title="<?php _e('Yes'); ?>"><input type="radio" value="true" name="wp_jdt_paging"> <span><?php _e('Yes'); ?></span></label><br> <label title="<?php _e('Yes'); ?>"><input type="radio" value="true" name="wp_jdt_paging"> <span><?php _e('Yes'); ?></span></label><br>
<label title="<?php _e('No'); ?>"><input type="radio" checked="checked" value="false" name="wp_jdt_paging"> <span><?php _e('No'); ?></span></label><br> <label title="<?php _e('No'); ?>"><input type="radio" checked="checked" value="false" name="wp_jdt_paging"> <span><?php _e('No'); ?></span></label><br>
@@ -141,24 +144,21 @@ function wp_jdt_settings_page(){
<label title="<?php _e('Full'); ?>"><input type="radio" value="full" name="wp_jdt_paging_type"> <span><?php _e('Full'); ?></span></label><br> <label title="<?php _e('Full'); ?>"><input type="radio" value="full" name="wp_jdt_paging_type"> <span><?php _e('Full'); ?></span></label><br>
<label title="<?php _e('Full Numbers'); ?>"><input type="radio" checked="checked" value="full_numbers" name="wp_jdt_paging_type"> <span><?php _e('Full Numbers'); ?></span></label><br> <label title="<?php _e('Full Numbers'); ?>"><input type="radio" checked="checked" value="full_numbers" name="wp_jdt_paging_type"> <span><?php _e('Full Numbers'); ?></span></label><br>
<?php <?php
} } else if ($wp_jdt_paging_type == "full") {
else if($wp_jdt_paging_type == "full") {
?> ?>
<label title="<?php _e('Simple'); ?>"><input type="radio" value="simple" name="wp_jdt_paging_type"> <span><?php _e('Simple'); ?></span></label><br> <label title="<?php _e('Simple'); ?>"><input type="radio" value="simple" name="wp_jdt_paging_type"> <span><?php _e('Simple'); ?></span></label><br>
<label title="<?php _e('Simple Numbers'); ?>"><input type="radio" value="simple_numbers" name="wp_jdt_paging_type"> <span><?php _e('Simple Numbers'); ?></span></label><br> <label title="<?php _e('Simple Numbers'); ?>"><input type="radio" value="simple_numbers" name="wp_jdt_paging_type"> <span><?php _e('Simple Numbers'); ?></span></label><br>
<label title="<?php _e('Full'); ?>"><input type="radio" checked="checked" value="full" name="wp_jdt_paging_type"> <span><?php _e('Full'); ?></span></label><br> <label title="<?php _e('Full'); ?>"><input type="radio" checked="checked" value="full" name="wp_jdt_paging_type"> <span><?php _e('Full'); ?></span></label><br>
<label title="<?php _e('Full Numbers'); ?>"><input type="radio" value="full_numbers" name="wp_jdt_paging_type"> <span><?php _e('Full Numbers'); ?></span></label><br> <label title="<?php _e('Full Numbers'); ?>"><input type="radio" value="full_numbers" name="wp_jdt_paging_type"> <span><?php _e('Full Numbers'); ?></span></label><br>
<?php <?php
} } else if ($wp_jdt_paging_type == "simple_numbers") {
else if($wp_jdt_paging_type == "simple_numbers"){
?> ?>
<label title="<?php _e('Simple'); ?>"><input type="radio" value="simple" name="wp_jdt_paging_type"> <span><?php _e('Simple'); ?></span></label><br> <label title="<?php _e('Simple'); ?>"><input type="radio" value="simple" name="wp_jdt_paging_type"> <span><?php _e('Simple'); ?></span></label><br>
<label title="<?php _e('Simple Numbers'); ?>"><input type="radio" checked="checked" value="simple_numbers" name="wp_jdt_paging_type"> <span><?php _e('Simple Numbers'); ?></span></label><br> <label title="<?php _e('Simple Numbers'); ?>"><input type="radio" checked="checked" value="simple_numbers" name="wp_jdt_paging_type"> <span><?php _e('Simple Numbers'); ?></span></label><br>
<label title="<?php _e('Full'); ?>"><input type="radio" value="full" name="wp_jdt_paging_type"> <span><?php _e('Full'); ?></span></label><br> <label title="<?php _e('Full'); ?>"><input type="radio" value="full" name="wp_jdt_paging_type"> <span><?php _e('Full'); ?></span></label><br>
<label title="<?php _e('Full Numbers'); ?>"><input type="radio" value="full_numbers" name="wp_jdt_paging_type"> <span><?php _e('Full Numbers'); ?></span></label><br> <label title="<?php _e('Full Numbers'); ?>"><input type="radio" value="full_numbers" name="wp_jdt_paging_type"> <span><?php _e('Full Numbers'); ?></span></label><br>
<?php <?php
} } else {
else {
?> ?>
<label title="<?php _e('Simple'); ?>"><input type="radio" checked="checked" value="simple" name="wp_jdt_paging_type"> <span><?php _e('Simple'); ?></span></label><br> <label title="<?php _e('Simple'); ?>"><input type="radio" checked="checked" value="simple" name="wp_jdt_paging_type"> <span><?php _e('Simple'); ?></span></label><br>
<label title="<?php _e('Simple Numbers'); ?>"><input type="radio" value="simple_numbers" name="wp_jdt_paging_type"> <span><?php _e('Simple Numbers'); ?></span></label><br> <label title="<?php _e('Simple Numbers'); ?>"><input type="radio" value="simple_numbers" name="wp_jdt_paging_type"> <span><?php _e('Simple Numbers'); ?></span></label><br>
@@ -175,7 +175,11 @@ function wp_jdt_settings_page(){
<tr valign='top'> <tr valign='top'>
<th scope='row'><?php _e('Rows Per Page'); ?></th> <th scope='row'><?php _e('Rows Per Page'); ?></th>
<td> <td>
<input type="number" class="small-text" value="<?php if($wp_jdt_page_length != NULL) { echo $wp_jdt_page_length; } else { echo "10"; } ?>" min="1" step="1" name="wp_jdt_page_length"> <input type="number" class="small-text" value="<?php if ($wp_jdt_page_length != NULL) {
echo $wp_jdt_page_length;
} else {
echo "10";
} ?>" min="1" step="1" name="wp_jdt_page_length">
</td> </td>
</tr> </tr>
@@ -189,8 +193,7 @@ function wp_jdt_settings_page(){
<label title="<?php _e('Yes'); ?>"><input type="radio" checked="checked" value="true" name="wp_jdt_b_length_change"> <span><?php _e('Yes'); ?></span></label><br> <label title="<?php _e('Yes'); ?>"><input type="radio" checked="checked" value="true" name="wp_jdt_b_length_change"> <span><?php _e('Yes'); ?></span></label><br>
<label title="<?php _e('No'); ?>"><input type="radio" value="false" name="wp_jdt_b_length_change"> <span><?php _e('No'); ?></span></label><br> <label title="<?php _e('No'); ?>"><input type="radio" value="false" name="wp_jdt_b_length_change"> <span><?php _e('No'); ?></span></label><br>
<?php <?php
} } else {
else {
?> ?>
<label title="<?php _e('Yes'); ?>"><input type="radio" value="true" name="wp_jdt_b_length_change"> <span><?php _e('Yes'); ?></span></label><br> <label title="<?php _e('Yes'); ?>"><input type="radio" value="true" name="wp_jdt_b_length_change"> <span><?php _e('Yes'); ?></span></label><br>
<label title="<?php _e('No'); ?>"><input type="radio" checked="checked" value="false" name="wp_jdt_b_length_change"> <span><?php _e('No'); ?></span></label><br> <label title="<?php _e('No'); ?>"><input type="radio" checked="checked" value="false" name="wp_jdt_b_length_change"> <span><?php _e('No'); ?></span></label><br>
@@ -211,8 +214,7 @@ function wp_jdt_settings_page(){
<label title="<?php _e('Yes'); ?>"><input type="radio" checked="checked" value="true" name="wp_jdt_ordering"> <span><?php _e('Yes'); ?></span></label><br> <label title="<?php _e('Yes'); ?>"><input type="radio" checked="checked" value="true" name="wp_jdt_ordering"> <span><?php _e('Yes'); ?></span></label><br>
<label title="<?php _e('No'); ?>"><input type="radio" value="false" name="wp_jdt_ordering"> <span><?php _e('No'); ?></span></label><br> <label title="<?php _e('No'); ?>"><input type="radio" value="false" name="wp_jdt_ordering"> <span><?php _e('No'); ?></span></label><br>
<?php <?php
} } else {
else {
?> ?>
<label title="<?php _e('Yes'); ?>"><input type="radio" value="true" name="wp_jdt_ordering"> <span><?php _e('Yes'); ?></span></label><br> <label title="<?php _e('Yes'); ?>"><input type="radio" value="true" name="wp_jdt_ordering"> <span><?php _e('Yes'); ?></span></label><br>
<label title="<?php _e('No'); ?>"><input type="radio" checked="checked" value="false" name="wp_jdt_ordering"> <span><?php _e('No'); ?></span></label><br> <label title="<?php _e('No'); ?>"><input type="radio" checked="checked" value="false" name="wp_jdt_ordering"> <span><?php _e('No'); ?></span></label><br>
@@ -226,7 +228,11 @@ function wp_jdt_settings_page(){
<tr valign='top'> <tr valign='top'>
<th scope='row'><?php _e('Specific Column Order'); ?></th> <th scope='row'><?php _e('Specific Column Order'); ?></th>
<td> <td>
<input type="number" class="small-text" value="<?php if($wp_jdt_order_row != NULL) { echo $wp_jdt_order_row; }else { echo "0"; }?>" min="0" step="1" name="wp_jdt_order_row"><br> <input type="number" class="small-text" value="<?php if ($wp_jdt_order_row != NULL) {
echo $wp_jdt_order_row;
} else {
echo "0";
} ?>" min="0" step="1" name="wp_jdt_order_row"><br>
<br> <br>
<fieldset> <fieldset>
<?php <?php
@@ -235,8 +241,7 @@ function wp_jdt_settings_page(){
<label title="<?php _e('Ascending Order'); ?>"><input type="radio" checked="checked" value="asc" name="wp_jdt_order_row_sort"> <span><?php _e('Ascending Order'); ?></span></label><br> <label title="<?php _e('Ascending Order'); ?>"><input type="radio" checked="checked" value="asc" name="wp_jdt_order_row_sort"> <span><?php _e('Ascending Order'); ?></span></label><br>
<label title="<?php _e('Descending Order'); ?>"><input type="radio" value="desc" name="wp_jdt_order_row_sort"> <span><?php _e('Descending Order'); ?></span></label><br> <label title="<?php _e('Descending Order'); ?>"><input type="radio" value="desc" name="wp_jdt_order_row_sort"> <span><?php _e('Descending Order'); ?></span></label><br>
<?php <?php
} } else {
else {
?> ?>
<label title="<?php _e('Ascending Order'); ?>"><input type="radio" value="asc" name="wp_jdt_order_row_sort"> <span><?php _e('Ascending Order'); ?></span></label><br> <label title="<?php _e('Ascending Order'); ?>"><input type="radio" value="asc" name="wp_jdt_order_row_sort"> <span><?php _e('Ascending Order'); ?></span></label><br>
<label title="<?php _e('Descending Order'); ?>"><input type="radio" checked="checked" value="desc" name="wp_jdt_order_row_sort"> <span><?php _e('Descending Order'); ?></span></label><br> <label title="<?php _e('Descending Order'); ?>"><input type="radio" checked="checked" value="desc" name="wp_jdt_order_row_sort"> <span><?php _e('Descending Order'); ?></span></label><br>
@@ -257,8 +262,7 @@ function wp_jdt_settings_page(){
<label title="<?php _e('Yes'); ?>"><input type="radio" checked="checked" value="true" name="wp_jdt_searching"> <span><?php _e('Yes'); ?></span></label><br> <label title="<?php _e('Yes'); ?>"><input type="radio" checked="checked" value="true" name="wp_jdt_searching"> <span><?php _e('Yes'); ?></span></label><br>
<label title="<?php _e('No'); ?>"><input type="radio" value="false" name="wp_jdt_searching"> <span><?php _e('No'); ?></span></label><br> <label title="<?php _e('No'); ?>"><input type="radio" value="false" name="wp_jdt_searching"> <span><?php _e('No'); ?></span></label><br>
<?php <?php
} } else {
else {
?> ?>
<label title="<?php _e('Yes'); ?>"><input type="radio" value="true" name="wp_jdt_searching"> <span><?php _e('Yes'); ?></span></label><br> <label title="<?php _e('Yes'); ?>"><input type="radio" value="true" name="wp_jdt_searching"> <span><?php _e('Yes'); ?></span></label><br>
<label title="<?php _e('No'); ?>"><input type="radio" checked="checked" value="false" name="wp_jdt_searching"> <span><?php _e('No'); ?></span></label><br> <label title="<?php _e('No'); ?>"><input type="radio" checked="checked" value="false" name="wp_jdt_searching"> <span><?php _e('No'); ?></span></label><br>
@@ -286,7 +290,8 @@ function wp_jdt_style_and_script()
} }
add_shortcode('wp_jdt', 'wp_jdt_shortcode'); // add shortcode [wp_jdt id="test" info="true" paging="true" page_length="7" paging_type="full_numbers" b_length_change="true" ordering="true" order_row_number="3" order_row_number_sort="desc" searching="true"] add_shortcode('wp_jdt', 'wp_jdt_shortcode'); // add shortcode [wp_jdt id="test" info="true" paging="true" page_length="7" paging_type="full_numbers" b_length_change="true" ordering="true" order_row_number="3" order_row_number_sort="desc" searching="true"]
function wp_jdt_shortcode( $atts, $content = "" ) { function wp_jdt_shortcode($atts, $content = "")
{
$wp_jdt_info = get_option('wp_jdt_info'); $wp_jdt_info = get_option('wp_jdt_info');
$wp_jdt_paging = get_option('wp_jdt_paging'); $wp_jdt_paging = get_option('wp_jdt_paging');
@@ -316,37 +321,43 @@ function wp_jdt_shortcode( $atts, $content = "" ) {
'searching' => "$wp_jdt_searching", 'searching' => "$wp_jdt_searching",
), $atts, 'wp_jdt'); ), $atts, 'wp_jdt');
$table_id = esc_js($atts['id']);
$table_info = esc_js($atts['info']);
$table_paging = esc_js($atts['paging']);
$table_page_length = esc_js($atts['page_length']);
$table_paging_type = esc_js($atts['paging_type']);
$table_b_length_change = esc_js($atts['b_length_change']);
$table_ordering = esc_js($atts['ordering']);
$table_order_row_number = esc_js($atts['order_row_number']);
$table_order_row_number_sort = esc_js($atts['order_row_number_sort']);
$table_searching = esc_js($atts['searching']);
$wp_jdt_script = ""; $wp_jdt_script = "";
$wp_jdt_script .= "<script type='text/javascript' language='javascript' class='init'> \n"; $wp_jdt_script .= "<script type='text/javascript' language='javascript' class='init'> \n";
$wp_jdt_script .= "jQuery(document).ready(function() { \n"; $wp_jdt_script .= "jQuery(document).ready(function() { \n";
$wp_jdt_script .= "jQuery('#$atts[id]').DataTable({ \n"; $wp_jdt_script .= "jQuery('#$table_id').DataTable({ \n";
$wp_jdt_script .= "'info': $atts[info], \n"; $wp_jdt_script .= "'info': $table_info, \n";
$wp_jdt_script .= "'paging': $atts[paging], \n"; $wp_jdt_script .= "'paging': $table_paging, \n";
if($atts['page_length'] > 0) { if ($table_page_length > 0) {
$wp_jdt_script .= "'pageLength': $atts[page_length], \n"; $wp_jdt_script .= "'pageLength': $table_page_length, \n";
} } else {
else {
$wp_jdt_script .= "'pageLength': $wp_jdt_page_length, \n"; $wp_jdt_script .= "'pageLength': $wp_jdt_page_length, \n";
} }
$wp_jdt_script .= "'pagingType': '$atts[paging_type]', \n"; $wp_jdt_script .= "'pagingType': '$table_paging_type', \n";
$wp_jdt_script .= "'bLengthChange': $atts[b_length_change], \n"; $wp_jdt_script .= "'bLengthChange': $table_b_length_change, \n";
$wp_jdt_script .= "'ordering': $atts[ordering], \n"; $wp_jdt_script .= "'ordering': $table_ordering, \n";
if ( $atts['order_row_number'] != '' ) { // if 'Specific Column Order' is not null than add this attribute if ($table_order_row_number != '') { // if 'Specific Column Order' is not null than add this attribute
$atts['order_row_number_sort'] = ( $atts['order_row_number_sort'] != "" ) ? $atts['order_row_number_sort'] : 'desc'; $table_order_row_number_sort = ($table_order_row_number_sort != "") ? $table_order_row_number_sort : 'desc';
$wp_jdt_script .= "'order': [$atts[order_row_number],'$atts[order_row_number_sort]'], \n"; $wp_jdt_script .= "'order': [$table_order_row_number,'$table_order_row_number_sort'], \n";
} }
$wp_jdt_script .= "'searching': $atts[searching], \n"; $wp_jdt_script .= "'searching': $table_searching, \n";
$wp_jdt_script .= "} ); \n"; $wp_jdt_script .= "} ); \n";
$table_wrapper_id = $table_id . "_wrapper";
$wp_jdt_script .= "jQuery('#$atts[id]_wrapper select').prepend('<option value=$atts[page_length]>" . __( 'Select' ) . "</option>').val('');"; $wp_jdt_script .= "jQuery('#$table_wrapper_id select').prepend('<option value=$table_page_length>" . __('Select') . "</option>').val('');";
// if 'Specific Column Order' is not null and ordring is true
if ( $atts['order_row_number'] != '' && $atts['ordering'] == 'true' ) {
//$wp_jdt_script .= "jQuery('#$atts[id]_wrapper select')[0].options[0].selected = true;";
}
$wp_jdt_script .= "} ); \n"; $wp_jdt_script .= "} ); \n";
$wp_jdt_script .= "</script>"; $wp_jdt_script .= "</script>";
@@ -359,7 +370,8 @@ function wp_jdt_shortcode( $atts, $content = "" ) {
} }
register_uninstall_hook(__FILE__, 'wp_jdt_uninstall'); // uninstall plug-in register_uninstall_hook(__FILE__, 'wp_jdt_uninstall'); // uninstall plug-in
function wp_jdt_uninstall() { function wp_jdt_uninstall()
{
delete_option('wp_jdt_info'); delete_option('wp_jdt_info');
delete_option('wp_jdt_paging'); delete_option('wp_jdt_paging');
delete_option('wp_jdt_page_length'); delete_option('wp_jdt_page_length');