Admin Columns - Version 2.2.6

Version Description

  • [Changed] Display "edit columns" button by default
  • [Improved] Improved memory usage by only loading columns for the current screen
  • [Changed] Removed floatHead library
  • [Updated] Only display ACF placeholder with ACF active.
Download this release

Release Info

Developer tschutter
Plugin Icon 128x128 Admin Columns
Version 2.2.6
Comparing to
See all releases

Code changes from version 2.2.5.1 to 2.2.6

assets/images/addon_sortable_1.png CHANGED
File without changes
assets/images/arrows.png CHANGED
File without changes
assets/images/checkbox.png CHANGED
File without changes
assets/images/checkmark.png CHANGED
File without changes
assets/images/checkmark_single.png CHANGED
File without changes
assets/images/comment_edit.png CHANGED
File without changes
assets/images/cross.png CHANGED
File without changes
assets/images/facebook.png CHANGED
File without changes
assets/images/icon.png CHANGED
File without changes
assets/images/import_export.png CHANGED
File without changes
assets/images/information.png CHANGED
File without changes
assets/images/loading.gif CHANGED
File without changes
assets/images/no.png CHANGED
File without changes
assets/images/settings.png CHANGED
File without changes
assets/images/sort.png CHANGED
File without changes
assets/images/square.png CHANGED
File without changes
assets/images/trash.png CHANGED
File without changes
assets/images/twitter.png CHANGED
File without changes
assets/less/column.less CHANGED
File without changes
classes/column.php CHANGED
@@ -514,6 +514,46 @@ class CPAC_Column {
514
  return $image_sizes;
515
  }
516
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
517
  /**
518
  * @since 2.0
519
  * @param string $name
@@ -564,6 +604,52 @@ class CPAC_Column {
564
  return $resized;
565
  }
566
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
567
  /**
568
  * @since 1.0
569
  * @param mixed $meta Image files or Image ID's
@@ -578,7 +664,7 @@ class CPAC_Column {
578
  }
579
 
580
  // turn string to array
581
- if ( is_string( $images ) ) {
582
  if ( strpos( $images, ',' ) !== false ) {
583
  $images = array_filter( explode( ',', $this->strip_trim( str_replace( ' ', '', $images ) ) ) );
584
  }
514
  return $image_sizes;
515
  }
516
 
517
+ /**
518
+ * Get post type
519
+ *
520
+ * @since 2.1.1
521
+ */
522
+ function get_post_type() {
523
+ return isset( $this->storage_model->post_type ) ? $this->storage_model->post_type : false;
524
+ }
525
+
526
+ /**
527
+ * @since 2.2.6
528
+ */
529
+ public function get_terms_for_display( $term_ids, $taxonomy ) {
530
+ $values = array();
531
+ if ( $term_ids && ! is_wp_error( $term_ids ) ) {
532
+ $post_type = $this->get_post_type();
533
+ foreach ( $term_ids as $term_id ) {
534
+ $term = get_term( $term_id, $taxonomy );
535
+ $title = esc_html( sanitize_term_field( 'name', $term->name, $term->term_id, $term->taxonomy, 'edit' ) );
536
+
537
+ $filter_key = $term->taxonomy;
538
+ if ( 'category' === $term->taxonomy ) {
539
+ $filter_key = 'category_name';
540
+ }
541
+
542
+ $link = "<a href='edit.php?post_type={$post_type}&{$filter_key}={$term->slug}'>{$title}</a>";
543
+ if ( $post_type == 'attachment' ) {
544
+ $link = "<a href='upload.php?taxonomy={$filter_key}&term={$term->slug}'>{$title}</a>";
545
+ }
546
+
547
+ $values[] = $link;
548
+ }
549
+ }
550
+ if ( ! $values ) {
551
+ return false;
552
+ }
553
+
554
+ return implode( ', ', $values );
555
+ }
556
+
557
  /**
558
  * @since 2.0
559
  * @param string $name
604
  return $resized;
605
  }
606
 
607
+ /**
608
+ * @since: 2.2.6
609
+ *
610
+ */
611
+ function get_color_for_display( $color_hex ) {
612
+ if ( ! $color_hex ) {
613
+ return false;
614
+ }
615
+ $text_color = $this->get_text_color( $color_hex );
616
+ return "<div class='cpac-color'><span style='background-color:{$color_hex};color:{$text_color}'>{$color_hex}</span></div>";
617
+ }
618
+
619
+ /**
620
+ * Determines text color absed on bakground coloring.
621
+ *
622
+ * @since 1.0
623
+ */
624
+ function get_text_color( $bg_color ) {
625
+
626
+ $rgb = $this->hex2rgb( $bg_color );
627
+
628
+ return $rgb && ( ( $rgb[0]*0.299 + $rgb[1]*0.587 + $rgb[2]*0.114 ) < 186 ) ? '#ffffff' : '#333333';
629
+ }
630
+
631
+ /**
632
+ * Convert hex to rgb
633
+ *
634
+ * @since 1.0
635
+ */
636
+ function hex2rgb( $hex ) {
637
+ $hex = str_replace( "#", "", $hex );
638
+
639
+ if(strlen($hex) == 3) {
640
+ $r = hexdec(substr($hex,0,1).substr($hex,0,1));
641
+ $g = hexdec(substr($hex,1,1).substr($hex,1,1));
642
+ $b = hexdec(substr($hex,2,1).substr($hex,2,1));
643
+ } else {
644
+ $r = hexdec(substr($hex,0,2));
645
+ $g = hexdec(substr($hex,2,2));
646
+ $b = hexdec(substr($hex,4,2));
647
+ }
648
+ $rgb = array($r, $g, $b);
649
+
650
+ return $rgb;
651
+ }
652
+
653
  /**
654
  * @since 1.0
655
  * @param mixed $meta Image files or Image ID's
664
  }
665
 
666
  // turn string to array
667
+ if ( is_string( $images ) || is_numeric( $images ) ) {
668
  if ( strpos( $images, ',' ) !== false ) {
669
  $images = array_filter( explode( ',', $this->strip_trim( str_replace( ' ', '', $images ) ) ) );
670
  }
classes/column/acf-placeholder.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /**
3
- * CPAC_Column_ACF_Placeholder
4
  *
5
  * @since 2.2
6
  */
@@ -46,4 +46,4 @@ class CPAC_Column_ACF_Placeholder extends CPAC_Column {
46
  <?php
47
  }
48
 
49
- }
1
  <?php
2
  /**
3
+ * ACF Placeholder column, holding a CTA for Admin Columns Pro.
4
  *
5
  * @since 2.2
6
  */
46
  <?php
47
  }
48
 
49
+ }
classes/column/actions.php ADDED
@@ -0,0 +1,147 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Base class for columns containing action links for items.
4
+ *
5
+ * @since 2.2.6
6
+ */
7
+ abstract class CPAC_Column_Actions extends CPAC_Column {
8
+
9
+ /**
10
+ * Get a list of action links for an item (e.g. post) ID.
11
+ *
12
+ * @since 2.2.6
13
+ *
14
+ * @param int $item_id Item ID to get the list of actions for.
15
+ * @return array List of actions ([action name] => [action link]).
16
+ */
17
+ abstract public function get_actions( $item_id );
18
+
19
+ /**
20
+ * @see CPAC_Column::init()
21
+ * @since 2.2.6
22
+ */
23
+ public function init() {
24
+
25
+ parent::init();
26
+
27
+ // Properties
28
+ $this->properties['type'] = 'column-actions';
29
+ $this->properties['label'] = __( 'Actions', 'cpac' );
30
+
31
+ // Options
32
+ $this->options['use_icons'] = false;
33
+ }
34
+
35
+ /**
36
+ * @see CPAC_Column::get_value()
37
+ * @since 2.2.6
38
+ */
39
+ public function get_value( $post_id ) {
40
+
41
+ $actions = $this->get_raw_value( $post_id );
42
+
43
+ if ( ! empty( $this->options->use_icons ) ) {
44
+ return implode( '', $this->convert_actions_to_icons( $actions ) );
45
+ }
46
+
47
+ return implode( ' | ', $actions );
48
+ }
49
+
50
+ /**
51
+ * @see CPAC_Column::get_value()
52
+ * @since 2.2.6
53
+ */
54
+ public function get_raw_value( $post_id ) {
55
+
56
+ return $this->get_actions( $post_id );
57
+ }
58
+
59
+ /**
60
+ * @see CPAC_Column::display_settings()
61
+ * @since 2.2.6
62
+ */
63
+ public function display_settings() {
64
+
65
+ parent::display_settings();
66
+
67
+ $this->display_field_use_icons();
68
+ }
69
+
70
+ /**
71
+ * Display the settings field for using icons instead of text links.
72
+ *
73
+ * @since 2.2.6
74
+ */
75
+ public function display_field_use_icons() {
76
+
77
+ ?>
78
+ <tr class="column_editing">
79
+ <?php $this->label_view( __( 'Use icons?', 'cpac' ), __( 'Use icons instead of text for displaying the actions.', 'cpac' ), 'use_icons' ); ?>
80
+ <td class="input">
81
+ <label for="<?php $this->attr_id( 'use_icons' ); ?>-yes">
82
+ <input type="radio" value="1" name="<?php $this->attr_name( 'use_icons' ); ?>" id="<?php $this->attr_id( 'use_icons' ); ?>-yes"<?php checked( $this->options->use_icons, '1' ); ?> />
83
+ <?php _e( 'Yes'); ?>
84
+ </label>
85
+ <label for="<?php $this->attr_id( 'use_icons' ); ?>-no">
86
+ <input type="radio" value="" name="<?php $this->attr_name( 'use_icons' ); ?>" id="<?php $this->attr_id( 'use_icons' ); ?>-no"<?php checked( $this->options->use_icons, '' ); ?> />
87
+ <?php _e( 'No'); ?>
88
+ </label>
89
+ </td>
90
+ </tr>
91
+ <?php
92
+ }
93
+
94
+ /**
95
+ * Convert items from a list of action links to icons (if they have an icon).
96
+ *
97
+ * @since 2.2.6
98
+ *
99
+ * @param array $actions List of actions ([action name] => [action link]).
100
+ * @return array List of actions ([action name] => [action icon link]).
101
+ */
102
+ public function convert_actions_to_icons( $actions ) {
103
+
104
+ $icons = $this->get_actions_icons();
105
+
106
+ foreach ( $actions as $action => $link ) {
107
+ if ( isset( $icons[ $action ] ) ) {
108
+ // Add mandatory "class" HTML attribute
109
+ if ( strpos( $link, 'class=' ) === false ) {
110
+ $link = str_replace( '<a ', '<a class="" ', $link );
111
+ }
112
+
113
+ // Add icon and tooltip classes
114
+ $link = preg_replace( '/class=["\'](.*?)["\']/', 'class="$1 cpac-tip button cpac-button-action dashicons hide-content dashicons-' . $icons[ $action ] . '"', $link, 1 );
115
+
116
+ // Add tooltip title
117
+ $link = preg_replace_callback( '/>(.*?)<\/a>/', function( $matches ) {
118
+ return ' data-tip="' . esc_attr( $matches[1] ) . '">' . $matches[1] . '</a>';
119
+ }, $link );
120
+
121
+ $actions[ $action ] = $link;
122
+ }
123
+ }
124
+
125
+ return $actions;
126
+ }
127
+
128
+ /**
129
+ * Get a list of action names and their corresponding dashicons.
130
+ *
131
+ * @since 2.2.6
132
+ *
133
+ * @return array List of actions and icons ([action] => [dashicon]).
134
+ */
135
+ public function get_actions_icons() {
136
+
137
+ return array(
138
+ 'edit' => 'edit',
139
+ 'trash' => 'trash',
140
+ 'delete' => 'trash',
141
+ 'untrash' => 'undo',
142
+ 'view' => 'visibility',
143
+ 'inline hide-if-no-js' => 'welcome-write-blog'
144
+ );
145
+ }
146
+
147
+ }
classes/column/custom-field.php CHANGED
@@ -1,7 +1,10 @@
1
  <?php
2
-
3
  /**
4
- * CPAC_Column_Custom_Field
 
 
 
 
5
  *
6
  * @since 1.0
7
  */
@@ -222,8 +225,7 @@ class CPAC_Column_Custom_Field extends CPAC_Column {
222
 
223
  case "color" :
224
  if ( ! empty( $meta ) ) {
225
- $text_color = $this->get_text_color( $meta );
226
- $meta = "<div class='cpac-color'><span style='background-color:{$meta};color:{$text_color}'>{$meta}</span></div>";
227
  }
228
  break;
229
 
@@ -237,40 +239,6 @@ class CPAC_Column_Custom_Field extends CPAC_Column {
237
  return $meta;
238
  }
239
 
240
- /**
241
- * Determines text color absed on bakground coloring.
242
- *
243
- * @since 1.0
244
- */
245
- function get_text_color( $bg_color ) {
246
-
247
- $rgb = $this->hex2rgb( $bg_color );
248
-
249
- return $rgb && ( ( $rgb[0]*0.299 + $rgb[1]*0.587 + $rgb[2]*0.114 ) < 186 ) ? '#ffffff' : '#333333';
250
- }
251
-
252
- /**
253
- * Convert hex to rgb
254
- *
255
- * @since 1.0
256
- */
257
- function hex2rgb( $hex ) {
258
- $hex = str_replace( "#", "", $hex );
259
-
260
- if(strlen($hex) == 3) {
261
- $r = hexdec(substr($hex,0,1).substr($hex,0,1));
262
- $g = hexdec(substr($hex,1,1).substr($hex,1,1));
263
- $b = hexdec(substr($hex,2,1).substr($hex,2,1));
264
- } else {
265
- $r = hexdec(substr($hex,0,2));
266
- $g = hexdec(substr($hex,2,2));
267
- $b = hexdec(substr($hex,4,2));
268
- }
269
- $rgb = array($r, $g, $b);
270
-
271
- return $rgb;
272
- }
273
-
274
  /**
275
  * Get Field key
276
  *
1
  <?php
 
2
  /**
3
+ * Custom field column, displaying the contents of meta fields.
4
+ * Suited for all storage models supporting WordPress' default way of handling meta data.
5
+ *
6
+ * Supports different types of meta fields, including dates, serialized data, linked content,
7
+ * and boolean values.
8
  *
9
  * @since 1.0
10
  */
225
 
226
  case "color" :
227
  if ( ! empty( $meta ) ) {
228
+ $meta = $this->get_color_for_display( $meta );
 
229
  }
230
  break;
231
 
239
  return $meta;
240
  }
241
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
242
  /**
243
  * Get Field key
244
  *
classes/column/default.php CHANGED
@@ -1,5 +1,9 @@
1
  <?php
2
  /**
 
 
 
 
3
  * @since 2.2.1
4
  */
5
  class CPAC_Column_Default extends CPAC_Column {
1
  <?php
2
  /**
3
+ * Column class for default columns (i.e. columns not added by Admin Columns).
4
+ * Allows additional properties, such as editability and filterability, to be
5
+ * added to defeault column types.
6
+ *
7
  * @since 2.2.1
8
  */
9
  class CPAC_Column_Default extends CPAC_Column {
classes/column/post/actions.php CHANGED
@@ -4,54 +4,16 @@
4
  *
5
  * @since 2.0
6
  */
7
- class CPAC_Column_Post_Actions extends CPAC_Column {
8
 
9
  /**
10
- * @see CPAC_Column::init()
11
- * @since 2.2.1
12
  */
13
- public function init() {
14
-
15
- parent::init();
16
-
17
- // Properties
18
- $this->properties['type'] = 'column-actions';
19
- $this->properties['label'] = __( 'Actions', 'cpac' );
20
-
21
- // Options
22
- $this->options['use_icons'] = false;
23
- }
24
-
25
- /**
26
- * @see CPAC_Column::get_value()
27
- * @since 2.0
28
- */
29
- function get_value( $post_id ) {
30
- return $this->get_raw_value( $post_id );
31
- }
32
-
33
- /**
34
- * @see CPAC_Column::get_value()
35
- * @since 2.0
36
- */
37
- function get_raw_value( $post_id ) {
38
- return $this->get_column_value_actions( $post_id );
39
- }
40
-
41
- /**
42
- * Get column value of post actions
43
- *
44
- * This part is copied from the Posts List Table class
45
- *
46
- * @since 1.4.2
47
- *
48
- * @param int $post_id
49
- * @return string Actions
50
- */
51
- private function get_column_value_actions( $post_id ) {
52
  $actions = array();
53
 
54
- $post = get_post($post_id);
55
  $title = _draft_or_post_title();
56
  $post_type_object = get_post_type_object( $post->post_type );
57
  $can_edit_post = current_user_can( $post_type_object->cap->edit_post, $post->ID );
@@ -89,70 +51,7 @@ class CPAC_Column_Post_Actions extends CPAC_Column {
89
  }
90
  }
91
 
92
- // Use icons instead of links
93
- /*
94
- @todo: debug first
95
- if ( ! empty( $this->options->use_icons ) ) {
96
- $icons = array(
97
- 'edit' => 'edit',
98
- 'trash' => 'trash',
99
- 'delete' => 'trash',
100
- 'untrash' => 'undo',
101
- 'view' => 'visibility',
102
- 'inline hide-if-no-js' => 'welcome-write-blog'
103
- );
104
-
105
- foreach ( $actions as $action => $link ) {
106
- if ( isset( $icons[ $action ] ) ) {
107
- if ( strpos( $link, 'class=' ) === false ) {
108
- $link = str_replace( '<a ', '<a class="" ', $link );
109
- }
110
-
111
- $link = preg_replace( '/class=["\'](.*?)["\']/', 'class="$1 cpac-tip button cpac-button-action dashicons hide-content dashicons-' . $icons[ $action ] . '"', $link, 1 );
112
- $link = preg_replace_callback( '/>(.*?)<\/a>/', function( $matches ) {
113
- return ' data-tip="' . esc_attr( $matches[1] ) . '">' . $matches[1] . '</a>';
114
- }, $link );
115
-
116
- $actions[ $action ] = $link;
117
- }
118
- }
119
-
120
- return implode( '', $actions );
121
- }
122
- */
123
-
124
- return implode(' | ', $actions);
125
  }
126
 
127
- /**
128
- * @see CPAC_Column::display_settings()
129
- * @since 2.2.4
130
- */
131
- public function display_settings() {
132
-
133
- parent::display_settings();
134
-
135
- //$this->display_field_use_icons();
136
- }
137
-
138
- /**
139
- * @since 2.2.4
140
- */
141
- public function display_field_use_icons() {
142
- ?>
143
- <tr class="column_editing">
144
- <?php $this->label_view( __( 'Use icons?', 'cpac' ), __( 'Use icons instead of text for displaying the actions.', 'cpac' ), 'use_icons' ); ?>
145
- <td class="input">
146
- <label for="<?php $this->attr_id( 'use_icons' ); ?>-yes">
147
- <input type="radio" value="1" name="<?php $this->attr_name( 'use_icons' ); ?>" id="<?php $this->attr_id( 'use_icons' ); ?>-yes"<?php checked( $this->options->use_icons, '1' ); ?> />
148
- <?php _e( 'Yes'); ?>
149
- </label>
150
- <label for="<?php $this->attr_id( 'use_icons' ); ?>-no">
151
- <input type="radio" value="" name="<?php $this->attr_name( 'use_icons' ); ?>" id="<?php $this->attr_id( 'use_icons' ); ?>-no"<?php checked( $this->options->use_icons, '' ); ?> />
152
- <?php _e( 'No'); ?>
153
- </label>
154
- </td>
155
- </tr>
156
- <?php
157
- }
158
  }
4
  *
5
  * @since 2.0
6
  */
7
+ class CPAC_Column_Post_Actions extends CPAC_Column_Actions {
8
 
9
  /**
10
+ * @see CPAC_Column_Actions::get_actions()
11
+ * @since 2.2.6
12
  */
13
+ public function get_actions( $item_id ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  $actions = array();
15
 
16
+ $post = get_post( $item_id );
17
  $title = _draft_or_post_title();
18
  $post_type_object = get_post_type_object( $post->post_type );
19
  $can_edit_post = current_user_can( $post_type_object->cap->edit_post, $post->ID );
51
  }
52
  }
53
 
54
+ return $actions;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  }
56
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
57
  }
classes/column/post/attachment-count.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /**
3
- * CPAC_Column_Post_Attachment_Count
4
  *
5
  * @since 2.0
6
  */
1
  <?php
2
  /**
3
+ * Column displaying number of attachment for an item.
4
  *
5
  * @since 2.0
6
  */
classes/column/post/author-name.php CHANGED
@@ -1,6 +1,7 @@
1
  <?php
2
  /**
3
- * CPAC_Column_Post_Author_Name
 
4
  *
5
  * @since 2.0
6
  */
1
  <?php
2
  /**
3
+ * Column displaying information about the author of a post, such as the
4
+ * author's display name, user ID and email address.
5
  *
6
  * @since 2.0
7
  */
classes/column/post/comment-count.php CHANGED
@@ -1,6 +1,7 @@
1
  <?php
2
  /**
3
- * CPAC_Column_Post_Modified
 
4
  *
5
  * @since 2.0
6
  */
1
  <?php
2
  /**
3
+ * Column displaying the number of comments for an item, displaying either the total
4
+ * amount of comments, or the amount per status (e.g. "Approved", "Pending").
5
  *
6
  * @since 2.0
7
  */
classes/column/post/comment-status.php CHANGED
@@ -1,6 +1,7 @@
1
  <?php
2
  /**
3
- * CPAC_Column_Post_Comment_Status
 
4
  *
5
  * @since 2.0
6
  */
1
  <?php
2
  /**
3
+ * Column displaying whether an item is open for comments, i.e. whether users can
4
+ * comment on this item.
5
  *
6
  * @since 2.0
7
  */
classes/column/post/path.php CHANGED
@@ -1,13 +1,14 @@
1
  <?php
2
  /**
 
3
  *
4
- * @since 2.0
5
  */
6
  class CPAC_Column_Post_Path extends CPAC_Column {
7
 
8
  /**
9
  * @see CPAC_Column::init()
10
- * @since 2.3
11
  */
12
  public function init() {
13
 
@@ -20,7 +21,7 @@ class CPAC_Column_Post_Path extends CPAC_Column {
20
 
21
  /**
22
  * @see CPAC_Column::get_value()
23
- * @since 2.0
24
  */
25
  public function get_value( $post_id ) {
26
 
@@ -29,7 +30,7 @@ class CPAC_Column_Post_Path extends CPAC_Column {
29
 
30
  /**
31
  * @see CPAC_Column::get_value()
32
- * @since 2.0.3
33
  */
34
  public function get_raw_value( $post_id ) {
35
  return str_replace( home_url(), '', get_permalink( $post_id ) );
1
  <?php
2
  /**
3
+ * Column displaying path (without URL, e.g. "/my-category/sample-post/") to the front-end location of this item.
4
  *
5
+ * @since 2.2.3
6
  */
7
  class CPAC_Column_Post_Path extends CPAC_Column {
8
 
9
  /**
10
  * @see CPAC_Column::init()
11
+ * @since 2.2.3
12
  */
13
  public function init() {
14
 
21
 
22
  /**
23
  * @see CPAC_Column::get_value()
24
+ * @since 2.2.3
25
  */
26
  public function get_value( $post_id ) {
27
 
30
 
31
  /**
32
  * @see CPAC_Column::get_value()
33
+ * @since 2.2.3
34
  */
35
  public function get_raw_value( $post_id ) {
36
  return str_replace( home_url(), '', get_permalink( $post_id ) );
classes/column/post/permalink.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /**
3
- * CPAC_Column_Post_ID
4
  *
5
  * @since 2.0
6
  */
1
  <?php
2
  /**
3
+ * Columng displaying full item permalink (including URL).
4
  *
5
  * @since 2.0
6
  */
classes/column/taxonomy.php CHANGED
@@ -1,6 +1,7 @@
1
  <?php
2
  /**
3
- * CPAC_Column_Post_Taxonomy
 
4
  *
5
  * @since 2.0
6
  */
@@ -28,27 +29,9 @@ class CPAC_Column_Taxonomy extends CPAC_Column {
28
  * @since 2.0
29
  */
30
  function get_value( $post_id ) {
31
-
32
- $values = array();
33
-
34
  $term_ids = $this->get_raw_value( $post_id );
35
 
36
- $post_type = $this->get_post_type();
37
-
38
- if ( $term_ids && ! is_wp_error( $term_ids ) ) {
39
- foreach ( $term_ids as $term_id ) {
40
- $term = get_term( $term_id, $this->options->taxonomy );
41
- $title = esc_html( sanitize_term_field( 'name', $term->name, $term->term_id, $term->taxonomy, 'edit' ) );
42
-
43
- $link = "<a href='edit.php?post_type={$post_type}&{$term->taxonomy}={$term->slug}'>{$title}</a>";
44
- if ( $post_type == 'attachment' )
45
- $link = "<a href='upload.php?taxonomy={$term->taxonomy}&term={$term->slug}'>{$title}</a>";
46
-
47
- $values[] = $link;
48
- }
49
- }
50
-
51
- return implode( ', ', $values );
52
  }
53
 
54
  /**
@@ -60,16 +43,6 @@ class CPAC_Column_Taxonomy extends CPAC_Column {
60
  return wp_get_post_terms( $post_id, $this->options->taxonomy, array( 'fields' => 'ids' ) );
61
  }
62
 
63
- /**
64
- * Get post type
65
- *
66
- * @since 2.1.1
67
- */
68
- function get_post_type() {
69
-
70
- return isset( $this->storage_model->post_type ) ? $this->storage_model->post_type : false;
71
- }
72
-
73
  /**
74
  * @see CPAC_Column::apply_conditional()
75
  * @since 2.0
1
  <?php
2
  /**
3
+ * Taxonomy column, displaying terms from a taxonomy for any object type (i.e. posts)
4
+ * supporting WordPress' native way of handling terms.
5
  *
6
  * @since 2.0
7
  */
29
  * @since 2.0
30
  */
31
  function get_value( $post_id ) {
 
 
 
32
  $term_ids = $this->get_raw_value( $post_id );
33
 
34
+ return $this->get_terms_for_display( $term_ids, $this->options->taxonomy );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  }
36
 
37
  /**
43
  return wp_get_post_terms( $post_id, $this->options->taxonomy, array( 'fields' => 'ids' ) );
44
  }
45
 
 
 
 
 
 
 
 
 
 
 
46
  /**
47
  * @see CPAC_Column::apply_conditional()
48
  * @since 2.0
classes/column/used-by-menu.php CHANGED
@@ -1,14 +1,15 @@
1
  <?php
2
  /**
3
- * CPAC_Column_Post_Modified
 
4
  *
5
- * @since 2.0
6
  */
7
  class CPAC_Column_Used_By_Menu extends CPAC_Column {
8
 
9
  /**
10
  * @see CPAC_Column::init()
11
- * @since 2.2.1
12
  */
13
  public function init() {
14
 
@@ -24,7 +25,7 @@ class CPAC_Column_Used_By_Menu extends CPAC_Column {
24
 
25
  /**
26
  * @see CPAC_Column::apply_conditional()
27
- * @since 2.0
28
  */
29
  function apply_conditional() {
30
  if ( ! $this->get_meta_type() ) {
@@ -35,7 +36,7 @@ class CPAC_Column_Used_By_Menu extends CPAC_Column {
35
 
36
  /**
37
  * @see CPAC_Column::get_value()
38
- * @since 2.0
39
  */
40
  function get_value( $object_id ) {
41
 
@@ -59,7 +60,7 @@ class CPAC_Column_Used_By_Menu extends CPAC_Column {
59
  /**
60
  * Get object metatype of the storage model
61
  *
62
- * @since 2.0.6
63
  */
64
  function get_meta_type() {
65
  $object_type = false;
@@ -74,7 +75,7 @@ class CPAC_Column_Used_By_Menu extends CPAC_Column {
74
 
75
  /**
76
  * @see CPAC_Column::get_raw_value()
77
- * @since 2.0.3
78
  */
79
  function get_raw_value( $object_id ) {
80
 
@@ -112,7 +113,7 @@ class CPAC_Column_Used_By_Menu extends CPAC_Column {
112
 
113
  /**
114
  * @see CPAC_Column::display_settings()
115
- * @since 2.2.1
116
  */
117
  public function display_settings() {
118
 
@@ -122,7 +123,7 @@ class CPAC_Column_Used_By_Menu extends CPAC_Column {
122
  /**
123
  * Display the settings field for selecting whether the column value should link to the corresponding post
124
  *
125
- * @since 2.2.1
126
  */
127
  public function display_field_link_to_menu() {
128
 
@@ -143,4 +144,5 @@ class CPAC_Column_Used_By_Menu extends CPAC_Column {
143
  </tr>
144
  <?php
145
  }
 
146
  }
1
  <?php
2
  /**
3
+ * Column displaying the menus the item is used in. Supported by all object types that
4
+ * can be referenced in menus (i.e. posts).
5
  *
6
+ * @since 2.2.5
7
  */
8
  class CPAC_Column_Used_By_Menu extends CPAC_Column {
9
 
10
  /**
11
  * @see CPAC_Column::init()
12
+ * @since 2.2.5
13
  */
14
  public function init() {
15
 
25
 
26
  /**
27
  * @see CPAC_Column::apply_conditional()
28
+ * @since 2.2.5
29
  */
30
  function apply_conditional() {
31
  if ( ! $this->get_meta_type() ) {
36
 
37
  /**
38
  * @see CPAC_Column::get_value()
39
+ * @since 2.2.5
40
  */
41
  function get_value( $object_id ) {
42
 
60
  /**
61
  * Get object metatype of the storage model
62
  *
63
+ * @since 2.2.5
64
  */
65
  function get_meta_type() {
66
  $object_type = false;
75
 
76
  /**
77
  * @see CPAC_Column::get_raw_value()
78
+ * @since 2.2.5
79
  */
80
  function get_raw_value( $object_id ) {
81
 
113
 
114
  /**
115
  * @see CPAC_Column::display_settings()
116
+ * @since 2.2.5
117
  */
118
  public function display_settings() {
119
 
123
  /**
124
  * Display the settings field for selecting whether the column value should link to the corresponding post
125
  *
126
+ * @since 2.2.5
127
  */
128
  public function display_field_link_to_menu() {
129
 
144
  </tr>
145
  <?php
146
  }
147
+
148
  }
classes/settings.php CHANGED
@@ -530,20 +530,11 @@ class CPAC_Settings {
530
  <p>
531
  <br/>
532
  </p>
533
- <?php
534
- /*
535
- <p>
536
- <label for="show_hidden">
537
- <input name="cpac_general_options[show_hidden]" id="show_hidden" type="checkbox" value="1" <?php checked( isset( $options['show_hidden'] ) ? $options['show_hidden'] : '', '1' ); ?>>
538
- <?php _e( 'Show hidden custom fields. Default is <code>off</code>.', 'cpac' ); ?>
539
- </label>
540
- </p>
541
- */
542
- ?>
543
  <p>
544
  <label for="show_edit_button">
545
- <input name="cpac_general_options[show_edit_button]" id="show_edit_button" type="checkbox" value="1" <?php checked( isset( $options['show_edit_button'] ) ? $options['show_edit_button'] : '', '1' ); ?>>
546
- <?php _e( 'Show "Edit Columns" button on admin screens. Default is <code>off</code>.', 'cpac' ); ?>
 
547
  </label>
548
  </p>
549
 
530
  <p>
531
  <br/>
532
  </p>
 
 
 
 
 
 
 
 
 
 
533
  <p>
534
  <label for="show_edit_button">
535
+ <input name="cpac_general_options[show_edit_button]" type="hidden" value="0" >
536
+ <input name="cpac_general_options[show_edit_button]" id="show_edit_button" type="checkbox" value="1" <?php checked( ! isset( $options['show_edit_button'] ) || ( '1' == $options['show_edit_button'] ) ); ?>>
537
+ <?php _e( 'Show "Edit Columns" button on admin screens. Default is <code>on</code>.', 'cpac' ); ?>
538
  </label>
539
  </p>
540
 
classes/storage_model.php CHANGED
@@ -96,9 +96,8 @@ abstract class CPAC_Storage_Model {
96
  // set columns paths
97
  $this->set_columns_filepath();
98
 
99
- // Populate columns variable.
100
- // This is used for manage_value.
101
- add_action( 'admin_init', array( $this, 'set_columns' ) );
102
  }
103
 
104
  /**
@@ -214,7 +213,7 @@ abstract class CPAC_Storage_Model {
214
  cpac_admin_message( "<strong>{$this->label}</strong> " . __( 'settings succesfully restored.', 'cpac' ), 'updated' );
215
 
216
  // refresh columns otherwise the removed columns will still display
217
- $this->set_columns();
218
  }
219
 
220
  /**
@@ -255,7 +254,7 @@ abstract class CPAC_Storage_Model {
255
  cpac_admin_message( sprintf( __( 'Settings for %s updated succesfully.', 'cpac' ), "<strong>{$this->label}</strong>" ), 'updated' );
256
 
257
  // refresh columns otherwise the newly added columns will not be displayed
258
- $this->set_columns();
259
 
260
  return true;
261
  }
@@ -270,11 +269,15 @@ abstract class CPAC_Storage_Model {
270
 
271
  $columns = array(
272
  'CPAC_Column_Custom_Field' => CPAC_DIR . 'classes/column/custom-field.php',
273
- 'CPAC_Column_ACF_Placeholder' => CPAC_DIR . 'classes/column/acf-placeholder.php',
274
  'CPAC_Column_Taxonomy' => CPAC_DIR . 'classes/column/taxonomy.php',
275
  'CPAC_Column_Used_By_Menu' => CPAC_DIR . 'classes/column/used-by-menu.php'
276
  );
277
 
 
 
 
 
 
278
  // Directory to iterate
279
  $columns_dir = CPAC_DIR . 'classes/column/' . $this->type;
280
  if ( is_dir( $columns_dir ) ) {
@@ -462,21 +465,28 @@ abstract class CPAC_Storage_Model {
462
  }
463
 
464
  /**
465
- * @since 2.0.2
466
- * @param bool $ignore_check This will allow (3rd party plugins) to populate columns outside the approved screens.
 
467
  */
468
- public function set_columns( $ignore_screen_check = false ) {
469
 
470
- // Only set columns on allowed screens
471
- if ( ! $ignore_screen_check && ! $this->is_doing_ajax() && ! $this->is_columns_screen() && ! $this->is_settings_page() ) {
472
  return;
473
  }
474
 
 
 
 
 
 
 
 
 
 
475
  $this->custom_columns = $this->get_custom_registered_columns();
476
  $this->default_columns = $this->get_default_registered_columns();
477
-
478
  $this->column_types = $this->get_grouped_column_types();
479
-
480
  $this->columns = $this->get_columns();
481
  }
482
 
@@ -728,6 +738,7 @@ abstract class CPAC_Storage_Model {
728
 
729
  /**
730
  * Whether this request is an AJAX request and marked as admin-column-ajax request.
 
731
  *
732
  * @since 2.0.5
733
  * @return boolean
@@ -744,16 +755,6 @@ abstract class CPAC_Storage_Model {
744
  return false;
745
  }
746
 
747
- /**
748
- * @since 2.0.5
749
- * @return boolean
750
- */
751
- /*
752
- function is_doing_quick_edit() {
753
- return $this->is_doing_ajax() && isset( $_REQUEST['action'] ) && 'inline-save' == $_REQUEST['action'];
754
- }
755
- */
756
-
757
  /**
758
  * @since 2.0.3
759
  * @global string $pagenow
96
  // set columns paths
97
  $this->set_columns_filepath();
98
 
99
+ // Populate columns for this screen.
100
+ add_action( 'admin_init', array( $this, 'set_columns_on_current_screen' ) );
 
101
  }
102
 
103
  /**
213
  cpac_admin_message( "<strong>{$this->label}</strong> " . __( 'settings succesfully restored.', 'cpac' ), 'updated' );
214
 
215
  // refresh columns otherwise the removed columns will still display
216
+ $this->set_columns_on_current_screen();
217
  }
218
 
219
  /**
254
  cpac_admin_message( sprintf( __( 'Settings for %s updated succesfully.', 'cpac' ), "<strong>{$this->label}</strong>" ), 'updated' );
255
 
256
  // refresh columns otherwise the newly added columns will not be displayed
257
+ $this->set_columns_on_current_screen();
258
 
259
  return true;
260
  }
269
 
270
  $columns = array(
271
  'CPAC_Column_Custom_Field' => CPAC_DIR . 'classes/column/custom-field.php',
 
272
  'CPAC_Column_Taxonomy' => CPAC_DIR . 'classes/column/taxonomy.php',
273
  'CPAC_Column_Used_By_Menu' => CPAC_DIR . 'classes/column/used-by-menu.php'
274
  );
275
 
276
+ // Display ACF placeholder
277
+ if ( class_exists('acf') && ! class_exists( 'CAC_Addon_Pro' ) ) {
278
+ $columns[ 'CPAC_Column_ACF_Placeholder' ] = CPAC_DIR . 'classes/column/acf-placeholder.php';
279
+ }
280
+
281
  // Directory to iterate
282
  $columns_dir = CPAC_DIR . 'classes/column/' . $this->type;
283
  if ( is_dir( $columns_dir ) ) {
465
  }
466
 
467
  /**
468
+ * Only set columns on current screens
469
+ *
470
+ * @since 2.2.6
471
  */
472
+ public function set_columns_on_current_screen() {
473
 
474
+ if ( ! $this->is_doing_ajax() && ! $this->is_columns_screen() && ! $this->is_settings_page() ) {
 
475
  return;
476
  }
477
 
478
+ $this->set_columns();
479
+ }
480
+
481
+ /**
482
+ * @since 2.0.2
483
+ * @param bool $ignore_check This will allow (3rd party plugins) to populate columns outside the approved screens.
484
+ */
485
+ public function set_columns() {
486
+
487
  $this->custom_columns = $this->get_custom_registered_columns();
488
  $this->default_columns = $this->get_default_registered_columns();
 
489
  $this->column_types = $this->get_grouped_column_types();
 
490
  $this->columns = $this->get_columns();
491
  }
492
 
738
 
739
  /**
740
  * Whether this request is an AJAX request and marked as admin-column-ajax request.
741
+ * Mark your admin columns ajax request with plugin_id : 'cpac'.
742
  *
743
  * @since 2.0.5
744
  * @return boolean
755
  return false;
756
  }
757
 
 
 
 
 
 
 
 
 
 
 
758
  /**
759
  * @since 2.0.3
760
  * @global string $pagenow
classes/storage_model/post.php CHANGED
@@ -31,7 +31,7 @@ class CPAC_Storage_Model_Post extends CPAC_Storage_Model {
31
  add_action( "manage_{$this->post_type}_posts_custom_column", array( $this, 'manage_value' ), 100, 2 );
32
 
33
  // @todo: description
34
- add_action( 'load-edit.php', array( $this, 'set_columns' ), 1000 );
35
 
36
  parent::__construct();
37
  }
31
  add_action( "manage_{$this->post_type}_posts_custom_column", array( $this, 'manage_value' ), 100, 2 );
32
 
33
  // @todo: description
34
+ add_action( 'load-edit.php', array( $this, 'set_columns_on_current_screen' ), 1000 );
35
 
36
  parent::__construct();
37
  }
codepress-admin-columns.php CHANGED
@@ -2,7 +2,7 @@
2
  /*
3
 
4
  Plugin Name: Codepress Admin Columns
5
- Version: 2.2.5.1
6
  Description: Customize columns on the administration screens for post(types), pages, media, comments, links and users with an easy to use drag-and-drop interface.
7
  Author: Codepress
8
  Author URI: http://www.codepresshq.com
@@ -33,7 +33,7 @@ if ( ! defined( 'ABSPATH' ) ) {
33
  }
34
 
35
  // Plugin information
36
- define( 'CPAC_VERSION', '2.2.5.1' ); // current plugin version
37
  define( 'CPAC_UPGRADE_VERSION', '2.0.0' ); // this is the latest version which requires an upgrade
38
  define( 'CPAC_URL', plugin_dir_url( __FILE__ ) );
39
  define( 'CPAC_DIR', plugin_dir_path( __FILE__ ) );
@@ -233,7 +233,6 @@ class CPAC {
233
  add_action( 'admin_head', array( $this, 'global_head_scripts') );
234
 
235
  wp_register_script( 'cpac-admin-columns', CPAC_URL . 'assets/js/admin-columns.js', array( 'jquery', 'jquery-qtip2' ), CPAC_VERSION );
236
- wp_register_script( 'jquery-floatthead', CPAC_URL . 'external/floatthead/jquery.floatThead.js', array( 'jquery' ), CPAC_VERSION );
237
 
238
  if ( $this->is_columns_screen() ) {
239
  add_filter( 'admin_body_class', array( $this, 'admin_class' ) );
@@ -282,6 +281,7 @@ class CPAC {
282
  // include parent and childs
283
  require_once CPAC_DIR . 'classes/column.php';
284
  require_once CPAC_DIR . 'classes/column/default.php';
 
285
  require_once CPAC_DIR . 'classes/storage_model.php';
286
  require_once CPAC_DIR . 'classes/storage_model/post.php';
287
  require_once CPAC_DIR . 'classes/storage_model/user.php';
@@ -353,11 +353,13 @@ class CPAC {
353
 
354
  $post_types = array();
355
 
356
- if ( post_type_exists( 'post' ) )
357
  $post_types['post'] = 'post';
 
358
 
359
- if ( post_type_exists( 'page' ) )
360
  $post_types['page'] = 'page';
 
361
 
362
  $post_types = array_merge( $post_types, get_post_types( array(
363
  '_builtin' => false,
@@ -455,7 +457,7 @@ class CPAC {
455
 
456
  // JS: edit button
457
  $general_options = get_option( 'cpac_general_options' );
458
- if ( current_user_can( 'manage_admin_columns' ) && isset( $general_options['show_edit_button'] ) && '1' === $general_options['show_edit_button'] ) {
459
  $edit_link = $storage_model->get_edit_link();
460
  }
461
  }
2
  /*
3
 
4
  Plugin Name: Codepress Admin Columns
5
+ Version: 2.2.6
6
  Description: Customize columns on the administration screens for post(types), pages, media, comments, links and users with an easy to use drag-and-drop interface.
7
  Author: Codepress
8
  Author URI: http://www.codepresshq.com
33
  }
34
 
35
  // Plugin information
36
+ define( 'CPAC_VERSION', '2.2.6' ); // current plugin version
37
  define( 'CPAC_UPGRADE_VERSION', '2.0.0' ); // this is the latest version which requires an upgrade
38
  define( 'CPAC_URL', plugin_dir_url( __FILE__ ) );
39
  define( 'CPAC_DIR', plugin_dir_path( __FILE__ ) );
233
  add_action( 'admin_head', array( $this, 'global_head_scripts') );
234
 
235
  wp_register_script( 'cpac-admin-columns', CPAC_URL . 'assets/js/admin-columns.js', array( 'jquery', 'jquery-qtip2' ), CPAC_VERSION );
 
236
 
237
  if ( $this->is_columns_screen() ) {
238
  add_filter( 'admin_body_class', array( $this, 'admin_class' ) );
281
  // include parent and childs
282
  require_once CPAC_DIR . 'classes/column.php';
283
  require_once CPAC_DIR . 'classes/column/default.php';
284
+ require_once CPAC_DIR . 'classes/column/actions.php';
285
  require_once CPAC_DIR . 'classes/storage_model.php';
286
  require_once CPAC_DIR . 'classes/storage_model/post.php';
287
  require_once CPAC_DIR . 'classes/storage_model/user.php';
353
 
354
  $post_types = array();
355
 
356
+ if ( post_type_exists( 'post' ) ) {
357
  $post_types['post'] = 'post';
358
+ }
359
 
360
+ if ( post_type_exists( 'page' ) ) {
361
  $post_types['page'] = 'page';
362
+ }
363
 
364
  $post_types = array_merge( $post_types, get_post_types( array(
365
  '_builtin' => false,
457
 
458
  // JS: edit button
459
  $general_options = get_option( 'cpac_general_options' );
460
+ if ( current_user_can( 'manage_admin_columns' ) && ! isset( $general_options['show_edit_button'] ) || ( '1' === $general_options['show_edit_button'] ) ) {
461
  $edit_link = $storage_model->get_edit_link();
462
  }
463
  }
external/floatthead/jquery.floatThead.js DELETED
@@ -1,757 +0,0 @@
1
- // @preserve jQuery.floatThead 1.2.8 - http://mkoryak.github.io/floatThead/ - Copyright (c) 2012 - 2014 Misha Koryak
2
- // @license MIT
3
-
4
- /* @author Misha Koryak
5
- * @projectDescription lock a table header in place while scrolling - without breaking styles or events bound to the header
6
- *
7
- * Dependencies:
8
- * jquery 1.9.0 + [required] OR jquery 1.7.0 + jquery UI core
9
- *
10
- * http://mkoryak.github.io/floatThead/
11
- *
12
- * Tested on FF13+, Chrome 21+, IE8, IE9, IE10, IE11
13
- *
14
- */
15
- (function( $ ) {
16
- /**
17
- * provides a default config object. You can modify this after including this script if you want to change the init defaults
18
- * @type {Object}
19
- */
20
- $.floatThead = $.floatThead || {};
21
- $.floatThead.defaults = {
22
- cellTag: 'th:visible', //thead cells are this
23
- zIndex: 1001, //zindex of the floating thead (actually a container div)
24
- debounceResizeMs: 10,
25
- useAbsolutePositioning: true, //if set to NULL - defaults: has scrollContainer=true, doesn't have scrollContainer=false
26
- scrollingTop: 0, //String or function($table) - offset from top of window where the header should not pass above
27
- scrollingBottom: 0, //String or function($table) - offset from the bottom of the table where the header should stop scrolling
28
- scrollContainer: function($table){
29
- return $([]); //if the table has horizontal scroll bars then this is the container that has overflow:auto and causes those scroll bars
30
- },
31
- getSizingRow: function($table, $cols, $fthCells){ // this is only called when using IE,
32
- // override it if the first row of the table is going to contain colgroups (any cell spans greater then one col)
33
- // it should return a jquery object containing a wrapped set of table cells comprising a row that contains no col spans and is visible
34
- return $table.find('tbody tr:visible:first>*');
35
- },
36
- floatTableClass: 'floatThead-table',
37
- floatWrapperClass: 'floatThead-wrapper',
38
- floatContainerClass: 'floatThead-container',
39
- copyTableClass: true, //copy 'class' attribute from table into the floated table so that the styles match.
40
- debug: false //print possible issues (that don't prevent script loading) to console, if console exists.
41
- };
42
-
43
- var util = window._;
44
-
45
- //browser stuff
46
- var ieVersion = function(){for(var a=3,b=document.createElement("b"),c=b.all||[];a = 1+a,b.innerHTML="<!--[if gt IE "+ a +"]><i><![endif]-->",c[0];);return 4<a?a:document.documentMode}();
47
- var isChrome = null;
48
- var isChromeCheck = function(){
49
- if(ieVersion){
50
- return false;
51
- }
52
- var $table = $("<table><colgroup><col></colgroup><tbody><tr><td style='width:10px'></td></tbody></table>");
53
- $('body').append($table);
54
- var width = $table.find('col').width();
55
- $table.remove();
56
- return width == 0;
57
- };
58
-
59
- var $window = $(window);
60
- var floatTheadCreated = 0;
61
-
62
-
63
- /**
64
- * @param debounceMs
65
- * @param cb
66
- */
67
-
68
- function windowResize(debounceMs, eventName, cb){
69
- if(ieVersion == 8){ //ie8 is crap: https://github.com/mkoryak/floatThead/issues/65
70
- var winWidth = $window.width();
71
- var debouncedCb = util.debounce(function(){
72
- var winWidthNew = $window.width();
73
- if(winWidth != winWidthNew){
74
- winWidth = winWidthNew;
75
- cb();
76
- }
77
- }, debounceMs);
78
- $window.on(eventName, debouncedCb);
79
- } else {
80
- $window.on(eventName, util.debounce(cb, debounceMs));
81
- }
82
- }
83
-
84
-
85
- function debug(str){
86
- window.console && window.console && window.console.log && window.console.log(str);
87
- }
88
-
89
- /**
90
- * try to calculate the scrollbar width for your browser/os
91
- * @return {Number}
92
- */
93
- function scrollbarWidth() {
94
- var $div = $( //borrowed from anti-scroll
95
- '<div style="width:50px;height:50px;overflow-y:scroll;'
96
- + 'position:absolute;top:-200px;left:-200px;"><div style="height:100px;width:100%">'
97
- + '</div>'
98
- );
99
- $('body').append($div);
100
- var w1 = $div.innerWidth();
101
- var w2 = $('div', $div).innerWidth();
102
- $div.remove();
103
- return w1 - w2;
104
- }
105
- /**
106
- * Check if a given table has been datatableized (http://datatables.net)
107
- * @param $table
108
- * @return {Boolean}
109
- */
110
- function isDatatable($table){
111
- if($table.dataTableSettings){
112
- for(var i = 0; i < $table.dataTableSettings.length; i++){
113
- var table = $table.dataTableSettings[i].nTable;
114
- if($table[0] == table){
115
- return true;
116
- }
117
- }
118
- }
119
- return false;
120
- }
121
- $.fn.floatThead = function(map){
122
- map = map || {};
123
- if(!util){ //may have been included after the script? lets try to grab it again.
124
- util = window._ || $.floatThead._;
125
- if(!util){
126
- throw new Error("jquery.floatThead-slim.js requires underscore. You should use the non-lite version since you do not have underscore.");
127
- }
128
- }
129
-
130
- if(ieVersion < 8){
131
- return this; //no more crappy browser support.
132
- }
133
-
134
- if(isChrome == null){ //make sure this is done only once no matter how many times you call the plugin fn
135
- isChrome = isChromeCheck(); //need to call this after dom ready, and now it is.
136
- if(isChrome){
137
- //because chrome cant read <col> width, these elements are used for sizing the table. Need to create new elements because they must be unstyled by user's css.
138
- document.createElement('fthtr'); //tr
139
- document.createElement('fthtd'); //td
140
- document.createElement('fthfoot'); //tfoot
141
- }
142
- }
143
- if(util.isString(map)){
144
- var command = map;
145
- var ret = this;
146
- this.filter('table').each(function(){
147
- var obj = $(this).data('floatThead-attached');
148
- if(obj && util.isFunction(obj[command])){
149
- var r = obj[command]();
150
- if(typeof r !== 'undefined'){
151
- ret = r;
152
- }
153
- }
154
- });
155
- return ret;
156
- }
157
- var opts = $.extend({}, $.floatThead.defaults || {}, map);
158
-
159
- $.each(map, function(key, val){
160
- if((!(key in $.floatThead.defaults)) && opts.debug){
161
- debug("jQuery.floatThead: used ["+key+"] key to init plugin, but that param is not an option for the plugin. Valid options are: "+ (util.keys($.floatThead.defaults)).join(', '));
162
- }
163
- });
164
-
165
- this.filter(':not(.'+opts.floatTableClass+')').each(function(){
166
- var floatTheadId = floatTheadCreated;
167
- var $table = $(this);
168
- if($table.data('floatThead-attached')){
169
- return true; //continue the each loop
170
- }
171
- if(!$table.is('table')){
172
- throw new Error('jQuery.floatThead must be run on a table element. ex: $("table").floatThead();');
173
- }
174
- var $header = $table.find('thead:first');
175
- var $tbody = $table.find('tbody:first');
176
- if($header.length == 0){
177
- throw new Error('jQuery.floatThead must be run on a table that contains a <thead> element');
178
- }
179
- var headerFloated = false;
180
- var scrollingTop, scrollingBottom;
181
- var scrollbarOffset = {vertical: 0, horizontal: 0};
182
- var scWidth = scrollbarWidth();
183
- var lastColumnCount = 0; //used by columnNum()
184
- var $scrollContainer = opts.scrollContainer($table) || $([]); //guard against returned nulls
185
-
186
- var useAbsolutePositioning = opts.useAbsolutePositioning;
187
- if(useAbsolutePositioning == null){ //defaults: locked=true, !locked=false
188
- useAbsolutePositioning = opts.scrollContainer($table).length;
189
- }
190
- var $caption = $table.find("caption");
191
- var haveCaption = $caption.length == 1;
192
- if(haveCaption){
193
- var captionAlignTop = ($caption.css("caption-side") || $caption.attr("align") || "top") === "top";
194
- }
195
-
196
- var $fthGrp = $('<fthfoot style="display:table-footer-group;"/>');
197
-
198
- var locked = $scrollContainer.length > 0;
199
- var wrappedContainer = false; //used with absolute positioning enabled. did we need to wrap the scrollContainer/table with a relative div?
200
- var $wrapper = $([]); //used when absolute positioning enabled - wraps the table and the float container
201
- var absoluteToFixedOnScroll = ieVersion <= 9 && !locked && useAbsolutePositioning; //on ie using absolute positioning doesnt look good with window scrolling, so we change positon to fixed on scroll, and then change it back to absolute when done.
202
- var $floatTable = $("<table/>");
203
- var $floatColGroup = $("<colgroup/>");
204
- var $tableColGroup = $table.find('colgroup:first');
205
- var existingColGroup = true;
206
- if($tableColGroup.length == 0){
207
- $tableColGroup = $("<colgroup/>");
208
- existingColGroup = false;
209
- }
210
- var $fthRow = $('<fthrow style="display:table-row;height:0;"/>'); //created unstyled elements
211
- var $floatContainer = $('<div style="overflow: hidden;"></div>');
212
- var $newHeader = $("<thead/>");
213
- var $sizerRow = $('<tr class="size-row"/>');
214
- var $sizerCells = $([]);
215
- var $tableCells = $([]); //used for sizing - either $sizerCells or $tableColGroup cols. $tableColGroup cols are only created in chrome for borderCollapse:collapse because of a chrome bug.
216
- var $headerCells = $([]);
217
- var $fthCells = $([]); //created elements
218
-
219
- $newHeader.append($sizerRow);
220
- $table.prepend($tableColGroup);
221
- if(isChrome){
222
- $fthGrp.append($fthRow);
223
- $table.append($fthGrp);
224
- }
225
-
226
- $floatTable.append($floatColGroup);
227
- $floatContainer.append($floatTable);
228
- if(opts.copyTableClass){
229
- $floatTable.attr('class', $table.attr('class'));
230
- }
231
- $floatTable.attr({ //copy over some deprecated table attributes that people still like to use. Good thing poeple dont use colgroups...
232
- 'cellpadding': $table.attr('cellpadding'),
233
- 'cellspacing': $table.attr('cellspacing'),
234
- 'border': $table.attr('border')
235
- });
236
-
237
- $floatTable.addClass(opts.floatTableClass).css('margin', 0); //must have no margins or you wont be able to click on things under floating table
238
-
239
- if(useAbsolutePositioning){
240
- var makeRelative = function($container, alwaysWrap){
241
- var positionCss = $container.css('position');
242
- var relativeToScrollContainer = (positionCss == "relative" || positionCss == "absolute");
243
- if(!relativeToScrollContainer || alwaysWrap){
244
- var css = {"paddingLeft": $container.css('paddingLeft'), "paddingRight": $container.css('paddingRight')};
245
- $floatContainer.css(css);
246
- $container = $container.wrap("<div class='"+opts.floatWrapperClass+"' style='position: relative; clear:both;'></div>").parent();
247
- wrappedContainer = true;
248
- }
249
- return $container;
250
- };
251
- if(locked){
252
- $wrapper = makeRelative($scrollContainer, true);
253
- $wrapper.append($floatContainer);
254
- } else {
255
- $wrapper = makeRelative($table);
256
- $table.after($floatContainer);
257
- }
258
- } else {
259
- $table.after($floatContainer);
260
- }
261
-
262
-
263
- $floatContainer.css({
264
- position: useAbsolutePositioning ? 'absolute' : 'fixed',
265
- marginTop: 0,
266
- top: useAbsolutePositioning ? 0 : 'auto',
267
- zIndex: opts.zIndex
268
- });
269
- $floatContainer.addClass(opts.floatContainerClass);
270
- updateScrollingOffsets();
271
-
272
- var layoutFixed = {'table-layout': 'fixed'};
273
- var layoutAuto = {'table-layout': $table.css('tableLayout') || 'auto'};
274
- var originalTableWidth = $table[0].style.width || ""; //setting this to auto is bad: #70
275
-
276
- function eventName(name){
277
- return name+'.fth-'+floatTheadId+'.floatTHead'
278
- }
279
-
280
- function setHeaderHeight(){
281
- var headerHeight = 0;
282
- $header.find("tr:visible").each(function(){
283
- headerHeight += $(this).outerHeight(true);
284
- });
285
- $sizerRow.outerHeight(headerHeight);
286
- $sizerCells.outerHeight(headerHeight);
287
- }
288
-
289
-
290
- function setFloatWidth(){
291
- var tableWidth = $table.outerWidth();
292
- var width = $scrollContainer.width() || tableWidth;
293
- $floatContainer.width(width - scrollbarOffset.vertical);
294
- if(locked){
295
- var percent = 100 * tableWidth / (width - scrollbarOffset.vertical);
296
- $floatTable.css('width', percent+'%');
297
- } else {
298
- $floatTable.outerWidth(tableWidth);
299
- }
300
- }
301
-
302
- function updateScrollingOffsets(){
303
- scrollingTop = (util.isFunction(opts.scrollingTop) ? opts.scrollingTop($table) : opts.scrollingTop) || 0;
304
- scrollingBottom = (util.isFunction(opts.scrollingBottom) ? opts.scrollingBottom($table) : opts.scrollingBottom) || 0;
305
- }
306
-
307
- /**
308
- * get the number of columns and also rebuild resizer rows if the count is different then the last count
309
- */
310
- function columnNum(){
311
- var count, $headerColumns;
312
- if(existingColGroup){
313
- count = $tableColGroup.find('col').length;
314
- } else {
315
- $headerColumns = $header.find('tr:first>'+opts.cellTag);
316
- count = 0;
317
- $headerColumns.each(function(){
318
- count += parseInt(($(this).attr('colspan') || 1), 10);
319
- });
320
- }
321
- if(count != lastColumnCount){
322
- lastColumnCount = count;
323
- var cells = [], cols = [], psuedo = [];
324
- for(var x = 0; x < count; x++){
325
- cells.push('<th class="floatThead-col"/>');
326
- cols.push('<col/>');
327
- psuedo.push("<fthtd style='display:table-cell;height:0;width:auto;'/>");
328
- }
329
-
330
- cols = cols.join('');
331
- cells = cells.join('');
332
-
333
- if(isChrome){
334
- psuedo = psuedo.join('');
335
- $fthRow.html(psuedo);
336
- $fthCells = $fthRow.find('fthtd');
337
- }
338
-
339
- $sizerRow.html(cells);
340
- $sizerCells = $sizerRow.find("th");
341
- if(!existingColGroup){
342
- $tableColGroup.html(cols);
343
- }
344
- $tableCells = $tableColGroup.find('col');
345
- $floatColGroup.html(cols);
346
- $headerCells = $floatColGroup.find("col");
347
-
348
- }
349
- return count;
350
- }
351
-
352
- function refloat(){ //make the thing float
353
- if(!headerFloated){
354
- headerFloated = true;
355
- if(useAbsolutePositioning){ //#53, #56
356
- var tableWidth = $table.width();
357
- var wrapperWidth = $wrapper.width();
358
- if(tableWidth > wrapperWidth){
359
- $table.css('minWidth', tableWidth);
360
- }
361
- }
362
- $table.css(layoutFixed);
363
- $floatTable.css(layoutFixed);
364
- $floatTable.append($header); //append because colgroup must go first in chrome
365
- $tbody.before($newHeader);
366
- setHeaderHeight();
367
- }
368
- }
369
- function unfloat(){ //put the header back into the table
370
- if(headerFloated){
371
- headerFloated = false;
372
- if(useAbsolutePositioning){ //#53, #56
373
- $table.width(originalTableWidth);
374
- }
375
- $newHeader.detach();
376
- $table.prepend($header);
377
- $table.css(layoutAuto);
378
- $floatTable.css(layoutAuto);
379
- }
380
- }
381
- function changePositioning(isAbsolute){
382
- if(useAbsolutePositioning != isAbsolute){
383
- useAbsolutePositioning = isAbsolute;
384
- $floatContainer.css({
385
- position: useAbsolutePositioning ? 'absolute' : 'fixed'
386
- });
387
- }
388
- }
389
- function getSizingRow($table, $cols, $fthCells, ieVersion){
390
- if(isChrome){
391
- return $fthCells;
392
- } else if(ieVersion) {
393
- return opts.getSizingRow($table, $cols, $fthCells);
394
- } else {
395
- return $cols;
396
- }
397
- }
398
-
399
- /**
400
- * returns a function that updates the floating header's cell widths.
401
- * @return {Function}
402
- */
403
- function reflow(){
404
- var i;
405
- var numCols = columnNum(); //if the tables columns change dynamically since last time (datatables) we need to rebuild the sizer rows and get new count
406
- return function(){
407
- var $rowCells = getSizingRow($table, $tableCells, $fthCells, ieVersion);
408
- if($rowCells.length == numCols && numCols > 0){
409
- if(!existingColGroup){
410
- for(i=0; i < numCols; i++){
411
- $tableCells.eq(i).css('width', '');
412
- }
413
- }
414
- unfloat();
415
- for(i=0; i < numCols; i++){
416
- var _rowcell = $rowCells.get(i);
417
- var rowWidth = _rowcell.offsetWidth;
418
- $headerCells.eq(i).width(rowWidth);
419
- $tableCells.eq(i).width(rowWidth);
420
- }
421
- refloat();
422
- } else {
423
- $floatTable.append($header);
424
- $table.css(layoutAuto);
425
- $floatTable.css(layoutAuto);
426
- setHeaderHeight();
427
- }
428
- };
429
- }
430
-
431
- /**
432
- * first performs initial calculations that we expect to not change when the table, window, or scrolling container are scrolled.
433
- * returns a function that calculates the floating container's top and left coords. takes into account if we are using page scrolling or inner scrolling
434
- * @return {Function}
435
- */
436
- function calculateFloatContainerPosFn(){
437
- var scrollingContainerTop = $scrollContainer.scrollTop();
438
-
439
- //this floatEnd calc was moved out of the returned function because we assume the table height doesnt change (otherwise we must reinit by calling calculateFloatContainerPosFn)
440
- var floatEnd;
441
- var tableContainerGap = 0;
442
- var captionHeight = haveCaption ? $caption.outerHeight(true) : 0;
443
- var captionScrollOffset = captionAlignTop ? captionHeight : -captionHeight;
444
-
445
- var floatContainerHeight = $floatContainer.height();
446
- var tableOffset = $table.offset();
447
- if(locked){
448
- var containerOffset = $scrollContainer.offset();
449
- tableContainerGap = tableOffset.top - containerOffset.top + scrollingContainerTop;
450
- if(haveCaption && captionAlignTop){
451
- tableContainerGap += captionHeight;
452
- }
453
- } else {
454
- floatEnd = tableOffset.top - scrollingTop - floatContainerHeight + scrollingBottom + scrollbarOffset.horizontal;
455
- }
456
- var windowTop = $window.scrollTop();
457
- var windowLeft = $window.scrollLeft();
458
- var scrollContainerLeft = $scrollContainer.scrollLeft();
459
- scrollingContainerTop = $scrollContainer.scrollTop();
460
-
461
-
462
-
463
- return function(eventType){
464
- if(eventType == 'windowScroll'){
465
- windowTop = $window.scrollTop();
466
- windowLeft = $window.scrollLeft();
467
- } else if(eventType == 'containerScroll'){
468
- scrollingContainerTop = $scrollContainer.scrollTop();
469
- scrollContainerLeft = $scrollContainer.scrollLeft();
470
- } else if(eventType != 'init') {
471
- windowTop = $window.scrollTop();
472
- windowLeft = $window.scrollLeft();
473
- scrollingContainerTop = $scrollContainer.scrollTop();
474
- scrollContainerLeft = $scrollContainer.scrollLeft();
475
- }
476
- if(isChrome && (windowTop < 0 || windowLeft < 0)){ //chrome overscroll effect at the top of the page - breaks fixed positioned floated headers
477
- return;
478
- }
479
-
480
- if(absoluteToFixedOnScroll){
481
- if(eventType == 'windowScrollDone'){
482
- changePositioning(true); //change to absolute
483
- } else {
484
- changePositioning(false); //change to fixed
485
- }
486
- } else if(eventType == 'windowScrollDone'){
487
- return null; //event is fired when they stop scrolling. ignore it if not 'absoluteToFixedOnScroll'
488
- }
489
-
490
- tableOffset = $table.offset();
491
- if(haveCaption && captionAlignTop){
492
- tableOffset.top += captionHeight;
493
- }
494
- var top, left;
495
- var tableHeight = $table.outerHeight();
496
-
497
- if(locked && useAbsolutePositioning){ //inner scrolling, absolute positioning
498
- if (tableContainerGap >= scrollingContainerTop) {
499
- var gap = tableContainerGap - scrollingContainerTop;
500
- gap = gap > 0 ? gap : 0;
501
- top = gap;
502
- } else {
503
- top = wrappedContainer ? 0 : scrollingContainerTop;
504
- //headers stop at the top of the viewport
505
- }
506
- left = 0;
507
- } else if(!locked && useAbsolutePositioning) { //window scrolling, absolute positioning
508
- if(windowTop > floatEnd + tableHeight + captionScrollOffset){
509
- top = tableHeight - floatContainerHeight + captionScrollOffset; //scrolled past table
510
- } else if (tableOffset.top > windowTop + scrollingTop) {
511
- top = 0; //scrolling to table
512
- unfloat();
513
- } else {
514
- top = scrollingTop + windowTop - tableOffset.top + tableContainerGap + (captionAlignTop ? captionHeight : 0);
515
- refloat(); //scrolling within table. header floated
516
- }
517
- left = 0;
518
- } else if(locked && !useAbsolutePositioning){ //inner scrolling, fixed positioning
519
- if (tableContainerGap > scrollingContainerTop || scrollingContainerTop - tableContainerGap > tableHeight) {
520
- top = tableOffset.top - windowTop;
521
- unfloat();
522
- } else {
523
- top = tableOffset.top + scrollingContainerTop - windowTop - tableContainerGap;
524
- refloat();
525
- //headers stop at the top of the viewport
526
- }
527
- left = tableOffset.left + scrollContainerLeft - windowLeft;
528
- } else if(!locked && !useAbsolutePositioning) { //window scrolling, fixed positioning
529
- if(windowTop > floatEnd + tableHeight + captionScrollOffset){
530
- top = tableHeight + scrollingTop - windowTop + floatEnd + captionScrollOffset;
531
- //scrolled past the bottom of the table
532
- } else if (tableOffset.top > windowTop + scrollingTop) {
533
- top = tableOffset.top - windowTop;
534
- refloat();
535
- //scrolled past the top of the table
536
- } else {
537
- //scrolling within the table
538
- top = scrollingTop;
539
- }
540
- left = tableOffset.left - windowLeft;
541
- }
542
- return {top: top, left: left};
543
- };
544
- }
545
- /**
546
- * returns a function that caches old floating container position and only updates css when the position changes
547
- * @return {Function}
548
- */
549
- function repositionFloatContainerFn(){
550
- var oldTop = null;
551
- var oldLeft = null;
552
- var oldScrollLeft = null;
553
- return function(pos, setWidth, setHeight){
554
- if(pos != null && (oldTop != pos.top || oldLeft != pos.left)){
555
- $floatContainer.css({
556
- top: pos.top,
557
- left: pos.left
558
- });
559
- oldTop = pos.top;
560
- oldLeft = pos.left;
561
- }
562
- if(setWidth){
563
- setFloatWidth();
564
- }
565
- if(setHeight){
566
- setHeaderHeight();
567
- }
568
- var scrollLeft = $scrollContainer.scrollLeft();
569
- if(oldScrollLeft != scrollLeft){
570
- $floatContainer.scrollLeft(scrollLeft);
571
- oldScrollLeft = scrollLeft;
572
- }
573
- }
574
- }
575
-
576
- /**
577
- * checks if THIS table has scrollbars, and finds their widths
578
- */
579
- function calculateScrollBarSize(){ //this should happen after the floating table has been positioned
580
- if($scrollContainer.length){
581
- var sw = $scrollContainer.width(), sh = $scrollContainer.height(), th = $table.height(), tw = $table.width();
582
- var offseth = sw < tw ? scWidth : 0;
583
- var offsetv = sh < th ? scWidth : 0;
584
- scrollbarOffset.horizontal = sw - offsetv < tw ? scWidth : 0;
585
- scrollbarOffset.vertical = sh - offseth < th ? scWidth: 0;
586
- }
587
- }
588
- //finish up. create all calculation functions and bind them to events
589
- calculateScrollBarSize();
590
-
591
- var flow;
592
-
593
- var ensureReflow = function(){
594
- flow = reflow();
595
- flow();
596
- };
597
-
598
- ensureReflow();
599
-
600
- var calculateFloatContainerPos = calculateFloatContainerPosFn();
601
- var repositionFloatContainer = repositionFloatContainerFn();
602
-
603
- repositionFloatContainer(calculateFloatContainerPos('init'), true); //this must come after reflow because reflow changes scrollLeft back to 0 when it rips out the thead
604
-
605
- var windowScrollDoneEvent = util.debounce(function(){
606
- repositionFloatContainer(calculateFloatContainerPos('windowScrollDone'), false);
607
- }, 300);
608
-
609
- var windowScrollEvent = function(){
610
- repositionFloatContainer(calculateFloatContainerPos('windowScroll'), false);
611
- windowScrollDoneEvent();
612
- };
613
- var containerScrollEvent = function(){
614
- repositionFloatContainer(calculateFloatContainerPos('containerScroll'), false);
615
- };
616
-
617
-
618
- var windowResizeEvent = function(){
619
- updateScrollingOffsets();
620
- calculateScrollBarSize();
621
- ensureReflow();
622
- calculateFloatContainerPos = calculateFloatContainerPosFn();
623
- repositionFloatContainer = repositionFloatContainerFn();
624
- repositionFloatContainer(calculateFloatContainerPos('resize'), true, true);
625
- };
626
- var reflowEvent = util.debounce(function(){
627
- calculateScrollBarSize();
628
- updateScrollingOffsets();
629
- ensureReflow();
630
- calculateFloatContainerPos = calculateFloatContainerPosFn();
631
- repositionFloatContainer(calculateFloatContainerPos('reflow'), true);
632
- }, 1);
633
- if(locked){ //internal scrolling
634
- if(useAbsolutePositioning){
635
- $scrollContainer.on(eventName('scroll'), containerScrollEvent);
636
- } else {
637
- $scrollContainer.on(eventName('scroll'), containerScrollEvent);
638
- $window.on(eventName('scroll'), windowScrollEvent);
639
- }
640
- } else { //window scrolling
641
- $window.on(eventName('scroll'), windowScrollEvent);
642
- }
643
-
644
- $window.on(eventName('load'), reflowEvent); //for tables with images
645
-
646
- windowResize(opts.debounceResizeMs, eventName('resize'), windowResizeEvent);
647
- $table.on('reflow', reflowEvent);
648
- if(isDatatable($table)){
649
- $table
650
- .on('filter', reflowEvent)
651
- .on('sort', reflowEvent)
652
- .on('page', reflowEvent);
653
- }
654
-
655
- //attach some useful functions to the table.
656
- $table.data('floatThead-attached', {
657
- destroy: function(){
658
- var ns = '.fth-'+floatTheadId;
659
- unfloat();
660
- $table.css(layoutAuto);
661
- $tableColGroup.remove();
662
- isChrome && $fthGrp.remove();
663
- if($newHeader.parent().length){ //only if its in the dom
664
- $newHeader.replaceWith($header);
665
- }
666
- $table.off('reflow');
667
- $scrollContainer.off(ns);
668
- if (wrappedContainer) {
669
- $scrollContainer.unwrap();
670
- }
671
- $floatContainer.remove();
672
- $table.data('floatThead-attached', false);
673
-
674
- $window.off(ns);
675
- },
676
- reflow: function(){
677
- reflowEvent();
678
- },
679
- setHeaderHeight: function(){
680
- setHeaderHeight();
681
- },
682
- getFloatContainer: function(){
683
- return $floatContainer;
684
- },
685
- getRowGroups: function(){
686
- if(headerFloated){
687
- return $floatContainer.find("thead").add($table.find("tbody,tfoot"));
688
- } else {
689
- return $table.find("thead,tbody,tfoot");
690
- }
691
- }
692
- });
693
- floatTheadCreated++;
694
- });
695
- return this;
696
- };
697
- })(jQuery);
698
-
699
- /* jQuery.floatThead.utils - http://mkoryak.github.io/floatThead/ - Copyright (c) 2012 - 2014 Misha Koryak
700
- * License: MIT
701
- *
702
- * This file is required if you do not use underscore in your project and you want to use floatThead.
703
- * It contains functions from underscore that the plugin uses.
704
- *
705
- * YOU DON'T NEED TO INCLUDE THIS IF YOU ALREADY INCLUDE UNDERSCORE!
706
- *
707
- */
708
-
709
- (function($){
710
-
711
- $.floatThead = $.floatThead || {};
712
-
713
- $.floatThead._ = window._ || (function(){
714
- var that = {};
715
- var hasOwnProperty = Object.prototype.hasOwnProperty, isThings = ['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'];
716
- that.has = function(obj, key) {
717
- return hasOwnProperty.call(obj, key);
718
- };
719
- that.keys = function(obj) {
720
- if (obj !== Object(obj)) throw new TypeError('Invalid object');
721
- var keys = [];
722
- for (var key in obj) if (that.has(obj, key)) keys.push(key);
723
- return keys;
724
- };
725
- $.each(isThings, function(){
726
- var name = this;
727
- that['is' + name] = function(obj) {
728
- return Object.prototype.toString.call(obj) == '[object ' + name + ']';
729
- };
730
- });
731
- that.debounce = function(func, wait, immediate) {
732
- var timeout, args, context, timestamp, result;
733
- return function() {
734
- context = this;
735
- args = arguments;
736
- timestamp = new Date();
737
- var later = function() {
738
- var last = (new Date()) - timestamp;
739
- if (last < wait) {
740
- timeout = setTimeout(later, wait - last);
741
- } else {
742
- timeout = null;
743
- if (!immediate) result = func.apply(context, args);
744
- }
745
- };
746
- var callNow = immediate && !timeout;
747
- if (!timeout) {
748
- timeout = setTimeout(later, wait);
749
- }
750
- if (callNow) result = func.apply(context, args);
751
- return result;
752
- };
753
- };
754
- return that;
755
- })();
756
- })(jQuery);
757
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/cpac.po CHANGED
@@ -2,8 +2,8 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Codepress Admin Columns\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2014-06-25 16:44+0100\n"
6
- "PO-Revision-Date: 2014-06-25 16:44+0100\n"
7
  "Last-Translator: Codepress <info@codepress.nl>\n"
8
  "Language-Team: Codepress <info@codepress.nl>\n"
9
  "Language: en_GB\n"
@@ -13,7 +13,7 @@ msgstr ""
13
  "X-Poedit-KeywordsList: __;_e\n"
14
  "X-Poedit-Basepath: .\n"
15
  "X-Poedit-SourceCharset: UTF-8\n"
16
- "X-Generator: Poedit 1.6.5\n"
17
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18
  "X-Poedit-SearchPath-0: .\n"
19
  "X-Poedit-SearchPath-1: ..\n"
@@ -32,123 +32,133 @@ msgid ""
32
  "seconds!"
33
  msgstr ""
34
 
35
- #: ../classes/column.php:503
 
 
 
 
 
 
 
 
 
 
36
  msgid "Thumbnail"
37
  msgstr ""
38
 
39
- #: ../classes/column.php:504
40
  msgid "Medium"
41
  msgstr ""
42
 
43
- #: ../classes/column.php:505
44
  msgid "Large"
45
  msgstr ""
46
 
47
- #: ../classes/column.php:506
48
  msgid "Full"
49
  msgstr ""
50
 
51
- #: ../classes/column.php:773
52
  msgid "Date Format"
53
  msgstr ""
54
 
55
- #: ../classes/column.php:774
56
  msgid "This will determine how the date will be displayed."
57
  msgstr ""
58
 
59
- #: ../classes/column.php:780
60
  msgid "Example:"
61
  msgstr ""
62
 
63
- #: ../classes/column.php:782
64
  #, php-format
65
  msgid ""
66
  "Leave empty for WordPress date format, change your <a href=\"%s\">default "
67
  "date format here</a>."
68
  msgstr ""
69
 
70
- #: ../classes/column.php:783
71
  msgid "Documentation on date and time formatting."
72
  msgstr ""
73
 
74
- #: ../classes/column.php:797
75
  msgid "Excerpt length"
76
  msgstr ""
77
 
78
- #: ../classes/column.php:798
79
  msgid "Number of words"
80
  msgstr ""
81
 
82
- #: ../classes/column.php:816
83
  msgid "Preview size"
84
  msgstr ""
85
 
86
- #: ../classes/column.php:833 ../classes/storage_model.php:508
87
  msgid "Custom"
88
  msgstr ""
89
 
90
- #: ../classes/column.php:836
91
  msgid "width"
92
  msgstr ""
93
 
94
- #: ../classes/column.php:839
95
  msgid "height"
96
  msgstr ""
97
 
98
- #: ../classes/column.php:853
99
  msgid "Before"
100
  msgstr ""
101
 
102
- #: ../classes/column.php:853
103
  msgid "This text will appear before the custom field value."
104
  msgstr ""
105
 
106
- #: ../classes/column.php:859
107
  msgid "After"
108
  msgstr ""
109
 
110
- #: ../classes/column.php:859
111
  msgid "This text will appear after the custom field value."
112
  msgstr ""
113
 
114
- #: ../classes/column.php:948 ../classes/column/comment/actions.php:99
115
- #: ../classes/column/link/actions.php:48 ../classes/column/post/actions.php:60
116
  #: ../classes/column/user/actions.php:69
117
  msgid "Edit"
118
  msgstr ""
119
 
120
- #: ../classes/column.php:949 ../classes/column.php:1027
121
  #: ../classes/column/user/actions.php:77
122
  msgid "Remove"
123
  msgstr ""
124
 
125
- #: ../classes/column.php:967
126
  msgid "Type"
127
  msgstr ""
128
 
129
- #: ../classes/column.php:967
130
  msgid "Choose a column type."
131
  msgstr ""
132
 
133
- #: ../classes/column.php:967 ../classes/column/comment/ID.php:19
134
  #: ../classes/column/link/ID.php:19 ../classes/column/media/ID.php:19
135
  #: ../classes/column/post/ID.php:19
136
  msgid "ID"
137
  msgstr ""
138
 
139
- #: ../classes/column.php:977
140
  msgid "Label"
141
  msgstr ""
142
 
143
- #: ../classes/column.php:977
144
  msgid "This is the name which will appear as the column header."
145
  msgstr ""
146
 
147
- #: ../classes/column.php:984 ../classes/column/media/width.php:19
148
  msgid "Width"
149
  msgstr ""
150
 
151
- #: ../classes/column.php:986 ../classes/column.php:987
152
  msgid "default"
153
  msgstr ""
154
 
@@ -178,13 +188,31 @@ msgstr ""
178
  msgid "Find out more"
179
  msgstr ""
180
 
181
- #: ../classes/column/comment/actions.php:19
182
  #: ../classes/column/link/actions.php:19
183
  #: ../classes/column/media/actions.php:20
184
- #: ../classes/column/post/actions.php:19 ../classes/column/user/actions.php:19
185
  msgid "Actions"
186
  msgstr ""
187
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
188
  #: ../classes/column/comment/actions.php:76
189
  #: ../classes/column/comment/actions.php:81
190
  msgid "Unapprove"
@@ -196,17 +224,17 @@ msgid "Approve"
196
  msgstr ""
197
 
198
  #: ../classes/column/comment/actions.php:89
199
- #: ../classes/column/post/actions.php:65 ../classes/settings.php:687
200
  msgid "Restore"
201
  msgstr ""
202
 
203
  #: ../classes/column/comment/actions.php:93
204
- #: ../classes/column/post/actions.php:69
205
  msgid "Delete Permanently"
206
  msgstr ""
207
 
208
  #: ../classes/column/comment/actions.php:100
209
- #: ../classes/column/post/actions.php:61
210
  msgid "Quick&nbsp;Edit"
211
  msgstr ""
212
 
@@ -219,7 +247,7 @@ msgid "Agent"
219
  msgstr ""
220
 
221
  #: ../classes/column/comment/approved.php:19
222
- #: ../classes/column/post/comment-count.php:34
223
  msgid "Approved"
224
  msgstr ""
225
 
@@ -253,13 +281,13 @@ msgstr ""
253
  msgid "Submitted on <a href=\"%1$s\">%2$s at %3$s</a>"
254
  msgstr ""
255
 
256
- #: ../classes/column/comment/date.php:19 ../classes/column/custom-field.php:67
257
  #: ../classes/settings.php:300
258
  msgid "Date"
259
  msgstr ""
260
 
261
  #: ../classes/column/comment/excerpt.php:19
262
- #: ../classes/column/custom-field.php:68 ../classes/column/post/excerpt.php:19
263
  #: ../classes/settings.php:297
264
  msgid "Excerpt"
265
  msgstr ""
@@ -273,66 +301,66 @@ msgstr ""
273
  msgid "Word count"
274
  msgstr ""
275
 
276
- #: ../classes/column/custom-field.php:20
277
- #: ../classes/column/custom-field.php:380 ../classes/settings.php:290
278
  msgid "Custom Field"
279
  msgstr ""
280
 
281
- #: ../classes/column/custom-field.php:63 ../classes/settings.php:295
282
- #: ../classes/storage_model.php:509
283
  msgid "Default"
284
  msgstr ""
285
 
286
- #: ../classes/column/custom-field.php:64
287
  msgid "Checkmark (true/false)"
288
  msgstr ""
289
 
290
- #: ../classes/column/custom-field.php:65 ../classes/settings.php:304
291
  msgid "Color"
292
  msgstr ""
293
 
294
- #: ../classes/column/custom-field.php:66 ../classes/settings.php:305
295
  msgid "Counter"
296
  msgstr ""
297
 
298
- #: ../classes/column/custom-field.php:69 ../classes/column/link/image.php:19
299
  #: ../classes/settings.php:296
300
  msgid "Image"
301
  msgstr ""
302
 
303
- #: ../classes/column/custom-field.php:70 ../classes/storage_model/media.php:13
304
  msgid "Media Library"
305
  msgstr ""
306
 
307
- #: ../classes/column/custom-field.php:71 ../classes/settings.php:298
308
  msgid "Multiple Values"
309
  msgstr ""
310
 
311
- #: ../classes/column/custom-field.php:72 ../classes/settings.php:299
312
  msgid "Numeric"
313
  msgstr ""
314
 
315
- #: ../classes/column/custom-field.php:73
316
  msgid "Post Title (Post ID's)"
317
  msgstr ""
318
 
319
- #: ../classes/column/custom-field.php:74
320
  msgid "Username (User ID's)"
321
  msgstr ""
322
 
323
- #: ../classes/column/custom-field.php:380
324
  msgid "Select your custom field."
325
  msgstr ""
326
 
327
- #: ../classes/column/custom-field.php:390
328
  msgid "No custom fields available."
329
  msgstr ""
330
 
331
- #: ../classes/column/custom-field.php:397
332
  msgid "Field Type"
333
  msgstr ""
334
 
335
- #: ../classes/column/custom-field.php:397
336
  msgid "This will determine how the value will be displayed."
337
  msgstr ""
338
 
@@ -454,47 +482,47 @@ msgstr ""
454
  msgid "Mime type"
455
  msgstr ""
456
 
457
- #: ../classes/column/post/actions.php:60
458
  msgid "Edit this item"
459
  msgstr ""
460
 
461
- #: ../classes/column/post/actions.php:61
462
  msgid "Edit this item inline"
463
  msgstr ""
464
 
465
- #: ../classes/column/post/actions.php:65
466
  msgid "Restore this item from the Trash"
467
  msgstr ""
468
 
469
- #: ../classes/column/post/actions.php:67
470
  msgid "Move this item to the Trash"
471
  msgstr ""
472
 
473
- #: ../classes/column/post/actions.php:67
474
- #: ../classes/column/post/comment-count.php:37
475
  #: ../classes/column/post/status.php:41
476
  msgid "Trash"
477
  msgstr ""
478
 
479
- #: ../classes/column/post/actions.php:69
480
  msgid "Delete this item permanently"
481
  msgstr ""
482
 
483
- #: ../classes/column/post/actions.php:74
484
  #, php-format
485
  msgid "Preview &#8220;%s&#8221;"
486
  msgstr ""
487
 
488
- #: ../classes/column/post/actions.php:74
489
  msgid "Preview"
490
  msgstr ""
491
 
492
- #: ../classes/column/post/actions.php:76
493
  #, php-format
494
  msgid "View &#8220;%s&#8221;"
495
  msgstr ""
496
 
497
- #: ../classes/column/post/actions.php:76 ../classes/storage_model.php:707
498
  msgid "View"
499
  msgstr ""
500
 
@@ -506,44 +534,44 @@ msgstr ""
506
  msgid "Attachment"
507
  msgstr ""
508
 
509
- #: ../classes/column/post/author-name.php:19
510
  msgid "Display Author As"
511
  msgstr ""
512
 
513
- #: ../classes/column/post/author-name.php:39
514
  msgid "Display Name"
515
  msgstr ""
516
 
517
- #: ../classes/column/post/author-name.php:40
518
  msgid "First Name"
519
  msgstr ""
520
 
521
- #: ../classes/column/post/author-name.php:41
522
  msgid "Last Name"
523
  msgstr ""
524
 
525
- #: ../classes/column/post/author-name.php:42
526
  #: ../classes/column/user/nickname.php:19
527
  msgid "Nickname"
528
  msgstr ""
529
 
530
- #: ../classes/column/post/author-name.php:43
531
  msgid "User Login"
532
  msgstr ""
533
 
534
- #: ../classes/column/post/author-name.php:44
535
  msgid "User Email"
536
  msgstr ""
537
 
538
- #: ../classes/column/post/author-name.php:45 ../classes/column/user/ID.php:19
539
  msgid "User ID"
540
  msgstr ""
541
 
542
- #: ../classes/column/post/author-name.php:46
543
  msgid "First and Last Name"
544
  msgstr ""
545
 
546
- #: ../classes/column/post/author-name.php:123
547
  msgid "This is the format of the author name."
548
  msgstr ""
549
 
@@ -551,28 +579,28 @@ msgstr ""
551
  msgid "Before More Tag"
552
  msgstr ""
553
 
554
- #: ../classes/column/post/comment-count.php:19
555
  msgid "Comment count"
556
  msgstr ""
557
 
558
- #: ../classes/column/post/comment-count.php:33
559
  msgid "Total"
560
  msgstr ""
561
 
562
- #: ../classes/column/post/comment-count.php:35
563
  msgid "Pending"
564
  msgstr ""
565
 
566
- #: ../classes/column/post/comment-count.php:36
567
  msgid "Spam"
568
  msgstr ""
569
 
570
- #: ../classes/column/post/comment-count.php:98
571
- #: ../classes/column/post/comment-status.php:19
572
  msgid "Comment status"
573
  msgstr ""
574
 
575
- #: ../classes/column/post/comment-count.php:98
576
  msgid "Select which comment status you like to display."
577
  msgstr ""
578
 
@@ -600,6 +628,10 @@ msgstr ""
600
  msgid "Parent"
601
  msgstr ""
602
 
 
 
 
 
603
  #: ../classes/column/post/permalink.php:19
604
  msgid "Permalink"
605
  msgstr ""
@@ -612,14 +644,6 @@ msgstr ""
612
  msgid "This will make the permalink clickable."
613
  msgstr ""
614
 
615
- #: ../classes/column/post/permalink.php:72
616
- msgid "Yes"
617
- msgstr ""
618
-
619
- #: ../classes/column/post/permalink.php:76
620
- msgid "No"
621
- msgstr ""
622
-
623
  #: ../classes/column/post/ping-status.php:19
624
  msgid "Ping status"
625
  msgstr ""
@@ -664,10 +688,26 @@ msgstr ""
664
  msgid "Sticky"
665
  msgstr ""
666
 
667
- #: ../classes/column/taxonomy.php:19 ../classes/column/taxonomy.php:106
 
 
 
 
668
  msgid "Taxonomy"
669
  msgstr ""
670
 
 
 
 
 
 
 
 
 
 
 
 
 
671
  #: ../classes/column/user/comment-count.php:19
672
  msgid "Comment Count"
673
  msgstr ""
@@ -708,7 +748,7 @@ msgstr ""
708
  msgid "Admin Columns Settings"
709
  msgstr ""
710
 
711
- #: ../classes/settings.php:155 ../classes/settings.php:619
712
  #: ../classes/upgrade.php:121
713
  msgid "Admin Columns"
714
  msgstr ""
@@ -985,152 +1025,196 @@ msgstr ""
985
  msgid "Customize your Admin Columns settings."
986
  msgstr ""
987
 
988
- #: ../classes/settings.php:546
989
  msgid ""
990
- "Show \"Edit Columns\" button on admin screens. Default is <code>off</code>."
991
  msgstr ""
992
 
993
- #: ../classes/settings.php:553 ../classes/settings.php:682
994
  msgid "Save"
995
  msgstr ""
996
 
997
- #: ../classes/settings.php:593
998
  msgid "Restore Settings"
999
  msgstr ""
1000
 
1001
- #: ../classes/settings.php:594
1002
  msgid "This will delete all column settings and restore the default settings."
1003
  msgstr ""
1004
 
1005
- #: ../classes/settings.php:600
1006
  msgid "Restore default settings"
1007
  msgstr ""
1008
 
1009
- #: ../classes/settings.php:600
1010
  msgid ""
1011
  "Warning! ALL saved admin columns data will be deleted. This cannot be "
1012
  "undone. \\'OK\\' to delete, \\'Cancel\\' to stop"
1013
  msgstr ""
1014
 
1015
- #: ../classes/settings.php:620 ../codepress-admin-columns.php:355
1016
  msgid "Settings"
1017
  msgstr ""
1018
 
1019
- #: ../classes/settings.php:621
1020
  msgid "Add-ons"
1021
  msgstr ""
1022
 
1023
- #: ../classes/settings.php:647
1024
  msgid "Posttypes"
1025
  msgstr ""
1026
 
1027
- #: ../classes/settings.php:648
1028
  msgid "Others"
1029
  msgstr ""
1030
 
1031
- #: ../classes/settings.php:649
1032
  msgid "Taxonomies"
1033
  msgstr ""
1034
 
1035
- #: ../classes/settings.php:668
1036
  #, php-format
1037
  msgid ""
1038
  "The columns for <strong>%s</strong> are set up via PHP and can therefore not "
1039
  "be edited in the admin panel."
1040
  msgstr ""
1041
 
1042
- #: ../classes/settings.php:678
1043
  msgid "Store settings"
1044
  msgstr ""
1045
 
1046
- #: ../classes/settings.php:682
1047
  msgid "Update"
1048
  msgstr ""
1049
 
1050
- #: ../classes/settings.php:686
1051
  #, php-format
1052
  msgid ""
1053
  "Warning! The %s columns data will be deleted. This cannot be undone. \\'OK"
1054
  "\\' to delete, \\'Cancel\\' to stop"
1055
  msgstr ""
1056
 
1057
- #: ../classes/settings.php:687
1058
  msgid "columns"
1059
  msgstr ""
1060
 
1061
- #: ../classes/settings.php:706
1062
  msgid "Get Admin Columns Pro"
1063
  msgstr ""
1064
 
1065
- #: ../classes/settings.php:710
1066
  msgid "Add Sorting"
1067
  msgstr ""
1068
 
1069
- #: ../classes/settings.php:711
1070
  msgid "Add Filtering"
1071
  msgstr ""
1072
 
1073
- #: ../classes/settings.php:712
1074
  msgid "Add Import/Export"
1075
  msgstr ""
1076
 
1077
- #: ../classes/settings.php:713
1078
  msgid "Add Direct Editing"
1079
  msgstr ""
1080
 
1081
- #: ../classes/settings.php:716
1082
  #, php-format
1083
  msgid "Check out <a href=\"%s\">Admin Columns Pro</a> for more details!"
1084
  msgstr ""
1085
 
 
 
 
 
 
 
 
 
1086
  #: ../classes/settings.php:747
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1087
  msgid "Support"
1088
  msgstr ""
1089
 
1090
- #: ../classes/settings.php:750
1091
  msgid "Check the <strong>Help</strong> section in the top-right screen."
1092
  msgstr ""
1093
 
1094
- #: ../classes/settings.php:753
1095
  #, php-format
1096
  msgid ""
1097
  "For full documentation, bug reports, feature suggestions and other tips <a "
1098
  "href='%s'>visit the Admin Columns website</a>"
1099
  msgstr ""
1100
 
1101
- #: ../classes/settings.php:782
1102
  msgid "Drag and drop to reorder"
1103
  msgstr ""
1104
 
1105
- #: ../classes/settings.php:785
1106
  msgid "Add Column"
1107
  msgstr ""
1108
 
1109
- #: ../classes/settings.php:858
1110
  msgid "Active"
1111
  msgstr ""
1112
 
1113
- #: ../classes/settings.php:859
1114
  msgid "Deactivate"
1115
  msgstr ""
1116
 
1117
- #: ../classes/settings.php:866
1118
  msgid "Installed"
1119
  msgstr ""
1120
 
1121
- #: ../classes/settings.php:867
1122
  msgid "Activate"
1123
  msgstr ""
1124
 
1125
- #: ../classes/settings.php:881
1126
  msgid "Download & Install"
1127
  msgstr ""
1128
 
1129
- #: ../classes/settings.php:886
1130
  msgid "Get this add-on"
1131
  msgstr ""
1132
 
1133
- #: ../classes/storage_model.php:214
1134
  msgid "settings succesfully restored."
1135
  msgstr ""
1136
 
@@ -1224,6 +1308,6 @@ msgid ""
1224
  "on the support forum."
1225
  msgstr ""
1226
 
1227
- #: ../codepress-admin-columns.php:441
1228
  msgid "Edit columns"
1229
  msgstr ""
2
  msgstr ""
3
  "Project-Id-Version: Codepress Admin Columns\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2014-08-15 09:02+0100\n"
6
+ "PO-Revision-Date: 2014-08-15 09:02+0100\n"
7
  "Last-Translator: Codepress <info@codepress.nl>\n"
8
  "Language-Team: Codepress <info@codepress.nl>\n"
9
  "Language: en_GB\n"
13
  "X-Poedit-KeywordsList: __;_e\n"
14
  "X-Poedit-Basepath: .\n"
15
  "X-Poedit-SourceCharset: UTF-8\n"
16
+ "X-Generator: Poedit 1.6.7\n"
17
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18
  "X-Poedit-SearchPath-0: .\n"
19
  "X-Poedit-SearchPath-1: ..\n"
32
  "seconds!"
33
  msgstr ""
34
 
35
+ #: ../classes/addons.php:141
36
+ msgid "WooCommerce"
37
+ msgstr ""
38
+
39
+ #: ../classes/addons.php:142
40
+ msgid ""
41
+ "Enhance the products, orders and coupons overviews with new columns and "
42
+ "inline editing."
43
+ msgstr ""
44
+
45
+ #: ../classes/column.php:502
46
  msgid "Thumbnail"
47
  msgstr ""
48
 
49
+ #: ../classes/column.php:503
50
  msgid "Medium"
51
  msgstr ""
52
 
53
+ #: ../classes/column.php:504
54
  msgid "Large"
55
  msgstr ""
56
 
57
+ #: ../classes/column.php:505
58
  msgid "Full"
59
  msgstr ""
60
 
61
+ #: ../classes/column.php:858
62
  msgid "Date Format"
63
  msgstr ""
64
 
65
+ #: ../classes/column.php:859
66
  msgid "This will determine how the date will be displayed."
67
  msgstr ""
68
 
69
+ #: ../classes/column.php:865
70
  msgid "Example:"
71
  msgstr ""
72
 
73
+ #: ../classes/column.php:867
74
  #, php-format
75
  msgid ""
76
  "Leave empty for WordPress date format, change your <a href=\"%s\">default "
77
  "date format here</a>."
78
  msgstr ""
79
 
80
+ #: ../classes/column.php:868
81
  msgid "Documentation on date and time formatting."
82
  msgstr ""
83
 
84
+ #: ../classes/column.php:882
85
  msgid "Excerpt length"
86
  msgstr ""
87
 
88
+ #: ../classes/column.php:883
89
  msgid "Number of words"
90
  msgstr ""
91
 
92
+ #: ../classes/column.php:901
93
  msgid "Preview size"
94
  msgstr ""
95
 
96
+ #: ../classes/column.php:918 ../classes/storage_model.php:515
97
  msgid "Custom"
98
  msgstr ""
99
 
100
+ #: ../classes/column.php:921
101
  msgid "width"
102
  msgstr ""
103
 
104
+ #: ../classes/column.php:924
105
  msgid "height"
106
  msgstr ""
107
 
108
+ #: ../classes/column.php:938
109
  msgid "Before"
110
  msgstr ""
111
 
112
+ #: ../classes/column.php:938
113
  msgid "This text will appear before the custom field value."
114
  msgstr ""
115
 
116
+ #: ../classes/column.php:944
117
  msgid "After"
118
  msgstr ""
119
 
120
+ #: ../classes/column.php:944
121
  msgid "This text will appear after the custom field value."
122
  msgstr ""
123
 
124
+ #: ../classes/column.php:1038 ../classes/column/comment/actions.php:99
125
+ #: ../classes/column/link/actions.php:48 ../classes/column/post/actions.php:31
126
  #: ../classes/column/user/actions.php:69
127
  msgid "Edit"
128
  msgstr ""
129
 
130
+ #: ../classes/column.php:1039 ../classes/column.php:1117
131
  #: ../classes/column/user/actions.php:77
132
  msgid "Remove"
133
  msgstr ""
134
 
135
+ #: ../classes/column.php:1057
136
  msgid "Type"
137
  msgstr ""
138
 
139
+ #: ../classes/column.php:1057
140
  msgid "Choose a column type."
141
  msgstr ""
142
 
143
+ #: ../classes/column.php:1057 ../classes/column/comment/ID.php:19
144
  #: ../classes/column/link/ID.php:19 ../classes/column/media/ID.php:19
145
  #: ../classes/column/post/ID.php:19
146
  msgid "ID"
147
  msgstr ""
148
 
149
+ #: ../classes/column.php:1067
150
  msgid "Label"
151
  msgstr ""
152
 
153
+ #: ../classes/column.php:1067
154
  msgid "This is the name which will appear as the column header."
155
  msgstr ""
156
 
157
+ #: ../classes/column.php:1074 ../classes/column/media/width.php:19
158
  msgid "Width"
159
  msgstr ""
160
 
161
+ #: ../classes/column.php:1076 ../classes/column.php:1077
162
  msgid "default"
163
  msgstr ""
164
 
188
  msgid "Find out more"
189
  msgstr ""
190
 
191
+ #: ../classes/column/actions.php:29 ../classes/column/comment/actions.php:19
192
  #: ../classes/column/link/actions.php:19
193
  #: ../classes/column/media/actions.php:20
194
+ #: ../classes/column/user/actions.php:19
195
  msgid "Actions"
196
  msgstr ""
197
 
198
+ #: ../classes/column/actions.php:79
199
+ msgid "Use icons?"
200
+ msgstr ""
201
+
202
+ #: ../classes/column/actions.php:79
203
+ msgid "Use icons instead of text for displaying the actions."
204
+ msgstr ""
205
+
206
+ #: ../classes/column/actions.php:83 ../classes/column/post/permalink.php:72
207
+ #: ../classes/column/used-by-menu.php:137
208
+ msgid "Yes"
209
+ msgstr ""
210
+
211
+ #: ../classes/column/actions.php:87 ../classes/column/post/permalink.php:76
212
+ #: ../classes/column/used-by-menu.php:141
213
+ msgid "No"
214
+ msgstr ""
215
+
216
  #: ../classes/column/comment/actions.php:76
217
  #: ../classes/column/comment/actions.php:81
218
  msgid "Unapprove"
224
  msgstr ""
225
 
226
  #: ../classes/column/comment/actions.php:89
227
+ #: ../classes/column/post/actions.php:39 ../classes/settings.php:678
228
  msgid "Restore"
229
  msgstr ""
230
 
231
  #: ../classes/column/comment/actions.php:93
232
+ #: ../classes/column/post/actions.php:43
233
  msgid "Delete Permanently"
234
  msgstr ""
235
 
236
  #: ../classes/column/comment/actions.php:100
237
+ #: ../classes/column/post/actions.php:34
238
  msgid "Quick&nbsp;Edit"
239
  msgstr ""
240
 
247
  msgstr ""
248
 
249
  #: ../classes/column/comment/approved.php:19
250
+ #: ../classes/column/post/comment-count.php:35
251
  msgid "Approved"
252
  msgstr ""
253
 
281
  msgid "Submitted on <a href=\"%1$s\">%2$s at %3$s</a>"
282
  msgstr ""
283
 
284
+ #: ../classes/column/comment/date.php:19 ../classes/column/custom-field.php:70
285
  #: ../classes/settings.php:300
286
  msgid "Date"
287
  msgstr ""
288
 
289
  #: ../classes/column/comment/excerpt.php:19
290
+ #: ../classes/column/custom-field.php:71 ../classes/column/post/excerpt.php:19
291
  #: ../classes/settings.php:297
292
  msgid "Excerpt"
293
  msgstr ""
301
  msgid "Word count"
302
  msgstr ""
303
 
304
+ #: ../classes/column/custom-field.php:23
305
+ #: ../classes/column/custom-field.php:348 ../classes/settings.php:290
306
  msgid "Custom Field"
307
  msgstr ""
308
 
309
+ #: ../classes/column/custom-field.php:66 ../classes/settings.php:295
310
+ #: ../classes/storage_model.php:516
311
  msgid "Default"
312
  msgstr ""
313
 
314
+ #: ../classes/column/custom-field.php:67
315
  msgid "Checkmark (true/false)"
316
  msgstr ""
317
 
318
+ #: ../classes/column/custom-field.php:68 ../classes/settings.php:304
319
  msgid "Color"
320
  msgstr ""
321
 
322
+ #: ../classes/column/custom-field.php:69 ../classes/settings.php:305
323
  msgid "Counter"
324
  msgstr ""
325
 
326
+ #: ../classes/column/custom-field.php:72 ../classes/column/link/image.php:19
327
  #: ../classes/settings.php:296
328
  msgid "Image"
329
  msgstr ""
330
 
331
+ #: ../classes/column/custom-field.php:73 ../classes/storage_model/media.php:13
332
  msgid "Media Library"
333
  msgstr ""
334
 
335
+ #: ../classes/column/custom-field.php:74 ../classes/settings.php:298
336
  msgid "Multiple Values"
337
  msgstr ""
338
 
339
+ #: ../classes/column/custom-field.php:75 ../classes/settings.php:299
340
  msgid "Numeric"
341
  msgstr ""
342
 
343
+ #: ../classes/column/custom-field.php:76
344
  msgid "Post Title (Post ID's)"
345
  msgstr ""
346
 
347
+ #: ../classes/column/custom-field.php:77
348
  msgid "Username (User ID's)"
349
  msgstr ""
350
 
351
+ #: ../classes/column/custom-field.php:348
352
  msgid "Select your custom field."
353
  msgstr ""
354
 
355
+ #: ../classes/column/custom-field.php:358
356
  msgid "No custom fields available."
357
  msgstr ""
358
 
359
+ #: ../classes/column/custom-field.php:365
360
  msgid "Field Type"
361
  msgstr ""
362
 
363
+ #: ../classes/column/custom-field.php:365
364
  msgid "This will determine how the value will be displayed."
365
  msgstr ""
366
 
482
  msgid "Mime type"
483
  msgstr ""
484
 
485
+ #: ../classes/column/post/actions.php:31
486
  msgid "Edit this item"
487
  msgstr ""
488
 
489
+ #: ../classes/column/post/actions.php:34
490
  msgid "Edit this item inline"
491
  msgstr ""
492
 
493
+ #: ../classes/column/post/actions.php:39
494
  msgid "Restore this item from the Trash"
495
  msgstr ""
496
 
497
+ #: ../classes/column/post/actions.php:41
498
  msgid "Move this item to the Trash"
499
  msgstr ""
500
 
501
+ #: ../classes/column/post/actions.php:41
502
+ #: ../classes/column/post/comment-count.php:38
503
  #: ../classes/column/post/status.php:41
504
  msgid "Trash"
505
  msgstr ""
506
 
507
+ #: ../classes/column/post/actions.php:43
508
  msgid "Delete this item permanently"
509
  msgstr ""
510
 
511
+ #: ../classes/column/post/actions.php:48
512
  #, php-format
513
  msgid "Preview &#8220;%s&#8221;"
514
  msgstr ""
515
 
516
+ #: ../classes/column/post/actions.php:48
517
  msgid "Preview"
518
  msgstr ""
519
 
520
+ #: ../classes/column/post/actions.php:50
521
  #, php-format
522
  msgid "View &#8220;%s&#8221;"
523
  msgstr ""
524
 
525
+ #: ../classes/column/post/actions.php:50 ../classes/storage_model.php:724
526
  msgid "View"
527
  msgstr ""
528
 
534
  msgid "Attachment"
535
  msgstr ""
536
 
537
+ #: ../classes/column/post/author-name.php:20
538
  msgid "Display Author As"
539
  msgstr ""
540
 
541
+ #: ../classes/column/post/author-name.php:40
542
  msgid "Display Name"
543
  msgstr ""
544
 
545
+ #: ../classes/column/post/author-name.php:41
546
  msgid "First Name"
547
  msgstr ""
548
 
549
+ #: ../classes/column/post/author-name.php:42
550
  msgid "Last Name"
551
  msgstr ""
552
 
553
+ #: ../classes/column/post/author-name.php:43
554
  #: ../classes/column/user/nickname.php:19
555
  msgid "Nickname"
556
  msgstr ""
557
 
558
+ #: ../classes/column/post/author-name.php:44
559
  msgid "User Login"
560
  msgstr ""
561
 
562
+ #: ../classes/column/post/author-name.php:45
563
  msgid "User Email"
564
  msgstr ""
565
 
566
+ #: ../classes/column/post/author-name.php:46 ../classes/column/user/ID.php:19
567
  msgid "User ID"
568
  msgstr ""
569
 
570
+ #: ../classes/column/post/author-name.php:47
571
  msgid "First and Last Name"
572
  msgstr ""
573
 
574
+ #: ../classes/column/post/author-name.php:124
575
  msgid "This is the format of the author name."
576
  msgstr ""
577
 
579
  msgid "Before More Tag"
580
  msgstr ""
581
 
582
+ #: ../classes/column/post/comment-count.php:20
583
  msgid "Comment count"
584
  msgstr ""
585
 
586
+ #: ../classes/column/post/comment-count.php:34
587
  msgid "Total"
588
  msgstr ""
589
 
590
+ #: ../classes/column/post/comment-count.php:36
591
  msgid "Pending"
592
  msgstr ""
593
 
594
+ #: ../classes/column/post/comment-count.php:37
595
  msgid "Spam"
596
  msgstr ""
597
 
598
+ #: ../classes/column/post/comment-count.php:99
599
+ #: ../classes/column/post/comment-status.php:20
600
  msgid "Comment status"
601
  msgstr ""
602
 
603
+ #: ../classes/column/post/comment-count.php:99
604
  msgid "Select which comment status you like to display."
605
  msgstr ""
606
 
628
  msgid "Parent"
629
  msgstr ""
630
 
631
+ #: ../classes/column/post/path.php:19
632
+ msgid "Path"
633
+ msgstr ""
634
+
635
  #: ../classes/column/post/permalink.php:19
636
  msgid "Permalink"
637
  msgstr ""
644
  msgid "This will make the permalink clickable."
645
  msgstr ""
646
 
 
 
 
 
 
 
 
 
647
  #: ../classes/column/post/ping-status.php:19
648
  msgid "Ping status"
649
  msgstr ""
688
  msgid "Sticky"
689
  msgstr ""
690
 
691
+ #: ../classes/column/post/title-raw.php:19
692
+ msgid "Title without actions"
693
+ msgstr ""
694
+
695
+ #: ../classes/column/taxonomy.php:20 ../classes/column/taxonomy.php:79
696
  msgid "Taxonomy"
697
  msgstr ""
698
 
699
+ #: ../classes/column/used-by-menu.php:20
700
+ msgid "Used by Menu"
701
+ msgstr ""
702
+
703
+ #: ../classes/column/used-by-menu.php:133
704
+ msgid "Link to menu"
705
+ msgstr ""
706
+
707
+ #: ../classes/column/used-by-menu.php:133
708
+ msgid "This will make the title link to the menu."
709
+ msgstr ""
710
+
711
  #: ../classes/column/user/comment-count.php:19
712
  msgid "Comment Count"
713
  msgstr ""
748
  msgid "Admin Columns Settings"
749
  msgstr ""
750
 
751
+ #: ../classes/settings.php:155 ../classes/settings.php:610
752
  #: ../classes/upgrade.php:121
753
  msgid "Admin Columns"
754
  msgstr ""
1025
  msgid "Customize your Admin Columns settings."
1026
  msgstr ""
1027
 
1028
+ #: ../classes/settings.php:537
1029
  msgid ""
1030
+ "Show \"Edit Columns\" button on admin screens. Default is <code>on</code>."
1031
  msgstr ""
1032
 
1033
+ #: ../classes/settings.php:544 ../classes/settings.php:673
1034
  msgid "Save"
1035
  msgstr ""
1036
 
1037
+ #: ../classes/settings.php:584
1038
  msgid "Restore Settings"
1039
  msgstr ""
1040
 
1041
+ #: ../classes/settings.php:585
1042
  msgid "This will delete all column settings and restore the default settings."
1043
  msgstr ""
1044
 
1045
+ #: ../classes/settings.php:591
1046
  msgid "Restore default settings"
1047
  msgstr ""
1048
 
1049
+ #: ../classes/settings.php:591
1050
  msgid ""
1051
  "Warning! ALL saved admin columns data will be deleted. This cannot be "
1052
  "undone. \\'OK\\' to delete, \\'Cancel\\' to stop"
1053
  msgstr ""
1054
 
1055
+ #: ../classes/settings.php:611 ../codepress-admin-columns.php:387
1056
  msgid "Settings"
1057
  msgstr ""
1058
 
1059
+ #: ../classes/settings.php:612
1060
  msgid "Add-ons"
1061
  msgstr ""
1062
 
1063
+ #: ../classes/settings.php:638
1064
  msgid "Posttypes"
1065
  msgstr ""
1066
 
1067
+ #: ../classes/settings.php:639
1068
  msgid "Others"
1069
  msgstr ""
1070
 
1071
+ #: ../classes/settings.php:640
1072
  msgid "Taxonomies"
1073
  msgstr ""
1074
 
1075
+ #: ../classes/settings.php:659
1076
  #, php-format
1077
  msgid ""
1078
  "The columns for <strong>%s</strong> are set up via PHP and can therefore not "
1079
  "be edited in the admin panel."
1080
  msgstr ""
1081
 
1082
+ #: ../classes/settings.php:669
1083
  msgid "Store settings"
1084
  msgstr ""
1085
 
1086
+ #: ../classes/settings.php:673
1087
  msgid "Update"
1088
  msgstr ""
1089
 
1090
+ #: ../classes/settings.php:677
1091
  #, php-format
1092
  msgid ""
1093
  "Warning! The %s columns data will be deleted. This cannot be undone. \\'OK"
1094
  "\\' to delete, \\'Cancel\\' to stop"
1095
  msgstr ""
1096
 
1097
+ #: ../classes/settings.php:678
1098
  msgid "columns"
1099
  msgstr ""
1100
 
1101
+ #: ../classes/settings.php:697
1102
  msgid "Get Admin Columns Pro"
1103
  msgstr ""
1104
 
1105
+ #: ../classes/settings.php:701
1106
  msgid "Add Sorting"
1107
  msgstr ""
1108
 
1109
+ #: ../classes/settings.php:702
1110
  msgid "Add Filtering"
1111
  msgstr ""
1112
 
1113
+ #: ../classes/settings.php:703
1114
  msgid "Add Import/Export"
1115
  msgstr ""
1116
 
1117
+ #: ../classes/settings.php:704
1118
  msgid "Add Direct Editing"
1119
  msgstr ""
1120
 
1121
+ #: ../classes/settings.php:707
1122
  #, php-format
1123
  msgid "Check out <a href=\"%s\">Admin Columns Pro</a> for more details!"
1124
  msgstr ""
1125
 
1126
+ #: ../classes/settings.php:738
1127
+ msgid "Are you happy with Admin Columns?"
1128
+ msgstr ""
1129
+
1130
+ #: ../classes/settings.php:746
1131
+ msgid "What's wrong? Need help? Let us know!"
1132
+ msgstr ""
1133
+
1134
  #: ../classes/settings.php:747
1135
+ msgid ""
1136
+ "Check out our extensive documentation, or you can open a support topic on "
1137
+ "WordPress.org!"
1138
+ msgstr ""
1139
+
1140
+ #: ../classes/settings.php:755
1141
+ msgid "Docs"
1142
+ msgstr ""
1143
+
1144
+ #: ../classes/settings.php:760
1145
+ msgid "Forums"
1146
+ msgstr ""
1147
+
1148
+ #: ../classes/settings.php:769
1149
+ msgid "Woohoo! We're glad to hear that!"
1150
+ msgstr ""
1151
+
1152
+ #: ../classes/settings.php:770
1153
+ msgid ""
1154
+ "We would really love it if you could show your appreciation by giving us a "
1155
+ "rating on WordPress.org or tweet about Admin Columns!"
1156
+ msgstr ""
1157
+
1158
+ #: ../classes/settings.php:774
1159
+ msgid "Rate"
1160
+ msgstr ""
1161
+
1162
+ #: ../classes/settings.php:785
1163
+ msgid "Tweet"
1164
+ msgstr ""
1165
+
1166
+ #: ../classes/settings.php:795
1167
+ msgid "Buy Pro"
1168
+ msgstr ""
1169
+
1170
+ #: ../classes/settings.php:807
1171
  msgid "Support"
1172
  msgstr ""
1173
 
1174
+ #: ../classes/settings.php:810
1175
  msgid "Check the <strong>Help</strong> section in the top-right screen."
1176
  msgstr ""
1177
 
1178
+ #: ../classes/settings.php:813
1179
  #, php-format
1180
  msgid ""
1181
  "For full documentation, bug reports, feature suggestions and other tips <a "
1182
  "href='%s'>visit the Admin Columns website</a>"
1183
  msgstr ""
1184
 
1185
+ #: ../classes/settings.php:842
1186
  msgid "Drag and drop to reorder"
1187
  msgstr ""
1188
 
1189
+ #: ../classes/settings.php:845
1190
  msgid "Add Column"
1191
  msgstr ""
1192
 
1193
+ #: ../classes/settings.php:921
1194
  msgid "Active"
1195
  msgstr ""
1196
 
1197
+ #: ../classes/settings.php:922
1198
  msgid "Deactivate"
1199
  msgstr ""
1200
 
1201
+ #: ../classes/settings.php:929
1202
  msgid "Installed"
1203
  msgstr ""
1204
 
1205
+ #: ../classes/settings.php:930
1206
  msgid "Activate"
1207
  msgstr ""
1208
 
1209
+ #: ../classes/settings.php:944
1210
  msgid "Download & Install"
1211
  msgstr ""
1212
 
1213
+ #: ../classes/settings.php:949
1214
  msgid "Get this add-on"
1215
  msgstr ""
1216
 
1217
+ #: ../classes/storage_model.php:213
1218
  msgid "settings succesfully restored."
1219
  msgstr ""
1220
 
1308
  "on the support forum."
1309
  msgstr ""
1310
 
1311
+ #: ../codepress-admin-columns.php:474
1312
  msgid "Edit columns"
1313
  msgstr ""
readme.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: codepress, tschutter, davidmosterd, engelen
3
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=ZDZRSYLQ4Z76J
4
  Tags: plugins, wordpress, admin, column, columns, custom columns, custom fields, image, dashboard, sortable, filters, posts, media, users, pages, posttypes, manage columns, wp-admin
5
  Requires at least: 3.5
6
- Tested up to: 3.9.1
7
- Stable tag: 2.2.5.1
8
 
9
  Customise columns on the administration screens for post(types), pages, media, comments, links and users with an easy to use drag-and-drop interface.
10
 
@@ -248,6 +248,12 @@ You can find a list of the available actions and filters (and examples on how to
248
 
249
  == Changelog ==
250
 
 
 
 
 
 
 
251
  = 2.2.5.1 =
252
  * [Fixed] Unavailable included JS-file on editing pages
253
 
3
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=ZDZRSYLQ4Z76J
4
  Tags: plugins, wordpress, admin, column, columns, custom columns, custom fields, image, dashboard, sortable, filters, posts, media, users, pages, posttypes, manage columns, wp-admin
5
  Requires at least: 3.5
6
+ Tested up to: 3.9.2
7
+ Stable tag: 2.2.6
8
 
9
  Customise columns on the administration screens for post(types), pages, media, comments, links and users with an easy to use drag-and-drop interface.
10
 
248
 
249
  == Changelog ==
250
 
251
+ = 2.2.6 =
252
+ * [Changed] Display "edit columns" button by default
253
+ * [Improved] Improved memory usage by only loading columns for the current screen
254
+ * [Changed] Removed floatHead library
255
+ * [Updated] Only display ACF placeholder with ACF active.
256
+
257
  = 2.2.5.1 =
258
  * [Fixed] Unavailable included JS-file on editing pages
259