WP Photo Album Plus - Version 8.3.01.005

Version Description

= 8.1.08 =

  • This version addresses various bug fixes, feature requests and security fixes.
Download this release

Release Info

Developer opajaap
Plugin Icon wp plugin WP Photo Album Plus
Version 8.3.01.005
Comparing to
See all releases

Code changes from version 8.3.01.004 to 8.3.01.005

wppa-admin-functions.php CHANGED
@@ -3,7 +3,7 @@
3
  * Package: wp-photo-album-plus
4
  *
5
  * gp admin functions
6
- * Version 8.3.01.004
7
  *
8
  */
9
 
@@ -1075,7 +1075,7 @@ function wppa_make_360( $id, $degs ) {
1075
  // @4: int: total count
1076
  // @5: string: reload url without '@paged=...'
1077
  // @6: bool: return if true, else output directly
1078
- function wppa_admin_pagination( $pagesize, $current, $total_items, $url, $which = 'bottom', $return = false ) {
1079
 
1080
  // Need pagination?
1081
  if ( $total_items < '21' ) {
@@ -1083,36 +1083,17 @@ function wppa_admin_pagination( $pagesize, $current, $total_items, $url, $which
1083
  }
1084
 
1085
  // Init
1086
- if ( $which != 'top' ) $which = 'bottom';
 
 
1087
  $output = '';
1088
  $link = $url . '&paged=';
1089
  $total_pages = $pagesize ? ceil( $total_items / $pagesize ) : '1';
1090
-
1091
- // Overall wrapper
1092
- // $st = $which == 'bottom' ? 'style="display:block"' : 'style="display:inline"';
1093
- // $output .= '
1094
- // <div class="wppa-tablenav" ' . $st . '>
1095
- if ( $which == 'bottom' ) $output .= '<div class="test" style="line-height:2.1em;margin-top:6px;">';
1096
-
1097
- $output .= '
1098
- <div class="wppa-admin-pagination">';
1099
-
1100
- $output .= '
1101
- <span class="displaying-num">' .
1102
- sprintf(
1103
- /* translators: %s: Number of items. */
1104
- _n( '%s item', '%s items', $total_items ),
1105
- number_format_i18n( $total_items ) ) . '
1106
- </span>';
1107
-
1108
  $current_url = set_url_scheme( 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] );
1109
  $current_url = remove_query_arg( 'paged', $current_url );
1110
 
1111
  $page_links = array();
1112
 
1113
- $total_pages_before = '<span class="paging-input">';
1114
- $total_pages_after = '</span></span>';
1115
-
1116
  $disable_first = false;
1117
  $disable_last = false;
1118
  $disable_prev = false;
@@ -1127,36 +1108,56 @@ $output .= '
1127
  $disable_next = true;
1128
  }
1129
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1130
  if ( $disable_first ) {
1131
- $page_links[] = '<span class="tablenav-pages-navspan button disabled" aria-hidden="true">&laquo;</span>';
1132
  } else {
1133
- $page_links[] = sprintf(
1134
- "<a class='first-page button' href='%s'><span class='screen-reader-text'>%s</span><span aria-hidden='true'>%s</span></a>",
1135
  esc_url( add_query_arg( 'paged', 1, $current_url ) ),
1136
  __( 'First page' ),
1137
- '&laquo;'
1138
  );
1139
  }
1140
 
 
1141
  if ( $disable_prev ) {
1142
- $page_links[] = '<span class="tablenav-pages-navspan button disabled" aria-hidden="true">&lsaquo;</span>';
1143
  } else {
1144
- $page_links[] = sprintf(
1145
- "<a class='prev-page button' href='%s'><span class='screen-reader-text'>%s</span><span aria-hidden='true'>%s</span></a>",
1146
  esc_url( add_query_arg( 'paged', max( 1, $current - 1 ), $current_url ) ),
1147
  __( 'Previous page' ),
1148
- '&lsaquo;'
1149
  );
1150
  }
1151
 
1152
- // Bottom
1153
  if ( 'bottom' === $which ) {
1154
  $html_current_page = $current;
1155
  $total_pages_before = '
1156
  <span class="screen-reader-text">' . __( 'Current Page' ) . '</span><span id="table-paging" class="paging-input"><span class="tablenav-paging-text">';
1157
  }
1158
 
1159
- // Top
1160
  else {
1161
  $html_current_page = sprintf(
1162
  '%s<input
@@ -1174,48 +1175,40 @@ $output .= '
1174
  strlen( $total_pages ),
1175
  esc_url( remove_query_arg( 'paged' ) )
1176
  );
 
1177
  }
1178
 
1179
  $html_total_pages = sprintf( "<span class='total-pages'>%s</span>", number_format_i18n( $total_pages ) );
1180
- $page_links[] = $total_pages_before . sprintf(
 
1181
  /* translators: 1: Current page, 2: Total pages. */
1182
  _x( '%1$s of %2$s', 'wp-photo-album-plus' ),
1183
  $html_current_page,
1184
  $html_total_pages
1185
- ) . $total_pages_after;
1186
 
 
1187
  if ( $disable_next ) {
1188
- $page_links[] = '<span class="tablenav-pages-navspan button disabled" aria-hidden="true">&rsaquo;</span>';
1189
  } else {
1190
- $page_links[] = sprintf(
1191
- "<a class='next-page button' href='%s'><span class='screen-reader-text'>%s</span><span aria-hidden='true'>%s</span></a>",
1192
  esc_url( add_query_arg( 'paged', min( $total_pages, $current + 1 ), $current_url ) ),
1193
- __( 'Next page' ),
1194
- '&rsaquo;'
1195
  );
1196
  }
1197
 
 
1198
  if ( $disable_last ) {
1199
- $page_links[] = '<span class="tablenav-pages-navspan button disabled" aria-hidden="true">&raquo;</span>';
1200
  } else {
1201
- $page_links[] = sprintf(
1202
- "<a class='last-page button' href='%s'><span class='screen-reader-text'>%s</span><span aria-hidden='true'>%s</span></a>",
1203
  esc_url( add_query_arg( 'paged', $total_pages, $current_url ) ),
1204
- __( 'Last page' ),
1205
- '&raquo;'
1206
  );
1207
  }
1208
 
1209
- $pagination_links_class = 'pagination-links';
1210
- $output .= "\n<span class='$pagination_links_class'>" . implode( "\n", $page_links );
1211
-
1212
- if ( $total_pages ) {
1213
- $page_class = $total_pages < 2 ? ' one-page' : '';
1214
- } else {
1215
- $page_class = ' no-pages';
1216
- }
1217
-
1218
-
1219
  // The pagesize selectionbox
1220
  if ( $which == 'top' ) {
1221
  $output .= ' ' .
@@ -1231,18 +1224,19 @@ $output .= '
1231
  </select>';
1232
  }
1233
 
1234
- // Close overall wrapper
1235
- $output .= '</span></div>';//</div>';
1236
 
1237
- if ( $which == 'bottom' ) $output .= '</div>';
 
1238
 
1239
- // Done
1240
- if ( $return ) {
1241
- return $output;
1242
- }
1243
- else {
1244
- echo( $output );
1245
  }
 
 
 
1246
  }
1247
 
1248
  // Get paging parameters
@@ -1354,21 +1348,11 @@ function wppa_get_paging_parms( $slug, $save = true ) {
1354
  /* Page */
1355
  $result['page'] = wppa_get( 'paged', '', 'int' );
1356
 
1357
- // Used before?
1358
- // if ( ! wppa_is_int( $result['page'] ) ) {
1359
- // $result['page'] = get_transient( 'wppa_' . $slug . '_page-' . wppa_get_user() );
1360
- // }
1361
-
1362
  // Nothing yet?
1363
  if ( ! $result['page'] ) {
1364
  $result['page'] = '1';
1365
  }
1366
 
1367
- // Save ?
1368
- // if ( $save ) {
1369
- // set_transient( 'wppa_' . $slug . '_page-' . wppa_get_user(), $result['page'] );
1370
- // }
1371
-
1372
  /* Pagesize */
1373
  $result['pagesize'] = wppa_get( 'wppa-pagesize', '', 'int' );
1374
 
@@ -1451,3 +1435,27 @@ function wppa_admin_reload_url( $slug, $for ) {
1451
 
1452
  return $url;
1453
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  * Package: wp-photo-album-plus
4
  *
5
  * gp admin functions
6
+ * Version 8.3.01.005
7
  *
8
  */
9
 
1075
  // @4: int: total count
1076
  // @5: string: reload url without '@paged=...'
1077
  // @6: bool: return if true, else output directly
1078
+ function wppa_admin_pagination( $pagesize, $current, $total_items, $url, $which = 'bottom' ) {
1079
 
1080
  // Need pagination?
1081
  if ( $total_items < '21' ) {
1083
  }
1084
 
1085
  // Init
1086
+ if ( $which != 'top' ) {
1087
+ $which = 'bottom';
1088
+ }
1089
  $output = '';
1090
  $link = $url . '&paged=';
1091
  $total_pages = $pagesize ? ceil( $total_items / $pagesize ) : '1';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1092
  $current_url = set_url_scheme( 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] );
1093
  $current_url = remove_query_arg( 'paged', $current_url );
1094
 
1095
  $page_links = array();
1096
 
 
 
 
1097
  $disable_first = false;
1098
  $disable_last = false;
1099
  $disable_prev = false;
1108
  $disable_next = true;
1109
  }
1110
 
1111
+ // Overall wrapper, for bottom only
1112
+ if ( $which == 'bottom' ) {
1113
+ $output .= '<div class="test" style="line-height:2.1em;margin-top:6px;">';
1114
+ }
1115
+
1116
+ // Inner wrapper
1117
+ $output .= '<div class="wppa-admin-pagination">';
1118
+
1119
+ // Total number of items
1120
+ $output .= '
1121
+ <span class="displaying-num">' .
1122
+ sprintf(
1123
+ /* translators: %s: Number of items. */
1124
+ _n( '%s item', '%s items', $total_items ),
1125
+ number_format_i18n( $total_items ) ) . '
1126
+ </span>';
1127
+
1128
+ // Start pagination links
1129
+ $output .= "\n".'<span class="pagination-links">';
1130
+
1131
+ // First indicator / button
1132
  if ( $disable_first ) {
1133
+ $output .= "\n".'<span class="tablenav-pages-navspan button disabled" aria-hidden="true">&laquo;</span>';
1134
  } else {
1135
+ $output .= "\n" . sprintf(
1136
+ '<a class="first-page button" href="%s"><span class="screen-reader-text">%s</span><span aria-hidden="true">&laquo;</span></a>',
1137
  esc_url( add_query_arg( 'paged', 1, $current_url ) ),
1138
  __( 'First page' ),
 
1139
  );
1140
  }
1141
 
1142
+ // Prev indicator / button
1143
  if ( $disable_prev ) {
1144
+ $output .= "\n".'<span class="tablenav-pages-navspan button disabled" aria-hidden="true">&lsaquo;</span>';
1145
  } else {
1146
+ $output .= "\n".sprintf(
1147
+ '<a class="prev-page button" href="%s"><span class="screen-reader-text">%s</span><span aria-hidden="true">&lsaquo;</span></a>',
1148
  esc_url( add_query_arg( 'paged', max( 1, $current - 1 ), $current_url ) ),
1149
  __( 'Previous page' ),
 
1150
  );
1151
  }
1152
 
1153
+ // Current page bottom
1154
  if ( 'bottom' === $which ) {
1155
  $html_current_page = $current;
1156
  $total_pages_before = '
1157
  <span class="screen-reader-text">' . __( 'Current Page' ) . '</span><span id="table-paging" class="paging-input"><span class="tablenav-paging-text">';
1158
  }
1159
 
1160
+ // Current page top
1161
  else {
1162
  $html_current_page = sprintf(
1163
  '%s<input
1175
  strlen( $total_pages ),
1176
  esc_url( remove_query_arg( 'paged' ) )
1177
  );
1178
+ $total_pages_before = '<span class="paging-input">';
1179
  }
1180
 
1181
  $html_total_pages = sprintf( "<span class='total-pages'>%s</span>", number_format_i18n( $total_pages ) );
1182
+ $output .= $total_pages_before . sprintf(
1183
+
1184
  /* translators: 1: Current page, 2: Total pages. */
1185
  _x( '%1$s of %2$s', 'wp-photo-album-plus' ),
1186
  $html_current_page,
1187
  $html_total_pages
1188
+ ) . '</span></span>';
1189
 
1190
+ // Next button / indicator
1191
  if ( $disable_next ) {
1192
+ $output .= "\n".'<span class="tablenav-pages-navspan button disabled" aria-hidden="true">&rsaquo;</span>';
1193
  } else {
1194
+ $output .= "\n". sprintf(
1195
+ '<a class="next-page button" href="%s"><span class="screen-reader-text">%s</span><span aria-hidden="true">&rsaquo;</span></a>',
1196
  esc_url( add_query_arg( 'paged', min( $total_pages, $current + 1 ), $current_url ) ),
1197
+ __( 'Next page' )
 
1198
  );
1199
  }
1200
 
1201
+ // Last button / indicator
1202
  if ( $disable_last ) {
1203
+ $output .= '<span class="tablenav-pages-navspan button disabled" aria-hidden="true">&raquo;</span>';
1204
  } else {
1205
+ $output .= sprintf(
1206
+ '<a class="last-page button" href="%s"><span class="screen-reader-text">%s</span><span aria-hidden="true">&raquo;</span></a>',
1207
  esc_url( add_query_arg( 'paged', $total_pages, $current_url ) ),
1208
+ __( 'Last page' )
 
1209
  );
1210
  }
1211
 
 
 
 
 
 
 
 
 
 
 
1212
  // The pagesize selectionbox
1213
  if ( $which == 'top' ) {
1214
  $output .= ' ' .
1224
  </select>';
1225
  }
1226
 
1227
+ // Close pagination links
1228
+ $output .= '</span>';
1229
 
1230
+ // Close overall inner
1231
+ $output .= '</div>';
1232
 
1233
+ // Close overall wrapper, bottom only
1234
+ if ( $which == 'bottom' ) {
1235
+ $output .= '</div>';
 
 
 
1236
  }
1237
+
1238
+ // Done
1239
+ wppa_echo( $output, false, false, false, true );
1240
  }
1241
 
1242
  // Get paging parameters
1348
  /* Page */
1349
  $result['page'] = wppa_get( 'paged', '', 'int' );
1350
 
 
 
 
 
 
1351
  // Nothing yet?
1352
  if ( ! $result['page'] ) {
1353
  $result['page'] = '1';
1354
  }
1355
 
 
 
 
 
 
1356
  /* Pagesize */
1357
  $result['pagesize'] = wppa_get( 'wppa-pagesize', '', 'int' );
1358
 
1435
 
1436
  return $url;
1437
  }
1438
+
1439
+ function wppa_status_display_name( $status ) {
1440
+ static $wppa_statarray;
1441
+
1442
+ if ( ! $wppa_statarray ) {
1443
+ $wppa_statarray = [
1444
+ 'pending' => __( 'Pending', 'wp-photo-album-plus' ),
1445
+ 'publish' => __( 'Publish', 'wp-photo-album-plus' ),
1446
+ 'featured' => __( 'Featured', 'wp-photo-album-plus' ),
1447
+ 'gold' => __( 'Gold', 'wp-photo-album-plus' ),
1448
+ 'silver' => __( 'Silver', 'wp-photo-album-plus' ),
1449
+ 'bronze' => __( 'Bronze', 'wp-photo-album-plus' ),
1450
+ 'scheduled' => __( 'Scheduled', 'wp-photo-album-plus' ),
1451
+ 'private' => __( 'Private', 'wp-photo-album-plus' ),
1452
+ ];
1453
+ }
1454
+ if ( isset( $wppa_statarray[$status] ) ) {
1455
+ return $wppa_statarray[$status];
1456
+ }
1457
+ else {
1458
+ wppa_log( 'err', "Uniplemented status found in wppa_status_display_name( $status )" );
1459
+ return '';
1460
+ }
1461
+ }
wppa-admin-local-js.php ADDED
@@ -0,0 +1,335 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /* wppa-admin-local-js.php
3
+ * Package: wp-photo-album-plus
4
+ *
5
+ * local js code for admin pages
6
+ * Version 8.3.01.005
7
+ *
8
+ */
9
+
10
+ function wppa_add_local_js( $slug ) {
11
+
12
+ switch( $slug ) {
13
+
14
+ case 'wppa_album_photos':
15
+ {
16
+ $the_js = "
17
+ function wppaTryMove( id, video ) {
18
+
19
+ var query;
20
+
21
+ if ( ! jQuery( '#target-' + id ).val() ) {
22
+ alert( '" . esc_js( __( 'Please select an album to move to first.', 'wp-photo-album-plus' ) ) . "' );
23
+ return false;
24
+ }
25
+
26
+ if ( video ) {
27
+ query = '" . esc_js( __( 'Are you sure you want to move this video?', 'wp-photo-album-plus' ) ) . "';
28
+ }
29
+ else {
30
+ query = '" . esc_js( __( 'Are you sure you want to move this photo?', 'wp-photo-album-plus' ) ) . "';
31
+ }
32
+
33
+ if ( confirm( query ) ) {
34
+ wppaAjaxUpdatePhoto( id, 'moveto', document.getElementById( 'target-' + id ).value );
35
+ }
36
+ }
37
+
38
+ function wppaTryCopy( id, video ) {
39
+
40
+ var query;
41
+
42
+ if ( ! jQuery( '#target-' + id ).val() ) {
43
+ alert( '" . esc_js( __( 'Please select an album to copy to first.', 'wp-photo-album-plus' ) ) . "' );
44
+ return false;
45
+ }
46
+
47
+ if ( video ) {
48
+ query = '" . esc_js( __( 'Are you sure you want to copy this video?', 'wp-photo-album-plus' ) ) . "';
49
+ }
50
+ else {
51
+ query = '" . esc_js( __( 'Are you sure you want to copy this photo?', 'wp-photo-album-plus' ) ) . "';
52
+ }
53
+
54
+ if ( confirm( query ) ) {
55
+ wppaAjaxUpdatePhoto( id, 'copyto', document.getElementById( 'target-' + id ).value );
56
+ }
57
+ }
58
+
59
+ function wppaTryDelete( id, video, perm ) {
60
+
61
+ var query;
62
+
63
+ if ( perm ) {
64
+ if ( video ) {
65
+ query = '" . esc_js( __( 'Are you sure you want to remove this video permanently?', 'wp-photo-album-plus' ) ) . "';
66
+ }
67
+ else {
68
+ query = '" . esc_js( __( 'Are you sure you want to remove this photo permanently?', 'wp-photo-album-plus' ) ) . "';
69
+ }
70
+ }
71
+ else {
72
+ if ( video ) {
73
+ query = '" . esc_js( __( 'Are you sure you want to delete this video?', 'wp-photo-album-plus' ) ) . "';
74
+ }
75
+ else {
76
+ query = '" . esc_js( __( 'Are you sure you want to delete this photo?', 'wp-photo-album-plus' ) ) . "';
77
+ }
78
+ }
79
+
80
+ if ( confirm( query ) ) {
81
+ if ( perm ) {
82
+ wppaAjaxDeletePhoto( id, '', '', true );
83
+ }
84
+ else {
85
+ wppaAjaxDeletePhoto( id );
86
+ }
87
+ jQuery( window ).trigger( 'scroll' );
88
+ }
89
+ }
90
+
91
+ function wppaTryUndelete ( id ) {
92
+ wppaAjaxUndeletePhoto( id );
93
+ }
94
+
95
+ function wppaTryRotLeft( id ) {
96
+
97
+ var query = '" . esc_js( __( 'Are you sure you want to rotate this photo left?', 'wp-photo-album-plus' ) ) . "';
98
+
99
+ if ( confirm( query ) ) {
100
+ wppaAjaxUpdatePhoto( id, 'rotleft', 0 );
101
+ }
102
+ }
103
+
104
+ function wppaTryRot180( id ) {
105
+
106
+ var query = '" . esc_js( __( 'Are you sure you want to rotate this photo 180&deg;?', 'wp-photo-album-plus' ) ) . "';
107
+
108
+ if ( confirm( query ) ) {
109
+ wppaAjaxUpdatePhoto( id, 'rot180', 0 );
110
+ }
111
+ }
112
+
113
+ function wppaTryRotRight( id ) {
114
+
115
+ var query = '" . esc_js( __( 'Are you sure you want to rotate this photo right?', 'wp-photo-album-plus' ) ) . "';
116
+
117
+ if ( confirm( query ) ) {
118
+ wppaAjaxUpdatePhoto( id, 'rotright', 0 );
119
+ }
120
+ }
121
+
122
+ function wppaTryFlip( id ) {
123
+
124
+ var query = '" . esc_js( __( 'Are you sure you want to flip this photo?', 'wp-photo-album-plus' ) ) . "';
125
+
126
+ if ( confirm( query ) ) {
127
+ wppaAjaxUpdatePhoto( id, 'flip', 0 );
128
+ }
129
+ }
130
+
131
+ function wppaTryFlop( id ) {
132
+
133
+ var query = '" . esc_js( __( 'Are you sure you want to flip this photo?', 'wp-photo-album-plus' ) ) . "';
134
+
135
+ if ( confirm( query ) ) {
136
+ wppaAjaxUpdatePhoto( id, 'flop', 0 );
137
+ }
138
+ }
139
+
140
+ function wppaTryWatermark( id, hasSource, canRemove ) {
141
+
142
+ var query;
143
+ var wmFile = jQuery( '#wmfsel_' + id ).val();
144
+ if ( wmFile == '--- none ---' ) {
145
+ alert( '" . esc_js( __( 'No watermark selected', 'wp-photo-album-plus' ) ) . "' );
146
+ return;
147
+ }
148
+ if ( hasSource ) {
149
+ query = '" . esc_js( __( 'Are you sure?', 'wp-photo-album-plus' ) ) . "';
150
+ query += '. ';
151
+ query += '" . esc_js( __( 'To revert to the default watermark setting afterwards: select Watermark: --- default --- and press the Remake files button', 'wp-photo-album-plus' ) ) . "';
152
+ if ( canRemove ) {
153
+ query += '. ';
154
+ query += '" . esc_js( __( 'To remove: select Watermark: --- none --- and press the Remake files button', 'wp-photo-album-plus' ) ) . "';
155
+ }
156
+ }
157
+ else {
158
+ query = '" . esc_js( __( 'Are you sure? Once applied it can not be removed!', 'wp-photo-album-plus' ) ) . "';
159
+ query += '. ';
160
+ query += '" . esc_js( __( 'And I do not know if there is already a watermark on this photo', 'wp-photo-album-plus' ) ) . "';
161
+ }
162
+
163
+ if ( confirm( query ) ) {
164
+ wppaAjaxApplyWatermark( id, document.getElementById( 'wmfsel_' + id ).value, document.getElementById( 'wmpsel_' + id ).value );
165
+ }
166
+ }
167
+
168
+ function wppaTryMagick( id, slug, value ) {
169
+
170
+ if ( ! value ) {
171
+ value = 0;
172
+ }
173
+
174
+ var query = '" . esc_js( __( 'Are you sure you want to magically process this photo?', 'wp-photo-album-plus' ) ) . "';
175
+
176
+ if ( true || confirm( query ) ) {
177
+ jQuery( '#wppa-admin-spinner' ).css( 'display', 'inline' );
178
+ wppaAjaxUpdatePhoto( id, slug, value );
179
+ }
180
+ }
181
+
182
+ wppaHor = false;
183
+ function wppaToggleHorizon() {
184
+ if ( wppaHor ) {
185
+ jQuery( '#wppa-horizon' ).css( 'display', 'none' );
186
+ wppaHor = false;
187
+ }
188
+ else {
189
+ jQuery( '#wppa-horizon' ).css( 'display', 'inline' );
190
+ wppaHor = true;
191
+ }
192
+ }
193
+
194
+ function wppaTryScheduledel( id ) {
195
+ wppaPhotoStatusChange( id );
196
+ if ( ! jQuery( '#scheduledel-' + id ).prop( 'checked' ) ) {
197
+ wppaAjaxUpdatePhoto( id, 'removescheduledel', 0 );
198
+ }
199
+ }
200
+ ";
201
+
202
+ // The script for the tabs to operate
203
+ $the_js .= '
204
+ function wppaChangePhotoAdminTab(elm,tabId,itemId) {
205
+ jQuery(".wppa-photoadmin-tab-"+itemId).removeClass(\'active\');
206
+ jQuery(elm).addClass(\'active\');
207
+ jQuery(".wppa-tabcontent-"+itemId).hide();
208
+ jQuery(tabId).show();
209
+ }';
210
+
211
+ break;
212
+ }
213
+
214
+ case 'wppa_album_photos_bulk':
215
+ {
216
+ $the_js = "
217
+ function wppaTryMove( id, video ) {
218
+
219
+ var query;
220
+
221
+ if ( ! jQuery( '#target-' + id ).val() ) {
222
+ alert( '" . esc_js( __( 'Please select an album to move to first.', 'wp-photo-album-plus' ) ) . "' );
223
+ return false;
224
+ }
225
+
226
+ if ( video ) {
227
+ query = '" . esc_js( __( 'Are you sure you want to move this video?', 'wp-photo-album-plus' ) ) . "';
228
+ }
229
+ else {
230
+ query = '" . esc_js( __( 'Are you sure you want to move this photo?', 'wp-photo-album-plus' ) ) . "';
231
+ }
232
+
233
+ if ( ! jQuery('#confirm-move').prop('checked') || confirm( query ) ) {
234
+ jQuery( '#moving-' + id ).html( '". __( 'Moving...', 'wp-photo-album-plus' ) . "' );
235
+ wppaAjaxUpdatePhoto( id, 'moveto', jQuery( '#target-' + id ).val(), false, '<td colspan=\'8\' >', '</td>' );
236
+ }
237
+ }" . '
238
+ jQuery(document).ready( function() {
239
+ wppaSetConfirmDelete( "confirm-delete" );
240
+ wppaSetConfirmMove( "confirm-move" );
241
+ });
242
+ function wppaConfirmAndDelete(id, immediate) {
243
+ if ( ! jQuery("#confirm-delete").prop("checked") ||
244
+ confirm( "' . esc_js( __( 'Are you sure you want to delete this photo?', 'wp-photo-album-plus' ) ) . '" ) ) {
245
+ jQuery("#wppa-delete-"+id).html( "' . esc_js( __('Deleting...', 'wp-photo-album-plus' ) ) . '" );
246
+ wppaAjaxDeletePhoto(id, "<td colspan=8 >", "</td>", immediate);
247
+ }
248
+ }';
249
+
250
+ break;
251
+ }
252
+
253
+ case 'wppa_album_photos_sequence':
254
+ {
255
+ $the_js = '
256
+ jQuery( function() {
257
+ jQuery( "#sortable" ).sortable( {
258
+ cursor: "move",
259
+ placeholder: "sortable-placeholder-photos",
260
+ stop: function( event, ui ) {
261
+ var ids = jQuery( ".wppa-sort-item" );
262
+ var seq = jQuery( ".wppa-sort-seqn" );
263
+ var idx = 0;
264
+ while ( idx < ids.length ) {
265
+ var newvalue;
266
+ if ( wppaSeqnoDesc ) {
267
+ newvalue = ids.length - idx;
268
+ }
269
+ else newvalue = idx + 1;
270
+ var oldvalue = seq[idx].value;
271
+ var photo = ids[idx].value;
272
+ if ( newvalue != oldvalue ) {
273
+ wppaDoSeqUpdate( photo, newvalue );
274
+ }
275
+ idx++;
276
+ }
277
+ },
278
+ delay: 100,
279
+ opacity: 0.5,
280
+ scroll: false,
281
+ cursorAt: { left: 90, top: 90 }
282
+ });
283
+ jQuery( "#sortable" ).disableSelection();
284
+ });
285
+ var wppaAjaxRequests = 0;
286
+ function wppaDoSeqUpdate( photo, seqno ) {
287
+ if ( wppaAjaxRequests >=10 ) {
288
+ setTimeout(function(){wppaDoSeqUpdate( photo, seqno );},500);
289
+ return;
290
+ }
291
+ var data = "action=wppa&wppa-action=update-photo&photo-id="+photo+"&item=p_order&wppa-nonce="+document.getElementById(\'photo-nonce-\'+photo).value+"&value="+seqno;
292
+ var xmlhttp = new XMLHttpRequest();
293
+
294
+ xmlhttp.onreadystatechange = function() {
295
+ if ( xmlhttp.readyState == 4 && xmlhttp.status != 404 ) {
296
+ var ArrValues = xmlhttp.responseText.split( "||" );
297
+ if ( ArrValues[0] != "" ) {
298
+ alert("The server returned unexpected output:\n"+ArrValues[0]);
299
+ }
300
+ switch ( ArrValues[1] ) {
301
+ case "0": // No error
302
+ jQuery("#wppa-seqno-"+photo).html(seqno);
303
+ break;
304
+ case "99": // Photo is gone
305
+ jQuery("#wppa-seqno-"+photo).html(\'<span style="color:red">deleted</span>\');
306
+ break;
307
+ default: // Any error
308
+ jQuery("#wppa-seqno-"+photo).html(\'<span style="color:red">Err:"+ArrValues[1]+"</span>\');
309
+ break;
310
+ }
311
+ wppaAjaxRequests--;
312
+ wppaConsoleLog("Pending ajax requests = "+wppaAjaxRequests);
313
+ }
314
+ }
315
+ xmlhttp.open("POST",wppaAjaxUrl,true);
316
+ xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
317
+ xmlhttp.send( data );
318
+ wppaAjaxRequests++;
319
+ wppaConsoleLog("Pending ajax requests = "+wppaAjaxRequests);
320
+ jQuery("#wppa-sort-seqn-"+photo).val(seqno); // set hidden value to new value to prevent duplicate action
321
+ var spinnerhtml = \'<img src="\'+wppaImageDirectory+\'spinner.gif" />\';
322
+ jQuery("#wppa-seqno-"+photo).html(spinnerhtml);
323
+ }';
324
+ break;
325
+ }
326
+
327
+ default:
328
+
329
+ wppa_log( 'err', "No local js for $slug in wppa_add_local_js()" );
330
+ return;
331
+ break;
332
+ }
333
+
334
+ wppa_add_inline_script( 'wppa-admin', $the_js );
335
+ }
wppa-admin.php CHANGED
@@ -3,7 +3,7 @@
3
  * Package: wp-photo-album-plus
4
  *
5
  * Contains the admin menu and startups the admin pages
6
- * Version 8.3.01.002
7
  *
8
  */
9
 
@@ -303,6 +303,8 @@ global $wppa_version;
303
  wp_enqueue_script( 'wppa-touch-punch', '/wp-includes/js/jquery/jquery.ui.touch-punch.js' );
304
  }
305
 
 
 
306
  /* ADMIN PAGE PHP's */
307
 
308
  // Album admin page
3
  * Package: wp-photo-album-plus
4
  *
5
  * Contains the admin menu and startups the admin pages
6
+ * Version 8.3.01.005
7
  *
8
  */
9
 
303
  wp_enqueue_script( 'wppa-touch-punch', '/wp-includes/js/jquery/jquery.ui.touch-punch.js' );
304
  }
305
 
306
+ require_once 'wppa-admin-local-js.php';
307
+
308
  /* ADMIN PAGE PHP's */
309
 
310
  // Album admin page
wppa-adminbar.php CHANGED
@@ -3,7 +3,7 @@
3
  * Package: wp-photo-album-plus
4
  *
5
  * enhances the admin bar with wppa+ menu
6
- * Version 8.3.01.003
7
  *
8
  */
9
 
@@ -93,7 +93,7 @@ function wppa_admin_bar_menu() {
93
  if ( current_user_can( 'wppa_admin' ) && wppa_switch( 'opt_menu_search' ) ) {
94
  $menu_items['search'] = array(
95
  'parent' => $wppaplus,
96
- 'title' => __( 'Search', 'wp-photo-album-plus' ) . $com_pending,
97
  'href' => admin_url( 'admin.php?page=wppa_search' )
98
  );
99
  }
3
  * Package: wp-photo-album-plus
4
  *
5
  * enhances the admin bar with wppa+ menu
6
+ * Version 8.3.01.005
7
  *
8
  */
9
 
93
  if ( current_user_can( 'wppa_admin' ) && wppa_switch( 'opt_menu_search' ) ) {
94
  $menu_items['search'] = array(
95
  'parent' => $wppaplus,
96
+ 'title' => __( 'Search', 'wp-photo-album-plus' ),
97
  'href' => admin_url( 'admin.php?page=wppa_search' )
98
  );
99
  }
wppa-ajax.php CHANGED
@@ -2,7 +2,7 @@
2
  /* wppa-ajax.php
3
  *
4
  * Functions used in ajax requests
5
- * Version 8.3.01.001
6
  *
7
  */
8
 
@@ -3037,8 +3037,7 @@ global $wppa;
3037
  }
3038
  if ( current_user_can( 'wppa_edit_email' ) ) {
3039
  if ( in_array( wppa_get( 'option' ),
3040
- ['email_admin_pagesize',
3041
- 'newalbumnotify',
3042
  'feuploadnotify',
3043
  'commentnotify',
3044
  'commentprevious',
2
  /* wppa-ajax.php
3
  *
4
  * Functions used in ajax requests
5
+ * Version 8.3.01.005
6
  *
7
  */
8
 
3037
  }
3038
  if ( current_user_can( 'wppa_edit_email' ) ) {
3039
  if ( in_array( wppa_get( 'option' ),
3040
+ ['newalbumnotify',
 
3041
  'feuploadnotify',
3042
  'commentnotify',
3043
  'commentprevious',
wppa-album-admin-autosave.php CHANGED
@@ -3,7 +3,7 @@
3
  * Package: wp-photo-album-plus
4
  *
5
  * create, edit and delete albums
6
- * Version 8.3.01.004
7
  *
8
  */
9
 
@@ -14,50 +14,78 @@ global $wpdb;
14
  global $q_config;
15
  global $wppa_revno;
16
 
 
17
  $from = wppa_get_option( 'wppa_search_page', 'wppa_admin_menu' );
18
  delete_option( 'wppa_search_page' );
19
 
20
- if ( $from == 'wppa_admin_menu' ) {
21
- $back_url = get_admin_url() . 'admin.php?page=wppa_admin_menu';
22
- $back_title = __( 'Back to album table', 'wp-photo-album-plus' );
23
- }
24
- elseif ( $from == 'wppa_search' ) {
25
- $back_url = get_admin_url() . 'admin.php?page=wppa_search';
26
- $back_title = __( 'Back to search form', 'wp-photo-album-plus' );
 
 
27
 
28
- if ( wppa_get( 'edit-id' ) == 'search' ) {
29
 
30
- if ( wppa_get( 'searchstring' ) ) {
31
- $back_url .= '&wppa-searchstring=' . wppa_get( 'searchstring' );
32
- }
33
- $back_url .= '#wppa-edit-search-tag';
 
34
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  }
36
- $back_link_html = '
37
- <div style="position:fixed;right:20px;background-color:lightblue;top:50px;z-index:3;">
38
- &nbsp;
39
- <a href="' . $back_url . '"
40
- style=""
41
- >' .
42
- $back_title . '
43
- </a>
44
- &nbsp;
45
- </div>';
46
 
47
- $top_link_html = '
48
- <div style="position:fixed;right:20px;background-color:lightblue;bottom:30px;z-index:3;" >
49
- &nbsp;
50
- <a href="#manage-photos">' .
51
- __( 'Top of page', 'wp-photo-album-plus' ) . '
52
- </a>
53
- &nbsp;
54
- </div>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
 
56
  // Delete trashed comments
57
  $wpdb->query( "DELETE FROM $wpdb->wppa_comments WHERE status = 'trash'" );
58
 
59
- $sel = 'selected';
60
-
61
  // warn if the uploads directory is no writable
62
  if ( ! is_writable( WPPA_UPLOAD_PATH ) ) {
63
  wppa_error_message(
@@ -95,6 +123,7 @@ global $wppa_revno;
95
  }
96
  }
97
 
 
98
  if ( wppa_get( 'tab' ) ) {
99
 
100
  // Check nonce field
@@ -2093,28 +2122,9 @@ jQuery(document).ready(function(){wppaGetCoverPreview( '.$id.', "cover-preview-"
2093
 
2094
  /* Manage photos section */
2095
  {
2096
- wppa_echo( '
2097
- <div class="wppa-table-wrap" style="margin-top:20px;clear:both;position:relative;border:none;">' );
2098
-
2099
- // wppa_echo( '<a name="manage-photos" id="manage-photos" ></a><h2 style="padding-left:12px">' );
2100
-
2101
- if ( wppa_get( 'bulk' ) )
2102
- $result = __( 'Copy / move / delete / edit name / edit description / change status', 'wp-photo-album-plus' );
2103
- elseif ( wppa_get( 'seq' ) )
2104
- $result = __( 'Change item sequence by drag and drop', 'wp-photo-album-plus' );
2105
- elseif ( wppa_get( 'quick' ) )
2106
- $result = __( 'Edit photo information except copy and move', 'wp-photo-album-plus' );
2107
- elseif ( is_numeric( wppa_get( 'edit-id' ) ) ) {
2108
- $result = sprintf( __( 'Edit/Moderate photos from album %s by %s', 'wp-photo-album-plus' ),
2109
- '<i>' . sanitize_text_field( wppa_get_album_name( $id ) ) . '</i>',
2110
- '<i>' . sanitize_user( wppa_get_album_item( $id, 'owner' ) ) . '</i>' );
2111
- }
2112
- else $result = '';
2113
 
2114
- $result .= '
2115
- </h2>';
2116
- // <div style="clear:both"></div>';
2117
- // wppa_echo( $result );
2118
 
2119
  if ( wppa_get( 'bulk' ) )
2120
  wppa_album_photos_bulk( $edit_id );
@@ -2123,19 +2133,16 @@ jQuery(document).ready(function(){wppaGetCoverPreview( '.$id.', "cover-preview-"
2123
  else
2124
  wppa_album_photos( $edit_id );
2125
 
2126
- wppa_echo( '
2127
- </div>
2128
- </details>' );
2129
  }
2130
 
2131
  /* Footer of the page */
2132
  wppa_echo( '
2133
  <br>' .
2134
- // $back_link_html .
2135
  $top_link_html . '
2136
  </div>' );
2137
 
2138
-
2139
  } // End tab is Edit
2140
 
2141
  // Comment moderate
@@ -2234,6 +2241,8 @@ jQuery(document).ready(function(){wppaGetCoverPreview( '.$id.', "cover-preview-"
2234
  </div>';
2235
  wppa_echo( $result );
2236
  }
 
 
2237
  else {
2238
  wppa_error_message( sprintf( __( 'Album admin action %s is not implemented', 'wp-photo-album-plus' ),
2239
  '<b>' . wppa_get( 'tab' ) ) . '</b>' );
@@ -2243,16 +2252,16 @@ jQuery(document).ready(function(){wppaGetCoverPreview( '.$id.', "cover-preview-"
2243
  // 'tab' not set. default, album manage page.
2244
  else {
2245
 
2246
- // if album deleted
2247
  if ( wppa_get( 'del-confirm' ) ) {
2248
 
2249
  if ( ! wp_verify_nonce( wppa_get( 'nonce' ), 'wppa-nonce' ) ) {
2250
- wp_die('Security check failure');
2251
  }
2252
 
2253
  $album_owner = $wpdb->get_var( $wpdb->prepare( "SELECT owner FROM $wpdb->wppa_albums WHERE id = %s", wppa_get( 'del-id' ) ) );
2254
- if ( ( $album_owner == '--- public ---' && ! current_user_can('administrator') ) || ! wppa_have_access( wppa_get( 'del-id' ) ) ) {
2255
- wp_die('You do not have the rights to delete this album');
2256
  }
2257
 
2258
  if ( wppa_get( 'del-photos' ) == 'move' ) {
@@ -2268,12 +2277,12 @@ jQuery(document).ready(function(){wppaGetCoverPreview( '.$id.', "cover-preview-"
2268
  }
2269
  }
2270
 
 
2271
  if ( wppa_get( 'switchto' ) ) {
2272
  wppa_update_option( 'wppa_album_table_'.wppa_get_user(), wppa_get( 'switchto' ) );
2273
  }
2274
- $style = wppa_get_option('wppa_album_table_'.wppa_get_user(), 'flat');
2275
-
2276
-
2277
 
2278
  /* The album admin table of albums page start */
2279
  wppa_echo( '
@@ -2295,7 +2304,7 @@ jQuery(document).ready(function(){wppaGetCoverPreview( '.$id.', "cover-preview-"
2295
  ' );
2296
  }
2297
 
2298
- /* The header buttons / sewlection boxes */
2299
  {
2300
  $header = '
2301
  <div class=="wppa-table-header-box">
@@ -2413,48 +2422,25 @@ jQuery(document).ready(function(){wppaGetCoverPreview( '.$id.', "cover-preview-"
2413
 
2414
  // Close action container
2415
  $header .= '
2416
- </div>
2417
- ';
2418
  wppa_echo( $header );
 
2419
  /* End header buttons / selection boxes */
2420
  }
2421
 
2422
- $the_js = '
2423
- function wppaGoEditAlbNo() {
2424
- var id = parseInt(document.getElementById("wppa-edit-albid").value);
2425
- if (id > 0) {
2426
- var nonce = "' . wp_create_nonce( 'wppa-nonce' ) .'";
2427
- var href = "' . get_admin_url() . 'admin.php?page=wppa_admin_menu&wppa-nonce="+nonce+"&tab=edit&edit-id="+id;
2428
- document.location.href=href;
2429
- }
2430
- else {
2431
- alert("' . __( 'Please enter a valid album id', 'wp-photo-album-plus' ) . '");
2432
- }
2433
- };
2434
- function wppaGoApplyFilter() {
2435
- var filter = document.getElementById("wppa-edit-filter").value;
2436
- if(filter) {
2437
- document.location.href="' . get_admin_url() . 'admin.php?page=wppa_admin_menu&switchto=flat&filter="+filter;
2438
- }
2439
- else {
2440
- alert("' . __( 'Please select a filter token', 'wp-photo-album-plus' ) . '");
2441
- }
2442
- };';
2443
- wppa_add_inline_script( 'wppa-admin', $the_js );
2444
 
2445
- // The table of existing albums
2446
- if ( $style == 'flat' ) {
2447
- wppa_admin_albums_flat();
2448
- }
2449
- else {
2450
- wppa_admin_albums_collapsible();
2451
  }
2452
 
2453
- wppa_echo( '<br>' );
2454
 
 
2455
  wppa_album_sequence( '0' );
2456
 
2457
  wppa_echo( '</div>' );
 
2458
  }
2459
  }
2460
 
@@ -2502,15 +2488,7 @@ global $wpdb;
2502
 
2503
  // If paging: Make new array with selected albums only
2504
  if ( $pagesize ) {
2505
- $temp = $albums;
2506
- $albums = array();
2507
- $i = 0;
2508
- foreach( $temp as $item ) {
2509
- if ( $i >= $skips && $i < ( $skips + $pagesize ) ) {
2510
- $albums[] = $item;
2511
- }
2512
- $i++;
2513
- }
2514
  }
2515
 
2516
  // Do the dirty work
@@ -2609,8 +2587,8 @@ global $wpdb;
2609
  $result = '<tbody>';
2610
  $mayseq = ! wppa_switch( 'porder_restricted' ) || wppa_user_is_admin();
2611
 
2612
- foreach ( $albums as $album ) {//array_keys( $seq ) as $s ) {
2613
- // $album = $albums[$s];
2614
  $id = $album['id'];
2615
  $counts = wppa_get_treecounts_a( $id, true );
2616
  $url = get_admin_url() . 'admin.php?page=wppa_admin_menu&amp;tab=edit&amp;edit-id=' . $id;
@@ -2672,12 +2650,14 @@ global $wpdb;
2672
  $thead_body . '
2673
  </tfoot>
2674
  </table>';
 
 
2675
  wppa_echo( $result );
2676
 
2677
- // wppa_echo( '<div class="wppa-table-header-box">' );
2678
  wppa_admin_pagination( $pagesize, $page, $total, $reload_url, 'bottom' );
2679
- // wppa_echo( '</div>' );
2680
 
 
2681
  wppa_echo( wppa_album_admin_footer() );
2682
 
2683
  }
@@ -2691,14 +2671,33 @@ global $wpdb;
2691
  function wppa_admin_albums_collapsible() {
2692
  global $wpdb;
2693
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2694
  // Get paging parameters
 
2695
  $parms = wppa_get_paging_parms( 'album_admin' );
2696
-
2697
  $pagesize = $parms['pagesize'];
2698
  $page = $parms['page'];
2699
  $skips = ( $page - 1 ) * $pagesize;
2700
  $order_by = $parms['order'];
2701
  $dir = $parms['dir'];
 
2702
 
2703
  // Read all albums, pre-ordered
2704
  $albums = $wpdb->get_results( "SELECT * FROM `$wpdb->wppa_albums` ORDER BY `$order_by` $dir", ARRAY_A );
@@ -2731,15 +2730,7 @@ global $wpdb;
2731
 
2732
  // If paging: Make new array with selected albums only
2733
  if ( $pagesize ) {
2734
- $temp = $albums;
2735
- $albums = array();
2736
- $i = 0;
2737
- foreach( $temp as $item ) {
2738
- if ( $i >= $skips && $i < ( $skips + $pagesize ) ) {
2739
- $albums[] = $item;
2740
- }
2741
- $i++;
2742
- }
2743
  }
2744
 
2745
  // Make sure all (grand)parents are in
@@ -2778,6 +2769,7 @@ global $wpdb;
2778
  WHERE id in (" . implode( ',', $all_ids ) . ")", ARRAY_A );
2779
  }
2780
 
 
2781
  if ( ! empty( $albums ) ) {
2782
 
2783
  // Setup the sequence array
@@ -2948,33 +2940,18 @@ global $wpdb;
2948
  </tfoot>
2949
  </table>';
2950
 
 
2951
  wppa_echo( $result );
2952
 
2953
- // wppa_echo( '<div class="wppa-table-header-box">' );
2954
  wppa_admin_pagination( $pagesize, $page, $total, $reload_url, 'bottom' );
2955
- // wppa_echo( '</div>' );
2956
 
 
2957
  wppa_echo( wppa_album_admin_footer() );
2958
 
2959
- $the_js = '
2960
- function checkArrows() {
2961
- elms = jQuery(".alb-arrow-off");
2962
- for(i=0;i<elms.length;i++) {
2963
- elm = elms[i];
2964
- if ( elm.parentNode.parentNode.style.display == "none" ) elm.style.display = "none";
2965
- }
2966
- elms = jQuery(".alb-arrow-on");
2967
- for(i=0;i<elms.length;i++) {
2968
- elm = elms[i];
2969
- if ( elm.parentNode.parentNode.style.display == "none" ) elm.style.display = "";
2970
- }
2971
- }';
2972
-
2973
- wppa_add_inline_script( 'wppa-admin', $the_js );
2974
  }
2975
  else {
2976
  wppa_echo( '</div>' ); // Close action contatiner
2977
-
2978
  wppa_echo( '<h2>' . __( 'No albums yet.', 'wp-photo-album-plus' ) . '</h2>' );
2979
  }
2980
  }
@@ -3067,13 +3044,12 @@ global $wpdb;
3067
  <tr>' .
3068
  ( $collapsible ? '<td></td>' : '' ) . '
3069
  <td>' . __( 'Any', 'wp-photo-album-plus' ) . '</td>' .
3070
- ( $collapsible ? '<td></td><td></td><td></td><td></td><td></td>' : '' ) . '
3071
  <td colspan="4" >' .
3072
  sprintf( __( 'There are %s trashed photos that can be rescued', 'wp-photo-album-plus' ), $trashed ) . '
3073
  </td>
3074
- <td>
3075
  </td>
3076
- <td></td>
3077
  <td>
3078
  <a class="wppaedit" onclick="wppaEditTrash( \'' . wppa_ea_url( 'trash' ) . '\' );">
3079
  <span style="font-weight:bold">' . __( 'Edit', 'wp-photo-album-plus' ) . '</span>
3
  * Package: wp-photo-album-plus
4
  *
5
  * create, edit and delete albums
6
+ * Version 8.3.01.005
7
  *
8
  */
9
 
14
  global $q_config;
15
  global $wppa_revno;
16
 
17
+ // From search page or from menu?
18
  $from = wppa_get_option( 'wppa_search_page', 'wppa_admin_menu' );
19
  delete_option( 'wppa_search_page' );
20
 
21
+ // Create the back to ... link and top of page link html
22
+ {
23
+ if ( $from == 'wppa_admin_menu' ) {
24
+ $back_url = get_admin_url() . 'admin.php?page=wppa_admin_menu';
25
+ $back_title = __( 'Back to album table', 'wp-photo-album-plus' );
26
+ }
27
+ elseif ( $from == 'wppa_search' ) {
28
+ $back_url = get_admin_url() . 'admin.php?page=wppa_search';
29
+ $back_title = __( 'Back to search form', 'wp-photo-album-plus' );
30
 
31
+ if ( wppa_get( 'edit-id' ) == 'search' ) {
32
 
33
+ if ( wppa_get( 'searchstring' ) ) {
34
+ $back_url .= '&wppa-searchstring=' . wppa_get( 'searchstring' );
35
+ }
36
+ $back_url .= '#wppa-edit-search-tag';
37
+ }
38
  }
39
+ $back_link_html = '
40
+ <div style="position:fixed;right:20px;background-color:lightblue;top:50px;z-index:3;">
41
+ &nbsp;
42
+ <a href="' . $back_url . '"
43
+ style=""
44
+ >' .
45
+ $back_title . '
46
+ </a>
47
+ &nbsp;
48
+ </div>';
49
+
50
+ $top_link_html = '
51
+ <div style="position:fixed;right:20px;background-color:lightblue;bottom:30px;z-index:3;" >
52
+ &nbsp;
53
+ <a href="#manage-photos">' .
54
+ __( 'Top of page', 'wp-photo-album-plus' ) . '
55
+ </a>
56
+ &nbsp;
57
+ </div>';
58
  }
 
 
 
 
 
 
 
 
 
 
59
 
60
+ // Add local javascript
61
+ {
62
+ $the_js = '
63
+ function wppaGoEditAlbNo() {
64
+ var id = parseInt(document.getElementById("wppa-edit-albid").value);
65
+ if (id > 0) {
66
+ var nonce = "' . wp_create_nonce( 'wppa-nonce' ) .'";
67
+ var href = "' . get_admin_url() . 'admin.php?page=wppa_admin_menu&wppa-nonce="+nonce+"&tab=edit&edit-id="+id;
68
+ document.location.href=href;
69
+ }
70
+ else {
71
+ alert("' . __( 'Please enter a valid album id', 'wp-photo-album-plus' ) . '");
72
+ }
73
+ };
74
+ function wppaGoApplyFilter() {
75
+ var filter = document.getElementById("wppa-edit-filter").value;
76
+ if(filter) {
77
+ document.location.href="' . get_admin_url() . 'admin.php?page=wppa_admin_menu&switchto=flat&filter="+filter;
78
+ }
79
+ else {
80
+ alert("' . __( 'Please select a filter token', 'wp-photo-album-plus' ) . '");
81
+ }
82
+ };';
83
+ wppa_add_inline_script( 'wppa-admin', $the_js );
84
+ }
85
 
86
  // Delete trashed comments
87
  $wpdb->query( "DELETE FROM $wpdb->wppa_comments WHERE status = 'trash'" );
88
 
 
 
89
  // warn if the uploads directory is no writable
90
  if ( ! is_writable( WPPA_UPLOAD_PATH ) ) {
91
  wppa_error_message(
123
  }
124
  }
125
 
126
+ // 'tab' set? If so, check nonce and see what we are going to do
127
  if ( wppa_get( 'tab' ) ) {
128
 
129
  // Check nonce field
2122
 
2123
  /* Manage photos section */
2124
  {
2125
+ wppa_echo( '<div class="wppa-table-wrap" style="margin-top:20px;clear:both;position:relative;border:none;">' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2126
 
2127
+ wppa_echo( '<a name="manage-photos" id="manage-photos" ></a>' );
 
 
 
2128
 
2129
  if ( wppa_get( 'bulk' ) )
2130
  wppa_album_photos_bulk( $edit_id );
2133
  else
2134
  wppa_album_photos( $edit_id );
2135
 
2136
+ wppa_echo( '</div>' );
2137
+
 
2138
  }
2139
 
2140
  /* Footer of the page */
2141
  wppa_echo( '
2142
  <br>' .
 
2143
  $top_link_html . '
2144
  </div>' );
2145
 
 
2146
  } // End tab is Edit
2147
 
2148
  // Comment moderate
2241
  </div>';
2242
  wppa_echo( $result );
2243
  }
2244
+
2245
+ // Unimplemented
2246
  else {
2247
  wppa_error_message( sprintf( __( 'Album admin action %s is not implemented', 'wp-photo-album-plus' ),
2248
  '<b>' . wppa_get( 'tab' ) ) . '</b>' );
2252
  // 'tab' not set. default, album manage page.
2253
  else {
2254
 
2255
+ // Delete album
2256
  if ( wppa_get( 'del-confirm' ) ) {
2257
 
2258
  if ( ! wp_verify_nonce( wppa_get( 'nonce' ), 'wppa-nonce' ) ) {
2259
+ wp_die( 'Security check failure' );
2260
  }
2261
 
2262
  $album_owner = $wpdb->get_var( $wpdb->prepare( "SELECT owner FROM $wpdb->wppa_albums WHERE id = %s", wppa_get( 'del-id' ) ) );
2263
+ if ( ( $album_owner == '--- public ---' && ! current_user_can( 'administrator' ) ) || ! wppa_have_access( wppa_get( 'del-id' ) ) ) {
2264
+ wp_die( 'You do not have the rights to delete this album' );
2265
  }
2266
 
2267
  if ( wppa_get( 'del-photos' ) == 'move' ) {
2277
  }
2278
  }
2279
 
2280
+ // Switch to flat / collapsable table
2281
  if ( wppa_get( 'switchto' ) ) {
2282
  wppa_update_option( 'wppa_album_table_'.wppa_get_user(), wppa_get( 'switchto' ) );
2283
  }
2284
+ $style = wppa_get_option('wppa_album_table_'.wppa_get_user(), 'flat'); // 'flat' or 'collapsible'
2285
+ if ( $style != 'flat' ) $style = 'collapsible';
 
2286
 
2287
  /* The album admin table of albums page start */
2288
  wppa_echo( '
2304
  ' );
2305
  }
2306
 
2307
+ /* The header buttons / selection boxes */
2308
  {
2309
  $header = '
2310
  <div class=="wppa-table-header-box">
2422
 
2423
  // Close action container
2424
  $header .= '
2425
+ </div>';
 
2426
  wppa_echo( $header );
2427
+
2428
  /* End header buttons / selection boxes */
2429
  }
2430
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2431
 
2432
+ // The table of existing albums. $style = 'flat' or 'collapsible'
2433
+ if ( in_array( $style, ['flat', 'collapsible'] ) ) {
2434
+ call_user_func( 'wppa_admin_albums_' . $style );
 
 
 
2435
  }
2436
 
2437
+ wppa_echo( '<hr style="background-color:#777;height:3px;margin:20px 0;">' );
2438
 
2439
+ // The drag-drop sequence editor for toplevel albums
2440
  wppa_album_sequence( '0' );
2441
 
2442
  wppa_echo( '</div>' );
2443
+ /* The album admin table of albums page end */
2444
  }
2445
  }
2446
 
2488
 
2489
  // If paging: Make new array with selected albums only
2490
  if ( $pagesize ) {
2491
+ $albums = array_slice( $albums, $skips, $pagesize );
 
 
 
 
 
 
 
 
2492
  }
2493
 
2494
  // Do the dirty work
2587
  $result = '<tbody>';
2588
  $mayseq = ! wppa_switch( 'porder_restricted' ) || wppa_user_is_admin();
2589
 
2590
+ foreach ( $albums as $album ) {
2591
+
2592
  $id = $album['id'];
2593
  $counts = wppa_get_treecounts_a( $id, true );
2594
  $url = get_admin_url() . 'admin.php?page=wppa_admin_menu&amp;tab=edit&amp;edit-id=' . $id;
2650
  $thead_body . '
2651
  </tfoot>
2652
  </table>';
2653
+
2654
+ // Display the album table footer
2655
  wppa_echo( $result );
2656
 
2657
+ // Display pagination
2658
  wppa_admin_pagination( $pagesize, $page, $total, $reload_url, 'bottom' );
 
2659
 
2660
+ // Display footer
2661
  wppa_echo( wppa_album_admin_footer() );
2662
 
2663
  }
2671
  function wppa_admin_albums_collapsible() {
2672
  global $wpdb;
2673
 
2674
+ // Add local javascript
2675
+ {
2676
+ $the_js = '
2677
+ function checkArrows() {
2678
+ elms = jQuery(".alb-arrow-off");
2679
+ for(i=0;i<elms.length;i++) {
2680
+ elm = elms[i];
2681
+ if ( elm.parentNode.parentNode.style.display == "none" ) elm.style.display = "none";
2682
+ }
2683
+ elms = jQuery(".alb-arrow-on");
2684
+ for(i=0;i<elms.length;i++) {
2685
+ elm = elms[i];
2686
+ if ( elm.parentNode.parentNode.style.display == "none" ) elm.style.display = "";
2687
+ }
2688
+ }';
2689
+ wppa_add_inline_script( 'wppa-admin', $the_js );
2690
+ }
2691
+
2692
  // Get paging parameters
2693
+ {
2694
  $parms = wppa_get_paging_parms( 'album_admin' );
 
2695
  $pagesize = $parms['pagesize'];
2696
  $page = $parms['page'];
2697
  $skips = ( $page - 1 ) * $pagesize;
2698
  $order_by = $parms['order'];
2699
  $dir = $parms['dir'];
2700
+ }
2701
 
2702
  // Read all albums, pre-ordered
2703
  $albums = $wpdb->get_results( "SELECT * FROM `$wpdb->wppa_albums` ORDER BY `$order_by` $dir", ARRAY_A );
2730
 
2731
  // If paging: Make new array with selected albums only
2732
  if ( $pagesize ) {
2733
+ $albums = array_slice( $albums, $skips, $pagesize );
 
 
 
 
 
 
 
 
2734
  }
2735
 
2736
  // Make sure all (grand)parents are in
2769
  WHERE id in (" . implode( ',', $all_ids ) . ")", ARRAY_A );
2770
  }
2771
 
2772
+ // If any albums left, do trhe dirty work
2773
  if ( ! empty( $albums ) ) {
2774
 
2775
  // Setup the sequence array
2940
  </tfoot>
2941
  </table>';
2942
 
2943
+ // Display the album table footer
2944
  wppa_echo( $result );
2945
 
2946
+ // Display the pagination
2947
  wppa_admin_pagination( $pagesize, $page, $total, $reload_url, 'bottom' );
 
2948
 
2949
+ // Display the footer
2950
  wppa_echo( wppa_album_admin_footer() );
2951
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2952
  }
2953
  else {
2954
  wppa_echo( '</div>' ); // Close action contatiner
 
2955
  wppa_echo( '<h2>' . __( 'No albums yet.', 'wp-photo-album-plus' ) . '</h2>' );
2956
  }
2957
  }
3044
  <tr>' .
3045
  ( $collapsible ? '<td></td>' : '' ) . '
3046
  <td>' . __( 'Any', 'wp-photo-album-plus' ) . '</td>' .
3047
+ ( $collapsible ? '<td colspan="5">' : '' ) . '
3048
  <td colspan="4" >' .
3049
  sprintf( __( 'There are %s trashed photos that can be rescued', 'wp-photo-album-plus' ), $trashed ) . '
3050
  </td>
3051
+ <td colspan="2">
3052
  </td>
 
3053
  <td>
3054
  <a class="wppaedit" onclick="wppaEditTrash( \'' . wppa_ea_url( 'trash' ) . '\' );">
3055
  <span style="font-weight:bold">' . __( 'Edit', 'wp-photo-album-plus' ) . '</span>
wppa-comment-admin.php CHANGED
@@ -3,7 +3,7 @@
3
  * Package: wp-photo-album-plus
4
  *
5
  * manage all comments
6
- * Version 8.3.01.001
7
  *
8
  */
9
 
@@ -279,7 +279,7 @@ class WPPA_Comment_table extends WPPA_List_Table {
279
 
280
  $parms = wppa_get_paging_parms( 'comment_admin' );
281
 
282
- $per_page = $parms['pagesize']; //wppa_opt( 'comment_admin_pagesize' );
283
  $columns = $this->get_columns();
284
  $hidden = array();
285
  $sortable = $this->get_sortable_columns();
3
  * Package: wp-photo-album-plus
4
  *
5
  * manage all comments
6
+ * Version 8.3.01.005
7
  *
8
  */
9
 
279
 
280
  $parms = wppa_get_paging_parms( 'comment_admin' );
281
 
282
+ $per_page = $parms['pagesize'];
283
  $columns = $this->get_columns();
284
  $hidden = array();
285
  $sortable = $this->get_sortable_columns();
wppa-defaults.php CHANGED
@@ -3,7 +3,7 @@
3
  * Package: wp-photo-album-plus
4
  *
5
  * Contains default settings
6
- * Version 8.3.01.001
7
  *
8
  */
9
 
@@ -942,8 +942,6 @@ horizrailenabled:false,";
942
  'wppa_meta_all' => 'yes', // 10
943
  'wppa_alt_type' => 'fullname',
944
  'wppa_photo_admin_max_albums' => '500',
945
- 'wppa_comment_admin_pagesize' => '10',
946
- 'wppa_email_admin_pagesize' => '20',
947
  'wppa_jpeg_quality' => '95',
948
  'wppa_geo_edit' => 'no',
949
  'wppa_adminbarmenu_admin' => 'yes',
3
  * Package: wp-photo-album-plus
4
  *
5
  * Contains default settings
6
+ * Version 8.3.01.005
7
  *
8
  */
9
 
942
  'wppa_meta_all' => 'yes', // 10
943
  'wppa_alt_type' => 'fullname',
944
  'wppa_photo_admin_max_albums' => '500',
 
 
945
  'wppa_jpeg_quality' => '95',
946
  'wppa_geo_edit' => 'no',
947
  'wppa_adminbarmenu_admin' => 'yes',
wppa-photo-admin-autosave.php CHANGED
@@ -3,7 +3,7 @@
3
  * Package: wp-photo-album-plus
4
  *
5
  * edit and delete photos
6
- * Version 8.3.01.003
7
  *
8
  */
9
 
@@ -86,26 +86,26 @@ function _wppa_moderate_photos() {
86
  function wppa_album_photos( $album = '', $photo = '', $owner = '', $moderate = false ) {
87
  global $wpdb;
88
 
89
- $a = wppa_is_int( $album ) ? $album : '0';
90
-
91
- $quick = wppa_get( 'quick' );
92
- $slug = 'photo_admin';
93
- $is_empty = false;
94
 
95
- if ( ! $a ) {
96
- $slug .= '_' . $album;
97
- }
98
- if ( $quick ) $slug = 'photo_quick';
99
 
100
- $parms = wppa_get_paging_parms( $slug );
101
 
102
  $pagesize = $parms['pagesize'];
103
  $page = $parms['page'];
104
 
105
- if ( ! is_numeric( $page ) ) $page = 1;
 
106
  $skip = ( $page - '1' ) * $pagesize;
107
- $album_is_obvious = false;
108
- $photos = array();
109
 
110
  // Edit the photos in a specific album
111
  if ( $album ) {
@@ -138,7 +138,7 @@ global $wpdb;
138
 
139
  // A physical album
140
  else {
141
- $album_is_obvious = true;
142
  $counts = wppa_get_treecounts_a( $album, true );
143
  $count = $counts['selfphotos'] + $counts['pendselfphotos'] + $counts['scheduledselfphotos'];
144
  $photos = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $wpdb->wppa_photos
@@ -304,197 +304,6 @@ global $wpdb;
304
  // There are photos to display for editing
305
  else {
306
 
307
- // Local js functions
308
- {
309
- $the_js = "
310
- function wppaTryMove( id, video ) {
311
-
312
- var query;
313
-
314
- if ( ! jQuery( '#target-' + id ).val() ) {
315
- alert( '" . esc_js( __( 'Please select an album to move to first.', 'wp-photo-album-plus' ) ) . "' );
316
- return false;
317
- }
318
-
319
- if ( video ) {
320
- query = '" . esc_js( __( 'Are you sure you want to move this video?', 'wp-photo-album-plus' ) ) . "';
321
- }
322
- else {
323
- query = '" . esc_js( __( 'Are you sure you want to move this photo?', 'wp-photo-album-plus' ) ) . "';
324
- }
325
-
326
- if ( confirm( query ) ) {
327
- wppaAjaxUpdatePhoto( id, 'moveto', document.getElementById( 'target-' + id ).value );
328
- }
329
- }
330
-
331
- function wppaTryCopy( id, video ) {
332
-
333
- var query;
334
-
335
- if ( ! jQuery( '#target-' + id ).val() ) {
336
- alert( '" . esc_js( __( 'Please select an album to copy to first.', 'wp-photo-album-plus' ) ) . "' );
337
- return false;
338
- }
339
-
340
- if ( video ) {
341
- query = '" . esc_js( __( 'Are you sure you want to copy this video?', 'wp-photo-album-plus' ) ) . "';
342
- }
343
- else {
344
- query = '" . esc_js( __( 'Are you sure you want to copy this photo?', 'wp-photo-album-plus' ) ) . "';
345
- }
346
-
347
- if ( confirm( query ) ) {
348
- wppaAjaxUpdatePhoto( id, 'copyto', document.getElementById( 'target-' + id ).value );
349
- }
350
- }
351
-
352
- function wppaTryDelete( id, video, perm ) {
353
-
354
- var query;
355
-
356
- if ( perm ) {
357
- if ( video ) {
358
- query = '" . esc_js( __( 'Are you sure you want to remove this video permanently?', 'wp-photo-album-plus' ) ) . "';
359
- }
360
- else {
361
- query = '" . esc_js( __( 'Are you sure you want to remove this photo permanently?', 'wp-photo-album-plus' ) ) . "';
362
- }
363
- }
364
- else {
365
- if ( video ) {
366
- query = '" . esc_js( __( 'Are you sure you want to delete this video?', 'wp-photo-album-plus' ) ) . "';
367
- }
368
- else {
369
- query = '" . esc_js( __( 'Are you sure you want to delete this photo?', 'wp-photo-album-plus' ) ) . "';
370
- }
371
- }
372
-
373
- if ( confirm( query ) ) {
374
- if ( perm ) {
375
- wppaAjaxDeletePhoto( id, '', '', true );
376
- }
377
- else {
378
- wppaAjaxDeletePhoto( id );
379
- }
380
- jQuery( window ).trigger( 'scroll' );
381
- }
382
- }
383
-
384
- function wppaTryUndelete ( id ) {
385
- wppaAjaxUndeletePhoto( id );
386
- }
387
-
388
- function wppaTryRotLeft( id ) {
389
-
390
- var query = '" . esc_js( __( 'Are you sure you want to rotate this photo left?', 'wp-photo-album-plus' ) ) . "';
391
-
392
- if ( confirm( query ) ) {
393
- wppaAjaxUpdatePhoto( id, 'rotleft', 0 );
394
- }
395
- }
396
-
397
- function wppaTryRot180( id ) {
398
-
399
- var query = '" . esc_js( __( 'Are you sure you want to rotate this photo 180&deg;?', 'wp-photo-album-plus' ) ) . "';
400
-
401
- if ( confirm( query ) ) {
402
- wppaAjaxUpdatePhoto( id, 'rot180', 0 );
403
- }
404
- }
405
-
406
- function wppaTryRotRight( id ) {
407
-
408
- var query = '" . esc_js( __( 'Are you sure you want to rotate this photo right?', 'wp-photo-album-plus' ) ) . "';
409
-
410
- if ( confirm( query ) ) {
411
- wppaAjaxUpdatePhoto( id, 'rotright', 0 );
412
- }
413
- }
414
-
415
- function wppaTryFlip( id ) {
416
-
417
- var query = '" . esc_js( __( 'Are you sure you want to flip this photo?', 'wp-photo-album-plus' ) ) . "';
418
-
419
- if ( confirm( query ) ) {
420
- wppaAjaxUpdatePhoto( id, 'flip', 0 );
421
- }
422
- }
423
-
424
- function wppaTryFlop( id ) {
425
-
426
- var query = '" . esc_js( __( 'Are you sure you want to flip this photo?', 'wp-photo-album-plus' ) ) . "';
427
-
428
- if ( confirm( query ) ) {
429
- wppaAjaxUpdatePhoto( id, 'flop', 0 );
430
- }
431
- }
432
-
433
- function wppaTryWatermark( id, hasSource, canRemove ) {
434
-
435
- var query;
436
- var wmFile = jQuery( '#wmfsel_' + id ).val();
437
- if ( wmFile == '--- none ---' ) {
438
- alert( '" . esc_js( __( 'No watermark selected', 'wp-photo-album-plus' ) ) . "' );
439
- return;
440
- }
441
- if ( hasSource ) {
442
- query = '" . esc_js( __( 'Are you sure?', 'wp-photo-album-plus' ) ) . "';
443
- query += '. ';
444
- query += '" . esc_js( __( 'To revert to the default watermark setting afterwards: select Watermark: --- default --- and press the Remake files button', 'wp-photo-album-plus' ) ) . "';
445
- if ( canRemove ) {
446
- query += '. ';
447
- query += '" . esc_js( __( 'To remove: select Watermark: --- none --- and press the Remake files button', 'wp-photo-album-plus' ) ) . "';
448
- }
449
- }
450
- else {
451
- query = '" . esc_js( __( 'Are you sure? Once applied it can not be removed!', 'wp-photo-album-plus' ) ) . "';
452
- query += '. ';
453
- query += '" . esc_js( __( 'And I do not know if there is already a watermark on this photo', 'wp-photo-album-plus' ) ) . "';
454
- }
455
-
456
- if ( confirm( query ) ) {
457
- wppaAjaxApplyWatermark( id, document.getElementById( 'wmfsel_' + id ).value, document.getElementById( 'wmpsel_' + id ).value );
458
- }
459
- }
460
-
461
- function wppaTryMagick( id, slug, value ) {
462
-
463
- if ( ! value ) {
464
- value = 0;
465
- }
466
-
467
- var query = '" . esc_js( __( 'Are you sure you want to magically process this photo?', 'wp-photo-album-plus' ) ) . "';
468
-
469
- if ( true || confirm( query ) ) {
470
- jQuery( '#wppa-admin-spinner' ).css( 'display', 'inline' );
471
- wppaAjaxUpdatePhoto( id, slug, value );
472
- }
473
- }
474
-
475
- wppaHor = false;
476
- function wppaToggleHorizon() {
477
- if ( wppaHor ) {
478
- jQuery( '#wppa-horizon' ).css( 'display', 'none' );
479
- wppaHor = false;
480
- }
481
- else {
482
- jQuery( '#wppa-horizon' ).css( 'display', 'inline' );
483
- wppaHor = true;
484
- }
485
- }
486
-
487
- function wppaTryScheduledel( id ) {
488
- wppaPhotoStatusChange( id );
489
- if ( ! jQuery( '#scheduledel-' + id ).prop( 'checked' ) ) {
490
- wppaAjaxUpdatePhoto( id, 'removescheduledel', 0 );
491
- }
492
- }
493
- ";
494
-
495
- wppa_add_inline_script( 'wppa-admin', $the_js );
496
- }
497
-
498
  $mvt = esc_attr( __( 'Move video', 'wp-photo-album-plus' ) );
499
  $mpt = esc_attr( __( 'Move photo', 'wp-photo-album-plus' ) );
500
  $cvt = esc_attr( __( 'Copy video', 'wp-photo-album-plus' ) );
@@ -1032,20 +841,6 @@ wppa_echo( '</fieldset>' );
1032
  </div>';
1033
  wppa_echo( $result );
1034
 
1035
- // The script for the tabs to operate, we need this only once
1036
- global $did_add_cpat;
1037
- if ( ! $did_add_cpat ) {
1038
- $the_js = '
1039
- function wppaChangePhotoAdminTab(elm,tabId,itemId) {
1040
- jQuery(".wppa-photoadmin-tab-"+itemId).removeClass(\'active\');
1041
- jQuery(elm).addClass(\'active\');
1042
- jQuery(".wppa-tabcontent-"+itemId).hide();
1043
- jQuery(tabId).show();
1044
- }';
1045
- wppa_add_inline_script( 'wppa-admin', $the_js );
1046
- $did_add_cpat = true;
1047
- }
1048
-
1049
  // Tab 1 Photo general
1050
  wppa_echo( '
1051
  <div
@@ -1127,7 +922,7 @@ wppa_echo( '</fieldset>' );
1127
  }
1128
 
1129
  // Album. Show album only when it is not evident
1130
- if ( ! $album_is_obvious ) {
1131
  wppa_echo( '
1132
  <div class="left" style="margin-right: 4px;">
1133
  <label>' .
@@ -2508,7 +2303,7 @@ wppa_echo( '</fieldset>' );
2508
  wppa_echo( '
2509
  <fieldset class="wppa-fieldset">
2510
  <legend class="wppa-legend">' .
2511
- __( 'Masgically edit image', 'wp-photo-album-plus' ) . '
2512
  </legend>' );
2513
 
2514
 
@@ -2526,6 +2321,7 @@ wppa_echo( '</fieldset>' );
2526
  <div class="wppa-flex">' );
2527
 
2528
  {
 
2529
  // Rotate left
2530
  wppa_echo( '
2531
  <input
@@ -2799,8 +2595,6 @@ wppa_echo( '</fieldset>' );
2799
  $value = $dflt;
2800
  }
2801
 
2802
- // $the_js = 'jQuery(document).ready(function(){wppaCropper[' . $id . '].setAspectRatio(' . $value . ');});';
2803
- // wppa_add_inline_script( 'wppa-admin', $the_js );
2804
  }
2805
 
2806
  // End flex div
@@ -3041,19 +2835,8 @@ wppa_echo( '</fieldset>' );
3041
  </div>' );
3042
  }
3043
 
3044
- $the_js = '';
3045
-
3046
  // Fix the background color
3047
- $the_js .= '
3048
- wppaPhotoStatusChange('.$id.');';
3049
-
3050
- // If item is moderatable, open details
3051
- // if ( $status == 'pending' && $may_edit_status ) {
3052
- // $the_js .= '
3053
- // jQuery(document).ready(function(){
3054
- // jQuery("#wppa-toplevel-details-'.$id.'").attr("open","open");
3055
- // });';
3056
- // }
3057
 
3058
  // When there are moderatable comments, open details and comments tab
3059
  if ( $has_pending_comments && ( current_user_can( 'wppa_comments' ) || current_user_can( 'wppa_moderate' ) || ( ( wppa_get_user() == $photo['owner'] && wppa_switch( 'owner_moderate_comment' ) ) ) ) ) {
@@ -3092,6 +2875,7 @@ function wppa_album_photos_bulk( $album ) {
3092
  }
3093
 
3094
  // Init
 
3095
  $count = '0';
3096
  $abort = false;
3097
 
@@ -3205,7 +2989,10 @@ function wppa_album_photos_bulk( $album ) {
3205
  }
3206
  else wppa_error_message( 'Unexpected error #2 in wppa_album_photos_bulk().' );
3207
  }
3208
- else wppa_error_message( 'Unexpected error #1 in wppa_album_photos_bulk().' );
 
 
 
3209
 
3210
  if ( $count && ! $abort ) {
3211
  switch ( wppa_get( 'bulk-action' ) ) {
@@ -3294,173 +3081,173 @@ function wppa_album_photos_bulk( $album ) {
3294
 
3295
  wppa_admin_pagination( $pagesize, $page, $count, $plink, 'top' );
3296
 
3297
- $the_js = "
3298
- function wppaTryMove( id, video ) {
3299
-
3300
- var query;
3301
-
3302
- if ( ! jQuery( '#target-' + id ).val() ) {
3303
- alert( '" . esc_js( __( 'Please select an album to move to first.', 'wp-photo-album-plus' ) ) . "' );
3304
- return false;
3305
- }
 
 
 
 
 
 
 
 
 
 
3306
 
3307
- if ( video ) {
3308
- query = '" . esc_js( __( 'Are you sure you want to move this video?', 'wp-photo-album-plus' ) ) . "';
3309
- }
3310
- else {
3311
- query = '" . esc_js( __( 'Are you sure you want to move this photo?', 'wp-photo-album-plus' ) ) . "';
3312
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3313
 
3314
- if ( ! jQuery('#confirm-move').prop('checked') || confirm( query ) ) {
3315
- jQuery( '#moving-' + id ).html( '". __( 'Moving...', 'wp-photo-album-plus' ) . "' );
3316
- wppaAjaxUpdatePhoto( id, 'moveto', jQuery( '#target-' + id ).val(), false, '<td colspan=\'8\' >', '</td>' );
3317
- }
3318
- }" . '
3319
- jQuery(document).ready( function() {
3320
- wppaSetConfirmDelete( "confirm-delete" );
3321
- wppaSetConfirmMove( "confirm-move" );
3322
- });
3323
- function wppaConfirmAndDelete(id, immediate) {
3324
- if ( ! jQuery("#confirm-delete").prop("checked") ||
3325
- confirm( "' . esc_js( __( 'Are you sure you want to delete this photo?', 'wp-photo-album-plus' ) ) . '" ) ) {
3326
- jQuery("#wppa-delete-"+id).html( "' . esc_js( __('Deleting...', 'wp-photo-album-plus' ) ) . '" );
3327
- wppaAjaxDeletePhoto(id, "<td colspan=8 >", "</td>", immediate);
3328
- }
3329
- }';
3330
 
3331
- wppa_add_inline_script( 'wppa-admin', $the_js );
 
 
 
 
 
 
 
 
 
 
 
3332
 
3333
- $result = '
3334
- <form action="' . $link . '&paged=' . $page . '#manage-photos" method="post">' .
3335
- wp_nonce_field( 'wppa-bulk', 'wppa-bulk' ) . '
3336
- <div>' . //__( 'Bulk action', 'wp-photo-album-plus' ) . '
3337
- ' <select id="wppa-bulk-action" name="wppa-bulk-action" onchange="wppaBulkActionChange( this, \'bulk-album\' )">
3338
- <option value="" disabled selected>' . esc_html__( 'Bulk action', 'wp-photo-album-plus' ) . '</option>';
3339
- if ( $album == 'trash' ) {
3340
- $result .= '
3341
- <option value="wppa-bulk-delete-immediate">' . __( 'Remove permanently', 'wp-photo-album-plus' ) . '</option>
3342
- <option value="wppa-bulk-undelete">' . __( 'Undelete', 'wp-photo-album-plus' ) . '</option>';
3343
- }
3344
- else {
3345
- $result .= '
3346
- <option value="wppa-bulk-delete">' . __( 'Delete', 'wp-photo-album-plus' ) . '</option>';
3347
- }
3348
- $result .= '
3349
- <option value="wppa-bulk-move-to">' . __( 'Move to', 'wp-photo-album-plus' ) . '</option>
3350
- <option value="wppa-bulk-copy-to">' . __( 'Copy to', 'wp-photo-album-plus' ) . '</option>';
3351
 
3352
- if ( current_user_can( 'wppa_admin' ) || current_user_can( 'wppa_moderate' ) ) {
3353
- $result .= '
3354
- <option value="wppa-bulk-status">' . __( 'Set status to', 'wp-photo-album-plus' ) . '</option>';
3355
- }
3356
- if ( wppa_user_is_admin() && wppa_switch( 'photo_owner_change' ) ) {
3357
  $result .= '
3358
- <option value="wppa-bulk-owner">' . __( 'Set owner to', 'wp-photo-album-plus' ) . '</option>';
3359
- }
3360
- $result .= '
3361
- </select>' .
3362
-
3363
- wppa_album_select_a( array( 'checkaccess' => true,
3364
- 'path' => true,
3365
- 'exclude' => $album,
3366
- 'selected' => '0',
3367
- 'addpleaseselect' => true,
3368
- 'sort' => true,
3369
- 'tagopen' => '<select' .
3370
- ' name="wppa-bulk-album"' .
3371
- ' id="wppa-bulk-album"' .
3372
- ' style="display:none"' .
3373
- ' onchange="wppa_setCookie( \'wppa_bulk_album\',this.value,365 )"' .
3374
- ' >',
3375
- 'tagname' => 'wppa-bulk-album',
3376
- 'tagid' => 'wppa-bulk-album',
3377
- 'tagonchange' => 'wppa_setCookie( \'wppa_bulk_album\',this.value,365 );',
3378
- 'tagstyle' => 'display:none;cursor:pointer;',
3379
- ) );
3380
-
3381
- wppa_echo( $result );
3382
- ?>
3383
- <select name="wppa-bulk-status" id="wppa-bulk-status" style="display:none" onchange="wppa_setCookie( 'wppa_bulk_status',this.value,365 )">
3384
- <option value=""><?php _e( '- select a status -' , 'wp-photo-album-plus' ) ?></option>
3385
- <option value="pending"><?php _e( 'Pending' , 'wp-photo-album-plus' ) ?></option>
3386
- <option value="publish"><?php _e( 'Publish' , 'wp-photo-album-plus' ) ?></option>
3387
- <?php if ( wppa_switch( 'ext_status_restricted' ) && ! wppa_user_is_admin() ) $dis = ' disabled'; else $dis = ''; ?>
3388
- <option value="featured"<?php wppa_echo( $dis )?> ><?php _e( 'Featured' , 'wp-photo-album-plus' ) ?></option>
3389
- <option value="gold" <?php wppa_echo( $dis )?> ><?php _e( 'Gold' , 'wp-photo-album-plus' ) ?></option>
3390
- <option value="silver" <?php wppa_echo( $dis )?> ><?php _e( 'Silver' , 'wp-photo-album-plus' ) ?></option>
3391
- <option value="bronze" <?php wppa_echo( $dis )?> ><?php _e( 'Bronze' , 'wp-photo-album-plus' ) ?></option>
3392
- <option value="scheduled" <?php wppa_echo( $dis )?> ><?php _e( 'Scheduled' , 'wp-photo-album-plus' ) ?></option>
3393
- <option value="private" <?php wppa_echo( $dis ) ?> ><?php _e( 'Private' , 'wp-photo-album-plus' ) ?></option>
3394
- </select>
3395
- <!-- Owner -->
3396
- <?php $users = wppa_get_users();
3397
- if ( count( $users ) ) { ?>
3398
- <select name="wppa-bulk-owner" id="wppa-bulk-owner" style="display:none" onchange="wppa_setCookie( 'wppa_bulk_owner',this.value,365 )">
3399
- <option value=""><?php _e( '- select an owner -' , 'wp-photo-album-plus' ) ?></option>
3400
- <?php
3401
-
3402
- foreach ( $users as $user ) {
3403
- wppa_echo( '<option value="' . esc_attr( $user['user_login'] ) . '">' . htmlspecialchars( $user['display_name'] ) . ' (' . htmlspecialchars( $user['user_login'] ) . ')</option>' );
3404
- }
3405
- ?>
3406
- </select>
3407
- <?php } else { ?>
3408
- <input name="wppa-bulk-owner" id="wppa-bulk-owner" style="display:none" onchange="wppa_setCookie( 'wppa_bulk_owner',this.value,365 )" />
3409
- <?php } ?>
3410
- <!-- Submit -->
3411
- <input type="submit" onclick="return wppaBulkDoitOnClick()" class="button-primary" value="<?php _e( 'Doit!' , 'wp-photo-album-plus' ) ?>" />
3412
- <?php
3413
  if ( wppa_is_mobile() ) {
3414
- wppa_echo( '<br>' );
3415
  }
3416
- ?>
3417
- <?php $nextafterselhtml =
3418
- '<select name="next-after">' .
3419
- '<option value="-1"' . ( $next_after == '-1' ? ' selected' : '' ) . '>' . __( 'the previous page', 'wp-photo-album-plus' ) . '</option>' .
3420
- '<option value="0"' . ( $next_after == '0' ? ' selected' : '' ) . '>' . __( 'the same page', 'wp-photo-album-plus' ) . '</option>' .
3421
- '<option value="1"' . ( $next_after == '1' ? ' selected' : '' ) . '>' . __( 'the next page', 'wp-photo-album-plus' ) . '</option>' .
3422
- '</select>';
3423
- wppa_echo( sprintf( __( 'Go to %s after Doit!.', 'wp-photo-album-plus' ), $nextafterselhtml ) );
 
3424
  if ( wppa_is_mobile() ) {
3425
- wppa_echo( '<br>' );
3426
  }
3427
- ?>
3428
-
3429
- <input
3430
- type="checkbox"
3431
- id="confirm-delete"
3432
- name="confirm-delete"
3433
- checked="checked"
3434
- onchange="wppaToggleConfirmDelete( this )"
3435
- />
3436
- <?php _e('Confirm delete', 'wp-photo-album-plus' ) ?>
3437
-
3438
- <input
3439
- type="checkbox"
3440
- id="confirm-move"
3441
- name="confirm-move"
3442
- checked="checked"
3443
- onchange="wppaToggleConfirmMove(this)"
3444
- />
3445
- <?php _e('Confirm move', 'wp-photo-album-plus' ) ?>
3446
 
3447
- <?php /* wppa_echo( '<small style="float:right"> (' . count( $photos ) . ')</small>' );*/ ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3448
 
3449
- </div>
3450
- <?php $edit_link = wppa_ea_url( 'single', 'edit' ) ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3451
  <table class="widefat">
3452
- <thead style="font-weight:bold">
3453
- <td><input type="checkbox" class="wppa-bulk-photo" onchange="jQuery( '.wppa-bulk-photo' ).prop( 'checked', this.checked )" /></td>
3454
- <td><?php _e( 'ID' , 'wp-photo-album-plus' ) ?></td>
3455
- <td><?php _e( 'Preview' , 'wp-photo-album-plus' ) ?></td>
3456
- <td><?php _e( 'Name' , 'wp-photo-album-plus' ) ?></td>
3457
- <td><?php _e( 'Description' , 'wp-photo-album-plus' ) ?></td>
3458
- <td><?php _e( 'Status' , 'wp-photo-album-plus' ) ?></td>
3459
- <td><?php _e( 'Owner' , 'wp-photo-album-plus' ) ?></td>
3460
- <td><?php _e( 'Remark' , 'wp-photo-album-plus' ) ?></td>
3461
  </thead>
3462
- <tbody>
3463
- <?php
 
3464
  foreach ( $photos as $photo ) {
3465
  $id = $photo['id'];
3466
 
@@ -3482,179 +3269,196 @@ function wppaTryMove( id, video ) {
3482
  }
3483
  }
3484
 
3485
- $maxsize = wppa_get_minisize(); ?>
3486
- <tr id="photoitem-<?php wppa_echo( $photo['id'] ) ?>" class="photoitem">
 
 
3487
  <!-- Checkbox -->
3488
  <td>
3489
- <input type="hidden" id="photo-nonce-<?php wppa_echo( $photo['id'] ) ?>" value="<?php wppa_echo( wp_create_nonce( 'wppa-nonce_'.$photo['id'] ) ) ?>" />
3490
- <input type="checkbox" name="wppa-bulk-photo[<?php wppa_echo( $photo['id'] ) ?>]" class="wppa-bulk-photo" />
3491
  </td>
3492
  <!-- ID and delete link -->
3493
- <td><?php
3494
- wppa_echo(
3495
- '<a
3496
- href="' . $edit_link . '&photo=' . $photo['id'] . '"
3497
  target="_blank"
3498
  >' .
3499
- $photo['id'] . '
3500
  </a>
3501
  <br>
3502
  <a
3503
- id="wppa-delete-' . $photo['id'] . '"
3504
- onclick="wppaConfirmAndDelete(' . $photo['id'] . ', '.( $album == 'trash' ? 'true' : 'false' ).' )"
3505
  style="color:red;font-weight:bold;cursor:pointer"
3506
  >' .
3507
  ( $album == 'trash' ? __( 'Remove permanently', 'wp-photo-album-plus' ) : __( 'Delete', 'wp-photo-album-plus' ) ) . '
3508
- </a>' );
3509
- ?>
3510
  </td>
3511
  <!-- Preview -->
3512
- <td style="min-width:240px; text-align:center">
3513
- <?php if ( wppa_is_video( $photo['id'] ) ) {
 
3514
  $a = false;
3515
  if ( wppa_is_file( wppa_strip_ext( wppa_get_photo_path( $id ) ) . '.mp4' ) ) {
3516
  $a = true;
3517
- wppa_echo( '
3518
  <a
3519
  href="' . esc_url( str_replace( '.jpg', '.mp4', wppa_get_photo_url( $id ) ) ) . '"
3520
  target="_blank"
3521
  title="' . esc_attr( __( 'Click to see fullsize video', 'wp-photo-album-plus' ) ) . '"
3522
- >' );
3523
  }
3524
 
3525
- wppa_echo( wppa_get_video_html( array(
3526
- 'id' => $id,
3527
- 'height' => '160',
3528
- 'controls' => false,
3529
- 'tagid' => 'pa-id-' . $id,
3530
- 'preload' => 'metadata',
3531
- 'use_thumb' => true,
3532
- ) ) );
3533
- if ( $a ) {
3534
- wppa_echo( '</a>' );
3535
- }
3536
  }
3537
  else {
3538
- wppa_echo(
3539
- '<a' .
3540
- ' href="' . esc_url( wppa_get_photo_url( $photo['id'] ) ) . '"' .
3541
- ' target="_blank"' .
3542
- ' title="' . esc_attr( __( 'Click to see fullsize', 'wp-photo-album-plus' ) ) . '"' .
3543
- ' >' .
3544
- '<img' .
3545
- ' class="wppa-bulk-thumb"' .
3546
- ' ' . ( wppa_lazy() ? 'data-' : '' ) . 'src="' . esc_url( wppa_get_thumb_url( $photo['id'] ) ) . '"' .
3547
- ' style="max-width:' . $maxsize . 'px;max-height:' . $maxsize . 'px"' .
3548
- ' />' .
3549
- '</a>' );
3550
  }
3551
- ?>
3552
  </td>
3553
  <!-- Name, size, move -->
3554
- <!-- Name -->
3555
  <td style="width:25%">
3556
- <input type="text" style="width:300px" id="pname-<?php wppa_echo( $photo['id'] ) ?>" onchange="wppaAjaxUpdatePhoto( <?php wppa_echo( $photo['id'] ) ?>, 'name', this.value)" value="<?php wppa_echo( esc_attr( stripslashes( $photo['name'] ) ) ) ?>" />
3557
- <!-- Size -->
3558
- <?php
3559
- if ( wppa_is_video( $photo['id'] ) ) {
3560
- wppa_echo( '<br>'.wppa_get_videox( $photo['id'], 'admin' ).' x '.wppa_get_videoy( $photo['id'], 'admin' ).' px.' );
 
 
 
 
 
 
3561
  }
3562
  else {
3563
- $sp = wppa_get_source_path( $photo['id'] );
3564
  if ( is_file( $sp ) ) {
3565
  $ima = getimagesize( $sp );
3566
  if ( is_array( $ima ) ) {
3567
- wppa_echo( '<br>'.$ima['0'].' x '.$ima['1'].' px.' );
3568
  }
3569
  }
3570
  }
3571
- ?>
3572
- <!-- Move -->
3573
- <?php
3574
- $max = wppa_opt( 'photo_admin_max_albums' );
3575
- if ( ! $max || wppa_get_total_album_count() < $max ) {
3576
-
3577
- // If not done yet, get the album options html with the current album excluded
3578
- if ( ! isset( $album_select[$album] ) ) {
3579
- $album_select[$album] = wppa_album_select_a( array( 'checkaccess' => true,
3580
- 'path' => true,
3581
- 'exclude' => $album,
3582
- 'selected' => '0',
3583
- 'addpleaseselect' => true,
3584
- 'sort' => true,
3585
- )
3586
- );
3587
- }
3588
-
3589
- wppa_echo(
3590
- '<br>' . __( 'Target album for move to', 'wp-photo-album-plus' ) . '<br>' .
3591
- '<select' .
3592
- ' id="target-' . $id . '"' .
3593
- ' onchange="wppaTryMove(' . $id . ', ' . ( wppa_is_video( $id ) ? 'true' : 'false' ) . ')"' .
3594
- ' style="max-width:300px"' .
3595
- ' >' .
3596
- $album_select[$album] .
3597
- '</select>' .
3598
- '<span id="moving-' . $id . '" style="color:red;font-weight:bold"></span>' );
3599
  }
3600
 
3601
- ?>
3602
- </td>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3603
  <!-- Description -->
3604
  <td style="width:25%">
3605
- <textarea class="wppa-bulk-dec" style="height:50px; width:100%" onchange="wppaAjaxUpdatePhoto( <?php wppa_echo( $photo['id'] ) ?>, 'description', this.value)"><?php wppa_echo( ( esc_textarea( stripslashes( $photo['description'] ) ) ) ) ?></textarea>
 
 
 
 
 
 
3606
  </td>
3607
  <!-- Status -->
3608
- <td>
3609
- <?php if ( current_user_can( 'wppa_admin' ) || current_user_can( 'wppa_moderate' ) ) { ?>
3610
- <select id="status-<?php wppa_echo( $photo['id'] ) ?>" onchange="wppaAjaxUpdatePhoto( <?php wppa_echo( $photo['id'] ) ?>, 'status', this.value); wppaPhotoStatusChange( <?php wppa_echo( $photo['id'] ) ?> ); ">
3611
- <option value="pending" <?php if ( $photo['status']=='pending' ) wppa_echo( 'selected' )?> ><?php _e( 'Pending' , 'wp-photo-album-plus' ) ?></option>
3612
- <option value="publish" <?php if ( $photo['status']=='publish' ) wppa_echo( 'selected' )?> ><?php _e( 'Publish' , 'wp-photo-album-plus' ) ?></option>
3613
- <?php if ( wppa_switch( 'ext_status_restricted' ) && ! wppa_user_is_admin() ) $dis = ' disabled'; else $dis = ''; ?>
3614
- <option value="featured" <?php if ( $photo['status']=='featured' ) wppa_echo( 'selected' ); wppa_echo( $dis )?> ><?php _e( 'Featured' , 'wp-photo-album-plus' ) ?></option>
3615
- <option value="gold" <?php if ( $photo['status'] == 'gold' ) wppa_echo( 'selected' ); wppa_echo( $dis )?> ><?php _e( 'Gold' , 'wp-photo-album-plus' ) ?></option>
3616
- <option value="silver" <?php if ( $photo['status'] == 'silver' ) wppa_echo( 'selected' ); wppa_echo( $dis )?> ><?php _e( 'Silver' , 'wp-photo-album-plus' ) ?></option>
3617
- <option value="bronze" <?php if ( $photo['status'] == 'bronze' ) wppa_echo( 'selected' ); wppa_echo( $dis )?> ><?php _e( 'Bronze' , 'wp-photo-album-plus' ) ?></option>
3618
- <option value="scheduled" <?php if ( $photo['status'] == 'scheduled' ) wppa_echo( 'selected' ); wppa_echo( $dis )?> ><?php _e( 'Scheduled' , 'wp-photo-album-plus' ) ?></option>
3619
- <option value="private" <?php if ( $photo['status'] == 'private' ) wppa_echo( 'selected' ); wppa_echo( $dis )?> ><?php _e( 'Private' , 'wp-photo-album-plus' ) ?></option>
3620
- </select>
3621
- <?php }
3622
  else {
3623
- if ( $photo['status'] == 'pending' ) _e( 'Pending' , 'wp-photo-album-plus' );
3624
- elseif ( $photo['status'] == 'publish' ) _e( 'Publish' , 'wp-photo-album-plus' );
3625
- elseif ( $photo['status'] == 'featured' ) e( 'Featured' );
3626
- elseif ( $photo['status'] == 'gold' ) _e( 'Gold' , 'wp-photo-album-plus' );
3627
- elseif ( $photo['status'] == 'silver' ) _e( 'Silver' , 'wp-photo-album-plus' );
3628
- elseif ( $photo['status'] == 'bronze' ) _e( 'Bronze' , 'wp-photo-album-plus' );
3629
- elseif ( $photo['status'] == 'scheduled' ) _e( 'Scheduled' , 'wp-photo-album-plus' );
3630
- elseif ( $photo['status'] == 'private' ) _e( 'Private' , 'wp-photo-album-plus' );
3631
- } ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3632
  </td>
3633
  <!-- Owner -->
3634
- <td>
3635
- <?php wppa_echo( $photo['owner'] ) ?>
3636
  </td>
3637
  <!-- Remark -->
3638
- <td id="remark-<?php wppa_echo( $photo['id'] ) ?>" style="width:25%">
3639
- <?php _e( 'Not modified' , 'wp-photo-album-plus' ) ?>
3640
- <?php wppa_add_inline_script( 'wppa-admin', 'wppaPhotoStatusChange('.$photo['id'].');' ); ?>
3641
  </td>
3642
- </tr>
3643
- <?php } ?>
 
 
 
 
 
3644
  </tbody>
3645
- <tfoot style="font-weight:bold">
3646
- <td><input type="checkbox" class="wppa-bulk-photo" onchange="jQuery( '.wppa-bulk-photo' ).prop( 'checked', this.checked )" /></td>
3647
- <td><?php _e( 'ID' , 'wp-photo-album-plus' ) ?></td>
3648
- <td><?php _e( 'Preview' , 'wp-photo-album-plus' ) ?></td>
3649
- <td><?php _e( 'Name' , 'wp-photo-album-plus' ) ?></td>
3650
- <td><?php _e( 'Description' , 'wp-photo-album-plus' ) ?></td>
3651
- <td><?php _e( 'Status' , 'wp-photo-album-plus' ) ?></td>
3652
- <td><?php _e( 'Owner' , 'wp-photo-album-plus' ) ?></td>
3653
- <td><?php _e( 'Remark' , 'wp-photo-album-plus' ) ?></td>
3654
  </tfoot>
3655
  </table>
3656
- </form>
3657
- <?php
 
 
3658
  wppa_admin_pagination( $pagesize, $page, $count, $plink, 'bottom' );
3659
  }
3660
  else {
@@ -3683,11 +3487,17 @@ function wppaTryMove( id, video ) {
3683
  function wppa_album_photos_sequence( $album ) {
3684
  global $wpdb;
3685
 
 
 
3686
  if ( $album ) {
3687
  $photoorder = wppa_get_photo_order( $album, 'norandom' );
3688
  $is_descending = strpos( $photoorder, 'DESC' ) !== false;
3689
  $is_p_order = strpos( $photoorder, 'p_order' ) !== false;
3690
 
 
 
 
 
3691
  $photos = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $wpdb->wppa_photos
3692
  WHERE album = %s" . $photoorder, $album ), ARRAY_A );
3693
 
@@ -3695,150 +3505,95 @@ global $wpdb;
3695
  $size = '180';
3696
 
3697
  if ( $photos ) {
 
3698
 
3699
- $the_js = '
3700
- jQuery( function() {
3701
- jQuery( "#sortable" ).sortable( {
3702
- cursor: "move",
3703
- placeholder: "sortable-placeholder-photos",
3704
- stop: function( event, ui ) {
3705
- var ids = jQuery( ".wppa-sort-item" );
3706
- var seq = jQuery( ".wppa-sort-seqn" );
3707
- var idx = 0;
3708
- var descend = ' . ( $is_descending ? 'true' : 'false' ) . ';
3709
- while ( idx < ids.length ) {
3710
- var newvalue;
3711
- if ( descend ) newvalue = ids.length - idx;
3712
- else newvalue = idx + 1;
3713
- var oldvalue = seq[idx].value;
3714
- var photo = ids[idx].value;
3715
- if ( newvalue != oldvalue ) {
3716
- wppaDoSeqUpdate( photo, newvalue );
3717
- }
3718
- idx++;
3719
- }
3720
- },
3721
- delay: 100,
3722
- opacity: 0.5,
3723
- scroll: false,
3724
- cursorAt: { left: 90, top: 90 }
3725
- });
3726
- jQuery( "#sortable" ).disableSelection();
3727
- });
3728
- var wppaAjaxRequests = 0;
3729
- function wppaDoSeqUpdate( photo, seqno ) {
3730
- if ( wppaAjaxRequests >=10 ) {
3731
- setTimeout(function(){wppaDoSeqUpdate( photo, seqno );},500);
3732
- return;
3733
  }
3734
- var data = "action=wppa&wppa-action=update-photo&photo-id="+photo+"&item=p_order&wppa-nonce="+document.getElementById(\'photo-nonce-\'+photo).value+"&value="+seqno;
3735
- var xmlhttp = new XMLHttpRequest();
3736
-
3737
- xmlhttp.onreadystatechange = function() {
3738
- if ( xmlhttp.readyState == 4 && xmlhttp.status != 404 ) {
3739
- var ArrValues = xmlhttp.responseText.split( "||" );
3740
- if ( ArrValues[0] != "" ) {
3741
- alert("The server returned unexpected output:\n"+ArrValues[0]);
3742
- }
3743
- switch ( ArrValues[1] ) {
3744
- case "0": // No error
3745
- jQuery("#wppa-seqno-"+photo).html(seqno);
3746
- break;
3747
- case "99": // Photo is gone
3748
- jQuery("#wppa-seqno-"+photo).html(\'<span style="color:red">deleted</span>\');
3749
- break;
3750
- default: // Any error
3751
- jQuery("#wppa-seqno-"+photo).html(\'<span style="color:red">Err:"+ArrValues[1]+"</span>\');
3752
- break;
3753
- }
3754
- wppaAjaxRequests--;
3755
- wppaConsoleLog("Pending ajax requests = "+wppaAjaxRequests);
3756
- }
3757
  }
3758
- xmlhttp.open("POST",wppaAjaxUrl,true);
3759
- xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
3760
- xmlhttp.send( data );
3761
- wppaAjaxRequests++;
3762
- wppaConsoleLog("Pending ajax requests = "+wppaAjaxRequests);
3763
- jQuery("#wppa-sort-seqn-"+photo).val(seqno); // set hidden value to new value to prevent duplicate action
3764
- var spinnerhtml = \'<img src="\'+wppaImageDirectory+\'spinner.gif" />\';
3765
- jQuery("#wppa-seqno-"+photo).html(spinnerhtml);
3766
- }';
3767
- wppa_add_inline_script( 'wppa-admin', $the_js );
3768
-
3769
- if ( ! $is_p_order ) wppa_warning_message( __( 'Setting photo sequence has only effect if the photo sequence method is set to <b>Sequence #</b>' , 'wp-photo-album-plus' ) ) ?>
3770
- <div class="widefat wppa-photo-admin-sortable" style="border-color:#cccccc">
3771
- <ul id="sortable">
3772
- <?php foreach ( $photos as $photo ) {
3773
- if ( wppa_is_video( $photo['id'] ) ) {
3774
- $imgs['0'] = wppa_get_videox( $photo['id'], 'admin' );
3775
- $imgs['1'] = wppa_get_videoy( $photo['id'], 'admin' );
 
 
 
 
 
 
 
 
 
 
 
 
3776
  }
3777
  else {
3778
- $imgs['0'] = wppa_get_thumbx( $photo['id'] );
3779
- $imgs['1'] = wppa_get_thumby( $photo['id'] );
3780
- }
3781
- if ( ! $imgs['0'] ) { // missing thuimbnail, prevent division by zero
3782
- $imgs['0'] = 200;
3783
- $imgs['1'] = 150;
3784
- }
3785
- $mw = $size - '20';
3786
- $mh = $mw * '3' / '4';
3787
- if ( $imgs[1]/$imgs[0] > $mh/$mw ) { // more portrait than 200x150, y is limit
3788
- $mt = '15';
3789
- }
3790
- else { // x is limit
3791
- $mt = ( $mh - ( $imgs[1]/$imgs[0] * $mw ) ) / '2' + '15';
3792
  }
3793
- ?>
3794
- <li id="photoitem-<?php wppa_echo( $photo['id'] ) ?>" class="ui-state-default-photos wppa-<?php wppa_echo( $photo['status'] ) ?>" style="background-image:none; text-align:center; cursor:move">
3795
- <?php if ( wppa_is_video( $photo['id'] ) ) { ?>
3796
- <?php $id = $photo['id'] ?>
3797
- <?php $imgstyle = 'max-width:'.$mw.'px;max-height:'.$mh.'px;margin-top:'.$mt.'px;' ?>
3798
- <?php wppa_echo( wppa_get_video_html( array(
3799
- 'id' => $id,
3800
- // 'width' => $imgwidth,
3801
- // 'height' => '60',
3802
- 'controls' => false,
3803
- // 'margin_top' => '0',
3804
- // 'margin_bottom' => '0',
3805
- 'tagid' => 'pa-id-'.$id,
3806
- // 'cursor' => 'cursor:pointer;',
3807
- // 'events' => ' onmouseover="jQuery( this ).css( \'height\', \'160\' )" onmouseout="jQuery( this ).css( \'height\', \'60\' )"',
3808
- // 'title' => $title,
3809
- 'preload' => 'metadata',
3810
- // 'onclick' => $onclick,
3811
- // 'lb' => false,
3812
- 'class' => 'wppa-bulk-thumb',
3813
- 'style' => $imgstyle,
3814
- 'use_thumb' => true
3815
- )) );
3816
 
 
 
3817
 
3818
- }
3819
- else {
3820
- wppa_echo(
3821
- '<img' .
3822
- ' class="wppa-bulk-thumb"' .
3823
- ' ' . ( wppa_lazy() ? 'data-' : '' ) . 'src="' . esc_url( wppa_get_thumb_url( $photo['id'] ) ) . '"' .
3824
- ' style="max-width:' . $mw . 'px;max-height:' . $mh . 'px;margin-top:' . $mt . 'px" />' );
3825
- } ?>
3826
- <div style="font-size:9px; position:absolute; bottom:24px; text-align:center; width:<?php wppa_echo( $size ) ?>px"><?php wppa_echo( wppa_get_photo_name( $photo['id'] ) ) ?></div>
3827
- <div style="text-align: center; width: <?php wppa_echo( $size ) ?>px; position:absolute; bottom:8px">
3828
- <span style="margin-left:15px;float:left"><?php wppa_echo( __( 'Id: ' , 'wp-photo-album-plus' ).$photo['id'] )?></span>
3829
- <?php if ( wppa_is_video( $photo['id'] ) )_e('Video', 'wp-photo-album-plus' ); ?>
3830
- <?php if ( wppa_has_audio( $photo['id'] ) ) _e('Audio', 'wp-photo-album-plus' ); ?>
3831
- <span style="float:right; margin-right:15px"><?php wppa_echo( __( 'Seq: ' , 'wp-photo-album-plus' ).'<span id="wppa-seqno-'.$photo['id'].'">'.$photo['p_order'] ) ?></span>
3832
  </div>
3833
- <input type="hidden" id="photo-nonce-<?php wppa_echo( $photo['id'] ) ?>" value="<?php wppa_echo( wp_create_nonce( 'wppa-nonce_'.$photo['id'] ) ); ?>" />
3834
- <input type="hidden" class="wppa-sort-item" value="<?php wppa_echo( $photo['id'] ) ?>" />
3835
- <input type="hidden" class="wppa-sort-seqn" id="wppa-sort-seqn-<?php wppa_echo( $photo['id'] ) ?>" value="<?php wppa_echo( $photo['p_order'] ) ?>" />
3836
- </li>
3837
- <?php } ?>
 
 
3838
  </ul>
3839
  <div style="clear:both"></div>
3840
- </div>
3841
- <?php
3842
  }
3843
  else {
3844
  wppa_echo( '<h1>'.__( 'The album is empty.' , 'wp-photo-album-plus' ).'</h1>' );
3
  * Package: wp-photo-album-plus
4
  *
5
  * edit and delete photos
6
+ * Version 8.3.01.005
7
  *
8
  */
9
 
86
  function wppa_album_photos( $album = '', $photo = '', $owner = '', $moderate = false ) {
87
  global $wpdb;
88
 
89
+ // Init
90
+ wppa_add_local_js( 'wppa_album_photos' );
91
+ $a = wppa_is_int( $album ) ? $album : '0';
92
+ $is_empty = false;
 
93
 
94
+ $slug = 'photo_admin';
95
+ $quick = wppa_get( 'quick' );
96
+ if ( $quick )
97
+ $slug = 'photo_quick';
98
 
99
+ $parms = wppa_get_paging_parms( $slug );
100
 
101
  $pagesize = $parms['pagesize'];
102
  $page = $parms['page'];
103
 
104
+ if ( ! is_numeric( $page ) )
105
+ $page = 1;
106
  $skip = ( $page - '1' ) * $pagesize;
107
+ $is_album = false;
108
+ $photos = array();
109
 
110
  // Edit the photos in a specific album
111
  if ( $album ) {
138
 
139
  // A physical album
140
  else {
141
+ $is_album = true;
142
  $counts = wppa_get_treecounts_a( $album, true );
143
  $count = $counts['selfphotos'] + $counts['pendselfphotos'] + $counts['scheduledselfphotos'];
144
  $photos = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $wpdb->wppa_photos
304
  // There are photos to display for editing
305
  else {
306
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
307
  $mvt = esc_attr( __( 'Move video', 'wp-photo-album-plus' ) );
308
  $mpt = esc_attr( __( 'Move photo', 'wp-photo-album-plus' ) );
309
  $cvt = esc_attr( __( 'Copy video', 'wp-photo-album-plus' ) );
841
  </div>';
842
  wppa_echo( $result );
843
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
844
  // Tab 1 Photo general
845
  wppa_echo( '
846
  <div
922
  }
923
 
924
  // Album. Show album only when it is not evident
925
+ if ( ! $is_album ) {
926
  wppa_echo( '
927
  <div class="left" style="margin-right: 4px;">
928
  <label>' .
2303
  wppa_echo( '
2304
  <fieldset class="wppa-fieldset">
2305
  <legend class="wppa-legend">' .
2306
+ __( 'Magically edit image', 'wp-photo-album-plus' ) . '
2307
  </legend>' );
2308
 
2309
 
2321
  <div class="wppa-flex">' );
2322
 
2323
  {
2324
+
2325
  // Rotate left
2326
  wppa_echo( '
2327
  <input
2595
  $value = $dflt;
2596
  }
2597
 
 
 
2598
  }
2599
 
2600
  // End flex div
2835
  </div>' );
2836
  }
2837
 
 
 
2838
  // Fix the background color
2839
+ $the_js = 'wppaPhotoStatusChange(' . $id . ');';
 
 
 
 
 
 
 
 
 
2840
 
2841
  // When there are moderatable comments, open details and comments tab
2842
  if ( $has_pending_comments && ( current_user_can( 'wppa_comments' ) || current_user_can( 'wppa_moderate' ) || ( ( wppa_get_user() == $photo['owner'] && wppa_switch( 'owner_moderate_comment' ) ) ) ) ) {
2875
  }
2876
 
2877
  // Init
2878
+ wppa_add_local_js( 'wppa_album_photos_bulk' );
2879
  $count = '0';
2880
  $abort = false;
2881
 
2989
  }
2990
  else wppa_error_message( 'Unexpected error #2 in wppa_album_photos_bulk().' );
2991
  }
2992
+ else {
2993
+ wppa_error_message( 'Unexpected error #1 in wppa_album_photos_bulk().' );
2994
+ var_dump($_REQUEST);
2995
+ }
2996
 
2997
  if ( $count && ! $abort ) {
2998
  switch ( wppa_get( 'bulk-action' ) ) {
3081
 
3082
  wppa_admin_pagination( $pagesize, $page, $count, $plink, 'top' );
3083
 
3084
+ $result = '
3085
+ <form action="' . $link . '&paged=' . $page . '#manage-photos" method="post">' .
3086
+ wp_nonce_field( 'wppa-bulk', 'wppa-bulk' ) . '
3087
+ <div>
3088
+ <!-- Bulk action -->
3089
+ <select id="wppa-bulk-action" name="wppa-bulk-action" onchange="wppaBulkActionChange( this, \'bulk-album\' )">
3090
+ <option value="" disabled selected>' . esc_html__( 'Bulk action', 'wp-photo-album-plus' ) . '</option>';
3091
+ if ( $album == 'trash' ) {
3092
+ $result .= '
3093
+ <option value="wppa-bulk-delete-immediate">' . esc_html__( 'Remove permanently', 'wp-photo-album-plus' ) . '</option>
3094
+ <option value="wppa-bulk-undelete">' . esc_html__( 'Undelete', 'wp-photo-album-plus' ) . '</option>';
3095
+ }
3096
+ else {
3097
+ $result .= '
3098
+ <option value="wppa-bulk-delete">' . esc_html__( 'Delete', 'wp-photo-album-plus' ) . '</option>';
3099
+ }
3100
+ $result .= '
3101
+ <option value="wppa-bulk-move-to">' . esc_html__( 'Move to', 'wp-photo-album-plus' ) . '</option>
3102
+ <option value="wppa-bulk-copy-to">' . esc_html__( 'Copy to', 'wp-photo-album-plus' ) . '</option>';
3103
 
3104
+ if ( current_user_can( 'wppa_admin' ) || current_user_can( 'wppa_moderate' ) ) {
3105
+ $result .= '
3106
+ <option value="wppa-bulk-status">' . esc_html__( 'Set status to', 'wp-photo-album-plus' ) . '</option>';
3107
+ }
3108
+ if ( wppa_user_is_admin() && wppa_switch( 'photo_owner_change' ) ) {
3109
+ $result .= '
3110
+ <option value="wppa-bulk-owner">' . esc_html__( 'Set owner to', 'wp-photo-album-plus' ) . '</option>';
3111
+ }
3112
+ $result .= '
3113
+ </select>
3114
+ <!-- Select album -->' .
3115
+
3116
+ wppa_album_select_a( array( 'checkaccess' => true,
3117
+ 'path' => true,
3118
+ 'exclude' => $album,
3119
+ 'selected' => '0',
3120
+ 'addpleaseselect' => true,
3121
+ 'sort' => true,
3122
+ 'tagopen' => '<select' .
3123
+ ' name="wppa-bulk-album"' .
3124
+ ' id="wppa-bulk-album"' .
3125
+ ' style="display:none"' .
3126
+ ' onchange="wppa_setCookie( \'wppa_bulk_album\',this.value,365 )"' .
3127
+ ' >',
3128
+ 'tagname' => 'wppa-bulk-album',
3129
+ 'tagid' => 'wppa-bulk-album',
3130
+ 'tagonchange' => 'wppa_setCookie( \'wppa_bulk_album\',this.value,365 );',
3131
+ 'tagstyle' => 'display:none;cursor:pointer;',
3132
+ ) );
3133
+
3134
+ if ( current_user_can( 'wppa_admin' ) || current_user_can( 'wppa_moderate' ) ) {
3135
+ $result .= '
3136
+ <!-- Select status -->
3137
+ <select
3138
+ name="wppa-bulk-status"
3139
+ id="wppa-bulk-status"
3140
+ style="display:none"
3141
+ onchange="wppa_setCookie( \'wppa_bulk_status\',this.value,365 )"
3142
+ >
3143
+ <option value="">' . esc_html__( '- select a status -' , 'wp-photo-album-plus' ) . '</option>
3144
+ <option value="pending">' . esc_html__( 'Pending' , 'wp-photo-album-plus' ) . '</option>
3145
+ <option value="publish">' . esc_html__( 'Publish' , 'wp-photo-album-plus' ) . '</option>';
3146
+ if ( ! wppa_switch( 'ext_status_restricted' ) || wppa_user_is_admin() ) {
3147
+ $result .= '
3148
+ <option value="featured">' . esc_html__( 'Featured' , 'wp-photo-album-plus' ) . '</option>
3149
+ <option value="gold">' . esc_html__( 'Gold' , 'wp-photo-album-plus' ) . '</option>
3150
+ <option value="silver">' . esc_html__( 'Silver' , 'wp-photo-album-plus' ) . '</option>
3151
+ <option value="bronze">' . esc_html__( 'Bronze' , 'wp-photo-album-plus' ) . '</option>
3152
+ <option value="scheduled">' . esc_html__( 'Scheduled' , 'wp-photo-album-plus' ) . '</option>
3153
+ <option value="private">' . esc_html__( 'Private' , 'wp-photo-album-plus' ) . '</option>';
3154
+ }
3155
+ $result .= '
3156
+ </select>';
3157
+ }
3158
 
3159
+ $users = wppa_get_users();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3160
 
3161
+ // Less tha2 250 users
3162
+ if ( count( $users ) < 250 ) {
3163
+ $result .= '
3164
+ <!-- Select user -->
3165
+ <select name="wppa-bulk-owner" id="wppa-bulk-owner" style="display:none" onchange="wppa_setCookie( \'wppa_bulk_owner\',this.value,365 )">
3166
+ <option value="">' . esc_html__( '- select an owner -' , 'wp-photo-album-plus' ) . '</option>';
3167
+ foreach ( $users as $user ) {
3168
+ $result .= '<option value="' . esc_attr( $user['user_login'] ) . '">' . htmlspecialchars( $user['display_name'] ) . ' (' . htmlspecialchars( $user['user_login'] ) . ')</option>';
3169
+ }
3170
+ $result .= '
3171
+ </select>';
3172
+ }
3173
 
3174
+ // Mor ethan 250 users
3175
+ else {
3176
+ $result .= '
3177
+ <!-- Input user_login -->
3178
+ <input name="wppa-bulk-owner" id="wppa-bulk-owner" style="display:none" onchange="wppa_setCookie( \'wppa_bulk_owner\',this.value,365 )" />';
3179
+ }
 
 
 
 
 
 
 
 
 
 
 
 
3180
 
3181
+ // Submit
 
 
 
 
3182
  $result .= '
3183
+ <!-- Submit -->
3184
+ <input type="submit" onclick="return wppaBulkDoitOnClick()" class="button-primary" value="' . esc_html__( 'Doit!' , 'wp-photo-album-plus' ) . '"/>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3185
  if ( wppa_is_mobile() ) {
3186
+ $result .= '<br>';
3187
  }
3188
+
3189
+ // Net page after selection
3190
+ $nextafterselhtml = '
3191
+ <select name="next-after">
3192
+ <option value="-1"' . ( $next_after == '-1' ? ' selected' : '' ) . '>' . esc_html__( 'the previous page', 'wp-photo-album-plus' ) . '</option>
3193
+ <option value="0"' . ( $next_after == '0' ? ' selected' : '' ) . '>' . esc_html__( 'the same page', 'wp-photo-album-plus' ) . '</option>
3194
+ <option value="1"' . ( $next_after == '1' ? ' selected' : '' ) . '>' . esc_html__( 'the next page', 'wp-photo-album-plus' ) . '</option>
3195
+ </select>';
3196
+ $result .= sprintf( __( 'Go to %s after Doit!.', 'wp-photo-album-plus' ), $nextafterselhtml );
3197
  if ( wppa_is_mobile() ) {
3198
+ $result .= '<br>';
3199
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3200
 
3201
+ // Confirm delete
3202
+ $result .= '
3203
+ <input
3204
+ type="checkbox"
3205
+ id="confirm-delete"
3206
+ name="confirm-delete"
3207
+ checked="checked"
3208
+ onchange="wppaToggleConfirmDelete(this)"
3209
+ />
3210
+ <label for="confirm-delete">' .
3211
+ esc_html__( 'Confirm delete', 'wp-photo-album-plus' ) . '
3212
+ </label>';
3213
+
3214
+ // Confirm move
3215
+ $result .= '
3216
+ <input
3217
+ type="checkbox"
3218
+ id="confirm-move"
3219
+ name="confirm-move"
3220
+ checked="checked"
3221
+ onchange="wppaToggleConfirmMove(this)"
3222
+ />
3223
+ <label for="confirm-move">' .
3224
+ esc_html__( 'Confirm move', 'wp-photo-album-plus' ) . '
3225
+ </label>';
3226
 
3227
+ $result .= '
3228
+ </div>';
3229
+ wppa_echo( $result );
3230
+
3231
+ $edit_link = wppa_ea_url( 'single', 'edit' );
3232
+
3233
+ // The table of bulk ediatble items
3234
+ $thead_body = '
3235
+ <td><input type="checkbox" class="wppa-bulk-photo" onchange="jQuery( \'.wppa-bulk-photo\' ).prop( \'checked\', this.checked )" /></td>
3236
+ <td>' . esc_html__( 'ID', 'wp-photo-album-plus' ) . '</td>
3237
+ <td>' . esc_html__( 'Preview', 'wp-photo-album-plus' ) . '</td>
3238
+ <td>' . esc_html__( 'Name', 'wp-photo-album-plus' ) . '</td>
3239
+ <td>' . esc_html__( 'Description', 'wp-photo-album-plus' ) . '</td>
3240
+ <td>' . esc_html__( 'Status', 'wp-photo-album-plus' ) . '</td>
3241
+ <td>' . esc_html__( 'Owner', 'wp-photo-album-plus' ) . '</td>
3242
+ <td>' . esc_html__( 'Remark', 'wp-photo-album-plus' ) . '</td>';
3243
+ $result = '
3244
  <table class="widefat">
3245
+ <thead style="font-weight:bold">' .
3246
+ $thead_body . '
 
 
 
 
 
 
 
3247
  </thead>
3248
+ <tbody>';
3249
+ wppa_echo( $result );
3250
+
3251
  foreach ( $photos as $photo ) {
3252
  $id = $photo['id'];
3253
 
3269
  }
3270
  }
3271
 
3272
+ $maxsize = wppa_get_minisize();
3273
+
3274
+ $result = '
3275
+ <tr id="photoitem-' . $id . '" class="photoitem">
3276
  <!-- Checkbox -->
3277
  <td>
3278
+ <input type="hidden" id="photo-nonce-' . $id . '" value="' . wp_create_nonce( 'wppa-nonce_' . $id ) . '" />
3279
+ <input type="checkbox" name="wppa-bulk-photo[' . $id . ']" class="wppa-bulk-photo" />
3280
  </td>
3281
  <!-- ID and delete link -->
3282
+ <td>
3283
+ <a
3284
+ href="' . $edit_link . '&photo=' . $id . '"
 
3285
  target="_blank"
3286
  >' .
3287
+ $id . '
3288
  </a>
3289
  <br>
3290
  <a
3291
+ id="wppa-delete-' . $id . '"
3292
+ onclick="wppaConfirmAndDelete(' . $id . ', ' . ( $album == 'trash' ? 'true' : 'false' ) . ' )"
3293
  style="color:red;font-weight:bold;cursor:pointer"
3294
  >' .
3295
  ( $album == 'trash' ? __( 'Remove permanently', 'wp-photo-album-plus' ) : __( 'Delete', 'wp-photo-album-plus' ) ) . '
3296
+ </a>
 
3297
  </td>
3298
  <!-- Preview -->
3299
+ <td style="min-width:240px; text-align:center">';
3300
+
3301
+ if ( wppa_is_video( $photo['id'] ) ) {
3302
  $a = false;
3303
  if ( wppa_is_file( wppa_strip_ext( wppa_get_photo_path( $id ) ) . '.mp4' ) ) {
3304
  $a = true;
3305
+ $result .= '
3306
  <a
3307
  href="' . esc_url( str_replace( '.jpg', '.mp4', wppa_get_photo_url( $id ) ) ) . '"
3308
  target="_blank"
3309
  title="' . esc_attr( __( 'Click to see fullsize video', 'wp-photo-album-plus' ) ) . '"
3310
+ >' ;
3311
  }
3312
 
3313
+ $result .= wppa_get_video_html( array(
3314
+ 'id' => $id,
3315
+ 'height' => '160',
3316
+ 'controls' => false,
3317
+ 'tagid' => 'pa-id-' . $id,
3318
+ 'preload' => 'metadata',
3319
+ 'use_thumb' => true,
3320
+ ) );
3321
+ if ( $a ) {
3322
+ $result .= '</a>';
3323
+ }
3324
  }
3325
  else {
3326
+ $result .= '
3327
+ <a
3328
+ href="' . esc_url( wppa_get_photo_url( $photo['id'] ) ) . '"
3329
+ target="_blank"
3330
+ title="' . esc_attr( __( 'Click to see fullsize', 'wp-photo-album-plus' ) ) . '"
3331
+ >
3332
+ <img
3333
+ class="wppa-bulk-thumb"' .
3334
+ ( wppa_lazy() ? ' data-' : ' ' ) . 'src="' . esc_url( wppa_get_thumb_url( $id ) ) . '"
3335
+ style="max-width:' . $maxsize . 'px;max-height:' . $maxsize . 'px"
3336
+ />
3337
+ </a>';
3338
  }
3339
+ $result .= '
3340
  </td>
3341
  <!-- Name, size, move -->
 
3342
  <td style="width:25%">
3343
+ <!-- Name -->
3344
+ <input
3345
+ type="text"
3346
+ style="width:300px"
3347
+ id="pname-' . $id . '"
3348
+ onchange="wppaAjaxUpdatePhoto(' . $id . ', \'name\', this.value)"
3349
+ value="' . esc_attr( stripslashes( $photo['name'] ) ) . '"
3350
+ />
3351
+ <!-- Size -->';
3352
+ if ( wppa_is_video( $id ) ) {
3353
+ $result .= '<br>' . wppa_get_videox( $id, 'admin' ) . ' x ' . wppa_get_videoy( $id, 'admin' ) . ' px.';
3354
  }
3355
  else {
3356
+ $sp = wppa_get_source_path( $id );
3357
  if ( is_file( $sp ) ) {
3358
  $ima = getimagesize( $sp );
3359
  if ( is_array( $ima ) ) {
3360
+ $result .= '<br>' . $ima['0'] . ' x ' . $ima['1'] . ' px.';
3361
  }
3362
  }
3363
  }
3364
+ $result .= '
3365
+ <!-- Move -->';
3366
+ $max = wppa_opt( 'photo_admin_max_albums' );
3367
+ if ( ! $max || wppa_get_total_album_count() < $max ) {
3368
+
3369
+ // If not done yet, get the album options html with the current album excluded
3370
+ if ( ! isset( $album_select[$album] ) ) {
3371
+ $album_select[$album] = wppa_album_select_a( array( 'checkaccess' => true,
3372
+ 'path' => true,
3373
+ 'exclude' => $album,
3374
+ 'selected' => '0',
3375
+ 'addpleaseselect' => true,
3376
+ 'sort' => true,
3377
+ )
3378
+ );
 
 
 
 
 
 
 
 
 
 
 
 
 
3379
  }
3380
 
3381
+ $result .= '
3382
+ <br>' . __( 'Target album for move to', 'wp-photo-album-plus' ) . '<br>
3383
+ <select
3384
+ id="target-' . $id . '"
3385
+ onchange="wppaTryMove(' . $id . ', ' . ( wppa_is_video( $id ) ? 'true' : 'false' ) . ')"
3386
+ style="max-width:300px"
3387
+ >' .
3388
+ $album_select[$album] . '
3389
+ </select>
3390
+ <span id="moving-' . $id . '" style="color:red;font-weight:bold"></span>';
3391
+ }
3392
+ $result .= '
3393
+ </td>';
3394
+ wppa_echo( $result );
3395
+
3396
+ $result = '
3397
  <!-- Description -->
3398
  <td style="width:25%">
3399
+ <textarea
3400
+ class="wppa-bulk-desc"
3401
+ style="height:50px; width:100%"
3402
+ onchange="wppaAjaxUpdatePhoto(' . $id . ', \'description\', this.value)"
3403
+ >' .
3404
+ esc_textarea( stripslashes( $photo['description'] ) ) . '
3405
+ </textarea>
3406
  </td>
3407
  <!-- Status -->
3408
+ <td>';
3409
+ if ( current_user_can( 'wppa_admin' ) || current_user_can( 'wppa_moderate' ) ) {
3410
+ if ( wppa_switch( 'ext_status_restricted' ) && ! wppa_user_is_admin() ) {
3411
+ $dis = ' disabled';
3412
+ }
 
 
 
 
 
 
 
 
 
3413
  else {
3414
+ $dis = '';
3415
+ }
3416
+ $ps = $photo['status'];
3417
+ $sel = ' selected';
3418
+ $result .= '
3419
+ <select
3420
+ id="status-' . $id . '"
3421
+ onchange="wppaAjaxUpdatePhoto(' . $id . ', \'status\', this.value); wppaPhotoStatusChange(' . $id . ')"
3422
+ >
3423
+ <option value="pending"' . ( $ps == 'pending' ? $sel : '' ) . '>' . esc_html__( 'Pending' , 'wp-photo-album-plus' ) . '</option>
3424
+ <option value="publish"' . ( $ps == 'publish' ? $sel : '' ) . '>' . esc_html__( 'Publish' , 'wp-photo-album-plus' ) . '</option>
3425
+ <option value="featured"' . ( $ps == 'featured' ? $sel : '' ) . $dis . '>' . esc_html__( 'Featured' , 'wp-photo-album-plus' ) . '</option>
3426
+ <option value="gold"' . ( $ps == 'gold' ? $sel : '' ) . $dis . '>' . esc_html__( 'Gold' , 'wp-photo-album-plus' ) . '</option>
3427
+ <option value="silver"' . ( $ps == 'silver' ? $sel : '' ) . $dis . '>' . esc_html__( 'Silver' , 'wp-photo-album-plus' ) . '</option>
3428
+ <option value="bronze"' . ( $ps == 'bronze' ? $sel : '' ) . $dis . '>' . esc_html__( 'Bronze' , 'wp-photo-album-plus' ) . '</option>
3429
+ <option value="scheduled"' . ( $ps == 'scheduled' ? $sel : '' ) . $dis . '>' . esc_html__( 'Scheduled' , 'wp-photo-album-plus' ) . '</option>
3430
+ <option value="private"' . ( $ps == 'private' ? $sel : '' ) . $dis . '>' . esc_html__( 'Private' , 'wp-photo-album-plus' ) . '</option>
3431
+ </select>';
3432
+ }
3433
+ else {
3434
+ $result .= wppa_status_display_name( $photo['status'] );
3435
+ }
3436
+ $result .= '
3437
  </td>
3438
  <!-- Owner -->
3439
+ <td>' .
3440
+ $photo['owner'] . '
3441
  </td>
3442
  <!-- Remark -->
3443
+ <td id="remark-' . $id . '" style="width:25%">' .
3444
+ esc_html__( 'Not modified' , 'wp-photo-album-plus' ) . '
 
3445
  </td>
3446
+ </tr>';
3447
+ wppa_echo( $result );
3448
+
3449
+ wppa_add_inline_script( 'wppa-admin', 'wppaPhotoStatusChange(' . $id . ');' );
3450
+ }
3451
+
3452
+ $result = '
3453
  </tbody>
3454
+ <tfoot style="font-weight:bold">' .
3455
+ $thead_body . '
 
 
 
 
 
 
 
3456
  </tfoot>
3457
  </table>
3458
+ </form>';
3459
+
3460
+ wppa_echo( $result );
3461
+
3462
  wppa_admin_pagination( $pagesize, $page, $count, $plink, 'bottom' );
3463
  }
3464
  else {
3487
  function wppa_album_photos_sequence( $album ) {
3488
  global $wpdb;
3489
 
3490
+ wppa_add_local_js( 'wppa_album_photos_sequence' );
3491
+
3492
  if ( $album ) {
3493
  $photoorder = wppa_get_photo_order( $album, 'norandom' );
3494
  $is_descending = strpos( $photoorder, 'DESC' ) !== false;
3495
  $is_p_order = strpos( $photoorder, 'p_order' ) !== false;
3496
 
3497
+ if ( $is_descending && $is_p_order ) {
3498
+ wppa_add_inline_script( 'wppa-admin', 'var wppaSeqnoDesc = true;' );
3499
+ }
3500
+
3501
  $photos = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $wpdb->wppa_photos
3502
  WHERE album = %s" . $photoorder, $album ), ARRAY_A );
3503
 
3505
  $size = '180';
3506
 
3507
  if ( $photos ) {
3508
+ if ( ! $is_p_order ) wppa_warning_message( __( 'Setting photo sequence has only effect if the photo sequence method is set to <b>Sequence #</b>' , 'wp-photo-album-plus' ) );
3509
 
3510
+ $result = '
3511
+ <div class="widefat wppa-photo-admin-sortable" style="border-color:#cccccc">
3512
+ <ul id="sortable">';
3513
+ foreach ( $photos as $photo ) {
3514
+ $id = $photo['id'];
3515
+ if ( wppa_is_video( $id ) ) {
3516
+ $imgs['0'] = wppa_get_videox( $id, 'admin' );
3517
+ $imgs['1'] = wppa_get_videoy( $id, 'admin' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3518
  }
3519
+ else {
3520
+ $imgs['0'] = wppa_get_thumbx( $id );
3521
+ $imgs['1'] = wppa_get_thumby( $id );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3522
  }
3523
+ if ( ! $imgs['0'] ) { // missing thuimbnail, prevent division by zero
3524
+ $imgs['0'] = 200;
3525
+ $imgs['1'] = 150;
3526
+ }
3527
+ $mw = $size - '20';
3528
+ $mh = $mw * '3' / '4';
3529
+ if ( $imgs[1]/$imgs[0] > $mh/$mw ) { // more portrait than 200x150, y is limit
3530
+ $mt = '15';
3531
+ }
3532
+ else { // x is limit
3533
+ $mt = ( $mh - ( $imgs[1]/$imgs[0] * $mw ) ) / '2' + '15';
3534
+ }
3535
+
3536
+ $result .= '
3537
+ <li
3538
+ id="photoitem-' . $id . '"
3539
+ class="ui-state-default-photos wppa-' . $photo['status'] . '"
3540
+ style="background-image:none; text-align:center; cursor:move"
3541
+ >';
3542
+ if ( wppa_is_video( $id ) ) {
3543
+ $imgstyle = 'max-width:'.$mw.'px;max-height:'.$mh.'px;margin-top:'.$mt.'px;';
3544
+ $result .= wppa_get_video_html( array(
3545
+ 'id' => $id,
3546
+ 'controls' => false,
3547
+ 'tagid' => 'pa-id-'.$id,
3548
+ 'preload' => 'metadata',
3549
+ 'class' => 'wppa-bulk-thumb',
3550
+ 'style' => $imgstyle,
3551
+ 'use_thumb' => true
3552
+ ) );
3553
  }
3554
  else {
3555
+ $result .= '
3556
+ <img
3557
+ class="wppa-bulk-thumb"' .
3558
+ ( wppa_lazy() ? ' data-' : ' ' ) . 'src="' . esc_url( wppa_get_thumb_url( $id ) ) . '"
3559
+ style="max-width:' . $mw . 'px;max-height:' . $mh . 'px;margin-top:' . $mt . 'px"
3560
+ />';
 
 
 
 
 
 
 
 
3561
  }
3562
+ $result .= '
3563
+ <div
3564
+ style="font-size:9px;position:absolute;bottom:24px;text-align:center;width:' . $size . 'px">' .
3565
+ wppa_get_photo_name( $id ) . '
3566
+ </div>
3567
+ <div
3568
+ style="text-align:center;width:' . $size . 'px;position:absolute;bottom:8px"
3569
+ >
3570
+ <span
3571
+ style="margin-left:15px;float:left">' .
3572
+ esc_html__( 'Id: ' , 'wp-photo-album-plus' ) . $id . '
3573
+ </span>';
 
 
 
 
 
 
 
 
 
 
 
3574
 
3575
+ if ( wppa_is_video( $id ) ) $result .= __( 'Video', 'wp-photo-album-plus' );
3576
+ if ( wppa_has_audio( $id ) ) $result .= __( 'Audio', 'wp-photo-album-plus' );
3577
 
3578
+ $result .= '
3579
+ <span style="float:right;margin-right:15px">' .
3580
+ esc_html__( 'Seq: ' , 'wp-photo-album-plus' ) . '
3581
+ <span id="wppa-seqno-' . $id . '">' .
3582
+ $photo['p_order'] . '
3583
+ </span>
3584
+ </span>
 
 
 
 
 
 
 
3585
  </div>
3586
+ <input type="hidden" id="photo-nonce-' . $id . '" value="' . wp_create_nonce( 'wppa-nonce_' . $id ) . '" />
3587
+ <input type="hidden" class="wppa-sort-item" value="' . $id . '" />
3588
+ <input type="hidden" class="wppa-sort-seqn" id="wppa-sort-seqn-' . $id . '" value="' . $photo['p_order'] . '" />
3589
+ </li>';
3590
+ }
3591
+
3592
+ $result .= '
3593
  </ul>
3594
  <div style="clear:both"></div>
3595
+ </div>';
3596
+ wppa_echo( $result );
3597
  }
3598
  else {
3599
  wppa_echo( '<h1>'.__( 'The album is empty.' , 'wp-photo-album-plus' ).'</h1>' );
wppa-settings-autosave.php CHANGED
@@ -3,7 +3,7 @@
3
  * Package: wp-photo-album-plus
4
  *
5
  * manage all options
6
- * Version 8.3.01.001
7
  *
8
  */
9
 
@@ -8035,15 +8035,6 @@ global $wppa_subtab_names;
8035
  $html = wppa_select($slug, $opts, $vals, '', '', '', 'wppaRefreshAfter();');
8036
  wppa_setting_new($slug, '6', $name, $desc, $html, $help);
8037
 
8038
- $name = __('Comment admin page size', 'wp-photo-album-plus' );
8039
- $desc = __('The number of comments per page on the Comments admin pages.', 'wp-photo-album-plus' );
8040
- $help = '';
8041
- $slug = 'wppa_comment_admin_pagesize';
8042
- $opts = array( __('--- off ---', 'wp-photo-album-plus' ), '10', '20', '50', '100', '200');
8043
- $vals = array('0', '10', '20', '50', '100', '200');
8044
- $html = wppa_select($slug, $opts, $vals);
8045
- wppa_setting_new($slug, '7', $name, $desc, $html, $help);
8046
-
8047
  $name = __('Geo info edit', 'wp-photo-album-plus' );
8048
  $desc = __('Lattitude and longitude may be edited in photo admin.', 'wp-photo-album-plus' );
8049
  $help = '';
3
  * Package: wp-photo-album-plus
4
  *
5
  * manage all options
6
+ * Version 8.3.01.005
7
  *
8
  */
9
 
8035
  $html = wppa_select($slug, $opts, $vals, '', '', '', 'wppaRefreshAfter();');
8036
  wppa_setting_new($slug, '6', $name, $desc, $html, $help);
8037
 
 
 
 
 
 
 
 
 
 
8038
  $name = __('Geo info edit', 'wp-photo-album-plus' );
8039
  $desc = __('Lattitude and longitude may be edited in photo admin.', 'wp-photo-album-plus' );
8040
  $help = '';
wppa.php CHANGED
@@ -2,7 +2,7 @@
2
  /*
3
  * Plugin Name: WP Photo Album Plus
4
  * Description: Easily manage and display your photo albums and slideshows within your WordPress site.
5
- * Version: 8.3.01.004
6
  * Author: J.N. Breetvelt a.k.a. OpaJaap
7
  * Author URI: http://wppa.opajaap.nl/
8
  * Plugin URI: http://wordpress.org/extend/plugins/wp-photo-album-plus/
@@ -23,7 +23,7 @@ global $wpdb;
23
  global $wp_version;
24
 
25
  /* WPPA Version */
26
- global $wppa_version; $wppa_version = '8.3.01.004'; // WPPA software version
27
  global $wppa_revno; $wppa_revno = str_replace( '.', '', $wppa_version ); // WPPA db version
28
 
29
  /* Init page js data */
2
  /*
3
  * Plugin Name: WP Photo Album Plus
4
  * Description: Easily manage and display your photo albums and slideshows within your WordPress site.
5
+ * Version: 8.3.01.005
6
  * Author: J.N. Breetvelt a.k.a. OpaJaap
7
  * Author URI: http://wppa.opajaap.nl/
8
  * Plugin URI: http://wordpress.org/extend/plugins/wp-photo-album-plus/
23
  global $wp_version;
24
 
25
  /* WPPA Version */
26
+ global $wppa_version; $wppa_version = '8.3.01.005'; // WPPA software version
27
  global $wppa_revno; $wppa_revno = str_replace( '.', '', $wppa_version ); // WPPA db version
28
 
29
  /* Init page js data */