From 518f868a17d21741beeb6fc8251ae224e71520bc Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Mon, 20 Sep 2021 15:54:06 -0400 Subject: [PATCH 001/193] Register a new revision status: draft-revision, currently labeled "Working Copy" --- rvy_init.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/rvy_init.php b/rvy_init.php index e28dd45a..023ece64 100644 --- a/rvy_init.php +++ b/rvy_init.php @@ -349,6 +349,17 @@ function rvy_delete_post_meta($post_id, $meta_key) { } function rvy_status_registrations() { + register_post_status('draft-revision', array( + 'label' => __('Working Copy', 'revisionary'), + 'labels' => (object)['publish' => __('Publish Revision', 'revisionary'), 'save' => __('Save Revision', 'revisionary'), 'update' => __('Update Revision', 'revisionary'), 'plural' => __('Working Copies', 'revisionary'), 'short' => __('Draft', 'revisionary') ], + 'protected' => true, + 'internal' => true, + 'label_count' => _n_noop('Working Copies (%s)', 'Working Copies (%s)'), // @todo: confirm API will support a fixed string + 'exclude_from_search' => false, + 'show_in_admin_all_list' => false, + 'show_in_admin_status_list' => false, + )); + register_post_status('pending-revision', array( 'label' => __('Pending Revision', 'revisionary'), 'labels' => (object)['publish' => __('Publish Revision', 'revisionary'), 'save' => __('Save Revision', 'revisionary'), 'update' => __('Update Revision', 'revisionary'), 'plural' => __('Pending Revisions', 'revisionary'), 'short' => __('Pending', 'revisionary') ], From dd83e9387855a1bffe0ac55fc57d5c81bee83340 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Mon, 20 Sep 2021 20:47:24 -0400 Subject: [PATCH 002/193] Store revision status to post_mime_type column of posts database table This allows post_status to be set to one of the native WordPress statuses: draft, pending or future - promoting better third party compatibility. --- admin/admin-init_rvy.php | 88 +++++++++++++++++++++++----------- admin/admin_rvy.php | 9 ++-- admin/class-list-table_rvy.php | 77 +++++++++++++++++++---------- admin/history_rvy.php | 45 ++++++++++------- admin/revision-action_rvy.php | 52 ++++++++++---------- functions.php | 42 ++++++++++++++++ revisionary.php | 15 ++++++ 7 files changed, 228 insertions(+), 100 deletions(-) diff --git a/admin/admin-init_rvy.php b/admin/admin-init_rvy.php index 6303e5dd..b14c9fa3 100644 --- a/admin/admin-init_rvy.php +++ b/admin/admin-init_rvy.php @@ -78,7 +78,7 @@ function rvy_admin_init() { $post_status = preg_replace('/[^a-z0-9_-]+/i', '', sanitize_key($_REQUEST['post_status'])); // Verify the post status exists. if ( get_post_status_object( $post_status ) ) { - $post_ids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_type=%s AND post_status = %s", $post_type, $post_status ) ); + $post_ids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_type=%s AND post_mime_type = %s", $post_type, $post_status ) ); } $doaction = 'delete'; } elseif ( isset( $_REQUEST['media'] ) ) { @@ -120,7 +120,7 @@ function rvy_admin_init() { } } - if (('future-revision' == $revision->post_status) && ('publish_revision' == $doaction)) { + if (('future-revision' == $revision->post_mime_type) && ('publish_revision' == $doaction)) { if (rvy_revision_publish($revision->ID)) { $approved++; } @@ -149,7 +149,7 @@ function rvy_admin_init() { continue; } - if ('future-revision' != $revision->post_status) { + if ('future-revision' != $revision->post_mime_type) { continue; } @@ -185,7 +185,7 @@ function rvy_admin_init() { continue; if ( ! current_user_can('administrator') && ! current_user_can( 'delete_post', rvy_post_id($revision->ID) ) ) { // @todo: review Administrator cap check - if (('pending-revision' != $revision->post_status) || !rvy_is_post_author($revision)) { // allow submitters to delete their own still-pending revisions + if (!in_array($revision->post_mime_type, ['draft-revision', 'pending-revision']) || !rvy_is_post_author($revision)) { // allow submitters to delete their own still-pending revisions wp_die( __('Sorry, you are not allowed to delete this revision.', 'revisionary') ); } } @@ -327,11 +327,15 @@ function rvy_get_post_revisions($post_id, $status = 'inherit', $args = '' ) { $$var = ( isset( $args[$var] ) ) ? $args[$var] : $defaults[$var]; } - if (!in_array( - $status, - array_merge(rvy_revision_statuses(), array('inherit')) - ) ) { - return []; + if (!$status) { + $all_rev_statuses_clause = " AND (post_mime_type = 'draft-revision' OR post_mime_type = 'pending-revision' OR post_mime_type = 'future-revision')"; + } else { + if (!in_array( + $status, + array_merge(rvy_revision_statuses(), array('inherit')) + ) ) { + return []; + } } if ( COL_ID_RVY == $fields ) { @@ -355,15 +359,26 @@ function rvy_get_post_revisions($post_id, $status = 'inherit', $args = '' ) { ) ); } else { - $revisions = $wpdb->get_col( - $wpdb->prepare( - "SELECT ID FROM $wpdb->posts " - . " INNER JOIN $wpdb->postmeta pm_published ON $wpdb->posts.ID = pm_published.post_id AND pm_published.meta_key = '_rvy_base_post_id'" - . " WHERE pm_published.meta_value = %s AND post_status = %s", - $post_id, - $status - ) - ); + if (!empty($all_rev_statuses_clause)) { + $revisions = $wpdb->get_col( + $wpdb->prepare( + "SELECT ID FROM $wpdb->posts " + . " INNER JOIN $wpdb->postmeta pm_published ON $wpdb->posts.ID = pm_published.post_id AND pm_published.meta_key = '_rvy_base_post_id'" + . " WHERE pm_published.meta_value = %s $all_rev_statuses_clause", + $post_id + ) + ); + } else { + $revisions = $wpdb->get_col( + $wpdb->prepare( + "SELECT ID FROM $wpdb->posts " + . " INNER JOIN $wpdb->postmeta pm_published ON $wpdb->posts.ID = pm_published.post_id AND pm_published.meta_key = '_rvy_base_post_id'" + . " WHERE pm_published.meta_value = %s AND post_mime_type = %s", + $post_id, + $status + ) + ); + } } if ( $return_flipped ) @@ -388,15 +403,34 @@ function rvy_get_post_revisions($post_id, $status = 'inherit', $args = '' ) { ) ); } else { - $revisions = $wpdb->get_results( - $wpdb->prepare( - "SELECT * FROM $wpdb->posts " - . " INNER JOIN $wpdb->postmeta pm_published ON $wpdb->posts.ID = pm_published.post_id AND pm_published.meta_key = '_rvy_base_post_id'" - . " WHERE pm_published.meta_value = %d AND post_status = %s $order_clause", - $post_id, - $status - ) - ); + if (!empty($all_rev_statuses_clause)) { + + $test = $wpdb->prepare( + "SELECT * FROM $wpdb->posts " + . " INNER JOIN $wpdb->postmeta pm_published ON $wpdb->posts.ID = pm_published.post_id AND pm_published.meta_key = '_rvy_base_post_id'" + . " WHERE pm_published.meta_value = %d $all_rev_statuses_clause $order_clause", + $post_id + ); + + $revisions = $wpdb->get_results( + $wpdb->prepare( + "SELECT * FROM $wpdb->posts " + . " INNER JOIN $wpdb->postmeta pm_published ON $wpdb->posts.ID = pm_published.post_id AND pm_published.meta_key = '_rvy_base_post_id'" + . " WHERE pm_published.meta_value = %d $all_rev_statuses_clause $order_clause", + $post_id + ) + ); + } else { + $revisions = $wpdb->get_results( + $wpdb->prepare( + "SELECT * FROM $wpdb->posts " + . " INNER JOIN $wpdb->postmeta pm_published ON $wpdb->posts.ID = pm_published.post_id AND pm_published.meta_key = '_rvy_base_post_id'" + . " WHERE pm_published.meta_value = %d AND post_mime_type = %s $order_clause", + $post_id, + $status + ) + ); + } } } diff --git a/admin/admin_rvy.php b/admin/admin_rvy.php index 75720f31..aad5c5bc 100644 --- a/admin/admin_rvy.php +++ b/admin/admin_rvy.php @@ -211,11 +211,10 @@ public function fltDisableExceptionUI($disable, $src_name, $post_id, $post_type return $disable; } - // Prevent PublishPress Revisions statuses from confusing the page listing - public function pre_get_posts($wp_query) { - $stati = array_diff(get_post_stati(), apply_filters('revisionary_cmstpv_omit_statuses', ['pending-revision', 'future-revision'], rvy_detect_post_type())); - $wp_query->query['post_status'] = $stati; - $wp_query->query_vars['post_status'] = $stati; + // Prevent PublishPress Revisions statuses from confusing the CMS Tree Page View plugin page listing + public function cmstpv_compat_get_posts($wp_query) { + $wp_query->query['post_mime_type'] = ''; + $wp_query->query_vars['post_mime_type'] = ''; } public function fltAdminPostsListing() { diff --git a/admin/class-list-table_rvy.php b/admin/class-list-table_rvy.php index beafb858..f21bd428 100644 --- a/admin/class-list-table_rvy.php +++ b/admin/class-list-table_rvy.php @@ -102,7 +102,7 @@ function do_query( $q = false ) { if (isset($qr['m']) && strlen($qr['m']) == 6) { $qr['date_query'] = [ - 'column' => ( ! empty($_REQUEST['post_status']) && 'future-revision' == $_REQUEST['post_status'] ) ? 'post_date' : 'post_modified', + 'column' => ( ! empty($_REQUEST['post_mime_type']) && 'future-revision' == $_REQUEST['post_mime_type'] ) ? 'post_date' : 'post_modified', 'year' => substr($qr['m'], 0, 4), 'month' => substr($qr['m'], 4) ]; @@ -110,15 +110,15 @@ function do_query( $q = false ) { unset($qr['m']); } - if ( isset( $q['orderby'] ) && !in_array($q['orderby'], ['post_status', 'post_type']) ) { + if ( isset( $q['orderby'] ) && !in_array($q['orderby'], ['post_mime_type', 'post_type']) ) { $qr['orderby'] = $q['orderby']; } else { - $qr['orderby'] = ( ! empty($_REQUEST['post_status']) && 'future-revision' == $_REQUEST['post_status'] ) ? 'date' : 'modified'; + $qr['orderby'] = ( ! empty($_REQUEST['post_mime_type']) && 'future-revision' == $_REQUEST['post_mime_type'] ) ? 'date' : 'modified'; } - if ( isset( $q['order'] ) && !in_array($q['orderby'], ['post_status', 'post_type'] ) ) { + if ( isset( $q['order'] ) && !in_array($q['orderby'], ['post_mime_type', 'post_type'] ) ) { $qr['order'] = $q['order']; - } else { //if ( isset( $q['post_status'] ) && 'pending-revision' == $q['post_status'] ) { + } else { $qr['order'] = 'DESC'; } @@ -129,17 +129,17 @@ function do_query( $q = false ) { $qr['posts_per_page'] = 20; if ( isset($q['post_status']) && rvy_is_revision_status( $q['post_status'] ) ) { - $qr['post_status'] = [$q['post_status']]; + $qr['post_mime_type'] = [$q['post_status']]; } else { - $qr['post_status'] = ['pending-revision', 'future-revision']; + $qr['post_mime_type'] = rvy_revision_statuses(); } if (!rvy_get_option('pending_revisions')) { - $qr['post_status'] = array_diff($qr['post_status'], ['pending-revision']); + $qr['post_mime_type'] = array_diff($qr['post_mime_type'], ['draft-revision', 'pending-revision']); } if (!rvy_get_option('scheduled_revisions')) { - $qr['post_status'] = array_diff($qr['post_status'], ['future-revision']); + $qr['post_mime_type'] = array_diff($qr['post_mime_type'], ['future-revision']); } global $wp_query; @@ -162,7 +162,15 @@ function do_query( $q = false ) { } $qr = apply_filters('revisionary_queue_vars', $qr); + + $wp_query->is_revisions_query = true; + + add_filter('posts_where', [$this, 'fltFixMimeTypeClause']); $wp_query->query($qr); + remove_filter('posts_where', [$this, 'fltFixMimeTypeClause']); + + $wp_query->is_revisions_query = false; + do_action('revisionary_queue_done'); // prevent default display of all revisions @@ -176,7 +184,11 @@ function do_query( $q = false ) { remove_filter($filter_name, [$this, 'revisions_filter'], 5, 2); remove_filter($filter_name, [$this, 'restore_revisions_filter'], PHP_INT_MAX - 1, 2); - return $qr['post_status']; + return $qr['post_mime_type']; + } + + function fltFixMimeTypeClause($where) { + return str_replace("-revision/%'", "-revision'", $where); } function flt_presspermit_posts_clauses_intercept( $intercept, $clauses, $_wp_query, $args) { @@ -260,8 +272,10 @@ function revisions_where_filter($where, $args = []) { } if ((empty($_REQUEST['post_author']) || !empty($args['status_count'])) && empty($_REQUEST['published_post'])) { + $revision_status_csv = rvy_revision_statuses(['return' => 'csv']); + $own_revision_and = $this->append_revisions_where($where, $args); - $own_revision_clause = "OR ($p.post_status = 'pending-revision' AND $p.post_author = '$current_user->ID'{$own_revision_and})"; + $own_revision_clause = "OR ($p.post_status IN ('draft', 'pending') AND $p.post_mime_type IN ($revision_status_csv) AND $p.post_author = '$current_user->ID'{$own_revision_and})"; } else { $own_revision_clause = ''; } @@ -325,7 +339,10 @@ function revisions_filter($clauses, $_wp_query = false) { function correctCommentCounts() { global $wpdb; - if ($revision_ids = $wpdb->get_col("SELECT ID FROM $wpdb->posts WHERE post_status IN ('pending-revision', 'future-revision') AND comment_count = 0")) { + $revision_base_status_csv = rvy_revision_base_statuses(['return' => 'csv']); + $revision_status_csv = rvy_revision_statuses(['return' => 'csv']); + + if ($revision_ids = $wpdb->get_col("SELECT ID FROM $wpdb->posts WHERE post_status IN ($revision_base_status_csv) AND post_mime_type IN ($revision_status_csv) AND comment_count = 0")) { foreach($revision_ids as $revision_id) { if ($main_post_id = get_post_meta($revision_id, '_rvy_base_post_id', true)) { $wpdb->update($wpdb->posts, ['comment_count' => $main_post_id], ['ID' => $revision_id]); @@ -337,7 +354,7 @@ function correctCommentCounts() { function rvy_pending_list_register_columns( $columns ) { global $wp_query; foreach( $wp_query->posts as $post ) { - if ( !empty($post) && is_object($post) && (('future-revision' == $post->post_status) || (strtotime($post->post_date_gmt) > agp_time_gmt())) ) { + if ( !empty($post) && is_object($post) && (('future-revision' == $post->post_mime_type && 'future' == $post->post_status) || (strtotime($post->post_date_gmt) > agp_time_gmt())) ) { $have_scheduled = true; break; } @@ -384,7 +401,10 @@ function rvy_pending_custom_col( $column_name, $post_id ) { case 'post_status': - switch ( $post->post_status ) { + switch ( $post->post_mime_type ) { + case 'draft-revision': + $label = __('Working Copy', 'revisionary'); + break; case 'pending-revision': $label = __('Pending', 'revisionary'); break; @@ -392,19 +412,19 @@ function rvy_pending_custom_col( $column_name, $post_id ) { $label = __('Scheduled', 'revisionary'); break; default: - if ( $status_obj = get_post_status_object( $post->post_status) ) + if ( $status_obj = get_post_status_object( $post->post_mime_type) ) $label = $status_obj->label; else $label = ucwords($post->post_status); } - $link = add_query_arg('post_status', $post->post_status, $request_url); + $link = add_query_arg('post_status', $post->post_mime_type, $request_url); echo "$label"; break; case 'date_sched' : - if ( ('future-revision' === $post->post_status ) || ( strtotime($post->post_date_gmt) > agp_time_gmt() ) ) { + if ( ('future-revision' === $post->post_mime_type ) || ( strtotime($post->post_date_gmt) > agp_time_gmt() ) ) { $t_time = get_the_time( __( 'Y/m/d g:i:s a', 'revisionary' ) ); $m_time = $post->post_date; @@ -422,7 +442,7 @@ function rvy_pending_custom_col( $column_name, $post_id ) { $h_time = str_replace( ' ', '
', $h_time ); } - if ('future-revision' == $post->post_status) { + if ('future-revision' == $post->post_mime_type) { $t_time = sprintf(__('Scheduled publication: %s', 'revisionary'), $t_time); } else { $h_time = "[$h_time]"; @@ -635,10 +655,10 @@ private function count_revisions($post_type = '', $statuses = '' ) { . "')"; } - $where = $this->revisions_where_filter("post_status IN ('$status_csv') $type_clause", ['status_count' => true]); + $where = $this->revisions_where_filter("post_mime_type IN ('$status_csv') $type_clause", ['status_count' => true]); - $query = "SELECT post_status, COUNT( * ) AS num_posts FROM {$wpdb->posts} WHERE $where"; - $query .= ' GROUP BY post_status'; + $query = "SELECT post_mime_type, COUNT( * ) AS num_posts FROM {$wpdb->posts} WHERE $where"; + $query .= ' GROUP BY post_mime_type'; $query = apply_filters('presspermit_posts_request', $query, ['has_cap_check' => true]); // has_cap_check argument triggers inclusion of revision statuses @@ -647,10 +667,11 @@ private function count_revisions($post_type = '', $statuses = '' ) { $counts = []; foreach ( $results as $row ) { - $counts[ $row['post_status'] ] = $row['num_posts']; + $counts[ $row['post_mime_type'] ] = $row['num_posts']; } if (!rvy_get_option('pending_revisions')) { + unset($counts['draft-revision']); unset($counts['pending-revision']); } @@ -672,7 +693,7 @@ protected function get_views() { global $wp_query, $wpdb, $current_user; $post_types = rvy_get_manageable_types(); - $statuses = ['pending-revision', 'future-revision']; + $revision_statuses = rvy_revision_statuses(); $q = ['post_type' => $post_types, 'fields' => 'ids', 'post_parent' => $this->published_post_ids]; @@ -689,9 +710,11 @@ protected function get_views() { $links = []; $links['all'] = ''; + $revision_status_csv = rvy_revision_statuses(['return' => 'csv']); + $where = $this->revisions_where_filter( $wpdb->prepare( - "$wpdb->posts.post_status IN ('pending-revision', 'future-revision') AND $wpdb->posts.post_author = '%d'", + "$wpdb->posts.post_mime_type IN ($revision_status_csv) AND $wpdb->posts.post_author = '%d'", $current_user->ID ), ['status_count' => true] @@ -715,7 +738,7 @@ protected function get_views() { $where = $this->revisions_where_filter( $wpdb->prepare( - "r.post_status IN ('pending-revision', 'future-revision') AND p.post_author = '%d'", + "r.post_mime_type IN ($revision_status_csv) AND p.post_author = '%d'", $current_user->ID ), ['alias' => 'r', 'status_count' => true] @@ -865,12 +888,14 @@ protected function extra_tablenav( $which ) { protected function rvy_months_dropdown() { global $wpdb, $wp_locale; + $revision_status_csv = rvy_revision_statuses(['return' => 'csv']); + $extra_checks = "AND post_status != 'auto-draft'"; if (isset($_GET['post_status']) && ('all' != $_GET['post_status'])) { $extra_checks = $wpdb->prepare( ' AND post_status = %s', sanitize_key($_GET['post_status']) ); } else { - $extra_checks = " AND post_status IN ('pending-revision', 'future-revision')"; + $extra_checks = " AND post_mime_type IN ($revision_status_csv)"; } $date_col = ( ! empty($_REQUEST['post_status']) && 'future-revision' == $_REQUEST['post_status'] ) ? 'post_date' : 'post_modified'; diff --git a/admin/history_rvy.php b/admin/history_rvy.php index 7c7ed5fc..0260c17c 100644 --- a/admin/history_rvy.php +++ b/admin/history_rvy.php @@ -144,13 +144,13 @@ public function actLoadRevision() { return; } - if ('future-revision' == $revision->post_status) { - $this->post_status = $revision->post_status; - } else { - $this->post_status = 'pending-revision'; - } + //if ('future-revision' == $revision->post_mime_type) { + $this->revision_status = $revision->post_mime_type; + //} else { + // $this->post_status = 'pending-revision'; + //} - $status_obj = get_post_status_object($this->post_status); + $status_obj = get_post_status_object($revision->post_mime_type); $post_edit_link = get_edit_post_link($published_post); $post_title = '' . _draft_or_post_title($published_post) . ''; @@ -205,6 +205,10 @@ public function actLoadRevision() { exit; } + public function fltFixMimeTypeClause($where) { + return str_replace("-revision/%'", "-revision'", $where); + } + private function queryRevisions($post, $paged = false) { $this->published_post_ids = [$post->ID]; @@ -212,14 +216,18 @@ private function queryRevisions($post, $paged = false) { $q['post_type'] = $post->post_type; $q['orderby'] = 'id'; // 'modified'; $q['order'] = 'ASC'; - $q['post_status'] = (!empty($this->post_status)) ? $this->post_status : ['pending-revision', 'future-revision']; + $q['post_mime_type'] = ('future-revision' == $this->revision_status) ? $this->revision_status : array_diff(rvy_revision_statuses(), ['future-revision']); $q['posts_per_page'] = 99; + $q['is_revisions_query'] = true; $q = apply_filters('revisionary_compare_vars', $q); //do_action('revisionary_history_query', $post); add_filter('posts_clauses', [$this, 'fltRevisionClauses'], 5, 2); - $rvy_query = new WP_Query($q); + + add_filter('posts_where', [$this, 'fltFixMimeTypeClause']); + $rvy_query = new WP_Query($q); + remove_filter('posts_where', [$this, 'fltFixMimeTypeClause']); remove_filter('posts_clauses', [$this, 'fltRevisionClauses'], 5, 2); //do_action('revisionary_history_query_done', $post); @@ -336,7 +344,7 @@ public function actAjaxRevisionDiffs() { return; } - $this->post_status = $revision->post_status; + $this->revision_status = $revision->post_mime_type; if (!$rvy_revisions = $this->queryRevisions($post)) { return; @@ -567,7 +575,7 @@ public function getRevisionUIDiff($post, $compare_from, $compare_to) { ]) as $field => $name ) { // don't display post date difference when it's set to a future date for scheduling - if (strtotime($compare_to->post_date_gmt) > agp_time_gmt() || ('future-revision' == $compare_to->post_status)) { + if (strtotime($compare_to->post_date_gmt) > agp_time_gmt() || ('future-revision' == $compare_to->post_mime_type)) { continue; } @@ -908,7 +916,7 @@ private function prepare_revisions_for_js( $post, $selected_revision_id, $from = $edit_url = false; // Until Reject button is implemented, just route to Preview screen so revision can be edited / deleted if necessary - if ( $current || in_array($revision->post_status, ['pending-revision', 'future-revision'])) { + if ($current || rvy_is_revision_status($revision->post_mime_type)) { $restore_link = rvy_preview_url($revision); // default to revision preview link if ($can_restore) { @@ -918,11 +926,14 @@ private function prepare_revisions_for_js( $post, $selected_revision_id, $from = if ((($type_obj && empty($type_obj->public)) || rvy_get_option('compare_revisions_direct_approval')) && agp_user_can( 'edit_post', $published_post_id, '', ['skip_revision_allowance' => true] ) ) { $redirect_arg = ( ! empty($_REQUEST['rvy_redirect']) ) ? "&rvy_redirect=" . esc_url($_REQUEST['rvy_redirect']) : ''; - if (in_array($revision->post_status, ['pending-revision'])) { - $restore_link = wp_nonce_url( admin_url("admin.php?page=rvy-revisions&revision={$revision->ID}&action=approve$redirect_arg"), "approve-post_$published_post_id|{$revision->ID}" ); + //if (in_array($revision->post_mime_type, ['draft-revision'])) { + // $restore_link = wp_nonce_url( rvy_admin_url("admin.php?page=rvy-revisions&revision={$revision->ID}&action=submit$redirect_arg"), "submit-post_$published_post_id|{$revision->ID}" ); + + if (in_array($revision->post_mime_type, ['pending-revision'])) { + $restore_link = wp_nonce_url( rvy_admin_url("admin.php?page=rvy-revisions&revision={$revision->ID}&action=approve$redirect_arg"), "approve-post_$published_post_id|{$revision->ID}" ); - } elseif (in_array($revision->post_status, ['future-revision'])) { - $restore_link = wp_nonce_url( admin_url("admin.php?page=rvy-revisions&revision={$revision->ID}&action=publish$redirect_arg"), "publish-post_$published_post_id|{$revision->ID}" ); + } elseif (in_array($revision->post_mime_type, ['future-revision'])) { + $restore_link = wp_nonce_url( rvy_admin_url("admin.php?page=rvy-revisions&revision={$revision->ID}&action=publish$redirect_arg"), "publish-post_$published_post_id|{$revision->ID}" ); } if (agp_user_can('edit_post', $revision->ID)) { @@ -934,12 +945,12 @@ private function prepare_revisions_for_js( $post, $selected_revision_id, $from = $restore_link = ''; } - if ('future-revision' == $revision->post_status) { + if ('future-revision' == $revision->post_mime_type) { $date_prefix = __('Scheduled for ', 'revisionary'); $modified = strtotime( $revision->post_date ); $modified_gmt = strtotime( $revision->post_date_gmt . ' +0000' ); - } elseif ('pending-revision' == $revision->post_status && (strtotime($revision->post_date_gmt) > $now_gmt ) ) { + } elseif (in_array($revision->post_mime_type, ['draft-revision', 'pending-revision']) && (strtotime($revision->post_date_gmt) > $now_gmt ) ) { $date_prefix = __('Requested for ', 'revisionary'); $modified = strtotime( $revision->post_date ); $modified_gmt = strtotime( $revision->post_date_gmt . ' +0000' ); diff --git a/admin/revision-action_rvy.php b/admin/revision-action_rvy.php index 3b794106..6729364b 100644 --- a/admin/revision-action_rvy.php +++ b/admin/revision-action_rvy.php @@ -66,11 +66,11 @@ function rvy_revision_approve($revision_id = 0) { // If requested publish date is in the past or now, publish the revision if ( strtotime( $revision->post_date_gmt ) <= agp_time_gmt() ) { - $status_obj = get_post_status_object( $revision->post_status ); + $status_obj = get_post_status_object( $revision->post_mime_type ); global $wpdb; - if ( empty($status_obj->public) && empty($status_obj->private) ) { // && ( 'future-revision' != $revision->post_status ) ) { + if ( empty($status_obj->public) && empty($status_obj->private) ) { // && ( 'future-revision' != $revision->post_mime_type ) ) { $db_action = true; if ('revision' == $revision->post_type) { @@ -88,7 +88,7 @@ function rvy_revision_approve($revision_id = 0) { clean_post_cache( $revision->ID ); } else { - $_result = rvy_apply_revision($revision->ID, $revision->post_status); + $_result = rvy_apply_revision($revision->ID, $revision->post_mime_type); if (!$_result || is_wp_error($_result)) { // Go ahead with the normal redirect because the revision may have been approved / published already. // If revision does not exist, preview's Not Found will prevent false impression of success. @@ -107,9 +107,9 @@ function rvy_revision_approve($revision_id = 0) { // If requested publish date is in the future, schedule the revision } else { - if ( 'future-revision' != $revision->post_status ) { + if ( 'future-revision' != $revision->post_mime_type ) { global $wpdb; - $wpdb->update( $wpdb->posts, array( 'post_status' => 'future-revision' ), array( 'ID' => $revision->ID ) ); + $wpdb->update( $wpdb->posts, array( 'post_mime_type' => 'future-revision' ), array( 'ID' => $revision->ID ) ); $update_next_publish_date = true; @@ -425,12 +425,13 @@ function rvy_apply_revision( $revision_id, $actual_revision_status = '' ) { 'comment_count' => $published->comment_count, 'post_name' => $published->post_name, 'guid' => $published->guid, + 'post_mime_type' => $published->post_mime_type ) ); if ( - (('pending-revision' == $revision->post_status) && !rvy_get_option('pending_revision_update_post_date')) - || (('future-revision' == $revision->post_status) && !rvy_get_option('scheduled_revision_update_post_date')) + (in_array($revision->post_mime_type, ['pending-revision', 'draft-revision']) && !rvy_get_option('pending_revision_update_post_date')) + || (('future-revision' == $revision->post_mime_type) && !rvy_get_option('scheduled_revision_update_post_date')) ) { $update = array_merge( $update, @@ -488,7 +489,7 @@ function rvy_apply_revision( $revision_id, $actual_revision_status = '' ) { // Apply requested slug, if applicable. // Otherwise, work around unexplained reversion of editor-modified post slug back to default format on some sites @todo: identify plugin interaction - $update_fields = ['post_name' => $set_slug, 'guid' => $published->guid, 'post_type' => $published->post_type]; + $update_fields = ['post_name' => $set_slug, 'guid' => $published->guid, 'post_type' => $published->post_type, 'post_status' => $published->post_status, 'post_mime_type' => $published->post_mime_type, 'post_parent' => $published->post_parent]; // Prevent wp_insert_post() from stripping inline html styles if (!defined('RVY_DISABLE_REVISION_CONTENT_PASSTHRU')) { @@ -503,8 +504,8 @@ function rvy_apply_revision( $revision_id, $actual_revision_status = '' ) { } if ( - (('pending-revision' == $revision->post_status) && rvy_get_option('pending_revision_update_modified_date')) - || (('future-revision' == $revision->post_status) && rvy_get_option('scheduled_revision_update_modified_date')) + (in_array($revision->post_mime_type, ['draft-revision', 'pending-revision']) && rvy_get_option('pending_revision_update_modified_date')) + || (('future-revision' == $revision->post_mime_type) && rvy_get_option('scheduled_revision_update_modified_date')) ) { $post_modified = current_time('mysql'); $post_modified_gmt = current_time('mysql', 1); @@ -517,8 +518,8 @@ function rvy_apply_revision( $revision_id, $actual_revision_status = '' ) { } if ( - (('pending-revision' == $revision->post_status) && rvy_get_option('pending_revision_update_post_date')) - || (('future-revision' == $revision->post_status) && rvy_get_option('scheduled_revision_update_post_date')) + (in_array($revision->post_mime_type, ['draft-revision', 'pending-revision']) && rvy_get_option('pending_revision_update_post_date')) + || (('future-revision' == $revision->post_mime_type) && rvy_get_option('scheduled_revision_update_post_date')) ) { $update_fields['post_date'] = $post_modified; $update_fields['post_date_gmt'] = $post_modified_gmt; @@ -532,7 +533,7 @@ function rvy_apply_revision( $revision_id, $actual_revision_status = '' ) { $is_imported = get_post_meta($revision_id, '_rvy_imported_revision', true); // work around bug in < 2.0.7 that saved all scheduled revisions without terms - if (!$is_imported && ('future-revision' == $revision->post_status)) { + if (!$is_imported && ('future-revision' == $revision->post_mime_type)) { if ($install_time = get_option('revisionary_2_install_time')) { if (strtotime($revision->post_modified_gmt) < $install_time) { $is_imported = true; @@ -564,7 +565,8 @@ function rvy_apply_revision( $revision_id, $actual_revision_status = '' ) { 'post_date' => current_time('mysql'), 'post_date_gmt' => current_time('mysql', 1), 'post_parent' => $post_id, - 'comment_count' => 0 + 'comment_count' => 0, + 'post_mime_type' => $published->post_mime_type ], ['ID' => $revision_id] ); @@ -639,11 +641,11 @@ function rvy_apply_revision( $revision_id, $actual_revision_status = '' ) { // Prevent post date from being set to current time unless Revisionary settings call for that if ( - (('pending-revision' == $revision->post_status) && !rvy_get_option('pending_revision_update_post_date')) - || (('future-revision' == $revision->post_status) && !rvy_get_option('scheduled_revision_update_post_date')) + (in_array($revision->post_mime_type, ['draft-revision', 'pending-revision']) && !rvy_get_option('pending_revision_update_post_date')) + || (('future-revision' == $revision->post_mime_type) && !rvy_get_option('scheduled_revision_update_post_date')) ) { if ($_post = get_post($post_id)) { - $set_dates = (('pending-revision' == $revision->post_status) && ($_post->post_date_gmt != $_post->post_modified_gmt)) + $set_dates = (('future-revision' != $revision->post_mime_type) && ($_post->post_date_gmt != $_post->post_modified_gmt)) ? ['post_date' => $revision->post_date, 'post_date_gmt' => $revision->post_date_gmt] : ['post_date' => $published->post_date, 'post_date_gmt' => $published->post_date_gmt]; @@ -690,7 +692,7 @@ function rvy_do_revision_restore( $revision_id, $actual_revision_status = '' ) { global $wpdb; if ( $revision = wp_get_post_revision( $revision_id ) ) { - if ('future-revision' == $revision->post_status) { + if ('future-revision' == $revision->post_mime_type) { rvy_publish_scheduled_revisions(array('force_revision_id' => $revision->ID)); return $revision; } @@ -741,7 +743,7 @@ function rvy_revision_delete() { // before deleting the revision, note its status for redirect wp_delete_post_revision( $revision_id ); - $redirect = "admin.php?page=rvy-revisions&revision={$revision->post_parent}&action=view&revision_status={$revision->post_status}&deleted=1"; + $redirect = "admin.php?page=rvy-revisions&revision={$revision->post_parent}&action=view&revision_status={$revision->post_mime_type}&deleted=1"; rvy_delete_past_revisions($revision_id); @@ -807,7 +809,7 @@ function rvy_revision_bulk_delete() { } // before deleting the revision, note its status for redirect - $revision_status = $revision->post_status; + $revision_status = $revision->post_mime_type; wp_delete_post( $revision_id ); $delete_count++; @@ -871,7 +873,7 @@ function rvy_revision_publish($revision_id = false) { break; } - if ( 'future-revision' != $revision->post_status ) { + if ( 'future-revision' != $revision->post_mime_type ) { break; } @@ -948,14 +950,14 @@ function rvy_publish_scheduled_revisions($args = array()) { if (!empty($args['force_revision_id']) && is_scalar($args['force_revision_id'])) { $results = $wpdb->get_results( $wpdb->prepare( - "SELECT * FROM $wpdb->posts WHERE post_status = 'future-revision' AND ID = %d", + "SELECT * FROM $wpdb->posts WHERE post_mime_type = 'future-revision' AND ID = %d", (int) $args['force_revision_id'] ) ); } else { $results = $wpdb->get_results( $wpdb->prepare( - "SELECT * FROM $wpdb->posts WHERE post_status = 'future-revision' AND post_date_gmt <= %s ORDER BY post_date_gmt DESC", + "SELECT * FROM $wpdb->posts WHERE post_mime_type = 'future-revision' AND post_date_gmt <= %s ORDER BY post_date_gmt DESC", $time_gmt ) ); @@ -1177,7 +1179,7 @@ function rvy_publish_scheduled_revisions($args = array()) { if ( $skip_revision_ids ) { // if more than one scheduled revision was not yet published, convert the older ones to regular revisions $id_clause = "AND ID IN ('" . implode( "','", array_keys($skip_revision_ids) ) . "')"; - $wpdb->query( "UPDATE $wpdb->posts SET post_type = 'revision', post_status = 'inherit' WHERE post_status = 'future-revision' $id_clause" ); + $wpdb->query( "UPDATE $wpdb->posts SET post_type = 'revision', post_status = 'inherit' WHERE post_mime_type = 'future-revision' $id_clause" ); } } @@ -1194,7 +1196,7 @@ function rvy_publish_scheduled_revisions($args = array()) { function rvy_update_next_publish_date() { global $wpdb; - if ( $next_publish_date_gmt = $wpdb->get_var( "SELECT post_date_gmt FROM $wpdb->posts WHERE post_status = 'future-revision' ORDER BY post_date_gmt ASC LIMIT 1" ) ) { + if ( $next_publish_date_gmt = $wpdb->get_var( "SELECT post_date_gmt FROM $wpdb->posts WHERE post_mime_type = 'future-revision' ORDER BY post_date_gmt ASC LIMIT 1" ) ) { // wp_schedule_single_event( strtotime( $next_publish_date_gmt ), 'publish_revision_rvy' ); // @todo: wp_cron testing } else { $next_publish_date_gmt = '2035-01-01 00:00:00'; diff --git a/functions.php b/functions.php index e8586c92..735c1763 100644 --- a/functions.php +++ b/functions.php @@ -2,4 +2,46 @@ function revisionary() { return \PublishPress\Revisions::instance(); + +function rvy_revision_base_statuses($args = []) { + $defaults = ['output' => 'names', 'return' => 'array']; + $args = array_merge($defaults, $args); + foreach (array_keys($defaults) as $var) { + $$var = $args[$var]; + } + + $arr = array_map('sanitize_key', (array) apply_filters('rvy_revision_base_statuses', ['draft', 'pending', 'future'])); + + if ('object' == $output) { + $status_keys = array_value($arr); + $arr = []; + + foreach($status_keys as $k) { + $arr[$k] = get_post_status_object($k); + } + } + + return ('csv' == $return) ? "'" . implode("','", $arr) . "'" : $arr; +} + +function rvy_revision_statuses($args = []) { + $defaults = ['output' => 'names', 'return' => 'array']; + $args = array_merge($defaults, $args); + foreach (array_keys($defaults) as $var) { + $$var = $args[$var]; + } + + $arr = array_map('sanitize_key', (array) apply_filters('rvy_revision_statuses', ['draft-revision', 'pending-revision', 'future-revision'])); + + if ('object' == $output) { + $status_keys = array_value($arr); + $arr = []; + + foreach($status_keys as $k) { + $arr[$k] = get_post_status_object($k); + } + } + + return ('csv' == $return) ? "'" . implode("','", $arr) . "'" : $arr; +} } diff --git a/revisionary.php b/revisionary.php index c7c603cb..216d6d74 100644 --- a/revisionary.php +++ b/revisionary.php @@ -116,12 +116,27 @@ function($links, $file) require_once(dirname(__FILE__).'/activation_rvy.php'); } + // import from Revisionary 1.x new RevisionaryActivation(['import_legacy' => true]); + + // convert pending / scheduled revisions to v3.0 format + global $wpdb; + + $revision_status_csv = rvy_revision_statuses(['return' => 'csv']); + $wpdb->query("UPDATE $wpdb->posts SET post_mime_type = post_status WHERE post_status IN ($revision_status_csv)"); + $wpdb->query("UPDATE $wpdb->posts SET post_status = 'draft' WHERE post_status IN ('draft-revision')"); + $wpdb->query("UPDATE $wpdb->posts SET post_status = 'pending' WHERE post_status IN ('pending-revision')"); + $wpdb->query("UPDATE $wpdb->posts SET post_status = 'future' WHERE post_status IN ('future-revision')"); } ); register_deactivation_hook(__FILE__, function() { + // convert pending / scheduled revisions to v2.x format, which also prevents them from being listed as regular drafts / pending posts + $revision_status_csv = rvy_revision_statuses(['return' => 'csv']); + $wpdb->query("UPDATE $wpdb->posts SET post_status = post_mime_type WHERE post_mime_type IN ($revision_status_csv)"); + $wpdb->query("UPDATE $wpdb->posts SET post_mime_type = '' WHERE post_mime_type IN ($revision_status_csv)"); + if ($timestamp = wp_next_scheduled('rvy_mail_buffer_hook')) { wp_unschedule_event( $timestamp,'rvy_mail_buffer_hook'); } From 66e717b9f4309f4b5a1bf57b5d8230565a032824 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Mon, 20 Sep 2021 21:07:20 -0400 Subject: [PATCH 003/193] introduce function rvy_in_revision_workflow() This simplifies call syntax, as opposed to rvy_is_revision_status($post->post_status) This function and other frequently used functions are moved to the plugin's functions.php for earlier loading. --- admin/admin-init_rvy.php | 6 ++-- admin/post-edit-block-ui_rvy.php | 6 ++-- admin/post-edit_rvy.php | 2 +- admin/revision-action_rvy.php | 2 +- front_rvy.php | 8 ++--- functions.php | 52 ++++++++++++++++++++++++++++++++ revisionary_main.php | 24 +++++++-------- rvy_init.php | 40 ++---------------------- 8 files changed, 78 insertions(+), 62 deletions(-) diff --git a/admin/admin-init_rvy.php b/admin/admin-init_rvy.php index b14c9fa3..b496ae71 100644 --- a/admin/admin-init_rvy.php +++ b/admin/admin-init_rvy.php @@ -106,7 +106,7 @@ function rvy_admin_init() { continue; } - if (!rvy_is_revision_status($revision->post_status)) { + if (!rvy_in_revision_workflow($revision)) { continue; } @@ -181,7 +181,7 @@ function rvy_admin_init() { if ( ! $revision = get_post($post_id) ) continue; - if ( ! rvy_is_revision_status($revision->post_status) ) + if ( ! rvy_in_revision_workflow($revision) ) continue; if ( ! current_user_can('administrator') && ! current_user_can( 'delete_post', rvy_post_id($revision->ID) ) ) { // @todo: review Administrator cap check @@ -238,7 +238,7 @@ function rvy_admin_init() { $revision_id = (!empty($_REQUEST['revision'])) ? (int) $_REQUEST['revision'] : $_REQUEST['to']; - if (('modified' == rvy_get_option('past_revisions_order_by')) && !rvy_is_revision_status(get_post_field('post_status', $revision_id))) { + if (('modified' == rvy_get_option('past_revisions_order_by')) && !rvy_in_revision_workflow($revision_id)) { require_once(dirname(__FILE__).'/history_rvy.php'); add_filter('query', ['RevisionaryHistory', 'fltOrderRevisionsByModified']); } diff --git a/admin/post-edit-block-ui_rvy.php b/admin/post-edit-block-ui_rvy.php index c99c55a4..62745796 100644 --- a/admin/post-edit-block-ui_rvy.php +++ b/admin/post-edit-block-ui_rvy.php @@ -8,7 +8,7 @@ if ($post_id = rvy_detect_post_id()) { // PublishPress Custom Status module is not relevant to Edit Revision screen, conflicts with Revisions scripts - if (rvy_is_revision_status(get_post_field('post_status', $post_id))) { + if (rvy_in_revision_workflow($post_id)) { add_filter( 'pp_module_dirs', function($pp_modules) { @@ -27,7 +27,7 @@ public static function disablePublishPressStatusesScripts() { global $publishpress; if ($post_id = rvy_detect_post_id()) { - if (rvy_is_revision_status(get_post_field('post_status', $post_id))) { + if (rvy_in_revision_workflow($post_id)) { if (!empty($publishpress) && !empty($publishpress->custom_status->module->options)) { $publishpress->custom_status->module->options->post_types = []; } @@ -63,7 +63,7 @@ public static function act_object_guten_scripts() { $do_pending_revisions = rvy_get_option('pending_revisions'); $do_scheduled_revisions = rvy_get_option('scheduled_revisions'); - if ( ('revision' == $post_type) || rvy_is_revision_status($post->post_status) ) { + if (('revision' == $post->post_type) || rvy_in_revision_workflow($post)) { wp_enqueue_script( 'rvy_object_edit', RVY_URLPATH . "/admin/rvy_revision-block-edit{$suffix}.js", array('jquery', 'jquery-form'), RVY_VERSION, true ); if (rvy_get_option('revision_preview_links') || current_user_can('administrator') || is_super_admin()) { diff --git a/admin/post-edit_rvy.php b/admin/post-edit_rvy.php index c163c5a6..d0770f42 100644 --- a/admin/post-edit_rvy.php +++ b/admin/post-edit_rvy.php @@ -329,7 +329,7 @@ public function act_replace_publish_metabox($post_type, $post) function act_post_submit_revisions_links() { global $post; - if (rvy_is_revision_status($post->post_status)) { + if (rvy_in_revision_workflow($post)) { return; } diff --git a/admin/revision-action_rvy.php b/admin/revision-action_rvy.php index 6729364b..c67c3b0a 100644 --- a/admin/revision-action_rvy.php +++ b/admin/revision-action_rvy.php @@ -837,7 +837,7 @@ function rvy_revision_unschedule($revision_id) { break; } - if (!rvy_is_revision_status($revision->post_status)) { + if (!rvy_in_revision_workflow($revision)) { break; } diff --git a/front_rvy.php b/front_rvy.php index fe0f002d..b59573bc 100644 --- a/front_rvy.php +++ b/front_rvy.php @@ -36,7 +36,7 @@ public function actRevisionPreviewRedirect() { public function fltAuthor($display_name) { if ($_post = get_post(rvy_detect_post_id())) { - if (rvy_is_revision_status($_post->post_status)) { + if (rvy_in_revision_workflow($_post)) { // we only need this workaround when multiple authors were not successfully stored if ($authors = get_multiple_authors($_post->ID, false)) { return $display_name; @@ -141,14 +141,14 @@ function act_template_redirect() { } } - if (rvy_is_revision_status($post->post_status) || ('revision' == $post->post_type) || (!empty($_REQUEST['mark_current_revision']))) { + if (rvy_in_revision_workflow($post) || ('revision' == $post->post_type) || (!empty($_REQUEST['mark_current_revision']))) { add_filter('redirect_canonical', array($this, 'flt_revision_preview_url'), 10, 2); $published_post_id = rvy_post_id($revision_id); do_action('revisionary_preview_load', $revision_id, $published_post_id); - if (defined('PUBLISHPRESS_MULTIPLE_AUTHORS_VERSION') && !defined('REVISIONARY_DISABLE_MA_PREVIEW_CORRECTION') && rvy_is_revision_status($post->post_status)) { + if (defined('PUBLISHPRESS_MULTIPLE_AUTHORS_VERSION') && !defined('REVISIONARY_DISABLE_MA_PREVIEW_CORRECTION') && rvy_in_revision_workflow($post)) { $_authors = get_multiple_authors($revision_id); if (count($_authors) == 1) { @@ -250,7 +250,7 @@ function act_template_redirect() { if (('revision' == $post->post_type) && (get_post_field('post_modified_gmt', $post->post_parent) == get_post_meta($revision_id, '_rvy_published_gmt', true) && empty($_REQUEST['mark_current_revision'])) ) { if ($post = get_post($post->post_parent)) { - if ('revision' != $post->post_type && !rvy_is_revision_status($post->post_status)) { + if ('revision' != $post->post_type && !rvy_in_revision_workflow($post)) { $url = add_query_arg('mark_current_revision', 1, get_permalink($post->ID)); wp_redirect($url); exit; diff --git a/functions.php b/functions.php index 735c1763..69678bd2 100644 --- a/functions.php +++ b/functions.php @@ -44,4 +44,56 @@ function rvy_revision_statuses($args = []) { return ('csv' == $return) ? "'" . implode("','", $arr) . "'" : $arr; } + +function rvy_is_revision_status($post_status) { + return in_array($post_status, rvy_revision_statuses()); +} + +function rvy_in_revision_workflow($post) { + if (!empty($post) && is_numeric($post)) { + $post = get_post($post); + } + + if (empty($post) || empty($post->post_mime_type)) { + return false; + } + + return rvy_is_revision_status($post->post_mime_type) && in_array($post->post_status, rvy_revision_base_statuses()) ? $post->post_mime_type : false; +} + +function rvy_post_id($revision_id) { + static $busy; + + if (!empty($busy)) { + return; + } + + $busy = true; + $published_id = rvy_get_post_meta( $revision_id, '_rvy_base_post_id', true ); + $busy = false; + + if (empty($published_id)) { + if ($_post = get_post($revision_id)) { + // if ID passed in is not a revision, return it as is + if (('revision' != $_post->post_type) && !rvy_in_revision_workflow($_post)) { + return $revision_id; + + } elseif ('revision' == $_post->post_type) { + return $_post->post_parent; + + } else { + // Restore missing postmeta field + /* + if ($_post->comment_count) { + rvy_update_post_meta( $revision_id, '_rvy_base_post_id', $_post->comment_count ); + } + */ + + return $_post->comment_count; + } + } + } + + return ($published_id) ? $published_id : 0; } + diff --git a/revisionary_main.php b/revisionary_main.php index 550176df..2148a0d9 100644 --- a/revisionary_main.php +++ b/revisionary_main.php @@ -52,7 +52,7 @@ function addFilters() { if ($revision_id) { if ($_post = get_post($revision_id)) { - if (!rvy_is_revision_status($_post->post_status)) { + if (!rvy_in_revision_workflow($_post)) { if ($parent_post = get_post($_post->post_parent)) { if (!empty($_POST) || (!empty($_REQUEST['action']) && ('restore' == $_REQUEST['action']))) { if (!$this->canEditPost($parent_post, ['simple_cap_check' => true])) { @@ -344,7 +344,7 @@ public function fltOptionPageOnFront($front_page_id) { global $post; // extra caution and perf optimization for front end execution - if (!empty($post) && is_object($post) && rvy_is_revision_status($post->post_status) && ($post->comment_count == $front_page_id)) { + if (!empty($post) && is_object($post) && rvy_in_revision_workflow($post) && ($post->comment_count == $front_page_id)) { return $post->ID; } @@ -556,7 +556,7 @@ function actDeletePost($post_id) { $post = get_post($post_id); - if ($post && rvy_is_revision_status($post->post_status)) { + if ($post && rvy_in_revision_workflow($post)) { $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->postmeta WHERE post_id = %d", @@ -569,8 +569,8 @@ function actDeletePost($post_id) { } function actUpdateRevision($post_id, $revision) { - if (rvy_is_revision_status($revision->post_status) /*&& rvy_is_post_author($revision)*/ - && (rvy_get_option('revision_update_redirect') || rvy_get_option('revision_update_notifications')) + if (rvy_in_revision_workflow($revision) + && (rvy_get_option('revision_update_notifications')) ) { $published_post = get_post(rvy_post_id($revision)); @@ -603,7 +603,7 @@ function actUpdateRevision($post_id, $revision) { function actUpdateRevisionFixCommentCount($post_id, $revision) { global $wpdb; - if (rvy_is_revision_status($revision->post_status)) { + if (rvy_in_revision_workflow($revision)) { if (empty($revision->comment_count)) { if ($main_post_id = get_post_meta($revision->ID, '_rvy_base_post_id', true)) { $wpdb->update($wpdb->posts, ['comment_count' => $main_post_id], ['ID' => $revision->ID]); @@ -617,7 +617,7 @@ function actUpdateRevisionFixCommentCount($post_id, $revision) { // * published post ID is stored to comment_count column is used for query efficiency function flt_get_comments_number($count, $post_id) { if ($post = get_post($post_id)) { - if (rvy_is_revision_status($post->post_status)) { + if (rvy_in_revision_workflow($post)) { $count = 0; } } @@ -734,7 +734,7 @@ function flt_limit_others_drafts( $caps, $meta_cap, $user_id, $args ) { return $caps; if ( $post = get_post( $object_id ) ) { - if ( ('revision' != $post->post_type) && ! rvy_is_revision_status($post->post_status) ) { + if ( ('revision' != $post->post_type) && ! rvy_in_revision_workflow($post) ) { if (empty($this->enabled_post_types[$post->post_type])) { return $caps; } @@ -887,7 +887,7 @@ function flt_post_map_meta_cap($caps, $cap, $user_id, $args) { if (in_array($cap, ['read_post', 'read_page']) // WP Query imposes edit_post capability requirement for front end viewing of protected statuses || (!empty($_REQUEST['preview']) && in_array($cap, array('edit_post', 'edit_page')) && did_action('posts_selection') && !did_action('template_redirect')) ) { - if ($post && rvy_is_revision_status($post->post_status)) { + if ($post && rvy_in_revision_workflow($post)) { $type_obj = get_post_type_object($post->post_type); if ($type_obj && !empty($type_obj->cap->edit_others_posts)) { @@ -915,7 +915,7 @@ function flt_post_map_meta_cap($caps, $cap, $user_id, $args) { $busy = false; return $caps; } - } elseif (($post_id > 0) && $post && rvy_is_revision_status($post->post_status) + } elseif (($post_id > 0) && $post && rvy_in_revision_workflow($post) && rvy_get_option('revisor_lock_others_revisions') && !rvy_is_post_author($post) && !rvy_is_full_editor($post) ) { if ($type_obj = get_post_type_object( $post->post_type )) { @@ -1232,7 +1232,7 @@ function flt_regulate_revision_status($data, $postarr) { } } - if (!empty($revert_status) && rvy_is_revision_status($revision->post_status)) { + if (!empty($revert_status) && rvy_in_revision_workflow($revision)) { $data['post_status'] = $revision->post_status; } } @@ -1392,7 +1392,7 @@ function actInsertEditorialCommentPreserveCommentCount($comment) { // Prevent wp_update_comment_count_now() from modifying Pending Revision comment_count field (main post ID) function fltUpdateCommentCountBypass($count, $old, $post_id) { - if (rvy_is_revision_status(get_post_field('post_status', $post_id))) { + if (rvy_in_revision_workflow($post_id)) { return rvy_post_id($post_id); } diff --git a/rvy_init.php b/rvy_init.php index 023ece64..cd01c16a 100644 --- a/rvy_init.php +++ b/rvy_init.php @@ -85,7 +85,7 @@ function _rvy_restore_published_content( $post_ID, $post_after, $post_before ) { if (defined('JREVIEWS_ROOT') && !empty($_REQUEST['preview']) && ((empty($_REQUEST['preview_id']) && empty($_REQUEST['thumbnail_id'])) -|| (!empty($_REQUEST['preview_id']) && rvy_is_revision_status(get_post_field('post_status', (int) $_REQUEST['preview_id']))) +|| (!empty($_REQUEST['preview_id']) && rvy_in_revision_workflow((int) $_REQUEST['preview_id'])) ) ) { require_once('compat_rvy.php'); @@ -963,42 +963,6 @@ function rvy_is_status_published( $status ) { return false; } -function rvy_revision_statuses() { - return array_map('sanitize_key', (array) apply_filters('rvy_revision_statuses', array('pending-revision', 'future-revision'))); -} - -function rvy_is_revision_status($status) { - return in_array($status, rvy_revision_statuses()); -} - -function rvy_post_id($revision_id) { - static $busy; - - if (!empty($busy)) { - return; - } - - $busy = true; - $published_id = rvy_get_post_meta( $revision_id, '_rvy_base_post_id', true ); - $busy = false; - - if (empty($published_id)) { - if ($_post = get_post($revision_id)) { - // if ID passed in is not a revision, return it as is - if (('revision' != $_post->post_type) && !rvy_is_revision_status($_post->post_status)) { - return $revision_id; - } elseif('revision' == $_post->post_type) { - return $_post->post_parent; - } else { - rvy_update_post_meta( $revision_id, '_rvy_base_post_id', $_post->comment_count ); - return $_post->comment_count; - } - } - } - - return ($published_id) ? $published_id : 0; -} - function rvy_halt( $msg, $title = '' ) { if ( ! $title ) { $title = __( 'Revision Workflow', 'revisionary' ); @@ -1125,7 +1089,7 @@ function rvy_init() { if ( ! empty($_GET['p']) ) { if ( rvy_get_option( 'scheduled_revisions' ) || rvy_get_option( 'pending_revisions' ) ) { if ( $post = get_post( $_GET['p'] ) ) { - if (rvy_is_revision_status($post->post_status)) { + if (rvy_in_revision_workflow($post)) { $_GET['preview'] = 1; } } From 262d743f9b6a47c53ccd12e28f47cc1eeafeb750 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Mon, 20 Sep 2021 21:13:43 -0400 Subject: [PATCH 004/193] Additional instance of rvy_in_revision_workflow() --- classes/PublishPress/Revisions/PostPreview.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/PublishPress/Revisions/PostPreview.php b/classes/PublishPress/Revisions/PostPreview.php index fd95ee85..560212fd 100644 --- a/classes/PublishPress/Revisions/PostPreview.php +++ b/classes/PublishPress/Revisions/PostPreview.php @@ -9,7 +9,7 @@ function __construct() { // If this preview of unsaved changes is for a revision, show published post author public function fltAuthor($display_name) { if ($_post = get_post(rvy_detect_post_id())) { - if (rvy_is_revision_status($_post->post_status)) { + if (rvy_in_revision_workflow($_post)) { remove_filter('the_author', [$this, 'fltAuthor'], 15); if ($published_author = get_post_field('post_author', rvy_post_id($_post->ID))) { From dfb8076f1c4458d8a75eb6f8aed15ca98481fd0c Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Mon, 20 Sep 2021 21:24:07 -0400 Subject: [PATCH 005/193] Change version constant to easily distinguish new data schema This ensure existing PublishPress Permissions integration functions do not run amuck. --- admin/admin-init_rvy.php | 6 +++--- admin/admin_rvy.php | 6 +++--- admin/history_rvy.php | 2 +- admin/options.php | 4 ++-- classes/PublishPress/Revisionary.php | 6 +++--- revisionary.php | 8 ++++---- rvy_init.php | 4 ++-- 7 files changed, 18 insertions(+), 18 deletions(-) diff --git a/admin/admin-init_rvy.php b/admin/admin-init_rvy.php index b496ae71..6aa62464 100644 --- a/admin/admin-init_rvy.php +++ b/admin/admin-init_rvy.php @@ -3,7 +3,7 @@ add_action( 'init', '_rvy_post_edit_ui' ); -if (defined('REVISIONARY_PRO_VERSION')) { +if (defined('PUBLISHPRESS_REVISIONS_PRO_VERSION')) { require_once(RVY_ABSPATH . '/includes-pro/admin-load.php'); new RevisionaryProAdmin(); } @@ -244,11 +244,11 @@ function rvy_admin_init() { } } - if (defined('REVISIONARY_PRO_VERSION') && !empty($_REQUEST['rvy_ajax_settings'])) { + if (defined('PUBLISHPRESS_REVISIONS_PRO_VERSION') && !empty($_REQUEST['rvy_ajax_settings'])) { include_once(RVY_ABSPATH . '/includes-pro/pro-activation-ajax.php'); } - if (defined('REVISIONARY_PRO_VERSION') && !empty($_REQUEST['rvy_refresh_updates'])) { + if (defined('PUBLISHPRESS_REVISIONS_PRO_VERSION') && !empty($_REQUEST['rvy_refresh_updates'])) { do_action('revisionary_refresh_updates'); } diff --git a/admin/admin_rvy.php b/admin/admin_rvy.php index aad5c5bc..d0e04f44 100644 --- a/admin/admin_rvy.php +++ b/admin/admin_rvy.php @@ -682,7 +682,7 @@ function admin_head() { // all required JS functions are present in Role Scoper JS; TODO: review this for future version changes as necessary // TODO: replace some of this JS with equivalent JQuery if ( ! defined('SCOPER_VERSION') ) - wp_enqueue_script( 'rvy', RVY_URLPATH . "/admin/revisionary.js", array('jquery'), RVY_VERSION, true ); + wp_enqueue_script( 'rvy', RVY_URLPATH . "/admin/revisionary.js", array('jquery'), PUBLISHPRESS_REVISIONS_VERSION, true ); } function moderation_queue() { @@ -736,7 +736,7 @@ function build_menu() { add_action('revisionary_page_revisionary-settings', 'rvy_omit_site_options' ); } - if (!defined('REVISIONARY_PRO_VERSION')) { + if (!defined('PUBLISHPRESS_REVISIONS_PRO_VERSION')) { add_submenu_page( 'revisionary-q', __('Upgrade to Pro', 'revisionary'), @@ -862,7 +862,7 @@ function flt_get_post_time( $time, $format, $gmt ) { } function publishpressFooter() { - if (defined('REVISIONARY_PRO_VERSION') && !rvy_get_option('display_pp_branding')) { + if (defined('PUBLISHPRESS_REVISIONS_PRO_VERSION') && !rvy_get_option('display_pp_branding')) { return; } diff --git a/admin/history_rvy.php b/admin/history_rvy.php index 0260c17c..8de6b4ac 100644 --- a/admin/history_rvy.php +++ b/admin/history_rvy.php @@ -707,7 +707,7 @@ public function getRevisionUIDiff($post, $compare_from, $compare_to) { $meta_fields['_wp_attachment_metadata'] = __('Attachment Meta', 'revisionary'); */ - if (defined('REVISIONARY_PRO_VERSION') && defined('FL_BUILDER_VERSION') && defined('REVISIONARY_BEAVER_BUILDER_DIFF')) { // todo: move to filter + if (defined('PUBLISHPRESS_REVISIONS_PRO_VERSION') && defined('FL_BUILDER_VERSION') && defined('REVISIONARY_BEAVER_BUILDER_DIFF')) { // todo: move to filter $meta_fields['_fl_builder_data'] = __('Beaver Builder Data', 'revisionary'); $meta_fields['_fl_builder_data_settings'] = __('Beaver Builder Settings', 'revisionary'); } diff --git a/admin/options.php b/admin/options.php index a7184453..2b88eda7 100644 --- a/admin/options.php +++ b/admin/options.php @@ -304,7 +304,7 @@ function options_ui( $sitewide = false, $customize_defaults = false ) { display($sitewide, $customize_defaults); @@ -479,7 +479,7 @@ function options_ui( $sitewide = false, $customize_defaults = false ) { PublishPress Revisions Pro.', 'revisionary'), 'https://publishpress.com/revisionary/' diff --git a/classes/PublishPress/Revisionary.php b/classes/PublishPress/Revisionary.php index f5566e2a..36d7c851 100644 --- a/classes/PublishPress/Revisionary.php +++ b/classes/PublishPress/Revisionary.php @@ -21,13 +21,13 @@ private function __construct() private function load($args = []) { - if (defined('REVISIONARY_PRO_VERSION')) { + if (defined('PUBLISHPRESS_REVISIONS_PRO_VERSION')) { add_action('admin_init', [$this, 'load_updater']); } } public function load_updater() { - if (defined('REVISIONARY_PRO_VERSION')) { + if (defined('PUBLISHPRESS_REVISIONS_PRO_VERSION')) { require_once(RVY_ABSPATH . '/includes-pro/library/Factory.php'); $container = \PublishPress\Revisions\Factory::get_container(); @@ -37,7 +37,7 @@ public function load_updater() { public function keyStatus($refresh = false) { - if (defined('REVISIONARY_PRO_VERSION')) { + if (defined('PUBLISHPRESS_REVISIONS_PRO_VERSION')) { require_once(RVY_ABSPATH . '/includes-pro/pro-key.php'); return _revisionary_key_status($refresh); } diff --git a/revisionary.php b/revisionary.php index 216d6d74..51dddc22 100644 --- a/revisionary.php +++ b/revisionary.php @@ -105,7 +105,7 @@ function($links, $file) require_once(dirname(__FILE__).'/rvy_init.php'); revisionary_refresh_revision_flags(); - // mirror to REVISIONARY_VERSION + // mirror to PUBLISHPRESS_REVISIONS_VERSION update_option('revisionary_last_version', $current_version); } @@ -187,10 +187,10 @@ function() return; } - define('REVISIONARY_VERSION', '2.6.1'); + define('PUBLISHPRESS_REVISIONS_VERSION', '2.6.1'); if ( ! defined( 'RVY_VERSION' ) ) { - define( 'RVY_VERSION', REVISIONARY_VERSION ); // back compat + define( 'RVY_VERSION', PUBLISHPRESS_REVISIONS_VERSION ); // back compat } define ('COLS_ALL_RVY', 0); @@ -229,7 +229,7 @@ function() define('RVY_ABSPATH', __DIR__); - if (is_admin() && !defined('REVISIONARY_PRO_VERSION')) { + if (is_admin() && !defined('PUBLISHPRESS_REVISIONS_PRO_VERSION')) { require_once(__DIR__ . '/includes/CoreAdmin.php'); new \PublishPress\Revisions\CoreAdmin(); } diff --git a/rvy_init.php b/rvy_init.php index cd01c16a..34d432f5 100644 --- a/rvy_init.php +++ b/rvy_init.php @@ -922,9 +922,9 @@ function rvy_mail( $address, $title, $message, $args ) { } function rvy_settings_scripts() { - if (defined('REVISIONARY_PRO_VERSION')) { + if (defined('PUBLISHPRESS_REVISIONS_PRO_VERSION')) { $suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '.dev' : ''; - wp_enqueue_script('revisionary-pro-settings', plugins_url('', REVISIONARY_FILE) . "/includes-pro/settings-pro{$suffix}.js", ['jquery', 'jquery-form'], REVISIONARY_VERSION, true); + wp_enqueue_script('revisionary-pro-settings', plugins_url('', REVISIONARY_FILE) . "/includes-pro/settings-pro{$suffix}.js", ['jquery', 'jquery-form'], PUBLISHPRESS_REVISIONS_VERSION, true); } } From 5111be93e6d684f5e433e49e0c21523174a97daf Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Mon, 20 Sep 2021 21:29:40 -0400 Subject: [PATCH 006/193] Additional instance of post_mime_type revision status check --- front_rvy.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/front_rvy.php b/front_rvy.php index b59573bc..474e5caf 100644 --- a/front_rvy.php +++ b/front_rvy.php @@ -234,8 +234,8 @@ function act_template_redirect() { if ( in_array( $post->post_status, array( 'pending-revision' ) ) ) { $publish_url = wp_nonce_url( admin_url("admin.php?page=rvy-revisions&revision=$revision_id&action=approve$redirect_arg"), "approve-post_$published_post_id|$revision_id" ); - } elseif ( in_array( $post->post_status, array( 'future-revision' ) ) ) { $publish_url = wp_nonce_url( admin_url("admin.php?page=rvy-revisions&revision=$revision_id&action=publish$redirect_arg"), "publish-post_$published_post_id|$revision_id" ); + } elseif ( in_array( $post->post_mime_type, array( 'future-revision' ) ) ) { } elseif ( in_array( $post->post_status, array( 'inherit' ) ) ) { $publish_url = wp_nonce_url( admin_url("admin.php?page=rvy-revisions&revision=$revision_id&action=restore$redirect_arg"), "restore-post_$published_post_id|$revision_id" ); From 05ac6eb9184d76d6acbec0e396d612a29d580f40 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Mon, 20 Sep 2021 21:31:43 -0400 Subject: [PATCH 007/193] Additional post_mime_type revision status check --- front_rvy.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/front_rvy.php b/front_rvy.php index 474e5caf..1bf5564b 100644 --- a/front_rvy.php +++ b/front_rvy.php @@ -257,7 +257,7 @@ function act_template_redirect() { } } } else { - switch ( $post->post_status ) { + switch ( $post->post_mime_type ) { case 'pending-revision' : $approve_caption = __( 'Approve', 'revisionary' ); From e4ba355507155870fbb8f0b4b3270fc8b81c9334 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Mon, 20 Sep 2021 21:37:21 -0400 Subject: [PATCH 008/193] Wrapper function rvy_admin_url() adds a cache buster argument --- admin/class-list-table_rvy.php | 6 +++--- admin/history_rvy.php | 6 +++--- admin/revision-action_rvy.php | 4 ++-- admin/revisions.php | 2 +- front_rvy.php | 12 ++++++------ functions.php | 9 +++++++++ revision-workflow_rvy.php | 4 ++-- rvy_init.php | 2 +- 8 files changed, 27 insertions(+), 18 deletions(-) diff --git a/admin/class-list-table_rvy.php b/admin/class-list-table_rvy.php index f21bd428..3ead7a6f 100644 --- a/admin/class-list-table_rvy.php +++ b/admin/class-list-table_rvy.php @@ -388,7 +388,7 @@ function rvy_pending_custom_col( $column_name, $post_id ) { if ( ! $post = get_post( $post_id ) ) return; - $request_url = add_query_arg($_REQUEST, admin_url('admin.php?page=revisionary-q')); + $request_url = add_query_arg($_REQUEST,rvy_admin_url('admin.php?page=revisionary-q')); switch ($column_name) { case 'post_type': @@ -526,7 +526,7 @@ protected function handle_published_row_actions( $post, $column_name ) { ); } - $request_url = add_query_arg($_REQUEST, admin_url('admin.php?page=revisionary-q')); + $request_url = add_query_arg($_REQUEST, rvy_admin_url('admin.php?page=revisionary-q')); $actions['list_filter'] = sprintf( '%3$s', @@ -1105,7 +1105,7 @@ public function column_author( $post ) { //if (defined('PUBLISHPRESS_MULTIPLE_AUTHORS_VERSION')) { // do_action("manage_{$post->post_type}_posts_custom_column", 'authors', $post->ID); //} else { - $request_url = add_query_arg($_REQUEST, admin_url('admin.php?page=revisionary-q')); + $request_url = add_query_arg($_REQUEST, rvy_admin_url('admin.php?page=revisionary-q')); $args = ['author' => get_the_author_meta( 'ID' )]; echo $this->apply_edit_link( add_query_arg('author', $args['author'], $request_url), get_the_author() ); diff --git a/admin/history_rvy.php b/admin/history_rvy.php index 8de6b4ac..df41498b 100644 --- a/admin/history_rvy.php +++ b/admin/history_rvy.php @@ -937,7 +937,7 @@ private function prepare_revisions_for_js( $post, $selected_revision_id, $from = } if (agp_user_can('edit_post', $revision->ID)) { - $edit_url = admin_url("post.php?action=edit&post=$revision->ID"); + $edit_url = rvy_admin_url("post.php?action=edit&post=$revision->ID"); } } } @@ -1073,7 +1073,7 @@ private function prepare_revisions_for_js( $post, $selected_revision_id, $from = 'to' => $selected_revision_id, 'from' => $from, 'diffData' => $diffs, - 'baseUrl' => parse_url( admin_url( 'revision.php' ), PHP_URL_PATH ), + 'baseUrl' => parse_url( rvy_admin_url( 'revision.php' ), PHP_URL_PATH ), 'compareTwoMode' => absint( $compare_two_mode ), // Apparently booleans are not allowed 'revisionIds' => array_keys( $revisions ), ]; @@ -1210,7 +1210,7 @@ function actPastRevisionDiffScripts() { ? __('Manage', 'revisionary') : __('List', 'revisionary'); - $manage_url = admin_url("admin.php?page=rvy-revisions&revision=$post_id&action=view"); + $manage_url = rvy_admin_url("admin.php?page=rvy-revisions&revision=$post_id&action=view"); ?> - '."\n"; - - global $pagenow, $revisionary; - - if ( in_array( $pagenow, array( 'post.php', 'post-new.php' ) ) && ! defined('RVY_PREVENT_PUBHIST_CAPTION') && ! $revisionary->isBlockEditorActive() ) { - wp_enqueue_script( 'rvy_post', RVY_URLPATH . "/admin/post-edit.js", array('jquery'), RVY_VERSION, true ); - - $args = array( - 'nowCaption' => __( 'Current Time', 'revisionary' ), - /*'pubHistoryCaption' => __( 'Publication History:', 'revisionary' ) */ - ); - wp_localize_script( 'rvy_post', 'rvyPostEdit', $args ); - } - if( false !== strpos( urldecode($_SERVER['REQUEST_URI']), 'admin.php?page=rvy-revisions' ) ) { - - // add Ajax goodies we need for fancy publish date editing in Revisions Manager and role duration/content date limit editing Bulk Role Admin - ?> - - ID); - - if ( !rvy_is_revision_status($revision->post_status) || $post = get_post($published_id) ) { - require_once( dirname(__FILE__).'/revision-ui_rvy.php' ); - } - } - } - + // legacy revision management UI for past revisions require_once( dirname(__FILE__).'/revision-ui_rvy.php' ); } - // all required JS functions are present in Role Scoper JS; TODO: review this for future version changes as necessary - // TODO: replace some of this JS with equivalent JQuery - if ( ! defined('SCOPER_VERSION') ) + if ( ! defined('SCOPER_VERSION') ) { + // old js for notification recipient selection UI wp_enqueue_script( 'rvy', RVY_URLPATH . "/admin/revisionary.js", array('jquery'), PUBLISHPRESS_REVISIONS_VERSION, true ); + } + } + + function actDashboardGlanceItems($items) { + require_once(dirname(__FILE__).'/admin-dashboard_rvy.php'); + RevisionaryDashboard::glancePending(); } function moderation_queue() { @@ -572,120 +193,57 @@ function build_menu() { } } - function act_hide_quickedit() { - if ( empty( $this->hide_quickedit ) ) - return; - - $post_type = awp_post_type_from_uri(); - $type_obj = get_post_type_object($post_type); - ?> - - post_type, 'author'); + remove_post_type_support($post->post_type, 'custom-fields'); // todo: filter post_id in query } - function act_hide_admin_divs() { - - // Hide unrevisionable elements if editing for revisions, regardless of Limited Editing Element settings - // - // TODO: allow revisioning of slug, menu order, comment status, ping status ? - // TODO: leave Revisions metabox for links to user's own pending revisions - if ( rvy_get_option( 'pending_revisions' ) ) { - global $post; - if ( ! empty($post->post_type) ) - $object_type = $post->post_type; - else - $object_type = awp_post_type_from_uri(); - - $object_id = rvy_detect_post_id(); - - if ( $object_id ) { - if (!empty($post) && (rvy_is_revision_status($post->post_status) || !agp_user_can('edit_post', $object_id, '', ['skip_revision_allowance' => true]))) { - //if ( 'page' == $object_type ) - //$unrevisable_css_ids = array( 'pageauthordiv', 'pagecustomdiv', 'pageslugdiv', 'pagecommentstatusdiv' ); - //else - //$unrevisable_css_ids = array_merge( $unrevisable_css_ids, array( 'categorydiv', 'authordiv', 'postcustom', 'customdiv', 'slugdiv', 'commentstatusdiv', 'password-span', 'trackbacksdiv', 'tagsdiv-post_tag', 'visibility', 'edit-slug-box', 'postimagediv', 'ef_editorial_meta' ) ); - - $unrevisable_css_ids = array( 'authordiv', 'visibility', 'postcustom', 'pagecustom' ); // todo: filter custom fields queries for revision_id - - //foreach( get_taxonomies( array(), 'object' ) as $taxonomy => $tx_obj ) - // $unrevisable_css_ids []= ( $tx_obj->hierarchical ) ? "{$taxonomy}div" : "tagsdiv-$taxonomy"; - - $unrevisable_css_ids = apply_filters( 'rvy_hidden_meta_boxes', $unrevisable_css_ids ); - - if (rvy_is_revision_status($post->post_status)) { - $unrevisable_css_ids = array_merge($unrevisable_css_ids, ['publish', 'slugdiv', 'edit-slug-box']); - } + function flt_dashboard_recent_posts_query_args($query_args) { + if ('future' == $query_args['post_status']) { + require_once(dirname(__FILE__).'/admin-dashboard_rvy.php'); + $rvy_dash = new RevisionaryDashboard(); + $query_args = $rvy_dash->recentPostsQueryArgs($query_args); + } - echo( "\n\n"; - - // display the current status, but hide edit link - echo "\n\n"; // this line adapted from Clutter Free plugin by Mark Jaquith - } - } - } + return $query_args; + } + + // adds a Settings link next to Deactivate, Edit in Plugins listing + function flt_plugin_action_links($links, $file) { + if ($file == plugin_basename(REVISIONARY_FILE)) { + $page = ( defined('RVY_NETWORK') && RVY_NETWORK ) ? 'rvy-net_options' : 'revisionary-settings'; + $links[] = "" . __awp('Settings') . ""; + } + + return $links; } - function flt_delete_post_link( $link, $post_id ) { - if ( strpos( $link, 'revision.php' ) ) { - if ( $post_id ) { - $link = "admin.php?page=rvy-revisions&action=delete&&return=1&revision=". $post_id; - - $link = "javascript:if(confirm('". __('Delete'). "?')) window.location='". wp_nonce_url( $link, 'delete-revision_' . $post_id ). "'"; - } - } - - return $link; - } + public function fltPublishPressCapsSection($section_caps) { + $section_caps['PublishPress Revisions'] = ['edit_others_drafts', 'edit_others_revisions', 'list_others_revisions']; + return $section_caps; + } - function flt_post_title ( $title, $id = '' ) { - if ( $id ) - if ( $post = get_post( $id ) ) { - if (rvy_is_revision_status($post->post_status)) { - $title = sprintf( __( '%s (revision)', 'revisionary' ), $title ); + public function fltDisableStatusControlScripts($enable_scripts) { + if ($post_id = rvy_detect_post_id()) { + if ($post = get_post($post_id)) { + if (!empty($post) && rvy_in_revision_workflow($post)) { + $enable_scripts = false; } } - - return $title; - } - - // only added for edit.php and edit-pages.php - function flt_get_post_time( $time, $format, $gmt ) { - if ( function_exists('get_the_ID') && $post_id = get_the_ID() ) { - if ( $post = get_post( $post_id ) ) { - if ( 'pending-revision' == $post->post_status ) { - if ( $gmt ) - $time = mysql2date($format, $post->post_modified_gmt, $gmt); - else - $time = mysql2date($format, $post->post_modified, $gmt); - } - } } - return $time; + return $enable_scripts; } - function publishpressFooter() { + // Prevent PublishPress Revisions statuses from confusing the CMS Tree Page View plugin page listing + public function cmstpv_compat_get_posts($wp_query) { + $wp_query->query['post_mime_type'] = ''; + $wp_query->query_vars['post_mime_type'] = ''; + } + + public function publishpressFooter() { if (defined('PUBLISHPRESS_REVISIONS_PRO_VERSION') && !rvy_get_option('display_pp_branding')) { return; } @@ -730,31 +288,4 @@ function publishpressFooter() { 'revisionary-settings', - ] as $old_slug => $new_slug) { - if ( - strpos($_SERVER['REQUEST_URI'], "page=$old_slug") - && (false !== strpos($_SERVER['REQUEST_URI'], 'admin.php')) - ) { - global $submenu; - - // Don't redirect if pp-settings is registered by another plugin or theme - foreach (array_keys($submenu) as $i) { - foreach (array_keys($submenu[$i]) as $j) { - if (isset($submenu[$i][$j][2]) && ($old_slug == $submenu[$i][$j][2])) { - return; - } - } - } - - $arr_url = parse_url($_SERVER['REQUEST_URI']); - wp_redirect(admin_url('admin.php?' . str_replace("page=$old_slug", "page=$new_slug", $arr_url['query']))); - exit; - } - } - } } // end class RevisionaryAdmin diff --git a/admin/edit-revision-block-ui_rvy.php b/admin/edit-revision-block-ui_rvy.php new file mode 100644 index 00000000..ff1b1b5b --- /dev/null +++ b/admin/edit-revision-block-ui_rvy.php @@ -0,0 +1,28 @@ + + + + + + post_mime_type):?> + + + + post_type); + + $view_link = rvy_preview_url($post); + + $can_publish = current_user_can('edit_post', rvy_post_id($post->ID)); + + if ($type_obj && empty($type_obj->public)) { + $view_link = ''; + $view_caption = ''; + $view_title = ''; + } elseif ($can_publish) { + $view_caption = ('future-revision' == $post->post_mime_type) ? __('View / Publish', 'revisionary') : __('View / Approve', 'revisionary'); + $view_title = __('View / moderate saved revision', 'revisionary'); + } else { + $view_caption = __('View'); + $view_title = __('View saved revision', 'revisionary'); + } + + $preview_caption = __('View'); + $preview_title = __('View unsaved changes', 'revisionary'); + ?> + + + post_type)) ? $post->post_type : awp_post_type_from_uri(); + + $unrevisable_css_ids = apply_filters('rvy_hidden_meta_boxes', ['authordiv', 'visibility', 'postcustom', 'pagecustom']); + + if (rvy_in_revision_workflow($post)) { + $unrevisable_css_ids = array_merge($unrevisable_css_ids, ['publish', 'slugdiv', 'edit-slug-box']); + } + + echo( "\n\n"; + + // display the current status, but hide edit link + echo "\n\n"; // this line adapted from Clutter Free plugin by Mark Jaquith + } + } + + public function fltEditorUIstatus($status, $post, $args) { + if (rvy_in_revision_workflow($post)) { + $status = $post->post_mime_type; + } + + return $status; + } + + public function fltImmediateCaption($caption, $post) { + if (rvy_in_revision_workflow($post)) { + $caption = __('Publish on approval', 'revisionary'); + } + + return $caption; + } + + public function post_submit_meta_box($post, $args = []) + { + if (rvy_is_revision_status($post->post_mime_type)) { + require_once(dirname(__FILE__) . '/RevisionEditSubmitMetabox.php'); + RvyRevisionEditSubmitMetabox::post_submit_meta_box($post, $args); + } + } + + public function act_replace_publish_metabox($post_type, $post) + { + global $wp_meta_boxes; + + if ('attachment' != $post_type) { + if (!empty($wp_meta_boxes[$post_type]['side']['core']['submitdiv'])) { + $wp_meta_boxes[$post_type]['side']['core']['submitdiv']['callback'] = [$this, 'post_submit_meta_box']; + } + } + } + + public function actSubmitMetaboxActions() { + global $post; + + $compare_link = rvy_admin_url("revision.php?revision=$post->ID"); + $compare_button = _x('Compare', 'revisions', 'revisionary'); + $compare_title = __('Compare this revision to published copy, or to other revisions', 'revisionary'); + ?> + + + ", ''); + } else { + $preview_msg = __('Revision updated.', 'revisionary'); + } + + $messages['post'][1] = $preview_msg; + $messages['page'][1] = $preview_msg; + $messages[$post->post_type][1] = $preview_msg; + + return $messages; + } +} diff --git a/admin/edit-revision-ui_rvy.php b/admin/edit-revision-ui_rvy.php index 19b1bc68..b70050ac 100644 --- a/admin/edit-revision-ui_rvy.php +++ b/admin/edit-revision-ui_rvy.php @@ -2,32 +2,113 @@ if( basename(__FILE__) == basename($_SERVER['SCRIPT_FILENAME']) ) die(); +/* + * Revision Edit: UI modifications for Classic Editor + */ class RevisionaryEditRevisionUI { function __construct () { - $this->add_js(); + add_action('admin_head', [$this, 'add_js']); + //add_action('admin_head', [$this, 'add_meta_boxes']); + //add_action('admin_head', [$this, 'act_tweak_metaboxes'], 11); } - + function add_js() { + wp_enqueue_style('rvy-revision-edit', RVY_URLPATH . '/admin/rvy-revision-edit.css', [], PUBLISHPRESS_REVISIONS_VERSION); + + if (!rvy_get_option('scheduled_revisions')) { + ?> + + + + - - $priorities ) { + foreach ( $priorities as $priority => $boxes ) { + foreach ( array_keys($boxes) as $box_id ) { + // Remove Revision Notification List metabox if this user is NOT submitting a pending revision + if ( 'pending_revision_notify' == $box_id ) { + if (!$object_id || !rvy_get_option('pending_rev_notify_admin') || current_user_can('edit_post', $object_id)) { + unset( $wp_meta_boxes[$object_type][$context][$priority][$box_id] ); + } + } + } + } + } } + */ } diff --git a/admin/filters-admin-ui-item_rvy.php b/admin/filters-admin-ui-item_rvy.php index 20e3f0ae..45b3adb2 100644 --- a/admin/filters-admin-ui-item_rvy.php +++ b/admin/filters-admin-ui-item_rvy.php @@ -2,159 +2,19 @@ if( basename(__FILE__) == basename($_SERVER['SCRIPT_FILENAME']) ) die(); -class RevisionaryAdminFiltersItemUI { +/* + * Post Edit UI: main post (not revision) editor filters which apply for both Gutenberg and Classic Editor + */ +class RevisionaryPostEditorMetaboxes { private $pending_revisions = array(); private $future_revisions = array(); - // note: in current implementations, this must be instatiated on admin_head action function __construct () { - $this->add_js(); - $this->add_meta_boxes(); - $this->act_tweak_metaboxes(); - } - - function add_js() { - global $post, $revisionary; - - if ( ! $revisionary->isBlockEditorActive() ) { - if ( ! empty($post->post_type) ) - $object_type = $post->post_type; - else - $object_type = awp_post_type_from_uri(); - - $object_id = rvy_detect_post_id(); - - if (!$object_id || agp_user_can('edit_post', $object_id, '', ['skip_revision_allowance' => true])) { - // for logged user who can fully edit a published post, clarify the meaning of setting future publish date - - // @todo: pass post id value, admin URL into JS to support ajax call - ?> - - - -isBlockEditorActive() ) :?> - - + add_action('admin_head', [$this, 'actAdminBarPreventPostClobber'], 5); + add_action('admin_head', [$this, 'add_meta_boxes']); + add_action('admin_head', [$this, 'act_tweak_metaboxes'], 11); - - - post_type); - - // Use simpler criteria due to early execution of revisions.php access check in revisionary_main.php - $can_publish = $type_obj && ( - isset($type_obj->cap->edit_published_posts) - && !empty($current_user->allcaps[$type_obj->cap->edit_published_posts]) - && (($current_user->ID == $parent_post->ID) || !empty($current_user->allcaps[$type_obj->cap->edit_published_posts])) - ); - */ - - if (!$revisionary->canEditPost($post, ['simple_cap_check' => true]) && defined('RVY_REVISOR_SUPPRESS_REVISIONS_LINK')):?> - - -$property_name ) ) { + echo $this->$property_name; + + } elseif ( ! empty( $_GET['post'] ) ) { + $args = array( 'format' => 'list', 'parent' => false ); + rvy_list_post_revisions( (int) $_GET['post'], $status, $args ); + } + } + + function rvy_metabox_revisions_pending() { + self::rvy_metabox_revisions( 'pending-revision' ); + } + + function rvy_metabox_revisions_future() { + self::rvy_metabox_revisions( 'future-revision' ); + } function act_tweak_metaboxes() { static $been_here; @@ -193,8 +65,6 @@ function act_tweak_metaboxes() { if ( empty($wp_meta_boxes) ) return; - $src_name = 'post'; - $object_type = awp_post_type_from_uri(); if ( empty($wp_meta_boxes[$object_type]) ) @@ -215,16 +85,34 @@ function act_tweak_metaboxes() { } elseif ( 'future_revisions' == $box_id ) { if ( ! $object_id || ! $this->future_revisions = rvy_list_post_revisions( $object_id, 'future-revision', array( 'format' => 'list', 'parent' => false, 'echo' => false ) ) ) unset( $wp_meta_boxes[$object_type][$context][$priority][$box_id] ); - - // Remove Revision Notification List metabox if this user is NOT submitting a pending revision - } elseif ( 'pending_revision_notify' == $box_id ) { - if (!$object_id || !rvy_get_option('pending_rev_notify_admin') || agp_user_can('edit_post', $object_id, '', ['skip_revision_allowance' => true])) { - unset( $wp_meta_boxes[$object_type][$context][$priority][$box_id] ); - } } } } } } + public function fltDisableExceptionUI($disable, $src_name, $post_id, $post_type = '') { + if (!$post_id) { + // Permissions version < 3.1.4 always passes zero value $post_id + $post_id = rvy_detect_post_id(); + } + + if ($post_id && rvy_in_revision_workflow($post_id)) { + return true; + } + + return $disable; + } + + function actAdminBarPreventPostClobber() { + global $post; + + // prevent PHP Notice from Multiple Authors code: + // Notice: Trying to get property of non-object in F:\www\wp50\wp-content\plugins\publishpress-multiple-authors\core\Classes\Utils.php on line 309 + // @todo: address within MA + if (defined('PUBLISHPRESS_MULTIPLE_AUTHORS_VERSION') && !empty($_REQUEST['post'])) { + $post = get_post((int) $_REQUEST['post']); + } + } + } // end class diff --git a/admin/post-edit-block-ui_rvy.php b/admin/post-edit-block-ui_rvy.php index 9daf30c0..337d74c1 100644 --- a/admin/post-edit-block-ui_rvy.php +++ b/admin/post-edit-block-ui_rvy.php @@ -36,206 +36,44 @@ public static function disablePublishPressStatusesScripts() { } public static function act_object_guten_scripts() { - global $current_user, $revisionary, $pagenow; + global $current_user, $revisionary, $pagenow, $post, $wp_version; if ('post-new.php' == $pagenow) { return; } - if ( ! $post_id = rvy_detect_post_id() ) { + if (empty($post)) { return; } - $post_type = rvy_detect_post_type(); - - if ( ! $type_obj = get_post_type_object( $post_type ) ) { + if (!$type_obj = get_post_type_object($post->post_type)) { return; } - if (empty($revisionary->enabled_post_types[$post_type]) || !$revisionary->config_loaded) { + if (empty($revisionary->enabled_post_types[$post->post_type]) || !$revisionary->config_loaded) { return; } $suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '.dev' : ''; - global $post; - $do_pending_revisions = rvy_get_option('pending_revisions'); $do_scheduled_revisions = rvy_get_option('scheduled_revisions'); if (('revision' == $post->post_type) || rvy_in_revision_workflow($post)) { - wp_enqueue_script( 'rvy_object_edit', RVY_URLPATH . "/admin/rvy_revision-block-edit{$suffix}.js", array('jquery', 'jquery-form'), RVY_VERSION, true ); - - if (rvy_get_option('revision_preview_links') || current_user_can('administrator') || is_super_admin()) { - $view_link = rvy_preview_url($post); - $can_publish = agp_user_can('edit_post', rvy_post_id($post->ID), '', ['skip_revision_allowance' => true]); - - if ($type_obj && empty($type_obj->public)) { - $view_link = ''; - $view_caption = ''; - $view_title = ''; - } elseif ($can_publish) { - $view_caption = ('future-revision' == $post->post_status) ? __('View / Publish', 'revisionary') : __('View / Approve', 'revisionary'); - $view_title = __('View / moderate saved revision', 'revisionary'); - } else { - $view_caption = __('View'); - $view_title = __('View saved revision', 'revisionary'); - } - } else { - $view_link = ''; - $view_caption = ''; - $view_title = ''; - } - - $preview_title = __('View unsaved changes', 'revisionary'); - - $_revisions = wp_get_post_revisions($post_id); - if ($_revisions && count($_revisions) > 1) { - $revisions_caption = sprintf(_n(' %s Revision Edit', ' %s Revision Edits', count($_revisions), 'revisionary'), count($_revisions)); - } else { - $revisions_caption = ''; - } - - $redirect_arg = ( ! empty($_REQUEST['rvy_redirect']) ) ? "&rvy_redirect=" . esc_url($_REQUEST['rvy_redirect']) : ''; - $published_post_id = rvy_post_id($post->ID); + wp_enqueue_script( 'rvy_object_edit', RVY_URLPATH . "/admin/rvy_revision-block-edit{$suffix}.js", array('jquery', 'jquery-form'), PUBLISHPRESS_REVISIONS_VERSION, true ); - if ($can_publish) { - if (in_array($post->post_status, ['pending-revision'])) { - $approval_url = wp_nonce_url( admin_url("admin.php?page=rvy-revisions&revision={$post->ID}&action=approve$redirect_arg"), "approve-post_$published_post_id|{$post->ID}" ); - - } elseif (in_array($post->post_status, ['future-revision'])) { - $approval_url = wp_nonce_url( admin_url("admin.php?page=rvy-revisions&revision={$post->ID}&action=publish$redirect_arg"), "publish-post_$published_post_id|{$post->ID}" ); - } - - $deletion_url = get_delete_post_link($post->ID, '', false); - } - - global $wp_version; - - $args = array( - 'redirectURLupdate' => admin_url("admin.php?page=revisionary-q&post_type={$post_type}&revision_updated={$post->post_status}&post_id={$post_id}"), - 'saveRevision' => __('Update Revision'), - 'viewURL' => $view_link, - 'viewCaption' => $view_caption, - 'viewTitle' => $view_title, - 'previewTitle' => $preview_title, - 'revisionEdits' => $revisions_caption, - 'approvalCaption' => $can_publish ? __('Approve Revision', 'revisionary') : '', - 'approvalURL' => $can_publish ? $approval_url : '', - 'deletionURL' => $can_publish ? $deletion_url : '', - 'approvalTitle' => esc_attr(__('Approve saved changes', 'revisionary')), - 'scheduledRevisionsEnabled' => $do_scheduled_revisions, - 'multiPreviewActive' => version_compare($wp_version, '5.5-beta', '>=') - ); - - if (defined('REVISIONARY_DISABLE_SUBMISSION_REDIRECT') || !rvy_get_option('revision_update_redirect') || !apply_filters('revisionary_do_update_redirect', true, $post)) { - unset($args['redirectURLupdate']); - } + $args = \PublishPress\Revisions\PostEditorWorkflowUI::revisionLinkParams(compact('post', 'do_pending_revisions', 'do_scheduled_revisions')); } elseif (current_user_can('edit_post', $post->ID)) { - wp_enqueue_script( 'rvy_object_edit', RVY_URLPATH . "/admin/rvy_post-block-edit{$suffix}.js", array('jquery', 'jquery-form'), RVY_VERSION, true ); - - $args = array(); - - if (!isset($preview_url)) { - $preview_url = ''; - } - - $published_statuses = array_merge(get_post_stati(['public' => true]), get_post_stati(['private' => true])); - $revisable_statuses = rvy_filtered_statuses('names'); + $status_obj = get_post_status_object($post->post_status); - if ($default_pending = apply_filters('revisionary_default_pending_revision', false, $post)) { - add_action('shutdown', function() { - global $current_user, $post; - rvy_update_post_meta($post->ID, "_save_as_revision_{$current_user->ID}", true); - }); + if (empty($status_obj->public) && empty($status_obj->private) && !rvy_get_option('pending_revision_unpublished')) { + return; } - $future_status = 'future-revision'; - $pending_status = 'pending-revision'; - $args = array( - 'redirectURLscheduled' => admin_url("edit.php?post_type={$post_type}&revision_submitted={$future_status}&post_id={$post_id}"), - 'redirectURLpending' => admin_url("edit.php?post_type={$post_type}&revision_submitted={$pending_status}&post_id={$post_id}"), - 'userID' => $current_user->ID, - 'ScheduleCaption' => ($do_scheduled_revisions) ? __('Schedule Revision', 'revisionary') : '', - 'UpdateCaption' => __('Update'), - 'publishedStatuses' => $published_statuses, - 'revisableStatuses' => $revisable_statuses, - 'revision' => ($do_pending_revisions) ? apply_filters('revisionary_pending_checkbox_caption', __('Pending Revision', 'revisionary'), $post) : '', - 'revisionTitle' => esc_attr(__('Do not publish current changes yet, but save to Revision Queue', 'revisionary')), - 'defaultPending' => $default_pending, - 'revisionTitleFuture' => esc_attr(__('Do not schedule current changes yet, but save to Revision Queue', 'revisionary')), - 'ajaxurl' => admin_url(''), - 'SaveCaption' => ($do_pending_revisions) ? __('Save Revision', 'revisionary') : '', - 'previewURL' => $preview_url, - ); - - if (defined('REVISIONARY_DISABLE_SUBMISSION_REDIRECT') || !apply_filters('revisionary_do_submission_redirect', true)) { - unset($args['redirectURLpending']); - } + wp_enqueue_script( 'rvy_object_edit', RVY_URLPATH . "/admin/rvy_post-block-edit{$suffix}.js", array('jquery', 'jquery-form'), PUBLISHPRESS_REVISIONS_VERSION, true ); - if (defined('REVISIONARY_DISABLE_SCHEDULE_REDIRECT') || !apply_filters('revisionary_do_schedule_redirect', true)) { - unset($args['redirectURLscheduled']); - } - - if ($do_pending_revisions && $_revisions = rvy_get_post_revisions($post_id, 'pending-revision', ['orderby' => 'ID', 'order' => 'ASC'])) { - $status_obj = get_post_status_object('pending-revision'); - $args['pendingRevisionsCaption'] = sprintf(_n(' %s Pending Revision', ' %s Pending Revisions', count($_revisions), 'revisionary'), count($_revisions)); - - //$last_revision = array_pop($_revisions); - //$args['pendingRevisionsURL'] = admin_url("revision.php?revision=$last_revision->ID"); // @todo: fix i8n - $args['pendingRevisionsURL'] = admin_url("revision.php?post_id=$post_id&revision=pending-revision"); // @todo: fix i8n - } else { - $args['pendingRevisionsURL'] = ''; - } - - if ($do_scheduled_revisions && $_revisions = rvy_get_post_revisions($post_id, 'future-revision', ['orderby' => 'ID', 'order' => 'ASC'])) { - $status_obj = get_post_status_object('future-revision'); - $args['scheduledRevisionsCaption'] = sprintf(_n(' %s Scheduled Revision', ' %s Scheduled Revisions', count($_revisions), 'revisionary'), count($_revisions)); - - //$last_revision = array_pop($_revisions); - //$args['scheduledRevisionsURL'] = admin_url("revision.php?revision=$last_revision->ID"); - $args['scheduledRevisionsURL'] = admin_url("revision.php?post_id=$post_id&revision=future-revision"); - } else { - $args['scheduledRevisionsURL'] = ''; - } - - // clear scheduled revision redirect flag - delete_post_meta( $post_id, "_new_scheduled_revision_{$current_user->ID}" ); - delete_post_meta( $post_id, "_save_as_revision_{$current_user->ID}" ); - update_postmeta_cache($post_id); - - } elseif($do_pending_revisions) { - //div.editor-post-publish-panel button.editor-post-publish-button - wp_enqueue_script( 'rvy_object_edit', RVY_URLPATH . "/admin/rvy_post-block-edit-revisor{$suffix}.js", array('jquery', 'jquery-form'), RVY_VERSION, true ); - - $userRevision = (defined('REVISIONARY_GUTEN_NOTICE')) ? revisionary()->getUserRevision($post_id, ['force_query' => true]) : false; - - if ($userRevision) { - $editRevisionURL = (defined('REVISIONARY_GUTEN_NOTICE_LINK_WORKAROUND')) ? admin_url('post.php') . "?post=$userRevision&action=edit" : ''; - $punc = $editRevisionURL ? ':' : '.'; - $revisionExistsCaption = sprintf( __("You've already submitted a revision%s", 'revisionary'), $punc); - $editRevisionCaption = __('Edit the Revision', 'revisionary'); - } else { - $editRevisionURL = $revisionExistsCaption = $editRevisionCaption = ''; - } - - $status = 'pending-revision'; - $args = array( - 'publish' => __('Submit Revision', 'revisionary'), - 'saveAs' => __('Submit Revision', 'revisionary'), - 'prePublish' => __( 'Workflow…', 'revisionary' ), - 'redirectURL' => admin_url("edit.php?post_type={$post_type}&revision_submitted={$status}&post_id={$post_id}"), - 'revisableStatuses' => rvy_filtered_statuses('names'), - 'userRevision' => $userRevision, - 'editRevisionURL' => $editRevisionURL, - 'revisionExistsCaption' => $revisionExistsCaption, - 'editRevisionCaption' => $editRevisionCaption, - ); - - if (defined('REVISIONARY_DISABLE_SUBMISSION_REDIRECT') || !apply_filters('revisionary_do_submission_redirect', true)) { - unset($args['redirectURL']); - } + $args = \PublishPress\Revisions\PostEditorWorkflowUI::postLinkParams(compact('post', 'do_pending_revisions', 'do_scheduled_revisions')); } wp_localize_script( 'rvy_object_edit', 'rvyObjEdit', $args ); diff --git a/admin/post-edit.js b/admin/post-edit.js index 647cc07b..577d8d84 100644 --- a/admin/post-edit.js +++ b/admin/post-edit.js @@ -2,12 +2,9 @@ jQuery(document).ready( function($) { $('#publish').show(); $('#misc-publishing-actions div.num-revisions').contents().filter(function() { - //if ( typeof(this.nodeValue) != 'undefined' ){ console.debug(this.nodeValue);} return ( this.nodeType == 3 && ( typeof(this.nodeValue) != 'undefined' ) && this.nodeValue.indexOf("Revisions") != -1 ); }).wrap(''); - //$('#misc-publishing-actions span.rev-caption').html( rvyPostEdit.pubHistoryCaption + ' ' ); - if ( ! $('#timestampdiv a.now-timestamp').length ) { $('#timestampdiv a.cancel-timestamp').after('' + rvyPostEdit.nowCaption + ''); } diff --git a/admin/post-edit_rvy.php b/admin/post-edit_rvy.php index 032b3fc7..0dad0c53 100644 --- a/admin/post-edit_rvy.php +++ b/admin/post-edit_rvy.php @@ -1,275 +1,70 @@ ID, '', ['skip_revision_allowance' => true])) { - return; - } - - if ($revision_id = revisionary()->getUserRevision($post->ID)) { - $url = admin_url('post.php') . "?post=$revision_id&action=edit"; - $type_obj = get_post_type_object($post->post_type); - $type_label = (!empty($type_obj) && !empty($type_obj->labels->singular_name)) ? $type_obj->labels->singular_name : 'post'; - $message = sprintf(__('You have already submitted a revision for this %s. %sEdit the revision%s.', 'revisionary'), $type_label, "", ''); - echo "
" . $message . '
'; - } - } - - function fltPostUpdatedMessage($messages) { - global $post; - - if (rvy_is_revision_status($post->post_status)) { - if (rvy_get_option('revision_preview_links') || current_user_can('administrator') || is_super_admin()) { - $preview_url = rvy_preview_url($post); - $preview_msg = sprintf(__('Revision updated. %sView Preview%s', 'revisionary'), "", ''); - } else { - $preview_msg = __('Revision updated.', 'revisionary'); - } - - $messages['post'][1] = $preview_msg; - $messages['page'][1] = $preview_msg; - $messages[$post->post_type][1] = $preview_msg; - } - - return $messages; - } - - function fltAllowBrowseRevisionsLink($wp_blogcaps, $reqd_caps, $args) { - if (!empty($args[0]) && ('edit_post' == $args[0]) && !empty($args[2])) { - if ($_post = get_post($args[2])) { - if ('revision' == $_post->post_type && current_user_can('edit_post', $_post->post_parent)) { - if (did_action('post_submitbox_minor_actions')) { - if (!did_action('post_submitbox_misc_actions')) { - $wp_blogcaps = array_merge($wp_blogcaps, array_fill_keys($reqd_caps, true)); - } else { - remove_filter('user_has_cap', [$this, 'fltAllowBrowseRevisionsLink'], 50, 3); - } - } - } - } - - } - - return $wp_blogcaps; - } - - function fltRevisionAllowance($allowance, $post_id) { - // Ensure that revision "edit" link is not suppressed for the Revisions > Browse link - if (did_action('post_submitbox_minor_actions') && !did_action('post_submitbox_misc_actions')) { - $allowance = true; - } - - return $allowance; - } - - function actAdminBarPreventPostClobber() { - global $post; - - // prevent PHP Notice from Multiple Authors code: - // Notice: Trying to get property of non-object in F:\www\wp50\wp-content\plugins\publishpress-multiple-authors\core\Classes\Utils.php on line 309 - // @todo: address within MA - if (defined('PUBLISHPRESS_MULTIPLE_AUTHORS_VERSION') && !empty($_REQUEST['post'])) { - $post = get_post((int) $_REQUEST['post']); - } } function act_admin_head() { - global $post, $current_user; - - if (!empty($post) && rvy_is_revision_status($post->post_status)): - $type_obj = get_post_type_object($post->post_type); - - $view_link = rvy_preview_url($post); - - $can_publish = agp_user_can('edit_post', rvy_post_id($post->ID), '', ['skip_revision_allowance' => true]); - - if ($type_obj && empty($type_obj->public)) { - $view_link = ''; - $view_caption = ''; - $view_title = ''; - } elseif ($can_publish) { - $view_caption = ('future-revision' == $post->post_status) ? __('View / Publish', 'revisionary') : __('View / Approve', 'revisionary'); - $view_title = __('View / moderate saved revision', 'revisionary'); - } else { - $view_caption = __('View'); - $view_title = __('View saved revision', 'revisionary'); - } - - $preview_caption = __('View'); - $preview_title = __('View unsaved changes', 'revisionary'); ?> - - - // remove preview event handlers - original = $('#minor-publishing-actions #post-preview'); - $(original).after(original.clone().attr('href', '').attr('target', '_blank').attr('id', 'revision-preview')); - $(original).hide(); - - - - $('#minor-publishing-actions #revision-preview').html(''); - - - - $('#minor-publishing-actions #post-preview').html(''); - $('#minor-publishing-actions #post-preview').attr('title', ''); - - - }); - /* ]]> */ - - ID, "_save_as_revision_{$current_user->ID}" ); - update_postmeta_cache($post->ID); - } - - function limitRevisionEditorUI() { - global $post; - - if (!rvy_is_revision_status($post->post_status)) { - return; - } - - remove_post_type_support($post->post_type, 'author'); - remove_post_type_support($post->post_type, 'custom-fields'); // todo: filter post_id in query - } - - public function post_submit_meta_box($post, $args = []) - { - require_once(dirname(__FILE__) . '/PostEditSubmitMetabox.php'); - RvyPostEditSubmitMetabox::post_submit_meta_box($post, $args); - } - - public function actSubmitboxStart() { + post_type)) { + if (!empty($post) && !rvy_is_supported_post_type($post->post_type)) { return; } - $can_publish = agp_user_can('edit_post', rvy_post_id($post->ID), '', ['skip_revision_allowance' => true]); + wp_enqueue_script( 'rvy_post', RVY_URLPATH . "/admin/post-edit.js", array('jquery'), PUBLISHPRESS_REVISIONS_VERSION, true ); - if ($can_publish && rvy_is_revision_status($post->post_status)):?> - ID); + $suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '.dev' : ''; - if (in_array($post->post_status, ['pending-revision'])) { - $approval_url = wp_nonce_url( admin_url("admin.php?page=rvy-revisions&revision={$post->ID}&action=approve$redirect_arg"), "approve-post_$published_post_id|{$post->ID}" ); - - } elseif (in_array($post->post_status, ['future-revision'])) { - $approval_url = wp_nonce_url( admin_url("admin.php?page=rvy-revisions&revision={$post->ID}&action=publish$redirect_arg"), "publish-post_$published_post_id|{$post->ID}" ); - } - ?> -
- post_type) || rvy_in_revision_workflow($post)) { + wp_enqueue_script('rvy_object_edit', RVY_URLPATH . "/admin/rvy_revision-classic-edit{$suffix}.js", ['jquery', 'jquery-form'], PUBLISHPRESS_REVISIONS_VERSION, true); - if (rvy_is_revision_status($post->post_status)) : - $compare_link = admin_url("revision.php?revision=$post->ID"); - $compare_button = _x('Compare', 'revisions', 'revisionary'); - $compare_title = __('Compare this revision to published copy, or to other revisions', 'revisionary'); - ?> + $args = \PublishPress\Revisions\PostEditorWorkflowUI::revisionLinkParams(compact('post', 'do_pending_revisions', 'do_scheduled_revisions')); + wp_localize_script( 'rvy_object_edit', 'rvyObjEdit', $args ); - - ID)) { + $status_obj = get_post_status_object($post->post_status); - public function fltPreviewLink($url, $_post = false) { - global $post, $revisionary; + if (('future' != $post->post_status) && (!empty($status_obj->public) || !empty($status_obj->private) || rvy_get_option('pending_revision_unpublished'))) { + wp_enqueue_script('rvy_object_edit', RVY_URLPATH . "/admin/rvy_post-classic-edit{$suffix}.js", ['jquery', 'jquery-form'], PUBLISHPRESS_REVISIONS_VERSION, true); - if (!empty($_REQUEST['wp-preview']) && !empty($_post) && !empty($revisionary->last_autosave_id[$_post->ID])) { - if (defined('REVISIONARY_PREVIEW_LEGACY_ARGS')) { - $url = remove_query_arg('_thumbnail_id', $url); - $url = add_query_arg('_thumbnail_id', $revisionary->last_autosave_id[$_post->ID], $url); + $args = \PublishPress\Revisions\PostEditorWorkflowUI::postLinkParams(compact('post', 'do_pending_revisions', 'do_scheduled_revisions')); + wp_localize_script( 'rvy_object_edit', 'rvyObjEdit', $args ); } - } elseif ($post && rvy_is_revision_status($post->post_status)) { - $type_obj = get_post_type_object($post->post_type); - - if ($type_obj && !empty($type_obj->public)) { - $url = rvy_preview_url($post); - } } - return $url; - } + $args = array( + 'nowCaption' => __( 'Current Time', 'revisionary' ), + ); + wp_localize_script( 'rvy_post', 'rvyPostEdit', $args ); + } public function fltPreviewLabel($preview_caption) { global $post; @@ -307,21 +102,6 @@ public function fltPreviewTitle($preview_title) { return $preview_title; } - public function act_replace_publish_metabox($post_type, $post) - { - global $wp_meta_boxes; - - if (!rvy_is_revision_status($post->post_status)) { - return; - } - - if ('attachment' != $post_type) { - if (!empty($wp_meta_boxes[$post_type]['side']['core']['submitdiv'])) { - $wp_meta_boxes[$post_type]['side']['core']['submitdiv']['callback'] = [$this, 'post_submit_meta_box']; - } - } - } - function act_post_submit_revisions_links() { global $post; @@ -332,20 +112,13 @@ function act_post_submit_revisions_links() { if (rvy_get_option('scheduled_revisions')) { if ($_revisions = rvy_get_post_revisions($post->ID, 'future-revision', ['orderby' => 'ID', 'order' => 'ASC'])) { - $status_obj = get_post_status_object('future-revision'); - $caption = sprintf(__('%sScheduled Revisions: %s', 'revisionary'), ' ', '' . count($_revisions) . ''); - - $num_revisions = count($_revisions); - //$last_revision = array_pop($_revisions); - //$url = admin_url("revision.php?revision=$last_revision->ID"); // @todo: fix i8n - $url = admin_url("revision.php?post_id=$post->ID&revision=future-revision"); ?>
 ', '' . count($_revisions) . ''); ?> + href="ID&revision=future-revision")); ?>" target="_revision_diff">
ID, 'pending-revision', ['orderby' => 'ID', 'order' => 'ASC'])) { - $status_obj = get_post_status_object('pending-revision'); - $caption = sprintf(__('%sPending Revisions: %s', 'revisionary'), ' ', '' . count($_revisions) . ''); - - $num_revisions = count($_revisions); - //$last_revision = array_pop($_revisions); - //$url = admin_url("revision.php?revision=$last_revision->ID"); // @todo: fix i8n - $url = admin_url("revision.php?post_id=$post->ID&revision=pending-revision"); ?>
 ', '' . count($_revisions) . ''); ?> + href="ID&revision=pending-revision")); ?>" target="_revision_diff">
post_type && current_user_can('edit_post', $_post->post_parent)) { + if (did_action('post_submitbox_minor_actions')) { + if (!did_action('post_submitbox_misc_actions')) { + $wp_blogcaps = array_merge($wp_blogcaps, array_fill_keys($reqd_caps, true)); + } else { + remove_filter('user_has_cap', [$this, 'fltAllowBrowseRevisionsLink'], 50, 3); + } + } + } + } + + } + + return $wp_blogcaps; + } + + function fltRevisionAllowance($allowance, $post_id) { + // Ensure that revision "edit" link is not suppressed for the Revisions > Browse link + if (did_action('post_submitbox_minor_actions') && !did_action('post_submitbox_misc_actions')) { + $allowance = true; + } + + return $allowance; + } + +} diff --git a/admin/post-editor-workflow-ui_rvy.php b/admin/post-editor-workflow-ui_rvy.php new file mode 100644 index 00000000..60813d5f --- /dev/null +++ b/admin/post-editor-workflow-ui_rvy.php @@ -0,0 +1,177 @@ + false, 'do_pending_revisions' => true, 'do_scheduled_revisions' => true]; + $args = array_merge( $defaults, $args ); + foreach( array_keys($defaults) as $var ) { $$var = $args[$var]; } + + global $wp_version; + + if (empty($post)) { + return []; + } + + if (!$type_obj = get_post_type_object($post->post_type)) { + return []; + } + + $vars = [ + 'postID' => $post->ID, + 'saveRevision' => __('Update Revision'), + 'scheduledRevisionsEnabled' => $do_scheduled_revisions, + 'multiPreviewActive' => version_compare($wp_version, '5.5-beta', '>='), + 'statusLabel' => __('Status', 'revisionary'), + 'ajaxurl' => rvy_admin_url(''), + 'currentStatus' => str_replace('-revision', '', $post->post_mime_type), + 'onApprovalCaption' => __('(on approval)', 'revisionary'), + ]; + + if (rvy_get_option('revision_preview_links') || current_user_can('administrator') || is_super_admin()) { + $vars['viewURL'] = rvy_preview_url($post); + $can_publish = current_user_can('edit_post', rvy_post_id($post->ID)); + + if ($type_obj && empty($type_obj->public)) { + $vars['viewURL'] = ''; + $vars['viewCaption'] = ''; + $vars['viewTitle'] = ''; + + } elseif ($can_publish) { + $vars['viewCaption'] = ('future-revision' == $post->post_mime_type) ? __('View / Publish', 'revisionary') : __('View / Approve', 'revisionary'); + $vars['viewTitle'] = __('View / moderate saved revision', 'revisionary'); + } else { + $vars['viewCaption'] = __('View'); + $vars['viewTitle'] = __('View saved revision', 'revisionary'); + } + } else { + $vars['viewURL'] = ''; + $vars['viewCaption'] = ''; + $vars['viewTitle'] = ''; + } + + $vars['preview_title'] = __('View unsaved changes', 'revisionary'); + + $_revisions = wp_get_post_revisions($post->ID); + if ($_revisions && count($_revisions) > 1) { + $vars['revisionEdits'] = sprintf(_n(' %s Revision Edit', ' %s Revision Edits', count($_revisions), 'revisionary'), count($_revisions)); + } else { + $vars['revisionEdits'] = ''; + } + + $redirect_arg = ( ! empty($_REQUEST['rvy_redirect']) ) ? "&rvy_redirect=" . esc_url($_REQUEST['rvy_redirect']) : ''; + $published_post_id = rvy_post_id($post->ID); + + $draft_obj = get_post_status_object('draft-revision'); + $vars['draftStatusCaption'] = $draft_obj->label; + + $vars['draftAjaxField'] = (current_user_can('set_revision_pending-revision', $post->ID)) ? 'submit_revision' : ''; + $vars['draftErrorCaption'] = __('Error Submitting Changes', 'revisionary'); + $vars['draftDeletionURL'] = get_delete_post_link($post->ID, '', false); + + if ($vars['draftAjaxField']) { + $vars['draftActionCaption'] = __('Submit Change Request', 'revisionary'); + $vars['draftActionURL'] = ''; // wp_nonce_url( rvy_admin_url("admin.php?page=rvy-revisions&revision={$post->ID}&action=submit$redirect_arg"), "submit-post_$published_post_id|{$post->ID}" ); + $vars['draftCompletedCaption'] = __('Changes Submitted.', 'revisionary'); + $vars['draftCompletedLinkCaption'] = __('view', 'revisionary'); + $vars['draftCompletedURL'] = rvy_preview_url($post); + } else { + $vars['draftActionCaption'] = ''; + } + + $pending_obj = get_post_status_object('pending-revision'); + $vars['pendingStatusCaption'] = $pending_obj->label; + + $future_obj = get_post_status_object('future-revision'); + $vars['futureStatusCaption'] = $future_obj->label; + + if ($can_publish) { + $vars['pendingActionCaption'] = __('Approve Changes', 'revisionary'); + $vars['pendingActionURL'] = wp_nonce_url( rvy_admin_url("admin.php?page=rvy-revisions&revision={$post->ID}&action=approve$redirect_arg&editor=1"), "approve-post_$published_post_id|{$post->ID}" ); + + $vars['futureActionCaption'] = __('Publish Changes', 'revisionary'); + $vars['futureActionURL'] = wp_nonce_url( rvy_admin_url("admin.php?page=rvy-revisions&revision={$post->ID}&action=publish$redirect_arg&editor=1"), "publish-post_$published_post_id|{$post->ID}" ); + + $vars['pendingDeletionURL'] = get_delete_post_link($post->ID, '', false); + $vars['futureDeletionURL'] = $vars['pendingDeletionURL']; + } else { + $vars['pendingActionURL'] = ''; + $vars['futureActionURL'] = ''; + $vars['pendingDeletionURL'] = ''; + $vars['futureDeletionURL'] = ''; + } + + return $vars; + } + + public static function postLinkParams($args = []) { + $defaults = ['post' => false, 'do_pending_revisions' => true, 'do_scheduled_revisions' => true]; + $args = array_merge( $defaults, $args ); + foreach( array_keys($defaults) as $var ) { $$var = $args[$var]; } + + global $wp_version; + + if (empty($post)) { + return []; + } + + if (!$type_obj = get_post_type_object($post->post_type)) { + return []; + } + + $vars = ['postID' => $post->ID, 'currentStatus' => $post->post_status]; + + if ($do_pending_revisions && $_revisions = rvy_get_post_revisions($post->ID, 'pending-revision', ['orderby' => 'ID', 'order' => 'ASC'])) { + $status_obj = get_post_status_object('pending-revision'); + $vars['pendingRevisionsCaption'] = sprintf(_n(' %s Change Request', ' %s Change Requests', count($_revisions), 'revisionary'), count($_revisions)); + + $vars['pendingRevisionsURL'] = rvy_admin_url("revision.php?post_id=$post->ID&revision=pending-revision"); // @todo: fix i8n + } else { + $vars['pendingRevisionsURL'] = ''; + } + + if ($do_scheduled_revisions && $_revisions = rvy_get_post_revisions($post->ID, 'future-revision', ['orderby' => 'ID', 'order' => 'ASC'])) { + $status_obj = get_post_status_object('future-revision'); + $vars['scheduledRevisionsCaption'] = sprintf(_n(' %s Scheduled Change', ' %s Scheduled Changes', count($_revisions), 'revisionary'), count($_revisions)); + + $vars['scheduledRevisionsURL'] = rvy_admin_url("revision.php?post_id=$post->ID&revision=future-revision"); + } else { + $vars['scheduledRevisionsURL'] = ''; + } + + $redirect_arg = ( ! empty($_REQUEST['rvy_redirect']) ) ? "&rvy_redirect=" . esc_url($_REQUEST['rvy_redirect']) : ''; + $published_post_id = rvy_post_id($post->ID); + + if (current_user_can('copy_post', $post->ID)) { + $vars = array_merge($vars, array( + 'actionCaption' => __('Create Working Copy', 'revisionary'), + 'actionTitle' => esc_attr(__('Create a working copy of this post', 'revisionary')), + 'actionDisabledTitle' => esc_attr(__('Update post before creating copy.', 'revisionary')), + 'completedCaption' => __('Working Copy Ready.', 'revisionary'), + 'completedLinkCaption' => __('view', 'revisionary'), + 'completedURL' => rvy_nc_url( add_query_arg('get_new_revision', $post->ID, get_permalink($post->ID))), + 'errorCaption' => __('Error Creating Copy', 'revisionary'), + 'ajaxurl' => rvy_admin_url(''), + 'postID' => $post->ID + )); + } else { + $vars['actionCaption'] = ''; + } + + if (current_user_can($type_obj->cap->publish_posts)) { + $published_statuses = array_merge(get_post_stati(['public' => true]), get_post_stati(['private' => true])); + + $vars = array_merge($vars, array( + 'publishedStatuses' => $published_statuses, + 'scheduleCaption' => __('Schedule Changes', 'revisionary'), + 'scheduleTitle' => '', + 'scheduleDisabledTitle' => esc_attr(__('For custom field changes, edit a scheduled copy.', 'revisionary')), + 'scheduledCaption' => __('Changes are Scheduled.', 'revisionary'), + 'scheduledLinkCaption' => __('view', 'revisionary'), + 'scheduledURL' => rvy_nc_url( add_query_arg('get_new_revision', $post->ID, get_permalink($post->ID))), + )); + } + + return $vars; + } +} diff --git a/admin/revision-action_rvy.php b/admin/revision-action_rvy.php index 48766f93..4dc96bf8 100644 --- a/admin/revision-action_rvy.php +++ b/admin/revision-action_rvy.php @@ -14,10 +14,116 @@ function rvy_revision_diff() { } +function rvy_revision_create($post_id = 0) { + if (!$post_id) { + $post_id = (int) $_REQUEST['post']; + } + + if (current_user_can('copy_post', $post_id)) { + require_once( dirname(REVISIONARY_FILE).'/revision-creation_rvy.php' ); + $rvy_creation = new PublishPress\Revisions\RevisionCreation(); + $rvy_creation->createRevision($post_id, 'draft-revision'); + } +} + +// Submits a revision (moving it to pending-revision status) +function rvy_revision_submit($revision_id = 0) { + global $wpdb, $revisionary; + + //require_once( ABSPATH . 'wp-admin/admin.php'); + + if (!$revision_id) { + $batch_process = false; + + if (empty($_GET['revision'])) { + return; + } + + $revision_id = (int) $_GET['revision']; + } else { + $batch_process = true; + } + + $redirect = ''; + + do { + if (!$revision = get_post($revision_id)) { + break; + } + + if (!in_array($revision->post_status, ['draft', 'pending'])) { + break; + } + + if (!current_user_can('set_revision_pending-revision', $revision_id)) { + break; + } + + if (!$published_id = rvy_post_id($revision_id)) { + break; + } + + if (!$post = get_post($published_id)) { + break; + } + + if (!$batch_process) { + check_admin_referer( "submit-post_$post->ID|$revision->ID" ); + } + + $status_obj = get_post_status_object( $revision->post_mime_type ); + + // safeguard: make sure this hasn't already been published + if ( empty($status_obj->public) && empty($status_obj->private) ) { + $wpdb->update($wpdb->posts, ['post_status' => 'pending', 'post_mime_type' => 'pending-revision'], ['ID' => $revision_id]); + + require_once( dirname(REVISIONARY_FILE).'/revision-workflow_rvy.php' ); + $rvy_workflow_ui = new Rvy_Revision_Workflow_UI(); + + $args = ['revision_id' => $revision->ID, 'published_post' => $post, 'object_type' => $post->post_type]; + $rvy_workflow_ui->do_notifications('pending-revision', 'pending-revision', (array) $post, $args ); + } else { + $approval_error = true; + } + + if ( !empty($_REQUEST['rvy_redirect']) && 'edit' == $_REQUEST['rvy_redirect'] ) { + $last_arg = array( 'revision_action' => 1, 'published_post' => $revision->ID ); + $redirect = add_query_arg( $last_arg, "post.php?post=$revision_id&action=edit" ); + } else { + $redirect = rvy_preview_url($revision, ['post_type' => $post->post_type]); + } + + } while (0); + + if (!$batch_process) { + if ( ! $redirect ) { + if ( ! empty($post) && is_object($post) && ( 'post' != $post->post_type ) ) { + $redirect = "edit.php?post_type={$post->post_type}"; + } else + $redirect = 'edit.php'; + } + } + + if (empty($approval_error)) { + do_action( 'revision_submitted', $revision->post_parent, $revision->ID ); + } + + if (!$batch_process) { + wp_redirect( $redirect ); + exit; + } + + if (empty($approval_error)) { + return true; + } +} + // schedules publication of a revision ( or publishes if requested publish date has already passed ) function rvy_revision_approve($revision_id = 0) { - require_once( ABSPATH . 'wp-admin/admin.php'); - + global $current_user, $wpdb; + + //require_once( ABSPATH . 'wp-admin/admin.php'); + if (!$revision_id) { $batch_process = false; @@ -63,6 +169,37 @@ function rvy_revision_approve($revision_id = 0) { check_admin_referer( "approve-post_$post->ID|$revision->ID" ); } + if (!empty($_REQUEST['editor']) && !defined('REVISIONARY_IGNORE_AUTOSAVE')) { + if ($autosave_post = \PublishPress\Revisions\Utils::get_post_autosave($revision_id, $current_user->ID)) { + if (strtotime($autosave_post->post_modified_gmt) > strtotime($revision->post_modified_gmt)) { + $set_post_properties = [ + 'post_content', + 'post_content_filtered', + 'post_title', + 'post_excerpt', + ]; + + $update_data = []; + + foreach($set_post_properties as $prop) { + if (!empty($autosave_post) && !empty($autosave_post->$prop)) { + $update_data[$prop] = $autosave_post->$prop; + } + } + + if ($update_data) { + $wpdb->update($wpdb->posts, $update_data, ['ID' => $revision_id]); + } + + // For taxonomies and meta keys not stored for the autosave, use published copies + //revisionary_copy_terms($autosave_post->ID, $revision_id, ['empty_target_only' => true]); + //revisionary_copy_postmeta($autosave_post->ID, $revision_id, ['empty_target_only' => true]); + + $wpdb->delete($wpdb->posts, ['ID' => $autosave_post->ID]); + } + } + } + clean_post_cache($post->ID); $published_url = get_permalink($post->ID); @@ -100,6 +237,10 @@ function rvy_revision_approve($revision_id = 0) { break; } + if (!empty($update_data)) { + $wpdb->update($wpdb->posts, $update_data, ['ID' => $published_id]); + } + clean_post_cache($post->ID); $published_url = get_permalink($post->ID); } @@ -315,7 +456,7 @@ function rvy_revision_approve($revision_id = 0) { } function rvy_revision_restore() { - require_once( ABSPATH . 'wp-admin/admin.php'); + //require_once( ABSPATH . 'wp-admin/admin.php'); $revision_id = (int) $_GET['revision']; $redirect = ''; @@ -347,13 +488,9 @@ function rvy_revision_restore() { wp_restore_post_revision( $revision->ID, array( 'post_content', 'post_title', 'post_date', 'post_date_gmt', 'post_modified', 'post_modified_gmt' ) ); // restore previous meta fields + revisionary_copy_postmeta($revision, $post->ID); - if (!defined('REVISIONARY_PRO_VERSION') || apply_filters('revisionary_copy_core_postmeta', true, $revision, $post, false)) { - revisionary_copy_meta_field('_thumbnail_id', $revision->ID, $post->ID, false); - revisionary_copy_meta_field('_wp_page_template', $revision->ID, $post->ID, false); - } - - revisionary_copy_terms($revision->ID, $post->ID, false); + revisionary_copy_terms($revision, $post->ID); rvy_format_content( $revision->post_content, $revision->post_content_filtered, $post->ID ); @@ -522,7 +659,6 @@ function rvy_apply_revision( $revision_id, $actual_revision_status = '' ) { $wpdb->update($wpdb->posts, $update_fields, ['ID' => $post_id]); // also copy all stored postmeta from revision - global $revisionary; $is_imported = get_post_meta($revision_id, '_rvy_imported_revision', true); @@ -535,14 +671,11 @@ function rvy_apply_revision( $revision_id, $actual_revision_status = '' ) { } } - if (!defined('REVISIONARY_PRO_VERSION') || apply_filters('revisionary_copy_core_postmeta', true, $revision, $published, !$is_imported)) { - revisionary_copy_meta_field('_thumbnail_id', $revision->ID, $published->ID, !$is_imported); - revisionary_copy_meta_field('_wp_page_template', $revision->ID, $published->ID, !$is_imported); - } + revisionary_copy_postmeta($revision, $published->ID, ['apply_empty' => !$is_imported]); // Allow Multiple Authors revisions to be applied to published post. Revision post_author is forced to actual submitting user. //$skip_taxonomies = (defined('PUBLISHPRESS_MULTIPLE_AUTHORS_VERSION')) ? ['author'] : []; - revisionary_copy_terms($revision_id, $post_id, !$is_imported); + revisionary_copy_terms($revision_id, $post_id, ['apply_empty' => !$is_imported]); if (defined('PUBLISHPRESS_MULTIPLE_AUTHORS_VERSION') && $published_authors) { // Make sure Multiple Authors values were not wiped due to incomplete revision data @@ -715,7 +848,7 @@ function rvy_do_revision_restore( $revision_id, $actual_revision_status = '' ) { } function rvy_revision_delete() { - require_once( ABSPATH . 'wp-admin/admin.php'); + //require_once( ABSPATH . 'wp-admin/admin.php'); $revision_id = (int) $_GET['revision']; $redirect = ''; @@ -759,7 +892,7 @@ function rvy_revision_delete() { } function rvy_revision_bulk_delete() { - require_once( ABSPATH . 'wp-admin/admin.php'); + //require_once( ABSPATH . 'wp-admin/admin.php'); check_admin_referer( 'rvy-revisions' ); @@ -845,7 +978,7 @@ function rvy_revision_unschedule($revision_id) { break; } - $wpdb->update( $wpdb->posts, array( 'post_status' => 'pending-revision' ), array( 'ID' => $revision->ID ) ); + $wpdb->update( $wpdb->posts, array( 'post_status' => 'draft-revision' ), array( 'ID' => $revision->ID ) ); rvy_update_next_publish_date(); } while (0); @@ -1259,73 +1392,6 @@ function rvy_format_content( $content, $content_filtered, $post_id, $args = arra return $formatted_content; } -function revisionary_copy_terms( $from_post_id, $to_post_id, $mirror_empty = false ) { - global $wpdb; - - if ( ! $to_post_id ) - return; - - //if (false===$skip_taxonomies) { @todo: $args - $skip_taxonomies = array(); - //} - - if ($skip_taxonomies = apply_filters('revisionary_skip_taxonomies', $skip_taxonomies, $from_post_id, $to_post_id)) { - $tx_join = "INNER JOIN $wpdb->term_taxonomy AS tt ON tt.term_taxonomy_id = tr.term_taxonomy_id "; - $tx_where = "tt.taxonomy NOT IN ('" . implode("','", array_map('sanitize_key', array_filter($skip_taxonomies))) . "') AND "; - } else { - $tx_join = ''; - $tx_where = ''; - } - - if ($_post = $wpdb->get_row( - $wpdb->prepare( - "SELECT * FROM $wpdb->posts WHERE ID = %d", - $from_post_id - ) - )) { - $source_terms = $wpdb->get_col( - $wpdb->prepare( - "SELECT term_taxonomy_id FROM $wpdb->term_relationships AS tr {$tx_join}WHERE {$tx_where}tr.object_id = %d", - $from_post_id - ) - ); - - $target_terms = $wpdb->get_col( - $wpdb->prepare( - "SELECT term_taxonomy_id FROM $wpdb->term_relationships AS tr {$tx_join}WHERE {$tx_where}tr.object_id = %d", - $to_post_id - ) - ); - - if ( $add_terms = array_diff($source_terms, $target_terms) ) { - // todo: single query - foreach($add_terms as $tt_id) { - $wpdb->query( - $wpdb->prepare( - "INSERT INTO $wpdb->term_relationships (object_id, term_taxonomy_id) VALUES (%d, %d)", - $to_post_id, - $tt_id - ) - ); - } - } - - if ($source_terms || ($mirror_empty && !defined('FL_BUILDER_VERSION'))) { - if ( $delete_terms = array_diff($target_terms, $source_terms) ) { - // todo: single query - foreach($delete_terms as $tt_id) { - $wpdb->query( - $wpdb->prepare( - "DELETE FROM $wpdb->term_relationships WHERE object_id = %d AND term_taxonomy_id = %d", - $to_post_id, - $tt_id - ) - ); - } - } - } - } -} function rvy_update_post($postarr = []) { global $wpdb; diff --git a/admin/revision-queue_rvy.php b/admin/revision-queue_rvy.php index 0bda71f4..73928410 100644 --- a/admin/revision-queue_rvy.php +++ b/admin/revision-queue_rvy.php @@ -28,6 +28,7 @@ 'deleted' => isset( $_REQUEST['deleted'] ) ? absint( $_REQUEST['deleted'] ) : 0, 'updated' => 0, 'locked' => 0, + 'submitted_count' => isset( $_REQUEST['submitted_count'] ) ? absint( $_REQUEST['submitted_count'] ) : 0, 'approved_count' => isset( $_REQUEST['approved_count'] ) ? absint( $_REQUEST['approved_count'] ) : 0, 'unscheduled_count' => isset( $_REQUEST['unscheduled_count'] ) ? absint( $_REQUEST['unscheduled_count'] ) : 0, 'published_count' => isset( $_REQUEST['published_count'] ) ? absint( $_REQUEST['published_count'] ) : 0, @@ -37,6 +38,7 @@ $bulk_messages = []; $bulk_messages['post'] = array( + 'submitted_count' => sprintf(_n( '%s revision submitted.', '%s revisions submitted.', $bulk_counts['submitted_count'], 'revisionary' ), $bulk_counts['submitted_count']), 'approved_count' => sprintf(_n( '%s revision approved.', '%s revisions approved.', $bulk_counts['approved_count'], 'revisionary' ), $bulk_counts['approved_count']), 'unscheduled_count' => sprintf(_n( '%s revision unscheduled.', '%s revisions unscheduled.', $bulk_counts['unscheduled_count'], 'revisionary' ), $bulk_counts['unscheduled_count']), 'published_count' => sprintf(_n( '%s revision published.', '%s revisions published.', $bulk_counts['published_count'], 'revisionary' ), $bulk_counts['published_count']), diff --git a/admin/revisionary.css b/admin/revisionary.css index c0e560f0..99c5a31b 100644 --- a/admin/revisionary.css +++ b/admin/revisionary.css @@ -536,15 +536,65 @@ margin-right: 6px; margin-top: 2px; } - -#rvy_save_as_revision { -margin-right: 4px; -} - .toplevel_page_revisionary-q .pressshack-admin-wrapper a { color: #2271B1; } .pressshack-admin-wrapper footer a { color: #655997 !important; +} + + +div.components-panel button.revision-approve { +width: 100%; +margin: 15px 0 15px 0; +justify-content: center; +color: #070; +border-color: #070; +font-weight: bold; +} + +div.rvy-revision-created { +text-align: center; +} + +div.components-panel button.revision-created { +color: black; +cursor: default; +} + +div.components-panel a.revision-edit { +text-decoration: underline; +color: #135e96; +font-weight: normal; +text-align: left; +padding: 0 0 0 7px; +} + +button.post-schedule-footnote { +color: black !important; +background-color: white !important; +padding-left: 2px !important; +} + +button.edit-post-post-schedule__toggle { +padding-right: 2px !important; +} + +div.components-panel a.revision-approve{ +text-decoration: none; +} + +/* Classic */ +#submitpost #revision-compare { +margin: 5px 10px 10px 5px; +} + +#submitpost div.rvy-revision-approve { +line-height: 2.1; +} + +#submitpost div.rvy-revision-approve a, #submitpost div.rvy-revision-approve a:link, #submitpost div.rvy-revision-approve a:visited { +color: #070; +font-weight: bold; } \ No newline at end of file diff --git a/admin/rvy-revision-edit.css b/admin/rvy-revision-edit.css index 34afbcb9..9195f6d0 100644 --- a/admin/rvy-revision-edit.css +++ b/admin/rvy-revision-edit.css @@ -16,32 +16,7 @@ height: inherit; a.editor-post-preview, a.editor-post-preview.components-button.is-large { margin-right: 5px; } -div.components-panel button.revision-approve { -width: 100%; -margin: 15px 0 15px 0; -justify-content: center; -color: #070; -border-color: #070; -font-weight: bold; -} -div.components-panel a.revision-approve{ -text-decoration: none; -} - -/* Classic */ -#submitpost #revision-compare { -margin: 5px 10px 10px 5px; -} - -#submitpost div.rvy-revision-approve { -line-height: 2.1; -} - -#submitpost div.rvy-revision-approve a, #submitpost div.rvy-revision-approve a:link, #submitpost div.rvy-revision-approve a:visited { -color: #070; -font-weight: bold; -} #rvy_compare_button { margin: 0 10px 10px 10px; diff --git a/admin/rvy_post-block-edit-revisor.dev.js b/admin/rvy_post-block-edit-revisor.dev.js deleted file mode 100644 index abd0ec88..00000000 --- a/admin/rvy_post-block-edit-revisor.dev.js +++ /dev/null @@ -1,228 +0,0 @@ -/** -* Block Editor Modifications for Revisionary (Revision Submitter) -* -* By Kevin Behrens -* -* Copyright 2019, PublishPress -*/ -jQuery(document).ready( function($) { - /***** Redirect back to edit.php if user won't be able to futher edit after changing post status *******/ - $(document).on('click', 'button.editor-post-publish-button,button.editor-post-save-draft', function() { - var RvyRedirectCheckSaveInterval = setInterval( function() { - let saving = wp.data.select('core/editor').isSavingPost(); - if ( saving ) { - clearInterval(RvyRedirectCheckSaveInterval); - - var RvyRedirectCheckSaveDoneInterval = setInterval( function() { - let saving = wp.data.select('core/editor').isSavingPost(); - - if ( ! saving ) { - clearInterval(RvyRedirectCheckSaveDoneInterval); - - let goodsave = wp.data.select('core/editor').didPostSaveRequestSucceed(); - if ( goodsave ) { - var redirectProp = 'redirectURL'; - - if ( typeof rvyObjEdit[redirectProp] != 'undefined' ) { - var rurl = rvyObjEdit[redirectProp]; - var recipients = $('input[name="prev_cc_user[]"]:checked'); - - if ( recipients.length ) { - var cc = recipients.map(function() { - return $(this).val(); - }).get().join(','); - - rurl = rurl + '&cc=' + cc; - } - - $(location).attr("href", rurl); - } - } - } - }, 50 ); - } - }, 10 ); - }); - /*******************************************************************************************************/ - - function RvyRecaptionElement(btnSelector, btnCaption) { - let node = document.querySelector(btnSelector); - - if (node) { - document.querySelector(btnSelector).innerText = `${btnCaption}`; - } - } - - // Update main publish ("Publish" / "Submit Pending") button width and span caption - function RvySetPublishButtonCaption(caption,waitForSaveDraftButton,forceRegen,timeout) { - if ( caption == '' && ( typeof rvyObjEdit['publishCaptionCurrent'] != 'undefined' ) ) { - caption = rvyObjEdit.publishCaptionCurrent; - } else { - rvyObjEdit.publishCaptionCurrent = caption; - } - - if ( typeof waitForSaveDraftButton == 'undefined' ) { - waitForSaveDraftButton = false; - } - - if ( ( ! waitForSaveDraftButton || $('button.editor-post-switch-to-draft').filter(':visible').length || $('button.editor-post-save-draft').filter(':visible').length ) && $('button.editor-post-publish-button').length ) { // indicates save operation (or return from Pre-Publish) is done - RvyRecaptionElement('button.editor-post-publish-button', caption); - } else { - if ( ( typeof timeout == 'undefined' ) || parseInt(timeout) < 50 ) { timeout = 15000;} - var RecaptionInterval = setInterval(RvyWaitForRecaption, 100); - var RecaptionTimeout = setTimeout( function(){ clearInterval(RvyRecaptionInterval);}, parseInt(timeout) ); - - function WaitForRecaption(timeout) { - if ( ! waitForSaveDraftButton || $('button.editor-post-switch-to-draft').filter(':visible').length || $('button.editor-post-save-draft').filter(':visible').length ) { // indicates save operation (or return from Pre-Publish) is done - if ( $('button.editor-post-publish-button').length ) { // indicates Pre-Publish is disabled - clearInterval(RvyRecaptionInterval); - clearTimeout(RvyRecaptionTimeout); - RvyRecaptionElement('button.editor-post-publish-button', caption); - } else { - if ( waitForSaveDraftButton ) { // case of execution following publish click with Pre-Publish active - clearInterval(RvyRecaptionInterval); - clearTimeout(RvyRecaptionTimeout); - } - } - } - } - } - } - - // Force spans to be regenerated following modal settings window access - var RvyDetectPublishOptionsDivClosureInterval=''; - var RvyDetectPublishOptionsDiv = function() { - if ( $('div.components-modal__header').length ) { - clearInterval( RvyDetectPublishOptionsDivInterval ); - - if ( $('span.pp-recaption-button').first() ) { - rvyObjEdit.overrideColor = $('span.pp-recaption-button').first().css('color'); - } - - var RvyDetectPublishOptionsClosure = function() { - if ( ! $('div.components-modal__header').length ) { - clearInterval(RvyDetectPublishOptionsDivClosureInterval); - - $('span.pp-recaption-button').hide(); //.addClass('force-regen'); - RvyInitInterval = setInterval(RvyInitializeBlockEditorModifications, 50); - RvyDetectPublishOptionsDivInterval = setInterval(RvyDetectPublishOptionsDiv, 1000); - } - } - RvyDetectPublishOptionsDivClosureInterval = setInterval(RvyDetectPublishOptionsClosure, 200); - } - } - var RvyDetectPublishOptionsDivInterval = setInterval(RvyDetectPublishOptionsDiv, 1000); - /*****************************************************************************************************************/ - - - /************* RECAPTION PRE-PUBLISH AND PUBLISH BUTTONS ****************/ - rvyObjEdit.publishCaptionCurrent = rvyObjEdit.publish; - - // Initialization operations to perform once React loads the relevant elements - var RvyInitializeBlockEditorModifications = function() { - if ( ( $('button.editor-post-publish-button').length || $('button.editor-post-publish-panel__toggle').length ) && ( $('button.editor-post-switch-to-draft').length || $('button.editor-post-save-draft').length || $('div.publishpress-extended-post-status select:visible').length ) ) { - clearInterval(RvyInitInterval); - - if ( $('button.editor-post-publish-panel__toggle').length ) { - if ( typeof rvyObjEdit.prePublish != 'undefined' && rvyObjEdit.prePublish ) { - RvyRecaptionElement('button.editor-post-publish-panel__toggle', rvyObjEdit.prePublish); - } - - // Presence of pre-publish button means publish button is not loaded yet. Start looking for it once Pre-Publish button is clicked. - $(document).on('click', 'button.editor-post-publish-panel__toggle,span.pp-recaption-prepublish-button', function() { - RvySetPublishButtonCaption('', false, true); // nullstring: set caption to value queued in rvyObjEdit.publishCaptionCurrent - }); - } else { - RvySetPublishButtonCaption(rvyObjEdit.publish, false, true); - } - - $('select.editor-post-author__select').parent().hide(); - //$('div.edit-post-last-revision__panel').hide(); - $('div.edit-post-post-visibility').hide(); - $('button.editor-post-trash').hide(); - $('button.editor-post-switch-to-draft').hide(); - - $('div.components-notice-list').hide(); // autosave notice - $('div.edit-post-post-status div.components-base-control__field input[type="checkbox"]').hide().next('label').hide(); // stick to top - if (rvyObjEdit.userRevision) { - if ($('button.editor-post-publish-button:visible').length && !$('div.have-revision-notice').length) { - // @todo: Gutenberg does not allow manually inserted html to contain links - var html = '
' - + rvyObjEdit.revisionExistsCaption; - /* - + '' - + rvyObjEdit.editRevisionCaption - + '' - */ - - if (rvyObjEdit.editRevisionURL) { - html += ' ' + rvyObjEdit.editRevisionURL + ''; - } - - html += '
'; - - $('div.edit-post-header-toolbar__left').after('
' + html + '
'); - } - - /* - // @todo: Gutenberg does not allow this to be displayed to Revisors - wp.data.dispatch('core/notices').createInfoNotice( - 'info', // Can be one of: success, info, warning, error. - rvyObjEdit.revisionExistsCaption, - { - id: 'rvyRevisionExistsNotice', - isDismissible: false, - - // Any actions the user can perform. - actions: [ - { - url: rvyObjEdit.editRevisionURL, - label: rvyObjEdit.editRevisionCaption, - }, - //{ - // label: ' or ', - //}, - //{ - // url: another_url, - // label: __('Another action'), - //}, - ] - } - ); - */ - } - } - } - var RvyInitInterval = setInterval(RvyInitializeBlockEditorModifications, 50); - - - var RvyHideElements = function() { - var ediv = 'div.edit-post-sidebar '; - - //if ( $(ediv + 'div.edit-post-post-visibility,' + ediv + 'div.edit-post-last-revision__panel,' + ediv + 'div.editor-post-link,' + ediv + 'select.editor-post-author__select:visible,' + ediv + 'div.components-base-control__field input[type="checkbox"]:visible,' + ediv + 'button.editor-post-switch-to-draft,' + ediv + 'button.editor-post-trash').length ) { - if ( $(ediv + 'div.edit-post-post-visibility,' + ediv + 'div.editor-post-link,' + ediv + 'select.editor-post-author__select:visible,' + ediv + 'div.components-base-control__field input[type="checkbox"]:visible,' + ediv + 'button.editor-post-switch-to-draft,' + ediv + 'button.editor-post-trash').length ) { - $(ediv + 'select.editor-post-author__select').parent().hide(); - //$(ediv + 'div.edit-post-last-revision__panel').hide(); - $(ediv + 'div.edit-post-post-visibility').hide(); - $(ediv + 'button.editor-post-trash').hide(); - $(ediv + 'button.editor-post-switch-to-draft').hide(); - $(ediv + 'div.components-notice-list').hide(); // autosave notice - $(ediv + 'div.edit-post-post-status div.components-base-control__field input[type="checkbox"]').each(function(e){$('label[for="' + $(this).attr('id') + '"]').hide();}).hide().next('label').hide(); - } - - } - var RvyHideInterval = setInterval(RvyHideElements, 50); - - - /* - // If Publish button is clicked, current post status will be set to [user's next/max status progression] - // So set Publish button caption to "Save As %s" to show that no further progression is needed / offered. - $(document).on('click', 'button.editor-post-publish-button', function() { - // Wait for Save Draft button to reappear; this will have no effect on Publish Button if Pre-Publish is enabled (but will update rvyObjEdit property for next button refresh) - setTimeout( function() { - RvySetPublishButtonCaption(rvyObjEdit.saveAs, true); - }, 50 ); - }); - */ - /**************************************************************************************************************************************/ -}); diff --git a/admin/rvy_post-block-edit-revisor.js b/admin/rvy_post-block-edit-revisor.js deleted file mode 100644 index 3007a103..00000000 --- a/admin/rvy_post-block-edit-revisor.js +++ /dev/null @@ -1,16 +0,0 @@ -jQuery(document).ready(function($){$(document).on('click','button.editor-post-publish-button,button.editor-post-save-draft',function(){var RvyRedirectCheckSaveInterval=setInterval(function(){let saving=wp.data.select('core/editor').isSavingPost();if(saving){clearInterval(RvyRedirectCheckSaveInterval);var RvyRedirectCheckSaveDoneInterval=setInterval(function(){let saving=wp.data.select('core/editor').isSavingPost();if(!saving){clearInterval(RvyRedirectCheckSaveDoneInterval);let goodsave=wp.data.select('core/editor').didPostSaveRequestSucceed();if(goodsave){var redirectProp='redirectURL';if(typeof rvyObjEdit[redirectProp]!='undefined'){var rurl=rvyObjEdit[redirectProp];var recipients=$('input[name="prev_cc_user[]"]:checked');if(recipients.length){var cc=recipients.map(function(){return $(this).val();}).get().join(',');rurl=rurl+'&cc='+cc;} -$(location).attr("href",rurl);}}}},50);}},10);});function RvyRecaptionElement(btnSelector,btnCaption){let node=document.querySelector(btnSelector);if(node){document.querySelector(btnSelector).innerText=`${btnCaption}`;}} -function RvySetPublishButtonCaption(caption,waitForSaveDraftButton,forceRegen,timeout){if(caption==''&&(typeof rvyObjEdit['publishCaptionCurrent']!='undefined')){caption=rvyObjEdit.publishCaptionCurrent;}else{rvyObjEdit.publishCaptionCurrent=caption;} -if(typeof waitForSaveDraftButton=='undefined'){waitForSaveDraftButton=false;} -if((!waitForSaveDraftButton||$('button.editor-post-switch-to-draft').filter(':visible').length||$('button.editor-post-save-draft').filter(':visible').length)&&$('button.editor-post-publish-button').length){RvyRecaptionElement('button.editor-post-publish-button',caption);}else{if((typeof timeout=='undefined')||parseInt(timeout)<50){timeout=15000;} -var RecaptionInterval=setInterval(RvyWaitForRecaption,100);var RecaptionTimeout=setTimeout(function(){clearInterval(RvyRecaptionInterval);},parseInt(timeout));function WaitForRecaption(timeout){if(!waitForSaveDraftButton||$('button.editor-post-switch-to-draft').filter(':visible').length||$('button.editor-post-save-draft').filter(':visible').length){if($('button.editor-post-publish-button').length){clearInterval(RvyRecaptionInterval);clearTimeout(RvyRecaptionTimeout);RvyRecaptionElement('button.editor-post-publish-button',caption);}else{if(waitForSaveDraftButton){clearInterval(RvyRecaptionInterval);clearTimeout(RvyRecaptionTimeout);}}}}}} -var RvyDetectPublishOptionsDivClosureInterval='';var RvyDetectPublishOptionsDiv=function(){if($('div.components-modal__header').length){clearInterval(RvyDetectPublishOptionsDivInterval);if($('span.pp-recaption-button').first()){rvyObjEdit.overrideColor=$('span.pp-recaption-button').first().css('color');} -var RvyDetectPublishOptionsClosure=function(){if(!$('div.components-modal__header').length){clearInterval(RvyDetectPublishOptionsDivClosureInterval);$('span.pp-recaption-button').hide();RvyInitInterval=setInterval(RvyInitializeBlockEditorModifications,50);RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,1000);}} -RvyDetectPublishOptionsDivClosureInterval=setInterval(RvyDetectPublishOptionsClosure,200);}} -var RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,1000);rvyObjEdit.publishCaptionCurrent=rvyObjEdit.publish;var RvyInitializeBlockEditorModifications=function(){if(($('button.editor-post-publish-button').length||$('button.editor-post-publish-panel__toggle').length)&&($('button.editor-post-switch-to-draft').length||$('button.editor-post-save-draft').length||$('div.publishpress-extended-post-status select:visible').length)){clearInterval(RvyInitInterval);if($('button.editor-post-publish-panel__toggle').length){if(typeof rvyObjEdit.prePublish!='undefined'&&rvyObjEdit.prePublish){RvyRecaptionElement('button.editor-post-publish-panel__toggle',rvyObjEdit.prePublish);} -$(document).on('click','button.editor-post-publish-panel__toggle,span.pp-recaption-prepublish-button',function(){RvySetPublishButtonCaption('',false,true);});}else{RvySetPublishButtonCaption(rvyObjEdit.publish,false,true);} -$('select.editor-post-author__select').parent().hide();$('div.edit-post-post-visibility').hide();$('button.editor-post-trash').hide();$('button.editor-post-switch-to-draft').hide();$('div.components-notice-list').hide();$('div.edit-post-post-status div.components-base-control__field input[type="checkbox"]').hide().next('label').hide();if(rvyObjEdit.userRevision){if($('button.editor-post-publish-button:visible').length&&!$('div.have-revision-notice').length){var html='
' -+rvyObjEdit.revisionExistsCaption;if(rvyObjEdit.editRevisionURL){html+=' '+rvyObjEdit.editRevisionURL+'';} -html+='
';$('div.edit-post-header-toolbar__left').after('
'+html+'
');}}}} -var RvyInitInterval=setInterval(RvyInitializeBlockEditorModifications,50);var RvyHideElements=function(){var ediv='div.edit-post-sidebar ';if($(ediv+'div.edit-post-post-visibility,'+ediv+'div.editor-post-link,'+ediv+'select.editor-post-author__select:visible,'+ediv+'div.components-base-control__field input[type="checkbox"]:visible,'+ediv+'button.editor-post-switch-to-draft,'+ediv+'button.editor-post-trash').length){$(ediv+'select.editor-post-author__select').parent().hide();$(ediv+'div.edit-post-post-visibility').hide();$(ediv+'button.editor-post-trash').hide();$(ediv+'button.editor-post-switch-to-draft').hide();$(ediv+'div.components-notice-list').hide();$(ediv+'div.edit-post-post-status div.components-base-control__field input[type="checkbox"]').each(function(e){$('label[for="'+$(this).attr('id')+'"]').hide();}).hide().next('label').hide();}} -var RvyHideInterval=setInterval(RvyHideElements,50);}); \ No newline at end of file diff --git a/admin/rvy_post-block-edit.dev.js b/admin/rvy_post-block-edit.dev.js index 6a414e3d..6d7415a5 100644 --- a/admin/rvy_post-block-edit.dev.js +++ b/admin/rvy_post-block-edit.dev.js @@ -1,63 +1,158 @@ /** -* Block Editor Modifications for Revisionary (Non-restricted Editor) +* Block Editor Modifications * -* By Kevin Behrens -* -* Copyright 2019, PublishPress +* Copyright 2021, PublishPress */ jQuery(document).ready( function($) { - /** - * Redirect back to edit.php if a save operation triggers scheduled revision creation - */ - $(document).on('click', 'button.editor-post-publish-button,button.editor-post-save-draft', function() { - var redirectCheckSaveInterval = setInterval( function() { - let saving = wp.data.select('core/editor').isSavingPost(); + // Add links for Pending and / or Scheduled Revisions diff screens + if (rvyObjEdit.scheduledRevisionsURL || rvyObjEdit.pendingRevisionsURL) { + var RvyPendingRevPanel = function() { + var ediv = 'div.edit-post-sidebar '; + + if (rvyObjEdit.scheduledRevisionsURL && !$(ediv + 'div.edit-post-last-revision__panel a.rvy-scheduled-revisions').length ) { + var sclone = $('div.edit-post-last-revision__panel a:first').clone().addClass('rvy-scheduled-revisions').attr('href', rvyObjEdit.scheduledRevisionsURL).html(rvyObjEdit.scheduledRevisionsCaption); + $(ediv + 'div.edit-post-last-revision__panel a:last').after(sclone); + } - if ( saving ) { - clearInterval(redirectCheckSaveInterval); + if (rvyObjEdit.pendingRevisionsURL && !$(ediv + 'div.edit-post-last-revision__panel a.rvy-pending-revisions').length ) { + var pclone = $('div.edit-post-last-revision__panel a:first').clone().addClass('rvy-pending-revisions').attr('href', rvyObjEdit.pendingRevisionsURL).html(rvyObjEdit.pendingRevisionsCaption); + $(ediv + 'div.edit-post-last-revision__panel a:last').after(pclone); + } + + $('div.edit-post-last-revision__panel').css('height', 'inherit'); + } + setInterval(RvyPendingRevPanel, 200); + } + + var rvyIsPublished = false; + + var RvySubmissionUI = function() { + if (rvyObjEdit.ajaxurl && !$('button.revision-approve').length) { - var redirectCheckSaveDoneInterval = setInterval( function() { - let saving = wp.data.select('core/editor').isSavingPost(); - - if ( ! saving ) { - clearInterval(redirectCheckSaveDoneInterval); - - let goodsave = wp.data.select('core/editor').didPostSaveRequestSucceed(); - if ( goodsave ) { - let savedAsRevision = wp.data.select('core/editor').getCurrentPostAttribute('save_as_revision'); - - if ( savedAsRevision ) { - var redirectProp = 'redirectURLpending'; - } else { - let savedScheduledRevision = wp.data.select('core/editor').getCurrentPostAttribute('new_scheduled_revision'); - - if ( savedScheduledRevision ) { - var redirectProp = 'redirectURLscheduled'; - } - } - - if (typeof redirectProp != 'undefined') { - if ( typeof rvyObjEdit[redirectProp] != 'undefined' ) { - var rurl = rvyObjEdit[redirectProp]; - var recipients = $('input[name="prev_cc_user[]"]:checked'); - - if ( recipients.length ) { - var cc = recipients.map(function() { - return $(this).val(); - }).get().join(','); - - rurl = rurl + '&cc=' + cc; - } - - $(location).attr("href", rurl); - } - } - } - } - }, 50 ); + var html = '
' + + + ''; + + if (rvyObjEdit.scheduleCaption) { + let postStatus = wp.data.select('core/editor').getCurrentPostAttribute('status'); + var publishedStatuses = Object.keys(rvyObjEdit.publishedStatuses).map(function (key) { return rvyObjEdit.publishedStatuses[key]; }); + rvyIsPublished = publishedStatuses.indexOf(postStatus) >= 0; + + if (rvyIsPublished) { + html += '' + + + ''; + } } - }, 10 ); + + html += '
'; + + $('div.edit-post-post-schedule').after(html); + + if (rvyCreationDisabled) { + $('button.revision-approve').prop('disabled', 'disabled'); + $('button.revision-schedule').prop('disabled', 'disabled'); + $('a.revision-approve').attr('title', rvyObjEdit.actionDisabledTitle); + $('a.revision-schedule').attr('title', rvyObjEdit.scheduleDisabledTitle); + } else { + $('button.revision-approve').prop('disabled', false); + $('button.revision-schedule').prop('disabled', false); + $('a.revision-approve').attr('title', rvyObjEdit.actionTitle); + $('a.revision-schedule').attr('title', rvyObjEdit.scheduleTitle); + } + } + } + var RvyUIInterval = setInterval(RvySubmissionUI, 200); + + function RvyGetRandomInt(max) { + return Math.floor(Math.random() * max); + } + + var rvyCreationDisabled = false; + + $(document).on('click', 'div.postbox-container', function() { + rvyCreationDisabled = true; + $('button.revision-approve').prop('disabled', 'disabled'); + $('button.revision-schedule').prop('disabled', 'disabled'); + $('a.revision-approve').attr('title', rvyObjEdit.actionDisabledTitle); + $('a.revision-schedule').attr('title', rvyObjEdit.scheduleDisabledTitle); + }); + + $(document).on('click', 'button.editor-post-publish-button', function() { + rvyCreationDisabled = false; + $('button.revision-approve').prop('disabled', false); + $('button.revision-schedule').prop('disabled', false); + $('a.revision-approve').attr('title', rvyObjEdit.actionTitle); + $('a.revision-schedule').attr('title', rvyObjEdit.scheduleTitle); + }); + + $(document).on('click', 'button.revision-create', function() { + if ($('a.revision-create').attr('disabled')) { + return; + } + + var revisionaryCreateDone = function () { + $('.revision-create').hide(); + $('.revision-created').show(); + + $('button.revision-created a').attr('href', rvyObjEdit.completedURL); + } + + var revisionaryCreateError = function (data, txtStatus) { + $('div.rvy-creation-ui').html(rvyObjEdit.errorCaption); + } + + var data = {'rvy_ajax_field': 'create_revision', 'rvy_ajax_value': wp.data.select('core/editor').getCurrentPostId(), 'rvy_date_selection': RvyTimeSelection, 'nc': RvyGetRandomInt(99999999)}; + + $.ajax({ + url: rvyObjEdit.ajaxurl, + data: data, + dataType: "html", + success: revisionaryCreateDone, + error: revisionaryCreateError + }); + }); + + $(document).on('click', 'button.revision-schedule', function() { + if ($('a.revision-schedule').attr('disabled')) { + return; + } + + var revisionaryScheduleDone = function () { + $('.revision-schedule').hide(); + $('.revision-scheduled').show(); + + $('button.revision-scheduled a').attr('href', rvyObjEdit.scheduledURL); + } + + var revisionaryScheduleError = function (data, txtStatus) { + $('div.rvy-creation-ui').html(rvyObjEdit.errorCaption); + } + + var data = {'rvy_ajax_field': 'create_scheduled_revision', 'rvy_ajax_value': wp.data.select('core/editor').getCurrentPostId(), 'rvy_date_selection': RvyTimeSelection, 'nc': RvyGetRandomInt(99999999)}; + + $.ajax({ + url: rvyObjEdit.ajaxurl, + data: data, + dataType: "html", + success: revisionaryScheduleDone, + error: revisionaryScheduleError + }); }); /** @@ -67,132 +162,69 @@ jQuery(document).ready( function($) { * If the selected date is already past, change Publish button back to "Update" */ var RvySelectedFutureDate = false; + var RvyTimeSelection = ''; + + var RvyRefreshScheduleButton = function() { + var selectedDateHTML = $('button.edit-post-post-schedule__toggle').html(); + + if (! /\d/.test(selectedDateHTML) || !rvyIsPublished) { + RvyTimeSelection = ''; + $('.rvy-creation-ui .revision-schedule').hide(); + $('.rvy-creation-ui .revision-scheduled').hide(); + $('.rvy-creation-ui .revision-created').hide(); + $('.rvy-creation-ui .revision-create').show(); + return; + } - var RvyRefreshPublishButtonCaptionWrapper = function() { RvyRefreshPublishButtonCaption(); } - - var RvyRefreshPublishButtonCaption = function() { - var selectedDate = new Date( $('button.edit-post-post-schedule__toggle').html() ); - var tdiff = selectedDate.getTime() - Date.now(); + var selectedDate = new Date( selectedDateHTML ); + - let postStatus = wp.data.select('core/editor').getCurrentPostAttribute('status'); + RvyTimeSelection = selectedDate.getTime(); + var tdiff = RvyTimeSelection - Date.now(); - var publishedStatuses = Object.keys(rvyObjEdit.publishedStatuses).map(function (key) { return rvyObjEdit.publishedStatuses[key]; }); - var isPublished = publishedStatuses.indexOf(postStatus) >= 0; + RvyTimeSelection = RvyTimeSelection / 1000; // pass seconds to server - if ((tdiff > 1000) && isPublished) { - let node = document.querySelector('button.editor-post-publish-button'); - if (node && !$('input.rvy_save_as_revision:checked').length) { - node.innerText = `${rvyObjEdit.ScheduleCaption}`; - $('input.rvy_save_as_revision').closest('label').attr('title', rvyObjEdit.revisionTitleFuture); - } + if ((tdiff > 1000)) { RvySelectedFutureDate = true; - setTimeout(RvyRefreshPublishButtonCaptionWrapper, tdiff + 2000); + + $('.rvy-creation-ui .revision-create').hide(); + $('.rvy-creation-ui .revision-created').hide(); + $('.rvy-creation-ui .revision-scheduled').hide(); + $('.rvy-creation-ui .revision-schedule').show(); + } else { + $('.rvy-creation-ui .revision-schedule').hide(); + $('.rvy-creation-ui .revision-scheduled').hide(); + $('.rvy-creation-ui .revision-created').hide(); + $('.rvy-creation-ui .revision-create').show(); + if ( tdiff <= 0 ) { if ( RvySelectedFutureDate ) { // If button isn't already recaptioned, don't mess with it or even query for it - let node = document.querySelector('button.editor-post-publish-button'); - if (node) { - node.innerText = `${rvyObjEdit.UpdateCaption}`; - $('input.rvy_save_as_revision').closest('label').attr('title', rvyObjEdit.revisionTitle); - } + RvyTimeSelection = ''; } } } } - + /** * Detect date selection by display, then closure of popup dialog */ var RvyDetectPublishOptionsDivClosureInterval = false; - var RvyRefreshPublishButtonCaptionInterval = false; var RvyDetectPublishOptionsDiv = function() { if ( $('div.edit-post-post-schedule__dialog').length ) { clearInterval( RvyDetectPublishOptionsDivInterval ); - RvyRefreshPublishButtonCaptionInterval = setInterval(RvyRefreshPublishButtonCaption, 500); var RvyDetectPublishOptionsClosure = function() { if ( ! $('div.edit-post-post-schedule__dialog').length ) { clearInterval(RvyDetectPublishOptionsDivClosureInterval); - clearInterval(RvyRefreshPublishButtonCaptionWrapper); RvyDetectPublishOptionsDivInterval = setInterval(RvyDetectPublishOptionsDiv, 500); - RvyRefreshPublishButtonCaption(); - } - } - RvyDetectPublishOptionsDivClosureInterval = setInterval(RvyDetectPublishOptionsClosure, 200); - } - } - if (rvyObjEdit.ScheduleCaption) { - var RvyDetectPublishOptionsDivInterval = setInterval(RvyDetectPublishOptionsDiv, 500); - } - - // @todo: Don't show Pending Revision checkbox when post is not publish, private or a custom privacy status - // @todo: Fix formatting of Pending Revision checkbox when Pre-Publish check is enabled - var RvySaveAsRevision = function() { - let postStatus = wp.data.select('core/editor').getCurrentPostAttribute('status'); - - var revisableStatuses = Object.keys(rvyObjEdit.revisableStatuses).map(function (key) { return rvyObjEdit.revisableStatuses[key]; }); - - if (revisableStatuses.indexOf(postStatus) >= 0) { - if ($('button.editor-post-publish-panel__toggle:visible').length && !$('div.editor-post-publish-panel:visible').length) { - $('#rvy_save_as_revision:visible').parent('label').hide(); - } else { - if (rvyObjEdit.revision && !$('#rvy_save_as_revision:visible').length) { - $('#rvy_save_as_revision').parent('label').remove(); - - var attribs = rvyObjEdit.defaultPending ? ' checked="checked"' : ''; - - if (rvyObjEdit.defaultPending) { - RvyRecaptionElement('button.editor-post-publish-button', rvyObjEdit.SaveCaption); - } - - $('button.editor-post-publish-button').last().after(''); - $('.editor-post-publish-panel__header-cancel-button').css('margin-bottom', '20px'); /* Pre-publish cancel button alignment when revision submission is enabled for unpublished posts */ + RvyRefreshScheduleButton(); } - - $('#rvy_save_as_revision').parent('label').last().show(); } - } else { - $('#rvy_save_as_revision').parent('label').remove(); - } - } - var RvyRecaptionSaveDraftInterval = setInterval(RvySaveAsRevision, 100); - - function RvyRecaptionElement(btnSelector, btnCaption) { - let node = document.querySelector(btnSelector); - - if (node) { - document.querySelector(btnSelector).innerText = `${btnCaption}`; + RvyDetectPublishOptionsDivClosureInterval = setInterval(RvyDetectPublishOptionsClosure, 200); } } - $(document).on('click', '#rvy_save_as_revision', function(){ - var data = {'rvy_ajax_field': 'save_as_revision', 'rvy_ajax_value': $(this).prop('checked'), 'post_id': wp.data.select('core/editor').getCurrentPostId()}; - $.ajax({url: rvyObjEdit.ajaxurl, data: data, dataType: "html", success: function(){}, error: function(){}}); - - if($(this).prop('checked')) { - RvyRecaptionElement('button.editor-post-publish-button', rvyObjEdit.SaveCaption); - } else { - RvyRecaptionElement('button.editor-post-publish-button', rvyObjEdit.UpdateCaption); - } - }); - - if (rvyObjEdit.scheduledRevisionsURL || rvyObjEdit.pendingRevisionsURL) { - var RvyPendingRevPanel = function() { - var ediv = 'div.edit-post-sidebar '; - - if (rvyObjEdit.scheduledRevisionsURL && !$(ediv + 'div.edit-post-last-revision__panel a.rvy-scheduled-revisions').length ) { - var sclone = $('div.edit-post-last-revision__panel a:first').clone().addClass('rvy-scheduled-revisions').attr('href', rvyObjEdit.scheduledRevisionsURL).html(rvyObjEdit.scheduledRevisionsCaption); - $(ediv + 'div.edit-post-last-revision__panel a:last').after(sclone); - } - - if (rvyObjEdit.pendingRevisionsURL && !$(ediv + 'div.edit-post-last-revision__panel a.rvy-pending-revisions').length ) { - var pclone = $('div.edit-post-last-revision__panel a:first').clone().addClass('rvy-pending-revisions').attr('href', rvyObjEdit.pendingRevisionsURL).html(rvyObjEdit.pendingRevisionsCaption); - $(ediv + 'div.edit-post-last-revision__panel a:last').after(pclone); - } - - $('div.edit-post-last-revision__panel').css('height', 'inherit'); - } - var RvyPendingRevPanelInt = setInterval(RvyPendingRevPanel, 200); - } + var RvyDetectPublishOptionsDivInterval = setInterval(RvyDetectPublishOptionsDiv, 500); }); diff --git a/admin/rvy_post-block-edit.js b/admin/rvy_post-block-edit.js index ca55d26f..34b2fcbb 100644 --- a/admin/rvy_post-block-edit.js +++ b/admin/rvy_post-block-edit.js @@ -1,16 +1,32 @@ -jQuery(document).ready(function($){$(document).on('click','button.editor-post-publish-button,button.editor-post-save-draft',function(){var redirectCheckSaveInterval=setInterval(function(){let saving=wp.data.select('core/editor').isSavingPost();if(saving){clearInterval(redirectCheckSaveInterval);var redirectCheckSaveDoneInterval=setInterval(function(){let saving=wp.data.select('core/editor').isSavingPost();if(!saving){clearInterval(redirectCheckSaveDoneInterval);let goodsave=wp.data.select('core/editor').didPostSaveRequestSucceed();if(goodsave){let savedAsRevision=wp.data.select('core/editor').getCurrentPostAttribute('save_as_revision');if(savedAsRevision){var redirectProp='redirectURLpending';}else{let savedScheduledRevision=wp.data.select('core/editor').getCurrentPostAttribute('new_scheduled_revision');if(savedScheduledRevision){var redirectProp='redirectURLscheduled';}} -if(typeof redirectProp!='undefined'){if(typeof rvyObjEdit[redirectProp]!='undefined'){var rurl=rvyObjEdit[redirectProp];var recipients=$('input[name="prev_cc_user[]"]:checked');if(recipients.length){var cc=recipients.map(function(){return $(this).val();}).get().join(',');rurl=rurl+'&cc='+cc;} -$(location).attr("href",rurl);}}}}},50);}},10);});var RvySelectedFutureDate=false;var RvyRefreshPublishButtonCaptionWrapper=function(){RvyRefreshPublishButtonCaption();} -var RvyRefreshPublishButtonCaption=function(){var selectedDate=new Date($('button.edit-post-post-schedule__toggle').html());var tdiff=selectedDate.getTime()-Date.now();let postStatus=wp.data.select('core/editor').getCurrentPostAttribute('status');var publishedStatuses=Object.keys(rvyObjEdit.publishedStatuses).map(function(key){return rvyObjEdit.publishedStatuses[key];});var isPublished=publishedStatuses.indexOf(postStatus)>=0;if((tdiff>1000)&&isPublished){let node=document.querySelector('button.editor-post-publish-button');if(node&&!$('input.rvy_save_as_revision:checked').length){node.innerText=`${rvyObjEdit.ScheduleCaption}`;$('input.rvy_save_as_revision').closest('label').attr('title',rvyObjEdit.revisionTitleFuture);} -RvySelectedFutureDate=true;setTimeout(RvyRefreshPublishButtonCaptionWrapper,tdiff+2000);}else{if(tdiff<=0){if(RvySelectedFutureDate){let node=document.querySelector('button.editor-post-publish-button');if(node){node.innerText=`${rvyObjEdit.UpdateCaption}`;$('input.rvy_save_as_revision').closest('label').attr('title',rvyObjEdit.revisionTitle);}}}}} -var RvyDetectPublishOptionsDivClosureInterval=false;var RvyRefreshPublishButtonCaptionInterval=false;var RvyDetectPublishOptionsDiv=function(){if($('div.edit-post-post-schedule__dialog').length){clearInterval(RvyDetectPublishOptionsDivInterval);RvyRefreshPublishButtonCaptionInterval=setInterval(RvyRefreshPublishButtonCaption,500);var RvyDetectPublishOptionsClosure=function(){if(!$('div.edit-post-post-schedule__dialog').length){clearInterval(RvyDetectPublishOptionsDivClosureInterval);clearInterval(RvyRefreshPublishButtonCaptionWrapper);RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,500);RvyRefreshPublishButtonCaption();}} -RvyDetectPublishOptionsDivClosureInterval=setInterval(RvyDetectPublishOptionsClosure,200);}} -if(rvyObjEdit.ScheduleCaption){var RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,500);} -var RvySaveAsRevision=function(){let postStatus=wp.data.select('core/editor').getCurrentPostAttribute('status');var revisableStatuses=Object.keys(rvyObjEdit.revisableStatuses).map(function(key){return rvyObjEdit.revisableStatuses[key];});if(revisableStatuses.indexOf(postStatus)>=0){if($('button.editor-post-publish-panel__toggle:visible').length&&!$('div.editor-post-publish-panel:visible').length){$('#rvy_save_as_revision:visible').parent('label').hide();}else{if(rvyObjEdit.revision&&!$('#rvy_save_as_revision:visible').length){$('#rvy_save_as_revision').parent('label').remove();var attribs=rvyObjEdit.defaultPending?' checked="checked"':'';if(rvyObjEdit.defaultPending){RvyRecaptionElement('button.editor-post-publish-button',rvyObjEdit.SaveCaption);} -$('button.editor-post-publish-button').last().after('');$('.editor-post-publish-panel__header-cancel-button').css('margin-bottom','20px');} -$('#rvy_save_as_revision').parent('label').last().show();}}else{$('#rvy_save_as_revision').parent('label').remove();}} -var RvyRecaptionSaveDraftInterval=setInterval(RvySaveAsRevision,100);function RvyRecaptionElement(btnSelector,btnCaption){let node=document.querySelector(btnSelector);if(node){document.querySelector(btnSelector).innerText=`${btnCaption}`;}} -$(document).on('click','#rvy_save_as_revision',function(){var data={'rvy_ajax_field':'save_as_revision','rvy_ajax_value':$(this).prop('checked'),'post_id':wp.data.select('core/editor').getCurrentPostId()};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:function(){},error:function(){}});if($(this).prop('checked')){RvyRecaptionElement('button.editor-post-publish-button',rvyObjEdit.SaveCaption);}else{RvyRecaptionElement('button.editor-post-publish-button',rvyObjEdit.UpdateCaption);}});if(rvyObjEdit.scheduledRevisionsURL||rvyObjEdit.pendingRevisionsURL){var RvyPendingRevPanel=function(){var ediv='div.edit-post-sidebar ';if(rvyObjEdit.scheduledRevisionsURL&&!$(ediv+'div.edit-post-last-revision__panel a.rvy-scheduled-revisions').length){var sclone=$('div.edit-post-last-revision__panel a:first').clone().addClass('rvy-scheduled-revisions').attr('href',rvyObjEdit.scheduledRevisionsURL).html(rvyObjEdit.scheduledRevisionsCaption);$(ediv+'div.edit-post-last-revision__panel a:last').after(sclone);} +jQuery(document).ready(function($){if(rvyObjEdit.scheduledRevisionsURL||rvyObjEdit.pendingRevisionsURL){var RvyPendingRevPanel=function(){var ediv='div.edit-post-sidebar ';if(rvyObjEdit.scheduledRevisionsURL&&!$(ediv+'div.edit-post-last-revision__panel a.rvy-scheduled-revisions').length){var sclone=$('div.edit-post-last-revision__panel a:first').clone().addClass('rvy-scheduled-revisions').attr('href',rvyObjEdit.scheduledRevisionsURL).html(rvyObjEdit.scheduledRevisionsCaption);$(ediv+'div.edit-post-last-revision__panel a:last').after(sclone);} if(rvyObjEdit.pendingRevisionsURL&&!$(ediv+'div.edit-post-last-revision__panel a.rvy-pending-revisions').length){var pclone=$('div.edit-post-last-revision__panel a:first').clone().addClass('rvy-pending-revisions').attr('href',rvyObjEdit.pendingRevisionsURL).html(rvyObjEdit.pendingRevisionsCaption);$(ediv+'div.edit-post-last-revision__panel a:last').after(pclone);} $('div.edit-post-last-revision__panel').css('height','inherit');} -var RvyPendingRevPanelInt=setInterval(RvyPendingRevPanel,200);}}); \ No newline at end of file +setInterval(RvyPendingRevPanel,200);} +var rvyIsPublished=false;var RvySubmissionUI=function(){if(rvyObjEdit.ajaxurl&&!$('button.revision-approve').length){var html='
' ++'';if(rvyObjEdit.scheduleCaption){let postStatus=wp.data.select('core/editor').getCurrentPostAttribute('status');var publishedStatuses=Object.keys(rvyObjEdit.publishedStatuses).map(function(key){return rvyObjEdit.publishedStatuses[key];});rvyIsPublished=publishedStatuses.indexOf(postStatus)>=0;if(rvyIsPublished){html+='' ++'';}} +html+='
';$('div.edit-post-post-schedule').after(html);if(rvyCreationDisabled){$('button.revision-approve').prop('disabled','disabled');$('button.revision-schedule').prop('disabled','disabled');$('a.revision-approve').attr('title',rvyObjEdit.actionDisabledTitle);$('a.revision-schedule').attr('title',rvyObjEdit.scheduleDisabledTitle);}else{$('button.revision-approve').prop('disabled',false);$('button.revision-schedule').prop('disabled',false);$('a.revision-approve').attr('title',rvyObjEdit.actionTitle);$('a.revision-schedule').attr('title',rvyObjEdit.scheduleTitle);}}} +var RvyUIInterval=setInterval(RvySubmissionUI,200);function RvyGetRandomInt(max){return Math.floor(Math.random()*max);} +var rvyCreationDisabled=false;$(document).on('click','div.postbox-container',function(){rvyCreationDisabled=true;$('button.revision-approve').prop('disabled','disabled');$('button.revision-schedule').prop('disabled','disabled');$('a.revision-approve').attr('title',rvyObjEdit.actionDisabledTitle);$('a.revision-schedule').attr('title',rvyObjEdit.scheduleDisabledTitle);});$(document).on('click','button.editor-post-publish-button',function(){rvyCreationDisabled=false;$('button.revision-approve').prop('disabled',false);$('button.revision-schedule').prop('disabled',false);$('a.revision-approve').attr('title',rvyObjEdit.actionTitle);$('a.revision-schedule').attr('title',rvyObjEdit.scheduleTitle);});$(document).on('click','button.revision-create',function(){if($('a.revision-create').attr('disabled')){return;} +var revisionaryCreateDone=function(){$('.revision-create').hide();$('.revision-created').show();$('button.revision-created a').attr('href',rvyObjEdit.completedURL);} +var revisionaryCreateError=function(data,txtStatus){$('div.rvy-creation-ui').html(rvyObjEdit.errorCaption);} +var data={'rvy_ajax_field':'create_revision','rvy_ajax_value':wp.data.select('core/editor').getCurrentPostId(),'rvy_date_selection':RvyTimeSelection,'nc':RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryCreateDone,error:revisionaryCreateError});});$(document).on('click','button.revision-schedule',function(){if($('a.revision-schedule').attr('disabled')){return;} +var revisionaryScheduleDone=function(){$('.revision-schedule').hide();$('.revision-scheduled').show();$('button.revision-scheduled a').attr('href',rvyObjEdit.scheduledURL);} +var revisionaryScheduleError=function(data,txtStatus){$('div.rvy-creation-ui').html(rvyObjEdit.errorCaption);} +var data={'rvy_ajax_field':'create_scheduled_revision','rvy_ajax_value':wp.data.select('core/editor').getCurrentPostId(),'rvy_date_selection':RvyTimeSelection,'nc':RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryScheduleDone,error:revisionaryScheduleError});});var RvySelectedFutureDate=false;var RvyTimeSelection='';var RvyRefreshScheduleButton=function(){var selectedDateHTML=$('button.edit-post-post-schedule__toggle').html();if(!/\d/.test(selectedDateHTML)||!rvyIsPublished){RvyTimeSelection='';$('.rvy-creation-ui .revision-schedule').hide();$('.rvy-creation-ui .revision-scheduled').hide();$('.rvy-creation-ui .revision-created').hide();$('.rvy-creation-ui .revision-create').show();return;} +var selectedDate=new Date(selectedDateHTML);RvyTimeSelection=selectedDate.getTime();var tdiff=RvyTimeSelection-Date.now();RvyTimeSelection=RvyTimeSelection/1000;if((tdiff>1000)){RvySelectedFutureDate=true;$('.rvy-creation-ui .revision-create').hide();$('.rvy-creation-ui .revision-created').hide();$('.rvy-creation-ui .revision-scheduled').hide();$('.rvy-creation-ui .revision-schedule').show();}else{$('.rvy-creation-ui .revision-schedule').hide();$('.rvy-creation-ui .revision-scheduled').hide();$('.rvy-creation-ui .revision-created').hide();$('.rvy-creation-ui .revision-create').show();if(tdiff<=0){if(RvySelectedFutureDate){RvyTimeSelection='';}}}} +var RvyDetectPublishOptionsDivClosureInterval=false;var RvyDetectPublishOptionsDiv=function(){if($('div.edit-post-post-schedule__dialog').length){clearInterval(RvyDetectPublishOptionsDivInterval);var RvyDetectPublishOptionsClosure=function(){if(!$('div.edit-post-post-schedule__dialog').length){clearInterval(RvyDetectPublishOptionsDivClosureInterval);RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,500);RvyRefreshScheduleButton();}} +RvyDetectPublishOptionsDivClosureInterval=setInterval(RvyDetectPublishOptionsClosure,200);}} +var RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,500);}); \ No newline at end of file diff --git a/admin/rvy_post-classic-edit.dev.js b/admin/rvy_post-classic-edit.dev.js new file mode 100644 index 00000000..766797a1 --- /dev/null +++ b/admin/rvy_post-classic-edit.dev.js @@ -0,0 +1,213 @@ +/** +* Classic Editor Modifications for Revisionary +* +* By Kevin Behrens +* +* Copyright 2021, PublishPress +*/ +jQuery(document).ready( function($) { + var RvySubmissionUI = function() { + if (rvyObjEdit.ajaxurl && !$('div.rvy-creation-ui').length) { + + var html = '
' + + rvyObjEdit.actionCaption + '' + + + ''; + + if (rvyObjEdit.scheduleCaption) { + var publishedStatuses = Object.keys(rvyObjEdit.publishedStatuses).map(function (key) { return rvyObjEdit.publishedStatuses[key]; }); + rvyIsPublished = publishedStatuses.indexOf(rvyObjEdit.currentStatus) >= 0; + + if (rvyIsPublished) { + html += '' + + + ''; + } + } + + html += '
'; + + $('#delete-action').before(html); + } + } + var RvyUIInterval = setInterval(RvySubmissionUI, 100); + + /* + $(document).on('click', 'a.save-timestamp, a.cancel-timestamp', function() { + wp.autosave.server.triggerSave(); + }); + */ + + function RvyGetRandomInt(max) { + return Math.floor(Math.random() * max); + } + + $(document).on('click', 'a.revision-create', function() { + if ($('a.revision-create').attr('disabled')) { + return; + } + + $('a.revision-create').attr('disabled', 'disabled'); + + if (wp.autosave.server.postChanged()) { + wp.autosave.server.triggerSave(); + var approvalDelay = 250; + } else { + var approvalDelay = 1; + } + + var revisionaryCreateDone = function () { + $('.revision-create').hide(); + $('.revision-created-wrapper').show(); + + $('div.revision-created-wrapper a.revision-edit').attr('href', rvyObjEdit.completedURL); + $('a.revision-create').removeAttr('disabled'); + } + + var revisionaryCreateError = function (data, txtStatus) { + $('div.rvy-creation-ui').html(rvyObjEdit.errorCaption); + } + + var tmoSubmit = setInterval(function() { + if (!wp.autosave.server.postChanged()) { + var data = {'rvy_ajax_field': 'create_revision', 'rvy_ajax_value': rvyObjEdit.postID, 'rvy_date_selection': RvyTimeSelection, 'nc': RvyGetRandomInt(99999999)}; + + $.ajax({ + url: rvyObjEdit.ajaxurl, + data: data, + dataType: "html", + success: revisionaryCreateDone, + error: revisionaryCreateError + }); + + clearInterval(tmoSubmit); + } + }, approvalDelay); + + }); + + $(document).on('click', 'div.postbox-container', function() { + $('a.revision-create').attr('disabled', 'disabled'); + $('a.revision-schedule').attr('disabled', 'disabled'); + }); + + $(document).on('click', 'a.revision-schedule', function() { + if ($('a.revision-schedule').attr('disabled')) { + return; + } + + $('a.revision-schedule').attr('disabled', 'disabled'); + + if (wp.autosave.server.postChanged()) { + wp.autosave.server.triggerSave(); + var approvalDelay = 250; + } else { + var approvalDelay = 1; + } + + var revisionaryScheduleDone = function () { + $('.revision-schedule').hide(); + $('.revision-scheduled-wrapper').show(); + + $('div.revision-scheduled-wrapper a.revision-edit').attr('href', rvyObjEdit.scheduledURL); + $('a.revision-schedule').removeAttr('disabled'); + } + + var revisionaryScheduleError = function (data, txtStatus) { + $('div.rvy-creation-ui').html(rvyObjEdit.errorCaption); + } + + var tmoSubmit = setInterval(function() { + if (!wp.autosave.server.postChanged()) { + var data = {'rvy_ajax_field': 'create_scheduled_revision', 'rvy_ajax_value': rvyObjEdit.postID, 'rvy_date_selection': RvyTimeSelection, 'nc': RvyGetRandomInt(99999999)}; + + $.ajax({ + url: rvyObjEdit.ajaxurl, + data: data, + dataType: "html", + success: revisionaryScheduleDone, + error: revisionaryScheduleError + }); + + clearInterval(tmoSubmit); + } + }, approvalDelay); + }); + + $(document).on('click', '#post-body-content *, #content_ifr *, #wp-content-editor-container *, #tinymce *, #submitpost, span.revision-created', function() { + RvyRefreshScheduleButton(); + }); + + + /** + * If date is set to future, change Publish button caption to "Schedule Revision", + * Then set a self-interval to refresh that status once the selected date is no longer future. + * + * If the selected date is already past, change Publish button back to "Update" + */ + var RvySelectedFutureDate = false; + var RvyTimeSelection = ''; + + var RvyRefreshScheduleButton = function() { + var selectedDateHTML = $('#timestamp').html(); + + if (! /\d/.test(selectedDateHTML) || !rvyIsPublished) { + RvyTimeSelection = ''; + $('.rvy-creation-ui .revision-schedule').hide(); + $('.rvy-creation-ui .revision-scheduled-wrapper').hide(); + $('.rvy-creation-ui .revision-created-wrapper').hide(); + $('.rvy-creation-ui .revision-create').show(); + return; + } + + var dateStr = $('#mm').val() + '/' + $('#jj').val() + '/' + $('#aa').val() + ' ' + $('#hh').val() + ':' + $('#mn').val() + ':00'; + var selectedDate = new Date( dateStr ); + + RvyTimeSelection = selectedDate.getTime(); + var tdiff = RvyTimeSelection - Date.now(); + + RvyTimeSelection = RvyTimeSelection / 1000; // pass seconds to server + + console.log(tdiff); + + if ((tdiff > 1000)) { + RvySelectedFutureDate = true; + + $('.rvy-creation-ui .revision-create').hide(); + $('.rvy-creation-ui .revision-created-wrapper').hide(); + $('.rvy-creation-ui .revision-scheduled-wrapper').hide(); + $('.rvy-creation-ui .revision-schedule').show(); + + $('#publish').hide(); + + } else { + $('.rvy-creation-ui .revision-schedule').hide(); + $('.rvy-creation-ui .revision-scheduled-wrapper').hide(); + $('.rvy-creation-ui .revision-created-wrapper').hide(); + $('.rvy-creation-ui .revision-create').show(); + + if ( tdiff <= 0 ) { + if ( RvySelectedFutureDate ) { // If button isn't already recaptioned, don't mess with it or even query for it + RvyTimeSelection = ''; + } + } + + $('#publish').show(); + } + } + + $(document).on('click', 'a.save-timestamp, a.cancel-timestamp', function() { + RvyRefreshScheduleButton(); + }); +}); diff --git a/admin/rvy_post-classic-edit.js b/admin/rvy_post-classic-edit.js new file mode 100644 index 00000000..29d582fd --- /dev/null +++ b/admin/rvy_post-classic-edit.js @@ -0,0 +1,27 @@ +jQuery(document).ready(function($){var RvySubmissionUI=function(){if(rvyObjEdit.ajaxurl&&!$('div.rvy-creation-ui').length){var html='
' ++rvyObjEdit.actionCaption+'' ++'';if(rvyObjEdit.scheduleCaption){var publishedStatuses=Object.keys(rvyObjEdit.publishedStatuses).map(function(key){return rvyObjEdit.publishedStatuses[key];});rvyIsPublished=publishedStatuses.indexOf(rvyObjEdit.currentStatus)>=0;if(rvyIsPublished){html+='' ++'';}} +html+='
';$('#delete-action').before(html);}} +var RvyUIInterval=setInterval(RvySubmissionUI,100);function RvyGetRandomInt(max){return Math.floor(Math.random()*max);} +$(document).on('click','a.revision-create',function(){if($('a.revision-create').attr('disabled')){return;} +$('a.revision-create').attr('disabled','disabled');if(wp.autosave.server.postChanged()){wp.autosave.server.triggerSave();var approvalDelay=250;}else{var approvalDelay=1;} +var revisionaryCreateDone=function(){$('.revision-create').hide();$('.revision-created-wrapper').show();$('div.revision-created-wrapper a.revision-edit').attr('href',rvyObjEdit.completedURL);$('a.revision-create').removeAttr('disabled');} +var revisionaryCreateError=function(data,txtStatus){$('div.rvy-creation-ui').html(rvyObjEdit.errorCaption);} +var tmoSubmit=setInterval(function(){if(!wp.autosave.server.postChanged()){var data={'rvy_ajax_field':'create_revision','rvy_ajax_value':rvyObjEdit.postID,'rvy_date_selection':RvyTimeSelection,'nc':RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryCreateDone,error:revisionaryCreateError});clearInterval(tmoSubmit);}},approvalDelay);});$(document).on('click','div.postbox-container',function(){$('a.revision-create').attr('disabled','disabled');$('a.revision-schedule').attr('disabled','disabled');});$(document).on('click','a.revision-schedule',function(){if($('a.revision-schedule').attr('disabled')){return;} +$('a.revision-schedule').attr('disabled','disabled');if(wp.autosave.server.postChanged()){wp.autosave.server.triggerSave();var approvalDelay=250;}else{var approvalDelay=1;} +var revisionaryScheduleDone=function(){$('.revision-schedule').hide();$('.revision-scheduled-wrapper').show();$('div.revision-scheduled-wrapper a.revision-edit').attr('href',rvyObjEdit.scheduledURL);$('a.revision-schedule').removeAttr('disabled');} +var revisionaryScheduleError=function(data,txtStatus){$('div.rvy-creation-ui').html(rvyObjEdit.errorCaption);} +var tmoSubmit=setInterval(function(){if(!wp.autosave.server.postChanged()){var data={'rvy_ajax_field':'create_scheduled_revision','rvy_ajax_value':rvyObjEdit.postID,'rvy_date_selection':RvyTimeSelection,'nc':RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryScheduleDone,error:revisionaryScheduleError});clearInterval(tmoSubmit);}},approvalDelay);});$(document).on('click','#post-body-content *, #content_ifr *, #wp-content-editor-container *, #tinymce *, #submitpost, span.revision-created',function(){RvyRefreshScheduleButton();});var RvySelectedFutureDate=false;var RvyTimeSelection='';var RvyRefreshScheduleButton=function(){var selectedDateHTML=$('#timestamp').html();if(!/\d/.test(selectedDateHTML)||!rvyIsPublished){RvyTimeSelection='';$('.rvy-creation-ui .revision-schedule').hide();$('.rvy-creation-ui .revision-scheduled-wrapper').hide();$('.rvy-creation-ui .revision-created-wrapper').hide();$('.rvy-creation-ui .revision-create').show();return;} +var dateStr=$('#mm').val()+'/'+$('#jj').val()+'/'+$('#aa').val()+' '+$('#hh').val()+':'+$('#mn').val()+':00';var selectedDate=new Date(dateStr);RvyTimeSelection=selectedDate.getTime();var tdiff=RvyTimeSelection-Date.now();RvyTimeSelection=RvyTimeSelection/1000;console.log(tdiff);if((tdiff>1000)){RvySelectedFutureDate=true;$('.rvy-creation-ui .revision-create').hide();$('.rvy-creation-ui .revision-created-wrapper').hide();$('.rvy-creation-ui .revision-scheduled-wrapper').hide();$('.rvy-creation-ui .revision-schedule').show();$('#publish').hide();}else{$('.rvy-creation-ui .revision-schedule').hide();$('.rvy-creation-ui .revision-scheduled-wrapper').hide();$('.rvy-creation-ui .revision-created-wrapper').hide();$('.rvy-creation-ui .revision-create').show();if(tdiff<=0){if(RvySelectedFutureDate){RvyTimeSelection='';}} +$('#publish').show();}} +$(document).on('click','a.save-timestamp, a.cancel-timestamp',function(){RvyRefreshScheduleButton();});}); \ No newline at end of file diff --git a/admin/rvy_revision-block-edit.dev.js b/admin/rvy_revision-block-edit.dev.js index 7601a68f..bbc025ba 100644 --- a/admin/rvy_revision-block-edit.dev.js +++ b/admin/rvy_revision-block-edit.dev.js @@ -1,81 +1,11 @@ /** -* Block Editor Modifications for Revisionary (Revision Submitter) +* Block Editor Modifications for Revisionary * * By Kevin Behrens * * Copyright 2021, PublishPress */ jQuery(document).ready( function($) { - /** - * Redirect back to edit.php if a save operation triggers scheduled revision creation - */ - $(document).on('click', 'button.editor-post-publish-button,button.editor-post-save-draft', function() { - var redirectCheckSaveInterval = setInterval( function() { - let saving = wp.data.select('core/editor').isSavingPost(); - - if ( saving ) { - clearInterval(redirectCheckSaveInterval); - - var redirectCheckSaveDoneInterval = setInterval( function() { - let saving = wp.data.select('core/editor').isSavingPost(); - - if ( ! saving ) { - clearInterval(redirectCheckSaveDoneInterval); - - let goodsave = wp.data.select('core/editor').didPostSaveRequestSucceed(); - if ( goodsave ) { - var redirectProp = 'redirectURLupdate'; - - if ( typeof rvyObjEdit[redirectProp] != 'undefined' ) { - $(location).attr("href", rvyObjEdit[redirectProp]); - } - } - } - }, 50 ); - } - }, 10 ); - }); - - /***** Redirect back to edit.php if user won't be able to futher edit after changing post status *******/ - $(document).on('click', 'button.editor-post-publish-button,button.editor-post-save-draft', function() { - $('a.rvy-post-preview').remove(); - - var RvyRedirectCheckSaveInterval = setInterval( function() { - let saving = wp.data.select('core/editor').isSavingPost(); - if ( saving ) { - clearInterval(RvyRedirectCheckSaveInterval); - - var RvyRedirectCheckSaveDoneInterval = setInterval( function() { - let saving = wp.data.select('core/editor').isSavingPost(); - - if ( ! saving ) { - clearInterval(RvyRedirectCheckSaveDoneInterval); - - let goodsave = wp.data.select('core/editor').didPostSaveRequestSucceed(); - if ( goodsave ) { - var redirectProp = 'redirectURL'; - - if ( typeof rvyObjEdit[redirectProp] != 'undefined' ) { - var rurl = rvyObjEdit[redirectProp]; - var recipients = $('input[name="prev_cc_user[]"]:checked'); - - if ( recipients.length ) { - var cc = recipients.map(function() { - return $(this).val(); - }).get().join(','); - - rurl = rurl + '&cc=' + cc; - } - - $(location).attr("href", rurl); - } - } - } - }, 50 ); - } - }, 10 ); - }); - function RvyRecaptionElement(btnSelector, btnCaption) { let node = document.querySelector(btnSelector); @@ -98,25 +28,6 @@ jQuery(document).ready( function($) { if ( ( ! waitForSaveDraftButton || $('button.editor-post-switch-to-draft').filter(':visible').length || $('button.editor-post-save-draft').filter(':visible').length ) && $('button.editor-post-publish-button').length ) { // indicates save operation (or return from Pre-Publish) is done RvyRecaptionElement('button.editor-post-publish-button', caption); - } else { - if ( ( typeof timeout == 'undefined' ) || parseInt(timeout) < 50 ) { timeout = 15000;} - var RecaptionInterval = setInterval(RvyWaitForRecaption, 100); - var RecaptionTimeout = setTimeout( function(){ clearInterval(RvyRecaptionInterval);}, parseInt(timeout) ); - - function WaitForRecaption(timeout) { - if ( ! waitForSaveDraftButton || $('button.editor-post-switch-to-draft').filter(':visible').length || $('button.editor-post-save-draft').filter(':visible').length ) { // indicates save operation (or return from Pre-Publish) is done - if ( $('button.editor-post-publish-button').length ) { // indicates Pre-Publish is disabled - clearInterval(RvyRecaptionInterval); - clearTimeout(RvyRecaptionTimeout); - RvyRecaptionElement('button.editor-post-publish-button', caption); - } else { - if ( waitForSaveDraftButton ) { // case of execution following publish click with Pre-Publish active - clearInterval(RvyRecaptionInterval); - clearTimeout(RvyRecaptionTimeout); - } - } - } - } } } @@ -183,7 +94,7 @@ jQuery(document).ready( function($) { var RvyHideElements = function() { var ediv = 'div.edit-post-sidebar '; - if ( $(ediv + 'div.edit-post-post-visibility,' + ediv + 'div.editor-post-link,' + ediv + 'select.editor-post-author__select:visible,' + ediv + 'div.components-base-control__field input[type="checkbox"]:visible,' + ediv + 'button.editor-post-switch-to-draft,' + ediv + 'button.editor-post-trash').length ) { + if ($(ediv + 'div.edit-post-post-visibility,' + ediv + 'div.editor-post-link,' + ediv + 'select.editor-post-author__select:visible,' + ediv + 'div.components-base-control__field input[type="checkbox"]:visible,' + ediv + 'button.editor-post-switch-to-draft,' + ediv + 'button.editor-post-trash').length ) { $(ediv + 'select.editor-post-author__select').parent().hide(); $(ediv + 'button.editor-post-trash').parent().show(); $(ediv + 'button.editor-post-switch-to-draft').hide(); @@ -202,17 +113,127 @@ jQuery(document).ready( function($) { if ( $('button.editor-post-publish-button').length ) { $('button.editor-post-publish-button').hide(); } + } + var RvyHideInterval = setInterval(RvyHideElements, 50); + + var RvySubmissionUI = function() { + // @todo: use .edit-post-post-visibility if edit-post-post-schedule not available + if ($('div.edit-post-post-schedule').length) { + var refSelector = 'div.edit-post-post-schedule'; + } else { + var refSelector = 'div.edit-post-post-visibility'; + } - if (rvyObjEdit.approvalURL && !RvyApprovalHidden && !$('button.revision-approve').length && $('div.edit-post-post-schedule').length) { - $('div.edit-post-post-schedule').after( - ''); + if (rvyObjEdit.ajaxurl && !$('div.edit-post-revision-status').length && $(refSelector).length) { + $(refSelector).before( + '
' + + '' + rvyObjEdit.statusLabel + '' + + '
' + + rvyObjEdit[rvyObjEdit.currentStatus + 'StatusCaption'] + + '
' + + '
' + ); - if (rvyObjEdit.deletionURL) { - $('button.editor-post-trash').wrap(''); + if (rvyObjEdit[rvyObjEdit.currentStatus + 'ActionURL']) { + var url = rvyObjEdit[rvyObjEdit.currentStatus + 'ActionURL']; + } else { + var url = 'javascript:void(0)'; + } + + if (rvyObjEdit[rvyObjEdit.currentStatus + 'ActionCaption']) { + $(refSelector).after( + '
' + + '' + + + '' + + + '
' + ); + } + + if (RvyApprovalLocked != $('button.revision-approve').prop('disabled')) { + if (RvyApprovalLocked) { + $('button.revision-approve').html('Revision needs update.'); + } else { + $('button.revision-approve').html(rvyObjEdit[rvyObjEdit.currentStatus + 'ActionCaption']); + } + } + + $('button.revision-approve').prop('disabled', RvyApprovalLocked && ('pending' == rvyObjEdit.currentStatus)); + + $('.edit-post-post-schedule__toggle').after(''); + + if (rvyObjEdit[rvyObjEdit.currentStatus + 'DeletionURL']) { + $('button.editor-post-trash').wrap(''); } } + + $('button.post-schedule-footnote').toggle(!/\d/.test($('button.edit-post-post-schedule__toggle').html())); } - var RvyHideInterval = setInterval(RvyHideElements, 50); + var RvyUIInterval = setInterval(RvySubmissionUI, 100); + + var RvyApprovalLocked = false; + + $(document).on('click', 'div.edit-post-visual-editor *, div.editor-inserter *', function() { + if ('pending' == rvyObjEdit.currentStatus) { + RvyApprovalLocked = true; + $('button.revision-approve').prop('disabled', true); + } + }); + + $(document).on('click', 'button.edit-post-post-schedule__toggle', function() { + RvyApprovalLocked = true; + $('button.revision-approve').prop('disabled', true); + }); + + $(document).on('click', 'button.editor-post-save-draft', function() { + RvyApprovalLocked = false; + $('button.revision-approve').prop('disabled', false); + $('button.revision-approve').html(rvyObjEdit[rvyObjEdit.currentStatus + 'ActionCaption']); + }); + + function RvyGetRandomInt(max) { + return Math.floor(Math.random() * max); + } + + $(document).on('click', 'div.postbox-container', function() { + $('button.revision-approve').prop('disabled', 'disabled'); + }); + + $(document).on('click', 'button.revision-approve', function() { + if (!rvyObjEdit[rvyObjEdit.currentStatus + 'ActionURL']) { + var revisionaryCreateDone = function () { + $('.revision-approve').hide(); + $('.revision-created').show(); + + // @todo: abstract this for other workflows + rvyObjEdit.currentStatus = 'pending'; + + $('.rvy-current-status').html(rvyObjEdit[rvyObjEdit.currentStatus + 'StatusCaption']); + $('a.revision-edit').attr('href', rvyObjEdit[rvyObjEdit.currentStatus + 'CompletedURL']).show(); + } + + var revisionaryCreateError = function (data, txtStatus) { + $('div.rvy-creation-ui').html(rvyObjEdit[rvyObjEdit.currentStatus + 'ErrorCaption']); + } + + var data = {'rvy_ajax_field': rvyObjEdit[rvyObjEdit.currentStatus + 'AjaxField'], 'rvy_ajax_value': wp.data.select('core/editor').getCurrentPostId(), 'nc': RvyGetRandomInt(99999999)}; + + $.ajax({ + url: rvyObjEdit.ajaxurl, + data: data, + dataType: "html", + success: revisionaryCreateDone, + error: revisionaryCreateError + }); + } + }); var RvyRecaptionSaveDraft = function() { if ($('button.editor-post-save-draft:not(.rvy-recaption)').length) { @@ -257,29 +278,4 @@ jQuery(document).ready( function($) { } } var RvyRecaptionSaveDraftInterval = setInterval(RvyRecaptionSaveDraft, 100); - - var RvyApprovalHidden = false; - - $(document).on('click', 'div.edit-post-visual-editor *, div.editor-inserter *', function() { - RvyApprovalHidden = true; - $('a.revision-approve').hide(); - $('a.rvy-post-preview').hide(); - - if (!rvyObjEdit.multiPreviewActive) { - $('a.editor-post-preview').show(); - } - - //$('a.revision-save-to-approve').show(); - }); - - $(document).on('click', 'button.editor-post-publish-button,button.editor-post-save-draft', function() { - RvyApprovalHidden = false; - //$('a.revision-save-to-approve').hide(); - $('a.revision-approve').show(); - $('a.rvy-post-preview').show(); - - if (!rvyObjEdit.multiPreviewActive) { - $('a.editor-post-preview').hide(); - } - }); }); diff --git a/admin/rvy_revision-block-edit.js b/admin/rvy_revision-block-edit.js index 8d387d0a..aa7cc7cd 100644 --- a/admin/rvy_revision-block-edit.js +++ b/admin/rvy_revision-block-edit.js @@ -1,9 +1,7 @@ -jQuery(document).ready(function($){$(document).on('click','button.editor-post-publish-button,button.editor-post-save-draft',function(){var redirectCheckSaveInterval=setInterval(function(){let saving=wp.data.select('core/editor').isSavingPost();if(saving){clearInterval(redirectCheckSaveInterval);var redirectCheckSaveDoneInterval=setInterval(function(){let saving=wp.data.select('core/editor').isSavingPost();if(!saving){clearInterval(redirectCheckSaveDoneInterval);let goodsave=wp.data.select('core/editor').didPostSaveRequestSucceed();if(goodsave){var redirectProp='redirectURLupdate';if(typeof rvyObjEdit[redirectProp]!='undefined'){$(location).attr("href",rvyObjEdit[redirectProp]);}}}},50);}},10);});$(document).on('click','button.editor-post-publish-button,button.editor-post-save-draft',function(){$('a.rvy-post-preview').remove();var RvyRedirectCheckSaveInterval=setInterval(function(){let saving=wp.data.select('core/editor').isSavingPost();if(saving){clearInterval(RvyRedirectCheckSaveInterval);var RvyRedirectCheckSaveDoneInterval=setInterval(function(){let saving=wp.data.select('core/editor').isSavingPost();if(!saving){clearInterval(RvyRedirectCheckSaveDoneInterval);let goodsave=wp.data.select('core/editor').didPostSaveRequestSucceed();if(goodsave){var redirectProp='redirectURL';if(typeof rvyObjEdit[redirectProp]!='undefined'){var rurl=rvyObjEdit[redirectProp];var recipients=$('input[name="prev_cc_user[]"]:checked');if(recipients.length){var cc=recipients.map(function(){return $(this).val();}).get().join(',');rurl=rurl+'&cc='+cc;} -$(location).attr("href",rurl);}}}},50);}},10);});function RvyRecaptionElement(btnSelector,btnCaption){let node=document.querySelector(btnSelector);if(node){document.querySelector(btnSelector).innerText=`${btnCaption}`;}} +jQuery(document).ready(function($){function RvyRecaptionElement(btnSelector,btnCaption){let node=document.querySelector(btnSelector);if(node){document.querySelector(btnSelector).innerText=`${btnCaption}`;}} function RvySetPublishButtonCaption(caption,waitForSaveDraftButton,forceRegen,timeout){if(caption==''&&(typeof rvyObjEdit['publishCaptionCurrent']!='undefined')){caption=rvyObjEdit.publishCaptionCurrent;}else{rvyObjEdit.publishCaptionCurrent=caption;} if(typeof waitForSaveDraftButton=='undefined'){waitForSaveDraftButton=false;} -if((!waitForSaveDraftButton||$('button.editor-post-switch-to-draft').filter(':visible').length||$('button.editor-post-save-draft').filter(':visible').length)&&$('button.editor-post-publish-button').length){RvyRecaptionElement('button.editor-post-publish-button',caption);}else{if((typeof timeout=='undefined')||parseInt(timeout)<50){timeout=15000;} -var RecaptionInterval=setInterval(RvyWaitForRecaption,100);var RecaptionTimeout=setTimeout(function(){clearInterval(RvyRecaptionInterval);},parseInt(timeout));function WaitForRecaption(timeout){if(!waitForSaveDraftButton||$('button.editor-post-switch-to-draft').filter(':visible').length||$('button.editor-post-save-draft').filter(':visible').length){if($('button.editor-post-publish-button').length){clearInterval(RvyRecaptionInterval);clearTimeout(RvyRecaptionTimeout);RvyRecaptionElement('button.editor-post-publish-button',caption);}else{if(waitForSaveDraftButton){clearInterval(RvyRecaptionInterval);clearTimeout(RvyRecaptionTimeout);}}}}}} +if((!waitForSaveDraftButton||$('button.editor-post-switch-to-draft').filter(':visible').length||$('button.editor-post-save-draft').filter(':visible').length)&&$('button.editor-post-publish-button').length){RvyRecaptionElement('button.editor-post-publish-button',caption);}} var RvyDetectPublishOptionsDivClosureInterval='';var RvyDetectPublishOptionsDiv=function(){if($('div.components-modal__header').length){clearInterval(RvyDetectPublishOptionsDivInterval);if($('span.pp-recaption-button').first()){rvyObjEdit.overrideColor=$('span.pp-recaption-button').first().css('color');} var RvyDetectPublishOptionsClosure=function(){if(!$('div.components-modal__header').length){clearInterval(RvyDetectPublishOptionsDivClosureInterval);$('span.pp-recaption-button').hide();RvyInitInterval=setInterval(RvyInitializeBlockEditorModifications,50);RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,1000);}} RvyDetectPublishOptionsDivClosureInterval=setInterval(RvyDetectPublishOptionsClosure,200);}} @@ -13,12 +11,33 @@ $('select.editor-post-author__select').parent().hide();$('button.editor-post-tra if(($('button.editor-post-publish-button').length||$('button.editor-post-publish-panel__toggle').length)){$('button.editor-post-publish-button').hide();$('button.editor-post-publish-panel__toggle').hide();}} var RvyInitInterval=setInterval(RvyInitializeBlockEditorModifications,50);var RvyHideElements=function(){var ediv='div.edit-post-sidebar ';if($(ediv+'div.edit-post-post-visibility,'+ediv+'div.editor-post-link,'+ediv+'select.editor-post-author__select:visible,'+ediv+'div.components-base-control__field input[type="checkbox"]:visible,'+ediv+'button.editor-post-switch-to-draft,'+ediv+'button.editor-post-trash').length){$(ediv+'select.editor-post-author__select').parent().hide();$(ediv+'button.editor-post-trash').parent().show();$(ediv+'button.editor-post-switch-to-draft').hide();$(ediv+'div.editor-post-link').parent().hide();$(ediv+'div.components-notice-list').hide();if(!rvyObjEdit.scheduledRevisionsEnabled){$(ediv+'div.edit-post-post-schedule').hide();} $(ediv+'#publishpress-notifications').hide();$('#icl_div').closest('div.edit-post-meta-boxes-area').hide();} -if($('button.editor-post-publish-button').length){$('button.editor-post-publish-button').hide();} -if(rvyObjEdit.approvalURL&&!RvyApprovalHidden&&!$('button.revision-approve').length&&$('div.edit-post-post-schedule').length){$('div.edit-post-post-schedule').after('');if(rvyObjEdit.deletionURL){$('button.editor-post-trash').wrap('');}}} -var RvyHideInterval=setInterval(RvyHideElements,50);var RvyRecaptionSaveDraft=function(){if($('button.editor-post-save-draft:not(.rvy-recaption)').length){RvyRecaptionElement('button.editor-post-save-draft:not(.rvy-recaption)',rvyObjEdit.saveRevision);$('button.editor-post-save-draft:not(.rvy-recaption)').addClass('rvy-recaption');} +if($('button.editor-post-publish-button').length){$('button.editor-post-publish-button').hide();}} +var RvyHideInterval=setInterval(RvyHideElements,50);var RvySubmissionUI=function(){if($('div.edit-post-post-schedule').length){var refSelector='div.edit-post-post-schedule';}else{var refSelector='div.edit-post-post-visibility';} +if(rvyObjEdit.ajaxurl&&!$('div.edit-post-revision-status').length&&$(refSelector).length){$(refSelector).before('
' ++''+rvyObjEdit.statusLabel+'' ++'
' ++rvyObjEdit[rvyObjEdit.currentStatus+'StatusCaption'] ++'
' ++'
');if(rvyObjEdit[rvyObjEdit.currentStatus+'ActionURL']){var url=rvyObjEdit[rvyObjEdit.currentStatus+'ActionURL'];}else{var url='javascript:void(0)';} +if(rvyObjEdit[rvyObjEdit.currentStatus+'ActionCaption']){$(refSelector).after('
' ++'' ++'' ++'
');} +if(RvyApprovalLocked!=$('button.revision-approve').prop('disabled')){if(RvyApprovalLocked){$('button.revision-approve').html('Revision needs update.');}else{$('button.revision-approve').html(rvyObjEdit[rvyObjEdit.currentStatus+'ActionCaption']);}} +$('button.revision-approve').prop('disabled',RvyApprovalLocked&&('pending'==rvyObjEdit.currentStatus));$('.edit-post-post-schedule__toggle').after('');if(rvyObjEdit[rvyObjEdit.currentStatus+'DeletionURL']){$('button.editor-post-trash').wrap('');}} +$('button.post-schedule-footnote').toggle(!/\d/.test($('button.edit-post-post-schedule__toggle').html()));} +var RvyUIInterval=setInterval(RvySubmissionUI,100);var RvyApprovalLocked=false;$(document).on('click','div.edit-post-visual-editor *, div.editor-inserter *',function(){if('pending'==rvyObjEdit.currentStatus){RvyApprovalLocked=true;$('button.revision-approve').prop('disabled',true);}});$(document).on('click','button.edit-post-post-schedule__toggle',function(){RvyApprovalLocked=true;$('button.revision-approve').prop('disabled',true);});$(document).on('click','button.editor-post-save-draft',function(){RvyApprovalLocked=false;$('button.revision-approve').prop('disabled',false);$('button.revision-approve').html(rvyObjEdit[rvyObjEdit.currentStatus+'ActionCaption']);});function RvyGetRandomInt(max){return Math.floor(Math.random()*max);} +$(document).on('click','div.postbox-container',function(){$('button.revision-approve').prop('disabled','disabled');});$(document).on('click','button.revision-approve',function(){if(!rvyObjEdit[rvyObjEdit.currentStatus+'ActionURL']){var revisionaryCreateDone=function(){$('.revision-approve').hide();$('.revision-created').show();rvyObjEdit.currentStatus='pending';$('.rvy-current-status').html(rvyObjEdit[rvyObjEdit.currentStatus+'StatusCaption']);$('a.revision-edit').attr('href',rvyObjEdit[rvyObjEdit.currentStatus+'CompletedURL']).show();} +var revisionaryCreateError=function(data,txtStatus){$('div.rvy-creation-ui').html(rvyObjEdit[rvyObjEdit.currentStatus+'ErrorCaption']);} +var data={'rvy_ajax_field':rvyObjEdit[rvyObjEdit.currentStatus+'AjaxField'],'rvy_ajax_value':wp.data.select('core/editor').getCurrentPostId(),'nc':RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryCreateDone,error:revisionaryCreateError});}});var RvyRecaptionSaveDraft=function(){if($('button.editor-post-save-draft:not(.rvy-recaption)').length){RvyRecaptionElement('button.editor-post-save-draft:not(.rvy-recaption)',rvyObjEdit.saveRevision);$('button.editor-post-save-draft:not(.rvy-recaption)').addClass('rvy-recaption');} if(($('div.edit-post-header__settings a.editor-post-preview:visible').length||$('div.block-editor-post-preview__dropdown button.block-editor-post-preview__button-toggle:visible').length)&&!$('a.rvy-post-preview').length){if(rvyObjEdit.viewURL){original=$('div.edit-post-header__settings a.editor-post-preview');$(original).after(original.clone().attr('href',rvyObjEdit.viewURL).attr('target','_blank').removeClass('editor-post-preview').addClass('rvy-post-preview'));$(original).hide();if(rvyObjEdit.multiPreviewActive){$('.rvy-post-preview').removeClass('components-button').css('height','inherit').css('text-decoration','none');}} if(rvyObjEdit.viewCaption){RvyRecaptionElement('div.edit-post-header__settings a.rvy-post-preview',rvyObjEdit.viewCaption);} if(rvyObjEdit.viewTitle){$('div.edit-post-header__settings a.rvy-post-preview').attr('title',rvyObjEdit.viewTitle);}}else{if(!rvyObjEdit.multiPreviewActive){if(!$('a.editor-post-preview').next('a.rvy-post-preview').length){$('a.rvy-post-preview').insertAfter($('a.editor-post-preview'));} if(rvyObjEdit.previewTitle&&!$('a.editor-post-preview').attr('title')){$('div.edit-post-header__settings a.editor-post-preview').attr('title',rvyObjEdit.previewTitle);}}} if(rvyObjEdit.revisionEdits&&$('div.edit-post-sidebar a.editor-post-last-revision__title:visible').length&&!$('div.edit-post-sidebar a.editor-post-last-revision__title.rvy-recaption').length){$('div.edit-post-sidebar a.editor-post-last-revision__title').html(rvyObjEdit.revisionEdits);$('div.edit-post-sidebar a.editor-post-last-revision__title').addClass('rvy-recaption');}} -var RvyRecaptionSaveDraftInterval=setInterval(RvyRecaptionSaveDraft,100);var RvyApprovalHidden=false;$(document).on('click','div.edit-post-visual-editor *, div.editor-inserter *',function(){RvyApprovalHidden=true;$('a.revision-approve').hide();$('a.rvy-post-preview').hide();if(!rvyObjEdit.multiPreviewActive){$('a.editor-post-preview').show();}});$(document).on('click','button.editor-post-publish-button,button.editor-post-save-draft',function(){RvyApprovalHidden=false;$('a.revision-approve').show();$('a.rvy-post-preview').show();if(!rvyObjEdit.multiPreviewActive){$('a.editor-post-preview').hide();}});}); \ No newline at end of file +var RvyRecaptionSaveDraftInterval=setInterval(RvyRecaptionSaveDraft,100);}); \ No newline at end of file diff --git a/admin/rvy_revision-classic-edit.dev.js b/admin/rvy_revision-classic-edit.dev.js new file mode 100644 index 00000000..70aa0840 --- /dev/null +++ b/admin/rvy_revision-classic-edit.dev.js @@ -0,0 +1,124 @@ +/** +* Classic Editor Modifications for Revisionary +* +* By Kevin Behrens +* +* Copyright 2021, PublishPress +*/ +jQuery(document).ready( function($) { + var RvySubmissionUI = function() { + var refSelector = '#rvy_compare_button'; + + if (rvyObjEdit.ajaxurl && !$('div.rvy-creation-ui').length && $(refSelector).length) { + $('#post-status-display').html(rvyObjEdit[rvyObjEdit.currentStatus + 'StatusCaption']); + + if (rvyObjEdit[rvyObjEdit.currentStatus + 'ActionURL']) { + var url = rvyObjEdit[rvyObjEdit.currentStatus + 'ActionURL']; + } else { + var url = 'javascript:void(0)'; + } + + if (rvyObjEdit[rvyObjEdit.currentStatus + 'ActionCaption']) { + $(refSelector).before( + '
' + + + '' + + rvyObjEdit[rvyObjEdit.currentStatus + 'ActionCaption'] + '' + + + '' + + + '
' + ); + } + + $('.edit-post-post-schedule__toggle').after(''); + + if (rvyObjEdit[rvyObjEdit.currentStatus + 'DeletionURL']) { + $('a.submitdelete').attr('href', rvyObjEdit[rvyObjEdit.currentStatus + 'DeletionURL']); + } + } + } + var RvyUIInterval = setInterval(RvySubmissionUI, 100); + + + $(document).on('click', 'a.save-timestamp, a.cancel-timestamp', function() { + wp.autosave.server.triggerSave(); + }); + + function RvyGetRandomInt(max) { + return Math.floor(Math.random() * max); + } + + $(document).on('click', 'div.postbox-container', function() { + $('a.revision-approve').attr('disabled', 'disabled'); + }); + + $(document).on('click', 'a.revision-approve', function() { + if ($('a.revision-approve').attr('disabled')) { + return; + } + + $('a.revision-approve').attr('disabled', 'disabled'); + + if (wp.autosave.server.postChanged()) { + wp.autosave.server.triggerSave(); + var approvalDelay = 250; + } else { + var approvalDelay = 1; + } + + if (!rvyObjEdit[rvyObjEdit.currentStatus + 'ActionURL']) { + var revisionaryCreateDone = function () { + $('a.revision-approve').hide(); + $('.revision-created-wrapper, .revision-created').show(); + + // @todo: abstract this for other workflows + rvyObjEdit.currentStatus = 'pending'; + + $('#post-status-display').html(rvyObjEdit[rvyObjEdit.currentStatus + 'StatusCaption']); + $('a.revision-edit').attr('href', rvyObjEdit[rvyObjEdit.currentStatus + 'CompletedURL']).show(); + } + + var revisionaryCreateError = function (data, txtStatus) { + $('div.rvy-creation-ui').html(rvyObjEdit[rvyObjEdit.currentStatus + 'ErrorCaption']); + } + + var tmoSubmit = setInterval(function() { + if (!wp.autosave.server.postChanged()) { + var data = {'rvy_ajax_field': rvyObjEdit[rvyObjEdit.currentStatus + 'AjaxField'], 'rvy_ajax_value': rvyObjEdit.postID, 'nc': RvyGetRandomInt(99999999)}; + + $.ajax({ + url: rvyObjEdit.ajaxurl, + data: data, + dataType: "html", + success: revisionaryCreateDone, + error: revisionaryCreateError + }); + + clearInterval(tmoSubmit); + } + }, approvalDelay); + } else { + var tmoApproval = setInterval(function() { + if (!wp.autosave.server.postChanged()) { + window.location = rvyObjEdit[rvyObjEdit.currentStatus + 'ActionURL']; + + clearInterval(tmoApproval); + } + }, approvalDelay); + + return false; + } + }); + + $(document).on('click', '#post-body-content *, #content_ifr *, #wp-content-editor-container *, #tinymce *, #submitpost, span.revision-created', function() { + $('.revision-created-wrapper, .revision-created').hide(); + $('a.revision-approve').html(rvyObjEdit[rvyObjEdit.currentStatus + 'ActionCaption']).show().removeAttr('disabled'); + }); +}); diff --git a/admin/rvy_revision-classic-edit.js b/admin/rvy_revision-classic-edit.js new file mode 100644 index 00000000..42ba593c --- /dev/null +++ b/admin/rvy_revision-classic-edit.js @@ -0,0 +1,18 @@ +jQuery(document).ready(function($){var RvySubmissionUI=function(){var refSelector='#rvy_compare_button';if(rvyObjEdit.ajaxurl&&!$('div.rvy-creation-ui').length&&$(refSelector).length){$('#post-status-display').html(rvyObjEdit[rvyObjEdit.currentStatus+'StatusCaption']);if(rvyObjEdit[rvyObjEdit.currentStatus+'ActionURL']){var url=rvyObjEdit[rvyObjEdit.currentStatus+'ActionURL'];}else{var url='javascript:void(0)';} +if(rvyObjEdit[rvyObjEdit.currentStatus+'ActionCaption']){$(refSelector).before('
' ++'' ++rvyObjEdit[rvyObjEdit.currentStatus+'ActionCaption']+'' ++'' ++'
');} +$('.edit-post-post-schedule__toggle').after('');if(rvyObjEdit[rvyObjEdit.currentStatus+'DeletionURL']){$('a.submitdelete').attr('href',rvyObjEdit[rvyObjEdit.currentStatus+'DeletionURL']);}}} +var RvyUIInterval=setInterval(RvySubmissionUI,100);$(document).on('click','a.save-timestamp, a.cancel-timestamp',function(){wp.autosave.server.triggerSave();});function RvyGetRandomInt(max){return Math.floor(Math.random()*max);} +$(document).on('click','div.postbox-container',function(){$('a.revision-approve').attr('disabled','disabled');});$(document).on('click','a.revision-approve',function(){if($('a.revision-approve').attr('disabled')){return;} +$('a.revision-approve').attr('disabled','disabled');if(wp.autosave.server.postChanged()){wp.autosave.server.triggerSave();var approvalDelay=250;}else{var approvalDelay=1;} +if(!rvyObjEdit[rvyObjEdit.currentStatus+'ActionURL']){var revisionaryCreateDone=function(){$('a.revision-approve').hide();$('.revision-created-wrapper, .revision-created').show();rvyObjEdit.currentStatus='pending';$('#post-status-display').html(rvyObjEdit[rvyObjEdit.currentStatus+'StatusCaption']);$('a.revision-edit').attr('href',rvyObjEdit[rvyObjEdit.currentStatus+'CompletedURL']).show();} +var revisionaryCreateError=function(data,txtStatus){$('div.rvy-creation-ui').html(rvyObjEdit[rvyObjEdit.currentStatus+'ErrorCaption']);} +var tmoSubmit=setInterval(function(){if(!wp.autosave.server.postChanged()){var data={'rvy_ajax_field':rvyObjEdit[rvyObjEdit.currentStatus+'AjaxField'],'rvy_ajax_value':rvyObjEdit.postID,'nc':RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryCreateDone,error:revisionaryCreateError});clearInterval(tmoSubmit);}},approvalDelay);}else{var tmoApproval=setInterval(function(){if(!wp.autosave.server.postChanged()){window.location=rvyObjEdit[rvyObjEdit.currentStatus+'ActionURL'];clearInterval(tmoApproval);}},approvalDelay);return false;}});$(document).on('click','#post-body-content *, #content_ifr *, #wp-content-editor-container *, #tinymce *, #submitpost, span.revision-created',function(){$('.revision-created-wrapper, .revision-created').hide();$('a.revision-approve').html(rvyObjEdit[rvyObjEdit.currentStatus+'ActionCaption']).show().removeAttr('disabled');});}); \ No newline at end of file diff --git a/functions.php b/functions.php index 1b2ca6c3..0a3566b5 100644 --- a/functions.php +++ b/functions.php @@ -2,7 +2,141 @@ function revisionary() { return \PublishPress\Revisions::instance(); - +} + +function revisionary_unrevisioned_postmeta() { + $exclude = array_fill_keys( array( '_rvy_base_post_id', '_rvy_has_revisions', '_rvy_published_gmt', '_pp_last_parent', '_edit_lock', '_edit_last', '_wp_old_slug', '_wp_attached_file', '_menu_item_classes', '_menu_item_menu_item_parent', '_menu_item_object', '_menu_item_object_id', '_menu_item_target', '_menu_item_type', '_menu_item_url', '_menu_item_xfn', '_rs_file_key', '_scoper_custom', '_scoper_last_parent', '_wp_attachment_backup_sizes', '_wp_attachment_metadata', '_wp_trash_meta_status', '_wp_trash_meta_time', '_last_attachment_ids', '_last_category_ids', '_encloseme', '_pingme' ), true ); + return apply_filters( 'revisionary_unrevisioned_postmeta', $exclude ); +} + +/** + * Copies the taxonomies of a post to another post. + * Based on Yoast Duplicate Post + * + * @param \WP_Post $from_post The source post object. + * @param int $target_id Target post ID. + * @param array $args The options array. + * + * @return void + */ +function revisionary_copy_terms($from_post, $target_id, $args = []) { + global $wpdb; + + $defaults = ['empty_target_only' => false]; + $args = array_merge($defaults, $args); + foreach (array_keys($defaults) as $var) { + $$var = $args[$var]; + } + + if ( isset( $wpdb->terms ) ) { + if (is_scalar($from_post)) { + $from_post = get_post($from_post); + } + + if (empty($from_post) || empty($from_post->post_type)) { + return; + } + + // Clear default category (added by wp_insert_post). + wp_set_object_terms( $target_id, null, 'category' ); + + $post_taxonomies = get_object_taxonomies( $from_post->post_type ); + + // Several plugins just add support to post-formats but don't register post_format taxonomy. + if (!in_array('post_format', $post_taxonomies, true) && post_type_supports($from_post->post_type, 'post-formats')) { + $post_taxonomies[] = 'post_format'; + } + + /** + * Filters the taxonomy excludelist when copying a post. + * + * @param array $taxonomies_blacklist The taxonomy excludelist from the options. + * + * @return array + */ + $taxonomies_blacklist = apply_filters('revisionary_skip_taxonomies', []); + + foreach (array_diff($post_taxonomies, $taxonomies_blacklist) as $taxonomy) { + if ($empty_target_only) { + $target_terms = wp_get_object_terms($target_id, $taxonomy, ['fields' => 'ids']); + if (!empty($target_terms)) { + continue; + } + } + + $post_term_slugs = wp_get_object_terms($from_post->ID, $taxonomy, ['fields' => 'slugs', 'orderby' => 'term_order']); + wp_set_object_terms($target_id, $post_term_slugs, $taxonomy); + } + } +} + +/** + * Copies the meta information of a post to another post. + * Based on Yoast Duplicate Post + * + * @param \WP_Post $from_post The source post object. + * @param int $target_id Target post ID. + * @param array $args The options array. + * + * @return void + */ +function revisionary_copy_postmeta($from_post, $to_post_id, $args = []) { + $defaults = ['empty_target_only' => false]; + $args = array_merge($defaults, $args); + foreach (array_keys($defaults) as $var) { + $$var = $args[$var]; + } + + if (is_scalar($from_post)) { + $from_post = get_post($from_post); + } + + $source_meta_keys = \get_post_custom_keys( $from_post->ID ); + if ( empty( $source_meta_keys ) ) { + return; + } + + $meta_excludelist = revisionary_unrevisioned_postmeta(); + + $meta_excludelist_string = '(' . implode( ')|(', $meta_excludelist ) . ')'; + if ( strpos( $meta_excludelist_string, '*' ) !== false ) { + $meta_excludelist_string = str_replace( [ '*' ], [ '[a-zA-Z0-9_]*' ], $meta_excludelist_string ); + + $meta_keys = []; + foreach ( $source_meta_keys as $meta_key ) { + if ( ! preg_match( '#^' . $meta_excludelist_string . '$#', $meta_key ) ) { + $meta_keys[] = $meta_key; + } + } + } else { + $meta_keys = array_diff( $source_meta_keys, $meta_excludelist ); + } + + $meta_keys = apply_filters('revisionary_create_revision_meta_keys', $meta_keys); + + foreach ( $meta_keys as $meta_key ) { + if ($empty_target_only) { + $target_values = \get_post_custom_values( $meta_key, $to_post_id ); + if (!empty($target_values)) { + continue; + } + } + + $meta_values = \get_post_custom_values( $meta_key, $from_post->ID ); + foreach ( $meta_values as $meta_value ) { + $meta_value = maybe_unserialize( $meta_value ); + update_post_meta( $to_post_id, $meta_key, \PublishPress\Revisions\Utils::recursively_slash_strings( $meta_value ) ); + } + } + + $args = array_merge( + $args, + compact('meta_keys', 'source_meta_keys') + ); + + do_action('revisionary_copy_postmeta', $from_post, $to_post_id, $args); +} + function rvy_revision_base_statuses($args = []) { $defaults = ['output' => 'names', 'return' => 'array']; $args = array_merge($defaults, $args); diff --git a/rest-insert_rvy.php b/rest-insert_rvy.php deleted file mode 100644 index e37bd212..00000000 --- a/rest-insert_rvy.php +++ /dev/null @@ -1,102 +0,0 @@ -flt_pendingrev_post_status($post->post_status); - - if (!empty($revisionary->impose_pending_rev[$post->ID]) || !empty($revisionary->save_future_rev[$post->ID])) { - // todo: better revision id logging - - //$revision_id = $revisionary->impose_pending_rev[$post->ID]; - - $revision_id = $wpdb->get_var( - $wpdb->prepare( - "SELECT ID FROM $wpdb->posts WHERE post_status IN ('pending-revision', 'future-revision') AND " - . "post_author = %s AND comment_count = %d " - . "ORDER BY ID DESC LIMIT 1", - $current_user->ID, - $post->ID - ) - ); - - // store selected meta array, featured image, template, format and stickiness to revision - - // todo: validate schema support for sticky, page template - //$schema = $revisionary->get_item_schema(); - - //if (! empty( $schema['properties']['format'] ) && isset($request['format'])) { - if (!empty($request['format']) && post_type_supports($post->post_type, 'post-formats')) { - set_post_format( $revision_id, $request['format'] ); - } - - //if (! empty( $schema['properties']['featured_media'] ) && isset($request['featured_media'])) { - if (isset($request['featured_media']) && post_type_supports($post->post_type, 'thumbnail')) { - $revisionary->handle_featured_media( $request['featured_media'], $revision_id ); - } - - //if ( ! empty( $schema['properties']['sticky'] ) && isset( $request['sticky'] ) ) { - if ( isset( $request['sticky'] ) ) { - if ( ! empty( $request['sticky'] ) ) { - stick_post( $revision_id ); - } else { - unstick_post( $revision_id ); - } - } - - //if ( ! empty( $schema['properties']['template'] ) && isset( $request['template'] ) ) { - if (isset($request['template']) && post_type_supports($post->post_type, 'page-attributes')) { - $revisionary->handle_template( $request['template'], $revision_id ); - } - - foreach(['_thumbnail_id', '_wp_page_template'] as $meta_key) { - if ($archived_val = rvy_get_transient("_archive_{$meta_key}_{$post->ID}")) { - switch ($meta_key) { - case '_thumbnail_id': - set_post_thumbnail($post->ID, $archived_val); - break; - - case '_wp_page_template': - rvy_update_post_meta($post->ID, '_wp_page_template', $archived_val); - break; - } - } - } - - //if ( ! empty( $schema['properties']['meta'] ) && isset( $request['meta'] ) ) { - //if (isset($request['meta']) && post_type_supports($post->post_type, 'custom-fields')) { - if (isset($request['meta'])) { - $meta = new WP_REST_Post_Meta_Fields( $revisionary->rest->post_type ); - - $meta_update = $meta->update_value( $request['meta'], $revision_id ); - - if ( is_wp_error( $meta_update ) ) { - return $meta_update; - } - } - - // prevent these selections from updating published post - foreach(array('meta', 'featured_media', 'template', 'format', 'sticky') as $key) { - $request[$key] = ''; - } - - // update revision with terms selections, prevent update of published post - $taxonomies = wp_list_filter( get_object_taxonomies( $revisionary->rest->post_type, 'objects' ), array( 'show_in_rest' => true ) ); - - foreach ( $taxonomies as $taxonomy ) { - $base = ! empty( $taxonomy->rest_base ) ? $taxonomy->rest_base : $taxonomy->name; - - if ( ! isset( $request[ $base ] ) ) { - continue; - } - - $result = wp_set_object_terms( $revision_id, $request[ $base ], $taxonomy->name ); - - if ( is_wp_error( $result ) ) { - return $result; - } - - unset($request[$base]); - } - } -} diff --git a/revision-creation_rvy.php b/revision-creation_rvy.php index b1df0276..e9ffb8d9 100644 --- a/revision-creation_rvy.php +++ b/revision-creation_rvy.php @@ -10,8 +10,27 @@ function __construct($args = []) { if (!empty($args) && is_array($args) && !empty($args['revisionary'])) { $this->revisionary = $args['revisionary']; } + } + + // @todo: status change handler for draft => future-revision + function flt_future_revision_status_change($revision_status, $old_status, $revision_id) { + if ('future-revision' == $revision_status) { + require_once( dirname(__FILE__).'/admin/revision-action_rvy.php'); + rvy_update_next_publish_date(); + } + + if ('pending-revision' == $revision_status) { + $revision = get_post($revision_id); + + do_action('revisionary_submit_revision', $revision); - $this->options = (array) apply_filters('revisionary_creation_options', []); + /** + * Trigger after a revision creation. + * + * @param int $revision The revision object. + */ + do_action('revisionary_created_revision', $revision); + } } function flt_pending_revision_data( $data, $postarr ) { @@ -29,5 +48,162 @@ function flt_pending_revision_data( $data, $postarr ) { static function fltInterruptPostMetaOperation($interrupt) { return true; } + + // Create a new revision, usually 'draft-revision' (Working Copy) or 'future-revision' (Scheduled Revision) + + // If an autosave was stored for the current user prior to this creation, it will be retrieve in place of the main revision. + function createRevision($post_id, $revision_status, $args = []) { + global $wpdb, $current_user; + $published_post = get_post($post_id); + + if (rvy_in_revision_workflow($published_post)) { + return; + } + + /* + if (!empty($_POST)) { + $_POST['skip_sitepress_actions'] = true; + } + */ + + $set_post_properties = [ + 'post_content', + 'post_content_filtered', + 'post_title', + 'post_excerpt', + 'comment_status', + 'ping_status', + 'post_password', + 'menu_order', + ]; + + $data = []; + + if ($autosave_post = Utils::get_post_autosave($post_id, $current_user->ID)) { + if (strtotime($autosave_post->post_modified_gmt) > strtotime($published_post->post_modified_gmt)) { + $use_autosave = true; + $args['meta_post_id'] = $autosave_post->ID; + } + } + + foreach($set_post_properties as $prop) { + $data[$prop] = (!empty($use_autosave) && !empty($autosave_post->$prop)) ? $autosave_post->$prop : $published_post->$prop; + } + + $data['post_type'] = $published_post->post_type; + $data['post_parent'] = $published_post->post_parent; + + if (!empty($args['time_gmt'])) { + $timestamp = $args['time_gmt']; + $data['post_date_gmt'] = gmdate( 'Y-m-d H:i:s', $timestamp); + $data['post_date'] = gmdate( 'Y-m-d H:i:s', $timestamp + (int) ( get_option( 'gmt_offset' ) * HOUR_IN_SECONDS )); + } + + $revision_id = $this->insert_revision($data, $published_post->ID, $revision_status, $args); + + if (!empty($use_autosave)) { + $wpdb->delete($wpdb->posts, ['ID' => $autosave_post->ID]); + } + + if (!$revision_id || !is_scalar($revision_id)) { // update_post_data() returns array or object on update abandon / failure + return; + } + + $post = get_post($revision_id); + + $url = apply_filters('revisionary_create_revision_redirect', rvy_admin_url("post.php?post=$revision_id&action=edit"), $revision_id); + + wp_redirect($url); + exit; + } + + private function insert_revision($data, $base_post_id, $revision_status, $args = []) { + global $wpdb, $current_user; + + $data['post_mime_type'] = $revision_status; + + switch($revision_status) { + case 'draft-revision': + $data['post_status'] = 'draft'; + break; + + case 'future-revision': + $data['post_status'] = 'future'; + break; + + default: + $data['post_status'] = 'pending'; + } + + $data['comment_count'] = $base_post_id; // buffer this value in posts table for query efficiency (actual comment count stored for published post will not be overwritten) + + $data['post_author'] = $current_user->ID; // store current user as revision author (but will retain current post_author on restoration) + + $data['post_modified'] = current_time( 'mysql' ); + $data['post_modified_gmt'] = current_time( 'mysql', 1 ); + + if ( $future_date = ! empty($data['post_date']) && ( strtotime($data['post_date_gmt'] ) > agp_time_gmt() ) ) { // in past versions, $future_date was also passed to get_revision_msg() + // round down to zero seconds + $data['post_date_gmt'] = date( 'Y-m-d H:i:00', strtotime( $data['post_date_gmt'] ) ); + $data['post_date'] = date( 'Y-m-d H:i:00', strtotime( $data['post_date'] ) ); + } + + // @todo: confirm this is still needed + $data['guid'] = ''; + $data['post_name'] = ''; + + $revision_id = wp_insert_post(\wp_slash($data), true); + + if (is_wp_error($revision_id)) { + return new WP_Error(__( 'Could not insert revision into the database', 'revisionary')); + } + + $wpdb->update($wpdb->posts, ['comment_count' => $base_post_id], ['ID' => $revision_id]); + + rvy_update_post_meta($revision_id, '_rvy_base_post_id', $base_post_id); + rvy_update_post_meta($base_post_id, '_rvy_has_revisions', true); + + // Use the newly generated $post_ID. + $where = array( 'ID' => $revision_id ); + + // @todo: confirm never needed + /* + $data['post_name'] = wp_unique_post_slug( sanitize_title( $data['post_title'], $post_ID ), $post_ID, $data['post_status'], $data['post_type'], $data['post_parent'] ); + $wpdb->update( $wpdb->posts, array( 'post_name' => $data['post_name'] ), $where ); + */ + + // make sure autosave still exists + if (!empty($args['meta_post_id'])) { + $post = get_post($args['meta_post_id']); + + if (empty($post) || empty($post->post_type)) { + unset($args['meta_post_id']); + } + } + + if (!empty($args['meta_post_id'])) { + revisionary_copy_terms($args['meta_post_id'], $revision_id); + revisionary_copy_postmeta($args['meta_post_id'], $revision_id); + + // For taxonomies and meta keys not stored for the autosave, use published copies + revisionary_copy_terms($base_post_id, $revision_id, ['empty_target_only' => true]); + revisionary_copy_postmeta($base_post_id, $revision_id, ['empty_target_only' => true]); + } else { + // If term selections are not posted for revision, store current published terms + revisionary_copy_terms($base_post_id, $revision_id); + revisionary_copy_postmeta($base_post_id, $revision_id); + } + + // Set GUID. @todo: still needed? + if ( '' == get_post_field( 'guid', $revision_id ) ) { + // need to give revision a guid for 3rd party editor compat (post_ID is ID of revision) + $wpdb->update( $wpdb->posts, array( 'guid' => get_permalink( $revision_id ) ), $where ); + } + + $data['ID'] = $revision_id; + do_action('revisionary_new_revision', $revision_id, $revision_status); + + return (int) $revision_id; // only return array in calling function should return + } } diff --git a/revisionary_main.php b/revisionary_main.php index fb62bc59..32f7bf70 100644 --- a/revisionary_main.php +++ b/revisionary_main.php @@ -78,6 +78,8 @@ function addFilters() { } } + add_filter('map_meta_cap', [$this, 'fltStatusChangeCap'], 5, 4); + if ( ! is_content_administrator_rvy() ) { add_filter( 'map_meta_cap', array($this, 'flt_post_map_meta_cap'), 5, 4); add_filter( 'user_has_cap', array( $this, 'flt_user_has_cap' ), 98, 3 ); @@ -122,6 +124,8 @@ function addFilters() { add_filter("option_page_on_front", [$this, 'fltOptionPageOnFront']); + add_filter('posts_clauses', [$this, 'fltPostsClauses'], 10, 2); + if (!is_admin()) { add_action('admin_bar_menu', [$this, 'adminToolbarItem'], 100); } @@ -160,6 +164,41 @@ function configurationLateInit() { $this->config_loaded = true; } + public function fltPostsClauses($clauses, $_wp_query, $args = []) { + global $wpdb; + + $defaults = [ + 'is_revisions_query' => false, + 'post_types' => [], + 'source_alias' => false, + ]; + $args = array_merge($defaults, (array)$args); + foreach (array_keys($defaults) as $var) { + $$var = $args[$var]; + } + + if ($is_revisions_query || !empty($_wp_query->is_revisions_query) || !empty($_wp_query->query['is_revisions_query']) || $_wp_query->is_preview) { + return $clauses; + } + + // Allow revision retrieval by front end editors / previews + if (!is_admin() && (!defined('REST_REQUEST') || ! REST_REQUEST)) { + return $clauses; + } + + if (empty($clauses['where'])) { + $clauses['where'] = '1=1'; + } + + $src_table = ($source_alias) ? $source_alias : $wpdb->posts; + $args['src_table'] = $src_table; + + $revision_status_csv = rvy_revision_statuses(['return' => 'csv']); + $clauses['where'] .= " AND $src_table.post_mime_type NOT IN ($revision_status_csv)"; + + return $clauses; + } + // This is intentionally called twice: once for code that fires on 'init' and then very late on 'init' for types which were registered late on 'init' public function setPostTypes() { $enabled_post_types = array_merge( @@ -461,7 +500,83 @@ function flt_limit_others_drafts( $caps, $meta_cap, $user_id, $args ) { return $caps; } - + + function fltStatusChangeCap($caps, $cap, $user_id, $args) { + global $current_user; + + if ('copy_post' == $cap) { + if (!empty($args[0])) { + $post_id = (is_object($args[0])) ? $args[0]->ID : $args[0]; + } else { + $post_id = 0; + } + + if (rvy_in_revision_workflow($post_id)) { + return $caps; + } + + $filter_args = []; + + if (!$can_copy = rvy_is_full_editor($post_id)) { + if ($_post = get_post($post_id)) { + $type_obj = get_post_type_object($_post->post_type); + } + + if (!empty($type_obj)) { + if (rvy_get_option("copy_posts_capability")) { + $base_prop = (rvy_is_post_author($post_id)) ? 'edit_posts' : 'edit_others_posts'; + $copy_cap_name = str_replace('edit_', 'copy_', $type_obj->cap->$base_prop); + $can_copy = current_user_can($copy_cap_name); + } else { + $can_copy = current_user_can($type_obj->cap->edit_posts); + } + + $filter_args = compact('type_obj'); + } + } + + // allow PublishPress Permissions to apply 'copy' exceptions + if ($can_copy = apply_filters('revisionary_can_copy', $can_copy, $post_id, 'draft', 'draft-revision', $filter_args)) { + $caps = ['read']; + } + + } elseif ('set_revision_pending-revision' == $cap) { + if (!empty($args[0])) { + $post_id = (is_object($args[0])) ? $args[0]->ID : $args[0]; + } else { + $post_id = 0; + } + + if (!rvy_in_revision_workflow($post_id)) { + return $caps; + } + + $filter_args = []; + + if ($can_submit = current_user_can('edit_post', $post_id)) { // require basic editing capabilties for revision ID + $main_post_id = rvy_post_id($post_id); + + if (rvy_get_option("revise_posts_capability") && !rvy_is_full_editor($main_post_id)) { // bypass capability check for those with full editing caps on main post + if ($_post = get_post($post_id)) { + if ($type_obj = get_post_type_object($_post->post_type)) { + $base_prop = (rvy_is_post_author($main_post_id)) ? 'edit_posts' : 'edit_others_posts'; + $submit_cap_name = str_replace('edit_', 'revise_', $type_obj->cap->$base_prop); + $can_submit = current_user_can($submit_cap_name); + $filter_args = compact('main_post_id', 'type_obj'); + } + } + } + } + + // allow PublishPress Permissions to apply 'revise' exceptions + if ($can_submit = apply_filters('revisionary_can_submit', $can_submit, $post_id, 'pending', 'pending-revision', $filter_args)) { + $caps = ['read']; + } + } + + return $caps; + } + function set_content_roles( $content_roles_obj ) { $this->content_roles = $content_roles_obj; diff --git a/rvy_init.php b/rvy_init.php index e8950dcf..11513f50 100644 --- a/rvy_init.php +++ b/rvy_init.php @@ -108,19 +108,93 @@ function rvy_maybe_redirect() { } } - function rvy_ajax_handler() { - global $current_user; + global $current_user, $wpdb; + + if (!empty($_REQUEST['rvy_ajax_field'])) { + if ($post_id = intval($_REQUEST['rvy_ajax_value'])) { + + switch ($_REQUEST['rvy_ajax_field']) { + case 'create_revision': + if (current_user_can('copy_post', $post_id)) { + $time_gmt = (!empty($_REQUEST['rvy_date_selection'])) ? intval($_REQUEST['rvy_date_selection']) : ''; + + require_once( dirname(REVISIONARY_FILE).'/revision-creation_rvy.php' ); + $rvy_creation = new PublishPress\Revisions\RevisionCreation(); + $rvy_creation->createRevision($post_id, 'draft-revision', compact('time_gmt')); + } + exit; + + case 'submit_revision': + // capability check is applied within function to support batch execution without redundant checks + //if (current_user_can('set_revision_pending-revision', $post_id)) { + require_once( dirname(__FILE__).'/admin/revision-action_rvy.php'); + rvy_revision_submit($post_id); + $check_autosave = true; + //} + break; + + case 'create_scheduled_revision': + if (!empty($_REQUEST['rvy_date_selection'])) { + $time_gmt = intval($_REQUEST['rvy_date_selection']); + + if (current_user_can('edit_post', $post_id)) { + require_once( dirname(REVISIONARY_FILE).'/revision-creation_rvy.php' ); + $rvy_creation = new PublishPress\Revisions\RevisionCreation(); + $rvy_creation->createRevision($post_id, 'future-revision', compact('time_gmt')); + } + } + + break; + + /* + case 'approve_revision': + require_once( dirname(__FILE__).'/admin/revision-action_rvy.php'); + rvy_revision_approve($post_id); + $check_autosave = true; + break; - if (!empty($_REQUEST['rvy_ajax_field']) && !empty($_REQUEST['post_id'])) { - // @todo: make these query args consistent - if (in_array($_REQUEST['rvy_ajax_field'], ['save_as_pending', 'save_as_revision'])) { - $save_revision = isset($_REQUEST['rvy_ajax_value']) && in_array($_REQUEST['rvy_ajax_value'], ['true', true, 1, '1'], true); - rvy_update_post_meta((int) $_REQUEST['post_id'], "_save_as_revision_{$current_user->ID}", $save_revision); - update_postmeta_cache($_REQUEST['post_id']); + case 'publish_revision': + require_once( dirname(__FILE__).'/admin/revision-action_rvy.php'); + rvy_revision_publish($post_id); + $check_autosave = true; + break; + */ - exit; + default: + } + + if (!empty($check_autosave) && !defined('REVISIONARY_IGNORE_REVISION_AUTOSAVE')) { + if ($autosave_post = PublishPress\Revisions\Utils::get_post_autosave($post_id, $current_user->ID)) { + $main_post = get_post($post_id); + + // If revision autosave is newer than revision post_updated date, copy over post data + if (strtotime($autosave_post->post_modified_gmt) > strtotime($main_post->post_modified_gmt)) { + $set_post_properties = [ + 'post_content', + 'post_content_filtered', + 'post_title', + 'post_excerpt', + ]; + + foreach($set_post_properties as $prop) { + if (!empty($autosave_post->$prop)) { + $update_data[$prop] = $autosave_post->$prop; + } + } + + $wpdb->update($wpdb->posts, $update_data, ['ID' => $post_id]); + + $wpdb->delete($wpdb->posts, ['ID' => $autosave_post->ID]); + + // For taxonomies and meta keys not stored for the autosave, use published copies + //revisionary_copy_terms($autosave_post->ID, $post_id, ['empty_target_only' => true]); + //revisionary_copy_postmeta($autosave_post->ID, $post_id, ['empty_target_only' => true]); + } + } + } } + } if (defined('DOING_AJAX') && DOING_AJAX && ('get-revision-diffs' == $_REQUEST['action'])) { From 6332431e3fbb717200e40432527f8e5ef2c8ebcf Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 21 Sep 2021 02:50:02 -0400 Subject: [PATCH 044/193] Custom Permalinks filter moved to Revisions\PluginCompat --- revisionary_main.php | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/revisionary_main.php b/revisionary_main.php index 32f7bf70..74106474 100644 --- a/revisionary_main.php +++ b/revisionary_main.php @@ -833,19 +833,4 @@ function fltUpdateCommentCountBypass($count, $old, $post_id) { return $count; } - - - function flt_custom_permalinks_query($query) { - global $wpdb; - - if (strpos($query, " WHERE pm.meta_key = 'custom_permalink' ") && strpos($query, "$wpdb->posts AS p")) { - $query = str_replace( - " ORDER BY FIELD(", - " AND p.post_status NOT IN ('pending-revision', 'future-revision') ORDER BY FIELD(", - $query - ); - } - - return $query; - } } // end Revisionary class From f0b22d69c238d9455b6b0ebcff3760a0e4954380 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 21 Sep 2021 02:51:32 -0400 Subject: [PATCH 045/193] function revisionary_copy_meta_field() is no longer used --- rvy_init.php | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/rvy_init.php b/rvy_init.php index 11513f50..489d7a9d 100644 --- a/rvy_init.php +++ b/rvy_init.php @@ -904,31 +904,6 @@ function rvy_get_manageable_types() { add_action( 'wp_ajax_rvy_dismiss_msg', '_revisionary_dashboard_dismiss_msg' ); } -function revisionary_copy_meta_field( $meta_key, $from_post_id, $to_post_id, $mirror_empty = true ) { - global $wpdb; - - if ( ! $to_post_id ) - return; - - if ( $_post = $wpdb->get_row( - $wpdb->prepare( - "SELECT * FROM $wpdb->posts WHERE ID = %d", - $from_post_id - ) - ) ) { - if ( $source_meta = $wpdb->get_row( - $wpdb->prepare("SELECT meta_value FROM $wpdb->postmeta WHERE meta_key = %s AND post_id = %d", $meta_key, $from_post_id ) - ) - ) { - rvy_update_post_meta($to_post_id, $meta_key, $source_meta->meta_value); - - } elseif ($mirror_empty && in_array($meta_key, apply_filters('revisionary_removable_meta_fields', [], $to_post_id))) { - // Disable postmeta deletion until further testing - delete_post_meta($to_post_id, $meta_key); - } - } -} - function rvy_is_network_activated($plugin_file = '') { if (!$plugin_file && defined('REVISIONARY_FILE')) { From b6f86a13565bdbf440e0f8e15e5b1ab269c8c3ee Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 21 Sep 2021 02:52:24 -0400 Subject: [PATCH 046/193] Function rvy_filtered_statuses(): support csv return format --- rvy_init.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/rvy_init.php b/rvy_init.php index 489d7a9d..e6f62ef9 100644 --- a/rvy_init.php +++ b/rvy_init.php @@ -1138,12 +1138,20 @@ function rvy_set_ma_post_authors($post_id, $authors) wp_set_object_terms($post_id, $authors, 'author'); } -function rvy_filtered_statuses($output = 'names') { - return apply_filters( +function rvy_filtered_statuses($args = []) { + $defaults = ['output' => 'names', 'return' => 'array']; + $args = array_merge($defaults, $args); + foreach (array_keys($defaults) as $var) { + $$var = $args[$var]; + } + + $arr = apply_filters( 'revisionary_main_post_statuses', get_post_stati( ['public' => true, 'private' => true], $output, 'or' ), $output ); + + return ('csv' == $return) ? "'" . implode("','", $arr) . "'" : $arr; } // REST API Cache plugin compat From a12b28e2fbbe45ebaa193ff2f69d3f95fb82f189 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 21 Sep 2021 02:52:54 -0400 Subject: [PATCH 047/193] Remove obsolete function rvy_maybe_redirect() --- rvy_init.php | 8 -------- 1 file changed, 8 deletions(-) diff --git a/rvy_init.php b/rvy_init.php index e6f62ef9..31f001e0 100644 --- a/rvy_init.php +++ b/rvy_init.php @@ -100,14 +100,6 @@ function _rvy_no_redirect_filter($redirect, $orig) { return $redirect; } -function rvy_maybe_redirect() { - // temporary provision for 2.0 beta testers - if (strpos($_SERVER['REQUEST_URI'], 'page=rvy-moderation')) { - wp_redirect(str_replace('page=rvy-moderation', 'page=revisionary-q', esc_url($_SERVER['REQUEST_URI']))); - exit; - } -} - function rvy_ajax_handler() { global $current_user, $wpdb; From bfefc97346d52456142a5525b9762ee0a9cac92f Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 21 Sep 2021 02:54:56 -0400 Subject: [PATCH 048/193] function revisionary_refresh_postmeta(): eliminate second argument --- revisionary_main.php | 2 +- rvy_init.php | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/revisionary_main.php b/revisionary_main.php index 74106474..bff19d88 100644 --- a/revisionary_main.php +++ b/revisionary_main.php @@ -343,7 +343,7 @@ function actDeletePost($post_id) { ) ); - revisionary_refresh_postmeta(rvy_post_id($post->ID), null, ['ignore_revisions' => [$post->ID]]); + revisionary_refresh_postmeta(rvy_post_id($post->ID), ['ignore_revisions' => [$post->ID]]); } } diff --git a/rvy_init.php b/rvy_init.php index 31f001e0..dbd2b69f 100644 --- a/rvy_init.php +++ b/rvy_init.php @@ -441,12 +441,13 @@ function revisionary_publish_scheduled() { rvy_publish_scheduled_revisions(); } -function revisionary_refresh_postmeta($post_id, $set_value = null, $args = []) { +function revisionary_refresh_postmeta($post_id, $args = []) { global $wpdb; $ignore_revisions = (!empty($args['ignore_revisions'])) ? $args['ignore_revisions'] : []; - if (is_null($set_value)) { + $ignore_clause = ($ignore_revisions) ? " AND ID NOT IN (" . implode(",", array_map('intval', $ignore_revisions)) . ")" : ''; + $revision_status_csv = rvy_revision_statuses(['return' => 'csv']); $has_revisions = $wpdb->get_var( @@ -458,7 +459,6 @@ function revisionary_refresh_postmeta($post_id, $set_value = null, $args = []) { ); $set_value = !empty($has_revisions); - } if ($set_value) { rvy_update_post_meta($post_id, '_rvy_has_revisions', $set_value); From 046fe19401cc1fbbe9eeb0ad917847f005f0f7bd Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 21 Sep 2021 02:56:05 -0400 Subject: [PATCH 049/193] function rvy_get_post_revisions(): change default value of status arg --- admin/admin-init_rvy.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/admin/admin-init_rvy.php b/admin/admin-init_rvy.php index f9c69774..39426d9b 100644 --- a/admin/admin-init_rvy.php +++ b/admin/admin-init_rvy.php @@ -365,7 +365,7 @@ function RvyDismissNotice(){ endif; } -function rvy_get_post_revisions($post_id, $status = 'inherit', $args = '' ) { +function rvy_get_post_revisions($post_id, $status = '', $args = '' ) { global $wpdb; $defaults = array( 'order' => 'DESC', 'orderby' => 'post_modified_gmt', 'use_memcache' => true, 'fields' => COLS_ALL_RVY, 'return_flipped' => false ); From 6bc336fd9b328c6ceb1f3e2b5539d9a2ef12b6f9 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 21 Sep 2021 03:02:11 -0400 Subject: [PATCH 050/193] Various trivial code cleanup --- admin/admin-init_rvy.php | 2 ++ admin/admin_rvy.php | 5 ++--- rvy_init.php | 9 +++------ 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/admin/admin-init_rvy.php b/admin/admin-init_rvy.php index 39426d9b..dc0457ff 100644 --- a/admin/admin-init_rvy.php +++ b/admin/admin-init_rvy.php @@ -46,6 +46,8 @@ function rvy_load_textdomain() { } function rvy_admin_init() { + rvy_load_textdomain(); + // @todo: clean up "Restore Revision" URL on Diff screen if (!empty($_GET['amp;revision']) && !empty($_GET['amp;action']) && !empty($_GET['amp;_wpnonce'])) { $_GET['revision'] = $_GET['amp;revision']; diff --git a/admin/admin_rvy.php b/admin/admin_rvy.php index 83faa068..2b2a0d99 100644 --- a/admin/admin_rvy.php +++ b/admin/admin_rvy.php @@ -30,10 +30,10 @@ function __construct() { add_action('admin_menu', 'rvy_mu_site_menu', 15 ); } - add_action('admin_menu', array(&$this,'build_menu')); + add_action('admin_menu', [$this, 'build_menu']); if ( strpos($script_name, 'p-admin/plugins.php') ) { - add_filter( 'plugin_row_meta', array(&$this, 'flt_plugin_action_links'), 10, 2 ); + add_filter( 'plugin_row_meta', [$this, 'flt_plugin_action_links'], 10, 2 ); } } @@ -175,7 +175,6 @@ function build_menu() { if ( empty($rvy_default_options) ) rvy_refresh_default_options(); - global $blog_id; if ( ! RVY_NETWORK || ( count($rvy_options_sitewide) != count($rvy_default_options) ) ) { add_submenu_page( 'revisionary-q', __('PublishPress Revisions Settings', 'revisionary'), __('Settings', 'revisionary'), 'read', 'revisionary-settings', 'rvy_omit_site_options'); add_action('revisionary_page_revisionary-settings', 'rvy_omit_site_options' ); diff --git a/rvy_init.php b/rvy_init.php index dbd2b69f..e06ba0d7 100644 --- a/rvy_init.php +++ b/rvy_init.php @@ -18,10 +18,8 @@ } if (!empty($_REQUEST['preview']) && !empty($_REQUEST['post_type']) && empty($_REQUEST['preview_id'])) { - add_filter('redirect_canonical', '_rvy_no_redirect_filter', 10, 2); - } - -add_action('init', 'rvy_maybe_redirect', 1); + add_filter('redirect_canonical', '_rvy_no_redirect_filter', 10, 2); +} /*======== WP-Cron implentation for Email Notification Buffer ========*/ add_action('init', 'rvy_set_notification_buffer_cron'); @@ -925,8 +923,7 @@ function rvy_init() { */ if ( is_admin() ) { - require_once( dirname(__FILE__).'/admin/admin-init_rvy.php' ); - rvy_load_textdomain(); + require_once(dirname(__FILE__).'/admin/admin-init_rvy.php'); if (defined('REVISIONARY_BULK_ACTION_EARLY_EXECUTION') || !isset($_REQUEST['action2'])) { rvy_admin_init(); From a83ffa8b2a4ccbeb832d859e10241e4b5a444f85 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 21 Sep 2021 03:04:27 -0400 Subject: [PATCH 051/193] Plugin actions filter moved to RevisionaryAdmin --- admin/admin-plugins_rvy.php | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 admin/admin-plugins_rvy.php diff --git a/admin/admin-plugins_rvy.php b/admin/admin-plugins_rvy.php deleted file mode 100644 index 3daf486a..00000000 --- a/admin/admin-plugins_rvy.php +++ /dev/null @@ -1,15 +0,0 @@ -" . _pp_('Settings') . ""; - } - - return $links; - } -} // end class From b33d1e1fe7317fd380f9aaaebec415fb616f7887 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 21 Sep 2021 03:06:26 -0400 Subject: [PATCH 052/193] Remove obsolete setting / settings UI --- admin/options.php | 8 +++----- defaults_rvy.php | 2 -- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/admin/options.php b/admin/options.php index f666bc97..4128b2a7 100644 --- a/admin/options.php +++ b/admin/options.php @@ -116,7 +116,6 @@ function options_ui( $sitewide = false, $customize_defaults = false ) { 'revisor_lock_others_revisions' => __("Editing others' revisions requires role capability", 'revisionary'), 'revisor_hide_others_revisions' => __("Listing others' revisions requires role capability", 'revisionary'), 'queue_query_all_posts' => __('Compatibility Mode', 'revisionary'), - 'revision_update_redirect' => __('Confirmation redirect on Revision Update', 'revisionary'), 'revision_update_notifications' => __('Also notify on Revision Update', 'revisionary'), 'trigger_post_update_actions' => __('Revision Publication: API actions to mimic Post Update', 'revisionary'), 'diff_display_strip_tags' => __('Hide html tags on Compare Revisions screen', 'revisionary'), @@ -164,7 +163,7 @@ function options_ui( $sitewide = false, $customize_defaults = false ) { 'revision_queue' => ['revisor_lock_others_revisions', 'revisor_hide_others_revisions', 'queue_query_all_posts'], 'preview' => ['revision_preview_links', 'preview_link_type', 'compare_revisions_direct_approval'], 'revisions' => ['trigger_post_update_actions', 'copy_revision_comments_to_post', 'diff_display_strip_tags', 'past_revisions_order_by', 'display_hints'], - 'notification' => ['pending_rev_notify_admin', 'pending_rev_notify_author', 'revision_update_redirect', 'revision_update_notifications', 'rev_approval_notify_admin', 'rev_approval_notify_author', 'rev_approval_notify_revisor', 'publish_scheduled_notify_admin', 'publish_scheduled_notify_author', 'publish_scheduled_notify_revisor', 'use_notification_buffer'], + 'notification' => ['pending_rev_notify_admin', 'pending_rev_notify_author', 'revision_update_notifications', 'rev_approval_notify_admin', 'rev_approval_notify_author', 'rev_approval_notify_revisor', 'publish_scheduled_notify_admin', 'publish_scheduled_notify_author', 'publish_scheduled_notify_revisor', 'use_notification_buffer'], ] ]); @@ -612,9 +611,6 @@ function options_ui( $sitewide = false, $customize_defaults = false ) { $this->option_checkbox( 'revision_update_notifications', $tab, $section, $hint, '' ); } - $hint = ''; - $this->option_checkbox( 'revision_update_redirect', $tab, $section, $hint, '' ); - $hint = ''; $this->option_checkbox( 'pending_rev_notify_revisor', $tab, $section, $hint, '' ); @@ -648,6 +644,7 @@ function options_ui( $sitewide = false, $customize_defaults = false ) { if( $pending_revisions_available ) { if ( in_array( 'pending_rev_notify_admin', $this->form_options[$tab][$section] ) || in_array( 'pending_rev_notify_author', $this->form_options[$tab][$section] ) ) { + /* // @todo: PublishPress Notifications integration if ( $this->display_hints ) { echo '
'; if ( defined('RVY_CONTENT_ROLES') ) @@ -656,6 +653,7 @@ function options_ui( $sitewide = false, $customize_defaults = false ) { printf( __('Note: "by default" means Change Request creators can customize email notification recipients before submitting. For more flexibility in moderation and notification, install the %1$s PublishPress Permissions Pro%2$s plugin.', 'revisionary'), "", '' ); echo '
'; } + */ } } diff --git a/defaults_rvy.php b/defaults_rvy.php index e6e55440..71db2ef4 100644 --- a/defaults_rvy.php +++ b/defaults_rvy.php @@ -43,7 +43,6 @@ function rvy_default_options_sitewide() { 'preview_link_type' => true, 'compare_revisions_direct_approval' => true, 'display_pp_branding' => true, - 'revision_update_redirect' => true, 'revision_update_notifications' => true, 'trigger_post_update_actions' => true, 'copy_revision_comments_to_post' => true, @@ -90,7 +89,6 @@ function rvy_default_options() { 'preview_link_type' => 'published_slug', 'compare_revisions_direct_approval' => 0, 'display_pp_branding' => 1, - 'revision_update_redirect' => 0, 'revision_update_notifications' => 0, 'trigger_post_update_actions' => 0, 'copy_revision_comments_to_post' => 0, From de091c4b2ed1e91de0cb6e38b386b24c54973d8f Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 21 Sep 2021 03:07:43 -0400 Subject: [PATCH 053/193] New Revision Queue row action filter, footer action --- admin/class-list-table_rvy.php | 2 ++ admin/options.php | 3 +-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/admin/class-list-table_rvy.php b/admin/class-list-table_rvy.php index 5308053e..101a0940 100644 --- a/admin/class-list-table_rvy.php +++ b/admin/class-list-table_rvy.php @@ -1176,6 +1176,8 @@ protected function handle_row_actions( $post, $column_name, $primary ) { _x('Compare', 'revisions', 'revisionary') ); } + + $actions = apply_filters('revisionary_queue_row_actions', $actions, $post); } return $this->row_actions( $actions ); diff --git a/admin/options.php b/admin/options.php index 4128b2a7..053d7d1e 100644 --- a/admin/options.php +++ b/admin/options.php @@ -906,8 +906,7 @@ function options_ui( $sitewide = false, $customize_defaults = false ) {

admin->publishpressFooter(); +do_action('revisionary_admin_footer'); ?> From d021e90ce3bc2f34b328d75cde762fc9ca164b9d Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 21 Sep 2021 03:08:12 -0400 Subject: [PATCH 054/193] Revision Queue: Submit caption --- admin/class-list-table_rvy.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/admin/class-list-table_rvy.php b/admin/class-list-table_rvy.php index 101a0940..aac178bf 100644 --- a/admin/class-list-table_rvy.php +++ b/admin/class-list-table_rvy.php @@ -823,6 +823,8 @@ protected function get_bulk_actions() { } } + $actions['submit_revision'] = __('Submit'); + if ($approval_potential = apply_filters('revisionary_bulk_action_approval', $approval_potential)) { $actions['approve_revision'] = __('Approve'); $actions['publish_revision'] = __('Publish'); From 9f4295f3e99245fda474f6751deed4e3b0518679 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 21 Sep 2021 03:08:41 -0400 Subject: [PATCH 055/193] Revision Queue: apply Compatibility mode more uniformly --- admin/class-list-table_rvy.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/admin/class-list-table_rvy.php b/admin/class-list-table_rvy.php index aac178bf..f6ebe56e 100644 --- a/admin/class-list-table_rvy.php +++ b/admin/class-list-table_rvy.php @@ -64,7 +64,7 @@ function do_query( $q = false ) { $qp['posts_per_page'] = -1; $qp['fields'] = 'ids'; - if (!rvy_get_option('queue_query_all_posts')) { // support defeat of performance enhancement in case _has_revisions flag is not being stored reliably due to plugin integration issues + if (empty($q['published_post']) && empty($q['post_author']) && !rvy_get_option('queue_query_all_posts')) { // support defeat of performance enhancement in case _has_revisions flag is not being stored reliably due to plugin integration issues $qp['meta_key'] = '_rvy_has_revisions'; } From b61898089d873399f1e108866dc3491efef659cf Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 21 Sep 2021 03:11:32 -0400 Subject: [PATCH 056/193] Revision Queue: new footer action --- admin/revision-queue_rvy.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/admin/revision-queue_rvy.php b/admin/revision-queue_rvy.php index 73928410..41ed75a1 100644 --- a/admin/revision-queue_rvy.php +++ b/admin/revision-queue_rvy.php @@ -168,8 +168,7 @@
admin->publishpressFooter(); +do_action('revisionary_admin_footer'); ?> From a11aa95e9355b12490e84dc6a9627270274127a4 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 21 Sep 2021 03:12:03 -0400 Subject: [PATCH 057/193] Update copyright date, comments --- admin/admin_rvy.php | 6 +++++- admin/revision-action_rvy.php | 2 +- admin/revision-ui_rvy.php | 5 +++++ defaults_rvy.php | 2 +- revisionary_main.php | 9 +++++---- 5 files changed, 17 insertions(+), 7 deletions(-) diff --git a/admin/admin_rvy.php b/admin/admin_rvy.php index 2b2a0d99..2927da7b 100644 --- a/admin/admin_rvy.php +++ b/admin/admin_rvy.php @@ -2,9 +2,13 @@ /** * @package PublishPress\Revisions\RevisionaryAdmin * @author PublishPress - * @copyright Copyright (c) 2019 PublishPress. All rights reserved. + * @copyright Copyright (c) 2021 PublishPress. All rights reserved. * @license GPLv2 or later * @since 1.0.0 + * + * Scripts and filter / action handlers applicable for all wp-admin URLs + * + * Selectively load other classes based on URL */ if( basename(__FILE__) == basename($_SERVER['SCRIPT_FILENAME']) ) diff --git a/admin/revision-action_rvy.php b/admin/revision-action_rvy.php index 4dc96bf8..97bee92d 100644 --- a/admin/revision-action_rvy.php +++ b/admin/revision-action_rvy.php @@ -7,7 +7,7 @@ /** * @package PublishPress\Revisions\RevisionaryAction * @author PublishPress - * @copyright Copyright (c) 2019 PublishPress. All rights reserved. + * @copyright Copyright (c) 2021 PublishPress. All rights reserved. * @license GPLv2 or later * @since 1.0.0 */ diff --git a/admin/revision-ui_rvy.php b/admin/revision-ui_rvy.php index b9421c94..8580b098 100644 --- a/admin/revision-ui_rvy.php +++ b/admin/revision-ui_rvy.php @@ -1,4 +1,9 @@ diff --git a/defaults_rvy.php b/defaults_rvy.php index 71db2ef4..45b908ad 100644 --- a/defaults_rvy.php +++ b/defaults_rvy.php @@ -5,7 +5,7 @@ /** * @package PublishPress\Revisions\RevisionaryOptions * @author PublishPress - * @copyright Copyright (c) 2019 PublishPress. All rights reserved. + * @copyright Copyright (c) 2021 PublishPress. All rights reserved. * @license GPLv2 or later * @since 1.0.0 */ diff --git a/revisionary_main.php b/revisionary_main.php index bff19d88..32f0b296 100644 --- a/revisionary_main.php +++ b/revisionary_main.php @@ -5,13 +5,12 @@ /** * @package PublishPress\Revisions * @author PublishPress - * @copyright Copyright (c) 2020 PublishPress. All rights reserved. + * @copyright Copyright (c) 2021 PublishPress. All rights reserved. * @license GPLv2 or later * @since 1.0.0 */ class Revisionary { - var $admin; // object ref - RevisionaryAdmin var $filters_admin_item_ui; // object ref - RevisionaryAdminFiltersItemUI var $content_roles; // object ref - instance of RevisionaryContentRoles subclass, set by external plugin var $doing_rest = false; @@ -89,8 +88,8 @@ function addFilters() { if ( is_admin() ) { require_once( dirname(__FILE__).'/admin/admin_rvy.php'); - $this->admin = new RevisionaryAdmin(); - } + new RevisionaryAdmin(); + } add_action( 'wpmu_new_blog', array( $this, 'act_new_blog'), 10, 2 ); @@ -785,6 +784,8 @@ function flt_insert_post_data( $data, $postarr ) { return $data; } + + // @todo: confirm this is still needed function flt_regulate_revision_status($data, $postarr) { // Revisions are not published by wp_update_post() execution; Prevent setting to a non-revision status if (rvy_get_post_meta($postarr['ID'], '_rvy_base_post_id', true) && ('trash' != $data['post_status'])) { From c7a85677944ec8631ff2d0cd32ebbdc94c7ab25d Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 21 Sep 2021 03:14:13 -0400 Subject: [PATCH 058/193] Remove obsolete code --- admin/admin_lib-mu_rvy.php | 2 -- admin/admin_rvy.php | 3 +-- admin/revision-ui_rvy.php | 22 ---------------------- revisionary_main.php | 1 - 4 files changed, 1 insertion(+), 27 deletions(-) diff --git a/admin/admin_lib-mu_rvy.php b/admin/admin_lib-mu_rvy.php index 200c496d..cc906080 100644 --- a/admin/admin_lib-mu_rvy.php +++ b/admin/admin_lib-mu_rvy.php @@ -4,8 +4,6 @@ function rvy_mu_site_menu() { if ( ! current_user_can( 'manage_options' ) ) return; - $path = RVY_ABSPATH; - // WP MU site options if ( awp_is_mu() ) { // Network-Wide Settings diff --git a/admin/admin_rvy.php b/admin/admin_rvy.php index 2927da7b..db4cfbb2 100644 --- a/admin/admin_rvy.php +++ b/admin/admin_rvy.php @@ -28,8 +28,7 @@ function __construct() { add_action('revisionary_admin_footer', [$this, 'publishpressFooter']); if ( ! defined('XMLRPC_REQUEST') && ! strpos($script_name, 'p-admin/async-upload.php' ) ) { - global $blog_id; - if ( RVY_NETWORK && ( is_main_site($blog_id) ) ) { + if ( RVY_NETWORK && ( is_main_site() ) ) { require_once( dirname(__FILE__).'/admin_lib-mu_rvy.php' ); add_action('admin_menu', 'rvy_mu_site_menu', 15 ); } diff --git a/admin/revision-ui_rvy.php b/admin/revision-ui_rvy.php index 8580b098..e1570b9b 100644 --- a/admin/revision-ui_rvy.php +++ b/admin/revision-ui_rvy.php @@ -45,28 +45,6 @@ function rvy_metabox_notification_list() { echo(''); } - -function rvy_metabox_revisions( $status ) { - global $revisionary; - - $property_name = $status . '_revisions'; - if ( ! empty( $revisionary->filters_admin_item_ui->$property_name ) ) - echo $revisionary->filters_admin_item_ui->$property_name; - - elseif ( ! empty( $_GET['post'] ) ) { - $args = array( 'format' => 'list', 'parent' => false ); - rvy_list_post_revisions( (int) $_GET['post'], $status, $args ); - } -} - -function rvy_metabox_revisions_pending() { - rvy_metabox_revisions( 'pending-revision' ); -} - -function rvy_metabox_revisions_future() { - rvy_metabox_revisions( 'future-revision' ); -} - /** * Retrieve formatted date timestamp of a revision (linked to that revisions's page). * diff --git a/revisionary_main.php b/revisionary_main.php index 32f0b296..b01ff62f 100644 --- a/revisionary_main.php +++ b/revisionary_main.php @@ -11,7 +11,6 @@ */ class Revisionary { - var $filters_admin_item_ui; // object ref - RevisionaryAdminFiltersItemUI var $content_roles; // object ref - instance of RevisionaryContentRoles subclass, set by external plugin var $doing_rest = false; var $rest = ''; // object ref - Revisionary_REST From 1b26586a8fc1a5e6aaf5667ed60d62d60ea35408 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 21 Sep 2021 03:15:09 -0400 Subject: [PATCH 059/193] Minor logical simplification --- revisionary_main.php | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/revisionary_main.php b/revisionary_main.php index b01ff62f..c43adaac 100644 --- a/revisionary_main.php +++ b/revisionary_main.php @@ -460,16 +460,13 @@ function flt_limit_others_drafts( $caps, $meta_cap, $user_id, $args ) { if ( $post = get_post( $object_id ) ) { if ( ('revision' != $post->post_type) && ! rvy_in_revision_workflow($post) ) { - if (empty($this->enabled_post_types[$post->post_type])) { + if (empty($this->enabled_post_types[$post->post_type]) + || !apply_filters('revisionary_require_edit_others_drafts', true, $post->post_type, $post->post_status, $args)) { return $caps; } $status_obj = get_post_status_object( $post->post_status ); - if (!apply_filters('revisionary_require_edit_others_drafts', true, $post->post_type, $post->post_status, $args)) { - return $caps; - } - if (!rvy_is_post_author($post) && $status_obj && ! $status_obj->public && ! $status_obj->private) { $post_type_obj = get_post_type_object( $post->post_type ); if (isset($post_type_obj->cap->edit_published_posts) && current_user_can( $post_type_obj->cap->edit_published_posts)) { // don't require any additional caps for sitewide Editors From 6730a56cf2e1ccb3de8a01fbf34b6b66a0d49695 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 21 Sep 2021 03:17:32 -0400 Subject: [PATCH 060/193] main class: adjust execution timing for filter initialization --- revisionary_main.php | 3 +++ rvy_init.php | 1 + 2 files changed, 4 insertions(+) diff --git a/revisionary_main.php b/revisionary_main.php index c43adaac..9b631254 100644 --- a/revisionary_main.php +++ b/revisionary_main.php @@ -22,6 +22,9 @@ class Revisionary // minimal config retrieval to support pre-init usage by WP_Scoped_User before text domain is loaded function __construct() { + } + + function init() { if (is_admin() && (false !== strpos($_SERVER['REQUEST_URI'], 'revision.php')) && (!empty($_REQUEST['revision']))) { add_action('init', [$this, 'addFilters'], PHP_INT_MAX); } else { diff --git a/rvy_init.php b/rvy_init.php index e06ba0d7..f86c3e48 100644 --- a/rvy_init.php +++ b/rvy_init.php @@ -998,6 +998,7 @@ function rvy_init() { global $revisionary; $revisionary = new Revisionary(); + $revisionary->init(); } function rvy_is_full_editor($post, $args = []) { From 997613ddda8008ae28384add4e1dd6482b538dc3 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 21 Sep 2021 03:18:04 -0400 Subject: [PATCH 061/193] Adjust execution timing for ajax handler --- rvy_init.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rvy_init.php b/rvy_init.php index f86c3e48..56c8803a 100644 --- a/rvy_init.php +++ b/rvy_init.php @@ -11,10 +11,10 @@ add_action('init', 'rvy_status_registrations', 40); -if (did_action('set_current_user')) { +if (did_action('wp_loaded')) { rvy_ajax_handler(); } else { - add_action( 'set_current_user', 'rvy_ajax_handler', 20); + add_action( 'wp_loaded', 'rvy_ajax_handler', 20); } if (!empty($_REQUEST['preview']) && !empty($_REQUEST['post_type']) && empty($_REQUEST['preview_id'])) { From 3b3a7ec635c25cabc10c5f40c70920d5ea6cb0d5 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 21 Sep 2021 03:18:21 -0400 Subject: [PATCH 062/193] code comment --- rvy_init.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/rvy_init.php b/rvy_init.php index 56c8803a..f04c81e0 100644 --- a/rvy_init.php +++ b/rvy_init.php @@ -88,6 +88,9 @@ function rvy_mail_buffer_cron_interval( $schedules ) { /*=================== End WP-Cron implementation ====================*/ +/* + * Revision previews: prevent redirect for non-standard post url + */ function _rvy_no_redirect_filter($redirect, $orig) { global $current_user, $wpdb; From bbad511ef884aa1a3b0b6a1500ed4d109a387132 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 21 Sep 2021 03:19:42 -0400 Subject: [PATCH 063/193] rvy_preview_url(): support scalar ID argument --- rvy_init.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/rvy_init.php b/rvy_init.php index f04c81e0..6c014d2d 100644 --- a/rvy_init.php +++ b/rvy_init.php @@ -1065,6 +1065,10 @@ function rvy_is_post_author($post, $user = false) { } function rvy_preview_url($revision, $args = []) { + if (is_scalar($revision)) { + $revision = get_post($revision); + } + $defaults = ['post_type' => $revision->post_type]; // support preview url for past revisions, which are stored with post_type = 'revision' foreach(array_keys($defaults) as $var) { $$var = (!empty($args[$var])) ? $args[$var] : $defaults[$var]; @@ -1116,7 +1120,7 @@ function rvy_preview_url($revision, $args = []) { } if (!defined('REVISIONARY_PREVIEW_NO_CACHEBUST')) { - $preview_url = add_query_arg('nc', substr(md5(rand()), 1, 8), $preview_url); + $preview_url = rvy_nc_url($preview_url); } return apply_filters('revisionary_preview_url', $preview_url, $revision, $args); From c558b6c61ba4a8667168dc6cc51b6a8555e7c1c2 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 21 Sep 2021 03:21:01 -0400 Subject: [PATCH 064/193] REST Cache compat: revision_submitted, revision_updated no longer transients --- rvy_init.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rvy_init.php b/rvy_init.php index 6c014d2d..788190a1 100644 --- a/rvy_init.php +++ b/rvy_init.php @@ -1160,7 +1160,7 @@ function rvy_rest_cache_compat() { $uri = $_SERVER['REQUEST_URI']; $rest_cache_active = false; - foreach(['rvy_ajax_field', 'rvy_ajax_value', 'revision_submitted', 'revision_updated'] as $param) { + foreach(['rvy_ajax_field', 'rvy_ajax_value'] as $param) { if (strpos($uri, $param)) { $rest_cache_active = true; break; @@ -1185,7 +1185,7 @@ function rvy_rest_cache_compat() { function rvy_rest_cache_skip($skip) { $uri = $_SERVER['REQUEST_URI']; - $uncached_params = array_merge($uncached_params, ['rvy_ajax_field', 'rvy_ajax_value', 'revision_submitted', 'revision_updated']); + $uncached_params = array_merge($uncached_params, ['rvy_ajax_field', 'rvy_ajax_value']); foreach($uncached_params as $param) { if (strpos($uri, $param)) { From 258e6ffbe8cbf2491aca076d159aaaf1a2d5b454 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 21 Sep 2021 03:21:38 -0400 Subject: [PATCH 065/193] Compare Revisions: change "Submitted" caption to "Modified" --- admin/history_rvy.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/admin/history_rvy.php b/admin/history_rvy.php index b42262bd..893ba573 100644 --- a/admin/history_rvy.php +++ b/admin/history_rvy.php @@ -914,7 +914,7 @@ private function prepare_revisions_for_js( $post, $selected_revision_id, $from = $modified_gmt = strtotime( $revision->post_date_gmt . ' +0000' ); } else { - $date_prefix = __('Submitted ', 'revisionary'); + $date_prefix = __('Modified ', 'revisionary'); $modified = strtotime( $revision->post_modified ); $modified_gmt = strtotime( $revision->post_modified_gmt . ' +0000' ); } From 97bd2248962c0e5a6a4890f62f32903cee420aab Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 21 Sep 2021 03:22:51 -0400 Subject: [PATCH 066/193] Legacy Revisions Manager: use rvy_in_revision_workflow() --- admin/revision-ui_rvy.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/admin/revision-ui_rvy.php b/admin/revision-ui_rvy.php index e1570b9b..ac51e0fc 100644 --- a/admin/revision-ui_rvy.php +++ b/admin/revision-ui_rvy.php @@ -213,13 +213,13 @@ function rvy_list_post_revisions( $post_id = 0, $status = '', $args = null ) { foreach ( $revisions as $revision ) { if ( $status && ( $status != $revision->post_status ) ) // support arg to display only past / pending / future revisions - if ( ('revision' == $revision->post_type) || rvy_is_revision_status($revision->post_status) ) // but always display current rev + if ( ('revision' == $revision->post_type) || rvy_in_revision_workflow($revision) ) // but always display current rev continue; if ( 'revision' === $type && wp_is_post_autosave( $revision ) ) continue; - if ( $hide_others_revisions && ( ( 'revision' == $revision->post_type ) || rvy_is_revision_status($revision->post_status) ) && !rvy_is_post_author($revision) ) + if ( $hide_others_revisions && ( ( 'revision' == $revision->post_type ) || rvy_in_revision_workflow($revision) ) && !rvy_is_post_author($revision) ) continue; // todo: set up buffering to restore this in case we (or some other plugin) impose revision-specific read capability From 1732b05ca76aa221fd57d3c9dbdd928716315f39 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 21 Sep 2021 03:23:52 -0400 Subject: [PATCH 067/193] Legacy Revisions Manager: js for Check All --- admin/revision-ui_rvy.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/admin/revision-ui_rvy.php b/admin/revision-ui_rvy.php index ac51e0fc..908ee875 100644 --- a/admin/revision-ui_rvy.php +++ b/admin/revision-ui_rvy.php @@ -353,6 +353,19 @@ function rvy_list_post_revisions( $post_id = 0, $status = '', $args = null ) { wp_nonce_field( 'rvy-revisions' ); ?> + + + From 48720e7fc9169ec15cc30621b528ffdde859fc16 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 21 Sep 2021 03:24:58 -0400 Subject: [PATCH 068/193] Revision Preview: new class name for Change Request button --- front_rvy.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/front_rvy.php b/front_rvy.php index 1e3c10d9..af552ad2 100644 --- a/front_rvy.php +++ b/front_rvy.php @@ -306,13 +306,13 @@ function act_template_redirect() { if ( strtotime( $post->post_date_gmt ) > agp_time_gmt() ) { $class = 'pending_future'; - $publish_button = ($can_publish) ? '' . $approve_caption . '' : ''; + $publish_button = ($can_publish) ? '' . $approve_caption . '' : ''; $message = sprintf( __('This is a Change Request (requested publish date: %s). %s %s %s', 'revisionary'), $date, $view_published, $edit_button, $publish_button ); } else { $class = 'pending'; $status_obj = get_post_status_object(get_post_field('post_status', rvy_post_id($revision_id))); $publish_caption = (!empty($status_obj->public) || !empty($status_obj->private)) ? __('Publish now', 'revisionary') : $approve_caption; - $publish_button = ($can_publish) ? '' . $publish_caption . '' : ''; + $publish_button = ($can_publish) ? '' . $publish_caption . '' : ''; $message = sprintf( __('This is a Change Request. %s %s %s', 'revisionary'), $view_published, $edit_button, $publish_button ); } break; From 22fa9e85a8ba0f55fd8fa7d964948e52244b0607 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 21 Sep 2021 03:25:28 -0400 Subject: [PATCH 069/193] Revision Preview: List (Queue) button --- front_rvy.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/front_rvy.php b/front_rvy.php index af552ad2..a178426e 100644 --- a/front_rvy.php +++ b/front_rvy.php @@ -216,10 +216,20 @@ function act_template_redirect() { $published_url = ($published_post_id) ? get_permalink($published_post_id) : ''; $diff_url = rvy_admin_url("revision.php?revision=$revision_id"); - + $queue_url = rvy_admin_url("admin.php?page=revisionary-q&published_post=$published_post_id"); + if ((!rvy_get_option('revisor_hide_others_revisions') && !empty($type_obj) && current_user_can($type_obj->cap->edit_posts)) || current_user_can('read_post', $revision_id)) { $view_published = ($published_url) ? sprintf( + apply_filters( + 'revisionary_list_caption', + __("%sList%s", 'revisionary'), + $post // revision + ), + "", + '' + ) + . sprintf( apply_filters( 'revisionary_preview_compare_view_caption', __("%sCompare%s%sView Published Post%s", 'revisionary'), From 29b273eb3bec1f4399ba589a544f730c551843e7 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 21 Sep 2021 03:26:11 -0400 Subject: [PATCH 070/193] Revision Queue: on 404, redirect to main post if known --- front_rvy.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/front_rvy.php b/front_rvy.php index a178426e..e3301020 100644 --- a/front_rvy.php +++ b/front_rvy.php @@ -137,6 +137,14 @@ function act_template_redirect() { global $wp_query, $revisionary; if ($wp_query->is_404) { + if (!empty($_REQUEST['base_post'])) { + if ($post = get_post(intval($_REQUEST['base_post']))) { + $url = get_permalink($_REQUEST['base_post']); + wp_redirect($url); + exit; + } + } + return; } From 3b087440e9b0a38a13957ff25177b8b071023021 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 21 Sep 2021 03:27:29 -0400 Subject: [PATCH 071/193] Email notification buffer: temporarily disable We will implement PublishPress Notifications integration soon --- mail-buffer_rvy.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mail-buffer_rvy.php b/mail-buffer_rvy.php index da959603..a05664d5 100644 --- a/mail-buffer_rvy.php +++ b/mail-buffer_rvy.php @@ -23,7 +23,10 @@ function _rvy_mail_check_buffer($new_msg = [], $args = []) { if (!$log_only) { wp_cache_delete('revisionary_mail_buffer', 'options'); - if (!$buffer = get_option('revisionary_mail_buffer')) { + // @todo: re-enable buffer after troubleshooting for working copy redirect error + + //if (!$buffer = get_option('revisionary_mail_buffer')) { + if (true) { $buffer = []; $first_buffer = true; } @@ -80,6 +83,8 @@ function _rvy_mail_check_buffer($new_msg = [], $args = []) { if (!$log_only && $new_msg_buffered) { $buffer = array_merge([$new_msg], $buffer); update_option('revisionary_mail_buffer', $buffer); + } else { + $buffer = []; } if (!empty($purged)) { From b62b56bf4cd2d9eba5940001e993de41e764e058 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 21 Sep 2021 03:28:37 -0400 Subject: [PATCH 072/193] AgentsChecklist: remove obsolete functions --- admin/agents_checklist_rvy.php | 66 +++++----------------------------- 1 file changed, 9 insertions(+), 57 deletions(-) diff --git a/admin/agents_checklist_rvy.php b/admin/agents_checklist_rvy.php index 59b0ea0d..20bc2c7e 100644 --- a/admin/agents_checklist_rvy.php +++ b/admin/agents_checklist_rvy.php @@ -7,17 +7,6 @@ // TODO: scale this down more, as it's overkill for Revisionary's usage class RevisionaryAgentsChecklist { - public static function all_agents_checklist( $role_bases, $agents, $args, $class = 'rs-agents' ) { - $div_style = "class='$class rvy-agents-checklist'"; - - foreach ( $role_bases as $role_basis ) { - echo "
"; - self::agents_checklist($role_basis, $agents[$role_basis], $role_basis, array(), $args); - - echo "
"; - } - } - public static function agents_checklist( $role_basis, $all_agents, $id_prefix = '', $stored_assignments = '', $args = '') { if ( empty($all_agents) ) return; @@ -38,22 +27,11 @@ public static function agents_checklist( $role_basis, $all_agents, $id_prefix = } } - public static function eligible_agents_input_box( $role_basis, $id_prefix, $propagation ) { - $id = "{$id_prefix}_csv"; - $msg = __( "Enter additional User Names or IDs (comma-separate)", 'revisionary'); - echo '
' . $msg . ':
'; - echo ""; - } - // stored_assignments[agent_id][inherited_from] = progenitor_assignment_id (note: this function treats progenitor_assignment_id as a boolean) static function _agents_checklist_display( $agents_subset, $role_basis, $all_agents, $id_prefix, $stored_assignments, $args, &$key) { $defaults = array( - 'eligible_ids' => '', 'locked_ids' => '', - 'suppress_extra_prefix' => false, 'check_for_incomplete_submission' => false, - 'checkall_threshold' => 6, 'filter_threshold' => 10, 'default_hide_threshold' => 20, - 'caption_length_limit' => 20, 'emsize_threshold' => 4, - 'objtype_display_name' => '', 'objtype_display_name_plural' => '', - 'for_entity_ids' => ''); + 'filter_threshold' => 10, 'default_hide_threshold' => 20, 'caption_length_limit' => 20, 'emsize_threshold' => 4 + ); $args = (array) $args; foreach( array_keys( $defaults ) as $var ) { @@ -63,28 +41,15 @@ static function _agents_checklist_display( $agents_subset, $role_basis, $all_age global $is_IE; $ie_checkbox_style = ( $is_IE ) ? "style='height:1em'" : ''; - if ( is_array($eligible_ids) && empty($eligible_ids) ) - $eligible_ids = array(-1); - else - if ( ! is_array($eligible_ids) ) $eligible_ids = array(); else $eligible_ids = array_flip($eligible_ids); - if ( ! is_array($stored_assignments) ) $stored_assignments = array(); - if ( ! is_array($locked_ids) ) $locked_ids = array(); else $locked_ids = array_flip($locked_ids); - if ( is_array($for_entity_ids) && ! empty($for_entity_ids) ) $for_entity_ids = array_flip($for_entity_ids); - - if ( ! $suppress_extra_prefix ) - $id_prefix .= "_{$role_basis}"; + + $id_prefix .= "_{$role_basis}"; $agent_count = array(); $agent_count[CURRENT_ITEMS_RVY] = count($stored_assignments); - if ( empty($eligible_ids) ) - $agent_count[ELIGIBLE_ITEMS_RVY] = count($all_agents) - count( $stored_assignments ); - elseif ( $eligible_ids != array(-1) ) - $agent_count[ELIGIBLE_ITEMS_RVY] = count( array_diff_key($eligible_ids, $stored_assignments) ); - else - $agent_count[ELIGIBLE_ITEMS_RVY] = 0; + $agent_count[ELIGIBLE_ITEMS_RVY] = count($all_agents) - count( $stored_assignments ); $default_hide_filtered_list = ( $default_hide_threshold && ( $agent_count[$agents_subset] > $default_hide_threshold ) ); @@ -151,10 +116,7 @@ static function _agents_checklist_display( $agents_subset, $role_basis, $all_age foreach( $all_agents as $agent ) { $id = $agent->ID; - if ( is_array($for_entity_ids) ) - $role_assigned = isset($for_entity_ids[$id]) || isset($for_children_ids[$id]) ; - else - $role_assigned = isset($stored_assignments[$id]); + $role_assigned = isset($stored_assignments[$id]); switch ( $agents_subset ) { case CURRENT_ITEMS_RVY: @@ -162,7 +124,6 @@ static function _agents_checklist_display( $agents_subset, $role_basis, $all_age break; default: //ELIGIBLE_ITEMS_RVY if ( $role_assigned ) continue 2; - if ( $eligible_ids && ! isset($eligible_ids[$id] ) ) continue 2; } $caption = $agent->display_name; @@ -208,10 +169,7 @@ static function _agents_checklist_display( $agents_subset, $role_basis, $all_age $id = $agent->ID; $agent_display_name = $agent->display_name; - if ( is_array($for_entity_ids) ) - $role_assigned = isset($for_entity_ids[$id]) || isset($for_children_ids[$id]) ; - else - $role_assigned = isset($stored_assignments[$id]); + $role_assigned = isset($stored_assignments[$id]); switch ( $agents_subset ) { case CURRENT_ITEMS_RVY: @@ -219,7 +177,6 @@ static function _agents_checklist_display( $agents_subset, $role_basis, $all_age break; default: //ELIGIBLE_ITEMS_RVY if ( $role_assigned ) continue 2; - if ( $eligible_ids && ! isset($eligible_ids[$id] ) ) continue 2; } // markup for role duration / content date limits @@ -228,14 +185,9 @@ static function _agents_checklist_display( $agents_subset, $role_basis, $all_age $link_class = ''; $limit_style = ''; - $disabled = ( $locked_ids && isset($locked_ids[$id]) ) ? " disabled='disabled'" : ''; - $li_title = "title=' " . strtolower($agent_display_name) . " '"; - if ( $role_assigned && ( ! is_array($for_entity_ids) || isset($for_entity_ids[$id]) ) ) - $this_checked = ' checked="checked"'; - else - $this_checked = ''; + $this_checked = ( $role_assigned ) ? ' checked="checked"' : ''; if ( $this_checked ) $last_agents[] = $id; @@ -243,7 +195,7 @@ static function _agents_checklist_display( $agents_subset, $role_basis, $all_age $label_class = ''; echo "\r\n
  • " - . ""; + . ""; echo "
  • %s%s%s" msgstr "" -#: admin/admin-init_rvy.php:333 +#: admin/admin-init_rvy.php:332 #, php-format msgid "" "Revisionary is now PublishPress Revisions! Note the new " @@ -139,36 +139,36 @@ msgid "" "Scheduled Changes are listed. %s" msgstr "" -#: admin/admin-init_rvy.php:359 +#: admin/admin-init_rvy.php:358 msgid "Dismiss" msgstr "" -#: admin/admin-posts_rvy.php:29 +#: admin/admin-posts_rvy.php:27 msgid "The revision was restored." msgstr "" -#: admin/admin-posts_rvy.php:32 +#: admin/admin-posts_rvy.php:30 msgid "The revision was scheduled for publication." msgstr "" -#: admin/admin-posts_rvy.php:35 +#: admin/admin-posts_rvy.php:33 msgid "The revision was published." msgstr "" -#: admin/admin-posts_rvy.php:115 admin/class-list-table_rvy.php:411 -#: rvy_init.php:353 +#: admin/admin-posts_rvy.php:113 admin/class-list-table_rvy.php:411 +#: rvy_init.php:236 msgid "Change Request" msgstr "" -#: admin/admin-posts_rvy.php:132 +#: admin/admin-posts_rvy.php:130 msgid "Has Revision" msgstr "" -#: admin/admin-posts_rvy.php:147 admin/admin_rvy.php:169 admin/options.php:102 +#: admin/admin-posts_rvy.php:145 admin/admin_rvy.php:169 admin/options.php:102 msgid "Revision Queue" msgstr "" -#: admin/admin-posts_rvy.php:162 +#: admin/admin-posts_rvy.php:160 msgid "New Working Copy" msgstr "" @@ -221,7 +221,7 @@ msgstr "" msgid "PublishPress Revisions Documentation" msgstr "" -#: admin/admin_rvy.php:272 admin/options.php:774 +#: admin/admin_rvy.php:272 admin/options.php:776 msgid "Documentation" msgstr "" @@ -287,11 +287,11 @@ msgstr "" msgid "Post Author" msgstr "" -#: admin/class-list-table_rvy.php:408 rvy_init.php:342 +#: admin/class-list-table_rvy.php:408 rvy_init.php:225 msgid "Working Copy" msgstr "" -#: admin/class-list-table_rvy.php:414 rvy_init.php:364 +#: admin/class-list-table_rvy.php:414 rvy_init.php:247 msgid "Scheduled Change" msgstr "" @@ -356,7 +356,7 @@ msgstr "" #: admin/class-list-table_rvy.php:737 #, fuzzy, php-format -msgid "%sMy Copies & Requests%s(%s)" +msgid "%sMy Copies & Changes%s (%s)" msgstr "%sMy Revisionz%s(%s)" #: admin/class-list-table_rvy.php:769 @@ -369,12 +369,12 @@ msgstr "" msgid "All %s" msgstr "" -#: admin/class-list-table_rvy.php:828 front_rvy.php:314 +#: admin/class-list-table_rvy.php:828 front_rvy.php:311 msgid "Submit" msgstr "" #: admin/class-list-table_rvy.php:831 admin/history_rvy.php:1064 -#: front_rvy.php:327 +#: front_rvy.php:324 msgid "Approve" msgstr "" @@ -468,12 +468,12 @@ msgid "Revision updated." msgstr "" #: admin/filters-admin-ui-item_rvy.php:26 admin/options.php:101 -#: admin/revisions.php:221 rvy_init.php:354 +#: admin/revisions.php:221 rvy_init.php:237 msgid "Change Requests" msgstr "" #: admin/filters-admin-ui-item_rvy.php:32 admin/options.php:100 -#: admin/revisions.php:224 rvy_init.php:365 +#: admin/revisions.php:224 rvy_init.php:248 msgid "Scheduled Changes" msgstr "" @@ -550,7 +550,7 @@ msgstr "" #: admin/history_rvy.php:932 admin/revision-action_rvy.php:310 #: admin/revision-action_rvy.php:392 admin/revision-ui_rvy.php:265 -#: front_rvy.php:211 +#: front_rvy.php:210 msgid "M j, Y @ g:i a" msgstr "" @@ -582,7 +582,7 @@ msgstr "" msgid "Role Definition" msgstr "" -#: admin/options.php:99 admin/revisions.php:218 rvy_init.php:343 +#: admin/options.php:99 admin/revisions.php:218 rvy_init.php:226 msgid "Working Copies" msgstr "" @@ -734,7 +734,7 @@ msgstr "" msgid "PublishPress Revisions Site Settings" msgstr "" -#: admin/options.php:224 admin/options.php:892 +#: admin/options.php:224 admin/options.php:894 msgid "Update »" msgstr "" @@ -794,10 +794,8 @@ msgstr "" #: admin/options.php:374 #, php-format msgid "" -"Enable Contributors to submit revisions to their own published content. " -"Revisors and users who have the edit_others (but not edit_published) " -"capability for the post type can submit revisions to other user's content. " -"These Change Requests are listed in %sRevision Queue%s." +"Enable published content to be copied, edited and submitted as Change " +"Requests, managed in %sRevision Queue%s." msgstr "" #: admin/options.php:380 @@ -928,93 +926,74 @@ msgstr "" msgid "Always" msgstr "" -#: admin/options.php:650 -msgid "" -"Note: \"by default\" means Change Request creators can customize email " -"notification recipients before submitting. Eligibile \"Publisher\" email " -"recipients are members of the Change Request Notifications group who " -"also have the ability to publish the revision. If not " -"explicitly defined, the Monitors group is all users with a primary WP role " -"of Administrator or Editor." -msgstr "" - -#: admin/options.php:652 -#, php-format -msgid "" -"Note: \"by default\" means Change Request creators can customize email " -"notification recipients before submitting. For more flexibility in " -"moderation and notification, install the %1$s PublishPress Permissions Pro" -"%2$s plugin." -msgstr "" - -#: admin/options.php:660 +#: admin/options.php:662 msgid "" "To avoid notification failures, buffer emails for delayed sending once " "minute, hour or day limits are exceeded" msgstr "" -#: admin/options.php:677 +#: admin/options.php:679 msgid "Notification Buffer" msgstr "" -#: admin/options.php:705 +#: admin/options.php:707 msgid "Notification Log" msgstr "" -#: admin/options.php:734 +#: admin/options.php:736 msgid "Purge Notification Buffer" msgstr "" -#: admin/options.php:740 +#: admin/options.php:742 msgid "Truncate Notification Log" msgstr "" -#: admin/options.php:746 +#: admin/options.php:748 #, php-format msgid "Sent in last minute: %d / %d" msgstr "" -#: admin/options.php:747 +#: admin/options.php:749 #, php-format msgid "Sent in last hour: %d / %d" msgstr "" -#: admin/options.php:748 +#: admin/options.php:750 #, php-format msgid "Sent in last day: %d / %d" msgstr "" -#: admin/options.php:755 +#: admin/options.php:757 #, php-format msgid "Seconds until next buffer processing time: %d" msgstr "" -#: admin/options.php:764 +#: admin/options.php:766 msgid "Show Notification Log / Buffer" msgstr "" -#: admin/options.php:766 +#: admin/options.php:768 msgid "Show with message content" msgstr "" -#: admin/options.php:807 +#: admin/options.php:809 #, php-format msgid "network-wide control of \"%s\"" msgstr "" -#: admin/options.php:814 +#: admin/options.php:816 msgid "" "Specify which PublishPress Revisions Settings to control network-wide. " "Unselected settings are controlled separately on each site." msgstr "" -#: admin/options.php:896 +#: admin/options.php:898 msgid "" "All settings in this form (including those on unselected tabs) will be reset " "to DEFAULTS. Are you sure?" msgstr "" -#: admin/options.php:901 +#: admin/options.php:903 msgid "Revert to Defaults" msgstr "" @@ -1060,7 +1039,7 @@ msgstr "" msgid "Approve Changes" msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:92 +#: admin/post-editor-workflow-ui_rvy.php:92 rvy_init.php:237 rvy_init.php:248 msgid "Publish Changes" msgstr "" @@ -1311,7 +1290,7 @@ msgstr "" msgid "Pending" msgstr "" -#: admin/revisions.php:59 rvy_init.php:365 +#: admin/revisions.php:59 rvy_init.php:248 msgid "Scheduled" msgstr "" @@ -1338,63 +1317,63 @@ msgstr "" msgid "no %s revisions available." msgstr "" -#: front_rvy.php:236 +#: front_rvy.php:235 #, php-format msgid "%sList%s" msgstr "" -#: front_rvy.php:245 +#: front_rvy.php:244 #, php-format msgid "%sCompare%s%sView Published Post%s" msgstr "" -#: front_rvy.php:259 +#: front_rvy.php:258 #, php-format msgid "%sView Published Post%s" msgstr "" -#: front_rvy.php:320 +#: front_rvy.php:317 #, php-format msgid "This is a Working Copy. %s %s %s" msgstr "" -#: front_rvy.php:332 +#: front_rvy.php:329 #, php-format msgid "This is a Change Request (requested publish date: %s). %s %s %s" msgstr "" -#: front_rvy.php:336 front_rvy.php:365 +#: front_rvy.php:333 front_rvy.php:353 msgid "Publish now" msgstr "" -#: front_rvy.php:338 +#: front_rvy.php:335 #, php-format msgid "This is a Change Request. %s %s %s" msgstr "" -#: front_rvy.php:358 +#: front_rvy.php:346 msgid "This revision is very new, preview may not be synchronized with theme." msgstr "" -#: front_rvy.php:359 +#: front_rvy.php:347 msgid "Reload" msgstr "" -#: front_rvy.php:367 +#: front_rvy.php:355 #, php-format msgid "This is a Scheduled Change (for publication on %s). %s %s %s" msgstr "" -#: front_rvy.php:379 +#: front_rvy.php:367 #, php-format msgid "This is the Current Revision. %s" msgstr "" -#: front_rvy.php:384 +#: front_rvy.php:372 msgid "Restore" msgstr "" -#: front_rvy.php:385 +#: front_rvy.php:373 #, php-format msgid "This is a Past Revision (from %s). %s %s" msgstr "" @@ -1404,7 +1383,7 @@ msgstr "" msgid "%1$s queries in %2$s seconds. %3$s MB used." msgstr "" -#: revision-creation_rvy.php:165 +#: revision-creation_rvy.php:159 msgid "Could not insert revision into the database" msgstr "" @@ -1449,51 +1428,51 @@ msgstr "" msgid "This plugin can be deleted." msgstr "" -#: revisionary.php:83 revisionary.php:142 +#: revisionary.php:83 revisionary.php:157 #, php-format msgid "" "Another copy of PublishPress Revisions (or Revisionary) is already activated " "(version %1$s: \"%2$s\")" msgstr "" -#: revisionary.php:85 revisionary.php:144 +#: revisionary.php:85 revisionary.php:159 #, php-format msgid "" "Another copy of PublishPress Revisions (or Revisionary) is already activated " "(version %1$s)" msgstr "" -#: revisionary.php:163 +#: revisionary.php:178 #, php-format msgid "PublishPress Revisions requires PHP version %s or higher." msgstr "" -#: revisionary.php:170 +#: revisionary.php:185 #, php-format msgid "PublishPress Revisions requires WordPress version %s or higher." msgstr "" -#: rvy_init.php:343 rvy_init.php:354 rvy_init.php:365 +#: rvy_init.php:226 msgid "Publish Revision" msgstr "" -#: rvy_init.php:343 rvy_init.php:354 rvy_init.php:365 +#: rvy_init.php:226 rvy_init.php:237 rvy_init.php:248 msgid "Save Revision" msgstr "" -#: rvy_init.php:343 +#: rvy_init.php:226 msgid "Draft" msgstr "" -#: rvy_init.php:354 +#: rvy_init.php:237 msgid "Entry" msgstr "" -#: rvy_init.php:540 +#: rvy_init.php:423 msgid "Revisor" msgstr "" -#: rvy_init.php:970 +#: rvy_init.php:848 msgid "Revision Workflow" msgstr "" diff --git a/languages/revisionary.pot b/languages/revisionary.pot index e0a17db2..dec319ee 100644 --- a/languages/revisionary.pot +++ b/languages/revisionary.pot @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: PublishPress Revisions Pro\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-09-20 15:42-0400\n" +"POT-Creation-Date: 2021-09-21 17:10-0400\n" "PO-Revision-Date: \n" "Last-Translator: Kevin Behrens \n" "Language-Team: PublishPress \n" @@ -33,8 +33,8 @@ msgstr "" #: admin/edit-revision-classic-ui_rvy.php:68 #: admin/edit-revision-classic-ui_rvy.php:74 #: admin/edit-revision-classic-ui_rvy.php:75 -#: admin/post-editor-workflow-ui_rvy.php:22 rvy_init.php:343 rvy_init.php:354 -#: rvy_init.php:365 +#: admin/post-editor-workflow-ui_rvy.php:22 rvy_init.php:226 rvy_init.php:237 +#: rvy_init.php:248 msgid "Update Revision" msgstr "" @@ -94,7 +94,7 @@ msgstr "" #: admin/RevisionEditSubmitMetabox.php:190 admin/class-list-table_rvy.php:527 #: admin/class-list-table_rvy.php:1142 admin/history_rvy.php:1108 -#: front_rvy.php:270 +#: front_rvy.php:269 msgid "Edit" msgstr "" @@ -114,51 +114,51 @@ msgstr "" msgid "Error in deleting." msgstr "" -#: admin/admin-init_rvy.php:317 +#: admin/admin-init_rvy.php:316 #, php-format msgid "For more details on setting up PublishPress Revisions, %sread this guide%s." msgstr "" -#: admin/admin-init_rvy.php:323 +#: admin/admin-init_rvy.php:322 #, php-format msgid "Welcome to PublishPress Revisions! Here's how it works:%s
  • \"Contributors\" can submit revisions to their published posts.
  • \"Revisors\" can submit revisions to posts and pages published by others.
  • \"Authors\", \"Editors\" and \"Administrators\" can approve revisions or schedule their own revisions.
  • %s%s%s" msgstr "" -#: admin/admin-init_rvy.php:333 +#: admin/admin-init_rvy.php:332 #, php-format msgid "Revisionary is now PublishPress Revisions! Note the new Revisions menu and %sRevision Queue%s screen, where Change Requests and Scheduled Changes are listed. %s" msgstr "" -#: admin/admin-init_rvy.php:359 +#: admin/admin-init_rvy.php:358 msgid "Dismiss" msgstr "" -#: admin/admin-posts_rvy.php:29 +#: admin/admin-posts_rvy.php:27 msgid "The revision was restored." msgstr "" -#: admin/admin-posts_rvy.php:32 +#: admin/admin-posts_rvy.php:30 msgid "The revision was scheduled for publication." msgstr "" -#: admin/admin-posts_rvy.php:35 +#: admin/admin-posts_rvy.php:33 msgid "The revision was published." msgstr "" -#: admin/admin-posts_rvy.php:115 admin/class-list-table_rvy.php:411 -#: rvy_init.php:353 +#: admin/admin-posts_rvy.php:113 admin/class-list-table_rvy.php:411 +#: rvy_init.php:236 msgid "Change Request" msgstr "" -#: admin/admin-posts_rvy.php:132 +#: admin/admin-posts_rvy.php:130 msgid "Has Revision" msgstr "" -#: admin/admin-posts_rvy.php:147 admin/admin_rvy.php:169 admin/options.php:102 +#: admin/admin-posts_rvy.php:145 admin/admin_rvy.php:169 admin/options.php:102 msgid "Revision Queue" msgstr "" -#: admin/admin-posts_rvy.php:162 +#: admin/admin-posts_rvy.php:160 msgid "New Working Copy" msgstr "" @@ -211,7 +211,7 @@ msgstr "" msgid "PublishPress Revisions Documentation" msgstr "" -#: admin/admin_rvy.php:272 admin/options.php:774 +#: admin/admin_rvy.php:272 admin/options.php:776 msgid "Documentation" msgstr "" @@ -277,11 +277,11 @@ msgstr "" msgid "Post Author" msgstr "" -#: admin/class-list-table_rvy.php:408 rvy_init.php:342 +#: admin/class-list-table_rvy.php:408 rvy_init.php:225 msgid "Working Copy" msgstr "" -#: admin/class-list-table_rvy.php:414 rvy_init.php:364 +#: admin/class-list-table_rvy.php:414 rvy_init.php:247 msgid "Scheduled Change" msgstr "" @@ -346,7 +346,7 @@ msgstr "" #: admin/class-list-table_rvy.php:737 #, php-format -msgid "%sMy Copies & Requests%s(%s)" +msgid "%sMy Copies & Changes%s (%s)" msgstr "" #: admin/class-list-table_rvy.php:769 @@ -359,12 +359,12 @@ msgstr "" msgid "All %s" msgstr "" -#: admin/class-list-table_rvy.php:828 front_rvy.php:314 +#: admin/class-list-table_rvy.php:828 front_rvy.php:311 msgid "Submit" msgstr "" #: admin/class-list-table_rvy.php:831 admin/history_rvy.php:1064 -#: front_rvy.php:327 +#: front_rvy.php:324 msgid "Approve" msgstr "" @@ -458,12 +458,12 @@ msgid "Revision updated." msgstr "" #: admin/filters-admin-ui-item_rvy.php:26 admin/options.php:101 -#: admin/revisions.php:221 rvy_init.php:354 +#: admin/revisions.php:221 rvy_init.php:237 msgid "Change Requests" msgstr "" #: admin/filters-admin-ui-item_rvy.php:32 admin/options.php:100 -#: admin/revisions.php:224 rvy_init.php:365 +#: admin/revisions.php:224 rvy_init.php:248 msgid "Scheduled Changes" msgstr "" @@ -540,7 +540,7 @@ msgstr "" #: admin/history_rvy.php:932 admin/revision-action_rvy.php:310 #: admin/revision-action_rvy.php:392 admin/revision-ui_rvy.php:265 -#: front_rvy.php:211 +#: front_rvy.php:210 msgid "M j, Y @ g:i a" msgstr "" @@ -572,7 +572,7 @@ msgstr "" msgid "Role Definition" msgstr "" -#: admin/options.php:99 admin/revisions.php:218 rvy_init.php:343 +#: admin/options.php:99 admin/revisions.php:218 rvy_init.php:226 msgid "Working Copies" msgstr "" @@ -724,7 +724,7 @@ msgstr "" msgid "PublishPress Revisions Site Settings" msgstr "" -#: admin/options.php:224 admin/options.php:892 +#: admin/options.php:224 admin/options.php:894 msgid "Update »" msgstr "" @@ -769,7 +769,7 @@ msgstr "" #: admin/options.php:374 #, php-format -msgid "Enable Contributors to submit revisions to their own published content. Revisors and users who have the edit_others (but not edit_published) capability for the post type can submit revisions to other user's content. These Change Requests are listed in %sRevision Queue%s." +msgid "Enable published content to be copied, edited and submitted as Change Requests, managed in %sRevision Queue%s." msgstr "" #: admin/options.php:380 @@ -873,77 +873,68 @@ msgstr "" msgid "Always" msgstr "" -#: admin/options.php:650 -msgid "Note: \"by default\" means Change Request creators can customize email notification recipients before submitting. Eligibile \"Publisher\" email recipients are members of the Change Request Notifications group who also have the ability to publish the revision. If not explicitly defined, the Monitors group is all users with a primary WP role of Administrator or Editor." -msgstr "" - -#: admin/options.php:652 -#, php-format -msgid "Note: \"by default\" means Change Request creators can customize email notification recipients before submitting. For more flexibility in moderation and notification, install the %1$s PublishPress Permissions Pro%2$s plugin." -msgstr "" - -#: admin/options.php:660 +#: admin/options.php:662 msgid "To avoid notification failures, buffer emails for delayed sending once minute, hour or day limits are exceeded" msgstr "" -#: admin/options.php:677 +#: admin/options.php:679 msgid "Notification Buffer" msgstr "" -#: admin/options.php:705 +#: admin/options.php:707 msgid "Notification Log" msgstr "" -#: admin/options.php:734 +#: admin/options.php:736 msgid "Purge Notification Buffer" msgstr "" -#: admin/options.php:740 +#: admin/options.php:742 msgid "Truncate Notification Log" msgstr "" -#: admin/options.php:746 +#: admin/options.php:748 #, php-format msgid "Sent in last minute: %d / %d" msgstr "" -#: admin/options.php:747 +#: admin/options.php:749 #, php-format msgid "Sent in last hour: %d / %d" msgstr "" -#: admin/options.php:748 +#: admin/options.php:750 #, php-format msgid "Sent in last day: %d / %d" msgstr "" -#: admin/options.php:755 +#: admin/options.php:757 #, php-format msgid "Seconds until next buffer processing time: %d" msgstr "" -#: admin/options.php:764 +#: admin/options.php:766 msgid "Show Notification Log / Buffer" msgstr "" -#: admin/options.php:766 +#: admin/options.php:768 msgid "Show with message content" msgstr "" -#: admin/options.php:807 +#: admin/options.php:809 #, php-format msgid "network-wide control of \"%s\"" msgstr "" -#: admin/options.php:814 +#: admin/options.php:816 msgid "Specify which PublishPress Revisions Settings to control network-wide. Unselected settings are controlled separately on each site." msgstr "" -#: admin/options.php:896 +#: admin/options.php:898 msgid "All settings in this form (including those on unselected tabs) will be reset to DEFAULTS. Are you sure?" msgstr "" -#: admin/options.php:901 +#: admin/options.php:903 msgid "Revert to Defaults" msgstr "" @@ -988,7 +979,7 @@ msgstr "" msgid "Approve Changes" msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:92 +#: admin/post-editor-workflow-ui_rvy.php:92 rvy_init.php:237 rvy_init.php:248 msgid "Publish Changes" msgstr "" @@ -1228,7 +1219,7 @@ msgstr "" msgid "Pending" msgstr "" -#: admin/revisions.php:59 rvy_init.php:365 +#: admin/revisions.php:59 rvy_init.php:248 msgid "Scheduled" msgstr "" @@ -1255,63 +1246,63 @@ msgstr "" msgid "no %s revisions available." msgstr "" -#: front_rvy.php:236 +#: front_rvy.php:235 #, php-format msgid "%sList%s" msgstr "" -#: front_rvy.php:245 +#: front_rvy.php:244 #, php-format msgid "%sCompare%s%sView Published Post%s" msgstr "" -#: front_rvy.php:259 +#: front_rvy.php:258 #, php-format msgid "%sView Published Post%s" msgstr "" -#: front_rvy.php:320 +#: front_rvy.php:317 #, php-format msgid "This is a Working Copy. %s %s %s" msgstr "" -#: front_rvy.php:332 +#: front_rvy.php:329 #, php-format msgid "This is a Change Request (requested publish date: %s). %s %s %s" msgstr "" -#: front_rvy.php:336 front_rvy.php:365 +#: front_rvy.php:333 front_rvy.php:353 msgid "Publish now" msgstr "" -#: front_rvy.php:338 +#: front_rvy.php:335 #, php-format msgid "This is a Change Request. %s %s %s" msgstr "" -#: front_rvy.php:358 +#: front_rvy.php:346 msgid "This revision is very new, preview may not be synchronized with theme." msgstr "" -#: front_rvy.php:359 +#: front_rvy.php:347 msgid "Reload" msgstr "" -#: front_rvy.php:367 +#: front_rvy.php:355 #, php-format msgid "This is a Scheduled Change (for publication on %s). %s %s %s" msgstr "" -#: front_rvy.php:379 +#: front_rvy.php:367 #, php-format msgid "This is the Current Revision. %s" msgstr "" -#: front_rvy.php:384 +#: front_rvy.php:372 msgid "Restore" msgstr "" -#: front_rvy.php:385 +#: front_rvy.php:373 #, php-format msgid "This is a Past Revision (from %s). %s %s" msgstr "" @@ -1321,7 +1312,7 @@ msgstr "" msgid "%1$s queries in %2$s seconds. %3$s MB used." msgstr "" -#: revision-creation_rvy.php:165 +#: revision-creation_rvy.php:159 msgid "Could not insert revision into the database" msgstr "" @@ -1366,47 +1357,47 @@ msgstr "" msgid "This plugin can be deleted." msgstr "" -#: revisionary.php:83 revisionary.php:142 +#: revisionary.php:83 revisionary.php:157 #, php-format msgid "Another copy of PublishPress Revisions (or Revisionary) is already activated (version %1$s: \"%2$s\")" msgstr "" -#: revisionary.php:85 revisionary.php:144 +#: revisionary.php:85 revisionary.php:159 #, php-format msgid "Another copy of PublishPress Revisions (or Revisionary) is already activated (version %1$s)" msgstr "" -#: revisionary.php:163 +#: revisionary.php:178 #, php-format msgid "PublishPress Revisions requires PHP version %s or higher." msgstr "" -#: revisionary.php:170 +#: revisionary.php:185 #, php-format msgid "PublishPress Revisions requires WordPress version %s or higher." msgstr "" -#: rvy_init.php:343 rvy_init.php:354 rvy_init.php:365 +#: rvy_init.php:226 msgid "Publish Revision" msgstr "" -#: rvy_init.php:343 rvy_init.php:354 rvy_init.php:365 +#: rvy_init.php:226 rvy_init.php:237 rvy_init.php:248 msgid "Save Revision" msgstr "" -#: rvy_init.php:343 +#: rvy_init.php:226 msgid "Draft" msgstr "" -#: rvy_init.php:354 +#: rvy_init.php:237 msgid "Entry" msgstr "" -#: rvy_init.php:540 +#: rvy_init.php:423 msgid "Revisor" msgstr "" -#: rvy_init.php:970 +#: rvy_init.php:848 msgid "Revision Workflow" msgstr "" From 1aa96f57b434f1ec794d5b807d2155cb06844422 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Wed, 22 Sep 2021 12:19:16 -0400 Subject: [PATCH 084/193] Compare Revisions: styling for Edit button --- admin/admin_rvy.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/admin/admin_rvy.php b/admin/admin_rvy.php index db4cfbb2..281dcd24 100644 --- a/admin/admin_rvy.php +++ b/admin/admin_rvy.php @@ -106,8 +106,11 @@ function __construct() { function admin_scripts() { global $pagenow; - if (in_array($pagenow, ['post.php', 'post-new.php']) || (!empty($_REQUEST['page']) && in_array($_REQUEST['page'], ['revisionary-settings', 'rvy-net_options', 'revisionary-q']))) { + if (in_array($pagenow, ['post.php', 'post-new.php', 'revision.php']) || (!empty($_REQUEST['page']) && in_array($_REQUEST['page'], ['revisionary-settings', 'rvy-net_options', 'revisionary-q']))) { wp_enqueue_style('revisionary', RVY_URLPATH . '/admin/revisionary.css', [], PUBLISHPRESS_REVISIONS_VERSION); + } + + if (in_array($pagenow, ['post.php', 'post-new.php']) || (!empty($_REQUEST['page']) && in_array($_REQUEST['page'], ['revisionary-settings', 'rvy-net_options', 'revisionary-q']))) { wp_enqueue_style('revisionary-admin-common', RVY_URLPATH . '/common/css/pressshack-admin.css', [], PUBLISHPRESS_REVISIONS_VERSION); } From fb9d2e9534be05ee2bc25dfbd5ec750f16cb11df Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Wed, 22 Sep 2021 22:01:03 -0400 Subject: [PATCH 085/193] Compare Revisions: Approve button did not work for Working Copies Also standardize usage of is_post_type_viewable() function --- admin/history_rvy.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/admin/history_rvy.php b/admin/history_rvy.php index 893ba573..148c2675 100644 --- a/admin/history_rvy.php +++ b/admin/history_rvy.php @@ -881,13 +881,13 @@ private function prepare_revisions_for_js( $post, $selected_revision_id, $from = $published_post_id = rvy_post_id($revision->ID); // For non-public types, force direct approval because preview is not available - if ((($type_obj && empty($type_obj->public)) || rvy_get_option('compare_revisions_direct_approval')) && current_user_can( 'edit_post', $published_post_id) ) { + if ((($type_obj && !is_post_type_viewable($type_obj)) || rvy_get_option('compare_revisions_direct_approval')) && current_user_can( 'edit_post', $published_post_id) ) { $redirect_arg = ( ! empty($_REQUEST['rvy_redirect']) ) ? "&rvy_redirect=" . esc_url($_REQUEST['rvy_redirect']) : ''; //if (in_array($revision->post_mime_type, ['draft-revision'])) { // $restore_link = wp_nonce_url( rvy_admin_url("admin.php?page=rvy-revisions&revision={$revision->ID}&action=submit$redirect_arg"), "submit-post_$published_post_id|{$revision->ID}" ); - if (in_array($revision->post_mime_type, ['pending-revision'])) { + if (in_array($revision->post_mime_type, ['draft-revision', 'pending-revision'])) { $restore_link = wp_nonce_url( rvy_admin_url("admin.php?page=rvy-revisions&revision={$revision->ID}&action=approve$redirect_arg"), "approve-post_$published_post_id|{$revision->ID}" ); } elseif (in_array($revision->post_mime_type, ['future-revision'])) { @@ -1052,7 +1052,7 @@ function actRevisionDiffScripts() { } // For non-public types, force direct approval because preview is not available - $direct_approval = (($type_obj && empty($type_obj->public)) || rvy_get_option('compare_revisions_direct_approval')) + $direct_approval = (($type_obj && !is_post_type_viewable($type_obj)) || rvy_get_option('compare_revisions_direct_approval')) && current_user_can('edit_post', rvy_post_id($post_id)); if ($post_id) { From 1c3a332303d4cce34ab88f1fc6b5e597a353619e Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Wed, 22 Sep 2021 22:02:11 -0400 Subject: [PATCH 086/193] Revision Preview: remove encoding from action URLs --- front_rvy.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/front_rvy.php b/front_rvy.php index e3301020..769e1696 100644 --- a/front_rvy.php +++ b/front_rvy.php @@ -272,17 +272,17 @@ function act_template_redirect() { if ( in_array( $post->post_mime_type, array( 'draft-revision' ) ) ) { if ($can_edit = current_user_can('edit_post', $revision_id)) { - $publish_url = wp_nonce_url( rvy_admin_url("admin.php?page=rvy-revisions&revision=$revision_id&action=submit$redirect_arg"), "submit-post_$published_post_id|$revision_id" ); + $publish_url = wp_nonce_url( rvy_admin_url("admin.php?page=rvy-revisions&revision=$revision_id&action=approve$redirect_arg"), "approve-post_$published_post_id|$revision_id" ); } } elseif ($can_edit = current_user_can('edit_post', rvy_post_id($revision_id))) { if ( in_array( $post->post_mime_type, array( 'pending-revision' ) ) ) { - $publish_url = wp_nonce_url( rvy_admin_url("admin.php?page=rvy-revisions&revision=$revision_id&action=approve$redirect_arg"), "approve-post_$published_post_id|$revision_id" ); + $publish_url = wp_nonce_url( rvy_admin_url("admin.php?page=rvy-revisions&revision=$revision_id&action=approve$redirect_arg"), "approve-post_$published_post_id|$revision_id" ); } elseif ( in_array( $post->post_mime_type, array( 'future-revision' ) ) ) { - $publish_url = wp_nonce_url( rvy_admin_url("admin.php?page=rvy-revisions&revision=$revision_id&action=publish$redirect_arg"), "publish-post_$published_post_id|$revision_id" ); + $publish_url = wp_nonce_url( rvy_admin_url("admin.php?page=rvy-revisions&revision=$revision_id&action=publish$redirect_arg"), "publish-post_$published_post_id|$revision_id" ); } elseif ( in_array( $post->post_status, array( 'inherit' ) ) ) { - $publish_url = wp_nonce_url( rvy_admin_url("admin.php?page=rvy-revisions&revision=$revision_id&action=restore$redirect_arg"), "restore-post_$published_post_id|$revision_id" ); + $publish_url = wp_nonce_url( rvy_admin_url("admin.php?page=rvy-revisions&revision=$revision_id&action=restore$redirect_arg"), "restore-post_$published_post_id|$revision_id" ); } else { $publish_url = ''; From db4e75c11cbfa744e283bc66fef105e8e59c261f Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Wed, 22 Sep 2021 22:02:57 -0400 Subject: [PATCH 087/193] Revision Preview: Show both Submit and Publish button if applicable --- front_rvy.php | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/front_rvy.php b/front_rvy.php index 769e1696..31062e34 100644 --- a/front_rvy.php +++ b/front_rvy.php @@ -272,6 +272,7 @@ function act_template_redirect() { if ( in_array( $post->post_mime_type, array( 'draft-revision' ) ) ) { if ($can_edit = current_user_can('edit_post', $revision_id)) { + $submit_url = wp_nonce_url( rvy_admin_url("admin.php?page=rvy-revisions&revision=$revision_id&action=submit$redirect_arg"), "submit-post_$published_post_id|$revision_id" ); $publish_url = wp_nonce_url( rvy_admin_url("admin.php?page=rvy-revisions&revision=$revision_id&action=approve$redirect_arg"), "approve-post_$published_post_id|$revision_id" ); } } elseif ($can_edit = current_user_can('edit_post', rvy_post_id($revision_id))) { @@ -306,13 +307,19 @@ function act_template_redirect() { $class = 'draft'; $status_obj = get_post_status_object(get_post_field('post_status', rvy_post_id($revision_id))); - if (current_user_can("set_revision_pending-revision", $revision_id)) { - $publish_caption = __( 'Submit', 'revisionary' ); - $publish_button = '' . $publish_caption . ''; + if (!empty($submit_url) && current_user_can("set_revision_pending-revision", $revision_id)) { + $submit_caption = __( 'Submit', 'revisionary' ); + $publish_button = '' . $submit_caption . ''; } else { $publish_button = ''; } + if ($can_publish) { + $publish_caption = (!empty($status_obj->public) || !empty($status_obj->private)) ? __('Publish now', 'revisionary') : $approve_caption; + $publish_caption = str_replace(' ', ' ', $publish_caption); + $publish_button .= ($can_publish) ? '' . $publish_caption . '' : ''; + } + $message = sprintf( __('This is a Working Copy. %s %s %s', 'revisionary'), $view_published, $edit_button, $publish_button ); break; From 8ad45c1c8fae1ca4314e5b3cad6e21b3fb7148e5 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Wed, 22 Sep 2021 22:03:43 -0400 Subject: [PATCH 088/193] Revision approval: redirect to editor if post type is not viewable --- admin/revision-action_rvy.php | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/admin/revision-action_rvy.php b/admin/revision-action_rvy.php index 97bee92d..0a5b8c41 100644 --- a/admin/revision-action_rvy.php +++ b/admin/revision-action_rvy.php @@ -418,14 +418,19 @@ function rvy_revision_approve($revision_id = 0) { } } - if ( empty( $_REQUEST['rvy_redirect'] ) && ! $scheduled ) { + $type_obj = get_post_type_object($post->post_type); + + if ( empty( $_REQUEST['rvy_redirect'] ) && ! $scheduled && is_post_type_viewable($type_obj) ) { $redirect = $published_url; } elseif ( !empty($_REQUEST['rvy_redirect']) && 'edit' == $_REQUEST['rvy_redirect'] ) { $redirect = add_query_arg( $last_arg, "post.php?post=$revision_id&action=edit" ); - } else { + + } elseif (is_post_type_viewable($type_obj)) { $redirect = rvy_preview_url($revision, ['post_type' => $post->post_type]); + } else { + $redirect = admin_url("post.php?post={$post->ID}&action=edit"); } - + } while (0); if (!empty($update_next_publish_date)) { From 595f2e7950ae2faf47331f15fe1b216343bb4455 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Wed, 22 Sep 2021 22:04:40 -0400 Subject: [PATCH 089/193] Post meta: don't revision or display changes for _pp_is_autodraft field --- functions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions.php b/functions.php index 0a3566b5..a23ce147 100644 --- a/functions.php +++ b/functions.php @@ -5,7 +5,7 @@ function revisionary() { } function revisionary_unrevisioned_postmeta() { - $exclude = array_fill_keys( array( '_rvy_base_post_id', '_rvy_has_revisions', '_rvy_published_gmt', '_pp_last_parent', '_edit_lock', '_edit_last', '_wp_old_slug', '_wp_attached_file', '_menu_item_classes', '_menu_item_menu_item_parent', '_menu_item_object', '_menu_item_object_id', '_menu_item_target', '_menu_item_type', '_menu_item_url', '_menu_item_xfn', '_rs_file_key', '_scoper_custom', '_scoper_last_parent', '_wp_attachment_backup_sizes', '_wp_attachment_metadata', '_wp_trash_meta_status', '_wp_trash_meta_time', '_last_attachment_ids', '_last_category_ids', '_encloseme', '_pingme' ), true ); + $exclude = array_fill_keys( array( '_rvy_base_post_id', '_rvy_has_revisions', '_rvy_published_gmt', '_pp_is_autodraft', '_pp_last_parent', '_edit_lock', '_edit_last', '_wp_old_slug', '_wp_attached_file', '_menu_item_classes', '_menu_item_menu_item_parent', '_menu_item_object', '_menu_item_object_id', '_menu_item_target', '_menu_item_type', '_menu_item_url', '_menu_item_xfn', '_rs_file_key', '_scoper_custom', '_scoper_last_parent', '_wp_attachment_backup_sizes', '_wp_attachment_metadata', '_wp_trash_meta_status', '_wp_trash_meta_time', '_last_attachment_ids', '_last_category_ids', '_encloseme', '_pingme' ), true ); return apply_filters( 'revisionary_unrevisioned_postmeta', $exclude ); } From a90b6cb4747ae2cedea3a35d533b18ede836c124 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Wed, 22 Sep 2021 22:05:10 -0400 Subject: [PATCH 090/193] Adjust Publish caption for Working Copy revision status --- rvy_init.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rvy_init.php b/rvy_init.php index 788190a1..2283d465 100644 --- a/rvy_init.php +++ b/rvy_init.php @@ -223,7 +223,7 @@ function rvy_delete_post_meta($post_id, $meta_key) { function rvy_status_registrations() { register_post_status('draft-revision', array( 'label' => __('Working Copy', 'revisionary'), - 'labels' => (object)['publish' => __('Publish Revision', 'revisionary'), 'save' => __('Save Revision', 'revisionary'), 'update' => __('Update Revision', 'revisionary'), 'plural' => __('Working Copies', 'revisionary'), 'short' => __('Draft', 'revisionary') ], + 'labels' => (object)['publish' => __('Publish Changes', 'revisionary'), 'save' => __('Save Revision', 'revisionary'), 'update' => __('Update Revision', 'revisionary'), 'plural' => __('Working Copies', 'revisionary'), 'short' => __('Draft', 'revisionary') ], 'protected' => true, 'internal' => true, 'label_count' => _n_noop('Working Copies (%s)', 'Working Copies (%s)'), // @todo: confirm API will support a fixed string From eea7e59643d8e9b1e1cdd4dcad792ce6ae8eafee Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Wed, 22 Sep 2021 22:05:49 -0400 Subject: [PATCH 091/193] Revision Queue Permissions integration: Revision count was broken --- admin/class-list-table_rvy.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/admin/class-list-table_rvy.php b/admin/class-list-table_rvy.php index 1ea3b04d..e3f0faf7 100644 --- a/admin/class-list-table_rvy.php +++ b/admin/class-list-table_rvy.php @@ -660,7 +660,8 @@ private function count_revisions($post_type = '', $statuses = '' ) { $query = "SELECT post_mime_type, COUNT( * ) AS num_posts FROM {$wpdb->posts} WHERE $where"; $query .= ' GROUP BY post_mime_type'; - $query = apply_filters('presspermit_posts_request', $query, ['has_cap_check' => true]); // has_cap_check argument triggers inclusion of revision statuses + // @todo: review Permissions integration for revision count filtering + //$query = apply_filters('presspermit_posts_request', $query, ['has_cap_check' => true]); // has_cap_check argument triggers inclusion of revision statuses $results = (array) $wpdb->get_results( $query, ARRAY_A ); From 9bc14dda8b4f0301bf8790d0150e8711c6d90985 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Wed, 22 Sep 2021 22:06:48 -0400 Subject: [PATCH 092/193] Revision Queue: Display Compare row action even if post type not viewable --- admin/class-list-table_rvy.php | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/admin/class-list-table_rvy.php b/admin/class-list-table_rvy.php index e3f0faf7..07726a4d 100644 --- a/admin/class-list-table_rvy.php +++ b/admin/class-list-table_rvy.php @@ -1168,21 +1168,22 @@ protected function handle_row_actions( $post, $column_name, $primary ) { ); } } + } - //if ( current_user_can( 'read_post', $post->ID ) ) { // @todo make this work for Author with Revision exceptions - if ( $can_read_post || $can_edit_post ) { - $actions['diff'] = sprintf( - '%3$s', - admin_url("revision.php?revision=$post->ID"), - /* translators: %s: post title */ - esc_attr( sprintf( __('Compare Changes', 'revisionary'), $title ) ), - _x('Compare', 'revisions', 'revisionary') - ); - } - - $actions = apply_filters('revisionary_queue_row_actions', $actions, $post); + //if ( current_user_can( 'read_post', $post->ID ) ) { // @todo make this work for Author with Revision exceptions + if ( $can_read_post || $can_edit_post ) { + $actions['diff'] = sprintf( + '%3$s', + admin_url("revision.php?revision=$post->ID"), + /* translators: %s: post title */ + esc_attr( sprintf( __('Compare Changes', 'revisionary'), $title ) ), + _x('Compare', 'revisions', 'revisionary') + ); } + $actions = apply_filters('revisionary_queue_row_actions', $actions, $post); + + return $this->row_actions( $actions ); } From d5920dc08440edbfaac8b4818f9df4b021360f26 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Wed, 22 Sep 2021 22:07:42 -0400 Subject: [PATCH 093/193] Revision Queue: List filtering was incorrect for Author if Permissions active --- admin/class-list-table_rvy.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/admin/class-list-table_rvy.php b/admin/class-list-table_rvy.php index 07726a4d..a4e386c8 100644 --- a/admin/class-list-table_rvy.php +++ b/admin/class-list-table_rvy.php @@ -198,7 +198,7 @@ function flt_presspermit_posts_clauses_intercept( $intercept, $clauses, $_wp_que function pre_query_where_filter($where, $args = []) { global $wpdb, $current_user, $revisionary; - if (!current_user_can('administrator') && empty($args['suppress_author_clause']) && (!defined('PRESSPERMIT_COLLAB_VERSION') || defined('PRESSPERMIT_EXTRA_REVISION_QUEUE_FILTER'))) { + if (!current_user_can('administrator') && empty($args['suppress_author_clause'])) { //} && (!defined('PRESSPERMIT_COLLAB_VERSION') || defined('PRESSPERMIT_EXTRA_REVISION_QUEUE_FILTER'))) { $p = (!empty($args['alias'])) ? $args['alias'] : $wpdb->posts; $can_edit_others_types = []; From ea3687b4a35d9f567ddbcbd1426aa26cd656c4b0 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Wed, 22 Sep 2021 22:08:04 -0400 Subject: [PATCH 094/193] Update beta version tag --- revisionary.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/revisionary.php b/revisionary.php index d37b1745..74e1e75a 100644 --- a/revisionary.php +++ b/revisionary.php @@ -5,7 +5,7 @@ * Description: Maintain published content with teamwork and precision using the Revisions model to submit, approve and schedule changes. * Author: PublishPress * Author URI: https://publishpress.com - * Version: 3.0-beta2 + * Version: 3.0-beta3 * Text Domain: revisionary * Domain Path: /languages/ * Min WP Version: 4.9.7 @@ -96,7 +96,7 @@ function($links, $file) // register these functions before any early exits so normal activation/deactivation can still run with RS_DEBUG register_activation_hook(__FILE__, function() { - $current_version = '3.0-beta2'; + $current_version = '3.0-beta3'; $last_ver = get_option('revisionary_last_version'); @@ -189,7 +189,7 @@ function() return; } - define('PUBLISHPRESS_REVISIONS_VERSION', '3.0-beta2'); + define('PUBLISHPRESS_REVISIONS_VERSION', '3.0-beta3'); if ( ! defined( 'RVY_VERSION' ) ) { define( 'RVY_VERSION', PUBLISHPRESS_REVISIONS_VERSION ); // back compat From 359358f6f2e2c50a6dd30400842f9824a02864cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Valenti=CC=81n=20Garci=CC=81a?= Date: Thu, 23 Sep 2021 13:38:15 -0500 Subject: [PATCH 095/193] Use WP UI for elements for view/approve and new working copy --- admin/revisionary.css | 4 ---- admin/rvy-revision-edit.css | 2 +- admin/rvy_post-block-edit.dev.js | 30 ++++++++++++++-------------- admin/rvy_post-block-edit.js | 4 ++-- admin/rvy_revision-block-edit.dev.js | 2 +- admin/rvy_revision-block-edit.js | 2 +- 6 files changed, 20 insertions(+), 24 deletions(-) diff --git a/admin/revisionary.css b/admin/revisionary.css index 4ee9b696..7f8d8ef5 100644 --- a/admin/revisionary.css +++ b/admin/revisionary.css @@ -482,10 +482,6 @@ margin-right:120px; padding:10px; } -#editor a.rvy-post-preview { -padding-top:1px; -} - div.revisions-controls .author-card input[type="button"] { padding-bottom:2px; } diff --git a/admin/rvy-revision-edit.css b/admin/rvy-revision-edit.css index 9195f6d0..8772a44b 100644 --- a/admin/rvy-revision-edit.css +++ b/admin/rvy-revision-edit.css @@ -7,7 +7,7 @@ display:inline-flex; } /* Gutenberg */ -a.rvy-post-preview, a.rvy-post-preview.components-button.is-large { +a.rvy-post-preview.components-button.is-large { margin-right:5px; text-decoration: none; height: inherit; diff --git a/admin/rvy_post-block-edit.dev.js b/admin/rvy_post-block-edit.dev.js index 6d7415a5..9196bcad 100644 --- a/admin/rvy_post-block-edit.dev.js +++ b/admin/rvy_post-block-edit.dev.js @@ -29,39 +29,39 @@ jQuery(document).ready( function($) { var RvySubmissionUI = function() { if (rvyObjEdit.ajaxurl && !$('button.revision-approve').length) { - - var html = '
    ' - - + ''; - + if (rvyObjEdit.scheduleCaption) { let postStatus = wp.data.select('core/editor').getCurrentPostAttribute('status'); var publishedStatuses = Object.keys(rvyObjEdit.publishedStatuses).map(function (key) { return rvyObjEdit.publishedStatuses[key]; }); rvyIsPublished = publishedStatuses.indexOf(postStatus) >= 0; if (rvyIsPublished) { - html += '' - - + ''; } } html += '
    '; - + $('div.edit-post-post-schedule').after(html); if (rvyCreationDisabled) { @@ -158,7 +158,7 @@ jQuery(document).ready( function($) { /** * If date is set to future, change Publish button caption to "Schedule Revision", * Then set a self-interval to refresh that status once the selected date is no longer future. - * + * * If the selected date is already past, change Publish button back to "Update" */ var RvySelectedFutureDate = false; @@ -177,7 +177,7 @@ jQuery(document).ready( function($) { } var selectedDate = new Date( selectedDateHTML ); - + RvyTimeSelection = selectedDate.getTime(); var tdiff = RvyTimeSelection - Date.now(); diff --git a/admin/rvy_post-block-edit.js b/admin/rvy_post-block-edit.js index 34b2fcbb..05e10482 100644 --- a/admin/rvy_post-block-edit.js +++ b/admin/rvy_post-block-edit.js @@ -3,7 +3,7 @@ if(rvyObjEdit.pendingRevisionsURL&&!$(ediv+'div.edit-post-last-revision__panel a $('div.edit-post-last-revision__panel').css('height','inherit');} setInterval(RvyPendingRevPanel,200);} var rvyIsPublished=false;var RvySubmissionUI=function(){if(rvyObjEdit.ajaxurl&&!$('button.revision-approve').length){var html='
    ' +'' - + ''; if (rvyObjEdit.scheduleCaption) { @@ -48,14 +48,14 @@ jQuery(document).ready( function($) { if (rvyIsPublished) { html += '' - + ''; } } diff --git a/admin/rvy_post-block-edit.js b/admin/rvy_post-block-edit.js index 05e10482..f5fec6f0 100644 --- a/admin/rvy_post-block-edit.js +++ b/admin/rvy_post-block-edit.js @@ -1,32 +1 @@ -jQuery(document).ready(function($){if(rvyObjEdit.scheduledRevisionsURL||rvyObjEdit.pendingRevisionsURL){var RvyPendingRevPanel=function(){var ediv='div.edit-post-sidebar ';if(rvyObjEdit.scheduledRevisionsURL&&!$(ediv+'div.edit-post-last-revision__panel a.rvy-scheduled-revisions').length){var sclone=$('div.edit-post-last-revision__panel a:first').clone().addClass('rvy-scheduled-revisions').attr('href',rvyObjEdit.scheduledRevisionsURL).html(rvyObjEdit.scheduledRevisionsCaption);$(ediv+'div.edit-post-last-revision__panel a:last').after(sclone);} -if(rvyObjEdit.pendingRevisionsURL&&!$(ediv+'div.edit-post-last-revision__panel a.rvy-pending-revisions').length){var pclone=$('div.edit-post-last-revision__panel a:first').clone().addClass('rvy-pending-revisions').attr('href',rvyObjEdit.pendingRevisionsURL).html(rvyObjEdit.pendingRevisionsCaption);$(ediv+'div.edit-post-last-revision__panel a:last').after(pclone);} -$('div.edit-post-last-revision__panel').css('height','inherit');} -setInterval(RvyPendingRevPanel,200);} -var rvyIsPublished=false;var RvySubmissionUI=function(){if(rvyObjEdit.ajaxurl&&!$('button.revision-approve').length){var html='
    ' -+'';if(rvyObjEdit.scheduleCaption){let postStatus=wp.data.select('core/editor').getCurrentPostAttribute('status');var publishedStatuses=Object.keys(rvyObjEdit.publishedStatuses).map(function(key){return rvyObjEdit.publishedStatuses[key];});rvyIsPublished=publishedStatuses.indexOf(postStatus)>=0;if(rvyIsPublished){html+='' -+'';}} -html+='
    ';$('div.edit-post-post-schedule').after(html);if(rvyCreationDisabled){$('button.revision-approve').prop('disabled','disabled');$('button.revision-schedule').prop('disabled','disabled');$('a.revision-approve').attr('title',rvyObjEdit.actionDisabledTitle);$('a.revision-schedule').attr('title',rvyObjEdit.scheduleDisabledTitle);}else{$('button.revision-approve').prop('disabled',false);$('button.revision-schedule').prop('disabled',false);$('a.revision-approve').attr('title',rvyObjEdit.actionTitle);$('a.revision-schedule').attr('title',rvyObjEdit.scheduleTitle);}}} -var RvyUIInterval=setInterval(RvySubmissionUI,200);function RvyGetRandomInt(max){return Math.floor(Math.random()*max);} -var rvyCreationDisabled=false;$(document).on('click','div.postbox-container',function(){rvyCreationDisabled=true;$('button.revision-approve').prop('disabled','disabled');$('button.revision-schedule').prop('disabled','disabled');$('a.revision-approve').attr('title',rvyObjEdit.actionDisabledTitle);$('a.revision-schedule').attr('title',rvyObjEdit.scheduleDisabledTitle);});$(document).on('click','button.editor-post-publish-button',function(){rvyCreationDisabled=false;$('button.revision-approve').prop('disabled',false);$('button.revision-schedule').prop('disabled',false);$('a.revision-approve').attr('title',rvyObjEdit.actionTitle);$('a.revision-schedule').attr('title',rvyObjEdit.scheduleTitle);});$(document).on('click','button.revision-create',function(){if($('a.revision-create').attr('disabled')){return;} -var revisionaryCreateDone=function(){$('.revision-create').hide();$('.revision-created').show();$('button.revision-created a').attr('href',rvyObjEdit.completedURL);} -var revisionaryCreateError=function(data,txtStatus){$('div.rvy-creation-ui').html(rvyObjEdit.errorCaption);} -var data={'rvy_ajax_field':'create_revision','rvy_ajax_value':wp.data.select('core/editor').getCurrentPostId(),'rvy_date_selection':RvyTimeSelection,'nc':RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryCreateDone,error:revisionaryCreateError});});$(document).on('click','button.revision-schedule',function(){if($('a.revision-schedule').attr('disabled')){return;} -var revisionaryScheduleDone=function(){$('.revision-schedule').hide();$('.revision-scheduled').show();$('button.revision-scheduled a').attr('href',rvyObjEdit.scheduledURL);} -var revisionaryScheduleError=function(data,txtStatus){$('div.rvy-creation-ui').html(rvyObjEdit.errorCaption);} -var data={'rvy_ajax_field':'create_scheduled_revision','rvy_ajax_value':wp.data.select('core/editor').getCurrentPostId(),'rvy_date_selection':RvyTimeSelection,'nc':RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryScheduleDone,error:revisionaryScheduleError});});var RvySelectedFutureDate=false;var RvyTimeSelection='';var RvyRefreshScheduleButton=function(){var selectedDateHTML=$('button.edit-post-post-schedule__toggle').html();if(!/\d/.test(selectedDateHTML)||!rvyIsPublished){RvyTimeSelection='';$('.rvy-creation-ui .revision-schedule').hide();$('.rvy-creation-ui .revision-scheduled').hide();$('.rvy-creation-ui .revision-created').hide();$('.rvy-creation-ui .revision-create').show();return;} -var selectedDate=new Date(selectedDateHTML);RvyTimeSelection=selectedDate.getTime();var tdiff=RvyTimeSelection-Date.now();RvyTimeSelection=RvyTimeSelection/1000;if((tdiff>1000)){RvySelectedFutureDate=true;$('.rvy-creation-ui .revision-create').hide();$('.rvy-creation-ui .revision-created').hide();$('.rvy-creation-ui .revision-scheduled').hide();$('.rvy-creation-ui .revision-schedule').show();}else{$('.rvy-creation-ui .revision-schedule').hide();$('.rvy-creation-ui .revision-scheduled').hide();$('.rvy-creation-ui .revision-created').hide();$('.rvy-creation-ui .revision-create').show();if(tdiff<=0){if(RvySelectedFutureDate){RvyTimeSelection='';}}}} -var RvyDetectPublishOptionsDivClosureInterval=false;var RvyDetectPublishOptionsDiv=function(){if($('div.edit-post-post-schedule__dialog').length){clearInterval(RvyDetectPublishOptionsDivInterval);var RvyDetectPublishOptionsClosure=function(){if(!$('div.edit-post-post-schedule__dialog').length){clearInterval(RvyDetectPublishOptionsDivClosureInterval);RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,500);RvyRefreshScheduleButton();}} -RvyDetectPublishOptionsDivClosureInterval=setInterval(RvyDetectPublishOptionsClosure,200);}} -var RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,500);}); +jQuery(document).ready(function($){if(rvyObjEdit.scheduledRevisionsURL||rvyObjEdit.pendingRevisionsURL){var RvyPendingRevPanel=function(){var ediv="div.edit-post-sidebar ";if(rvyObjEdit.scheduledRevisionsURL&&!$(ediv+"div.edit-post-last-revision__panel a.rvy-scheduled-revisions").length){var sclone=$("div.edit-post-last-revision__panel a:first").clone().addClass("rvy-scheduled-revisions").attr("href",rvyObjEdit.scheduledRevisionsURL).html(rvyObjEdit.scheduledRevisionsCaption);$(ediv+"div.edit-post-last-revision__panel a:last").after(sclone)}if(rvyObjEdit.pendingRevisionsURL&&!$(ediv+"div.edit-post-last-revision__panel a.rvy-pending-revisions").length){var pclone=$("div.edit-post-last-revision__panel a:first").clone().addClass("rvy-pending-revisions").attr("href",rvyObjEdit.pendingRevisionsURL).html(rvyObjEdit.pendingRevisionsCaption);$(ediv+"div.edit-post-last-revision__panel a:last").after(pclone)}$("div.edit-post-last-revision__panel").css("height","inherit")};setInterval(RvyPendingRevPanel,200)}var rvyIsPublished=false;var RvySubmissionUI=function(){if(rvyObjEdit.ajaxurl&&!$("button.revision-approve").length){var html='
    "+'";if(rvyObjEdit.scheduleCaption){let postStatus=wp.data.select("core/editor").getCurrentPostAttribute("status");var publishedStatuses=Object.keys(rvyObjEdit.publishedStatuses).map(function(key){return rvyObjEdit.publishedStatuses[key]});rvyIsPublished=publishedStatuses.indexOf(postStatus)>=0;if(rvyIsPublished){html+='"+'"}}html+="
    ";$("div.edit-post-post-schedule").after(html);if(rvyCreationDisabled){$("button.revision-approve").prop("disabled","disabled");$("button.revision-schedule").prop("disabled","disabled");$("a.revision-approve").attr("title",rvyObjEdit.actionDisabledTitle);$("a.revision-schedule").attr("title",rvyObjEdit.scheduleDisabledTitle)}else{$("button.revision-approve").prop("disabled",false);$("button.revision-schedule").prop("disabled",false);$("a.revision-approve").attr("title",rvyObjEdit.actionTitle);$("a.revision-schedule").attr("title",rvyObjEdit.scheduleTitle)}}};var RvyUIInterval=setInterval(RvySubmissionUI,200);function RvyGetRandomInt(max){return Math.floor(Math.random()*max)}var rvyCreationDisabled=false;$(document).on("click","div.postbox-container",function(){rvyCreationDisabled=true;$("button.revision-approve").prop("disabled","disabled");$("button.revision-schedule").prop("disabled","disabled");$("a.revision-approve").attr("title",rvyObjEdit.actionDisabledTitle);$("a.revision-schedule").attr("title",rvyObjEdit.scheduleDisabledTitle)});$(document).on("click","button.editor-post-publish-button",function(){rvyCreationDisabled=false;$("button.revision-approve").prop("disabled",false);$("button.revision-schedule").prop("disabled",false);$("a.revision-approve").attr("title",rvyObjEdit.actionTitle);$("a.revision-schedule").attr("title",rvyObjEdit.scheduleTitle)});$(document).on("click","button.revision-create",function(){if($("a.revision-create").attr("disabled")){return}var revisionaryCreateDone=function(){$(".revision-create").hide();$(".revision-created").show();$("button.revision-created a").attr("href",rvyObjEdit.completedURL)};var revisionaryCreateError=function(data,txtStatus){$("div.rvy-creation-ui").html(rvyObjEdit.errorCaption)};var data={rvy_ajax_field:"create_revision",rvy_ajax_value:wp.data.select("core/editor").getCurrentPostId(),rvy_date_selection:RvyTimeSelection,nc:RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryCreateDone,error:revisionaryCreateError})});$(document).on("click","button.revision-schedule",function(){if($("a.revision-schedule").attr("disabled")){return}var revisionaryScheduleDone=function(){$(".revision-schedule").hide();$(".revision-scheduled").show();$("button.revision-scheduled a").attr("href",rvyObjEdit.scheduledURL)};var revisionaryScheduleError=function(data,txtStatus){$("div.rvy-creation-ui").html(rvyObjEdit.errorCaption)};var data={rvy_ajax_field:"create_scheduled_revision",rvy_ajax_value:wp.data.select("core/editor").getCurrentPostId(),rvy_date_selection:RvyTimeSelection,nc:RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryScheduleDone,error:revisionaryScheduleError})});var RvySelectedFutureDate=false;var RvyTimeSelection="";var RvyRefreshScheduleButton=function(){var selectedDateHTML=$("button.edit-post-post-schedule__toggle").html();if(!/\d/.test(selectedDateHTML)||!rvyIsPublished){RvyTimeSelection="";$(".rvy-creation-ui .revision-schedule").hide();$(".rvy-creation-ui .revision-scheduled").hide();$(".rvy-creation-ui .revision-created").hide();$(".rvy-creation-ui .revision-create").show();return}var selectedDate=new Date(selectedDateHTML);RvyTimeSelection=selectedDate.getTime();var tdiff=RvyTimeSelection-Date.now();RvyTimeSelection=RvyTimeSelection/1e3;if(tdiff>1e3){RvySelectedFutureDate=true;$(".rvy-creation-ui .revision-create").hide();$(".rvy-creation-ui .revision-created").hide();$(".rvy-creation-ui .revision-scheduled").hide();$(".rvy-creation-ui .revision-schedule").show()}else{$(".rvy-creation-ui .revision-schedule").hide();$(".rvy-creation-ui .revision-scheduled").hide();$(".rvy-creation-ui .revision-created").hide();$(".rvy-creation-ui .revision-create").show();if(tdiff<=0){if(RvySelectedFutureDate){RvyTimeSelection=""}}}};var RvyDetectPublishOptionsDivClosureInterval=false;var RvyDetectPublishOptionsDiv=function(){if($("div.edit-post-post-schedule__dialog").length){clearInterval(RvyDetectPublishOptionsDivInterval);var RvyDetectPublishOptionsClosure=function(){if(!$("div.edit-post-post-schedule__dialog").length){clearInterval(RvyDetectPublishOptionsDivClosureInterval);RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,500);RvyRefreshScheduleButton()}};RvyDetectPublishOptionsDivClosureInterval=setInterval(RvyDetectPublishOptionsClosure,200)}};var RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,500)}); diff --git a/admin/rvy_revision-block-edit.dev.js b/admin/rvy_revision-block-edit.dev.js index 11594ed3..210d0862 100644 --- a/admin/rvy_revision-block-edit.dev.js +++ b/admin/rvy_revision-block-edit.dev.js @@ -143,14 +143,14 @@ jQuery(document).ready( function($) { if (rvyObjEdit[rvyObjEdit.currentStatus + 'ActionCaption']) { $(refSelector).after( '' @@ -245,12 +245,8 @@ jQuery(document).ready( function($) { if (rvyObjEdit.viewURL) { original = $('div.edit-post-header__settings a.editor-post-preview'); - $(original).after(original.clone().attr('href', rvyObjEdit.viewURL).attr('target', '_blank').removeClass('editor-post-preview is-tertiary').addClass('rvy-post-preview is-secondary')); + $(original).after(original.clone().attr('href', rvyObjEdit.viewURL).attr('target', '_blank').removeClass('editor-post-preview is-tertiary').addClass('rvy-post-preview is-primary ppr-purple-button')); $(original).hide(); - - if (rvyObjEdit.multiPreviewActive) { - $('.rvy-post-preview').removeClass('components-button').css('height', 'inherit').css('text-decoration', 'none'); - } } if (rvyObjEdit.viewCaption) { diff --git a/admin/rvy_revision-block-edit.js b/admin/rvy_revision-block-edit.js index 65ac87f4..6f502a18 100644 --- a/admin/rvy_revision-block-edit.js +++ b/admin/rvy_revision-block-edit.js @@ -1,43 +1 @@ -jQuery(document).ready(function($){function RvyRecaptionElement(btnSelector,btnCaption){let node=document.querySelector(btnSelector);if(node){document.querySelector(btnSelector).innerText=`${btnCaption}`;}} -function RvySetPublishButtonCaption(caption,waitForSaveDraftButton,forceRegen,timeout){if(caption==''&&(typeof rvyObjEdit['publishCaptionCurrent']!='undefined')){caption=rvyObjEdit.publishCaptionCurrent;}else{rvyObjEdit.publishCaptionCurrent=caption;} -if(typeof waitForSaveDraftButton=='undefined'){waitForSaveDraftButton=false;} -if((!waitForSaveDraftButton||$('button.editor-post-switch-to-draft').filter(':visible').length||$('button.editor-post-save-draft').filter(':visible').length)&&$('button.editor-post-publish-button').length){RvyRecaptionElement('button.editor-post-publish-button',caption);}} -var RvyDetectPublishOptionsDivClosureInterval='';var RvyDetectPublishOptionsDiv=function(){if($('div.components-modal__header').length){clearInterval(RvyDetectPublishOptionsDivInterval);if($('span.pp-recaption-button').first()){rvyObjEdit.overrideColor=$('span.pp-recaption-button').first().css('color');} -var RvyDetectPublishOptionsClosure=function(){if(!$('div.components-modal__header').length){clearInterval(RvyDetectPublishOptionsDivClosureInterval);$('span.pp-recaption-button').hide();RvyInitInterval=setInterval(RvyInitializeBlockEditorModifications,50);RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,1000);}} -RvyDetectPublishOptionsDivClosureInterval=setInterval(RvyDetectPublishOptionsClosure,200);}} -var RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,1000);rvyObjEdit.publishCaptionCurrent=rvyObjEdit.publish;var RvyInitializeBlockEditorModifications=function(){if(($('button.editor-post-publish-button').length||$('button.editor-post-publish-panel__toggle').length)&&($('button.editor-post-switch-to-draft').length||$('button.editor-post-save-draft').length)){clearInterval(RvyInitInterval);if($('button.editor-post-publish-panel__toggle').length){if(typeof rvyObjEdit.prePublish!='undefined'&&rvyObjEdit.prePublish){RvyRecaptionElement('button.editor-post-publish-panel__toggle',rvyObjEdit.prePublish);} -$(document).on('click','button.editor-post-publish-panel__toggle,span.pp-recaption-prepublish-button',function(){RvySetPublishButtonCaption('',false,true);});}else{RvySetPublishButtonCaption(rvyObjEdit.publish,false,true);} -$('select.editor-post-author__select').parent().hide();$('button.editor-post-trash').parent().show();$('button.editor-post-switch-to-draft').hide();$('div.components-notice-list').hide();} -if(($('button.editor-post-publish-button').length||$('button.editor-post-publish-panel__toggle').length)){$('button.editor-post-publish-button').hide();$('button.editor-post-publish-panel__toggle').hide();}} -var RvyInitInterval=setInterval(RvyInitializeBlockEditorModifications,50);var RvyHideElements=function(){var ediv='div.edit-post-sidebar ';if($(ediv+'div.edit-post-post-visibility,'+ediv+'div.editor-post-link,'+ediv+'select.editor-post-author__select:visible,'+ediv+'div.components-base-control__field input[type="checkbox"]:visible,'+ediv+'button.editor-post-switch-to-draft,'+ediv+'button.editor-post-trash').length){$(ediv+'select.editor-post-author__select').parent().hide();$(ediv+'button.editor-post-trash').parent().show();$(ediv+'button.editor-post-switch-to-draft').hide();$(ediv+'div.editor-post-link').parent().hide();$(ediv+'div.components-notice-list').hide();if(!rvyObjEdit.scheduledRevisionsEnabled){$(ediv+'div.edit-post-post-schedule').hide();} -$(ediv+'#publishpress-notifications').hide();$('#icl_div').closest('div.edit-post-meta-boxes-area').hide();} -if($('button.editor-post-publish-button').length){$('button.editor-post-publish-button').hide();}} -var RvyHideInterval=setInterval(RvyHideElements,50);var RvySubmissionUI=function(){if($('div.edit-post-post-schedule').length){var refSelector='div.edit-post-post-schedule';}else{var refSelector='div.edit-post-post-visibility';} -if(rvyObjEdit.ajaxurl&&!$('div.edit-post-revision-status').length&&$(refSelector).length){$(refSelector).before('
    ' -+''+rvyObjEdit.statusLabel+'' -+'
    ' -+rvyObjEdit[rvyObjEdit.currentStatus+'StatusCaption'] -+'
    ' -+'
    ');if(rvyObjEdit[rvyObjEdit.currentStatus+'ActionURL']){var url=rvyObjEdit[rvyObjEdit.currentStatus+'ActionURL'];}else{var url='javascript:void(0)';} -if(rvyObjEdit[rvyObjEdit.currentStatus+'ActionCaption']){$(refSelector).after('');} -if(RvyApprovalLocked!=$('button.revision-approve').prop('disabled')){if(RvyApprovalLocked){$('button.revision-approve').html('Revision needs update.');}else{$('button.revision-approve').html(rvyObjEdit[rvyObjEdit.currentStatus+'ActionCaption']);}} -$('button.revision-approve').prop('disabled',RvyApprovalLocked&&('pending'==rvyObjEdit.currentStatus));$('.edit-post-post-schedule__toggle').after('');if(rvyObjEdit[rvyObjEdit.currentStatus+'DeletionURL']){$('button.editor-post-trash').wrap('');}} -$('button.post-schedule-footnote').toggle(!/\d/.test($('button.edit-post-post-schedule__toggle').html()));} -var RvyUIInterval=setInterval(RvySubmissionUI,100);var RvyApprovalLocked=false;$(document).on('click','div.edit-post-visual-editor *, div.editor-inserter *',function(){if('pending'==rvyObjEdit.currentStatus){RvyApprovalLocked=true;$('button.revision-approve').prop('disabled',true);}});$(document).on('click','button.edit-post-post-schedule__toggle',function(){RvyApprovalLocked=true;$('button.revision-approve').prop('disabled',true);});$(document).on('click','button.editor-post-save-draft',function(){RvyApprovalLocked=false;$('button.revision-approve').prop('disabled',false);$('button.revision-approve').html(rvyObjEdit[rvyObjEdit.currentStatus+'ActionCaption']);});function RvyGetRandomInt(max){return Math.floor(Math.random()*max);} -$(document).on('click','div.postbox-container',function(){$('button.revision-approve').prop('disabled','disabled');});$(document).on('click','button.revision-approve',function(){if(!rvyObjEdit[rvyObjEdit.currentStatus+'ActionURL']){var revisionaryCreateDone=function(){$('.revision-approve').hide();$('.revision-created').show();rvyObjEdit.currentStatus='pending';$('.rvy-current-status').html(rvyObjEdit[rvyObjEdit.currentStatus+'StatusCaption']);$('a.revision-edit').attr('href',rvyObjEdit[rvyObjEdit.currentStatus+'CompletedURL']).show();} -var revisionaryCreateError=function(data,txtStatus){$('div.rvy-creation-ui').html(rvyObjEdit[rvyObjEdit.currentStatus+'ErrorCaption']);} -var data={'rvy_ajax_field':rvyObjEdit[rvyObjEdit.currentStatus+'AjaxField'],'rvy_ajax_value':wp.data.select('core/editor').getCurrentPostId(),'nc':RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryCreateDone,error:revisionaryCreateError});}});var RvyRecaptionSaveDraft=function(){if($('button.editor-post-save-draft:not(.rvy-recaption)').length){RvyRecaptionElement('button.editor-post-save-draft:not(.rvy-recaption)',rvyObjEdit.saveRevision);$('button.editor-post-save-draft:not(.rvy-recaption)').addClass('rvy-recaption');} -if(($('div.edit-post-header__settings a.editor-post-preview:visible').length||$('div.block-editor-post-preview__dropdown button.block-editor-post-preview__button-toggle:visible').length)&&!$('a.rvy-post-preview').length){if(rvyObjEdit.viewURL){original=$('div.edit-post-header__settings a.editor-post-preview');$(original).after(original.clone().attr('href',rvyObjEdit.viewURL).attr('target','_blank').removeClass('editor-post-preview is-tertiary').addClass('rvy-post-preview is-secondary'));$(original).hide();if(rvyObjEdit.multiPreviewActive){$('.rvy-post-preview is-primary').removeClass('components-button').css('height','inherit').css('text-decoration','none');}} -if(rvyObjEdit.viewCaption){RvyRecaptionElement('div.edit-post-header__settings a.rvy-post-preview',rvyObjEdit.viewCaption);} -if(rvyObjEdit.viewTitle){$('div.edit-post-header__settings a.rvy-post-preview').attr('title',rvyObjEdit.viewTitle);}}else{if(!rvyObjEdit.multiPreviewActive){if(!$('a.editor-post-preview').next('a.rvy-post-preview').length){$('a.rvy-post-preview').insertAfter($('a.editor-post-preview'));} -if(rvyObjEdit.previewTitle&&!$('a.editor-post-preview').attr('title')){$('div.edit-post-header__settings a.editor-post-preview').attr('title',rvyObjEdit.previewTitle);}}} -if(rvyObjEdit.revisionEdits&&$('div.edit-post-sidebar a.editor-post-last-revision__title:visible').length&&!$('div.edit-post-sidebar a.editor-post-last-revision__title.rvy-recaption').length){$('div.edit-post-sidebar a.editor-post-last-revision__title').html(rvyObjEdit.revisionEdits);$('div.edit-post-sidebar a.editor-post-last-revision__title').addClass('rvy-recaption');}} -var RvyRecaptionSaveDraftInterval=setInterval(RvyRecaptionSaveDraft,100);}); +jQuery(document).ready(function($){function RvyRecaptionElement(btnSelector,btnCaption){let node=document.querySelector(btnSelector);if(node){document.querySelector(btnSelector).innerText=`${btnCaption}`}}function RvySetPublishButtonCaption(caption,waitForSaveDraftButton,forceRegen,timeout){if(caption==""&&typeof rvyObjEdit["publishCaptionCurrent"]!="undefined"){caption=rvyObjEdit.publishCaptionCurrent}else{rvyObjEdit.publishCaptionCurrent=caption}if(typeof waitForSaveDraftButton=="undefined"){waitForSaveDraftButton=false}if((!waitForSaveDraftButton||$("button.editor-post-switch-to-draft").filter(":visible").length||$("button.editor-post-save-draft").filter(":visible").length)&&$("button.editor-post-publish-button").length){RvyRecaptionElement("button.editor-post-publish-button",caption)}}var RvyDetectPublishOptionsDivClosureInterval="";var RvyDetectPublishOptionsDiv=function(){if($("div.components-modal__header").length){clearInterval(RvyDetectPublishOptionsDivInterval);if($("span.pp-recaption-button").first()){rvyObjEdit.overrideColor=$("span.pp-recaption-button").first().css("color")}var RvyDetectPublishOptionsClosure=function(){if(!$("div.components-modal__header").length){clearInterval(RvyDetectPublishOptionsDivClosureInterval);$("span.pp-recaption-button").hide();RvyInitInterval=setInterval(RvyInitializeBlockEditorModifications,50);RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,1e3)}};RvyDetectPublishOptionsDivClosureInterval=setInterval(RvyDetectPublishOptionsClosure,200)}};var RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,1e3);rvyObjEdit.publishCaptionCurrent=rvyObjEdit.publish;var RvyInitializeBlockEditorModifications=function(){if(($("button.editor-post-publish-button").length||$("button.editor-post-publish-panel__toggle").length)&&($("button.editor-post-switch-to-draft").length||$("button.editor-post-save-draft").length)){clearInterval(RvyInitInterval);if($("button.editor-post-publish-panel__toggle").length){if(typeof rvyObjEdit.prePublish!="undefined"&&rvyObjEdit.prePublish){RvyRecaptionElement("button.editor-post-publish-panel__toggle",rvyObjEdit.prePublish)}$(document).on("click","button.editor-post-publish-panel__toggle,span.pp-recaption-prepublish-button",function(){RvySetPublishButtonCaption("",false,true)})}else{RvySetPublishButtonCaption(rvyObjEdit.publish,false,true)}$("select.editor-post-author__select").parent().hide();$("button.editor-post-trash").parent().show();$("button.editor-post-switch-to-draft").hide();$("div.components-notice-list").hide()}if($("button.editor-post-publish-button").length||$("button.editor-post-publish-panel__toggle").length){$("button.editor-post-publish-button").hide();$("button.editor-post-publish-panel__toggle").hide()}};var RvyInitInterval=setInterval(RvyInitializeBlockEditorModifications,50);var RvyHideElements=function(){var ediv="div.edit-post-sidebar ";if($(ediv+"div.edit-post-post-visibility,"+ediv+"div.editor-post-link,"+ediv+"select.editor-post-author__select:visible,"+ediv+'div.components-base-control__field input[type="checkbox"]:visible,'+ediv+"button.editor-post-switch-to-draft,"+ediv+"button.editor-post-trash").length){$(ediv+"select.editor-post-author__select").parent().hide();$(ediv+"button.editor-post-trash").parent().show();$(ediv+"button.editor-post-switch-to-draft").hide();$(ediv+"div.editor-post-link").parent().hide();$(ediv+"div.components-notice-list").hide();if(!rvyObjEdit.scheduledRevisionsEnabled){$(ediv+"div.edit-post-post-schedule").hide()}$(ediv+"#publishpress-notifications").hide();$("#icl_div").closest("div.edit-post-meta-boxes-area").hide()}if($("button.editor-post-publish-button").length){$("button.editor-post-publish-button").hide()}};var RvyHideInterval=setInterval(RvyHideElements,50);var RvySubmissionUI=function(){if($("div.edit-post-post-schedule").length){var refSelector="div.edit-post-post-schedule"}else{var refSelector="div.edit-post-post-visibility"}if(rvyObjEdit.ajaxurl&&!$("div.edit-post-revision-status").length&&$(refSelector).length){$(refSelector).before('
    '+""+rvyObjEdit.statusLabel+""+'
    '+rvyObjEdit[rvyObjEdit.currentStatus+"StatusCaption"]+"
    "+"
    ");if(rvyObjEdit[rvyObjEdit.currentStatus+"ActionURL"]){var url=rvyObjEdit[rvyObjEdit.currentStatus+"ActionURL"]}else{var url="javascript:void(0)"}if(rvyObjEdit[rvyObjEdit.currentStatus+"ActionCaption"]){$(refSelector).after('")}if(RvyApprovalLocked!=$("button.revision-approve").prop("disabled")){if(RvyApprovalLocked){$("button.revision-approve").html("Revision needs update.")}else{$("button.revision-approve").html(rvyObjEdit[rvyObjEdit.currentStatus+"ActionCaption"])}}$("button.revision-approve").prop("disabled",RvyApprovalLocked&&"pending"==rvyObjEdit.currentStatus);$(".edit-post-post-schedule__toggle").after('");if(rvyObjEdit[rvyObjEdit.currentStatus+"DeletionURL"]){$("button.editor-post-trash").wrap('')}}$("button.post-schedule-footnote").toggle(!/\d/.test($("button.edit-post-post-schedule__toggle").html()))};var RvyUIInterval=setInterval(RvySubmissionUI,100);var RvyApprovalLocked=false;$(document).on("click","div.edit-post-visual-editor *, div.editor-inserter *",function(){if("pending"==rvyObjEdit.currentStatus){RvyApprovalLocked=true;$("button.revision-approve").prop("disabled",true)}});$(document).on("click","button.edit-post-post-schedule__toggle",function(){RvyApprovalLocked=true;$("button.revision-approve").prop("disabled",true)});$(document).on("click","button.editor-post-save-draft",function(){RvyApprovalLocked=false;$("button.revision-approve").prop("disabled",false);$("button.revision-approve").html(rvyObjEdit[rvyObjEdit.currentStatus+"ActionCaption"])});function RvyGetRandomInt(max){return Math.floor(Math.random()*max)}$(document).on("click","div.postbox-container",function(){$("button.revision-approve").prop("disabled","disabled")});$(document).on("click","button.revision-approve",function(){if(!rvyObjEdit[rvyObjEdit.currentStatus+"ActionURL"]){var revisionaryCreateDone=function(){$(".revision-approve").hide();$(".revision-created").show();rvyObjEdit.currentStatus="pending";$(".rvy-current-status").html(rvyObjEdit[rvyObjEdit.currentStatus+"StatusCaption"]);$("a.revision-edit").attr("href",rvyObjEdit[rvyObjEdit.currentStatus+"CompletedURL"]).show()};var revisionaryCreateError=function(data,txtStatus){$("div.rvy-creation-ui").html(rvyObjEdit[rvyObjEdit.currentStatus+"ErrorCaption"])};var data={rvy_ajax_field:rvyObjEdit[rvyObjEdit.currentStatus+"AjaxField"],rvy_ajax_value:wp.data.select("core/editor").getCurrentPostId(),nc:RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryCreateDone,error:revisionaryCreateError})}});var RvyRecaptionSaveDraft=function(){if($("button.editor-post-save-draft:not(.rvy-recaption)").length){RvyRecaptionElement("button.editor-post-save-draft:not(.rvy-recaption)",rvyObjEdit.saveRevision);$("button.editor-post-save-draft:not(.rvy-recaption)").addClass("rvy-recaption")}if(($("div.edit-post-header__settings a.editor-post-preview:visible").length||$("div.block-editor-post-preview__dropdown button.block-editor-post-preview__button-toggle:visible").length)&&!$("a.rvy-post-preview").length){if(rvyObjEdit.viewURL){original=$("div.edit-post-header__settings a.editor-post-preview");$(original).after(original.clone().attr("href",rvyObjEdit.viewURL).attr("target","_blank").removeClass("editor-post-preview is-tertiary").addClass("rvy-post-preview is-primary ppr-purple-button"));$(original).hide()}if(rvyObjEdit.viewCaption){RvyRecaptionElement("div.edit-post-header__settings a.rvy-post-preview",rvyObjEdit.viewCaption)}if(rvyObjEdit.viewTitle){$("div.edit-post-header__settings a.rvy-post-preview").attr("title",rvyObjEdit.viewTitle)}}else{if(!rvyObjEdit.multiPreviewActive){if(!$("a.editor-post-preview").next("a.rvy-post-preview").length){$("a.rvy-post-preview").insertAfter($("a.editor-post-preview"))}if(rvyObjEdit.previewTitle&&!$("a.editor-post-preview").attr("title")){$("div.edit-post-header__settings a.editor-post-preview").attr("title",rvyObjEdit.previewTitle)}}}if(rvyObjEdit.revisionEdits&&$("div.edit-post-sidebar a.editor-post-last-revision__title:visible").length&&!$("div.edit-post-sidebar a.editor-post-last-revision__title.rvy-recaption").length){$("div.edit-post-sidebar a.editor-post-last-revision__title").html(rvyObjEdit.revisionEdits);$("div.edit-post-sidebar a.editor-post-last-revision__title").addClass("rvy-recaption")}};var RvyRecaptionSaveDraftInterval=setInterval(RvyRecaptionSaveDraft,100)}); From c3a036cbeeab8b80b332f01e2cb1b88395b4daa9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Valenti=CC=81n=20Garci=CC=81a?= Date: Fri, 24 Sep 2021 17:05:56 -0500 Subject: [PATCH 102/193] Icon support for buttons --- admin/revisionary.css | 5 +++++ admin/rvy_revision-block-edit.dev.js | 9 +++++++-- admin/rvy_revision-block-edit.js | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/admin/revisionary.css b/admin/revisionary.css index 8b62ddcc..662a037e 100644 --- a/admin/revisionary.css +++ b/admin/revisionary.css @@ -622,3 +622,8 @@ font-weight: bold; background: none; border: none; } + +/* Button with icon */ +.ppr-purple-button > span.dashicons { + margin-right: 5px; +} diff --git a/admin/rvy_revision-block-edit.dev.js b/admin/rvy_revision-block-edit.dev.js index 210d0862..94a4e78f 100644 --- a/admin/rvy_revision-block-edit.dev.js +++ b/admin/rvy_revision-block-edit.dev.js @@ -6,11 +6,15 @@ * Copyright 2021, PublishPress */ jQuery(document).ready( function($) { - function RvyRecaptionElement(btnSelector, btnCaption) { + function RvyRecaptionElement(btnSelector, btnCaption, btnIcon = '') { let node = document.querySelector(btnSelector); if (node) { document.querySelector(btnSelector).innerText = `${btnCaption}`; + + if(btnIcon){ + document.querySelector(btnSelector).innerHTML = `${btnCaption}`; + } } } @@ -144,6 +148,7 @@ jQuery(document).ready( function($) { $(refSelector).after( '
    ' + '' + ''; - + $('div.edit-post-post-schedule').after(html); if (rvyCreationDisabled) { @@ -158,7 +158,7 @@ jQuery(document).ready( function($) { /** * If date is set to future, change Publish button caption to "Schedule Revision", * Then set a self-interval to refresh that status once the selected date is no longer future. - * + * * If the selected date is already past, change Publish button back to "Update" */ var RvySelectedFutureDate = false; @@ -177,7 +177,7 @@ jQuery(document).ready( function($) { } var selectedDate = new Date( selectedDateHTML ); - + RvyTimeSelection = selectedDate.getTime(); var tdiff = RvyTimeSelection - Date.now(); diff --git a/admin/rvy_revision-block-edit.dev.js b/admin/rvy_revision-block-edit.dev.js index bbc025ba..8c0776df 100644 --- a/admin/rvy_revision-block-edit.dev.js +++ b/admin/rvy_revision-block-edit.dev.js @@ -44,7 +44,7 @@ jQuery(document).ready( function($) { var RvyDetectPublishOptionsClosure = function() { if ( ! $('div.components-modal__header').length ) { clearInterval(RvyDetectPublishOptionsDivClosureInterval); - + $('span.pp-recaption-button').hide(); //.addClass('force-regen'); RvyInitInterval = setInterval(RvyInitializeBlockEditorModifications, 50); RvyDetectPublishOptionsDivInterval = setInterval(RvyDetectPublishOptionsDiv, 1000); @@ -58,12 +58,12 @@ jQuery(document).ready( function($) { /************* RECAPTION PRE-PUBLISH AND PUBLISH BUTTONS ****************/ rvyObjEdit.publishCaptionCurrent = rvyObjEdit.publish; - + // Initialization operations to perform once React loads the relevant elements var RvyInitializeBlockEditorModifications = function() { if ( ( $('button.editor-post-publish-button').length || $('button.editor-post-publish-panel__toggle').length ) && ( $('button.editor-post-switch-to-draft').length || $('button.editor-post-save-draft').length ) ) { clearInterval(RvyInitInterval); - + if ( $('button.editor-post-publish-panel__toggle').length ) { if ( typeof rvyObjEdit.prePublish != 'undefined' && rvyObjEdit.prePublish ) { RvyRecaptionElement('button.editor-post-publish-panel__toggle', rvyObjEdit.prePublish); @@ -71,12 +71,12 @@ jQuery(document).ready( function($) { // Presence of pre-publish button means publish button is not loaded yet. Start looking for it once Pre-Publish button is clicked. $(document).on('click', 'button.editor-post-publish-panel__toggle,span.pp-recaption-prepublish-button', function() { - RvySetPublishButtonCaption('', false, true); // nullstring: set caption to value queued in rvyObjEdit.publishCaptionCurrent + RvySetPublishButtonCaption('', false, true); // nullstring: set caption to value queued in rvyObjEdit.publishCaptionCurrent }); } else { RvySetPublishButtonCaption(rvyObjEdit.publish, false, true); } - + $('select.editor-post-author__select').parent().hide(); $('button.editor-post-trash').parent().show(); $('button.editor-post-switch-to-draft').hide(); @@ -128,12 +128,12 @@ jQuery(document).ready( function($) { $(refSelector).before( '
    ' + '' + rvyObjEdit.statusLabel + '' - + '
    ' + + '
    ' + rvyObjEdit[rvyObjEdit.currentStatus + 'StatusCaption'] + '
    ' + '
    ' ); - + if (rvyObjEdit[rvyObjEdit.currentStatus + 'ActionURL']) { var url = rvyObjEdit[rvyObjEdit.currentStatus + 'ActionURL']; } else { @@ -224,7 +224,7 @@ jQuery(document).ready( function($) { } var data = {'rvy_ajax_field': rvyObjEdit[rvyObjEdit.currentStatus + 'AjaxField'], 'rvy_ajax_value': wp.data.select('core/editor').getCurrentPostId(), 'nc': RvyGetRandomInt(99999999)}; - + $.ajax({ url: rvyObjEdit.ajaxurl, data: data, @@ -242,7 +242,7 @@ jQuery(document).ready( function($) { } if (($('div.edit-post-header__settings a.editor-post-preview:visible').length || $('div.block-editor-post-preview__dropdown button.block-editor-post-preview__button-toggle:visible').length) && !$('a.rvy-post-preview').length) { - + if (rvyObjEdit.viewURL) { original = $('div.edit-post-header__settings a.editor-post-preview'); $(original).after(original.clone().attr('href', rvyObjEdit.viewURL).attr('target', '_blank').removeClass('editor-post-preview').addClass('rvy-post-preview')); From 34ed2c7f30c066cfe5e68a57e9142a3f2eafc887 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Wed, 29 Sep 2021 16:37:34 -0400 Subject: [PATCH 104/193] Revision Queue: auto-flush has_revision postmeta flag if no results are returned --- admin/class-list-table_rvy.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/admin/class-list-table_rvy.php b/admin/class-list-table_rvy.php index a4e386c8..d71f1206 100644 --- a/admin/class-list-table_rvy.php +++ b/admin/class-list-table_rvy.php @@ -611,6 +611,12 @@ public function prepare_items() { $total_items = $wp_query->found_posts; + // auto-flush revision flags + if (!$total_items && !rvy_get_option('queue_query_all_posts') && !get_transient('revisionary_flushed_has_revision_flag')) { + revisionary_refresh_revision_flags(); + set_transient('revisionary_flushed_has_revision_flag', true, 60); + } + $this->set_pagination_args( [ 'total_items' => $total_items, 'per_page' => $per_page From a1df50738c4ec7061346afd86c2f1439dfd44e5d Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Wed, 29 Sep 2021 16:38:47 -0400 Subject: [PATCH 105/193] Revision Queue: new filter "revisionary_my_copies_label" Allows customization of "My Copies & Changes" view caption --- admin/class-list-table_rvy.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/admin/class-list-table_rvy.php b/admin/class-list-table_rvy.php index d71f1206..42205029 100644 --- a/admin/class-list-table_rvy.php +++ b/admin/class-list-table_rvy.php @@ -739,7 +739,10 @@ protected function get_views() { $link_class = ''; } - $links['mine'] = sprintf(__('%sMy Copies & Changes%s (%s)', 'revisionary'), "", '', "$my_count"); + $links['mine'] = sprintf( + apply_filters('revisionary_my_copies_label', __('%sMy Copies & Changes%s (%s)', 'revisionary')), + "", '', "$my_count" + ); } $where = $this->revisions_where_filter( From 14b1d6e032572c9f5c6346ad33e022626f90690a Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Wed, 29 Sep 2021 16:45:47 -0400 Subject: [PATCH 106/193] New setting "Users can always administer revisions to their own editable posts" This option defaults true, maintaining existing / intended behavior, but with more clarity and versatility. The typical use case is that Authors are generally prevented from listing / editing others' revisions, yet allowed to list and approve any revision to their own post. --- admin/class-list-table_rvy.php | 20 +++++++++++++++++++- admin/options.php | 6 +++++- defaults_rvy.php | 2 ++ revisionary_main.php | 15 ++++++++++----- 4 files changed, 36 insertions(+), 7 deletions(-) diff --git a/admin/class-list-table_rvy.php b/admin/class-list-table_rvy.php index 42205029..2e2bf364 100644 --- a/admin/class-list-table_rvy.php +++ b/admin/class-list-table_rvy.php @@ -282,6 +282,23 @@ function revisions_where_filter($where, $args = []) { $where_append = "($p.comment_count IN ($post_id_csv) $own_revision_clause)"; + $status_csv = rvy_filtered_statuses(['return' => 'csv']); + + $own_posts = $wpdb->get_col( + $wpdb->prepare( + "SELECT ID FROM $wpdb->posts WHERE post_status IN ($status_csv) AND post_author = %d", + $current_user->ID + ) + ); + + if (rvy_get_option('admin_revisions_to_own_posts')) { + $own_posts = apply_filters('revisionary_own_post_ids', $own_posts, $current_user->ID); + } else { + $own_posts = []; + } + + $own_posts_csv = "'" . implode("','", $own_posts) . "'"; + if (rvy_get_option('revisor_hide_others_revisions') && !current_user_can('administrator') && !current_user_can('list_others_revisions') && empty($args['suppress_author_clause']) ) { @@ -313,7 +330,8 @@ function revisions_where_filter($where, $args = []) { $type_clause = ''; } - $where_append .= $wpdb->prepare(" AND ($p.post_author = %d $type_clause)", $current_user->ID ); + $where_append .= $wpdb->prepare(" AND (($p.post_author = %d $type_clause) OR ($p.comment_count IN ($own_posts_csv) $type_clause))", $current_user->ID ); + } elseif ($revisionary->config_loaded) { $where_append .= (array_filter($revisionary->enabled_post_types)) ? " AND ($p.post_type IN ('" . implode("','", array_keys(array_filter($revisionary->enabled_post_types))) . "'))" diff --git a/admin/options.php b/admin/options.php index 053d7d1e..ef8eee06 100644 --- a/admin/options.php +++ b/admin/options.php @@ -115,6 +115,7 @@ function options_ui( $sitewide = false, $customize_defaults = false ) { 'revise_posts_capability' => __("Change Requests require role capability", 'revisionary'), 'revisor_lock_others_revisions' => __("Editing others' revisions requires role capability", 'revisionary'), 'revisor_hide_others_revisions' => __("Listing others' revisions requires role capability", 'revisionary'), + 'admin_revisions_to_own_posts' => __("Users can always administer revisions to their own editable posts", 'revisionary'), 'queue_query_all_posts' => __('Compatibility Mode', 'revisionary'), 'revision_update_notifications' => __('Also notify on Revision Update', 'revisionary'), 'trigger_post_update_actions' => __('Revision Publication: API actions to mimic Post Update', 'revisionary'), @@ -160,7 +161,7 @@ function options_ui( $sitewide = false, $customize_defaults = false ) { 'working_copy' => ['copy_posts_capability'], 'scheduled_revisions' => ['scheduled_revisions', 'async_scheduled_publish', 'scheduled_revision_update_post_date', 'scheduled_revision_update_modified_date'], 'pending_revisions' => ['pending_revisions', 'revise_posts_capability', 'pending_revision_update_post_date', 'pending_revision_update_modified_date'], - 'revision_queue' => ['revisor_lock_others_revisions', 'revisor_hide_others_revisions', 'queue_query_all_posts'], + 'revision_queue' => ['revisor_lock_others_revisions', 'revisor_hide_others_revisions', 'admin_revisions_to_own_posts', 'queue_query_all_posts'], 'preview' => ['revision_preview_links', 'preview_link_type', 'compare_revisions_direct_approval'], 'revisions' => ['trigger_post_update_actions', 'copy_revision_comments_to_post', 'diff_display_strip_tags', 'past_revisions_order_by', 'display_hints'], 'notification' => ['pending_rev_notify_admin', 'pending_rev_notify_author', 'revision_update_notifications', 'rev_approval_notify_admin', 'rev_approval_notify_author', 'rev_approval_notify_revisor', 'publish_scheduled_notify_admin', 'publish_scheduled_notify_author', 'publish_scheduled_notify_revisor', 'use_notification_buffer'], @@ -436,6 +437,9 @@ function options_ui( $sitewide = false, $customize_defaults = false ) { $hint = __('This restriction applies to users who are not full editors for the post type. To enable a role, give it the list_others_revisions capability.', 'revisionary'); $this->option_checkbox( 'revisor_hide_others_revisions', $tab, $section, $hint, '' ); + $hint = __('Bypass the above restrictions for others\' revisions to logged in user\'s own posts.', 'revisionary'); + $this->option_checkbox( 'admin_revisions_to_own_posts', $tab, $section, $hint, '' ); + $hint = __('If some revisions are missing from the queue, disable a performance enhancement for better compatibility with themes and plugins.', 'revisionary'); $this->option_checkbox( 'queue_query_all_posts', $tab, $section, $hint, '' ); ?> diff --git a/defaults_rvy.php b/defaults_rvy.php index 45b908ad..19840f35 100644 --- a/defaults_rvy.php +++ b/defaults_rvy.php @@ -31,6 +31,7 @@ function rvy_default_options_sitewide() { 'revisor_role_add_custom_rolecaps' => true, 'revisor_lock_others_revisions' => true, 'revisor_hide_others_revisions' => true, + 'admin_revisions_to_own_posts' => true, 'queue_query_all_posts' => true, 'require_edit_others_drafts' => true, 'diff_display_strip_tags' => false, @@ -77,6 +78,7 @@ function rvy_default_options() { 'revisor_role_add_custom_rolecaps' => 1, 'revisor_lock_others_revisions' => 1, 'revisor_hide_others_revisions' => 1, + 'admin_revisions_to_own_posts' => 1, 'queue_query_all_posts' => 0, 'require_edit_others_drafts' => 1, 'diff_display_strip_tags' => 0, diff --git a/revisionary_main.php b/revisionary_main.php index 53323295..6b0f12d5 100644 --- a/revisionary_main.php +++ b/revisionary_main.php @@ -675,10 +675,12 @@ function flt_post_map_meta_cap($caps, $cap, $user_id, $args) { if ((!empty($type_obj->cap->edit_others_posts) && empty($current_user->allcaps[$type_obj->cap->edit_others_posts])) || (!empty($type_obj->cap->edit_published_posts) && empty($current_user->allcaps[$type_obj->cap->edit_published_posts])) ) { - if (!empty($current_user->allcaps['edit_others_revisions'])) { - $caps[] = 'edit_others_revisions'; - } else { - $caps []= 'do_not_allow'; // @todo: implement this within user_has_cap filters? + if (!rvy_get_option('admin_revisions_to_own_posts') || !current_user_can('edit_post', rvy_post_id($post_id))) { + if (!empty($current_user->allcaps['edit_others_revisions'])) { + $caps[] = 'edit_others_revisions'; + } else { + $caps []= 'do_not_allow'; // @todo: implement this within user_has_cap filters? + } } } } @@ -742,6 +744,9 @@ private function filter_caps($wp_blogcaps, $reqd_caps, $args, $internal_args = a if (!empty($object_type_obj->cap) && in_array($object_type_obj->cap->edit_others_posts, $reqd_caps)) { if (!empty($current_user->allcaps['edit_others_revisions']) || !rvy_get_option('revisor_lock_others_revisions')) { $wp_blogcaps[$object_type_obj->cap->edit_others_posts] = true; + + } elseif (rvy_get_option('admin_revisions_to_own_posts') && current_user_can('edit_post', rvy_post_id($post_id))) { + $wp_blogcaps[$object_type_obj->cap->edit_others_posts] = true; } } @@ -749,7 +754,7 @@ private function filter_caps($wp_blogcaps, $reqd_caps, $args, $internal_args = a if (!empty($args[0]) && ('edit_post' == $args[0]) && array_diff($reqd_caps, array_keys(array_filter($wp_blogcaps)))) { $this->skip_filtering = true; - if (current_user_can('edit_post', $args[2])) { + if (rvy_get_option('admin_revisions_to_own_posts') && current_user_can('edit_post', rvy_post_id($post_id))) { $wp_blogcaps = array_merge($wp_blogcaps, array_fill_keys($reqd_caps, true)); } From c6fae419bb5464641355e4fe23504f6f25e19d4e Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Wed, 29 Sep 2021 16:47:48 -0400 Subject: [PATCH 107/193] Revision Queue: revision filtering, count was incorrect when list is filtered by a post_author selection --- admin/class-list-table_rvy.php | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/admin/class-list-table_rvy.php b/admin/class-list-table_rvy.php index 2e2bf364..0f7d93a4 100644 --- a/admin/class-list-table_rvy.php +++ b/admin/class-list-table_rvy.php @@ -69,10 +69,13 @@ function do_query( $q = false ) { } if (!empty($q['post_author'])) { + // @todo: confirm separate query for post counts with post_author view filter is no longer needed + /* do_action('revisionary_queue_pre_query'); $_pre_query = new WP_Query( $qp ); $this->published_post_count_ids = $_pre_query->posts; do_action('revisionary_queue_pre_query_done'); + */ $qp['author'] = $q['post_author']; } @@ -198,24 +201,27 @@ function flt_presspermit_posts_clauses_intercept( $intercept, $clauses, $_wp_que function pre_query_where_filter($where, $args = []) { global $wpdb, $current_user, $revisionary; - if (!current_user_can('administrator') && empty($args['suppress_author_clause'])) { //} && (!defined('PRESSPERMIT_COLLAB_VERSION') || defined('PRESSPERMIT_EXTRA_REVISION_QUEUE_FILTER'))) { - $p = (!empty($args['alias'])) ? $args['alias'] : $wpdb->posts; - - $can_edit_others_types = []; + if (!current_user_can('administrator') && empty($args['suppress_author_clause']) && empty($_REQUEST['post_author'])) { //} && (!defined('PRESSPERMIT_COLLAB_VERSION') || defined('PRESSPERMIT_EXTRA_REVISION_QUEUE_FILTER'))) { + if (rvy_get_option('revisor_hide_others_revisions') && !current_user_can('list_others_revisions') ) { - foreach(array_keys($revisionary->enabled_post_types) as $post_type) { - if ($type_obj = get_post_type_object($post_type)) { - if (current_user_can($type_obj->cap->edit_others_posts)) { - $can_edit_others_types[]= $post_type; + $p = (!empty($args['alias'])) ? $args['alias'] : $wpdb->posts; + + $can_edit_others_types = []; + + foreach(array_keys($revisionary->enabled_post_types) as $post_type) { + if ($type_obj = get_post_type_object($post_type)) { + if (current_user_can($type_obj->cap->edit_others_posts)) { + $can_edit_others_types[]= $post_type; + } } } - } - $can_edit_others_types = apply_filters('revisionary_queue_edit_others_types', $can_edit_others_types); + $can_edit_others_types = apply_filters('revisionary_queue_edit_others_types', $can_edit_others_types); - $type_clause = ($can_edit_others_types) ? "OR $p.post_type IN ('" . implode("','", $can_edit_others_types) . "')" : ''; + $type_clause = ($can_edit_others_types) ? "OR $p.post_type IN ('" . implode("','", $can_edit_others_types) . "')" : ''; - $where .= $wpdb->prepare(" AND ($p.post_author = %d $type_clause)", $current_user->ID ); + $where .= $wpdb->prepare(" AND ($p.post_author = %d $type_clause)", $current_user->ID ); + } } return $where; From f7f451e3dffa9f1004ea09d46577ba5732b07779 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Wed, 29 Sep 2021 16:48:23 -0400 Subject: [PATCH 108/193] Update beta version tag --- revisionary.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/revisionary.php b/revisionary.php index 9d702c74..3590dd5c 100644 --- a/revisionary.php +++ b/revisionary.php @@ -5,7 +5,7 @@ * Description: Maintain published content with teamwork and precision using the Revisions model to submit, approve and schedule changes. * Author: PublishPress * Author URI: https://publishpress.com - * Version: 3.0-beta3.2 + * Version: 3.0-beta3.3 * Text Domain: revisionary * Domain Path: /languages/ * Min WP Version: 4.9.7 @@ -96,7 +96,7 @@ function($links, $file) // register these functions before any early exits so normal activation/deactivation can still run with RS_DEBUG register_activation_hook(__FILE__, function() { - $current_version = '3.0-beta3.2'; + $current_version = '3.0-beta3.3'; $last_ver = get_option('revisionary_last_version'); @@ -191,7 +191,7 @@ function() return; } - define('PUBLISHPRESS_REVISIONS_VERSION', '3.0-beta3.2'); + define('PUBLISHPRESS_REVISIONS_VERSION', '3.0-beta3.3'); if ( ! defined( 'RVY_VERSION' ) ) { define( 'RVY_VERSION', PUBLISHPRESS_REVISIONS_VERSION ); // back compat From fbf3597e9c390a797a4747af739cd7e9d59fbdec Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Wed, 29 Sep 2021 17:11:23 -0400 Subject: [PATCH 109/193] Ensure unsaved changes are autosaved prior to Working Copy / Scheduled Change creation --- revisionary.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/revisionary.php b/revisionary.php index 3590dd5c..213502ac 100644 --- a/revisionary.php +++ b/revisionary.php @@ -200,6 +200,10 @@ function() define ('COLS_ALL_RVY', 0); define ('COL_ID_RVY', 1); + if (!defined('AUTOSAVE_INTERVAL')) { // note: + define('AUTOSAVE_INTERVAL', 3); + } + if ( defined('RS_DEBUG') ) { include_once( dirname(__FILE__).'/lib/debug.php'); add_action( 'admin_footer', 'rvy_echo_usage_message' ); From 14397e1ede936f75be753ba5c2a4e8b7f4b6c715 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Valenti=CC=81n=20Garci=CC=81a?= Date: Thu, 30 Sep 2021 10:39:25 -0500 Subject: [PATCH 110/193] Purple styles for preview and update buttons --- admin/RevisionEditSubmitMetabox.php | 12 +-- admin/edit-revision-classic-ui_rvy.php | 20 ++--- admin/history_rvy.php | 116 ++++++++++++------------- admin/post-edit_rvy.php | 6 +- admin/post-editor-workflow-ui_rvy.php | 4 +- admin/revisionary.css | 13 +++ admin/rvy_revision-block-edit.dev.js | 6 +- admin/rvy_revision-block-edit.js | 2 +- languages/revisionary-de_DE.po | 2 +- languages/revisionary-en_US.po | 2 +- languages/revisionary-fr_FR.po | 2 +- languages/revisionary-it_IT.po | 2 +- languages/revisionary-sv_SV.po | 2 +- languages/revisionary.pot | 2 +- 14 files changed, 102 insertions(+), 89 deletions(-) diff --git a/admin/RevisionEditSubmitMetabox.php b/admin/RevisionEditSubmitMetabox.php index 52917728..631c7571 100644 --- a/admin/RevisionEditSubmitMetabox.php +++ b/admin/RevisionEditSubmitMetabox.php @@ -86,7 +86,7 @@ public static function post_save_button($post, $args) ?> - + post_type); $can_publish = current_user_can('edit_post', rvy_post_id($post->ID)); - + if ($type_obj && empty($type_obj->public)) { return; } elseif ($can_publish) { - $preview_button = ('future-revision' == $post->post_mime_type) ? __('View / Publish', 'revisionary') : __('View / Approve', 'revisionary'); + $preview_button = ('future-revision' == $post->post_mime_type) ? __('View / Publish', 'revisionary') : __('Preview / Approve', 'revisionary'); $preview_title = __('View / moderate saved revision', 'revisionary'); } else { $preview_button = __('View'); @@ -146,7 +146,7 @@ public static function post_status_display($post, $args) echo $status_label; ?>   - +
    '; - + // In split screen mode, show the title before/after side by side. if ( true === $args['show_split_view'] ) { $diff .= ''; } else { $diff .= ''; - + // In single column mode, only show the title once if unchanged. if ( $compare_from->post_title !== $compare_to->post_title ) { $diff .= ''; } } - + $diff .= ''; $diff .= '
    ' . esc_html( $compare_from->post_title ) . '' . esc_html( $compare_to->post_title ) . '' . esc_html( $compare_from->post_title ) . '
    ' . esc_html( $compare_to->post_title ) . '
    '; } - + if ( $diff ) { $return[] = array( 'id' => $field, @@ -521,13 +521,13 @@ public function getRevisionUIDiff($post, $compare_from, $compare_to) { ); } } - + $compare_fields = [ - 'post_date' => __('Post Date', 'revisionary'), - 'post_parent' => __('Post Parent', 'revisionary'), - 'menu_order' => __('Menu Order', 'revisionary'), - 'comment_status' => __('Comment Status', 'revisionary'), - 'ping_status' => __('Ping Status', 'revisionary'), + 'post_date' => __('Post Date', 'revisionary'), + 'post_parent' => __('Post Parent', 'revisionary'), + 'menu_order' => __('Menu Order', 'revisionary'), + 'comment_status' => __('Comment Status', 'revisionary'), + 'ping_status' => __('Ping Status', 'revisionary'), ]; if ( @@ -540,7 +540,7 @@ public function getRevisionUIDiff($post, $compare_from, $compare_to) { // === Add core post fields which cannot normally be versioned foreach( apply_filters('revisionary_compare_post_fields', $compare_fields) as $field => $name ) { - // don't display post date difference when it's set to a future date for scheduling + // don't display post date difference when it's set to a future date for scheduling if (strtotime($compare_to->post_date_gmt) > agp_time_gmt() || ('future-revision' == $compare_to->post_mime_type)) { continue; } @@ -564,13 +564,13 @@ public function getRevisionUIDiff($post, $compare_from, $compare_to) { $content_from = $compare_from ? apply_filters( "_wp_post_revision_field_{$field}", $compare_from->$field, $field, $compare_from, 'from' ) : ''; $content_to = apply_filters( "_wp_post_revision_field_{$field}", $compare_to->$field, $field, $compare_to, 'to' ); } - + $args = array( 'show_split_view' => true, ); $args = apply_filters( 'revision_text_diff_options', $args, $field, $compare_from, $compare_to ); - + if ($strip_tags) { $content_from = strip_tags($content_from); $content_to = strip_tags($content_to); @@ -594,13 +594,13 @@ public function getRevisionUIDiff($post, $compare_from, $compare_to) { $taxonomies[$taxonomy] = $tx_obj->labels->name; } } - + $published_id = rvy_post_id($compare_from->ID); $is_beaver = defined('FL_BUILDER_VERSION') && get_post_meta($published_id, '_fl_builder_data', true); foreach( apply_filters('revisionary_compare_taxonomies', $taxonomies) as $taxonomy => $name) { $field = $taxonomy; - + if (!$terms = get_the_terms($compare_from, $taxonomy)) { $terms = []; } @@ -630,15 +630,15 @@ public function getRevisionUIDiff($post, $compare_from, $compare_to) { 'show_split_view' => true, ); - if ($is_beaver - && (!$other_term_names && !rvy_in_revision_workflow($compare_from)) + if ($is_beaver + && (!$other_term_names && !rvy_in_revision_workflow($compare_from)) || (!$term_names && !rvy_in_revision_workflow($compare_to)) ) { continue; } $args = apply_filters( 'revision_text_diff_options', $args, $field, $compare_from, $compare_to ); - + if ($diff = wp_text_diff( $content_from, $content_to, $args )) { $return[] = array( 'id' => $field, @@ -689,14 +689,14 @@ public function getRevisionUIDiff($post, $compare_from, $compare_to) { } else { $content_from = ''; } - + $val = get_post_meta($compare_to->ID, $field, true); $content_to = maybe_serialize(apply_filters( "_wp_post_revision_field_{$field}", $val, $field, $compare_to, 'to' )); - + if ('_thumbnail_id' == $field) { $content_from = ($content_from) ? "$content_from (" . wp_get_attachment_image_url($content_from, 'full') . ')' : ''; $content_to = ($content_to) ? "$content_to (" . wp_get_attachment_image_url($content_to, 'full') . ')' : ''; - + // suppress false alarm for featured image clearance if ($content_from && !$content_to) { continue; @@ -710,7 +710,7 @@ public function getRevisionUIDiff($post, $compare_from, $compare_to) { if ($content_from && !rvy_in_revision_workflow($compare_from)) { $content_from = ''; } - + if ($content_to && !$content_from) { if ($parent_post = get_post($published_id)) { $content_from = $parent_post->post_name; @@ -757,16 +757,16 @@ private function loadAuthorInfo($revision, $use_multiple_authors, $args = []) { foreach($authors as $_author) { $author_ids []= $_author->ID; } - } - + } + if (!$use_multiple_authors || !$author_ids) { $author_ids = [$revision->post_author]; - + if ($_author = new WP_User($revision->post_author)) { $authors = [$_author]; } } - + sort($author_ids); $author_key = implode(",", $author_ids); @@ -824,7 +824,7 @@ private function prepare_revisions_for_js( $post, $selected_revision_id, $from = unset( $revisions[ $revision_id ] ); } } - + $revisions = [$post->ID => $post] + $revisions; } @@ -833,7 +833,7 @@ private function prepare_revisions_for_js( $post, $selected_revision_id, $from = cache_users( wp_list_pluck( $revisions, 'post_author' ) ); $type_obj = get_post_type_object($post->post_type); - + $can_restore = current_user_can('edit_post', $post->ID); $current_id = false; @@ -864,7 +864,7 @@ private function prepare_revisions_for_js( $post, $selected_revision_id, $from = if ($current && !$revisions_disabled && !defined('RVY_LEGACY_COMPARE_REVISIONS_AUTHOR_DISPLAY')) { if ($past_revisions = wp_get_post_revisions($post->ID, ['orderby' => 'ID', 'order' => 'DESC'])) { - // Ignore autosaves. + // Ignore autosaves. foreach($past_revisions as $id => $past_revision) { if ( false !== strpos( $past_revision->post_name, "{$past_revision->post_parent}-autosave" ) ) { unset($past_revisions[$id]); @@ -884,7 +884,7 @@ private function prepare_revisions_for_js( $post, $selected_revision_id, $from = // Until Reject button is implemented, just route to Preview screen so revision can be edited / deleted if necessary if ($current || rvy_in_revision_workflow($revision)) { $restore_link = rvy_preview_url($revision); // default to revision preview link - + if ($can_restore) { $published_post_id = rvy_post_id($revision->ID); @@ -894,10 +894,10 @@ private function prepare_revisions_for_js( $post, $selected_revision_id, $from = //if (in_array($revision->post_mime_type, ['draft-revision'])) { // $restore_link = wp_nonce_url( rvy_admin_url("admin.php?page=rvy-revisions&revision={$revision->ID}&action=submit$redirect_arg"), "submit-post_$published_post_id|{$revision->ID}" ); - + if (in_array($revision->post_mime_type, ['draft-revision', 'pending-revision'])) { $restore_link = wp_nonce_url( rvy_admin_url("admin.php?page=rvy-revisions&revision={$revision->ID}&action=approve$redirect_arg"), "approve-post_$published_post_id|{$revision->ID}" ); - + } elseif (in_array($revision->post_mime_type, ['future-revision'])) { $restore_link = wp_nonce_url( rvy_admin_url("admin.php?page=rvy-revisions&revision={$revision->ID}&action=publish$redirect_arg"), "publish-post_$published_post_id|{$revision->ID}" ); } @@ -905,7 +905,7 @@ private function prepare_revisions_for_js( $post, $selected_revision_id, $from = if (current_user_can('edit_post', $revision->ID)) { $edit_url = rvy_admin_url("post.php?action=edit&post=$revision->ID"); } - } + } } } else { $restore_link = ''; @@ -1060,7 +1060,7 @@ function actRevisionDiffScripts() { } // For non-public types, force direct approval because preview is not available - $direct_approval = (($type_obj && !is_post_type_viewable($type_obj)) || rvy_get_option('compare_revisions_direct_approval')) + $direct_approval = (($type_obj && !is_post_type_viewable($type_obj)) || rvy_get_option('compare_revisions_direct_approval')) && current_user_can('edit_post', rvy_post_id($post_id)); if ($post_id) { @@ -1070,7 +1070,7 @@ function actRevisionDiffScripts() { } if (empty($type_obj) || $can_approve) { - $button_label = $direct_approval ? __('Approve', 'revisionary') : __('View / Approve', 'revisionary'); + $button_label = $direct_approval ? __('Approve', 'revisionary') : __('Preview / Approve', 'revisionary'); } else { $button_label = __('View', 'revisionary'); } @@ -1097,7 +1097,7 @@ function actRevisionDiffScripts() { if(!$('input.edit-revision').length) { setTimeout(function() { rvySearchParams = new URLSearchParams(window.location.search); - + rvyRevisionID = rvySearchParams.get('to'); if (!rvyRevisionID) { @@ -1133,11 +1133,11 @@ function actRevisionDiffScripts() { function actPastRevisionDiffScripts() { global $revisionary; - + if (did_action('rvy_compare_revisions')) { return; } - + $post_id = (isset($_REQUEST['revision'])) ? (int) $_REQUEST['revision'] : 0; if (!$post_id) { $post_id = (isset($_REQUEST['to'])) ? (int) $_REQUEST['to'] : 0; @@ -1165,14 +1165,14 @@ function actPastRevisionDiffScripts() { $show_preview_link = rvy_get_option('revision_preview_links') || current_user_can('administrator') || is_super_admin(); if ($show_preview_link) { - $preview_label = (empty($type_obj) || $can_edit) + $preview_label = (empty($type_obj) || $can_edit) ? __('Preview / Restore', 'revisionary') : __('Preview'); $preview_url = rvy_preview_url($post); } - $manage_label = (empty($type_obj) || $can_edit) + $manage_label = (empty($type_obj) || $can_edit) ? __('Manage', 'revisionary') : __('List', 'revisionary'); @@ -1185,7 +1185,7 @@ function actPastRevisionDiffScripts() { var RvyDiffUI = function() { rvySearchParams = new URLSearchParams(window.location.search); - + var rvyRevisionID = rvySearchParams.get('to'); if (!rvyRevisionID) { diff --git a/admin/post-edit_rvy.php b/admin/post-edit_rvy.php index 0dad0c53..45ea0e26 100644 --- a/admin/post-edit_rvy.php +++ b/admin/post-edit_rvy.php @@ -76,7 +76,7 @@ public function fltPreviewLabel($preview_caption) { } if (current_user_can('edit_post', rvy_post_id($post->ID))) { - $preview_caption = ('future-revision' == $post->post_status) ? __('View / Publish', 'revisionary') : __('View / Approve', 'revisionary'); + $preview_caption = ('future-revision' == $post->post_status) ? __('View / Publish', 'revisionary') : __('Preview / Approve', 'revisionary'); } elseif ($type_obj && !empty($type_obj->public)) { $preview_caption = __('View'); } @@ -104,7 +104,7 @@ public function fltPreviewTitle($preview_title) { function act_post_submit_revisions_links() { global $post; - + // These links do not apply when editing a revision if (rvy_in_revision_workflow($post) || !current_user_can('edit_post', $post->ID) || !rvy_is_supported_post_type($post->post_type)) { return; @@ -152,7 +152,7 @@ function fltAllowBrowseRevisionsLink($wp_blogcaps, $reqd_caps, $args) { } } } - + } return $wp_blogcaps; diff --git a/admin/post-editor-workflow-ui_rvy.php b/admin/post-editor-workflow-ui_rvy.php index 60813d5f..0122a6ef 100644 --- a/admin/post-editor-workflow-ui_rvy.php +++ b/admin/post-editor-workflow-ui_rvy.php @@ -38,7 +38,7 @@ public static function revisionLinkParams($args = []) { $vars['viewTitle'] = ''; } elseif ($can_publish) { - $vars['viewCaption'] = ('future-revision' == $post->post_mime_type) ? __('View / Publish', 'revisionary') : __('View / Approve', 'revisionary'); + $vars['viewCaption'] = ('future-revision' == $post->post_mime_type) ? __('View / Publish', 'revisionary') : __('Preview / Approve', 'revisionary'); $vars['viewTitle'] = __('View / moderate saved revision', 'revisionary'); } else { $vars['viewCaption'] = __('View'); @@ -133,7 +133,7 @@ public static function postLinkParams($args = []) { if ($do_scheduled_revisions && $_revisions = rvy_get_post_revisions($post->ID, 'future-revision', ['orderby' => 'ID', 'order' => 'ASC'])) { $status_obj = get_post_status_object('future-revision'); $vars['scheduledRevisionsCaption'] = sprintf(_n(' %s Scheduled Change', ' %s Scheduled Changes', count($_revisions), 'revisionary'), count($_revisions)); - + $vars['scheduledRevisionsURL'] = rvy_admin_url("revision.php?post_id=$post->ID&revision=future-revision"); } else { $vars['scheduledRevisionsURL'] = ''; diff --git a/admin/revisionary.css b/admin/revisionary.css index 662a037e..58021ffd 100644 --- a/admin/revisionary.css +++ b/admin/revisionary.css @@ -605,6 +605,19 @@ font-weight: bold; box-shadow: inset 0 0 0 1px #fff, 0 0 0 var(--wp-admin-border-width-focus) #483f6b; } +/* Secondary button in purple requires these 3 classes together for "+'"+"")}if(RvyApprovalLocked!=$("button.revision-approve").prop("disabled")){if(RvyApprovalLocked){$("button.revision-approve").html("Revision needs update.")}else{$("button.revision-approve").html(rvyObjEdit[rvyObjEdit.currentStatus+"ActionCaption"])}}$("button.revision-approve").prop("disabled",RvyApprovalLocked&&"pending"==rvyObjEdit.currentStatus);$(".edit-post-post-schedule__toggle").after('");if(rvyObjEdit[rvyObjEdit.currentStatus+"DeletionURL"]){$("button.editor-post-trash").wrap('')}}$("button.post-schedule-footnote").toggle(!/\d/.test($("button.edit-post-post-schedule__toggle").html()))};var RvyUIInterval=setInterval(RvySubmissionUI,100);var RvyApprovalLocked=false;$(document).on("click","div.edit-post-visual-editor *, div.editor-inserter *",function(){if("pending"==rvyObjEdit.currentStatus){RvyApprovalLocked=true;$("button.revision-approve").prop("disabled",true)}});$(document).on("click","button.edit-post-post-schedule__toggle",function(){RvyApprovalLocked=true;$("button.revision-approve").prop("disabled",true)});$(document).on("click","button.editor-post-save-draft",function(){RvyApprovalLocked=false;$("button.revision-approve").prop("disabled",false);$("button.revision-approve").html(rvyObjEdit[rvyObjEdit.currentStatus+"ActionCaption"])});function RvyGetRandomInt(max){return Math.floor(Math.random()*max)}$(document).on("click","div.postbox-container",function(){$("button.revision-approve").prop("disabled","disabled")});$(document).on("click","button.revision-approve",function(){if(!rvyObjEdit[rvyObjEdit.currentStatus+"ActionURL"]){var revisionaryCreateDone=function(){$(".revision-approve").hide();$(".revision-created").show();rvyObjEdit.currentStatus="pending";$(".rvy-current-status").html(rvyObjEdit[rvyObjEdit.currentStatus+"StatusCaption"]);$("a.revision-edit").attr("href",rvyObjEdit[rvyObjEdit.currentStatus+"CompletedURL"]).show()};var revisionaryCreateError=function(data,txtStatus){$("div.rvy-creation-ui").html(rvyObjEdit[rvyObjEdit.currentStatus+"ErrorCaption"])};var data={rvy_ajax_field:rvyObjEdit[rvyObjEdit.currentStatus+"AjaxField"],rvy_ajax_value:wp.data.select("core/editor").getCurrentPostId(),nc:RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryCreateDone,error:revisionaryCreateError})}});var RvyRecaptionSaveDraft=function(){if($("button.editor-post-save-draft:not(.rvy-recaption)").length){RvyRecaptionElement("button.editor-post-save-draft:not(.rvy-recaption)",rvyObjEdit.saveRevision);$("button.editor-post-save-draft:not(.rvy-recaption)").addClass("rvy-recaption")}if(($("div.edit-post-header__settings a.editor-post-preview:visible").length||$("div.block-editor-post-preview__dropdown button.block-editor-post-preview__button-toggle:visible").length)&&!$("a.rvy-post-preview").length){if(rvyObjEdit.viewURL){original=$("div.edit-post-header__settings a.editor-post-preview");$(original).after(original.clone().attr("href",rvyObjEdit.viewURL).attr("target","_blank").removeClass("editor-post-preview is-tertiary").addClass("rvy-post-preview is-primary ppr-purple-button"));$(original).hide()}if(rvyObjEdit.viewCaption){RvyRecaptionElement("div.edit-post-header__settings a.rvy-post-preview",rvyObjEdit.viewCaption,"visibility")}if(rvyObjEdit.viewTitle){$("div.edit-post-header__settings a.rvy-post-preview").attr("title",rvyObjEdit.viewTitle)}}else{if(!rvyObjEdit.multiPreviewActive){if(!$("a.editor-post-preview").next("a.rvy-post-preview").length){$("a.rvy-post-preview").insertAfter($("a.editor-post-preview"))}if(rvyObjEdit.previewTitle&&!$("a.editor-post-preview").attr("title")){$("div.edit-post-header__settings a.editor-post-preview").attr("title",rvyObjEdit.previewTitle)}}}if(rvyObjEdit.revisionEdits&&$("div.edit-post-sidebar a.editor-post-last-revision__title:visible").length&&!$("div.edit-post-sidebar a.editor-post-last-revision__title.rvy-recaption").length){$("div.edit-post-sidebar a.editor-post-last-revision__title").html(rvyObjEdit.revisionEdits);$("div.edit-post-sidebar a.editor-post-last-revision__title").addClass("rvy-recaption")}};var RvyRecaptionSaveDraftInterval=setInterval(RvyRecaptionSaveDraft,100)}); +jQuery(document).ready(function($){function RvyRecaptionElement(btnSelector,btnCaption,btnIcon=""){let node=document.querySelector(btnSelector);if(node){document.querySelector(btnSelector).innerText=`${btnCaption}`;if(btnIcon){document.querySelector(btnSelector).innerHTML=`${btnCaption}`}}}function RvySetPublishButtonCaption(caption,waitForSaveDraftButton,forceRegen,timeout){if(caption==""&&typeof rvyObjEdit["publishCaptionCurrent"]!="undefined"){caption=rvyObjEdit.publishCaptionCurrent}else{rvyObjEdit.publishCaptionCurrent=caption}if(typeof waitForSaveDraftButton=="undefined"){waitForSaveDraftButton=false}if((!waitForSaveDraftButton||$("button.editor-post-switch-to-draft").filter(":visible").length||$("button.editor-post-save-draft").filter(":visible").length)&&$("button.editor-post-publish-button").length){RvyRecaptionElement("button.editor-post-publish-button",caption)}}var RvyDetectPublishOptionsDivClosureInterval="";var RvyDetectPublishOptionsDiv=function(){if($("div.components-modal__header").length){clearInterval(RvyDetectPublishOptionsDivInterval);if($("span.pp-recaption-button").first()){rvyObjEdit.overrideColor=$("span.pp-recaption-button").first().css("color")}var RvyDetectPublishOptionsClosure=function(){if(!$("div.components-modal__header").length){clearInterval(RvyDetectPublishOptionsDivClosureInterval);$("span.pp-recaption-button").hide();RvyInitInterval=setInterval(RvyInitializeBlockEditorModifications,50);RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,1e3)}};RvyDetectPublishOptionsDivClosureInterval=setInterval(RvyDetectPublishOptionsClosure,200)}};var RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,1e3);rvyObjEdit.publishCaptionCurrent=rvyObjEdit.publish;var RvyInitializeBlockEditorModifications=function(){if(($("button.editor-post-publish-button").length||$("button.editor-post-publish-panel__toggle").length)&&($("button.editor-post-switch-to-draft").length||$("button.editor-post-save-draft").length)){clearInterval(RvyInitInterval);if($("button.editor-post-publish-panel__toggle").length){if(typeof rvyObjEdit.prePublish!="undefined"&&rvyObjEdit.prePublish){RvyRecaptionElement("button.editor-post-publish-panel__toggle",rvyObjEdit.prePublish)}$(document).on("click","button.editor-post-publish-panel__toggle,span.pp-recaption-prepublish-button",function(){RvySetPublishButtonCaption("",false,true)})}else{RvySetPublishButtonCaption(rvyObjEdit.publish,false,true)}$("select.editor-post-author__select").parent().hide();$("button.editor-post-trash").parent().show();$("button.editor-post-switch-to-draft").hide();$("div.components-notice-list").hide()}if($("button.editor-post-publish-button").length||$("button.editor-post-publish-panel__toggle").length){$("button.editor-post-publish-button").hide();$("button.editor-post-publish-panel__toggle").hide()}};var RvyInitInterval=setInterval(RvyInitializeBlockEditorModifications,50);var RvyHideElements=function(){var ediv="div.edit-post-sidebar ";if($(ediv+"div.edit-post-post-visibility,"+ediv+"div.editor-post-link,"+ediv+"select.editor-post-author__select:visible,"+ediv+'div.components-base-control__field input[type="checkbox"]:visible,'+ediv+"button.editor-post-switch-to-draft,"+ediv+"button.editor-post-trash").length){$(ediv+"select.editor-post-author__select").parent().hide();$(ediv+"button.editor-post-trash").parent().show();$(ediv+"button.editor-post-switch-to-draft").hide();$(ediv+"div.editor-post-link").parent().hide();$(ediv+"div.components-notice-list").hide();if(!rvyObjEdit.scheduledRevisionsEnabled){$(ediv+"div.edit-post-post-schedule").hide()}$(ediv+"#publishpress-notifications").hide();$("#icl_div").closest("div.edit-post-meta-boxes-area").hide()}if($("button.editor-post-publish-button").length){$("button.editor-post-publish-button").hide()}};var RvyHideInterval=setInterval(RvyHideElements,50);var RvySubmissionUI=function(){if($("div.edit-post-post-schedule").length){var refSelector="div.edit-post-post-schedule"}else{var refSelector="div.edit-post-post-visibility"}if(rvyObjEdit.ajaxurl&&!$("div.edit-post-revision-status").length&&$(refSelector).length){$(refSelector).before('
    '+""+rvyObjEdit.statusLabel+""+'
    '+rvyObjEdit[rvyObjEdit.currentStatus+"StatusCaption"]+"
    "+"
    ");if(rvyObjEdit[rvyObjEdit.currentStatus+"ActionURL"]){var url=rvyObjEdit[rvyObjEdit.currentStatus+"ActionURL"]}else{var url="javascript:void(0)"}if(rvyObjEdit[rvyObjEdit.currentStatus+"ActionCaption"]){$(refSelector).after('")}if(RvyApprovalLocked!=$("button.revision-approve").prop("disabled")){if(RvyApprovalLocked){$("button.revision-approve").html("Revision needs update.")}else{$("button.revision-approve").html(rvyObjEdit[rvyObjEdit.currentStatus+"ActionCaption"])}}$("button.revision-approve").prop("disabled",RvyApprovalLocked&&"pending"==rvyObjEdit.currentStatus);$(".edit-post-post-schedule__toggle").after('");if(rvyObjEdit[rvyObjEdit.currentStatus+"DeletionURL"]){$("button.editor-post-trash").wrap('')}}$("button.post-schedule-footnote").toggle(!/\d/.test($("button.edit-post-post-schedule__toggle").html()))};var RvyUIInterval=setInterval(RvySubmissionUI,100);var RvyApprovalLocked=false;$(document).on("click","div.edit-post-visual-editor *, div.editor-inserter *",function(){if("pending"==rvyObjEdit.currentStatus){RvyApprovalLocked=true;$("button.revision-approve").prop("disabled",true)}});$(document).on("click","button.edit-post-post-schedule__toggle",function(){RvyApprovalLocked=true;$("button.revision-approve").prop("disabled",true)});$(document).on("click","button.editor-post-save-draft",function(){RvyApprovalLocked=false;$("button.revision-approve").prop("disabled",false);$("button.revision-approve").html(rvyObjEdit[rvyObjEdit.currentStatus+"ActionCaption"])});function RvyGetRandomInt(max){return Math.floor(Math.random()*max)}$(document).on("click","div.postbox-container",function(){$("button.revision-approve").prop("disabled","disabled")});$(document).on("click","button.revision-approve",function(){if(!rvyObjEdit[rvyObjEdit.currentStatus+"ActionURL"]){var revisionaryCreateDone=function(){$(".revision-approve").hide();$(".revision-created").show();rvyObjEdit.currentStatus="pending";$(".rvy-current-status").html(rvyObjEdit[rvyObjEdit.currentStatus+"StatusCaption"]);$("a.revision-edit").attr("href",rvyObjEdit[rvyObjEdit.currentStatus+"CompletedURL"]).show()};var revisionaryCreateError=function(data,txtStatus){$("div.rvy-creation-ui").html(rvyObjEdit[rvyObjEdit.currentStatus+"ErrorCaption"])};var data={rvy_ajax_field:rvyObjEdit[rvyObjEdit.currentStatus+"AjaxField"],rvy_ajax_value:wp.data.select("core/editor").getCurrentPostId(),nc:RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryCreateDone,error:revisionaryCreateError})}});var RvyRecaptionSaveDraft=function(){if($("button.editor-post-save-draft:not(.rvy-recaption)").length){RvyRecaptionElement("button.editor-post-save-draft:not(.rvy-recaption)",rvyObjEdit.saveRevision);$("button.editor-post-save-draft:not(.rvy-recaption)").removeClass("is-tertiary").addClass("ppr-purple-button is-secondary rvy-recaption")}if(($("div.edit-post-header__settings a.editor-post-preview:visible").length||$("div.block-editor-post-preview__dropdown button.block-editor-post-preview__button-toggle:visible").length)&&!$("a.rvy-post-preview").length){if(rvyObjEdit.viewURL){original=$("div.edit-post-header__settings a.editor-post-preview");$(original).after(original.clone().attr("href",rvyObjEdit.viewURL).attr("target","_blank").removeClass("editor-post-preview is-tertiary").addClass("rvy-post-preview is-secondary ppr-purple-button"));$(original).hide()}if(rvyObjEdit.viewCaption){RvyRecaptionElement("div.edit-post-header__settings a.rvy-post-preview",rvyObjEdit.viewCaption)}if(rvyObjEdit.viewTitle){$("div.edit-post-header__settings a.rvy-post-preview").attr("title",rvyObjEdit.viewTitle)}}else{if(!rvyObjEdit.multiPreviewActive){if(!$("a.editor-post-preview").next("a.rvy-post-preview").length){$("a.rvy-post-preview").insertAfter($("a.editor-post-preview"))}if(rvyObjEdit.previewTitle&&!$("a.editor-post-preview").attr("title")){$("div.edit-post-header__settings a.editor-post-preview").attr("title",rvyObjEdit.previewTitle)}}}if(rvyObjEdit.revisionEdits&&$("div.edit-post-sidebar a.editor-post-last-revision__title:visible").length&&!$("div.edit-post-sidebar a.editor-post-last-revision__title.rvy-recaption").length){$("div.edit-post-sidebar a.editor-post-last-revision__title").html(rvyObjEdit.revisionEdits);$("div.edit-post-sidebar a.editor-post-last-revision__title").addClass("rvy-recaption")}};var RvyRecaptionSaveDraftInterval=setInterval(RvyRecaptionSaveDraft,100)}); diff --git a/languages/revisionary-de_DE.po b/languages/revisionary-de_DE.po index da68b154..f403dd02 100644 --- a/languages/revisionary-de_DE.po +++ b/languages/revisionary-de_DE.po @@ -809,7 +809,7 @@ msgstr "M j, Y @ H:i" #: F:\snapshot\revisionary/admin/post-edit_rvy.php:96 #: F:\snapshot\revisionary/admin/post-edit_rvy.php:249 #: F:\snapshot\revisionary/admin/PostEditSubmitMetabox.php:173 -msgid "View / Approve" +msgid "Preview / Approve" msgstr "Ansehen / Genehmigen" #: F:\snapshot\revisionary/admin/history_rvy.php:1119 diff --git a/languages/revisionary-en_US.po b/languages/revisionary-en_US.po index 794cdd36..5c17e4e5 100644 --- a/languages/revisionary-en_US.po +++ b/languages/revisionary-en_US.po @@ -48,7 +48,7 @@ msgstr "" #: admin/RevisionEditSubmitMetabox.php:114 #: admin/edit-revision-classic-ui_rvy.php:99 admin/history_rvy.php:1064 #: admin/post-edit_rvy.php:79 admin/post-editor-workflow-ui_rvy.php:41 -msgid "View / Approve" +msgid "Preview / Approve" msgstr "" #: admin/RevisionEditSubmitMetabox.php:115 diff --git a/languages/revisionary-fr_FR.po b/languages/revisionary-fr_FR.po index e948f84c..7620f71e 100644 --- a/languages/revisionary-fr_FR.po +++ b/languages/revisionary-fr_FR.po @@ -939,7 +939,7 @@ msgstr "Afficher / révision modérée enregistrée" #: admin/post-edit_rvy.php:96 admin/post-edit_rvy.php:249 #: admin/history_rvy.php:1036 admin/PostEditSubmitMetabox.php:173 #: admin/post-edit-block-ui_rvy.php:43 -msgid "View / Approve" +msgid "Preview / Approve" msgstr "Afficher / Approuver" #: admin/post-edit_rvy.php:96 admin/post-edit_rvy.php:249 diff --git a/languages/revisionary-it_IT.po b/languages/revisionary-it_IT.po index 83f809c9..1c76f172 100644 --- a/languages/revisionary-it_IT.po +++ b/languages/revisionary-it_IT.po @@ -939,7 +939,7 @@ msgstr "Visualizza / Moderata revisione salvata" #: admin/post-edit_rvy.php:96 admin/post-edit_rvy.php:249 #: admin/history_rvy.php:1036 admin/PostEditSubmitMetabox.php:173 #: admin/post-edit-block-ui_rvy.php:43 -msgid "View / Approve" +msgid "Preview / Approve" msgstr "Visualizza/ Approva" #: admin/post-edit_rvy.php:96 admin/post-edit_rvy.php:249 diff --git a/languages/revisionary-sv_SV.po b/languages/revisionary-sv_SV.po index 3612b278..cac79926 100644 --- a/languages/revisionary-sv_SV.po +++ b/languages/revisionary-sv_SV.po @@ -722,7 +722,7 @@ msgstr "Visa" #: admin/post-edit_rvy.php:96 admin/post-edit_rvy.php:251 #: admin/history_rvy.php:1037 admin/PostEditSubmitMetabox.php:173 #: admin/post-edit-block-ui_rvy.php:43 -msgid "View / Approve" +msgid "Preview / Approve" msgstr "Visa / Godkänn" #: admin/post-edit_rvy.php:96 admin/post-edit_rvy.php:251 diff --git a/languages/revisionary.pot b/languages/revisionary.pot index dec319ee..b2ecec75 100644 --- a/languages/revisionary.pot +++ b/languages/revisionary.pot @@ -47,7 +47,7 @@ msgstr "" #: admin/RevisionEditSubmitMetabox.php:114 #: admin/edit-revision-classic-ui_rvy.php:99 admin/history_rvy.php:1064 #: admin/post-edit_rvy.php:79 admin/post-editor-workflow-ui_rvy.php:41 -msgid "View / Approve" +msgid "Preview / Approve" msgstr "" #: admin/RevisionEditSubmitMetabox.php:115 From c6f046c58e2f71a7eccab4ebd2526c2116264044 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Valenti=CC=81n=20Garci=CC=81a?= Date: Thu, 30 Sep 2021 10:42:09 -0500 Subject: [PATCH 111/193] Use tertiary style for "Update revision" --- admin/rvy_revision-block-edit.dev.js | 2 +- admin/rvy_revision-block-edit.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/admin/rvy_revision-block-edit.dev.js b/admin/rvy_revision-block-edit.dev.js index 7b2ca504..99c9eb92 100644 --- a/admin/rvy_revision-block-edit.dev.js +++ b/admin/rvy_revision-block-edit.dev.js @@ -243,7 +243,7 @@ jQuery(document).ready( function($) { var RvyRecaptionSaveDraft = function() { if ($('button.editor-post-save-draft:not(.rvy-recaption)').length) { RvyRecaptionElement('button.editor-post-save-draft:not(.rvy-recaption)', rvyObjEdit.saveRevision); - $('button.editor-post-save-draft:not(.rvy-recaption)').removeClass('is-tertiary').addClass('ppr-purple-button is-secondary rvy-recaption'); + $('button.editor-post-save-draft:not(.rvy-recaption)').addClass('ppr-purple-button rvy-recaption'); } if (($('div.edit-post-header__settings a.editor-post-preview:visible').length || $('div.block-editor-post-preview__dropdown button.block-editor-post-preview__button-toggle:visible').length) && !$('a.rvy-post-preview').length) { diff --git a/admin/rvy_revision-block-edit.js b/admin/rvy_revision-block-edit.js index d2142057..4d55a3da 100644 --- a/admin/rvy_revision-block-edit.js +++ b/admin/rvy_revision-block-edit.js @@ -1 +1 @@ -jQuery(document).ready(function($){function RvyRecaptionElement(btnSelector,btnCaption,btnIcon=""){let node=document.querySelector(btnSelector);if(node){document.querySelector(btnSelector).innerText=`${btnCaption}`;if(btnIcon){document.querySelector(btnSelector).innerHTML=`${btnCaption}`}}}function RvySetPublishButtonCaption(caption,waitForSaveDraftButton,forceRegen,timeout){if(caption==""&&typeof rvyObjEdit["publishCaptionCurrent"]!="undefined"){caption=rvyObjEdit.publishCaptionCurrent}else{rvyObjEdit.publishCaptionCurrent=caption}if(typeof waitForSaveDraftButton=="undefined"){waitForSaveDraftButton=false}if((!waitForSaveDraftButton||$("button.editor-post-switch-to-draft").filter(":visible").length||$("button.editor-post-save-draft").filter(":visible").length)&&$("button.editor-post-publish-button").length){RvyRecaptionElement("button.editor-post-publish-button",caption)}}var RvyDetectPublishOptionsDivClosureInterval="";var RvyDetectPublishOptionsDiv=function(){if($("div.components-modal__header").length){clearInterval(RvyDetectPublishOptionsDivInterval);if($("span.pp-recaption-button").first()){rvyObjEdit.overrideColor=$("span.pp-recaption-button").first().css("color")}var RvyDetectPublishOptionsClosure=function(){if(!$("div.components-modal__header").length){clearInterval(RvyDetectPublishOptionsDivClosureInterval);$("span.pp-recaption-button").hide();RvyInitInterval=setInterval(RvyInitializeBlockEditorModifications,50);RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,1e3)}};RvyDetectPublishOptionsDivClosureInterval=setInterval(RvyDetectPublishOptionsClosure,200)}};var RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,1e3);rvyObjEdit.publishCaptionCurrent=rvyObjEdit.publish;var RvyInitializeBlockEditorModifications=function(){if(($("button.editor-post-publish-button").length||$("button.editor-post-publish-panel__toggle").length)&&($("button.editor-post-switch-to-draft").length||$("button.editor-post-save-draft").length)){clearInterval(RvyInitInterval);if($("button.editor-post-publish-panel__toggle").length){if(typeof rvyObjEdit.prePublish!="undefined"&&rvyObjEdit.prePublish){RvyRecaptionElement("button.editor-post-publish-panel__toggle",rvyObjEdit.prePublish)}$(document).on("click","button.editor-post-publish-panel__toggle,span.pp-recaption-prepublish-button",function(){RvySetPublishButtonCaption("",false,true)})}else{RvySetPublishButtonCaption(rvyObjEdit.publish,false,true)}$("select.editor-post-author__select").parent().hide();$("button.editor-post-trash").parent().show();$("button.editor-post-switch-to-draft").hide();$("div.components-notice-list").hide()}if($("button.editor-post-publish-button").length||$("button.editor-post-publish-panel__toggle").length){$("button.editor-post-publish-button").hide();$("button.editor-post-publish-panel__toggle").hide()}};var RvyInitInterval=setInterval(RvyInitializeBlockEditorModifications,50);var RvyHideElements=function(){var ediv="div.edit-post-sidebar ";if($(ediv+"div.edit-post-post-visibility,"+ediv+"div.editor-post-link,"+ediv+"select.editor-post-author__select:visible,"+ediv+'div.components-base-control__field input[type="checkbox"]:visible,'+ediv+"button.editor-post-switch-to-draft,"+ediv+"button.editor-post-trash").length){$(ediv+"select.editor-post-author__select").parent().hide();$(ediv+"button.editor-post-trash").parent().show();$(ediv+"button.editor-post-switch-to-draft").hide();$(ediv+"div.editor-post-link").parent().hide();$(ediv+"div.components-notice-list").hide();if(!rvyObjEdit.scheduledRevisionsEnabled){$(ediv+"div.edit-post-post-schedule").hide()}$(ediv+"#publishpress-notifications").hide();$("#icl_div").closest("div.edit-post-meta-boxes-area").hide()}if($("button.editor-post-publish-button").length){$("button.editor-post-publish-button").hide()}};var RvyHideInterval=setInterval(RvyHideElements,50);var RvySubmissionUI=function(){if($("div.edit-post-post-schedule").length){var refSelector="div.edit-post-post-schedule"}else{var refSelector="div.edit-post-post-visibility"}if(rvyObjEdit.ajaxurl&&!$("div.edit-post-revision-status").length&&$(refSelector).length){$(refSelector).before('
    '+""+rvyObjEdit.statusLabel+""+'
    '+rvyObjEdit[rvyObjEdit.currentStatus+"StatusCaption"]+"
    "+"
    ");if(rvyObjEdit[rvyObjEdit.currentStatus+"ActionURL"]){var url=rvyObjEdit[rvyObjEdit.currentStatus+"ActionURL"]}else{var url="javascript:void(0)"}if(rvyObjEdit[rvyObjEdit.currentStatus+"ActionCaption"]){$(refSelector).after('")}if(RvyApprovalLocked!=$("button.revision-approve").prop("disabled")){if(RvyApprovalLocked){$("button.revision-approve").html("Revision needs update.")}else{$("button.revision-approve").html(rvyObjEdit[rvyObjEdit.currentStatus+"ActionCaption"])}}$("button.revision-approve").prop("disabled",RvyApprovalLocked&&"pending"==rvyObjEdit.currentStatus);$(".edit-post-post-schedule__toggle").after('");if(rvyObjEdit[rvyObjEdit.currentStatus+"DeletionURL"]){$("button.editor-post-trash").wrap('')}}$("button.post-schedule-footnote").toggle(!/\d/.test($("button.edit-post-post-schedule__toggle").html()))};var RvyUIInterval=setInterval(RvySubmissionUI,100);var RvyApprovalLocked=false;$(document).on("click","div.edit-post-visual-editor *, div.editor-inserter *",function(){if("pending"==rvyObjEdit.currentStatus){RvyApprovalLocked=true;$("button.revision-approve").prop("disabled",true)}});$(document).on("click","button.edit-post-post-schedule__toggle",function(){RvyApprovalLocked=true;$("button.revision-approve").prop("disabled",true)});$(document).on("click","button.editor-post-save-draft",function(){RvyApprovalLocked=false;$("button.revision-approve").prop("disabled",false);$("button.revision-approve").html(rvyObjEdit[rvyObjEdit.currentStatus+"ActionCaption"])});function RvyGetRandomInt(max){return Math.floor(Math.random()*max)}$(document).on("click","div.postbox-container",function(){$("button.revision-approve").prop("disabled","disabled")});$(document).on("click","button.revision-approve",function(){if(!rvyObjEdit[rvyObjEdit.currentStatus+"ActionURL"]){var revisionaryCreateDone=function(){$(".revision-approve").hide();$(".revision-created").show();rvyObjEdit.currentStatus="pending";$(".rvy-current-status").html(rvyObjEdit[rvyObjEdit.currentStatus+"StatusCaption"]);$("a.revision-edit").attr("href",rvyObjEdit[rvyObjEdit.currentStatus+"CompletedURL"]).show()};var revisionaryCreateError=function(data,txtStatus){$("div.rvy-creation-ui").html(rvyObjEdit[rvyObjEdit.currentStatus+"ErrorCaption"])};var data={rvy_ajax_field:rvyObjEdit[rvyObjEdit.currentStatus+"AjaxField"],rvy_ajax_value:wp.data.select("core/editor").getCurrentPostId(),nc:RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryCreateDone,error:revisionaryCreateError})}});var RvyRecaptionSaveDraft=function(){if($("button.editor-post-save-draft:not(.rvy-recaption)").length){RvyRecaptionElement("button.editor-post-save-draft:not(.rvy-recaption)",rvyObjEdit.saveRevision);$("button.editor-post-save-draft:not(.rvy-recaption)").removeClass("is-tertiary").addClass("ppr-purple-button is-secondary rvy-recaption")}if(($("div.edit-post-header__settings a.editor-post-preview:visible").length||$("div.block-editor-post-preview__dropdown button.block-editor-post-preview__button-toggle:visible").length)&&!$("a.rvy-post-preview").length){if(rvyObjEdit.viewURL){original=$("div.edit-post-header__settings a.editor-post-preview");$(original).after(original.clone().attr("href",rvyObjEdit.viewURL).attr("target","_blank").removeClass("editor-post-preview is-tertiary").addClass("rvy-post-preview is-secondary ppr-purple-button"));$(original).hide()}if(rvyObjEdit.viewCaption){RvyRecaptionElement("div.edit-post-header__settings a.rvy-post-preview",rvyObjEdit.viewCaption)}if(rvyObjEdit.viewTitle){$("div.edit-post-header__settings a.rvy-post-preview").attr("title",rvyObjEdit.viewTitle)}}else{if(!rvyObjEdit.multiPreviewActive){if(!$("a.editor-post-preview").next("a.rvy-post-preview").length){$("a.rvy-post-preview").insertAfter($("a.editor-post-preview"))}if(rvyObjEdit.previewTitle&&!$("a.editor-post-preview").attr("title")){$("div.edit-post-header__settings a.editor-post-preview").attr("title",rvyObjEdit.previewTitle)}}}if(rvyObjEdit.revisionEdits&&$("div.edit-post-sidebar a.editor-post-last-revision__title:visible").length&&!$("div.edit-post-sidebar a.editor-post-last-revision__title.rvy-recaption").length){$("div.edit-post-sidebar a.editor-post-last-revision__title").html(rvyObjEdit.revisionEdits);$("div.edit-post-sidebar a.editor-post-last-revision__title").addClass("rvy-recaption")}};var RvyRecaptionSaveDraftInterval=setInterval(RvyRecaptionSaveDraft,100)}); +jQuery(document).ready(function($){function RvyRecaptionElement(btnSelector,btnCaption,btnIcon=""){let node=document.querySelector(btnSelector);if(node){document.querySelector(btnSelector).innerText=`${btnCaption}`;if(btnIcon){document.querySelector(btnSelector).innerHTML=`${btnCaption}`}}}function RvySetPublishButtonCaption(caption,waitForSaveDraftButton,forceRegen,timeout){if(caption==""&&typeof rvyObjEdit["publishCaptionCurrent"]!="undefined"){caption=rvyObjEdit.publishCaptionCurrent}else{rvyObjEdit.publishCaptionCurrent=caption}if(typeof waitForSaveDraftButton=="undefined"){waitForSaveDraftButton=false}if((!waitForSaveDraftButton||$("button.editor-post-switch-to-draft").filter(":visible").length||$("button.editor-post-save-draft").filter(":visible").length)&&$("button.editor-post-publish-button").length){RvyRecaptionElement("button.editor-post-publish-button",caption)}}var RvyDetectPublishOptionsDivClosureInterval="";var RvyDetectPublishOptionsDiv=function(){if($("div.components-modal__header").length){clearInterval(RvyDetectPublishOptionsDivInterval);if($("span.pp-recaption-button").first()){rvyObjEdit.overrideColor=$("span.pp-recaption-button").first().css("color")}var RvyDetectPublishOptionsClosure=function(){if(!$("div.components-modal__header").length){clearInterval(RvyDetectPublishOptionsDivClosureInterval);$("span.pp-recaption-button").hide();RvyInitInterval=setInterval(RvyInitializeBlockEditorModifications,50);RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,1e3)}};RvyDetectPublishOptionsDivClosureInterval=setInterval(RvyDetectPublishOptionsClosure,200)}};var RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,1e3);rvyObjEdit.publishCaptionCurrent=rvyObjEdit.publish;var RvyInitializeBlockEditorModifications=function(){if(($("button.editor-post-publish-button").length||$("button.editor-post-publish-panel__toggle").length)&&($("button.editor-post-switch-to-draft").length||$("button.editor-post-save-draft").length)){clearInterval(RvyInitInterval);if($("button.editor-post-publish-panel__toggle").length){if(typeof rvyObjEdit.prePublish!="undefined"&&rvyObjEdit.prePublish){RvyRecaptionElement("button.editor-post-publish-panel__toggle",rvyObjEdit.prePublish)}$(document).on("click","button.editor-post-publish-panel__toggle,span.pp-recaption-prepublish-button",function(){RvySetPublishButtonCaption("",false,true)})}else{RvySetPublishButtonCaption(rvyObjEdit.publish,false,true)}$("select.editor-post-author__select").parent().hide();$("button.editor-post-trash").parent().show();$("button.editor-post-switch-to-draft").hide();$("div.components-notice-list").hide()}if($("button.editor-post-publish-button").length||$("button.editor-post-publish-panel__toggle").length){$("button.editor-post-publish-button").hide();$("button.editor-post-publish-panel__toggle").hide()}};var RvyInitInterval=setInterval(RvyInitializeBlockEditorModifications,50);var RvyHideElements=function(){var ediv="div.edit-post-sidebar ";if($(ediv+"div.edit-post-post-visibility,"+ediv+"div.editor-post-link,"+ediv+"select.editor-post-author__select:visible,"+ediv+'div.components-base-control__field input[type="checkbox"]:visible,'+ediv+"button.editor-post-switch-to-draft,"+ediv+"button.editor-post-trash").length){$(ediv+"select.editor-post-author__select").parent().hide();$(ediv+"button.editor-post-trash").parent().show();$(ediv+"button.editor-post-switch-to-draft").hide();$(ediv+"div.editor-post-link").parent().hide();$(ediv+"div.components-notice-list").hide();if(!rvyObjEdit.scheduledRevisionsEnabled){$(ediv+"div.edit-post-post-schedule").hide()}$(ediv+"#publishpress-notifications").hide();$("#icl_div").closest("div.edit-post-meta-boxes-area").hide()}if($("button.editor-post-publish-button").length){$("button.editor-post-publish-button").hide()}};var RvyHideInterval=setInterval(RvyHideElements,50);var RvySubmissionUI=function(){if($("div.edit-post-post-schedule").length){var refSelector="div.edit-post-post-schedule"}else{var refSelector="div.edit-post-post-visibility"}if(rvyObjEdit.ajaxurl&&!$("div.edit-post-revision-status").length&&$(refSelector).length){$(refSelector).before('
    '+""+rvyObjEdit.statusLabel+""+'
    '+rvyObjEdit[rvyObjEdit.currentStatus+"StatusCaption"]+"
    "+"
    ");if(rvyObjEdit[rvyObjEdit.currentStatus+"ActionURL"]){var url=rvyObjEdit[rvyObjEdit.currentStatus+"ActionURL"]}else{var url="javascript:void(0)"}if(rvyObjEdit[rvyObjEdit.currentStatus+"ActionCaption"]){$(refSelector).after('")}if(RvyApprovalLocked!=$("button.revision-approve").prop("disabled")){if(RvyApprovalLocked){$("button.revision-approve").html("Revision needs update.")}else{$("button.revision-approve").html(rvyObjEdit[rvyObjEdit.currentStatus+"ActionCaption"])}}$("button.revision-approve").prop("disabled",RvyApprovalLocked&&"pending"==rvyObjEdit.currentStatus);$(".edit-post-post-schedule__toggle").after('");if(rvyObjEdit[rvyObjEdit.currentStatus+"DeletionURL"]){$("button.editor-post-trash").wrap('')}}$("button.post-schedule-footnote").toggle(!/\d/.test($("button.edit-post-post-schedule__toggle").html()))};var RvyUIInterval=setInterval(RvySubmissionUI,100);var RvyApprovalLocked=false;$(document).on("click","div.edit-post-visual-editor *, div.editor-inserter *",function(){if("pending"==rvyObjEdit.currentStatus){RvyApprovalLocked=true;$("button.revision-approve").prop("disabled",true)}});$(document).on("click","button.edit-post-post-schedule__toggle",function(){RvyApprovalLocked=true;$("button.revision-approve").prop("disabled",true)});$(document).on("click","button.editor-post-save-draft",function(){RvyApprovalLocked=false;$("button.revision-approve").prop("disabled",false);$("button.revision-approve").html(rvyObjEdit[rvyObjEdit.currentStatus+"ActionCaption"])});function RvyGetRandomInt(max){return Math.floor(Math.random()*max)}$(document).on("click","div.postbox-container",function(){$("button.revision-approve").prop("disabled","disabled")});$(document).on("click","button.revision-approve",function(){if(!rvyObjEdit[rvyObjEdit.currentStatus+"ActionURL"]){var revisionaryCreateDone=function(){$(".revision-approve").hide();$(".revision-created").show();rvyObjEdit.currentStatus="pending";$(".rvy-current-status").html(rvyObjEdit[rvyObjEdit.currentStatus+"StatusCaption"]);$("a.revision-edit").attr("href",rvyObjEdit[rvyObjEdit.currentStatus+"CompletedURL"]).show()};var revisionaryCreateError=function(data,txtStatus){$("div.rvy-creation-ui").html(rvyObjEdit[rvyObjEdit.currentStatus+"ErrorCaption"])};var data={rvy_ajax_field:rvyObjEdit[rvyObjEdit.currentStatus+"AjaxField"],rvy_ajax_value:wp.data.select("core/editor").getCurrentPostId(),nc:RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryCreateDone,error:revisionaryCreateError})}});var RvyRecaptionSaveDraft=function(){if($("button.editor-post-save-draft:not(.rvy-recaption)").length){RvyRecaptionElement("button.editor-post-save-draft:not(.rvy-recaption)",rvyObjEdit.saveRevision);$("button.editor-post-save-draft:not(.rvy-recaption)").addClass("ppr-purple-button rvy-recaption")}if(($("div.edit-post-header__settings a.editor-post-preview:visible").length||$("div.block-editor-post-preview__dropdown button.block-editor-post-preview__button-toggle:visible").length)&&!$("a.rvy-post-preview").length){if(rvyObjEdit.viewURL){original=$("div.edit-post-header__settings a.editor-post-preview");$(original).after(original.clone().attr("href",rvyObjEdit.viewURL).attr("target","_blank").removeClass("editor-post-preview is-tertiary").addClass("rvy-post-preview is-secondary ppr-purple-button"));$(original).hide()}if(rvyObjEdit.viewCaption){RvyRecaptionElement("div.edit-post-header__settings a.rvy-post-preview",rvyObjEdit.viewCaption)}if(rvyObjEdit.viewTitle){$("div.edit-post-header__settings a.rvy-post-preview").attr("title",rvyObjEdit.viewTitle)}}else{if(!rvyObjEdit.multiPreviewActive){if(!$("a.editor-post-preview").next("a.rvy-post-preview").length){$("a.rvy-post-preview").insertAfter($("a.editor-post-preview"))}if(rvyObjEdit.previewTitle&&!$("a.editor-post-preview").attr("title")){$("div.edit-post-header__settings a.editor-post-preview").attr("title",rvyObjEdit.previewTitle)}}}if(rvyObjEdit.revisionEdits&&$("div.edit-post-sidebar a.editor-post-last-revision__title:visible").length&&!$("div.edit-post-sidebar a.editor-post-last-revision__title.rvy-recaption").length){$("div.edit-post-sidebar a.editor-post-last-revision__title").html(rvyObjEdit.revisionEdits);$("div.edit-post-sidebar a.editor-post-last-revision__title").addClass("rvy-recaption")}};var RvyRecaptionSaveDraftInterval=setInterval(RvyRecaptionSaveDraft,100)}); From 207927e2da9435196c8ee53649762263ba46d15d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Valenti=CC=81n=20Garci=CC=81a?= Date: Thu, 30 Sep 2021 10:51:36 -0500 Subject: [PATCH 112/193] Revert "Use tertiary style for "Update revision"" This reverts commit c6f046c58e2f71a7eccab4ebd2526c2116264044. --- admin/rvy_revision-block-edit.dev.js | 2 +- admin/rvy_revision-block-edit.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/admin/rvy_revision-block-edit.dev.js b/admin/rvy_revision-block-edit.dev.js index 99c9eb92..7b2ca504 100644 --- a/admin/rvy_revision-block-edit.dev.js +++ b/admin/rvy_revision-block-edit.dev.js @@ -243,7 +243,7 @@ jQuery(document).ready( function($) { var RvyRecaptionSaveDraft = function() { if ($('button.editor-post-save-draft:not(.rvy-recaption)').length) { RvyRecaptionElement('button.editor-post-save-draft:not(.rvy-recaption)', rvyObjEdit.saveRevision); - $('button.editor-post-save-draft:not(.rvy-recaption)').addClass('ppr-purple-button rvy-recaption'); + $('button.editor-post-save-draft:not(.rvy-recaption)').removeClass('is-tertiary').addClass('ppr-purple-button is-secondary rvy-recaption'); } if (($('div.edit-post-header__settings a.editor-post-preview:visible').length || $('div.block-editor-post-preview__dropdown button.block-editor-post-preview__button-toggle:visible').length) && !$('a.rvy-post-preview').length) { diff --git a/admin/rvy_revision-block-edit.js b/admin/rvy_revision-block-edit.js index 4d55a3da..d2142057 100644 --- a/admin/rvy_revision-block-edit.js +++ b/admin/rvy_revision-block-edit.js @@ -1 +1 @@ -jQuery(document).ready(function($){function RvyRecaptionElement(btnSelector,btnCaption,btnIcon=""){let node=document.querySelector(btnSelector);if(node){document.querySelector(btnSelector).innerText=`${btnCaption}`;if(btnIcon){document.querySelector(btnSelector).innerHTML=`${btnCaption}`}}}function RvySetPublishButtonCaption(caption,waitForSaveDraftButton,forceRegen,timeout){if(caption==""&&typeof rvyObjEdit["publishCaptionCurrent"]!="undefined"){caption=rvyObjEdit.publishCaptionCurrent}else{rvyObjEdit.publishCaptionCurrent=caption}if(typeof waitForSaveDraftButton=="undefined"){waitForSaveDraftButton=false}if((!waitForSaveDraftButton||$("button.editor-post-switch-to-draft").filter(":visible").length||$("button.editor-post-save-draft").filter(":visible").length)&&$("button.editor-post-publish-button").length){RvyRecaptionElement("button.editor-post-publish-button",caption)}}var RvyDetectPublishOptionsDivClosureInterval="";var RvyDetectPublishOptionsDiv=function(){if($("div.components-modal__header").length){clearInterval(RvyDetectPublishOptionsDivInterval);if($("span.pp-recaption-button").first()){rvyObjEdit.overrideColor=$("span.pp-recaption-button").first().css("color")}var RvyDetectPublishOptionsClosure=function(){if(!$("div.components-modal__header").length){clearInterval(RvyDetectPublishOptionsDivClosureInterval);$("span.pp-recaption-button").hide();RvyInitInterval=setInterval(RvyInitializeBlockEditorModifications,50);RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,1e3)}};RvyDetectPublishOptionsDivClosureInterval=setInterval(RvyDetectPublishOptionsClosure,200)}};var RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,1e3);rvyObjEdit.publishCaptionCurrent=rvyObjEdit.publish;var RvyInitializeBlockEditorModifications=function(){if(($("button.editor-post-publish-button").length||$("button.editor-post-publish-panel__toggle").length)&&($("button.editor-post-switch-to-draft").length||$("button.editor-post-save-draft").length)){clearInterval(RvyInitInterval);if($("button.editor-post-publish-panel__toggle").length){if(typeof rvyObjEdit.prePublish!="undefined"&&rvyObjEdit.prePublish){RvyRecaptionElement("button.editor-post-publish-panel__toggle",rvyObjEdit.prePublish)}$(document).on("click","button.editor-post-publish-panel__toggle,span.pp-recaption-prepublish-button",function(){RvySetPublishButtonCaption("",false,true)})}else{RvySetPublishButtonCaption(rvyObjEdit.publish,false,true)}$("select.editor-post-author__select").parent().hide();$("button.editor-post-trash").parent().show();$("button.editor-post-switch-to-draft").hide();$("div.components-notice-list").hide()}if($("button.editor-post-publish-button").length||$("button.editor-post-publish-panel__toggle").length){$("button.editor-post-publish-button").hide();$("button.editor-post-publish-panel__toggle").hide()}};var RvyInitInterval=setInterval(RvyInitializeBlockEditorModifications,50);var RvyHideElements=function(){var ediv="div.edit-post-sidebar ";if($(ediv+"div.edit-post-post-visibility,"+ediv+"div.editor-post-link,"+ediv+"select.editor-post-author__select:visible,"+ediv+'div.components-base-control__field input[type="checkbox"]:visible,'+ediv+"button.editor-post-switch-to-draft,"+ediv+"button.editor-post-trash").length){$(ediv+"select.editor-post-author__select").parent().hide();$(ediv+"button.editor-post-trash").parent().show();$(ediv+"button.editor-post-switch-to-draft").hide();$(ediv+"div.editor-post-link").parent().hide();$(ediv+"div.components-notice-list").hide();if(!rvyObjEdit.scheduledRevisionsEnabled){$(ediv+"div.edit-post-post-schedule").hide()}$(ediv+"#publishpress-notifications").hide();$("#icl_div").closest("div.edit-post-meta-boxes-area").hide()}if($("button.editor-post-publish-button").length){$("button.editor-post-publish-button").hide()}};var RvyHideInterval=setInterval(RvyHideElements,50);var RvySubmissionUI=function(){if($("div.edit-post-post-schedule").length){var refSelector="div.edit-post-post-schedule"}else{var refSelector="div.edit-post-post-visibility"}if(rvyObjEdit.ajaxurl&&!$("div.edit-post-revision-status").length&&$(refSelector).length){$(refSelector).before('
    '+""+rvyObjEdit.statusLabel+""+'
    '+rvyObjEdit[rvyObjEdit.currentStatus+"StatusCaption"]+"
    "+"
    ");if(rvyObjEdit[rvyObjEdit.currentStatus+"ActionURL"]){var url=rvyObjEdit[rvyObjEdit.currentStatus+"ActionURL"]}else{var url="javascript:void(0)"}if(rvyObjEdit[rvyObjEdit.currentStatus+"ActionCaption"]){$(refSelector).after('")}if(RvyApprovalLocked!=$("button.revision-approve").prop("disabled")){if(RvyApprovalLocked){$("button.revision-approve").html("Revision needs update.")}else{$("button.revision-approve").html(rvyObjEdit[rvyObjEdit.currentStatus+"ActionCaption"])}}$("button.revision-approve").prop("disabled",RvyApprovalLocked&&"pending"==rvyObjEdit.currentStatus);$(".edit-post-post-schedule__toggle").after('");if(rvyObjEdit[rvyObjEdit.currentStatus+"DeletionURL"]){$("button.editor-post-trash").wrap('')}}$("button.post-schedule-footnote").toggle(!/\d/.test($("button.edit-post-post-schedule__toggle").html()))};var RvyUIInterval=setInterval(RvySubmissionUI,100);var RvyApprovalLocked=false;$(document).on("click","div.edit-post-visual-editor *, div.editor-inserter *",function(){if("pending"==rvyObjEdit.currentStatus){RvyApprovalLocked=true;$("button.revision-approve").prop("disabled",true)}});$(document).on("click","button.edit-post-post-schedule__toggle",function(){RvyApprovalLocked=true;$("button.revision-approve").prop("disabled",true)});$(document).on("click","button.editor-post-save-draft",function(){RvyApprovalLocked=false;$("button.revision-approve").prop("disabled",false);$("button.revision-approve").html(rvyObjEdit[rvyObjEdit.currentStatus+"ActionCaption"])});function RvyGetRandomInt(max){return Math.floor(Math.random()*max)}$(document).on("click","div.postbox-container",function(){$("button.revision-approve").prop("disabled","disabled")});$(document).on("click","button.revision-approve",function(){if(!rvyObjEdit[rvyObjEdit.currentStatus+"ActionURL"]){var revisionaryCreateDone=function(){$(".revision-approve").hide();$(".revision-created").show();rvyObjEdit.currentStatus="pending";$(".rvy-current-status").html(rvyObjEdit[rvyObjEdit.currentStatus+"StatusCaption"]);$("a.revision-edit").attr("href",rvyObjEdit[rvyObjEdit.currentStatus+"CompletedURL"]).show()};var revisionaryCreateError=function(data,txtStatus){$("div.rvy-creation-ui").html(rvyObjEdit[rvyObjEdit.currentStatus+"ErrorCaption"])};var data={rvy_ajax_field:rvyObjEdit[rvyObjEdit.currentStatus+"AjaxField"],rvy_ajax_value:wp.data.select("core/editor").getCurrentPostId(),nc:RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryCreateDone,error:revisionaryCreateError})}});var RvyRecaptionSaveDraft=function(){if($("button.editor-post-save-draft:not(.rvy-recaption)").length){RvyRecaptionElement("button.editor-post-save-draft:not(.rvy-recaption)",rvyObjEdit.saveRevision);$("button.editor-post-save-draft:not(.rvy-recaption)").addClass("ppr-purple-button rvy-recaption")}if(($("div.edit-post-header__settings a.editor-post-preview:visible").length||$("div.block-editor-post-preview__dropdown button.block-editor-post-preview__button-toggle:visible").length)&&!$("a.rvy-post-preview").length){if(rvyObjEdit.viewURL){original=$("div.edit-post-header__settings a.editor-post-preview");$(original).after(original.clone().attr("href",rvyObjEdit.viewURL).attr("target","_blank").removeClass("editor-post-preview is-tertiary").addClass("rvy-post-preview is-secondary ppr-purple-button"));$(original).hide()}if(rvyObjEdit.viewCaption){RvyRecaptionElement("div.edit-post-header__settings a.rvy-post-preview",rvyObjEdit.viewCaption)}if(rvyObjEdit.viewTitle){$("div.edit-post-header__settings a.rvy-post-preview").attr("title",rvyObjEdit.viewTitle)}}else{if(!rvyObjEdit.multiPreviewActive){if(!$("a.editor-post-preview").next("a.rvy-post-preview").length){$("a.rvy-post-preview").insertAfter($("a.editor-post-preview"))}if(rvyObjEdit.previewTitle&&!$("a.editor-post-preview").attr("title")){$("div.edit-post-header__settings a.editor-post-preview").attr("title",rvyObjEdit.previewTitle)}}}if(rvyObjEdit.revisionEdits&&$("div.edit-post-sidebar a.editor-post-last-revision__title:visible").length&&!$("div.edit-post-sidebar a.editor-post-last-revision__title.rvy-recaption").length){$("div.edit-post-sidebar a.editor-post-last-revision__title").html(rvyObjEdit.revisionEdits);$("div.edit-post-sidebar a.editor-post-last-revision__title").addClass("rvy-recaption")}};var RvyRecaptionSaveDraftInterval=setInterval(RvyRecaptionSaveDraft,100)}); +jQuery(document).ready(function($){function RvyRecaptionElement(btnSelector,btnCaption,btnIcon=""){let node=document.querySelector(btnSelector);if(node){document.querySelector(btnSelector).innerText=`${btnCaption}`;if(btnIcon){document.querySelector(btnSelector).innerHTML=`${btnCaption}`}}}function RvySetPublishButtonCaption(caption,waitForSaveDraftButton,forceRegen,timeout){if(caption==""&&typeof rvyObjEdit["publishCaptionCurrent"]!="undefined"){caption=rvyObjEdit.publishCaptionCurrent}else{rvyObjEdit.publishCaptionCurrent=caption}if(typeof waitForSaveDraftButton=="undefined"){waitForSaveDraftButton=false}if((!waitForSaveDraftButton||$("button.editor-post-switch-to-draft").filter(":visible").length||$("button.editor-post-save-draft").filter(":visible").length)&&$("button.editor-post-publish-button").length){RvyRecaptionElement("button.editor-post-publish-button",caption)}}var RvyDetectPublishOptionsDivClosureInterval="";var RvyDetectPublishOptionsDiv=function(){if($("div.components-modal__header").length){clearInterval(RvyDetectPublishOptionsDivInterval);if($("span.pp-recaption-button").first()){rvyObjEdit.overrideColor=$("span.pp-recaption-button").first().css("color")}var RvyDetectPublishOptionsClosure=function(){if(!$("div.components-modal__header").length){clearInterval(RvyDetectPublishOptionsDivClosureInterval);$("span.pp-recaption-button").hide();RvyInitInterval=setInterval(RvyInitializeBlockEditorModifications,50);RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,1e3)}};RvyDetectPublishOptionsDivClosureInterval=setInterval(RvyDetectPublishOptionsClosure,200)}};var RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,1e3);rvyObjEdit.publishCaptionCurrent=rvyObjEdit.publish;var RvyInitializeBlockEditorModifications=function(){if(($("button.editor-post-publish-button").length||$("button.editor-post-publish-panel__toggle").length)&&($("button.editor-post-switch-to-draft").length||$("button.editor-post-save-draft").length)){clearInterval(RvyInitInterval);if($("button.editor-post-publish-panel__toggle").length){if(typeof rvyObjEdit.prePublish!="undefined"&&rvyObjEdit.prePublish){RvyRecaptionElement("button.editor-post-publish-panel__toggle",rvyObjEdit.prePublish)}$(document).on("click","button.editor-post-publish-panel__toggle,span.pp-recaption-prepublish-button",function(){RvySetPublishButtonCaption("",false,true)})}else{RvySetPublishButtonCaption(rvyObjEdit.publish,false,true)}$("select.editor-post-author__select").parent().hide();$("button.editor-post-trash").parent().show();$("button.editor-post-switch-to-draft").hide();$("div.components-notice-list").hide()}if($("button.editor-post-publish-button").length||$("button.editor-post-publish-panel__toggle").length){$("button.editor-post-publish-button").hide();$("button.editor-post-publish-panel__toggle").hide()}};var RvyInitInterval=setInterval(RvyInitializeBlockEditorModifications,50);var RvyHideElements=function(){var ediv="div.edit-post-sidebar ";if($(ediv+"div.edit-post-post-visibility,"+ediv+"div.editor-post-link,"+ediv+"select.editor-post-author__select:visible,"+ediv+'div.components-base-control__field input[type="checkbox"]:visible,'+ediv+"button.editor-post-switch-to-draft,"+ediv+"button.editor-post-trash").length){$(ediv+"select.editor-post-author__select").parent().hide();$(ediv+"button.editor-post-trash").parent().show();$(ediv+"button.editor-post-switch-to-draft").hide();$(ediv+"div.editor-post-link").parent().hide();$(ediv+"div.components-notice-list").hide();if(!rvyObjEdit.scheduledRevisionsEnabled){$(ediv+"div.edit-post-post-schedule").hide()}$(ediv+"#publishpress-notifications").hide();$("#icl_div").closest("div.edit-post-meta-boxes-area").hide()}if($("button.editor-post-publish-button").length){$("button.editor-post-publish-button").hide()}};var RvyHideInterval=setInterval(RvyHideElements,50);var RvySubmissionUI=function(){if($("div.edit-post-post-schedule").length){var refSelector="div.edit-post-post-schedule"}else{var refSelector="div.edit-post-post-visibility"}if(rvyObjEdit.ajaxurl&&!$("div.edit-post-revision-status").length&&$(refSelector).length){$(refSelector).before('
    '+""+rvyObjEdit.statusLabel+""+'
    '+rvyObjEdit[rvyObjEdit.currentStatus+"StatusCaption"]+"
    "+"
    ");if(rvyObjEdit[rvyObjEdit.currentStatus+"ActionURL"]){var url=rvyObjEdit[rvyObjEdit.currentStatus+"ActionURL"]}else{var url="javascript:void(0)"}if(rvyObjEdit[rvyObjEdit.currentStatus+"ActionCaption"]){$(refSelector).after('")}if(RvyApprovalLocked!=$("button.revision-approve").prop("disabled")){if(RvyApprovalLocked){$("button.revision-approve").html("Revision needs update.")}else{$("button.revision-approve").html(rvyObjEdit[rvyObjEdit.currentStatus+"ActionCaption"])}}$("button.revision-approve").prop("disabled",RvyApprovalLocked&&"pending"==rvyObjEdit.currentStatus);$(".edit-post-post-schedule__toggle").after('");if(rvyObjEdit[rvyObjEdit.currentStatus+"DeletionURL"]){$("button.editor-post-trash").wrap('')}}$("button.post-schedule-footnote").toggle(!/\d/.test($("button.edit-post-post-schedule__toggle").html()))};var RvyUIInterval=setInterval(RvySubmissionUI,100);var RvyApprovalLocked=false;$(document).on("click","div.edit-post-visual-editor *, div.editor-inserter *",function(){if("pending"==rvyObjEdit.currentStatus){RvyApprovalLocked=true;$("button.revision-approve").prop("disabled",true)}});$(document).on("click","button.edit-post-post-schedule__toggle",function(){RvyApprovalLocked=true;$("button.revision-approve").prop("disabled",true)});$(document).on("click","button.editor-post-save-draft",function(){RvyApprovalLocked=false;$("button.revision-approve").prop("disabled",false);$("button.revision-approve").html(rvyObjEdit[rvyObjEdit.currentStatus+"ActionCaption"])});function RvyGetRandomInt(max){return Math.floor(Math.random()*max)}$(document).on("click","div.postbox-container",function(){$("button.revision-approve").prop("disabled","disabled")});$(document).on("click","button.revision-approve",function(){if(!rvyObjEdit[rvyObjEdit.currentStatus+"ActionURL"]){var revisionaryCreateDone=function(){$(".revision-approve").hide();$(".revision-created").show();rvyObjEdit.currentStatus="pending";$(".rvy-current-status").html(rvyObjEdit[rvyObjEdit.currentStatus+"StatusCaption"]);$("a.revision-edit").attr("href",rvyObjEdit[rvyObjEdit.currentStatus+"CompletedURL"]).show()};var revisionaryCreateError=function(data,txtStatus){$("div.rvy-creation-ui").html(rvyObjEdit[rvyObjEdit.currentStatus+"ErrorCaption"])};var data={rvy_ajax_field:rvyObjEdit[rvyObjEdit.currentStatus+"AjaxField"],rvy_ajax_value:wp.data.select("core/editor").getCurrentPostId(),nc:RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryCreateDone,error:revisionaryCreateError})}});var RvyRecaptionSaveDraft=function(){if($("button.editor-post-save-draft:not(.rvy-recaption)").length){RvyRecaptionElement("button.editor-post-save-draft:not(.rvy-recaption)",rvyObjEdit.saveRevision);$("button.editor-post-save-draft:not(.rvy-recaption)").removeClass("is-tertiary").addClass("ppr-purple-button is-secondary rvy-recaption")}if(($("div.edit-post-header__settings a.editor-post-preview:visible").length||$("div.block-editor-post-preview__dropdown button.block-editor-post-preview__button-toggle:visible").length)&&!$("a.rvy-post-preview").length){if(rvyObjEdit.viewURL){original=$("div.edit-post-header__settings a.editor-post-preview");$(original).after(original.clone().attr("href",rvyObjEdit.viewURL).attr("target","_blank").removeClass("editor-post-preview is-tertiary").addClass("rvy-post-preview is-secondary ppr-purple-button"));$(original).hide()}if(rvyObjEdit.viewCaption){RvyRecaptionElement("div.edit-post-header__settings a.rvy-post-preview",rvyObjEdit.viewCaption)}if(rvyObjEdit.viewTitle){$("div.edit-post-header__settings a.rvy-post-preview").attr("title",rvyObjEdit.viewTitle)}}else{if(!rvyObjEdit.multiPreviewActive){if(!$("a.editor-post-preview").next("a.rvy-post-preview").length){$("a.rvy-post-preview").insertAfter($("a.editor-post-preview"))}if(rvyObjEdit.previewTitle&&!$("a.editor-post-preview").attr("title")){$("div.edit-post-header__settings a.editor-post-preview").attr("title",rvyObjEdit.previewTitle)}}}if(rvyObjEdit.revisionEdits&&$("div.edit-post-sidebar a.editor-post-last-revision__title:visible").length&&!$("div.edit-post-sidebar a.editor-post-last-revision__title.rvy-recaption").length){$("div.edit-post-sidebar a.editor-post-last-revision__title").html(rvyObjEdit.revisionEdits);$("div.edit-post-sidebar a.editor-post-last-revision__title").addClass("rvy-recaption")}};var RvyRecaptionSaveDraftInterval=setInterval(RvyRecaptionSaveDraft,100)}); From 689f401f1d164c7be641b45462b7614ab9ad729f Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Thu, 30 Sep 2021 13:01:50 -0400 Subject: [PATCH 113/193] Adjust styling for Update, Preview buttons; move View / Approve into dropdown --- admin/rvy-revision-edit.css | 4 ++++ admin/rvy_revision-block-edit.dev.js | 21 ++++++++++++++------- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/admin/rvy-revision-edit.css b/admin/rvy-revision-edit.css index 8772a44b..bbb00e9d 100644 --- a/admin/rvy-revision-edit.css +++ b/admin/rvy-revision-edit.css @@ -1,3 +1,7 @@ +.components-dropdown-menu__popover .components-popover__content{ +min-width: 260px; +} + div.publishpress-extended-post-privacy, div.publishpress-extended-post-status { display: none; } diff --git a/admin/rvy_revision-block-edit.dev.js b/admin/rvy_revision-block-edit.dev.js index 7b2ca504..e9b71a7d 100644 --- a/admin/rvy_revision-block-edit.dev.js +++ b/admin/rvy_revision-block-edit.dev.js @@ -243,19 +243,26 @@ jQuery(document).ready( function($) { var RvyRecaptionSaveDraft = function() { if ($('button.editor-post-save-draft:not(.rvy-recaption)').length) { RvyRecaptionElement('button.editor-post-save-draft:not(.rvy-recaption)', rvyObjEdit.saveRevision); - $('button.editor-post-save-draft:not(.rvy-recaption)').removeClass('is-tertiary').addClass('ppr-purple-button is-secondary rvy-recaption'); + $('button.editor-post-save-draft:not(.rvy-recaption)').addClass('rvy-recaption').removeClass('is-tertiary').addClass('is-primary').addClass('ppr-purple-button'); } if (($('div.edit-post-header__settings a.editor-post-preview:visible').length || $('div.block-editor-post-preview__dropdown button.block-editor-post-preview__button-toggle:visible').length) && !$('a.rvy-post-preview').length) { if (rvyObjEdit.viewURL) { - original = $('div.edit-post-header__settings a.editor-post-preview'); - $(original).after(original.clone().attr('href', rvyObjEdit.viewURL).attr('target', '_blank').removeClass('editor-post-preview is-tertiary').addClass('rvy-post-preview is-secondary ppr-purple-button')); - $(original).hide(); - } + if ($('div.edit-post-header-preview__grouping-external').length == 1) { + var svgElem = $('div.edit-post-header-preview__grouping-external a svg').clone()[0].outerHTML; + + $('div.edit-post-header-preview__grouping-external').after( + '' + ); + } - if (rvyObjEdit.viewCaption) { - RvyRecaptionElement('div.edit-post-header__settings a.rvy-post-preview', rvyObjEdit.viewCaption); + if (rvyObjEdit.viewCaption) { + RvyRecaptionElement('.block-editor-post-preview__button-toggle', rvyObjEdit.viewCaption); + $('button.block-editor-post-preview__button-toggle:not(.ppr-purple-button)').removeClass('is-tertiary').addClass('is-secondary').addClass('ppr-purple-button'); + } } if (rvyObjEdit.viewTitle) { From 9a2e2030cdce4fe6fbca7eabdb85e2f074d3b499 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Thu, 30 Sep 2021 13:08:45 -0400 Subject: [PATCH 114/193] Gutenberg Revision Edit: Correct behavior preview button handling with WP < 5.5 --- admin/rvy_revision-block-edit.dev.js | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/admin/rvy_revision-block-edit.dev.js b/admin/rvy_revision-block-edit.dev.js index e9b71a7d..fa306b9f 100644 --- a/admin/rvy_revision-block-edit.dev.js +++ b/admin/rvy_revision-block-edit.dev.js @@ -248,7 +248,8 @@ jQuery(document).ready( function($) { if (($('div.edit-post-header__settings a.editor-post-preview:visible').length || $('div.block-editor-post-preview__dropdown button.block-editor-post-preview__button-toggle:visible').length) && !$('a.rvy-post-preview').length) { - if (rvyObjEdit.viewURL) { + if (rvyObjEdit.viewURL && $('.block-editor-post-preview__button-toggle').length) { + if ($('div.edit-post-header-preview__grouping-external').length == 1) { var svgElem = $('div.edit-post-header-preview__grouping-external a svg').clone()[0].outerHTML; @@ -268,10 +269,20 @@ jQuery(document).ready( function($) { if (rvyObjEdit.viewTitle) { $('div.edit-post-header__settings a.rvy-post-preview').attr('title', rvyObjEdit.viewTitle); } + } else { - if (!rvyObjEdit.multiPreviewActive) { + if (!rvyObjEdit.multiPreviewActive) { // WP < 5.5 if (!$('a.editor-post-preview').next('a.rvy-post-preview').length) { - $('a.rvy-post-preview').insertAfter($('a.editor-post-preview')); + original = $('div.edit-post-header__settings a.editor-post-preview'); + $(original).after(original.clone().attr('href', rvyObjEdit.viewURL).attr('target', '_blank').removeClass('editor-post-preview').addClass('rvy-post-preview').css('margin', '0 10px 0 10px')); + + if (rvyObjEdit.viewCaption) { + RvyRecaptionElement('div.edit-post-header__settings a.rvy-post-preview', rvyObjEdit.viewCaption); + } + + if (rvyObjEdit.viewTitle) { + $('div.edit-post-header__settings a.rvy-post-preview').attr('title', rvyObjEdit.viewTitle); + } } if (rvyObjEdit.previewTitle && !$('a.editor-post-preview').attr('title')) { From c695a2a8c9b64c41febf3b945a96c41123916e90 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Thu, 30 Sep 2021 13:38:33 -0400 Subject: [PATCH 115/193] Post Editor: prevent compare links from being set to extreme height --- admin/revisionary.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/admin/revisionary.css b/admin/revisionary.css index 58021ffd..a69e5b77 100644 --- a/admin/revisionary.css +++ b/admin/revisionary.css @@ -576,6 +576,10 @@ div.components-panel a.revision-approve{ text-decoration: none; } +.components-button.editor-post-last-revision__title { +height: auto; +} + /* Classic */ #submitpost #revision-compare { margin: 5px 10px 10px 5px; From c6d09bf390fbf97797a697c4502e31892c560213 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Thu, 30 Sep 2021 13:45:25 -0400 Subject: [PATCH 116/193] Post Editor: send all revision preview links to the same tab --- admin/rvy_post-block-edit.dev.js | 4 ++-- admin/rvy_revision-block-edit.dev.js | 2 +- functions.php | 5 +++-- revisionary_main.php | 7 ++++++- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/admin/rvy_post-block-edit.dev.js b/admin/rvy_post-block-edit.dev.js index 9c5eb90d..4b40e508 100644 --- a/admin/rvy_post-block-edit.dev.js +++ b/admin/rvy_post-block-edit.dev.js @@ -38,7 +38,7 @@ jQuery(document).ready( function($) { + '' + rvyObjEdit.completedCaption + ' ' - + '' + + '' + rvyObjEdit.completedLinkCaption + ''; if (rvyObjEdit.scheduleCaption) { @@ -55,7 +55,7 @@ jQuery(document).ready( function($) { + '' + rvyObjEdit.scheduledCaption + ' ' - + '' + + '' + rvyObjEdit.scheduledLinkCaption + ''; } } diff --git a/admin/rvy_revision-block-edit.dev.js b/admin/rvy_revision-block-edit.dev.js index fa306b9f..3a82aebb 100644 --- a/admin/rvy_revision-block-edit.dev.js +++ b/admin/rvy_revision-block-edit.dev.js @@ -155,7 +155,7 @@ jQuery(document).ready( function($) { + '' + rvyObjEdit[rvyObjEdit.currentStatus + 'CompletedCaption'] + ' ' - + '' + + '' + rvyObjEdit[rvyObjEdit.currentStatus + 'CompletedLinkCaption'] + '' + '' diff --git a/functions.php b/functions.php index a23ce147..103d3d1f 100644 --- a/functions.php +++ b/functions.php @@ -232,8 +232,9 @@ function rvy_post_id($revision_id) { } // Append a random argument for cache busting -function rvy_nc_url($url) { - return add_query_arg('nc', substr(md5(rand()), 1, 8), $url); +function rvy_nc_url($url, $args = []) { + $nc = (!empty($args['nc'])) ? $args['nc'] : substr(md5(rand()), 1, 8); + return add_query_arg('nc', $nc, $url); } // Complete an admin URL, appending a random argument for cache busting diff --git a/revisionary_main.php b/revisionary_main.php index 6b0f12d5..6f6bb9d5 100644 --- a/revisionary_main.php +++ b/revisionary_main.php @@ -427,7 +427,12 @@ function act_new_revision_redirect() { $revision = $this->get_last_revision($published_post_id, $current_user->ID); if ($revision) { - $preview_link = rvy_preview_url($revision); + $args = []; + if (!empty($_REQUEST['nc'])) { // with a specified link target, avoid multiple browser tabs the same editor instance + $args['nc'] = $_REQUEST['nc']; + } + + $preview_link = rvy_preview_url($revision, $args); wp_redirect($preview_link); exit; } From ec5c53151073552fdeacf4f03fcb23838987b845 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Thu, 30 Sep 2021 13:48:39 -0400 Subject: [PATCH 117/193] Adjust View / Approve captions These changes correspond to moving the "View / Approve" link into the main Preview popup. Also maintain support for alternate Preview button handling in WP < 5.5 --- admin/history_rvy.php | 4 ++-- admin/post-editor-workflow-ui_rvy.php | 15 ++++++++++----- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/admin/history_rvy.php b/admin/history_rvy.php index e0b5fcb0..7698310b 100644 --- a/admin/history_rvy.php +++ b/admin/history_rvy.php @@ -22,7 +22,7 @@ function __construct() { add_action('parse_query', [$this, 'actDisableProblemQueries'], 5); - // Thin Out Revisions plugin breaks Preview / Approve button on Compare Pending Revisions screen + // Thin Out Revisions plugin breaks View / Approve button on Compare Pending Revisions screen if (class_exists('HM_TOR_Plugin_Loader')) { global $hm_tor_plugin_loader; if (!empty($hm_tor_plugin_loader)) { @@ -1070,7 +1070,7 @@ function actRevisionDiffScripts() { } if (empty($type_obj) || $can_approve) { - $button_label = $direct_approval ? __('Approve', 'revisionary') : __('Preview / Approve', 'revisionary'); + $button_label = $direct_approval ? __('Approve', 'revisionary') : __('View / Approve', 'revisionary'); } else { $button_label = __('View', 'revisionary'); } diff --git a/admin/post-editor-workflow-ui_rvy.php b/admin/post-editor-workflow-ui_rvy.php index 0122a6ef..d54c0291 100644 --- a/admin/post-editor-workflow-ui_rvy.php +++ b/admin/post-editor-workflow-ui_rvy.php @@ -38,11 +38,16 @@ public static function revisionLinkParams($args = []) { $vars['viewTitle'] = ''; } elseif ($can_publish) { - $vars['viewCaption'] = ('future-revision' == $post->post_mime_type) ? __('View / Publish', 'revisionary') : __('Preview / Approve', 'revisionary'); - $vars['viewTitle'] = __('View / moderate saved revision', 'revisionary'); + if (version_compare($wp_version, '5.5-beta', '>=')) { + $vars['viewCaption'] = ('future-revision' == $post->post_mime_type) ? __('Preview / Publish', 'revisionary') : __('Preview / Approve', 'revisionary'); + } else { + $vars['viewCaption'] = ('future-revision' == $post->post_mime_type) ? __('View / Publish', 'revisionary') : __('View / Approve', 'revisionary'); + } + + $vars['viewTitle'] = __('View / Approve saved changes', 'revisionary'); } else { - $vars['viewCaption'] = __('View'); - $vars['viewTitle'] = __('View saved revision', 'revisionary'); + $vars['viewCaption'] = version_compare($wp_version, '5.5-beta', '>=') ? __('Preview / Submit') : __('View / Submit'); + $vars['viewTitle'] = __('View / Submit saved changes', 'revisionary'); } } else { $vars['viewURL'] = ''; @@ -50,7 +55,7 @@ public static function revisionLinkParams($args = []) { $vars['viewTitle'] = ''; } - $vars['preview_title'] = __('View unsaved changes', 'revisionary'); + $vars['previewTitle'] = __('View unsaved changes', 'revisionary'); $_revisions = wp_get_post_revisions($post->ID); if ($_revisions && count($_revisions) > 1) { From d6776f9141c047b7fa75b2b035f6b7b099cbc427 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Thu, 30 Sep 2021 13:50:00 -0400 Subject: [PATCH 118/193] Classic Editor Revision Edit: Distinct caption for View / Approve button --- admin/edit-revision-classic-ui_rvy.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/admin/edit-revision-classic-ui_rvy.php b/admin/edit-revision-classic-ui_rvy.php index 5418eaa8..20b1301a 100644 --- a/admin/edit-revision-classic-ui_rvy.php +++ b/admin/edit-revision-classic-ui_rvy.php @@ -96,7 +96,7 @@ function() { $view_caption = ''; $view_title = ''; } elseif ($can_publish) { - $view_caption = ('future-revision' == $post->post_mime_type) ? __('View / Publish', 'revisionary') : __('Preview / Approve', 'revisionary'); + $view_caption = ('future-revision' == $post->post_mime_type) ? __('View / Publish', 'revisionary') : __('View / Approve', 'revisionary'); $view_title = __('View / moderate saved revision', 'revisionary'); } else { $view_caption = __('View'); From 705d7557f254d44bfc5aab177a998f9de4070c84 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Thu, 30 Sep 2021 13:52:35 -0400 Subject: [PATCH 119/193] Permissions Integration: Classic Editor Edit Revision - View / Edit caption --- admin/post-edit_rvy.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/admin/post-edit_rvy.php b/admin/post-edit_rvy.php index 45ea0e26..66e3c364 100644 --- a/admin/post-edit_rvy.php +++ b/admin/post-edit_rvy.php @@ -76,7 +76,8 @@ public function fltPreviewLabel($preview_caption) { } if (current_user_can('edit_post', rvy_post_id($post->ID))) { - $preview_caption = ('future-revision' == $post->post_status) ? __('View / Publish', 'revisionary') : __('Preview / Approve', 'revisionary'); + $preview_caption = ('future-revision' == $post->post_status) ? __('View / Publish', 'revisionary') : __('View / Approve', 'revisionary'); + } elseif ($type_obj && !empty($type_obj->public)) { $preview_caption = __('View'); } From 55bf55305120593ade2c05b409cf2e1347bc1466 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Thu, 30 Sep 2021 13:56:36 -0400 Subject: [PATCH 120/193] Classic Editor Revision Edit: Distinct caption for View / Approve button This is the initial PHP output for the Classic Editor submit metabox. The previous commit pertains to a js property value for dynamic re-captioning. --- admin/RevisionEditSubmitMetabox.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/admin/RevisionEditSubmitMetabox.php b/admin/RevisionEditSubmitMetabox.php index 631c7571..f7684130 100644 --- a/admin/RevisionEditSubmitMetabox.php +++ b/admin/RevisionEditSubmitMetabox.php @@ -111,7 +111,7 @@ public static function post_preview_button($post, $args) if ($type_obj && empty($type_obj->public)) { return; } elseif ($can_publish) { - $preview_button = ('future-revision' == $post->post_mime_type) ? __('View / Publish', 'revisionary') : __('Preview / Approve', 'revisionary'); + $preview_button = ('future-revision' == $post->post_mime_type) ? __('View / Publish', 'revisionary') : __('View / Approve', 'revisionary'); $preview_title = __('View / moderate saved revision', 'revisionary'); } else { $preview_button = __('View'); From 7f397bd76679c15ffc3d7a253a00abf4efd64d4c Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Thu, 30 Sep 2021 13:59:50 -0400 Subject: [PATCH 121/193] Update minified js files --- admin/rvy_post-block-edit.js | 33 +++++++++++++++++++++- admin/rvy_revision-block-edit.js | 48 +++++++++++++++++++++++++++++++- 2 files changed, 79 insertions(+), 2 deletions(-) diff --git a/admin/rvy_post-block-edit.js b/admin/rvy_post-block-edit.js index f5fec6f0..108c7578 100644 --- a/admin/rvy_post-block-edit.js +++ b/admin/rvy_post-block-edit.js @@ -1 +1,32 @@ -jQuery(document).ready(function($){if(rvyObjEdit.scheduledRevisionsURL||rvyObjEdit.pendingRevisionsURL){var RvyPendingRevPanel=function(){var ediv="div.edit-post-sidebar ";if(rvyObjEdit.scheduledRevisionsURL&&!$(ediv+"div.edit-post-last-revision__panel a.rvy-scheduled-revisions").length){var sclone=$("div.edit-post-last-revision__panel a:first").clone().addClass("rvy-scheduled-revisions").attr("href",rvyObjEdit.scheduledRevisionsURL).html(rvyObjEdit.scheduledRevisionsCaption);$(ediv+"div.edit-post-last-revision__panel a:last").after(sclone)}if(rvyObjEdit.pendingRevisionsURL&&!$(ediv+"div.edit-post-last-revision__panel a.rvy-pending-revisions").length){var pclone=$("div.edit-post-last-revision__panel a:first").clone().addClass("rvy-pending-revisions").attr("href",rvyObjEdit.pendingRevisionsURL).html(rvyObjEdit.pendingRevisionsCaption);$(ediv+"div.edit-post-last-revision__panel a:last").after(pclone)}$("div.edit-post-last-revision__panel").css("height","inherit")};setInterval(RvyPendingRevPanel,200)}var rvyIsPublished=false;var RvySubmissionUI=function(){if(rvyObjEdit.ajaxurl&&!$("button.revision-approve").length){var html='
    "+'";if(rvyObjEdit.scheduleCaption){let postStatus=wp.data.select("core/editor").getCurrentPostAttribute("status");var publishedStatuses=Object.keys(rvyObjEdit.publishedStatuses).map(function(key){return rvyObjEdit.publishedStatuses[key]});rvyIsPublished=publishedStatuses.indexOf(postStatus)>=0;if(rvyIsPublished){html+='"+'"}}html+="
    ";$("div.edit-post-post-schedule").after(html);if(rvyCreationDisabled){$("button.revision-approve").prop("disabled","disabled");$("button.revision-schedule").prop("disabled","disabled");$("a.revision-approve").attr("title",rvyObjEdit.actionDisabledTitle);$("a.revision-schedule").attr("title",rvyObjEdit.scheduleDisabledTitle)}else{$("button.revision-approve").prop("disabled",false);$("button.revision-schedule").prop("disabled",false);$("a.revision-approve").attr("title",rvyObjEdit.actionTitle);$("a.revision-schedule").attr("title",rvyObjEdit.scheduleTitle)}}};var RvyUIInterval=setInterval(RvySubmissionUI,200);function RvyGetRandomInt(max){return Math.floor(Math.random()*max)}var rvyCreationDisabled=false;$(document).on("click","div.postbox-container",function(){rvyCreationDisabled=true;$("button.revision-approve").prop("disabled","disabled");$("button.revision-schedule").prop("disabled","disabled");$("a.revision-approve").attr("title",rvyObjEdit.actionDisabledTitle);$("a.revision-schedule").attr("title",rvyObjEdit.scheduleDisabledTitle)});$(document).on("click","button.editor-post-publish-button",function(){rvyCreationDisabled=false;$("button.revision-approve").prop("disabled",false);$("button.revision-schedule").prop("disabled",false);$("a.revision-approve").attr("title",rvyObjEdit.actionTitle);$("a.revision-schedule").attr("title",rvyObjEdit.scheduleTitle)});$(document).on("click","button.revision-create",function(){if($("a.revision-create").attr("disabled")){return}var revisionaryCreateDone=function(){$(".revision-create").hide();$(".revision-created").show();$("button.revision-created a").attr("href",rvyObjEdit.completedURL)};var revisionaryCreateError=function(data,txtStatus){$("div.rvy-creation-ui").html(rvyObjEdit.errorCaption)};var data={rvy_ajax_field:"create_revision",rvy_ajax_value:wp.data.select("core/editor").getCurrentPostId(),rvy_date_selection:RvyTimeSelection,nc:RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryCreateDone,error:revisionaryCreateError})});$(document).on("click","button.revision-schedule",function(){if($("a.revision-schedule").attr("disabled")){return}var revisionaryScheduleDone=function(){$(".revision-schedule").hide();$(".revision-scheduled").show();$("button.revision-scheduled a").attr("href",rvyObjEdit.scheduledURL)};var revisionaryScheduleError=function(data,txtStatus){$("div.rvy-creation-ui").html(rvyObjEdit.errorCaption)};var data={rvy_ajax_field:"create_scheduled_revision",rvy_ajax_value:wp.data.select("core/editor").getCurrentPostId(),rvy_date_selection:RvyTimeSelection,nc:RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryScheduleDone,error:revisionaryScheduleError})});var RvySelectedFutureDate=false;var RvyTimeSelection="";var RvyRefreshScheduleButton=function(){var selectedDateHTML=$("button.edit-post-post-schedule__toggle").html();if(!/\d/.test(selectedDateHTML)||!rvyIsPublished){RvyTimeSelection="";$(".rvy-creation-ui .revision-schedule").hide();$(".rvy-creation-ui .revision-scheduled").hide();$(".rvy-creation-ui .revision-created").hide();$(".rvy-creation-ui .revision-create").show();return}var selectedDate=new Date(selectedDateHTML);RvyTimeSelection=selectedDate.getTime();var tdiff=RvyTimeSelection-Date.now();RvyTimeSelection=RvyTimeSelection/1e3;if(tdiff>1e3){RvySelectedFutureDate=true;$(".rvy-creation-ui .revision-create").hide();$(".rvy-creation-ui .revision-created").hide();$(".rvy-creation-ui .revision-scheduled").hide();$(".rvy-creation-ui .revision-schedule").show()}else{$(".rvy-creation-ui .revision-schedule").hide();$(".rvy-creation-ui .revision-scheduled").hide();$(".rvy-creation-ui .revision-created").hide();$(".rvy-creation-ui .revision-create").show();if(tdiff<=0){if(RvySelectedFutureDate){RvyTimeSelection=""}}}};var RvyDetectPublishOptionsDivClosureInterval=false;var RvyDetectPublishOptionsDiv=function(){if($("div.edit-post-post-schedule__dialog").length){clearInterval(RvyDetectPublishOptionsDivInterval);var RvyDetectPublishOptionsClosure=function(){if(!$("div.edit-post-post-schedule__dialog").length){clearInterval(RvyDetectPublishOptionsDivClosureInterval);RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,500);RvyRefreshScheduleButton()}};RvyDetectPublishOptionsDivClosureInterval=setInterval(RvyDetectPublishOptionsClosure,200)}};var RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,500)}); +jQuery(document).ready(function($){if(rvyObjEdit.scheduledRevisionsURL||rvyObjEdit.pendingRevisionsURL){var RvyPendingRevPanel=function(){var ediv='div.edit-post-sidebar ';if(rvyObjEdit.scheduledRevisionsURL&&!$(ediv+'div.edit-post-last-revision__panel a.rvy-scheduled-revisions').length){var sclone=$('div.edit-post-last-revision__panel a:first').clone().addClass('rvy-scheduled-revisions').attr('href',rvyObjEdit.scheduledRevisionsURL).html(rvyObjEdit.scheduledRevisionsCaption);$(ediv+'div.edit-post-last-revision__panel a:last').after(sclone);} +if(rvyObjEdit.pendingRevisionsURL&&!$(ediv+'div.edit-post-last-revision__panel a.rvy-pending-revisions').length){var pclone=$('div.edit-post-last-revision__panel a:first').clone().addClass('rvy-pending-revisions').attr('href',rvyObjEdit.pendingRevisionsURL).html(rvyObjEdit.pendingRevisionsCaption);$(ediv+'div.edit-post-last-revision__panel a:last').after(pclone);} +$('div.edit-post-last-revision__panel').css('height','inherit');} +setInterval(RvyPendingRevPanel,200);} +var rvyIsPublished=false;var RvySubmissionUI=function(){if(rvyObjEdit.ajaxurl&&!$('button.revision-approve').length){var html='
    ' ++'';if(rvyObjEdit.scheduleCaption){let postStatus=wp.data.select('core/editor').getCurrentPostAttribute('status');var publishedStatuses=Object.keys(rvyObjEdit.publishedStatuses).map(function(key){return rvyObjEdit.publishedStatuses[key];});rvyIsPublished=publishedStatuses.indexOf(postStatus)>=0;if(rvyIsPublished){html+='' ++'';}} +html+='
    ';$('div.edit-post-post-schedule').after(html);if(rvyCreationDisabled){$('button.revision-approve').prop('disabled','disabled');$('button.revision-schedule').prop('disabled','disabled');$('a.revision-approve').attr('title',rvyObjEdit.actionDisabledTitle);$('a.revision-schedule').attr('title',rvyObjEdit.scheduleDisabledTitle);}else{$('button.revision-approve').prop('disabled',false);$('button.revision-schedule').prop('disabled',false);$('a.revision-approve').attr('title',rvyObjEdit.actionTitle);$('a.revision-schedule').attr('title',rvyObjEdit.scheduleTitle);}}} +var RvyUIInterval=setInterval(RvySubmissionUI,200);function RvyGetRandomInt(max){return Math.floor(Math.random()*max);} +var rvyCreationDisabled=false;$(document).on('click','div.postbox-container',function(){rvyCreationDisabled=true;$('button.revision-approve').prop('disabled','disabled');$('button.revision-schedule').prop('disabled','disabled');$('a.revision-approve').attr('title',rvyObjEdit.actionDisabledTitle);$('a.revision-schedule').attr('title',rvyObjEdit.scheduleDisabledTitle);});$(document).on('click','button.editor-post-publish-button',function(){rvyCreationDisabled=false;$('button.revision-approve').prop('disabled',false);$('button.revision-schedule').prop('disabled',false);$('a.revision-approve').attr('title',rvyObjEdit.actionTitle);$('a.revision-schedule').attr('title',rvyObjEdit.scheduleTitle);});$(document).on('click','button.revision-create',function(){if($('a.revision-create').attr('disabled')){return;} +var revisionaryCreateDone=function(){$('.revision-create').hide();$('.revision-created').show();$('button.revision-created a').attr('href',rvyObjEdit.completedURL);} +var revisionaryCreateError=function(data,txtStatus){$('div.rvy-creation-ui').html(rvyObjEdit.errorCaption);} +var data={'rvy_ajax_field':'create_revision','rvy_ajax_value':wp.data.select('core/editor').getCurrentPostId(),'rvy_date_selection':RvyTimeSelection,'nc':RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryCreateDone,error:revisionaryCreateError});});$(document).on('click','button.revision-schedule',function(){if($('a.revision-schedule').attr('disabled')){return;} +var revisionaryScheduleDone=function(){$('.revision-schedule').hide();$('.revision-scheduled').show();$('button.revision-scheduled a').attr('href',rvyObjEdit.scheduledURL);} +var revisionaryScheduleError=function(data,txtStatus){$('div.rvy-creation-ui').html(rvyObjEdit.errorCaption);} +var data={'rvy_ajax_field':'create_scheduled_revision','rvy_ajax_value':wp.data.select('core/editor').getCurrentPostId(),'rvy_date_selection':RvyTimeSelection,'nc':RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryScheduleDone,error:revisionaryScheduleError});});var RvySelectedFutureDate=false;var RvyTimeSelection='';var RvyRefreshScheduleButton=function(){var selectedDateHTML=$('button.edit-post-post-schedule__toggle').html();if(!/\d/.test(selectedDateHTML)||!rvyIsPublished){RvyTimeSelection='';$('.rvy-creation-ui .revision-schedule').hide();$('.rvy-creation-ui .revision-scheduled').hide();$('.rvy-creation-ui .revision-created').hide();$('.rvy-creation-ui .revision-create').show();return;} +var selectedDate=new Date(selectedDateHTML);RvyTimeSelection=selectedDate.getTime();var tdiff=RvyTimeSelection-Date.now();RvyTimeSelection=RvyTimeSelection/1000;if((tdiff>1000)){RvySelectedFutureDate=true;$('.rvy-creation-ui .revision-create').hide();$('.rvy-creation-ui .revision-created').hide();$('.rvy-creation-ui .revision-scheduled').hide();$('.rvy-creation-ui .revision-schedule').show();}else{$('.rvy-creation-ui .revision-schedule').hide();$('.rvy-creation-ui .revision-scheduled').hide();$('.rvy-creation-ui .revision-created').hide();$('.rvy-creation-ui .revision-create').show();if(tdiff<=0){if(RvySelectedFutureDate){RvyTimeSelection='';}}}} +var RvyDetectPublishOptionsDivClosureInterval=false;var RvyDetectPublishOptionsDiv=function(){if($('div.edit-post-post-schedule__dialog').length){clearInterval(RvyDetectPublishOptionsDivInterval);var RvyDetectPublishOptionsClosure=function(){if(!$('div.edit-post-post-schedule__dialog').length){clearInterval(RvyDetectPublishOptionsDivClosureInterval);RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,500);RvyRefreshScheduleButton();}} +RvyDetectPublishOptionsDivClosureInterval=setInterval(RvyDetectPublishOptionsClosure,200);}} +var RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,500);}); \ No newline at end of file diff --git a/admin/rvy_revision-block-edit.js b/admin/rvy_revision-block-edit.js index d2142057..af2da03e 100644 --- a/admin/rvy_revision-block-edit.js +++ b/admin/rvy_revision-block-edit.js @@ -1 +1,47 @@ -jQuery(document).ready(function($){function RvyRecaptionElement(btnSelector,btnCaption,btnIcon=""){let node=document.querySelector(btnSelector);if(node){document.querySelector(btnSelector).innerText=`${btnCaption}`;if(btnIcon){document.querySelector(btnSelector).innerHTML=`${btnCaption}`}}}function RvySetPublishButtonCaption(caption,waitForSaveDraftButton,forceRegen,timeout){if(caption==""&&typeof rvyObjEdit["publishCaptionCurrent"]!="undefined"){caption=rvyObjEdit.publishCaptionCurrent}else{rvyObjEdit.publishCaptionCurrent=caption}if(typeof waitForSaveDraftButton=="undefined"){waitForSaveDraftButton=false}if((!waitForSaveDraftButton||$("button.editor-post-switch-to-draft").filter(":visible").length||$("button.editor-post-save-draft").filter(":visible").length)&&$("button.editor-post-publish-button").length){RvyRecaptionElement("button.editor-post-publish-button",caption)}}var RvyDetectPublishOptionsDivClosureInterval="";var RvyDetectPublishOptionsDiv=function(){if($("div.components-modal__header").length){clearInterval(RvyDetectPublishOptionsDivInterval);if($("span.pp-recaption-button").first()){rvyObjEdit.overrideColor=$("span.pp-recaption-button").first().css("color")}var RvyDetectPublishOptionsClosure=function(){if(!$("div.components-modal__header").length){clearInterval(RvyDetectPublishOptionsDivClosureInterval);$("span.pp-recaption-button").hide();RvyInitInterval=setInterval(RvyInitializeBlockEditorModifications,50);RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,1e3)}};RvyDetectPublishOptionsDivClosureInterval=setInterval(RvyDetectPublishOptionsClosure,200)}};var RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,1e3);rvyObjEdit.publishCaptionCurrent=rvyObjEdit.publish;var RvyInitializeBlockEditorModifications=function(){if(($("button.editor-post-publish-button").length||$("button.editor-post-publish-panel__toggle").length)&&($("button.editor-post-switch-to-draft").length||$("button.editor-post-save-draft").length)){clearInterval(RvyInitInterval);if($("button.editor-post-publish-panel__toggle").length){if(typeof rvyObjEdit.prePublish!="undefined"&&rvyObjEdit.prePublish){RvyRecaptionElement("button.editor-post-publish-panel__toggle",rvyObjEdit.prePublish)}$(document).on("click","button.editor-post-publish-panel__toggle,span.pp-recaption-prepublish-button",function(){RvySetPublishButtonCaption("",false,true)})}else{RvySetPublishButtonCaption(rvyObjEdit.publish,false,true)}$("select.editor-post-author__select").parent().hide();$("button.editor-post-trash").parent().show();$("button.editor-post-switch-to-draft").hide();$("div.components-notice-list").hide()}if($("button.editor-post-publish-button").length||$("button.editor-post-publish-panel__toggle").length){$("button.editor-post-publish-button").hide();$("button.editor-post-publish-panel__toggle").hide()}};var RvyInitInterval=setInterval(RvyInitializeBlockEditorModifications,50);var RvyHideElements=function(){var ediv="div.edit-post-sidebar ";if($(ediv+"div.edit-post-post-visibility,"+ediv+"div.editor-post-link,"+ediv+"select.editor-post-author__select:visible,"+ediv+'div.components-base-control__field input[type="checkbox"]:visible,'+ediv+"button.editor-post-switch-to-draft,"+ediv+"button.editor-post-trash").length){$(ediv+"select.editor-post-author__select").parent().hide();$(ediv+"button.editor-post-trash").parent().show();$(ediv+"button.editor-post-switch-to-draft").hide();$(ediv+"div.editor-post-link").parent().hide();$(ediv+"div.components-notice-list").hide();if(!rvyObjEdit.scheduledRevisionsEnabled){$(ediv+"div.edit-post-post-schedule").hide()}$(ediv+"#publishpress-notifications").hide();$("#icl_div").closest("div.edit-post-meta-boxes-area").hide()}if($("button.editor-post-publish-button").length){$("button.editor-post-publish-button").hide()}};var RvyHideInterval=setInterval(RvyHideElements,50);var RvySubmissionUI=function(){if($("div.edit-post-post-schedule").length){var refSelector="div.edit-post-post-schedule"}else{var refSelector="div.edit-post-post-visibility"}if(rvyObjEdit.ajaxurl&&!$("div.edit-post-revision-status").length&&$(refSelector).length){$(refSelector).before('
    '+""+rvyObjEdit.statusLabel+""+'
    '+rvyObjEdit[rvyObjEdit.currentStatus+"StatusCaption"]+"
    "+"
    ");if(rvyObjEdit[rvyObjEdit.currentStatus+"ActionURL"]){var url=rvyObjEdit[rvyObjEdit.currentStatus+"ActionURL"]}else{var url="javascript:void(0)"}if(rvyObjEdit[rvyObjEdit.currentStatus+"ActionCaption"]){$(refSelector).after('")}if(RvyApprovalLocked!=$("button.revision-approve").prop("disabled")){if(RvyApprovalLocked){$("button.revision-approve").html("Revision needs update.")}else{$("button.revision-approve").html(rvyObjEdit[rvyObjEdit.currentStatus+"ActionCaption"])}}$("button.revision-approve").prop("disabled",RvyApprovalLocked&&"pending"==rvyObjEdit.currentStatus);$(".edit-post-post-schedule__toggle").after('");if(rvyObjEdit[rvyObjEdit.currentStatus+"DeletionURL"]){$("button.editor-post-trash").wrap('')}}$("button.post-schedule-footnote").toggle(!/\d/.test($("button.edit-post-post-schedule__toggle").html()))};var RvyUIInterval=setInterval(RvySubmissionUI,100);var RvyApprovalLocked=false;$(document).on("click","div.edit-post-visual-editor *, div.editor-inserter *",function(){if("pending"==rvyObjEdit.currentStatus){RvyApprovalLocked=true;$("button.revision-approve").prop("disabled",true)}});$(document).on("click","button.edit-post-post-schedule__toggle",function(){RvyApprovalLocked=true;$("button.revision-approve").prop("disabled",true)});$(document).on("click","button.editor-post-save-draft",function(){RvyApprovalLocked=false;$("button.revision-approve").prop("disabled",false);$("button.revision-approve").html(rvyObjEdit[rvyObjEdit.currentStatus+"ActionCaption"])});function RvyGetRandomInt(max){return Math.floor(Math.random()*max)}$(document).on("click","div.postbox-container",function(){$("button.revision-approve").prop("disabled","disabled")});$(document).on("click","button.revision-approve",function(){if(!rvyObjEdit[rvyObjEdit.currentStatus+"ActionURL"]){var revisionaryCreateDone=function(){$(".revision-approve").hide();$(".revision-created").show();rvyObjEdit.currentStatus="pending";$(".rvy-current-status").html(rvyObjEdit[rvyObjEdit.currentStatus+"StatusCaption"]);$("a.revision-edit").attr("href",rvyObjEdit[rvyObjEdit.currentStatus+"CompletedURL"]).show()};var revisionaryCreateError=function(data,txtStatus){$("div.rvy-creation-ui").html(rvyObjEdit[rvyObjEdit.currentStatus+"ErrorCaption"])};var data={rvy_ajax_field:rvyObjEdit[rvyObjEdit.currentStatus+"AjaxField"],rvy_ajax_value:wp.data.select("core/editor").getCurrentPostId(),nc:RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryCreateDone,error:revisionaryCreateError})}});var RvyRecaptionSaveDraft=function(){if($("button.editor-post-save-draft:not(.rvy-recaption)").length){RvyRecaptionElement("button.editor-post-save-draft:not(.rvy-recaption)",rvyObjEdit.saveRevision);$("button.editor-post-save-draft:not(.rvy-recaption)").removeClass("is-tertiary").addClass("ppr-purple-button is-secondary rvy-recaption")}if(($("div.edit-post-header__settings a.editor-post-preview:visible").length||$("div.block-editor-post-preview__dropdown button.block-editor-post-preview__button-toggle:visible").length)&&!$("a.rvy-post-preview").length){if(rvyObjEdit.viewURL){original=$("div.edit-post-header__settings a.editor-post-preview");$(original).after(original.clone().attr("href",rvyObjEdit.viewURL).attr("target","_blank").removeClass("editor-post-preview is-tertiary").addClass("rvy-post-preview is-secondary ppr-purple-button"));$(original).hide()}if(rvyObjEdit.viewCaption){RvyRecaptionElement("div.edit-post-header__settings a.rvy-post-preview",rvyObjEdit.viewCaption)}if(rvyObjEdit.viewTitle){$("div.edit-post-header__settings a.rvy-post-preview").attr("title",rvyObjEdit.viewTitle)}}else{if(!rvyObjEdit.multiPreviewActive){if(!$("a.editor-post-preview").next("a.rvy-post-preview").length){$("a.rvy-post-preview").insertAfter($("a.editor-post-preview"))}if(rvyObjEdit.previewTitle&&!$("a.editor-post-preview").attr("title")){$("div.edit-post-header__settings a.editor-post-preview").attr("title",rvyObjEdit.previewTitle)}}}if(rvyObjEdit.revisionEdits&&$("div.edit-post-sidebar a.editor-post-last-revision__title:visible").length&&!$("div.edit-post-sidebar a.editor-post-last-revision__title.rvy-recaption").length){$("div.edit-post-sidebar a.editor-post-last-revision__title").html(rvyObjEdit.revisionEdits);$("div.edit-post-sidebar a.editor-post-last-revision__title").addClass("rvy-recaption")}};var RvyRecaptionSaveDraftInterval=setInterval(RvyRecaptionSaveDraft,100)}); +jQuery(document).ready(function($){function RvyRecaptionElement(btnSelector,btnCaption,btnIcon=''){let node=document.querySelector(btnSelector);if(node){document.querySelector(btnSelector).innerText=`${btnCaption}`;if(btnIcon){document.querySelector(btnSelector).innerHTML=`${btnCaption}`;}}} +function RvySetPublishButtonCaption(caption,waitForSaveDraftButton,forceRegen,timeout){if(caption==''&&(typeof rvyObjEdit['publishCaptionCurrent']!='undefined')){caption=rvyObjEdit.publishCaptionCurrent;}else{rvyObjEdit.publishCaptionCurrent=caption;} +if(typeof waitForSaveDraftButton=='undefined'){waitForSaveDraftButton=false;} +if((!waitForSaveDraftButton||$('button.editor-post-switch-to-draft').filter(':visible').length||$('button.editor-post-save-draft').filter(':visible').length)&&$('button.editor-post-publish-button').length){RvyRecaptionElement('button.editor-post-publish-button',caption);}} +var RvyDetectPublishOptionsDivClosureInterval='';var RvyDetectPublishOptionsDiv=function(){if($('div.components-modal__header').length){clearInterval(RvyDetectPublishOptionsDivInterval);if($('span.pp-recaption-button').first()){rvyObjEdit.overrideColor=$('span.pp-recaption-button').first().css('color');} +var RvyDetectPublishOptionsClosure=function(){if(!$('div.components-modal__header').length){clearInterval(RvyDetectPublishOptionsDivClosureInterval);$('span.pp-recaption-button').hide();RvyInitInterval=setInterval(RvyInitializeBlockEditorModifications,50);RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,1000);}} +RvyDetectPublishOptionsDivClosureInterval=setInterval(RvyDetectPublishOptionsClosure,200);}} +var RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,1000);rvyObjEdit.publishCaptionCurrent=rvyObjEdit.publish;var RvyInitializeBlockEditorModifications=function(){if(($('button.editor-post-publish-button').length||$('button.editor-post-publish-panel__toggle').length)&&($('button.editor-post-switch-to-draft').length||$('button.editor-post-save-draft').length)){clearInterval(RvyInitInterval);if($('button.editor-post-publish-panel__toggle').length){if(typeof rvyObjEdit.prePublish!='undefined'&&rvyObjEdit.prePublish){RvyRecaptionElement('button.editor-post-publish-panel__toggle',rvyObjEdit.prePublish);} +$(document).on('click','button.editor-post-publish-panel__toggle,span.pp-recaption-prepublish-button',function(){RvySetPublishButtonCaption('',false,true);});}else{RvySetPublishButtonCaption(rvyObjEdit.publish,false,true);} +$('select.editor-post-author__select').parent().hide();$('button.editor-post-trash').parent().show();$('button.editor-post-switch-to-draft').hide();$('div.components-notice-list').hide();} +if(($('button.editor-post-publish-button').length||$('button.editor-post-publish-panel__toggle').length)){$('button.editor-post-publish-button').hide();$('button.editor-post-publish-panel__toggle').hide();}} +var RvyInitInterval=setInterval(RvyInitializeBlockEditorModifications,50);var RvyHideElements=function(){var ediv='div.edit-post-sidebar ';if($(ediv+'div.edit-post-post-visibility,'+ediv+'div.editor-post-link,'+ediv+'select.editor-post-author__select:visible,'+ediv+'div.components-base-control__field input[type="checkbox"]:visible,'+ediv+'button.editor-post-switch-to-draft,'+ediv+'button.editor-post-trash').length){$(ediv+'select.editor-post-author__select').parent().hide();$(ediv+'button.editor-post-trash').parent().show();$(ediv+'button.editor-post-switch-to-draft').hide();$(ediv+'div.editor-post-link').parent().hide();$(ediv+'div.components-notice-list').hide();if(!rvyObjEdit.scheduledRevisionsEnabled){$(ediv+'div.edit-post-post-schedule').hide();} +$(ediv+'#publishpress-notifications').hide();$('#icl_div').closest('div.edit-post-meta-boxes-area').hide();} +if($('button.editor-post-publish-button').length){$('button.editor-post-publish-button').hide();}} +var RvyHideInterval=setInterval(RvyHideElements,50);var RvySubmissionUI=function(){if($('div.edit-post-post-schedule').length){var refSelector='div.edit-post-post-schedule';}else{var refSelector='div.edit-post-post-visibility';} +if(rvyObjEdit.ajaxurl&&!$('div.edit-post-revision-status').length&&$(refSelector).length){$(refSelector).before('
    ' ++''+rvyObjEdit.statusLabel+'' ++'
    ' ++rvyObjEdit[rvyObjEdit.currentStatus+'StatusCaption'] ++'
    ' ++'
    ');if(rvyObjEdit[rvyObjEdit.currentStatus+'ActionURL']){var url=rvyObjEdit[rvyObjEdit.currentStatus+'ActionURL'];}else{var url='javascript:void(0)';} +if(rvyObjEdit[rvyObjEdit.currentStatus+'ActionCaption']){$(refSelector).after('');} +if(RvyApprovalLocked!=$('button.revision-approve').prop('disabled')){if(RvyApprovalLocked){$('button.revision-approve').html('Revision needs update.');}else{$('button.revision-approve').html(rvyObjEdit[rvyObjEdit.currentStatus+'ActionCaption']);}} +$('button.revision-approve').prop('disabled',RvyApprovalLocked&&('pending'==rvyObjEdit.currentStatus));$('.edit-post-post-schedule__toggle').after('');if(rvyObjEdit[rvyObjEdit.currentStatus+'DeletionURL']){$('button.editor-post-trash').wrap('');}} +$('button.post-schedule-footnote').toggle(!/\d/.test($('button.edit-post-post-schedule__toggle').html()));} +var RvyUIInterval=setInterval(RvySubmissionUI,100);var RvyApprovalLocked=false;$(document).on('click','div.edit-post-visual-editor *, div.editor-inserter *',function(){if('pending'==rvyObjEdit.currentStatus){RvyApprovalLocked=true;$('button.revision-approve').prop('disabled',true);}});$(document).on('click','button.edit-post-post-schedule__toggle',function(){RvyApprovalLocked=true;$('button.revision-approve').prop('disabled',true);});$(document).on('click','button.editor-post-save-draft',function(){RvyApprovalLocked=false;$('button.revision-approve').prop('disabled',false);$('button.revision-approve').html(rvyObjEdit[rvyObjEdit.currentStatus+'ActionCaption']);});function RvyGetRandomInt(max){return Math.floor(Math.random()*max);} +$(document).on('click','div.postbox-container',function(){$('button.revision-approve').prop('disabled','disabled');});$(document).on('click','button.revision-approve',function(){if(!rvyObjEdit[rvyObjEdit.currentStatus+'ActionURL']){var revisionaryCreateDone=function(){$('.revision-approve').hide();$('.revision-created').show();rvyObjEdit.currentStatus='pending';$('.rvy-current-status').html(rvyObjEdit[rvyObjEdit.currentStatus+'StatusCaption']);$('a.revision-edit').attr('href',rvyObjEdit[rvyObjEdit.currentStatus+'CompletedURL']).show();} +var revisionaryCreateError=function(data,txtStatus){$('div.rvy-creation-ui').html(rvyObjEdit[rvyObjEdit.currentStatus+'ErrorCaption']);} +var data={'rvy_ajax_field':rvyObjEdit[rvyObjEdit.currentStatus+'AjaxField'],'rvy_ajax_value':wp.data.select('core/editor').getCurrentPostId(),'nc':RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryCreateDone,error:revisionaryCreateError});}});var RvyRecaptionSaveDraft=function(){if($('button.editor-post-save-draft:not(.rvy-recaption)').length){RvyRecaptionElement('button.editor-post-save-draft:not(.rvy-recaption)',rvyObjEdit.saveRevision);$('button.editor-post-save-draft:not(.rvy-recaption)').addClass('rvy-recaption').removeClass('is-tertiary').addClass('is-primary').addClass('ppr-purple-button');} +if(($('div.edit-post-header__settings a.editor-post-preview:visible').length||$('div.block-editor-post-preview__dropdown button.block-editor-post-preview__button-toggle:visible').length)&&!$('a.rvy-post-preview').length){if(rvyObjEdit.viewURL&&$('.block-editor-post-preview__button-toggle').length){if($('div.edit-post-header-preview__grouping-external').length==1){var svgElem=$('div.edit-post-header-preview__grouping-external a svg').clone()[0].outerHTML;$('div.edit-post-header-preview__grouping-external').after('');} +if(rvyObjEdit.viewCaption){RvyRecaptionElement('.block-editor-post-preview__button-toggle',rvyObjEdit.viewCaption);$('button.block-editor-post-preview__button-toggle:not(.ppr-purple-button)').removeClass('is-tertiary').addClass('is-secondary').addClass('ppr-purple-button');}} +if(rvyObjEdit.viewTitle){$('div.edit-post-header__settings a.rvy-post-preview').attr('title',rvyObjEdit.viewTitle);}}else{if(!rvyObjEdit.multiPreviewActive){if(!$('a.editor-post-preview').next('a.rvy-post-preview').length){original=$('div.edit-post-header__settings a.editor-post-preview');$(original).after(original.clone().attr('href',rvyObjEdit.viewURL).attr('target','_blank').removeClass('editor-post-preview').addClass('rvy-post-preview').css('margin','0 10px 0 10px'));if(rvyObjEdit.viewCaption){RvyRecaptionElement('div.edit-post-header__settings a.rvy-post-preview',rvyObjEdit.viewCaption);} +if(rvyObjEdit.viewTitle){$('div.edit-post-header__settings a.rvy-post-preview').attr('title',rvyObjEdit.viewTitle);}} +if(rvyObjEdit.previewTitle&&!$('a.editor-post-preview').attr('title')){$('div.edit-post-header__settings a.editor-post-preview').attr('title',rvyObjEdit.previewTitle);}}} +if(rvyObjEdit.revisionEdits&&$('div.edit-post-sidebar a.editor-post-last-revision__title:visible').length&&!$('div.edit-post-sidebar a.editor-post-last-revision__title.rvy-recaption').length){$('div.edit-post-sidebar a.editor-post-last-revision__title').html(rvyObjEdit.revisionEdits);$('div.edit-post-sidebar a.editor-post-last-revision__title').addClass('rvy-recaption');}} +var RvyRecaptionSaveDraftInterval=setInterval(RvyRecaptionSaveDraft,100);}); \ No newline at end of file From d73346c9d9e57f767a807fe6d9e2f3019abda452 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Thu, 30 Sep 2021 14:22:57 -0400 Subject: [PATCH 122/193] Update language files --- languages/revisionary-be_BY.mo | Bin 29813 -> 4335 bytes languages/revisionary-be_BY.po | 2428 ++++++++++++++++++++++++-------- languages/revisionary-de_DE.mo | Bin 34017 -> 21122 bytes languages/revisionary-de_DE.po | 2089 +++++++++++++++------------ languages/revisionary-en_US.mo | Bin 663 -> 663 bytes languages/revisionary-en_US.po | 463 +++--- languages/revisionary-fr_FR.mo | Bin 32665 -> 536 bytes languages/revisionary-fr_FR.po | 340 +---- languages/revisionary-it_IT.mo | Bin 31675 -> 537 bytes languages/revisionary-it_IT.po | 340 +---- languages/revisionary-sv_SV.mo | Bin 33929 -> 36014 bytes languages/revisionary-sv_SV.po | 16 +- languages/revisionary.pot | 459 +++--- 13 files changed, 3612 insertions(+), 2523 deletions(-) diff --git a/languages/revisionary-be_BY.mo b/languages/revisionary-be_BY.mo index 28e11bfdaf68dcb834be7cd2b42c1128f8d6ab53..2d66d2e505b1a71831cadf678f9472f521c64395 100644 GIT binary patch delta 1455 zcmXxjUu+ab90%|z6s}yM2ec=a@@L!9VmW*Eu1A#P()7=PpZKR1&mc40j_ITbiVw!55Tid^9~57RK4{dcG#X7wj1gk=VK?!?8smdLXksEUu^L~9-{0Ob>F#G{ zI{Vw-{$_6N_l7&2b3boyTo7pcaqYr2*&xJ0cx4@KXlK?7k$^gkz^kwf7vM&C7jA$X z8im*ao8e~I4Wn=X^18!tI~;}2!711-#GLpZot>EY6LO$UxZMY15L2QT@`DMu2@XL{ zgdB$;C;UO(AK?hb8| z??U{Ec1&)A8stD}ct0$_CTPG8RL_E^Fn$SHbNrv+SMZPe_(PN@iua3~=y1m0Kz{KW zzIhcRfzK!J`BQga;drP!^PFP*HGQCtQ?rD#aqM;?+lZ~wuk41&j!vY zAGWZy;@*i1MHX$m|6JO8ZBMjZv96gG>rL>a?*S_!-ERB@fqRm!7hc3 zzgYC7_9^XrRl25BnrUl2X^fRLXfD58JGx$=Uk@E=W8q=9v^loaE-^27wM@HEfS z@^VJ6TAt#maBaQkxHQ&xh!*?KQ1ZanH1SYZlVe+^EwdU01AD2Q>ZXNMp{Z&s-rFS9#hSh`YD@!aOYEJ|)z)sj?ET77t`#edEJ)L#x> z_E-FsV3B^!-rDlIzZAR`Tn=9GZv^wyF|>#Dp~vE{2J`+6f64zMSPWhauGIE{hR5UU z{AKDY{7uP|6V2CxMgMdECNHA3Vqfe!!n}ZoKCV4Plcy7OH rKY4uSU<0k$1$x$Lp*POw>09?OY3iN$iodMk>3RPnM0g&F@vHv_ZZj*U literal 29813 zcmeI5dyrh!o!_rt;FVv1U(4>=z7`0iSkn^1*f5d>k`N#)30V&tY#h0#`_4?Gp6+(v zZVkh(Z3$TdBZ0)jVr_%KI8Jse4-n{KNk}A>wUf$jT;1MO%Ffotm1JL)+NwBSm$Q}q zC!g={oOAnjPme&hlS-=6#hu^W+vlG1JHOxe_q=z+f4uCCUyb-Y$MIVni{BJQKZdTD z#}7W=d0Q0y2J{s4PUydb&WDb?J&O1*+Qg3q(CyHr(7n(q^aOMb^on;x(TAWD(Dypg)C*pG)2qMQ?>Jgo=;rpezyH1bs8~6Hv|b zY3N#L5vuk65%eVbQHP|dL8s%K(B}X59r6BOW)(h*Pwe}A4ShY zujTr6m%H^UP|2qW{W$b@q4z-l4Ejar9VkQc_&)UCLg)Qv6!BH`L#XuhQ>gBL8_E>D z*3-M7(%YAyZ-PDt75~2ng@x!0^hW3ppql?OgmejV+z9P(zWx1f{L&9Nd98uIk?WhF zS3tM<>ocD2gZ?_#ABSEA{U=aV68$k0kwt$FmE8X)^exbfV|V^e=!=}kQ1Sc6P#_om z9IAER_(7+qg;3icbcE}7L6<=vfNH+eP|4$aP_6f$JpDQJGS1(^Q$0@ZyR zq2l|~&={IRb^jAkL>v7+6zD|Xg=*Z7p!Y$43cc+0Q8WdUzsC74m=iu9f@+_SLA8%( zpjz*rLdD-7K^H>*5~_JGL0DHpuY~?SbRDz={Tt|A&`(_*MJu64p|YQ!h`x@wn1mtG z&0G{7c0k4NUZ~djCiFwlm!ZP{UqLnQqQB>^$Iw-ruZOOOJ_40}{0a0k(7%C-?>m@e zF|-Cnl+ib!-(}xtp$~Gtr{MJQ)+O%#QRqCbZ-(L$qR&EsSX6~d{$GI#|6hlG1p0kw z3;L#|QS@QxeNaRjJr5P%KY$7cKY_wh^sZ~1+-`(QPg|gp`y^ERZa{_8{hl6zUc~uV zp_f9Rf@+`t3@Uwo&(j}6W&eK*g{A0qfa|h1;FF*le>2AY73kei;qEV>n0RzKo6z_r z(2qj5L%$1s68byP&vJ1K^glomSyZ^*?eo)6$^Rf!^K_xY!(T!-LH`cA8oK_5DB21= z2>l%N&!Cd)+EGWhLU(aqg8oZ=4}CNG`8|wUGPjMrI+6VOh72Q8Y+J7fJ)B4 z4b?us2E|09qtHvCUFapy{{r0${TcKr=zTXjy}tLRDEj-He;E4P(8r;lgua8#ZHA6R z?}na&-U)pVo0@{wq4VApMSlu?fb+k))$!Z7&H2$UK_$QA(4Rn;t&5`n4!z=bx6Zpi z4i;Y*MUO&-kC6=yho69Ioi9Phpg)9GpvyNp|M6|8?DG$y+V>BkvZJ3vCFl3u;b;?j zn)&|~bOL(+C!AdVE1Qy?%|oe@%T-X};iFK=^&Y6^eGGaH^aZGJ`=6ngLf^(BI{yGv z<8Ft35IPB!{2zj@W4-5~YdHVwZO(3&B2?k*cBt(5J}4|jPe2h}^cT=iK@0p4fBT?7 zA$kt_G3cK{fllB z@HF%U=Rf+K^EZcz4nLQpTp$rW0R3CWb)lN)-;|vmE>4`ESpr?e^%4{)L=QtHk3aF( zFCWLYIbQ>vfIbMl5Bd}62cSE+_yBZ2bQScSlP+#3au7>^? zim0RcO*hXMpbI$vHuP=KKZMF}{|G9aUX(ij_Fky)A49eN2=oT%Ht2QGgU|x>yHNS1 zpF!_|&THWlq57~D`#ix<+15Ock8nt@+T$_~={kI*=Qnfg4;P?X>r#%-aO~mGTKUf% zoM=DdP4YX!A-%zleXilB_Akud#IcY=`uQ9O5U`KzYnlU7%0ANVN)E~7T^y3dRUF~7 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 diff --git a/languages/revisionary-be_BY.po b/languages/revisionary-be_BY.po index 3bb78ee1..fea1c36e 100644 --- a/languages/revisionary-be_BY.po +++ b/languages/revisionary-be_BY.po @@ -2,757 +2,2075 @@ msgid "" msgstr "" "Project-Id-Version: Revisionary\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-12 09:35-0500\n" +"POT-Creation-Date: 2021-09-30 14:20-0400\n" "PO-Revision-Date: \n" -"Last-Translator: FatCow \n" +"Last-Translator: Kevin Behrens \n" "Language-Team: Marcis G. \n" +"Language: be_BY\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: Belarusian\n" -"X-Poedit-Country: BELARUS\n" -"X-Poedit-SourceCharset: utf-8\n" -"X-Poedit-Basepath: E:\\www\\wp29c\\wp-content\\plugins\\revisionary\\\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-Basepath: ..\n" "X-Poedit-KeywordsList: __;_e;_c;__ngettext;_n;rvy_po_trigger\n" -"X-Poedit-SearchPath-0: E:\\www\\wp29c\\wp-content\\plugins\\revisionary\n" -"X-Poedit-SearchPath-1: E:\\www\\wp29c\\wp-content\\plugins\\revisionary\\admin\n" -"X-Poedit-SearchPath-2: E:\\www\\wp29c\\wp-content\\plugins\\revisionary\\lib\n" +"X-Generator: Poedit 2.4.3\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPath-1: admin\n" +"X-Poedit-SearchPath-2: classes\n" +"X-Poedit-SearchPath-3: includes\n" + +#: admin/RevisionEditSubmitMetabox.php:62 admin/class-list-table_rvy.php:872 +msgid "Delete Permanently" +msgstr "" + +#: admin/RevisionEditSubmitMetabox.php:64 +msgid "Move to Trash" +msgstr "" + +#: admin/RevisionEditSubmitMetabox.php:85 +#: admin/edit-revision-classic-ui_rvy.php:30 +#: admin/edit-revision-classic-ui_rvy.php:65 +#: admin/edit-revision-classic-ui_rvy.php:68 +#: admin/edit-revision-classic-ui_rvy.php:74 +#: admin/edit-revision-classic-ui_rvy.php:75 +#: admin/post-editor-workflow-ui_rvy.php:22 rvy_init.php:226 rvy_init.php:237 +#: rvy_init.php:248 +#, fuzzy +#| msgid "Revisions" +msgid "Update Revision" +msgstr "Рэдакцыі" + +#: admin/RevisionEditSubmitMetabox.php:114 +#: admin/edit-revision-classic-ui_rvy.php:99 admin/post-edit_rvy.php:79 +#: admin/post-editor-workflow-ui_rvy.php:44 +msgid "View / Publish" +msgstr "" + +#: admin/RevisionEditSubmitMetabox.php:114 +#: admin/edit-revision-classic-ui_rvy.php:99 admin/history_rvy.php:1072 +#: admin/post-edit_rvy.php:79 admin/post-editor-workflow-ui_rvy.php:44 +msgid "View / Approve" +msgstr "" + +#: admin/RevisionEditSubmitMetabox.php:115 +#: admin/edit-revision-classic-ui_rvy.php:100 admin/post-edit_rvy.php:98 +msgid "View / moderate saved revision" +msgstr "" + +#: admin/RevisionEditSubmitMetabox.php:117 admin/class-list-table_rvy.php:574 +#: admin/edit-revision-classic-ui_rvy.php:102 +#: admin/edit-revision-classic-ui_rvy.php:106 admin/history_rvy.php:1074 +#: admin/post-edit_rvy.php:82 +#, fuzzy +msgid "View" +msgstr "Глядзець гэта ў мэнэджару версій" + +#: admin/RevisionEditSubmitMetabox.php:118 +#: admin/edit-revision-classic-ui_rvy.php:103 admin/post-edit_rvy.php:101 +msgid "View saved revision" +msgstr "" + +#: admin/RevisionEditSubmitMetabox.php:140 +msgid "Status:" +msgstr "" + +#: admin/RevisionEditSubmitMetabox.php:173 +msgid "M j, Y @ G:i" +msgstr "" + +#: admin/RevisionEditSubmitMetabox.php:178 +#, fuzzy, php-format +#| msgid "Schedule for:" +msgid "Scheduled for: %s" +msgstr "Запланавана для:" + +#: admin/RevisionEditSubmitMetabox.php:181 +#, fuzzy, php-format +#| msgid "Published on:" +msgid "Publish on: %s" +msgstr "Апублікавана:" + +#: admin/RevisionEditSubmitMetabox.php:184 +#: admin/edit-revision-classic-ui_rvy.php:179 +msgid "Publish on approval" +msgstr "" + +#: admin/RevisionEditSubmitMetabox.php:190 admin/class-list-table_rvy.php:550 +#: admin/class-list-table_rvy.php:1175 admin/history_rvy.php:1116 +#: front_rvy.php:269 +msgid "Edit" +msgstr "" + +#: admin/admin-init_rvy.php:126 admin/admin-init_rvy.php:202 +msgid "Sorry, you are not allowed to approve this revision." +msgstr "" + +#: admin/admin-init_rvy.php:167 +msgid "Sorry, you are not allowed to submit this revision." +msgstr "" + +#: admin/admin-init_rvy.php:231 +#, fuzzy +#| msgid "You do not have permission to delete that revision." +msgid "Sorry, you are not allowed to delete this revision." +msgstr "У вас няма правоў для выдалення рэдакцыі." + +#: admin/admin-init_rvy.php:236 +msgid "Error in deleting." +msgstr "" + +#: admin/admin-init_rvy.php:316 +#, php-format +msgid "" +"For more details on setting up PublishPress Revisions, %sread this guide%s." +msgstr "" + +#: admin/admin-init_rvy.php:322 +#, php-format +msgid "" +"Welcome to PublishPress Revisions! Here's how it works:" +"%s
  • \"Contributors\" can submit revisions to their published posts.
  • \"Revisors\" can submit revisions to posts and pages published by " +"others.
  • \"Authors\", \"Editors\" and \"Administrators\" can approve " +"revisions or schedule their own revisions.
  • %s%s%s" +msgstr "" + +#: admin/admin-init_rvy.php:332 +#, php-format +msgid "" +"Revisionary is now PublishPress Revisions! Note the new " +"Revisions menu and %sRevision Queue%s screen, where Change Requests and " +"Scheduled Changes are listed. %s" +msgstr "" + +#: admin/admin-init_rvy.php:358 +msgid "Dismiss" +msgstr "" + +#: admin/admin-posts_rvy.php:27 +msgid "The revision was restored." +msgstr "Версія была адноўлена." + +#: admin/admin-posts_rvy.php:30 +msgid "The revision was scheduled for publication." +msgstr "Рэдакцыя была запланавана для публікацыі." + +#: admin/admin-posts_rvy.php:33 +msgid "The revision was published." +msgstr "Рэдакцыя была апублікавана." + +#: admin/admin-posts_rvy.php:113 admin/class-list-table_rvy.php:434 +#: rvy_init.php:236 +msgid "Change Request" +msgstr "" + +#: admin/admin-posts_rvy.php:130 +#, fuzzy +#| msgid "%1$s Revisions" +msgid "Has Revision" +msgstr "%1$s рэдакцый" + +#: admin/admin-posts_rvy.php:145 admin/admin_rvy.php:172 admin/options.php:102 +#, fuzzy +#| msgid "Revisions" +msgid "Revision Queue" +msgstr "Рэдакцыі" + +#: admin/admin-posts_rvy.php:160 +msgid "New Working Copy" +msgstr "" + +#: admin/admin_lib-mu_rvy.php:10 admin/options.php:213 +msgid "PublishPress Revisions Network Settings" +msgstr "" + +#: admin/admin_lib-mu_rvy.php:10 +msgid "Network Settings" +msgstr "" + +#: admin/admin_lib-mu_rvy.php:21 admin/options.php:215 +#, fuzzy +#| msgid "Revisionary Defaults" +msgid "PublishPress Revisions Network Defaults" +msgstr "Налады Revisionary" + +#: admin/admin_lib-mu_rvy.php:21 +#, fuzzy +#| msgid "Revert to Defaults" +msgid "Network Defaults" +msgstr "Вярнуць да пачатковых" + +#: admin/admin_rvy.php:153 admin/admin_rvy.php:169 +msgid "Revisions" +msgstr "Рэдакцыі" + +#: admin/admin_rvy.php:185 admin/options.php:219 +#, fuzzy +#| msgid "Publish this Pending Revision now." +msgid "PublishPress Revisions Settings" +msgstr "Да публікацыі гэтага Рэдакцыя цяпер." + +#: admin/admin_rvy.php:185 admin/options.php:94 +#, fuzzy +msgid "Settings" +msgstr "Налады будуць ужыты да ўсіх блогаў" + +#: admin/admin_rvy.php:192 admin/admin_rvy.php:193 +msgid "Upgrade to Pro" +msgstr "" + +#: admin/admin_rvy.php:262 +#, php-format +msgid "If you like %s, please leave us a %s rating. Thank you!" +msgstr "" + +#: admin/admin_rvy.php:273 +#, fuzzy +#| msgid "About Revisionary" +msgid "About PublishPress Revisions" +msgstr "О Revisionary" + +#: admin/admin_rvy.php:273 +msgid "About" +msgstr "" + +#: admin/admin_rvy.php:275 +#, fuzzy +#| msgid "Publish this Pending Revision now." +msgid "PublishPress Revisions Documentation" +msgstr "Да публікацыі гэтага Рэдакцыя цяпер." + +#: admin/admin_rvy.php:275 admin/options.php:780 +msgid "Documentation" +msgstr "" + +#: admin/admin_rvy.php:277 +msgid "Contact the PublishPress team" +msgstr "" + +#: admin/admin_rvy.php:277 +msgid "Contact" +msgstr "" + +#: admin/agents_checklist_rvy.php:63 +#, php-format +msgid "show current users (%d)" +msgstr "паказаць бягучых карыстачоў (%d)" + +#: admin/agents_checklist_rvy.php:63 +#, php-format +msgid "show eligible users (%d)" +msgstr "паказаць правы карыстачоў (%d)" + +#: admin/agents_checklist_rvy.php:81 +msgid "filter:" +msgstr "фільтр:" + +#: admin/agents_checklist_rvy.php:90 +msgid "select" +msgstr "абраць" + +#: admin/agents_checklist_rvy.php:95 +msgid "unselect" +msgstr "не выбіраць" + +#: admin/class-list-table_rvy.php:390 +#, fuzzy +#| msgid "Revisions" +msgid "Revision" +msgstr "Гэты перагляд быў апублікаваны %s" + +#: admin/class-list-table_rvy.php:391 admin/post-editor-workflow-ui_rvy.php:25 +msgid "Status" +msgstr "" + +#: admin/class-list-table_rvy.php:392 +msgid "Post Type" +msgstr "" + +#: admin/class-list-table_rvy.php:393 +msgid "Revised By" +msgstr "" + +#: admin/class-list-table_rvy.php:394 +msgid "Submission" +msgstr "" + +#: admin/class-list-table_rvy.php:402 +#, fuzzy +#| msgid "Schedule Now" +msgid "Schedule" +msgstr "Запланавана для:" + +#: admin/class-list-table_rvy.php:405 +#, fuzzy +#| msgid "Published on:" +msgid "Published Post" +msgstr "Апублікавана:" + +#: admin/class-list-table_rvy.php:407 +msgid "Post Author" +msgstr "" + +#: admin/class-list-table_rvy.php:431 rvy_init.php:225 +msgid "Working Copy" +msgstr "" + +#: admin/class-list-table_rvy.php:437 rvy_init.php:247 +#, fuzzy +#| msgid "Schedule Now" +msgid "Scheduled Change" +msgstr "Запланаваць цяпер" + +#: admin/class-list-table_rvy.php:453 admin/class-list-table_rvy.php:1103 +msgid "Y/m/d g:i:s a" +msgstr "" + +#: admin/class-list-table_rvy.php:461 admin/class-list-table_rvy.php:1108 +#: admin/history_rvy.php:987 +#, php-format +msgid "%s ago" +msgstr "" + +#: admin/class-list-table_rvy.php:464 admin/class-list-table_rvy.php:1111 +msgid "Y/m/d g:i a" +msgstr "" + +#: admin/class-list-table_rvy.php:471 +#, fuzzy, php-format +#| msgid "(already scheduled for publication on %s)" +msgid "Scheduled publication: %s" +msgstr "(ужо запланаваны да публікацыі на %s)" + +#: admin/class-list-table_rvy.php:474 +#, fuzzy, php-format +#| msgid "(for publication on %s)" +msgid "Requested publication: %s" +msgstr "(lkz ge,kbrfwbb %s)" + +#: admin/class-list-table_rvy.php:478 +#, fuzzy +#| msgid "Unschedule" +msgid "Missed schedule" +msgstr "Не планаваць" + +#: admin/class-list-table_rvy.php:521 admin/history_rvy.php:781 +msgid "No author" +msgstr "" + +#: admin/class-list-table_rvy.php:561 +#, fuzzy, php-format +#| msgid "View it in Revisions Manager" +msgid "View only revisions of %s" +msgstr "Глядзець гэта ў мэнэджару версій" + +#: admin/class-list-table_rvy.php:562 admin/class-list-table_rvy.php:914 +#, fuzzy +#| msgid "filter:" +msgid "Filter" +msgstr "фільтр:" + +#: admin/class-list-table_rvy.php:573 admin/class-list-table_rvy.php:581 +#, fuzzy +#| msgid "It will be published on %s" +msgid "View published post" +msgstr "Гэта было апублікавана %s" + +#: admin/class-list-table_rvy.php:582 admin/class-list-table_rvy.php:1201 +#: admin/history_rvy.php:1169 admin/revision-ui_rvy.php:275 +msgid "Preview" +msgstr "" + +#: admin/class-list-table_rvy.php:605 +#, fuzzy +#| msgid "Restore this Past Revision" +msgid "Compare Past Revisions" +msgstr "Воостановлено з прошл. рэдакцыі" + +#: admin/class-list-table_rvy.php:606 +msgid "History" +msgstr "" + +#: admin/class-list-table_rvy.php:768 +#, php-format +msgid "%sMy Copies & Changes%s (%s)" +msgstr "" + +#: admin/class-list-table_rvy.php:802 +#, php-format +msgid "%sMy Published Posts%s(%s)" +msgstr "" + +#: admin/class-list-table_rvy.php:837 +#, php-format +msgid "All %s" +msgstr "" + +#: admin/class-list-table_rvy.php:861 front_rvy.php:312 +#, fuzzy +msgid "Submit" +msgstr "" +"%1$s Submit a case study%2$s, растлумачыўшы, якім чынам гэтыя ўбудовы " +"дапамогуць вам зрабіць нешта выдатнае і пахвальна." + +#: admin/class-list-table_rvy.php:864 admin/history_rvy.php:1072 +#: front_rvy.php:331 +msgid "Approve" +msgstr "" + +#: admin/class-list-table_rvy.php:865 +#, fuzzy +#| msgid "Published:" +msgid "Publish" +msgstr "Да публікацыі гэтага Рэдакцыя цяпер." + +#: admin/class-list-table_rvy.php:868 admin/revision-ui_rvy.php:280 +msgid "Unschedule" +msgstr "Не планаваць" + +#: admin/class-list-table_rvy.php:893 +msgid "Filter by category" +msgstr "" + +#: admin/class-list-table_rvy.php:958 +msgid "Filter by date" +msgstr "" + +#: admin/class-list-table_rvy.php:960 +msgid "All dates" +msgstr "" + +#: admin/class-list-table_rvy.php:1019 +#, fuzzy +#| msgid "select" +msgid "Select All" +msgstr "абраць" + +#: admin/class-list-table_rvy.php:1091 +#, fuzzy, php-format +#| msgid "“%1$s” (Current Revision)" +msgid "“%s” (Edit)" +msgstr "“%1$s” (Бягучая рэдакцыя)" + +#: admin/class-list-table_rvy.php:1184 +#, fuzzy +#| msgid "Current Revision" +msgid "Delete Revision" +msgstr "У вас няма правоў для выдалення рэдакцыі." + +#: admin/class-list-table_rvy.php:1185 admin/revision-ui_rvy.php:411 +msgid "Delete" +msgstr "Выдаліць" + +#: admin/class-list-table_rvy.php:1200 +#, fuzzy +#| msgid "Pending Revisions" +msgid "Preview Revision" +msgstr "Pending Revisions" + +#: admin/class-list-table_rvy.php:1213 +msgid "Compare Changes" +msgstr "" + +#: admin/edit-revision-block-ui_rvy.php:20 +msgid "Enable public preview" +msgstr "" + +#: admin/edit-revision-classic-ui_rvy.php:33 admin/post-edit_rvy.php:26 +#: admin/post-edit_rvy.php:64 +#, fuzzy +#| msgid "Current Revision" +msgid "Current Time" +msgstr "Бягучая рэдакцыя" + +#: admin/edit-revision-classic-ui_rvy.php:43 +#: admin/edit-revision-classic-ui_rvy.php:46 +#: admin/edit-revision-classic-ui_rvy.php:52 +#: admin/edit-revision-classic-ui_rvy.php:53 +msgid "Submit Changes" +msgstr "" + +#: admin/edit-revision-classic-ui_rvy.php:47 +msgid "Submit Change Schedule" +msgstr "" + +#: admin/edit-revision-classic-ui_rvy.php:107 +#: admin/post-editor-workflow-ui_rvy.php:58 +msgid "View unsaved changes" +msgstr "" + +#: admin/edit-revision-classic-ui_rvy.php:113 +#, fuzzy, php-format +#| msgid "%1$s Revisions" +msgid "Edit %s Revision" +msgstr "%1$s рэдакцый" + +#: admin/edit-revision-classic-ui_rvy.php:209 +msgid "Compare this revision to published copy, or to other revisions" +msgstr "" + +#: admin/edit-revision-classic-ui_rvy.php:222 +#, php-format +msgid "Revision updated. %sView Preview%s" +msgstr "" + +#: admin/edit-revision-classic-ui_rvy.php:224 +#, fuzzy +#| msgid "The revision was updated." +msgid "Revision updated." +msgstr "Версія была обнавлена." + +#: admin/filters-admin-ui-item_rvy.php:26 admin/options.php:101 +#: admin/revisions.php:221 rvy_init.php:237 +msgid "Change Requests" +msgstr "" + +#: admin/filters-admin-ui-item_rvy.php:32 admin/options.php:100 +#: admin/revisions.php:224 rvy_init.php:248 +#, fuzzy +#| msgid "Scheduled Revisions" +msgid "Scheduled Changes" +msgstr "Запланаваныя рэдакцыі" + +#: admin/history_rvy.php:158 +#, fuzzy, php-format +#| msgid "Revision of “%1$s”" +msgid "Compare %s of “%s”" +msgstr "Рэдакцыя “%1$s”" + +#: admin/history_rvy.php:159 +#, fuzzy +#| msgid "Return to Edit Posts" +msgid "← Return to editor" +msgstr "Вярнуцца да рэдагавання пастоў" + +#: admin/history_rvy.php:436 admin/history_rvy.php:439 +msgid "(no title)" +msgstr "" + +#: admin/history_rvy.php:525 admin/options.php:545 +#, fuzzy +#| msgid "Publish Date" +msgid "Post Date" +msgstr "Дата публікацыі" + +#: admin/history_rvy.php:526 +msgid "Post Parent" +msgstr "" + +#: admin/history_rvy.php:527 +msgid "Menu Order" +msgstr "" + +#: admin/history_rvy.php:528 +msgid "Comment Status" +msgstr "" + +#: admin/history_rvy.php:529 +msgid "Ping Status" +msgstr "" + +#: admin/history_rvy.php:664 +msgid "Page Template" +msgstr "" + +#: admin/history_rvy.php:667 +#, fuzzy +#| msgid "Features" +msgid "Featured Image" +msgstr "Функцыі" + +#: admin/history_rvy.php:676 +msgid "Beaver Builder Data" +msgstr "" + +#: admin/history_rvy.php:677 +msgid "Beaver Builder Settings" +msgstr "" + +#: admin/history_rvy.php:914 +#, fuzzy +#| msgid "Schedule for:" +msgid "Scheduled for " +msgstr "(ужо запланаваны да публікацыі на %s)" + +#: admin/history_rvy.php:919 +#, fuzzy +msgid "Requested for " +msgstr "Запытаная дата публікацыі: %1$s" + +#: admin/history_rvy.php:924 +#, fuzzy +msgid "Modified " +msgstr "Даце апошняй змены (націсніце, каб прагледзець / аднавіць)" + +#: admin/history_rvy.php:929 +#, php-format +msgid "%s%s ago" +msgstr "" + +#: admin/history_rvy.php:929 +#, php-format +msgid "%s%s from now" +msgstr "" + +#: admin/history_rvy.php:940 +msgid "M j, Y @ g:i a" +msgstr "" + +#: admin/history_rvy.php:985 +msgid "M j, Y @ H:i" +msgstr "" + +#: admin/history_rvy.php:1168 +#, fuzzy +#| msgid "Review it here: " +msgid "Preview / Restore" +msgstr "Глядзець гэта тут:" + +#: admin/history_rvy.php:1175 +msgid "Manage" +msgstr "" + +#: admin/history_rvy.php:1176 +msgid "List" +msgstr "" + +#: admin/options.php:94 +#, fuzzy +#| msgid "Option Scope" +msgid "Setting Scope" +msgstr "Опцыя вобласці" + +#: admin/options.php:98 +msgid "Role Definition" +msgstr "" + +#: admin/options.php:99 admin/revisions.php:218 rvy_init.php:226 +msgid "Working Copies" +msgstr "" + +#: admin/options.php:103 +msgid "Preview / Approval" +msgstr "" + +#: admin/options.php:104 +#, fuzzy +#| msgid "Revisionary Options" +msgid "Revision Options" +msgstr "Опцыі Revisionary" + +#: admin/options.php:105 +msgid "Email Notification" +msgstr "Email апавяшчэнне" + +#: admin/options.php:112 +msgid "Working Copies require role capability" +msgstr "" + +#: admin/options.php:113 +msgid "Enable Change Requests" +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/front_rvy.php:106 +#: admin/options.php:114 +msgid "Enable Scheduled Changes" +msgstr "" + +#: admin/options.php:115 +msgid "Change Requests require role capability" +msgstr "" + +#: admin/options.php:116 +msgid "Editing others' revisions requires role capability" +msgstr "" + +#: admin/options.php:117 +msgid "Listing others' revisions requires role capability" +msgstr "" + +#: admin/options.php:118 +msgid "Users can always administer revisions to their own editable posts" +msgstr "" + +#: admin/options.php:119 +msgid "Compatibility Mode" +msgstr "" + +#: admin/options.php:120 +msgid "Also notify on Revision Update" +msgstr "" + +#: admin/options.php:121 +msgid "Revision Publication: API actions to mimic Post Update" +msgstr "" + +#: admin/options.php:122 +msgid "Hide html tags on Compare Revisions screen" +msgstr "" + +#: admin/options.php:123 +msgid "Asynchronous Publishing" +msgstr "Асінхронная публікацыя" + +#: admin/options.php:124 admin/options.php:125 +#, fuzzy +#| msgid "Publish Date" +msgid "Update Publish Date" +msgstr "Дата публікацыі" + +#: admin/options.php:126 admin/options.php:127 +msgid "Update Modified Date" +msgstr "" + +#: admin/options.php:128 +#, fuzzy +#| msgid "Email original Author when a Pending Revision is submitted" +msgid "Email original Author when a Change Request is submitted" +msgstr "Пісаць аўтару, калі версія рэдакцыі адпраўлена" + +#: admin/options.php:129 +#, fuzzy +#| msgid "Email the original Author when a Pending Revision is approved" +msgid "Email the original Author when a Change Request is approved" +msgstr "Пісаць аўтару, калі версія рэдакцыі зацверджана" + +#: admin/options.php:130 +#, fuzzy +#| msgid "Email the Revisor when a Pending Revision is approved" +msgid "Email the Revisor when a Change Request is approved" +msgstr "Email Рэвізор пры чаканні рэдакцыі зацверджаны" + +#: admin/options.php:131 +#, fuzzy +#| msgid "Email the original Author when a Scheduled Revision is published" +msgid "Email the original Author when a Scheduled Change is published" +msgstr "Email аўтара арыгінальнай калі раскладу рэдакцыя публікуецца" + +#: admin/options.php:132 +#, fuzzy +#| msgid "Email the Revisor when a Scheduled Revision is published" +msgid "Email the Revisor when a Scheduled Change is published" +msgstr "Email аўтара арыгінальнай калі раскладу публікуецца" + +#: admin/options.php:133 +#, fuzzy +#| msgid "Email Notification" +msgid "Enable notification buffer" +msgstr "Email апавяшчэнне" + +#: admin/options.php:134 +msgid "All custom post types available to Revisors" +msgstr "" + +#: admin/options.php:135 +msgid "Prevent Revisors from editing other user's drafts" +msgstr "" + +#: admin/options.php:136 +msgid "Display Hints" +msgstr "" + +#: admin/options.php:137 +msgid "Show Preview Links" +msgstr "" + +#: admin/options.php:138 +msgid "Preview Link Type" +msgstr "" + +#: admin/options.php:139 +msgid "Approve Button on Compare Revisions screen" +msgstr "" + +#: admin/options.php:140 +#, fuzzy +#| msgid "The revision was published." +msgid "Copy revision comments to published post" +msgstr "Рэдакцыя была апублікавана." + +#: admin/options.php:141 +msgid "Compare Past Revisions ordering:" +msgstr "" + +#: admin/options.php:147 +#, fuzzy +#| msgid "Email designated Publishers when a Pending Revision is submitted" +msgid "Email designated Publishers when a Change Request is submitted" +msgstr "Email, прызначаны выдавецтву, калі рэдакцыя ўяўляецца" + +#: admin/options.php:148 +#, fuzzy +#| msgid "Email designated Publishers when a Scheduled Revision is published" +msgid "Email designated Publishers when a Scheduled Change is published" +msgstr "Email, прызначаны выдавецтву, калі запланаваная рэдакцыя публікуецца" + +#: admin/options.php:149 +#, fuzzy +#| msgid "Email designated Publishers when a Scheduled Revision is published" +msgid "Email designated Publishers when a Change Request is approved" +msgstr "Email, прызначаны выдавецтву, калі запланаваная рэдакцыя публікуецца" + +#: admin/options.php:151 +#, fuzzy +#| msgid "" +#| "Email Editors and Administrators when a Pending Revision is submitted" +msgid "Email Editors and Administrators when a Change Request is submitted" +msgstr "" +"Адпраўляць email рэдактарам і адміністратарам, калі рэдакцыя адпраўляецца" + +#: admin/options.php:152 +#, fuzzy +#| msgid "" +#| "Email Editors and Administrators when a Scheduled Revision is published" +msgid "Email Editors and Administrators when a Scheduled Change is published" +msgstr "" +"Адпраўляць email рэдактарам і адміністратарам, калі запланаваная рэдакцыя " +"публікуецца" + +#: admin/options.php:153 +#, fuzzy +#| msgid "" +#| "Email Editors and Administrators when a Scheduled Revision is published" +msgid "Email Editors and Administrators when a Change Request is approved" +msgstr "" +"Адпраўляць email рэдактарам і адміністратарам, калі запланаваная рэдакцыя " +"публікуецца" + +#: admin/options.php:217 +#, fuzzy +#| msgid "Revisionary Site Options" +msgid "PublishPress Revisions Site Settings" +msgstr "Revisionary налады сайта" + +#: admin/options.php:225 admin/options.php:898 +msgid "Update »" +msgstr "Абнавіць »" + +#: admin/options.php:239 +#, fuzzy +#| msgid "" +#| "These are the default settings for options which can be " +#| "adjusted per-blog." +msgid "" +"These are the default settings for options which can be " +"adjusted per-site." +msgstr "" +"Гэта defaultналады для опцый, якія могуць быць скарэктаваны " +"за блог." + +#: admin/options.php:276 #, php-format -msgid "This Revision was Published on %s" -msgstr "Гэты перагляд быў апублікаваны %s" +msgid "You can also specify %1$sdefaults for site-specific settings%2$s." +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/front_rvy.php:112 +#: admin/options.php:277 #, php-format -msgid "(for publication on %s)" -msgstr "(lkz ge,kbrfwbb %s)" +msgid "" +"Use this tab to make NETWORK-WIDE changes to PublishPress " +"Revisions settings. %s" +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/front_rvy.php:113 -msgid "Schedule this Pending Revision" -msgstr "Расклад чакае праверкі" +#: admin/options.php:279 +msgid "" +"Here you can change the default value for settings which are controlled " +"separately on each site." +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/front_rvy.php:117 -msgid "Publish this Pending Revision now." -msgstr "Да публікацыі гэтага Рэдакцыя цяпер." +#: admin/options.php:293 +#, fuzzy, php-format +#| msgid "Note that %1$s site-wide options%2$s may also be available." +msgid "Note that %1$s network-wide settings%2$s may also be available." +msgstr "Запомніце, што %1$s налады %2$s таксама даступныя." + +#: admin/options.php:325 +msgid "" +"The user role \"Revisor\" role is now available. Include capabilities for " +"all custom post types in this role?" +msgstr "" + +#: admin/options.php:330 +msgid "" +"If checked, users lacking site-wide publishing capabilities will also be " +"checked for the edit_others_drafts capability" +msgstr "" + +#: admin/options.php:346 +msgid "" +"This restriction applies to users who are not full editors for the post " +"type. To enable a role, add capabilities: copy_posts, copy_others_pages, etc." +msgstr "" + +#: admin/options.php:351 +msgid "" +"To expand the Posts / Pages listing for non-Editors, add capabilities: " +"list_others_pages, list_published_posts, etc." +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/front_rvy.php:124 +#: admin/options.php:375 #, php-format -msgid "(already scheduled for publication on %s)" -msgstr "(ужо запланаваны да публікацыі на %s)" +msgid "" +"Enable published content to be copied, edited and submitted as Change " +"Requests, managed in %sRevision Queue%s." +msgstr "" + +#: admin/options.php:381 +msgid "" +"This restriction applies to users who are not full editors for the post " +"type. To enable a role, add capabilities: revise_posts, revise_others_pages, " +"etc." +msgstr "" + +#: admin/options.php:384 +msgid "" +"When a change request is published, update post publish date to current time." +msgstr "" + +#: admin/options.php:387 +msgid "" +"When a change request is published, update post modified date to current " +"time." +msgstr "" + +#: admin/options.php:407 +msgid "" +"If a currently published post or page is edited and a future date set, the " +"change will not be applied until the selected date." +msgstr "" +"Калі ў наш час публікуецца паведамленне ці старонка рэдагуецца і будучым " +"усталяваць дату, змены не будуць ужывацца да абранай даты." + +#: admin/options.php:410 +msgid "" +"When a scheduled change is published, update post publish date to current " +"time." +msgstr "" + +#: admin/options.php:413 +msgid "" +"When a scheduled change is published, update post modified date to current " +"time." +msgstr "" + +#: admin/options.php:416 +#, fuzzy +#| msgid "" +#| "Publish scheduled revisions asynchronously, via a secondary http request " +#| "from the server. This is normally preferable as it eliminates delay, but " +#| "some servers do not support it." +msgid "" +"Publish scheduled changes asynchronously, via a secondary http request from " +"the server. This is usually best since it eliminates delay, but some " +"servers may not support it." +msgstr "" +"Апублікаваць запланаваныя змены ў асінхронным рэжыме, праз другі запыт HTTP " +"ад сервера. Гэта, як правіла, пераважней, бо ўхіляе затрымкі, але некаторыя " +"серверы не падтрымліваюць яго." + +#: admin/options.php:434 +msgid "" +"This restriction applies to users who are not full editors for the post " +"type. To enable a role, give it the edit_others_revisions capability." +msgstr "" + +#: admin/options.php:437 +msgid "" +"This restriction applies to users who are not full editors for the post " +"type. To enable a role, give it the list_others_revisions capability." +msgstr "" + +#: admin/options.php:440 +msgid "" +"Bypass the above restrictions for others' revisions to logged in user's own " +"posts." +msgstr "" + +#: admin/options.php:443 +msgid "" +"If some revisions are missing from the queue, disable a performance " +"enhancement for better compatibility with themes and plugins." +msgstr "" + +#: admin/options.php:448 +msgid "Regenerate \"post has revision\" flags" +msgstr "" + +#: admin/options.php:464 +msgid "" +"For themes that block revision preview, hide preview links from non-" +"Administrators" +msgstr "" + +#: admin/options.php:476 +#, fuzzy +#| msgid "Published on:" +msgid "Published Post Slug" +msgstr "Апублікавана:" -#: E:\www\wp29c\wp-content\plugins\revisionary/front_rvy.php:125 -msgid "Publish now." -msgstr "Публікаваць." +#: admin/options.php:476 +#, fuzzy +#| msgid "Revisions" +msgid "Revision Slug" +msgstr "Рэдакцыі" + +#: admin/options.php:476 +#, fuzzy +#| msgid "Revisionary" +msgid "Revision ID only" +msgstr "Revisionary" + +#: admin/options.php:487 +msgid "" +"Some themes or plugins may require Revision Slug or Revision ID link type " +"for proper template loading and field display." +msgstr "" + +#: admin/options.php:497 +msgid "If disabled, Compare screen links to Revision Preview for approval" +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/front_rvy.php:130 +#: admin/options.php:517 #, php-format -msgid "(dated %s)" -msgstr "(датуецца %s)" +msgid "" +"For compatibility with Advanced Custom Fields, Beaver Builder and WPML, " +"upgrade to PublishPress Revisions Pro." +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/front_rvy.php:131 -msgid "Restore this Past Revision" -msgstr "Воостановлено з прошл. рэдакцыі" +#: admin/options.php:526 +msgid "This may improve compatibility with some plugins." +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/front_rvy.php:161 -msgid "Current Revision" -msgstr "Бягучая рэдакцыя" +#: admin/options.php:545 +msgid "Modification Date" +msgstr "" + +#: admin/options.php:555 +msgid "Show descriptive captions for PublishPress Revisions settings" +msgstr "" + +#: admin/options.php:575 admin/options.php:637 +msgid "select recipients" +msgstr "абраць атрымальнікаў" + +#: admin/options.php:584 admin/options.php:602 +msgid "Never" +msgstr "Ніколі" + +#: admin/options.php:584 admin/options.php:602 +msgid "By default" +msgstr "Па змаўчанні" + +#: admin/options.php:584 admin/options.php:602 +msgid "Always" +msgstr "Заўсёды" + +#: admin/options.php:666 +msgid "" +"To avoid notification failures, buffer emails for delayed sending once " +"minute, hour or day limits are exceeded" +msgstr "" + +#: admin/options.php:683 +#, fuzzy +#| msgid "Email Notification" +msgid "Notification Buffer" +msgstr "Email апавяшчэнне" + +#: admin/options.php:711 +#, fuzzy +#| msgid "Email Notification" +msgid "Notification Log" +msgstr "Email апавяшчэнне" + +#: admin/options.php:740 +#, fuzzy +#| msgid "Email Notification" +msgid "Purge Notification Buffer" +msgstr "Email апавяшчэнне" + +#: admin/options.php:746 +#, fuzzy +#| msgid "Email Notification" +msgid "Truncate Notification Log" +msgstr "Email апавяшчэнне" -#: E:\www\wp29c\wp-content\plugins\revisionary/revisionary.php:36 +#: admin/options.php:752 #, php-format -msgid "Another copy of Revisionary is already activated (version %1$s in \"%2$s\")" -msgstr "Іншая копія Revisionary ужо актывавана (версія %1$s in \"%2$s\")" +msgid "Sent in last minute: %d / %d" +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/rvy_init.php:31 -msgid "Revisor" -msgstr "Рэвізор" +#: admin/options.php:753 +#, php-format +msgid "Sent in last hour: %d / %d" +msgstr "" + +#: admin/options.php:754 +#, php-format +msgid "Sent in last day: %d / %d" +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/rvy_init.php:381 +#: admin/options.php:761 #, php-format -msgid "Revisionary is not compatible with Role Scoper versions prior to %1$s. Please upgrade or deactivate %2$s Role Scoper%3$s." -msgstr "Revisionary не сумяшчальны з версіямі ролі Scoper да%1$s. Абнавіце ці дэактывуйце %2$s Role Scoper%3$s." +msgid "Seconds until next buffer processing time: %d" +msgstr "" + +#: admin/options.php:770 +msgid "Show Notification Log / Buffer" +msgstr "" + +#: admin/options.php:772 +msgid "Show with message content" +msgstr "" + +#: admin/options.php:813 +#, fuzzy, php-format +#| msgid "sitewide control of \"%s\"" +msgid "network-wide control of \"%s\"" +msgstr "па ўсім сайце кантроль \"%s\"" + +#: admin/options.php:820 +msgid "" +"Specify which PublishPress Revisions Settings to control network-wide. " +"Unselected settings are controlled separately on each site." +msgstr "" + +#: admin/options.php:902 +msgid "" +"All settings in this form (including those on unselected tabs) will be reset " +"to DEFAULTS. Are you sure?" +msgstr "" +"Усе налады ў гэтай форме (у тым ліку па абраных укладках) будзе Аднавіць " +"значэнні па змаўчанні. Вы ўпэўнены?" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/about.php:28 -msgid "unselfish, benevolent love, born of the Spirit." -msgstr "бескарыслівая, добразычлівая каханні, народжаным ад Духу." +#: admin/options.php:907 +msgid "Revert to Defaults" +msgstr "Вярнуць да пачатковых" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/about.php:30 -msgid "Agapé discerns needs and meets them unselfishly and effectively." -msgstr "Agape выяўляе запатрабаванні і задавальняе іх бескарысліва і эфектыўна." +#: admin/post-edit_rvy.php:120 +#, fuzzy, php-format +#| msgid "Scheduled Revisions" +msgid "%sScheduled Changes: %s" +msgstr "Запланаваныя рэдакцыі" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/about.php:33 +#: admin/post-edit_rvy.php:134 #, php-format -msgid "This WordPress plugin is part of my agapé try, a lifelong effort to love God and love people by rightly using the time and abilities He has leant me. As a husband, father, engineer, farmer and/or software developer, I have found this stewardship effort to be often fraught with contradiction. A wise and sustainable balancing of roles has seemed to elude me. Yet I want to keep trying, trusting that if God blesses and multiplies the effort, it will become agapetry, a creative arrangement motivated by benevolent love. A fleeting childlike sketch of the beautiful %1$s chain-breaking agapé%2$s which %3$s Jesus Christ unleashed%4$s so %5$s freely%6$s and aptly on an enslaving, enslaved world." -msgstr "Гэта ўбудова WordPress, гэта частка маёй агапе паспрабаваць, на працягу ўсяго жыцця высілкаў кахаць Бога і кахаць людзей па праве выкарыстання часу і здольнасцяў ён нахіліўся мяне. Як муж, бацька, інжынерам, фермерам і / ці распрацоўніка праграмнага забеспячэння, я знайшоў гэта кіраўніцтва высілкамі, часцяком багатая супярэчнасці. Разумнага і ўстойлівага збалансавання роляў здалося выслізгваць ад мяне. Але я жадаю, каб імкнуцца, мяркуючы, што калі Бог багаслаўляе і памнажае высілкі, яна стане agapetry, творчая кампазіцыя матываваныя добразычлівыя каханні. Мімалётны накід па-дзіцячаму прыгожая%1$s chain-breaking agapé%2$s which %3$s Jesus Christ unleashed%4$s so %5$s freely%6$s and aptly on an enslaving, enslaved world." +msgid "%sChange Requests: %s" +msgstr "" + +#: admin/post-editor-workflow-ui_rvy.php:28 +msgid "(on approval)" +msgstr "" + +#: admin/post-editor-workflow-ui_rvy.php:42 +#, fuzzy +#| msgid "Privately Published:" +msgid "Preview / Publish" +msgstr "Прыватна апублікавана:" + +#: admin/post-editor-workflow-ui_rvy.php:42 +msgid "Preview / Approve" +msgstr "" + +#: admin/post-editor-workflow-ui_rvy.php:47 +msgid "View / Approve saved changes" +msgstr "" + +#: admin/post-editor-workflow-ui_rvy.php:49 +msgid "Preview / Submit" +msgstr "" + +#: admin/post-editor-workflow-ui_rvy.php:49 +msgid "View / Submit" +msgstr "" + +#: admin/post-editor-workflow-ui_rvy.php:50 +msgid "View / Submit saved changes" +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/about.php:35 +#: admin/post-editor-workflow-ui_rvy.php:62 #, php-format -msgid "Although Role Scoper and Revisionary development was a maniacal hermit-like effort, it was only possible because of the clean and flexible %1$s WordPress code base%2$s. My PHP programming skills grew immensely by the good examples set forth there and in plugins such as %3$s NextGen Gallery%4$s. I'm not done learning, and look forward to some real-time cooperation with these and other developers now that my all-consuming quest has reached a stable plateau." -msgstr "Хоць роля Scoper і Revisionary развіцці маніякальна-пустэльнікаў, як высілкі, можна было толькі з-за чыстай і гнуткай %1$s WordPress code base%2$s. My PHP programming skills grew immensely by the good examples set forth there and in plugins such as %3$s NextGen Gallery%4$s. I'm not done learning, and look forward to some real-time cooperation with these and other developers now that my all-consuming quest has reached a stable plateau." +msgid "" +" %s Revision Edit" +msgstr "" + +#: admin/post-editor-workflow-ui_rvy.php:74 +msgid "Error Submitting Changes" +msgstr "" + +#: admin/post-editor-workflow-ui_rvy.php:78 +msgid "Submit Change Request" +msgstr "" + +#: admin/post-editor-workflow-ui_rvy.php:80 +msgid "Changes Submitted." +msgstr "" + +#: admin/post-editor-workflow-ui_rvy.php:81 +#: admin/post-editor-workflow-ui_rvy.php:156 +#: admin/post-editor-workflow-ui_rvy.php:175 +#, fuzzy +msgid "view" +msgstr "Глядзець гэта ў мэнэджару версій" + +#: admin/post-editor-workflow-ui_rvy.php:94 +msgid "Approve Changes" +msgstr "" + +#: admin/post-editor-workflow-ui_rvy.php:97 rvy_init.php:226 rvy_init.php:237 +#: rvy_init.php:248 +#, fuzzy +#| msgid "Publish Date" +msgid "Publish Changes" +msgstr "Дата публікацыі" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/about.php:37 +#: admin/post-editor-workflow-ui_rvy.php:131 #, php-format -msgid "Thanks to %1$sAlberto Ramicciotti%2$s for the Italian translation. I do try to be translator-friendly, but any untranslated captions are due to my flurry of recent additions and changes, and will no doubt be updated soon. Now there must be someone else who wants Revisionary in their language..." -msgstr "Дзякуй %1$sAlberto Ramicciotti%2$s на італьянскі пераклад. Я імкнуся быць перакладнікам зразумелы, але любы неперакладзеныя подпісах з-за майго шквал апошніх даданняў і змен, і, несумнеўна, будзе абноўлена хуткім часам. Зараз павінна быць кімсьці яшчэ, хто жадае Revisionary на іх роднай мове ..." +msgid " %s Change Request" +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/about.php:39 +#: admin/post-editor-workflow-ui_rvy.php:140 #, php-format -msgid "Revisionary is open source software released under the %1$s General Public License (GPL)%2$s. Due to limitations, obligations and non-technical aspirations common to most human beings, I will probably never again pursue uncommissioned plugin development on the scale these plugins has required. However, I do plan to provide some free support, correct bugs which emerge and revise the plugin for future WordPress versions. If it adds value to your website or saves you time and money, you can express appreciation in several ways:" -msgstr "Revisionary гэта адкрытае праграмнае забеспячэнне, якое распаўсюджваецца па %1$s General Public License (GPL)%2$s. З-за абмежаванняў, абавязанняў і нетехнических памкненняў, характэрных для большасці чалавечай істоты, я, напэўна, ніколі больш не праводзіць, даручэнні распрацоўкі ўбудоў на маштаб гэтых убудоў патрабуецца. Аднак, я планую забяспечыць вольнае падтрымку, правільныя памылкі, якія ўзнікаюць і перагледзець убудову для будучых версіях WordPress. Калі гэта павялічвае каштоўнасць вашага сайта ці эканоміць Ваш час і грошы, вы можаце выказаць удзячнасць некалькімі спосабамі:" +msgid "" +" %s Scheduled Change" +msgstr "" + +#: admin/post-editor-workflow-ui_rvy.php:152 +msgid "Create Working Copy" +msgstr "" + +#: admin/post-editor-workflow-ui_rvy.php:153 +msgid "Create a working copy of this post" +msgstr "" + +#: admin/post-editor-workflow-ui_rvy.php:154 +msgid "Update post before creating copy." +msgstr "" + +#: admin/post-editor-workflow-ui_rvy.php:155 +msgid "Working Copy Ready." +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/about.php:41 +#: admin/post-editor-workflow-ui_rvy.php:158 +msgid "Error Creating Copy" +msgstr "" + +#: admin/post-editor-workflow-ui_rvy.php:171 +#, fuzzy +#| msgid "Schedule Now" +msgid "Schedule Changes" +msgstr "Запланаваць цяпер" + +#: admin/post-editor-workflow-ui_rvy.php:173 +msgid "For custom field changes, edit a scheduled copy." +msgstr "" + +#: admin/post-editor-workflow-ui_rvy.php:174 +msgid "Changes are Scheduled." +msgstr "" + +#: admin/revision-action_rvy.php:303 admin/revision-action_rvy.php:388 #, php-format -msgid "%1$s Submit technical feedback%2$s, including improvement requests." -msgstr "%1$s Тэхнічная зваротная сувязі %2$s, у тым ліку просьбы пра паляпшэнні." +msgid "[%s] Revision Approval Notice" +msgstr "[%s] Рэдакцыя сцвярджэнні Апавяшчэнне" + +#: admin/revision-action_rvy.php:304 +#, fuzzy, php-format +#| msgid "A revision to your %1$s \"%2$s\" has been approved." +msgid "A revision to the %1$s \"%2$s\" has been approved." +msgstr "Перагляд вашага %1$s \"%2$s\" быў ухвалены." -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/about.php:43 +#: admin/revision-action_rvy.php:307 #, php-format -msgid "%1$s Submit a case study%2$s, explaining how these plugins help you do something excellent and praiseworthy." -msgstr "%1$s Submit a case study%2$s, растлумачыўшы, якім чынам гэтыя ўбудовы дапамогуць вам зрабіць нешта выдатнае і пахвальна." +msgid "The submitter was %1$s." +msgstr "Адпраўнік быў %1$s." -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/about.php:45 +#: admin/revision-action_rvy.php:311 admin/revision-action_rvy.php:393 #, php-format -msgid "%1$s Localize Revisionary or Role Scoper%2$s to your own language %3$s using poEdit%4$s " -msgstr "%1$s дял лакалізацыі Revisionary ці Role Scoper%2$sна ваша мова %3$s выкарыстоўвайце poEdit%4$s " +msgid "It will be published on %s" +msgstr "Гэта было апублікавана %s" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/about.php:49 -#, php-format -msgid "If the plugin has seriously broadened your CMS horizons, %s" -msgstr "Калі ўбудова мае сур'ёзныя пашырана сістэма кіравання гарызонтаў,%s" +#: admin/revision-action_rvy.php:315 admin/revision-action_rvy.php:397 +#, fuzzy +#| msgid "Review it here: " +msgid "Preview it here: " +msgstr "Глядзець гэта тут:" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/about.php:51 -#, php-format -msgid "If you are an established web developer, %1$s grant me your professional opinion%2$s on how this work stacks up. Might the skills, work ethic and values I express here fit into a development team near you?" -msgstr "Калі Вы вэб-распрацоўнік,%1$s дайце мне ваша меркаванне як адмыслоўца%2$s пра тое, як гэта праца стэкі ўгару. Ці можа навыкі, працоўная этыка і каштоўнасці, я жадаў бы выказаць тут упісваецца ў каманду распрацоўнікаў побач з вамі?" +#: admin/revision-action_rvy.php:318 admin/revision-action_rvy.php:400 +msgid "Editor: " +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/about.php:53 -msgid "Hire or refer my services to design, redesign or enhance your site - quality care at reasonable rates." -msgstr "Арэнду ці перадаць свае паслугі для праектавання, рэдызайну ці пашырэнні вашага сайта - якасць абслугоўвання па ўмераных коштах." +#: admin/revision-action_rvy.php:320 admin/revision-action_rvy.php:402 +#: admin/revision-action_rvy.php:1126 admin/revision-action_rvy.php:1151 +#: admin/revision-action_rvy.php:1220 +msgid "View it online: " +msgstr "Глядзець гэта анлайн:" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/admin-dashboard_rvy.php:10 -msgid "Pending Post" -msgstr "Разгляданы пост" +#: admin/revision-action_rvy.php:389 +#, php-format +msgid "The revision you submitted for the %1$s \"%2$s\" has been approved." +msgstr "Рэвізіі, якую вы, прадстаўленую на %1$s \"%2$s\", была ўхвалена." -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/admin-dashboard_rvy.php:28 -msgid "Pending Page" -msgstr "Разгляданая старонка" +#: admin/revision-action_rvy.php:1122 admin/revision-action_rvy.php:1144 +#, fuzzy, php-format +#| msgid "[%s] Scheduled Revision Publication Notice" +msgid "[%s] Scheduled Change Publication Notice" +msgstr "[%s] Запланаваныя Апавяшчэнне публікацыі Рэдакцыя" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/admin_rvy.php:225 +#: admin/revision-action_rvy.php:1123 #, php-format -msgid "%1$s Revisionary Support Forum%2$s" -msgstr "%1$s форум падтрымкі Revisionary%2$s" +msgid "" +"The scheduled revision you submitted for the %1$s \"%2$s\" has been " +"published." +msgstr "" +"Запланаваны перагляд вы, прадстаўленых на %1$s \"%2$s\" быў апублікаваны." -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/admin_rvy.php:228 +#: admin/revision-action_rvy.php:1145 +#, fuzzy, php-format +#| msgid "A scheduled revision to your %1$s \"%2$s\" has been published." +msgid "A scheduled change to your %1$s \"%2$s\" has been published." +msgstr "Запланаваны перагляд вашага%1$s \"%2$s\" быў апублікаваны." + +#: admin/revision-action_rvy.php:1148 admin/revision-action_rvy.php:1217 #, php-format -msgid "%1$s About Revisionary%2$s" -msgstr "%1$s О Revisionary%2$s" +msgid "It was submitted by %1$s." +msgstr "Было адпраўлена %1$s." -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/admin_rvy.php:241 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:126 -msgid "Revisions" -msgstr "Рэдакцыі" +#: admin/revision-action_rvy.php:1212 +#, fuzzy, php-format +#| msgid "[%s] Scheduled Revision Publication" +msgid "[%s] Scheduled Change Publication" +msgstr "[%s]Запланаваныя публікацыі Рэдакцыя" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/admin_rvy.php:251 -msgid "About Revisionary" -msgstr "О Revisionary" +#: admin/revision-action_rvy.php:1214 +#, fuzzy, php-format +#| msgid "A scheduled revision to the %1$s \"%2$s\" has been published." +msgid "A scheduled change to the %1$s \"%2$s\" has been published." +msgstr "Запланаваны перагляд %1$s \"%2$s\" быў апублікаваны." -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/admin_rvy.php:260 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/admin_rvy.php:282 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:205 -msgid "Revisionary Options" -msgstr "Опцыі Revisionary" +#: admin/revision-queue_rvy.php:9 +msgid "You are not allowed to manage revisions." +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/admin_rvy.php:273 -msgid "Revisionary Option Defaults" -msgstr "Змаўчанні Revisionary" +#: admin/revision-queue_rvy.php:13 +msgid "" +"Change Requests and Scheduled Changes are both disabled. See Revisions > " +"Settings." +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/admin_rvy.php:273 -msgid "Revisionary Defaults" -msgstr "Налады Revisionary" +#: admin/revision-queue_rvy.php:41 +#, fuzzy, php-format +#| msgid "%s revision was deleted" +msgid "%s revision submitted." +msgstr "%s версія была выдалена." -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/admin_rvy.php:282 -msgid "Revisionary" -msgstr "Revisionary" +#: admin/revision-queue_rvy.php:42 +#, fuzzy, php-format +#| msgid "%s revision was deleted" +msgid "%s revision approved." +msgstr "%s версія была выдалена." -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/admin_rvy.php:482 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/admin_rvy.php:648 -msgid "Return to Edit Pages" -msgstr "Вярнуцца да рэдагавання старонак" +#: admin/revision-queue_rvy.php:43 +#, fuzzy, php-format +#| msgid "The revision was unscheduled." +msgid "%s revision unscheduled." +msgstr "Рэдакцыя была знята з планавання." -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/admin_rvy.php:485 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/admin_rvy.php:651 -msgid "Return to Edit Posts" -msgstr "Вярнуцца да рэдагавання пастоў" +#: admin/revision-queue_rvy.php:44 +#, fuzzy, php-format +#| msgid "The revision was published." +msgid "%s revision published." +msgstr "Рэдакцыя была апублікавана." -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/admin_rvy.php:489 -msgid "Your modification has been saved for editorial review. If approved, it will be published on the date you specified." -msgstr "Вашы змены былі захаваны для рэдакцыйнага агляду. У выпадку сцвярджэння, ён будзе апублікаваны ў дзень, паказаны Вамі." +#: admin/revision-queue_rvy.php:45 +#, fuzzy, php-format +#| msgid "%s revision was deleted" +msgid "%s revision permanently deleted." +msgstr "%s версія была выдалена." -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/admin_rvy.php:491 -msgid "Your modification has been saved for editorial review." -msgstr "Вашы змены былі захаваны для рэдакцыйнага агляду. " +#: admin/revision-queue_rvy.php:107 admin/revision-queue_rvy.php:108 +#, php-format +msgid "%sPost Author: %s" +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/admin_rvy.php:494 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/admin_rvy.php:657 -msgid "View it in Revisions Manager" -msgstr "Глядзець гэта ў мэнэджару версій" +#: admin/revision-queue_rvy.php:117 +#, fuzzy, php-format +#| msgid "Revisions" +msgid "Revision Queue %s" +msgstr "Рэдакцыі" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/admin_rvy.php:498 -msgid "Go back to Submit Another revision (possibly for a different publish date)." -msgstr "Вярнуцца Адправіць Іншая версія (магчыма, з іншай датай публікацыі)." +#: admin/revision-queue_rvy.php:123 +#, fuzzy, php-format +#| msgid "%1$s Revisions for “%2$s”" +msgid "Search results for “%s”" +msgstr "%1$s Рэдакцыя для “%2$s”" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/admin_rvy.php:505 -msgid "Sorry, an error occurred while attempting to save your modification for editorial review!" -msgstr "Выбачыце, адбылася памылка пры спробе захаваць змены рэдакцыйнага агляду!" +#: admin/revision-queue_rvy.php:136 +msgid "Undo" +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/admin_rvy.php:512 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-action_rvy.php:126 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-action_rvy.php:167 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-action_rvy.php:549 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-action_rvy.php:567 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-action_rvy.php:589 -msgid "page" -msgstr "старонка" +#: admin/revision-ui_rvy.php:40 +msgid "Publishers will be notified (but cannot be selected here)." +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/admin_rvy.php:512 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-action_rvy.php:126 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-action_rvy.php:167 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-action_rvy.php:549 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-action_rvy.php:567 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-action_rvy.php:589 -msgid "post" -msgstr "пост" +#: admin/revision-ui_rvy.php:42 +msgid "No email notifications will be sent." +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/admin_rvy.php:514 +#: admin/revision-ui_rvy.php:92 #, php-format -msgid "[%s] Pending Revision Notification" -msgstr "[%s] Pending Revision Апавяшчэнне" +msgid "%1$s (Current)" +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/admin_rvy.php:516 +#: admin/revision-ui_rvy.php:96 #, php-format -msgid "A pending revision to the %1$s \"%2$s\" has been submitted." -msgstr "Якая чакае версія на %1$s \"%2$s\" была адпраўлена." +msgid "%1$s (Autosave)" +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/admin_rvy.php:520 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/admin_rvy.php:523 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-action_rvy.php:574 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-action_rvy.php:596 +#: admin/revision-ui_rvy.php:106 #, php-format -msgid "It was submitted by %1$s." -msgstr "Было адпраўлена %1$s." +msgid "" +"%1$s (Requested publication: %2$s)" +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/admin_rvy.php:527 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-action_rvy.php:139 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-action_rvy.php:176 -msgid "Review it here: " -msgstr "Глядзець гэта тут:" +#: admin/revision-ui_rvy.php:108 +#, fuzzy, php-format +#| msgid "%1$s Revisions (%2$s)" +msgid "" +"%1$s (Publish date: %2$s)" +msgstr "%1$s Рэдакцыі (%2$s)" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/admin_rvy.php:596 -msgid "Pending Revision Created" -msgstr "Якая чакае версія створана" +#: admin/revision-ui_rvy.php:206 +msgid "The revision will be deleted. Are you sure?" +msgstr "Рэдакцыя будзе выдалена. Вы ўпэўнены?" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/admin_rvy.php:654 -msgid "Your modification was saved as a Scheduled Revision." -msgstr "Ваша мадыфікацыя была захавана ў планоўшчыку версій." +#: admin/revision-ui_rvy.php:275 +#, fuzzy, php-format +#| msgid "Revision of “%1$s”" +msgid "Preview “%s”" +msgstr "Рэдакцыя “%1$s”" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/admin_rvy.php:659 -msgid "Go back to Schedule Another revision." -msgstr "Вярнуцца ў спіс іншых версій." +#: admin/revision-ui_rvy.php:391 +msgid "Modified Date" +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/admin_rvy.php:664 -msgid "Scheduled Revision Created" -msgstr "Планавальная версія створана." +#: admin/revision-ui_rvy.php:395 +msgid "Actions" +msgstr "Дзеянні" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/agents_checklist_rvy.php:52 -msgid "Enter additional User Names or IDs (comma-separate)" -msgstr "Увядзіце дадатковыя імёны карыстачоў ці ідэнтыфікатары (адлучаныя коскі)" +#: admin/revision-ui_rvy.php:410 +msgid "Bulk Actions" +msgstr "Масавыя дзеянні" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/agents_checklist_rvy.php:105 -#, php-format -msgid "show current users (%d)" -msgstr "паказаць бягучых карыстачоў (%d)" +#: admin/revision-ui_rvy.php:413 +msgid "Apply" +msgstr "Ужыць" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/agents_checklist_rvy.php:105 -#, php-format -msgid "show eligible users (%d)" -msgstr "паказаць правы карыстачоў (%d)" +#: admin/revisions.php:20 +msgid "" +"Note: For visual display of revisions, add the following " +"code to foliopress-wysiwyg.php:
      if " +"( strpos( $_SERVER['REQUEST_URI'], 'admin.php?page=rvy-revisions' ) ) return;" +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/agents_checklist_rvy.php:123 -msgid "filter:" -msgstr "фільтр:" +#: admin/revisions.php:51 +msgid "No revision specified." +msgstr "Не прызначана версія" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/agents_checklist_rvy.php:132 -msgid "select" -msgstr "абраць" +#: admin/revisions.php:57 +msgid "Past" +msgstr "Уставіць" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/agents_checklist_rvy.php:137 -msgid "unselect" -msgstr "не выбіраць" +#: admin/revisions.php:119 +#, fuzzy, php-format +#| msgid "Revisions" +msgid "Revisions of %s" +msgstr "Рэдакцыі" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/agents_checklist_rvy.php:145 +#: admin/revisions.php:145 +msgid "The requested revision does not exist." +msgstr "З просьбай пра перагляд не існуе." + +#: admin/revisions.php:215 +#, fuzzy +#| msgid "%1$s Revisions" +msgid "Past Revisions" +msgstr "%1$s рэдакцый" + +#: admin/revisions.php:230 +#, fuzzy, php-format +#| msgid "%1$s Revisions (%2$s)" +msgid "%1$s (%2$s)" +msgstr "%1$s Рэдакцыі (%2$s)" + +#: admin/revisions.php:245 #, php-format -msgid "current users (%d):" -msgstr "бягучыя карыстачы (%d):" +msgid "no %s revisions available." +msgstr "не %s даступных рэдакцый." -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/agents_checklist_rvy.php:145 +#: front_rvy.php:235 #, php-format -msgid "eligible users (%d):" -msgstr "правы карыстачоў (%d):" +msgid "%sList%s" +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/filters-admin-ui-item_rvy.php:40 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/filters-admin-ui-item_rvy.php:41 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:134 -msgid "Pending Revisions" -msgstr "Pending Revisions" +#: front_rvy.php:244 +#, php-format +msgid "%sCompare%s%sView Published Post%s" +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/filters-admin-ui-item_rvy.php:43 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/filters-admin-ui-item_rvy.php:44 -msgid "Publishers to Notify of Your Revision" -msgstr "Выдаўцы будуць апавешчаны пра вашу рэдакцыю" +#: front_rvy.php:258 +#, php-format +msgid "%sView Published Post%s" +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/filters-admin-ui-item_rvy.php:49 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/filters-admin-ui-item_rvy.php:50 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:135 -msgid "Scheduled Revisions" -msgstr "Запланаваныя рэдакцыі" +#: front_rvy.php:319 front_rvy.php:340 front_rvy.php:360 +#, fuzzy +#| msgid "Publish now." +msgid "Publish now" +msgstr "Публікаваць цяпер" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:122 -msgid "Features" -msgstr "Функцыі" +#: front_rvy.php:324 +#, php-format +msgid "This is a Working Copy. %s %s %s" +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:122 -msgid "Option Scope" -msgstr "Опцыя вобласці" +#: front_rvy.php:336 +#, php-format +msgid "This is a Change Request (requested publish date: %s). %s %s %s" +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:127 -msgid "Email Notification" -msgstr "Email апавяшчэнне" +#: front_rvy.php:342 +#, php-format +msgid "This is a Change Request. %s %s %s" +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:136 -msgid "Strip html tags out of difference display" -msgstr "Выдаляе HTML-тэгі з розніцы адлюстравання" +#: front_rvy.php:353 +msgid "This revision is very new, preview may not be synchronized with theme." +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:137 -msgid "Asynchronous Publishing" -msgstr "Асінхронная публікацыя" +#: front_rvy.php:354 +msgid "Reload" +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:138 -msgid "Email original Author when a Pending Revision is submitted" -msgstr "Пісаць аўтару, калі версія рэдакцыі адпраўлена" +#: front_rvy.php:362 +#, fuzzy, php-format +#| msgid "(already scheduled for publication on %s)" +msgid "This is a Scheduled Change (for publication on %s). %s %s %s" +msgstr "(ужо запланаваны да публікацыі на %s)" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:139 -msgid "Email the original Author when a Pending Revision is approved" -msgstr "Пісаць аўтару, калі версія рэдакцыі зацверджана" +#: front_rvy.php:374 +#, fuzzy, php-format +#| msgid "Current Revision" +msgid "This is the Current Revision. %s" +msgstr "Бягучая рэдакцыя" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:140 -msgid "Email the Revisor when a Pending Revision is approved" -msgstr "Email Рэвізор пры чаканні рэдакцыі зацверджаны" +#: front_rvy.php:379 +#, fuzzy +#| msgid "Restore Now" +msgid "Restore" +msgstr "аднаўленне" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:141 -msgid "Email the original Author when a Scheduled Revision is published" -msgstr "Email аўтара арыгінальнай калі раскладу рэдакцыя публікуецца" +#: front_rvy.php:380 +#, php-format +msgid "This is a Past Revision (from %s). %s %s" +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:142 -msgid "Email the Revisor when a Scheduled Revision is published" -msgstr "Email аўтара арыгінальнай калі раскладу публікуецца" +#: lib/debug.php:187 +#, php-format +msgid "%1$s queries in %2$s seconds. %3$s MB used." +msgstr "%1$s запытаў у %2$s секунд. %3$s MB выкарыстоўваецца." -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:143 -msgid "Asynchronous Email Processing" -msgstr "Асінхронны email працэс" +#: revision-creation_rvy.php:159 +msgid "Could not insert revision into the database" +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:147 -msgid "Email designated Publishers when a Pending Revision is submitted" -msgstr "Email, прызначаны выдавецтву, калі рэдакцыя ўяўляецца" +#: revision-workflow_rvy.php:154 +#, php-format +msgid "[%s] Change Request Updated" +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:148 -msgid "Email designated Publishers when a Scheduled Revision is published" -msgstr "Email, прызначаны выдавецтву, калі запланаваная рэдакцыя публікуецца" +#: revision-workflow_rvy.php:156 +#, fuzzy, php-format +#| msgid "A pending revision to the %1$s \"%2$s\" has been submitted." +msgid "A change request to the %1$s \"%2$s\" has been updated." +msgstr "Якая чакае версія на %1$s \"%2$s\" была адпраўлена." -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:150 -msgid "Email Editors and Administrators when a Pending Revision is submitted" -msgstr "Адпраўляць email рэдактарам і адміністратарам, калі рэдакцыя адпраўляецца" +#: revision-workflow_rvy.php:158 +#, php-format +msgid "[%s] Change Request Submission" +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:151 -msgid "Email Editors and Administrators when a Scheduled Revision is published" -msgstr "Адпраўляць email рэдактарам і адміністратарам, калі запланаваная рэдакцыя публікуецца" +#: revision-workflow_rvy.php:160 +#, fuzzy, php-format +#| msgid "A pending revision to the %1$s \"%2$s\" has been submitted." +msgid "A change request to the %1$s \"%2$s\" has been submitted." +msgstr "Якая чакае версія на %1$s \"%2$s\" была адпраўлена." -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:199 -msgid "Revisionary Site Options" -msgstr "Revisionary налады сайта" +#: revision-workflow_rvy.php:163 +#, php-format +msgid "This operation was performed by %1$s." +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:201 -msgid "Revisionary Default Blog Options" -msgstr "Revisionary стандартныя налады блога" +#: revision-workflow_rvy.php:170 +msgid "Preview and Approval: " +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:203 -msgid "Revisionary Blog Options" -msgstr "Revisionary налады блога" +#: revision-workflow_rvy.php:173 +#, fuzzy +#| msgid "Revisions" +msgid "Revision Queue: " +msgstr "Рэдакцыі" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:211 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:522 -msgid "Update »" -msgstr "Абнавіць »" +#: revision-workflow_rvy.php:175 +msgid "Edit Change Request: " +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:219 -msgid "These settings will be applied to all blogs." -msgstr "Налады будуць ужыты да ўсіх блогаў" +#: revisionary.php:67 +msgid "This plugin can be deleted." +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:225 -msgid "These are the default settings for options which can be adjusted per-blog." -msgstr "Гэта defaultналады для опцый, якія могуць быць скарэктаваны за блог." +#: revisionary.php:83 revisionary.php:161 +#, fuzzy, php-format +#| msgid "" +#| "Another copy of Revisionary is already activated (version %1$s in \"%2$s" +#| "\")" +msgid "" +"Another copy of PublishPress Revisions (or Revisionary) is already activated " +"(version %1$s: \"%2$s\")" +msgstr "Іншая копія Revisionary ужо актывавана (версія %1$s in \"%2$s\")" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:257 -msgid "This page enables optional adjustment of Revisionary's features. For most installations, the default settings are fine." -msgstr "Гэта старонка ўключае <апцыянальна>optional карэктоўку функцый Revisionary. Для большасці ўсталёўкі, налады па змаўчанні ў норме." +#: revisionary.php:85 revisionary.php:163 +#, fuzzy, php-format +#| msgid "" +#| "Another copy of Revisionary is already activated (version %1$s in \"%2$s" +#| "\")" +msgid "" +"Another copy of PublishPress Revisions (or Revisionary) is already activated " +"(version %1$s)" +msgstr "Іншая копія Revisionary ужо актывавана (версія %1$s in \"%2$s\")" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:266 +#: revisionary.php:182 #, php-format -msgid "Note that %1$s blog-specific options%2$s may also be available." -msgstr "Запомніце, што %1$s налады %2$s таксама даступныя." +msgid "PublishPress Revisions requires PHP version %s or higher." +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:273 +#: revisionary.php:189 #, php-format -msgid "Note that %1$s site-wide options%2$s may also be available." -msgstr "Запомніце, што %1$s налады %2$s таксама даступныя." - -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:302 -msgid "If a currently published post or page is edited and a future date set, the change will not be applied until the selected date." -msgstr "Калі ў наш час публікуецца паведамленне ці старонка рэдагуецца і будучым усталяваць дату, змены не будуць ужывацца да абранай даты." - -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:306 -msgid "Publish scheduled revisions asynchronously, via a secondary http request from the server. This is normally preferable as it eliminates delay, but some servers do not support it." -msgstr "Апублікаваць запланаваныя змены ў асінхронным рэжыме, праз другі запыт HTTP ад сервера. Гэта, як правіла, пераважней, бо ўхіляе затрымкі, але некаторыя серверы не падтрымліваюць яго." +msgid "PublishPress Revisions requires WordPress version %s or higher." +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:310 -msgid "Enable some users to submit a revision for an existing published post or page which they cannot otherwise edit. Contributors can submit revisions to their own published content, and users who have the edit_others_ capability (but not edit_published_) can submit revisions to other user's content.

    These Pending Revisions are listed alongside regular pending content, but link to a Revisions management form. There the pending revision can be viewed, compared to other revisions, and approved or deleted by qualified editors. If the submitter set a future publish date, approval schedules delayed publication of the revised content." -msgstr "Уключыць некаторым карыстачам прадставіць перагледжаны варыянт для існых апублікаваў пост ці старонка, на якой яны не могуць інакш кіраваць. Аўтары могуць прадставіць змены ў свае апублікаваныя ўтрыманні, і карыстачоў, якія edit_others_ магчымасць (але не edit_published_) можа прадставіць прапановы пра змены да ўтрымання іншых карыстачоў.

    Гэтыя Да Змены адлюстроўваюцца ў спісе рэгулярных да ўтрымання, але спасылка на форму кіравання рэвізіі. Там у чаканні перагляду могуць быць прагледжаны, у параўнанні з іншымі зменамі, а таксама зацверджаны ці выдалены кваліфікаваных рэдактараў. Калі падавец усталяваць будучым даце публікацыі, сцвярджэнне графікаў затрымку з публікацыяй перагледжаных утрыманне." +#: rvy_init.php:226 rvy_init.php:237 rvy_init.php:248 +#, fuzzy +#| msgid "Revisions" +msgid "Save Revision" +msgstr "Рэдакцыі" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:330 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:384 -msgid "select recipients" -msgstr "абраць атрымальнікаў" +#: rvy_init.php:226 +msgid "Draft" +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:339 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:357 -msgid "Never" -msgstr "Ніколі" +#: rvy_init.php:237 +msgid "Entry" +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:339 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:357 -msgid "By default" -msgstr "Па змаўчанні" +#: rvy_init.php:248 +#, fuzzy +#| msgid "Schedule Now" +msgid "Scheduled" +msgstr "(ужо запланаваны да публікацыі на %s)" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:339 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:357 -msgid "Always" -msgstr "Заўсёды" +#: rvy_init.php:423 +msgid "Revisor" +msgstr "Рэвізор" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:397 -msgid "Send all revision notification emails asynchronously, via a secondary http request from the server." -msgstr "Дасылайце ўсе электронныя апавяшчэнні перагляду асінхронна, з дапамогай другі запыт HTTP ад сервера." +#: rvy_init.php:848 +#, fuzzy +#| msgid "Revisionary" +msgid "Revision Workflow" +msgstr "Revisionary" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:406 -msgid "Note: \"by default\" means Pending Revision creators can customize email notification recipients before submitting. Eligibile \"Publisher\" email recipients are members of the Pending Revision Monitors group who also have the ability to publish the revision." -msgstr "Нататка:\"by default\" Рэдакцыя сродку Да стваральнікаў могуць наладзіць апавяшчэнні атрымальнікаў перад адпраўкай. Eligibile \"Publisher\" атрымальнікаў уваходных у чаканні Рэдакцыя Маніторы групы, якія таксама маюць магчымасць публікаваць змены." +#: vendor/publishpress/wordpress-version-notices/src/Module/MenuLink/Module.php:129 +msgid "Amazing! We are redirecting you to our site..." +msgstr "" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:408 #, php-format -msgid "Note: \"by default\" means Pending Revision creators can customize email notification recipients before submitting. For more flexibility in moderation and notification, install the %1$s Role Scoper%2$s plugin." -msgstr "Нататка: \"па змаўчанні\" Рэдакцыя сродку Да стваральнікаў могуць наладзіць апавяшчэнні атрымальнікаў перад адпраўкай. Для большай гнуткасці ва ўмеранасці і абвесткі, усталёўку%1$s Role Scoper%2$s убудовы." +#~ msgid "This Revision was Published on %s" +#~ msgstr "Гэты перагляд быў апублікаваны %s" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:437 -msgid "Specify which Revisionary Options should be applied site-wide." -msgstr "Пакажыце, якія Revisionary Функцыі павінны ўжывацца на вэб-вузле." +#~ msgid "Schedule this Pending Revision" +#~ msgstr "Расклад чакае праверкі" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:444 #, php-format -msgid "sitewide control of \"%s\"" -msgstr "па ўсім сайце кантроль \"%s\"" +#~ msgid "(dated %s)" +#~ msgstr "(датуецца %s)" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:449 -msgid "Selected options will be controlled site-wide via Site Admin > Role Options; unselected options can be set per-blog via Roles > Options" -msgstr "Абраныя параметры будуць кантралявацца на вэб-вузле з дапамогай Site Admin > Role Options невылучаныя параметры могуць быць усталяваны за блог з дапамогай Roles > Options" +#, php-format +#~ msgid "" +#~ "Revisionary is not compatible with Role Scoper versions prior to %1$s. " +#~ "Please upgrade or deactivate %2$s Role Scoper%3$s." +#~ msgstr "" +#~ "Revisionary не сумяшчальны з версіямі ролі Scoper да%1$s. Абнавіце ці " +#~ "дэактывуйце %2$s Role Scoper%3$s." -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:526 -msgid "All settings in this form (including those on unselected tabs) will be reset to DEFAULTS. Are you sure?" -msgstr "Усе налады ў гэтай форме (у тым ліку па абраных укладках) будзе Аднавіць значэнні па змаўчанні. Вы ўпэўнены?" +#~ msgid "unselfish, benevolent love, born of the Spirit." +#~ msgstr "бескарыслівая, добразычлівая каханні, народжаным ад Духу." -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/options.php:531 -msgid "Revert to Defaults" -msgstr "Вярнуць да пачатковых" +#~ msgid "" +#~ "Agapé discerns needs and meets them unselfishly and effectively." +#~ msgstr "" +#~ "Agape выяўляе запатрабаванні і задавальняе іх бескарысліва і эфектыўна." -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-action_rvy.php:128 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-action_rvy.php:169 #, php-format -msgid "[%s] Revision Approval Notice" -msgstr "[%s] Рэдакцыя сцвярджэнні Апавяшчэнне" +#~ msgid "" +#~ "This WordPress plugin is part of my agapé try, a lifelong effort " +#~ "to love God and love people by rightly using the time and abilities He " +#~ "has leant me. As a husband, father, engineer, farmer and/or software " +#~ "developer, I have found this stewardship effort to be often fraught with " +#~ "contradiction. A wise and sustainable balancing of roles has seemed to " +#~ "elude me. Yet I want to keep trying, trusting that if God blesses and " +#~ "multiplies the effort, it will become agapetry, a creative arrangement " +#~ "motivated by benevolent love. A fleeting childlike sketch of the " +#~ "beautiful %1$s chain-breaking agapé%2$s which %3$s Jesus Christ " +#~ "unleashed%4$s so %5$s freely%6$s and aptly on an enslaving, enslaved " +#~ "world." +#~ msgstr "" +#~ "Гэта ўбудова WordPress, гэта частка маёй агапе паспрабаваць, на працягу " +#~ "ўсяго жыцця высілкаў кахаць Бога і кахаць людзей па праве выкарыстання " +#~ "часу і здольнасцяў ён нахіліўся мяне. Як муж, бацька, інжынерам, фермерам " +#~ "і / ці распрацоўніка праграмнага забеспячэння, я знайшоў гэта кіраўніцтва " +#~ "высілкамі, часцяком багатая супярэчнасці. Разумнага і ўстойлівага " +#~ "збалансавання роляў здалося выслізгваць ад мяне. Але я жадаю, каб " +#~ "імкнуцца, мяркуючы, што калі Бог багаслаўляе і памнажае высілкі, яна " +#~ "стане agapetry, творчая кампазіцыя матываваныя добразычлівыя каханні. " +#~ "Мімалётны накід па-дзіцячаму прыгожая%1$s chain-breaking agapé%2$s " +#~ "which %3$s Jesus Christ unleashed%4$s so %5$s freely%6$s and aptly on an " +#~ "enslaving, enslaved world." -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-action_rvy.php:130 #, php-format -msgid "A revision to your %1$s \"%2$s\" has been approved." -msgstr "Перагляд вашага %1$s \"%2$s\" быў ухвалены." +#~ msgid "" +#~ "Although Role Scoper and Revisionary development was a maniacal hermit-" +#~ "like effort, it was only possible because of the clean and flexible %1$s " +#~ "WordPress code base%2$s. My PHP programming skills grew immensely by the " +#~ "good examples set forth there and in plugins such as %3$s NextGen Gallery" +#~ "%4$s. I'm not done learning, and look forward to some real-time " +#~ "cooperation with these and other developers now that my all-consuming " +#~ "quest has reached a stable plateau." +#~ msgstr "" +#~ "Хоць роля Scoper і Revisionary развіцці маніякальна-пустэльнікаў, як " +#~ "высілкі, можна было толькі з-за чыстай і гнуткай %1$s WordPress code base" +#~ "%2$s. My PHP programming skills grew immensely by the good examples set " +#~ "forth there and in plugins such as %3$s NextGen Gallery%4$s. I'm not done " +#~ "learning, and look forward to some real-time cooperation with these and " +#~ "other developers now that my all-consuming quest has reached a stable " +#~ "plateau." -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-action_rvy.php:133 #, php-format -msgid "The submitter was %1$s." -msgstr "Адпраўнік быў %1$s." +#~ msgid "" +#~ "Thanks to %1$sAlberto Ramicciotti%2$s for the Italian translation. I do " +#~ "try to be translator-friendly, but any untranslated captions are due to " +#~ "my flurry of recent additions and changes, and will no doubt be updated " +#~ "soon. Now there must be someone else who wants Revisionary in their " +#~ "language..." +#~ msgstr "" +#~ "Дзякуй %1$sAlberto Ramicciotti%2$s на італьянскі пераклад. Я імкнуся быць " +#~ "перакладнікам зразумелы, але любы неперакладзеныя подпісах з-за майго " +#~ "шквал апошніх даданняў і змен, і, несумнеўна, будзе абноўлена хуткім " +#~ "часам. Зараз павінна быць кімсьці яшчэ, хто жадае Revisionary на іх " +#~ "роднай мове ..." -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-action_rvy.php:137 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-action_rvy.php:174 #, php-format -msgid "It will be published on %s" -msgstr "Гэта было апублікавана %s" - -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-action_rvy.php:141 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-action_rvy.php:178 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-action_rvy.php:556 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-action_rvy.php:577 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-action_rvy.php:599 -msgid "View it online: " -msgstr "Глядзець гэта анлайн:" +#~ msgid "" +#~ "Revisionary is open source software released under the %1$s General " +#~ "Public License (GPL)%2$s. Due to limitations, obligations and non-" +#~ "technical aspirations common to most human beings, I will probably never " +#~ "again pursue uncommissioned plugin development on the scale these plugins " +#~ "has required. However, I do plan to provide some free support, correct " +#~ "bugs which emerge and revise the plugin for future WordPress versions. If " +#~ "it adds value to your website or saves you time and money, you can " +#~ "express appreciation in several ways:" +#~ msgstr "" +#~ "Revisionary гэта адкрытае праграмнае забеспячэнне, якое распаўсюджваецца " +#~ "па %1$s General Public License (GPL)%2$s. З-за абмежаванняў, абавязанняў " +#~ "і нетехнических памкненняў, характэрных для большасці чалавечай істоты, " +#~ "я, напэўна, ніколі больш не праводзіць, даручэнні распрацоўкі ўбудоў на " +#~ "маштаб гэтых убудоў патрабуецца. Аднак, я планую забяспечыць вольнае " +#~ "падтрымку, правільныя памылкі, якія ўзнікаюць і перагледзець убудову для " +#~ "будучых версіях WordPress. Калі гэта павялічвае каштоўнасць вашага сайта " +#~ "ці эканоміць Ваш час і грошы, вы можаце выказаць удзячнасць некалькімі " +#~ "спосабамі:" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-action_rvy.php:171 #, php-format -msgid "The revision you submitted for the %1$s \"%2$s\" has been approved." -msgstr "Рэвізіі, якую вы, прадстаўленую на %1$s \"%2$s\", была ўхвалена." +#~ msgid "%1$s Submit technical feedback%2$s, including improvement requests." +#~ msgstr "" +#~ "%1$s Тэхнічная зваротная сувязі %2$s, у тым ліку просьбы пра паляпшэнні." -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-action_rvy.php:551 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-action_rvy.php:569 #, php-format -msgid "[%s] Scheduled Revision Publication Notice" -msgstr "[%s] Запланаваныя Апавяшчэнне публікацыі Рэдакцыя" +#~ msgid "" +#~ "%1$s Submit a case study%2$s, explaining how these plugins help you do " +#~ "something excellent and praiseworthy." +#~ msgstr "" +#~ "%1$s Submit a case study%2$s, растлумачыўшы, якім чынам гэтыя ўбудовы " +#~ "дапамогуць вам зрабіць нешта выдатнае і пахвальна." -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-action_rvy.php:553 #, php-format -msgid "The scheduled revision you submitted for the %1$s \"%2$s\" has been published." -msgstr "Запланаваны перагляд вы, прадстаўленых на %1$s \"%2$s\" быў апублікаваны." +#~ msgid "" +#~ "%1$s Localize Revisionary or Role Scoper%2$s to your own language %3$s " +#~ "using poEdit%4$s " +#~ msgstr "" +#~ "%1$s дял лакалізацыі Revisionary ці Role Scoper%2$sна ваша мова %3$s " +#~ "выкарыстоўвайце poEdit%4$s " -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-action_rvy.php:571 #, php-format -msgid "A scheduled revision to your %1$s \"%2$s\" has been published." -msgstr "Запланаваны перагляд вашага%1$s \"%2$s\" быў апублікаваны." +#~ msgid "If the plugin has seriously broadened your CMS horizons, %s" +#~ msgstr "Калі ўбудова мае сур'ёзныя пашырана сістэма кіравання гарызонтаў,%s" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-action_rvy.php:591 #, php-format -msgid "[%s] Scheduled Revision Publication" -msgstr "[%s]Запланаваныя публікацыі Рэдакцыя" +#~ msgid "" +#~ "If you are an established web developer, %1$s grant me your professional " +#~ "opinion%2$s on how this work stacks up. Might the skills, work ethic and " +#~ "values I express here fit into a development team near you?" +#~ msgstr "" +#~ "Калі Вы вэб-распрацоўнік,%1$s дайце мне ваша меркаванне як адмыслоўца%2$s " +#~ "пра тое, як гэта праца стэкі ўгару. Ці можа навыкі, працоўная этыка і " +#~ "каштоўнасці, я жадаў бы выказаць тут упісваецца ў каманду распрацоўнікаў " +#~ "побач з вамі?" + +#~ msgid "" +#~ "Hire or refer my services to design, redesign or enhance your site - " +#~ "quality care at reasonable rates." +#~ msgstr "" +#~ "Арэнду ці перадаць свае паслугі для праектавання, рэдызайну ці " +#~ "пашырэнні вашага сайта - якасць абслугоўвання па ўмераных коштах." + +#~ msgid "Pending Post" +#~ msgstr "Разгляданы пост" + +#~ msgid "Pending Page" +#~ msgstr "Разгляданая старонка" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-action_rvy.php:593 #, php-format -msgid "A scheduled revision to the %1$s \"%2$s\" has been published." -msgstr "Запланаваны перагляд %1$s \"%2$s\" быў апублікаваны." - -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-ui_rvy.php:279 -msgid "The revision will be deleted. Are you sure?" -msgstr "Рэдакцыя будзе выдалена. Вы ўпэўнены?" - -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-ui_rvy.php:338 -msgid "Unschedule" -msgstr "Не планаваць" - -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-ui_rvy.php:432 -msgid "Modified Date (click to view/restore)" -msgstr "Даце апошняй змены (націсніце, каб прагледзець / аднавіць)" +#~ msgid "%1$s Revisionary Support Forum%2$s" +#~ msgstr "%1$s форум падтрымкі Revisionary%2$s" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-ui_rvy.php:435 -msgid "Modified Date (click to view/approve)" -msgstr "Дата змены (націсніце, каб прагледзець / прыняць)" - -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-ui_rvy.php:438 -msgid "Modified Date (click to view/publish)" -msgstr "Дата змены (націсніце, каб прагледзець / апублікаваць)" - -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-ui_rvy.php:442 -msgid "Publish Date" -msgstr "Дата публікацыі" +#, php-format +#~ msgid "%1$s About Revisionary%2$s" +#~ msgstr "%1$s О Revisionary%2$s" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-ui_rvy.php:445 -msgid "Actions" -msgstr "Дзеянні" +#~ msgid "Revisionary Option Defaults" +#~ msgstr "Змаўчанні Revisionary" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-ui_rvy.php:460 -msgid "Bulk Actions" -msgstr "Масавыя дзеянні" +#~ msgid "Return to Edit Pages" +#~ msgstr "Вярнуцца да рэдагавання старонак" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-ui_rvy.php:461 -msgid "Delete" -msgstr "Выдаліць" +#~ msgid "" +#~ "Your modification has been saved for editorial review. If approved, it " +#~ "will be published on the date you specified." +#~ msgstr "" +#~ "Вашы змены былі захаваны для рэдакцыйнага агляду. У выпадку сцвярджэння, " +#~ "ён будзе апублікаваны ў дзень, паказаны Вамі." -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-ui_rvy.php:463 -msgid "Apply" -msgstr "Ужыць" +#~ msgid "Your modification has been saved for editorial review." +#~ msgstr "Вашы змены былі захаваны для рэдакцыйнага агляду. " -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-ui_rvy.php:502 -msgid "Date as:" -msgstr "Датавана:" +#~ msgid "" +#~ "Go back to Submit Another revision (possibly for a different publish " +#~ "date)." +#~ msgstr "" +#~ "Вярнуцца Адправіць Іншая версія (магчыма, з іншай датай публікацыі)." -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-ui_rvy.php:503 -msgid "Schedule for:" -msgstr "Запланавана для:" +#~ msgid "" +#~ "Sorry, an error occurred while attempting to save your modification for " +#~ "editorial review!" +#~ msgstr "" +#~ "Выбачыце, адбылася памылка пры спробе захаваць змены рэдакцыйнага агляду!" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-ui_rvy.php:504 -msgid "Published on:" -msgstr "Апублікавана:" +#~ msgid "page" +#~ msgstr "старонка" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-ui_rvy.php:505 -msgid "Privately Published:" -msgstr "Прыватна апублікавана:" +#~ msgid "post" +#~ msgstr "пост" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-ui_rvy.php:506 -msgid "Published:" -msgstr "Апублікавана:" +#, php-format +#~ msgid "[%s] Pending Revision Notification" +#~ msgstr "[%s] Pending Revision Апавяшчэнне" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revision-ui_rvy.php:507 -msgid "Unsaved Date Selection:" -msgstr "Незахаваныя Выбар даты:" +#~ msgid "Pending Revision Created" +#~ msgstr "Якая чакае версія створана" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revisions.php:48 -msgid "No revision specified." -msgstr "Не прызначана версія" +#~ msgid "Your modification was saved as a Scheduled Revision." +#~ msgstr "Ваша мадыфікацыя была захавана ў планоўшчыку версій." -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revisions.php:53 -msgid "Past" -msgstr "Уставіць" +#~ msgid "Go back to Schedule Another revision." +#~ msgstr "Вярнуцца ў спіс іншых версій." -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revisions.php:91 -#, php-format -msgid "%1$s Revisions for “%2$s”" -msgstr "%1$s Рэдакцыя для “%2$s”" +#~ msgid "Scheduled Revision Created" +#~ msgstr "Планавальная версія створана." -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revisions.php:150 -#, php-format -msgid "Revision of “%1$s”" -msgstr "Рэдакцыя “%1$s”" +#~ msgid "Enter additional User Names or IDs (comma-separate)" +#~ msgstr "" +#~ "Увядзіце дадатковыя імёны карыстачоў ці ідэнтыфікатары (адлучаныя коскі)" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revisions.php:152 #, php-format -msgid "Past Revision of “%1$s”" -msgstr "Апошняя рэдакцыя “%1$s”" +#~ msgid "current users (%d):" +#~ msgstr "бягучыя карыстачы (%d):" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revisions.php:155 #, php-format -msgid "Pending Revision of “%1$s”" -msgstr "Да перагляду “%1$s”" +#~ msgid "eligible users (%d):" +#~ msgstr "правы карыстачоў (%d):" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revisions.php:158 -#, php-format -msgid "Scheduled Revision of “%1$s”" -msgstr "Запланаваная рэдакцыя “%1$s”" +#~ msgid "Publishers to Notify of Your Revision" +#~ msgstr "Выдаўцы будуць апавешчаны пра вашу рэдакцыю" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revisions.php:166 -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revisions.php:173 -msgid "Publish Now" -msgstr "Публікаваць цяпер" +#~ msgid "Strip html tags out of difference display" +#~ msgstr "Выдаляе HTML-тэгі з розніцы адлюстравання" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revisions.php:171 -msgid "Schedule Now" -msgstr "Запланаваць цяпер" +#~ msgid "Asynchronous Email Processing" +#~ msgstr "Асінхронны email працэс" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revisions.php:179 -msgid "Restore Now" -msgstr "Аднавіць цяпер" +#~ msgid "Revisionary Default Blog Options" +#~ msgstr "Revisionary стандартныя налады блога" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revisions.php:196 -#, php-format -msgid "“%1$s” (Current Revision)" -msgstr "“%1$s” (Бягучая рэдакцыя)" +#~ msgid "Revisionary Blog Options" +#~ msgstr "Revisionary налады блога" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revisions.php:214 -msgid "The requested revision does not exist." -msgstr "З просьбай пра перагляд не існуе." +#~ msgid "These settings will be applied to all blogs." +#~ msgstr "Налады будуць ужыты да ўсіх блогаў" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revisions.php:253 -msgid "The revision was deleted." -msgstr "Версія была выдалена." +#~ msgid "" +#~ "This page enables optional adjustment of Revisionary's " +#~ "features. For most installations, the default settings are fine." +#~ msgstr "" +#~ "Гэта старонка ўключае <апцыянальна>optional карэктоўку функцый " +#~ "Revisionary. Для большасці ўсталёўкі, налады па змаўчанні ў норме." -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revisions.php:256 #, php-format -msgid "%s revision was deleted" -msgstr "%s версія была выдалена." - -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revisions.php:259 -msgid "The revision was updated." -msgstr "Версія была обнавлена." - -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revisions.php:262 -msgid "The revision was restored." -msgstr "Версія была адноўлена." - -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revisions.php:265 -msgid "The revision was scheduled for publication." -msgstr "Рэдакцыя была запланавана для публікацыі." - -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revisions.php:268 -msgid "The revision was published." -msgstr "Рэдакцыя была апублікавана." +#~ msgid "Note that %1$s blog-specific options%2$s may also be available." +#~ msgstr "Запомніце, што %1$s налады %2$s таксама даступныя." + +#~ msgid "" +#~ "Enable some users to submit a revision for an existing published post or " +#~ "page which they cannot otherwise edit. Contributors can submit revisions " +#~ "to their own published content, and users who have the edit_others_ " +#~ "capability (but not edit_published_) can submit revisions to other user's " +#~ "content.

    These Pending Revisions are listed alongside regular " +#~ "pending content, but link to a Revisions management form. There the " +#~ "pending revision can be viewed, compared to other revisions, and approved " +#~ "or deleted by qualified editors. If the submitter set a future publish " +#~ "date, approval schedules delayed publication of the revised content." +#~ msgstr "" +#~ "Уключыць некаторым карыстачам прадставіць перагледжаны варыянт для існых " +#~ "апублікаваў пост ці старонка, на якой яны не могуць інакш кіраваць. " +#~ "Аўтары могуць прадставіць змены ў свае апублікаваныя ўтрыманні, і " +#~ "карыстачоў, якія edit_others_ магчымасць (але не edit_published_) можа " +#~ "прадставіць прапановы пра змены да ўтрымання іншых карыстачоў.

    Гэтыя Да Змены адлюстроўваюцца ў спісе рэгулярных да ўтрымання, але " +#~ "спасылка на форму кіравання рэвізіі. Там у чаканні перагляду могуць быць " +#~ "прагледжаны, у параўнанні з іншымі зменамі, а таксама зацверджаны ці " +#~ "выдалены кваліфікаваных рэдактараў. Калі падавец усталяваць будучым даце " +#~ "публікацыі, сцвярджэнне графікаў затрымку з публікацыяй перагледжаных " +#~ "утрыманне." + +#~ msgid "" +#~ "Send all revision notification emails asynchronously, via a secondary " +#~ "http request from the server." +#~ msgstr "" +#~ "Дасылайце ўсе электронныя апавяшчэнні перагляду асінхронна, з дапамогай " +#~ "другі запыт HTTP ад сервера." + +#~ msgid "" +#~ "Note: \"by default\" means Pending Revision creators can customize email " +#~ "notification recipients before submitting. Eligibile \"Publisher\" email " +#~ "recipients are members of the Pending Revision Monitors group who " +#~ "also have the ability to publish the revision." +#~ msgstr "" +#~ "Нататка:\"by default\" Рэдакцыя сродку Да стваральнікаў могуць наладзіць " +#~ "апавяшчэнні атрымальнікаў перад адпраўкай. Eligibile \"Publisher\" " +#~ "атрымальнікаў уваходных у чаканні Рэдакцыя Маніторы групы, якія " +#~ "таксама маюць магчымасць публікаваць змены." -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revisions.php:272 -msgid "To delete the revision, click the link below." -msgstr "Для выдалення рэдакцыі, націсніце ніжэй." - -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revisions.php:274 -msgid "You do not have permission to delete that revision." -msgstr "У вас няма правоў для выдалення рэдакцыі." - -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revisions.php:277 -msgid "The revision was unscheduled." -msgstr "Рэдакцыя была знята з планавання." +#, php-format +#~ msgid "" +#~ "Note: \"by default\" means Pending Revision creators can customize email " +#~ "notification recipients before submitting. For more flexibility in " +#~ "moderation and notification, install the %1$s Role Scoper%2$s plugin." +#~ msgstr "" +#~ "Нататка: \"па змаўчанні\" Рэдакцыя сродку Да стваральнікаў могуць " +#~ "наладзіць апавяшчэнні атрымальнікаў перад адпраўкай. Для большай " +#~ "гнуткасці ва ўмеранасці і абвесткі, усталёўку%1$s Role Scoper%2$s убудовы." + +#~ msgid "Specify which Revisionary Options should be applied site-wide." +#~ msgstr "Пакажыце, якія Revisionary Функцыі павінны ўжывацца на вэб-вузле." + +#~ msgid "" +#~ "Selected options will be controlled site-wide via Site Admin > " +#~ "Role Options; unselected options can be set per-blog via " +#~ "Roles > Options" +#~ msgstr "" +#~ "Абраныя параметры будуць кантралявацца на вэб-вузле з дапамогай " +#~ "Site Admin > Role Options невылучаныя параметры могуць " +#~ "быць усталяваны за блог з дапамогай Roles > Options" + +#~ msgid "Modified Date (click to view/restore)" +#~ msgstr "Даце апошняй змены (націсніце, каб прагледзець / аднавіць)" + +#~ msgid "Modified Date (click to view/approve)" +#~ msgstr "Дата змены (націсніце, каб прагледзець / прыняць)" + +#~ msgid "Modified Date (click to view/publish)" +#~ msgstr "Дата змены (націсніце, каб прагледзець / апублікаваць)" + +#~ msgid "Date as:" +#~ msgstr "Датавана:" + +#~ msgid "Unsaved Date Selection:" +#~ msgstr "Незахаваныя Выбар даты:" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revisions.php:296 #, php-format -msgid "Published on: %1$s" -msgstr "Апублікавана: %1$s" +#~ msgid "Past Revision of “%1$s”" +#~ msgstr "Апошняя рэдакцыя “%1$s”" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revisions.php:298 #, php-format -msgid "Scheduled for: %1$s" -msgstr "Запланавана: %1$s" +#~ msgid "Pending Revision of “%1$s”" +#~ msgstr "Да перагляду “%1$s”" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revisions.php:301 #, php-format -msgid "Requested Publish Date: %1$s" -msgstr "Запытаная дата публікацыі: %1$s" +#~ msgid "Scheduled Revision of “%1$s”" +#~ msgstr "Запланаваная рэдакцыя “%1$s”" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revisions.php:303 -msgid "Requested Publish Date: Immediate" -msgstr "Запытаная дата публікацыі: Неадкладна" +#~ msgid "Publish Now" +#~ msgstr "Публікаваць цяпер" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revisions.php:305 -#, php-format -msgid "Modified on: %1$s" -msgstr "Зменена: %1$s" +#~ msgid "The revision was deleted." +#~ msgstr "Версія была выдалена." -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revisions.php:406 -#, php-format -msgid "Older: modified %s" -msgstr "Старэй: зменена %s" +#~ msgid "To delete the revision, click the link below." +#~ msgstr "Для выдалення рэдакцыі, націсніце ніжэй." -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revisions.php:408 #, php-format -msgid "Newer: modified %s" -msgstr "Навей: зменена %s" +#~ msgid "Published on: %1$s" +#~ msgstr "Апублікавана: %1$s" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revisions.php:462 -msgid "These revisions are identical." -msgstr "Гэтыя змены з'яўляюцца ідэнтычнымі." +#, php-format +#~ msgid "Scheduled for: %1$s" +#~ msgstr "Запланавана: %1$s" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revisions.php:493 #, php-format -msgid "%1$s Revisions (%2$s)" -msgstr "%1$s Рэдакцыі (%2$s)" +#~ msgid "Requested Publish Date: %1$s" +#~ msgstr "Запытаная дата публікацыі: %1$s" + +#~ msgid "Requested Publish Date: Immediate" +#~ msgstr "Запытаная дата публікацыі: Неадкладна" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revisions.php:496 #, php-format -msgid "%1$s Revisions" -msgstr "%1$s рэдакцый" +#~ msgid "Modified on: %1$s" +#~ msgstr "Зменена: %1$s" -#: E:\www\wp29c\wp-content\plugins\revisionary/admin/revisions.php:512 #, php-format -msgid "no %s revisions available." -msgstr "не %s даступных рэдакцый." +#~ msgid "Older: modified %s" +#~ msgstr "Старэй: зменена %s" -#: E:\www\wp29c\wp-content\plugins\revisionary/lib/debug.php:182 #, php-format -msgid "%1$s queries in %2$s seconds. %3$s MB used." -msgstr "%1$s запытаў у %2$s секунд. %3$s MB выкарыстоўваецца." +#~ msgid "Newer: modified %s" +#~ msgstr "Навей: зменена %s" +#~ msgid "These revisions are identical." +#~ msgstr "Гэтыя змены з'яўляюцца ідэнтычнымі." diff --git a/languages/revisionary-de_DE.mo b/languages/revisionary-de_DE.mo index 316f50799178d3b30c32dbfc7f980105ae8f3cf5..e50d54641040d6729dda388cd7c580add96d2478 100644 GIT binary patch delta 5607 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 B0xkdm literal 34017 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 U?v-)JHWOzo)1C\n" "Language-Team: PublishPress \n" +"Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-SourceCharset: UTF-8\n" "X-Poedit-KeywordsList: __;_e;_c;__ngettext;_n;rvy_po_trigger;__awp\n" -"X-Poedit-Basepath: F:/snapshot/revisionary\n" -"X-Generator: Poedit 2.3.1\n" -"Last-Translator: \n" +"X-Poedit-Basepath: ..\n" +"X-Generator: Poedit 2.4.3\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Language: de\n" -"X-Poedit-SearchPath-0: F:/snapshot/revisionary\n" -"X-Poedit-SearchPath-1: F:/snapshot/revisionary/admin\n" -"X-Poedit-SearchPath-2: F:/snapshot/revisionary/lib\n" - -#: F:\snapshot\revisionary/front_rvy.php:143 -msgid "M j, Y @ g:i a" -msgstr "M j, Y @ g:i a" - -#: F:\snapshot\revisionary/front_rvy.php:170 -#, php-format -msgid "%sCompare%s%sView Published Post%s" -msgstr "%sVergleichen%s%s Veröffentlichten Beitrag ansehen%s" - -#: F:\snapshot\revisionary/front_rvy.php:180 -#, php-format -msgid "%sView Published Post%s" -msgstr "%s Veröffentlichten Beitrag ansehen%s" - -#: F:\snapshot\revisionary/front_rvy.php:189 -msgid "Edit" -msgstr "Bearbeiten" - -#: F:\snapshot\revisionary/front_rvy.php:225 -msgid "Approve" -msgstr "Genehmigen" - -#: F:\snapshot\revisionary/front_rvy.php:226 -#, php-format -msgid "This is a Pending Revision (requested publish date: %s). %s %s %s" -msgstr "" -"Dies ist eine ausstehende Revision (vorgesehenes Veröffentlichungsdatum: " -"%s). %s %s %s" - -#: F:\snapshot\revisionary/front_rvy.php:229 -#: F:\snapshot\revisionary/front_rvy.php:247 -msgid "Publish now" -msgstr "Jetzt veröffentlichen" - -#: F:\snapshot\revisionary/front_rvy.php:230 -#, php-format -msgid "This is a Pending Revision. %s %s %s" -msgstr "Dies ist eine ausstehende Revision. %s %s %s" - -#: F:\snapshot\revisionary/front_rvy.php:240 -msgid "This revision is very new, preview may not be synchronized with theme." -msgstr "" -"Diese Revision ist neu, die Voransicht ist eventuell noch nicht mit dem " -"Theme synchronisiert." - -#: F:\snapshot\revisionary/front_rvy.php:241 -msgid "Reload" -msgstr "Neuladen" - -# ? -#: F:\snapshot\revisionary/front_rvy.php:249 -#, php-format -msgid "This is a Scheduled Revision (for publication on %s). %s %s %s" -msgstr "Dies ist eine geplante Revision (Veröffentlichung am %s). %s %s %s" - -#: F:\snapshot\revisionary/front_rvy.php:256 -msgid "Restore" -msgstr "Wiederherstellen" - -#: F:\snapshot\revisionary/front_rvy.php:257 -#, php-format -msgid "This is a Past Revision (from %s). %s %s" -msgstr "Dies ist eine vergangene Revision (vom %s). %s %s" - -#: F:\snapshot\revisionary/front_rvy.php:269 -#, php-format -msgid "This is the Current Revision. %s" -msgstr "Dies ist die aktuelle Revision. %s" - -#: F:\snapshot\revisionary/revision-creation_rvy.php:44 -msgid "" -"Autosave disabled when editing a published post/page to create a pending " -"revision." -msgstr "" -"Automatisches Speichern ist deaktiviert während der Bearbeitung eines " -"veröffentlichten Beitrags, um eine ausstehende Revision erstellen zu können." - -#: F:\snapshot\revisionary/revision-creation_rvy.php:265 -msgid "Sorry, an error occurred while attempting to submit your revision!" -msgstr "Ein Fehler ist aufgetreten beim dem Einreichen der Revision!" - -#: F:\snapshot\revisionary/revision-creation_rvy.php:266 -msgid "Revision Submission Error" -msgstr "Fehler beim Einreichen der Revision" - -#: F:\snapshot\revisionary/revision-creation_rvy.php:359 -msgid "Pending Revision Created" -msgstr "Ausstehende Revision erstellt" - -#: F:\snapshot\revisionary/revision-creation_rvy.php:486 -msgid "Sorry, an error occurred while attempting to schedule your revision!" -msgstr "" -"Ein Problem ist aufgetreten während dem Versuch die Revision zu planen!" - -#: F:\snapshot\revisionary/revision-creation_rvy.php:487 -msgid "Revision Scheduling Error" -msgstr "Revision-Planungs Fehler" - -#: F:\snapshot\revisionary/revision-creation_rvy.php:524 -msgid "Scheduled Revision Created" -msgstr "Geplante Revision erstellt" - -#: F:\snapshot\revisionary/revision-creation_rvy.php:547 -msgid "Could not insert revision into the database" -msgstr "Revision konnte nicht in die Datenbank eingefügt werden" - -#: F:\snapshot\revisionary/revision-creation_rvy.php:588 -#, php-format -msgid "Invalid taxonomy: %s" -msgstr "Ungültige Taxonomy: %s" - -#: F:\snapshot\revisionary/revision-creation_rvy.php:667 -msgid "Invalid page template." -msgstr "Ungültiges Seiten Template." - -#: F:\snapshot\revisionary/revision-workflow_rvy.php:34 -#, php-format -msgid "[%s] Pending Revision Notification" -msgstr "[%s] Ausstehende Revisions-Nachricht" - -#: F:\snapshot\revisionary/revision-workflow_rvy.php:36 -#, php-format -msgid "A pending revision to the %1$s \"%2$s\" has been submitted." -msgstr "Eine ausstehende Revision zu %1$s \"%2$s\" wurde eingereicht." - -#: F:\snapshot\revisionary/revision-workflow_rvy.php:38 -#, php-format -msgid "It was submitted by %1$s." -msgstr "Eingereicht von %1$s." - -#: F:\snapshot\revisionary/revision-workflow_rvy.php:45 -msgid "Preview and Approval: " -msgstr "Vorschau und Genehmigung: " - -#: F:\snapshot\revisionary/revision-workflow_rvy.php:48 -msgid "Revision Queue: " -msgstr "Revision Queue: " - -#: F:\snapshot\revisionary/revision-workflow_rvy.php:50 -msgid "Edit Revision: " -msgstr "Revision bearbeiten: " - -#: F:\snapshot\revisionary/revision-workflow_rvy.php:138 -msgid "Sorry, an error occurred while attempting to save your revision." -msgstr "Ein Problem ist aufgetreten während dem Speichern ihrer Revision." - -#: F:\snapshot\revisionary/revision-workflow_rvy.php:169 -msgid "Your modification was saved as a Scheduled Revision." -msgstr "Ihre Änderungen wurden als geplante Revision übernommen." - -#: F:\snapshot\revisionary/revision-workflow_rvy.php:175 -#: F:\snapshot\revisionary/revision-workflow_rvy.php:212 -msgid "Preview it" -msgstr "Voransicht" - -#: F:\snapshot\revisionary/revision-workflow_rvy.php:182 -#: F:\snapshot\revisionary/revision-workflow_rvy.php:217 -msgid "Keep editing the revision" -msgstr "Revision weiter bearbeiten" - -#: F:\snapshot\revisionary/revision-workflow_rvy.php:184 -msgid "Go back to schedule another revision" -msgstr "Zurück gehen um eine weitere Revision zu planen" - -#: F:\snapshot\revisionary/revision-workflow_rvy.php:186 -#: F:\snapshot\revisionary/revision-workflow_rvy.php:225 -msgid "View Revision Queue" -msgstr "Revision Queue ansehen" - -#: F:\snapshot\revisionary/revision-workflow_rvy.php:195 -msgid "Your modification has been saved for editorial review." -msgstr "Ihre Änderungen wurden zur redaktionellen Prüfung gespeichert." - -#: F:\snapshot\revisionary/revision-workflow_rvy.php:198 -msgid "" -"If approved by an editor, it will be published on the date you specified." -msgstr "" -"Wenn durch einen Redakteur genehmigt, wird sie an dem spezifizierten Datum " -"veröffentlicht." - -#: F:\snapshot\revisionary/revision-workflow_rvy.php:200 -msgid "It will be published when an editor approves it." -msgstr "Sie wird veröffentlicht wenn ein Redakteur sie genehmigt." - -#: F:\snapshot\revisionary/revision-workflow_rvy.php:221 -msgid "Go back to submit another revision" -msgstr "Zurück gehen um eine andere Revision zu erstellen" - -#: F:\snapshot\revisionary/revision-workflow_rvy.php:242 -msgid "Return to Edit Posts" -msgstr "Zurück zu: Beiträge bearbeiten" - -#: F:\snapshot\revisionary/revision-workflow_rvy.php:245 -msgid "Return to Edit Pages" -msgstr "Zurück zu: Seiten bearbeiten" - -#: F:\snapshot\revisionary/revision-workflow_rvy.php:249 -#, php-format -msgid "Return to Edit %s" -msgstr "Zurück zu: %s bearbeiten" - -#: F:\snapshot\revisionary/revisionary.php:67 -msgid "This plugin can be deleted." -msgstr "Dieses Plugin kann gelöscht werden." - -#: F:\snapshot\revisionary/revisionary.php:83 -#: F:\snapshot\revisionary/revisionary.php:131 -#, php-format -msgid "" -"Another copy of PublishPress Revisions (or Revisionary) is already activated " -"(version %1$s: \"%2$s\")" -msgstr "" -"Eine weitere Kopie von PublishPress Revisions (oder Revisionary) ist bereits " -"aktiviert (Version %1$s: \"%2$s\")" - -#: F:\snapshot\revisionary/revisionary.php:85 -#: F:\snapshot\revisionary/revisionary.php:133 -#, php-format -msgid "" -"Another copy of PublishPress Revisions (or Revisionary) is already activated " -"(version %1$s)" -msgstr "" -"Eine weitere Kopie von PublishPress Revisions (oder Revisionary) ist bereits " -"aktiviert (Version %1$s)" - -#: F:\snapshot\revisionary/revisionary.php:151 -#, php-format -msgid "PublishPress Revisions requires PHP version %s or higher." -msgstr "PublishPress Revisions benötigt PHP Version %s oder höher." - -#: F:\snapshot\revisionary/revisionary.php:158 -#, php-format -msgid "PublishPress Revisions requires WordPress version %s or higher." -msgstr "PublishPress Revisions benötigt Wordpress Version %s oder höher." - -#: F:\snapshot\revisionary/revisionary_main.php:392 -msgid "Invalid featured media ID." -msgstr "Ungültige Beitragsbild ID." - -#: F:\snapshot\revisionary/rvy_init.php:150 -msgid "Pending Revision" -msgstr "Ausstehende Revision" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPath-1: admin\n" +"X-Poedit-SearchPath-2: classes\n" +"X-Poedit-SearchPath-3: includes\n" -#: F:\snapshot\revisionary/rvy_init.php:151 -#: F:\snapshot\revisionary/rvy_init.php:162 -msgid "Publish Revision" -msgstr "Revision veröffentlichen" +#: admin/RevisionEditSubmitMetabox.php:62 admin/class-list-table_rvy.php:872 +msgid "Delete Permanently" +msgstr "Endgültig Löschen" -#: F:\snapshot\revisionary/rvy_init.php:151 -#: F:\snapshot\revisionary/rvy_init.php:162 -msgid "Save Revision" -msgstr "Revision speichern" +#: admin/RevisionEditSubmitMetabox.php:64 +msgid "Move to Trash" +msgstr "In den Papierkorb legen" -#: F:\snapshot\revisionary/rvy_init.php:151 -#: F:\snapshot\revisionary/rvy_init.php:162 +#: admin/RevisionEditSubmitMetabox.php:85 +#: admin/edit-revision-classic-ui_rvy.php:30 +#: admin/edit-revision-classic-ui_rvy.php:65 +#: admin/edit-revision-classic-ui_rvy.php:68 +#: admin/edit-revision-classic-ui_rvy.php:74 +#: admin/edit-revision-classic-ui_rvy.php:75 +#: admin/post-editor-workflow-ui_rvy.php:22 rvy_init.php:226 rvy_init.php:237 +#: rvy_init.php:248 msgid "Update Revision" msgstr "Revision aktualisieren" -#: F:\snapshot\revisionary/rvy_init.php:151 -msgid "Pending Revisions" -msgstr "Ausstehende Revisionen" - -#: F:\snapshot\revisionary/rvy_init.php:151 -msgid "Pending" -msgstr "Ausstehend" +#: admin/RevisionEditSubmitMetabox.php:114 +#: admin/edit-revision-classic-ui_rvy.php:99 admin/post-edit_rvy.php:79 +#: admin/post-editor-workflow-ui_rvy.php:44 +msgid "View / Publish" +msgstr "Ansehen / Veröffentlichen" -#: F:\snapshot\revisionary/rvy_init.php:161 -msgid "Scheduled Revision" -msgstr "Geplante Revision" +#: admin/RevisionEditSubmitMetabox.php:114 +#: admin/edit-revision-classic-ui_rvy.php:99 admin/history_rvy.php:1072 +#: admin/post-edit_rvy.php:79 admin/post-editor-workflow-ui_rvy.php:44 +msgid "View / Approve" +msgstr "Ansehen / Genehmigen" -#: F:\snapshot\revisionary/rvy_init.php:162 -msgid "Scheduled Revisions" -msgstr "Geplante Revisionen" +#: admin/RevisionEditSubmitMetabox.php:115 +#: admin/edit-revision-classic-ui_rvy.php:100 admin/post-edit_rvy.php:98 +msgid "View / moderate saved revision" +msgstr "Ansehen / gespeicherte Revision moderieren" -#: F:\snapshot\revisionary/rvy_init.php:162 -msgid "Scheduled" -msgstr "Geplant" +#: admin/RevisionEditSubmitMetabox.php:117 admin/class-list-table_rvy.php:574 +#: admin/edit-revision-classic-ui_rvy.php:102 +#: admin/edit-revision-classic-ui_rvy.php:106 admin/history_rvy.php:1074 +#: admin/post-edit_rvy.php:82 +msgid "View" +msgstr "Ansehen" -#: F:\snapshot\revisionary/rvy_init.php:298 -msgid "Revisor" -msgstr "Prüfer" +#: admin/RevisionEditSubmitMetabox.php:118 +#: admin/edit-revision-classic-ui_rvy.php:103 admin/post-edit_rvy.php:101 +msgid "View saved revision" +msgstr "Gespeicherte Revision ansehen" -#: F:\snapshot\revisionary/rvy_init.php:688 -msgid "Revision Workflow" -msgstr "Revisions Workflow" +#: admin/RevisionEditSubmitMetabox.php:140 +msgid "Status:" +msgstr "Status:" -#: F:\snapshot\revisionary/submittee_rvy.php:11 -#: F:\snapshot\revisionary/submittee_rvy.php:14 -msgid "Cheatin’ uh?" -msgstr "" +#: admin/RevisionEditSubmitMetabox.php:173 +msgid "M j, Y @ G:i" +msgstr "M j, Y @ G:i" -#: F:\snapshot\revisionary/admin/admin-dashboard_rvy.php:28 +#: admin/RevisionEditSubmitMetabox.php:178 #, php-format -msgid "%1$s %2$s Revision" -msgstr "%1$s %2$s Revision" +msgid "Scheduled for: %s" +msgstr "Geplant für: %s" -#: F:\snapshot\revisionary/admin/admin-dashboard_rvy.php:30 +#: admin/RevisionEditSubmitMetabox.php:181 #, php-format -msgid "%1$s %2$s Revisions" -msgstr "%1$s %2$s Revisionen" +msgid "Publish on: %s" +msgstr "Veröffentlichen am: %s" -#: F:\snapshot\revisionary/admin/admin-dashboard_rvy.php:39 -#, php-format -msgid "View %s" -msgstr "Siehe %s" +#: admin/RevisionEditSubmitMetabox.php:184 +#: admin/edit-revision-classic-ui_rvy.php:179 +#, fuzzy +#| msgid "Publish immediately" +msgid "Publish on approval" +msgstr "Jetzt veröffentlichen" -#: F:\snapshot\revisionary/admin/admin-init_rvy.php:116 +#: admin/RevisionEditSubmitMetabox.php:190 admin/class-list-table_rvy.php:550 +#: admin/class-list-table_rvy.php:1175 admin/history_rvy.php:1116 +#: front_rvy.php:269 +msgid "Edit" +msgstr "Bearbeiten" + +#: admin/admin-init_rvy.php:126 admin/admin-init_rvy.php:202 msgid "Sorry, you are not allowed to approve this revision." msgstr "Sie sind nicht befugt diese Revision zu genehmigen." -#: F:\snapshot\revisionary/admin/admin-init_rvy.php:151 +#: admin/admin-init_rvy.php:167 +#, fuzzy +#| msgid "Sorry, you are not allowed to delete this revision." +msgid "Sorry, you are not allowed to submit this revision." +msgstr "Sie sind nicht befugt diese Revision zu löschen." + +#: admin/admin-init_rvy.php:231 msgid "Sorry, you are not allowed to delete this revision." msgstr "Sie sind nicht befugt diese Revision zu löschen." -#: F:\snapshot\revisionary/admin/admin-init_rvy.php:156 +#: admin/admin-init_rvy.php:236 msgid "Error in deleting." msgstr "Fehler beim Löschen." -#: F:\snapshot\revisionary/admin/admin-init_rvy.php:223 +#: admin/admin-init_rvy.php:316 #, php-format msgid "" "For more details on setting up PublishPress Revisions, %sread this guide%s." @@ -345,7 +125,7 @@ msgstr "" "Für mehr Details zum Aufsetzen von PublishPress Revisions, %slesen Sie diese " "Anleitung%s." -#: F:\snapshot\revisionary/admin/admin-init_rvy.php:229 +#: admin/admin-init_rvy.php:322 #, php-format msgid "" "Welcome to PublishPress Revisions! Here's how it works:" @@ -361,626 +141,703 @@ msgstr "" "\"Administratoren\" können Revisionen genehmigen oder ihre eigenen planen.%s%s%s" -#: F:\snapshot\revisionary/admin/admin-init_rvy.php:239 -#, php-format +#: admin/admin-init_rvy.php:332 +#, fuzzy, php-format +#| msgid "" +#| "Revisionary is now PublishPress Revisions! Note the new " +#| "Revisions menu and %sRevision Queue%s screen, where Pending and Scheduled " +#| "Revisions are listed. %s" msgid "" "Revisionary is now PublishPress Revisions! Note the new " -"Revisions menu and %sRevision Queue%s screen, where Pending and Scheduled " -"Revisions are listed. %s" +"Revisions menu and %sRevision Queue%s screen, where Change Requests and " +"Scheduled Changes are listed. %s" msgstr "" "Revisionary ist nun PublishPress Revisions! Im Revisions-" "Menü und am %sRevision Queue%s Screen werden ausstehende und geplante " "Revisionen aufgelistet. %s" -#: F:\snapshot\revisionary/admin/admin-init_rvy.php:265 +#: admin/admin-init_rvy.php:358 msgid "Dismiss" msgstr "Ausblenden" -#: F:\snapshot\revisionary/admin/admin_lib-mu_rvy.php:12 -#: F:\snapshot\revisionary/admin/options.php:199 -msgid "PublishPress Revisions Network Settings" -msgstr "PublishPress Revisions Netzwerk Einstellungen" - -#: F:\snapshot\revisionary/admin/admin_lib-mu_rvy.php:12 -msgid "Network Settings" -msgstr "Netzwerk Einstellungen" - -#: F:\snapshot\revisionary/admin/admin_lib-mu_rvy.php:23 -#: F:\snapshot\revisionary/admin/options.php:201 -msgid "PublishPress Revisions Network Defaults" -msgstr "PublishPress Revision Netzwerk Standardeinstellungen" - -#: F:\snapshot\revisionary/admin/admin_lib-mu_rvy.php:23 -msgid "Network Defaults" -msgstr "Netzwerk Standardeinstellungen" - -#: F:\snapshot\revisionary/admin/admin_rvy.php:296 -#: F:\snapshot\revisionary/admin/admin_rvy.php:601 -msgid "Revision Queue" -msgstr "Revision Queue" - -#: F:\snapshot\revisionary/admin/admin_rvy.php:304 +#: admin/admin-posts_rvy.php:27 msgid "The revision was restored." msgstr "Die Revision wurde wiederhergestellt." -#: F:\snapshot\revisionary/admin/admin_rvy.php:307 +#: admin/admin-posts_rvy.php:30 msgid "The revision was scheduled for publication." msgstr "Die Veröffentlichung der Revision wurde geplant." -#: F:\snapshot\revisionary/admin/admin_rvy.php:310 +#: admin/admin-posts_rvy.php:33 msgid "The revision was published." msgstr "Die Revision wurde veröffentlicht." -#: F:\snapshot\revisionary/admin/admin_rvy.php:423 -#: F:\snapshot\revisionary/admin/PostEditSubmitMetabox.php:349 -#, php-format -msgid "Scheduled for: %s" -msgstr "Geplant für: %s" - -#: F:\snapshot\revisionary/admin/admin_rvy.php:425 -#: F:\snapshot\revisionary/admin/PostEditSubmitMetabox.php:351 -#, php-format -msgid "Published on: %s" -msgstr "Veröffentlicht am: %s" +#: admin/admin-posts_rvy.php:113 admin/class-list-table_rvy.php:434 +#: rvy_init.php:236 +msgid "Change Request" +msgstr "" -#: F:\snapshot\revisionary/admin/admin_rvy.php:427 -#: F:\snapshot\revisionary/admin/admin_rvy.php:435 -#: F:\snapshot\revisionary/admin/PostEditSubmitMetabox.php:353 -#: F:\snapshot\revisionary/admin/PostEditSubmitMetabox.php:361 -msgid "Publish immediately" -msgstr "Jetzt veröffentlichen" +#: admin/admin-posts_rvy.php:130 +#, fuzzy +#| msgid "Past Revisions" +msgid "Has Revision" +msgstr "Bisherige Revisionen" -#: F:\snapshot\revisionary/admin/admin_rvy.php:429 -#: F:\snapshot\revisionary/admin/PostEditSubmitMetabox.php:355 -#, php-format -msgid "Schedule for: %s" -msgstr "Geplant für: %s" +#: admin/admin-posts_rvy.php:145 admin/admin_rvy.php:172 admin/options.php:102 +msgid "Revision Queue" +msgstr "Revision Queue" -#: F:\snapshot\revisionary/admin/admin_rvy.php:431 -#: F:\snapshot\revisionary/admin/PostEditSubmitMetabox.php:357 -#, php-format -msgid "Publish on: %s" -msgstr "Veröffentlichen am: %s" +#: admin/admin-posts_rvy.php:160 +msgid "New Working Copy" +msgstr "" -#: F:\snapshot\revisionary/admin/admin_rvy.php:467 -msgid "Save as Pending Revision" -msgstr "Als ausstehende Revision speichern" +#: admin/admin_lib-mu_rvy.php:10 admin/options.php:213 +msgid "PublishPress Revisions Network Settings" +msgstr "PublishPress Revisions Netzwerk Einstellungen" -#: F:\snapshot\revisionary/admin/admin_rvy.php:470 -#: F:\snapshot\revisionary/admin/post-edit-block-ui_rvy.php:113 -msgid "Do not publish current changes yet, but save to Revision Queue" -msgstr "" -"Momentane Änderungen noch nicht veröffentlichen, aber in der Revision Queue " -"einreihen" +#: admin/admin_lib-mu_rvy.php:10 +msgid "Network Settings" +msgstr "Netzwerk Einstellungen" -#: F:\snapshot\revisionary/admin/admin_rvy.php:490 -#: F:\snapshot\revisionary/admin/admin_rvy.php:615 -#: F:\snapshot\revisionary/admin/options.php:96 -msgid "Settings" -msgstr "Einstellungen" +#: admin/admin_lib-mu_rvy.php:21 admin/options.php:215 +msgid "PublishPress Revisions Network Defaults" +msgstr "PublishPress Revision Netzwerk Standardeinstellungen" -#: F:\snapshot\revisionary/admin/admin_rvy.php:528 -#: F:\snapshot\revisionary/admin/filters-admin-ui-item_rvy.php:62 -msgid "Current Time" -msgstr "Aktuelle Zeit" +#: admin/admin_lib-mu_rvy.php:21 +msgid "Network Defaults" +msgstr "Netzwerk Standardeinstellungen" -#: F:\snapshot\revisionary/admin/admin_rvy.php:582 -#: F:\snapshot\revisionary/admin/admin_rvy.php:598 +#: admin/admin_rvy.php:153 admin/admin_rvy.php:169 msgid "Revisions" msgstr "Revisionen" -#: F:\snapshot\revisionary/admin/admin_rvy.php:615 -#: F:\snapshot\revisionary/admin/options.php:205 +#: admin/admin_rvy.php:185 admin/options.php:219 msgid "PublishPress Revisions Settings" msgstr "PublishPress Revisions Einstellungen" -#: F:\snapshot\revisionary/admin/admin_rvy.php:622 -#: F:\snapshot\revisionary/admin/admin_rvy.php:623 +#: admin/admin_rvy.php:185 admin/admin_rvy.php:222 admin/options.php:94 +msgid "Settings" +msgstr "Einstellungen" + +#: admin/admin_rvy.php:192 admin/admin_rvy.php:193 msgid "Upgrade to Pro" msgstr "Auf Pro upgraden" -#: F:\snapshot\revisionary/admin/admin_rvy.php:712 -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:1038 -msgid "Delete" -msgstr "Löschen" - -#: F:\snapshot\revisionary/admin/admin_rvy.php:723 -#, php-format -msgid "%s (revision)" -msgstr "%s (Revision)" - -#: F:\snapshot\revisionary/admin/admin_rvy.php:757 +#: admin/admin_rvy.php:262 #, php-format msgid "If you like %s, please leave us a %s rating. Thank you!" msgstr "" "Gefällt dir PublishPress %s, dann lass uns eine %s Bewertung da. Danke!" -#: F:\snapshot\revisionary/admin/admin_rvy.php:768 +#: admin/admin_rvy.php:273 msgid "About PublishPress Revisions" msgstr "Über PublishPress Revisionen" -#: F:\snapshot\revisionary/admin/admin_rvy.php:768 +#: admin/admin_rvy.php:273 msgid "About" msgstr "About" -#: F:\snapshot\revisionary/admin/admin_rvy.php:770 +#: admin/admin_rvy.php:275 msgid "PublishPress Revisions Documentation" msgstr "PublishPress Revisions Dokumentation" -#: F:\snapshot\revisionary/admin/admin_rvy.php:770 -#: F:\snapshot\revisionary/admin/options.php:670 +#: admin/admin_rvy.php:275 admin/options.php:780 msgid "Documentation" msgstr "Dokumentation" -#: F:\snapshot\revisionary/admin/admin_rvy.php:772 +#: admin/admin_rvy.php:277 msgid "Contact the PublishPress team" msgstr "Kontaktiere das PublishPress Team" -#: F:\snapshot\revisionary/admin/admin_rvy.php:772 +#: admin/admin_rvy.php:277 msgid "Contact" msgstr "Kontakt" -#: F:\snapshot\revisionary/admin/agents_checklist_rvy.php:43 -msgid "Enter additional User Names or IDs (comma-separate)" -msgstr "Zusätzliche Nutzernamen oder IDs eingeben (kommagetrennt)" - -#: F:\snapshot\revisionary/admin/agents_checklist_rvy.php:98 +#: admin/agents_checklist_rvy.php:63 #, php-format msgid "show current users (%d)" msgstr "Momentane Nutzer anzeigen (%d)" -#: F:\snapshot\revisionary/admin/agents_checklist_rvy.php:98 +#: admin/agents_checklist_rvy.php:63 #, php-format msgid "show eligible users (%d)" msgstr "Berechtigte Nutzer anzeigen (%d)" -#: F:\snapshot\revisionary/admin/agents_checklist_rvy.php:116 +#: admin/agents_checklist_rvy.php:81 msgid "filter:" msgstr "Filter:" -#: F:\snapshot\revisionary/admin/agents_checklist_rvy.php:125 +#: admin/agents_checklist_rvy.php:90 msgid "select" msgstr "auswählen" -#: F:\snapshot\revisionary/admin/agents_checklist_rvy.php:130 +#: admin/agents_checklist_rvy.php:95 msgid "unselect" msgstr "abwählen" -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:278 +#: admin/class-list-table_rvy.php:390 msgid "Revision" msgstr "Revision" -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:279 +#: admin/class-list-table_rvy.php:391 admin/post-editor-workflow-ui_rvy.php:25 msgid "Status" msgstr "Status" -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:280 +#: admin/class-list-table_rvy.php:392 msgid "Post Type" msgstr "Beitragstyp" -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:281 +#: admin/class-list-table_rvy.php:393 msgid "Revised By" msgstr "Überarbeitet von" -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:282 +#: admin/class-list-table_rvy.php:394 msgid "Submission" msgstr "Einreichung" -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:290 +#: admin/class-list-table_rvy.php:402 msgid "Schedule" msgstr "Zeitplan" -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:293 +#: admin/class-list-table_rvy.php:405 msgid "Published Post" msgstr "Veröffentlichter Beitrag" -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:294 +#: admin/class-list-table_rvy.php:407 msgid "Post Author" msgstr "Beitrags-Autor" -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:335 -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:958 +#: admin/class-list-table_rvy.php:431 rvy_init.php:225 +msgid "Working Copy" +msgstr "" + +#: admin/class-list-table_rvy.php:437 rvy_init.php:247 +#, fuzzy +#| msgid "Scheduled" +msgid "Scheduled Change" +msgstr "Geplant" + +#: admin/class-list-table_rvy.php:453 admin/class-list-table_rvy.php:1103 msgid "Y/m/d g:i:s a" msgstr "Y/m/d g:i:s a" -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:343 -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:963 -#: F:\snapshot\revisionary/admin/history_rvy.php:953 +#: admin/class-list-table_rvy.php:461 admin/class-list-table_rvy.php:1108 +#: admin/history_rvy.php:987 #, php-format msgid "%s ago" msgstr "vor %s" -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:346 -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:966 +#: admin/class-list-table_rvy.php:464 admin/class-list-table_rvy.php:1111 msgid "Y/m/d g:i a" msgstr "Y/m/d g:i a" -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:353 +#: admin/class-list-table_rvy.php:471 #, php-format msgid "Scheduled publication: %s" msgstr "Geplante Veröffentlichung: %s" -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:356 +#: admin/class-list-table_rvy.php:474 #, php-format msgid "Requested publication: %s" msgstr "Angefragte Veröffentlichung: %s" -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:360 +#: admin/class-list-table_rvy.php:478 msgid "Missed schedule" msgstr "Verpasste Planung" -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:403 -#: F:\snapshot\revisionary/admin/history_rvy.php:771 +#: admin/class-list-table_rvy.php:521 admin/history_rvy.php:781 msgid "No author" msgstr "Kein Autor" -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:442 +#: admin/class-list-table_rvy.php:561 #, php-format msgid "View only revisions of %s" msgstr "Siehe nur Revisionen von %s" -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:443 -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:761 +#: admin/class-list-table_rvy.php:562 admin/class-list-table_rvy.php:914 msgid "Filter" msgstr "Filter" -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:451 +#: admin/class-list-table_rvy.php:573 admin/class-list-table_rvy.php:581 msgid "View published post" msgstr "Siehe veröffentlichte Beiträge" -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:452 -#: F:\snapshot\revisionary/admin/history_rvy.php:1038 -#: F:\snapshot\revisionary/admin/post-edit-block-ui_rvy.php:46 -#: F:\snapshot\revisionary/admin/post-edit_rvy.php:99 -#: F:\snapshot\revisionary/admin/post-edit_rvy.php:103 -#: F:\snapshot\revisionary/admin/post-edit_rvy.php:251 -#: F:\snapshot\revisionary/admin/PostEditSubmitMetabox.php:176 -msgid "View" -msgstr "Ansehen" +#: admin/class-list-table_rvy.php:582 admin/class-list-table_rvy.php:1201 +#: admin/history_rvy.php:1169 admin/revision-ui_rvy.php:275 +#: admin/revision-ui_rvy.php:297 +msgid "Preview" +msgstr "Voransicht" -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:474 +#: admin/class-list-table_rvy.php:605 msgid "Compare Past Revisions" msgstr "Mit bisherigen Revisionen vergleichen" -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:475 +#: admin/class-list-table_rvy.php:606 msgid "History" msgstr "Historie" -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:625 -#, php-format -msgid "%sMy Revisions%s(%s)" +#: admin/class-list-table_rvy.php:768 +#, fuzzy, php-format +#| msgid "%sMy Revisions%s(%s)" +msgid "%sMy Copies & Changes%s (%s)" msgstr "%sMeine Revisionen%s(%s)" -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:654 +#: admin/class-list-table_rvy.php:802 #, php-format msgid "%sMy Published Posts%s(%s)" msgstr "%sMeine veröffentlichten Beiträge%s (%s)" -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:689 +#: admin/class-list-table_rvy.php:837 #, php-format msgid "All %s" msgstr "Alle %s" -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:715 +#: admin/class-list-table_rvy.php:861 front_rvy.php:312 +#, fuzzy +#| msgid "Submitted " +msgid "Submit" +msgstr "Geplante Revision einreichen" + +#: admin/class-list-table_rvy.php:864 admin/history_rvy.php:1072 +#: front_rvy.php:331 +msgid "Approve" +msgstr "Genehmigen" + +#: admin/class-list-table_rvy.php:865 msgid "Publish" msgstr "Veröffentlichen" -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:718 -#: F:\snapshot\revisionary/admin/PostEditSubmitMetabox.php:103 -msgid "Delete Permanently" -msgstr "Endgültig Löschen" +#: admin/class-list-table_rvy.php:868 admin/revision-ui_rvy.php:280 +msgid "Unschedule" +msgstr "Planung streichen" -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:740 +#: admin/class-list-table_rvy.php:893 msgid "Filter by category" msgstr "Nach Kategorie filtern" -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:803 +#: admin/class-list-table_rvy.php:958 msgid "Filter by date" msgstr "Nach Datum filtern" -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:805 +#: admin/class-list-table_rvy.php:960 msgid "All dates" msgstr "Alle Daten" -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:864 +#: admin/class-list-table_rvy.php:1019 msgid "Select All" msgstr "Alle auswählen" -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:946 +#: admin/class-list-table_rvy.php:1091 #, php-format msgid "“%s” (Edit)" msgstr "“%s” (Bearbeiten)" -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:1037 +#: admin/class-list-table_rvy.php:1184 msgid "Delete Revision" msgstr "Revision Löschen" -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:1053 +#: admin/class-list-table_rvy.php:1185 admin/revision-ui_rvy.php:285 +#: admin/revision-ui_rvy.php:411 +msgid "Delete" +msgstr "Löschen" + +#: admin/class-list-table_rvy.php:1200 msgid "Preview Revision" msgstr "Voransicht der Revision" -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:1054 -#: F:\snapshot\revisionary/admin/history_rvy.php:1120 -msgid "Preview" -msgstr "Voransicht" - -#: F:\snapshot\revisionary/admin/class-list-table_rvy.php:1065 +#: admin/class-list-table_rvy.php:1213 msgid "Compare Changes" msgstr "Änderungen vergleichen" -#: F:\snapshot\revisionary/admin/filters-admin-ui-item_rvy.php:36 -#: F:\snapshot\revisionary/admin/post-edit-block-ui_rvy.php:109 -msgid "Schedule Revision" -msgstr "Revision planen" +#: admin/edit-revision-block-ui_rvy.php:20 +msgid "Enable public preview" +msgstr "" -#: F:\snapshot\revisionary/admin/filters-admin-ui-item_rvy.php:59 -#: F:\snapshot\revisionary/admin/filters-admin-ui-item_rvy.php:60 -#: F:\snapshot\revisionary/admin/post-edit-block-ui_rvy.php:153 -#: F:\snapshot\revisionary/admin/post-edit-block-ui_rvy.php:154 -msgid "Submit Revision" -msgstr "Revision einreichen" +#: admin/edit-revision-classic-ui_rvy.php:33 admin/post-edit_rvy.php:26 +#: admin/post-edit_rvy.php:64 +msgid "Current Time" +msgstr "Aktuelle Zeit" -#: F:\snapshot\revisionary/admin/filters-admin-ui-item_rvy.php:61 -msgid "Submit Scheduled Revision" -msgstr "Geplante Revision einreichen" +#: admin/edit-revision-classic-ui_rvy.php:43 +#: admin/edit-revision-classic-ui_rvy.php:46 +#: admin/edit-revision-classic-ui_rvy.php:52 +#: admin/edit-revision-classic-ui_rvy.php:53 +#, fuzzy +#| msgid "Compare Changes" +msgid "Submit Changes" +msgstr "Änderungen vergleichen" + +#: admin/edit-revision-classic-ui_rvy.php:47 +#, fuzzy +#| msgid "Submit Scheduled Revision" +msgid "Submit Change Schedule" +msgstr "Geplante Revision einreichen" + +#: admin/edit-revision-classic-ui_rvy.php:107 +#: admin/post-editor-workflow-ui_rvy.php:58 +msgid "View unsaved changes" +msgstr "Ungesicherte Änderungen ansehen" + +#: admin/edit-revision-classic-ui_rvy.php:113 +#, php-format +msgid "Edit %s Revision" +msgstr "%s Revision bearbeiten" -#: F:\snapshot\revisionary/admin/filters-admin-ui-item_rvy.php:101 -msgid "Publishers to Notify of Your Revision" -msgstr "Von deiner Revision zu benachrichtigende Verleger" +#: admin/edit-revision-classic-ui_rvy.php:209 +msgid "Compare this revision to published copy, or to other revisions" +msgstr "" +"Vergleich dieser Revision mit der veröffentlichten Kopie oder anderen " +"Revisionen" -#: F:\snapshot\revisionary/admin/history_rvy.php:136 +#: admin/edit-revision-classic-ui_rvy.php:222 +#, php-format +msgid "Revision updated. %sView Preview%s" +msgstr "Revision aktualisiert. %sVoransicht%s" + +#: admin/edit-revision-classic-ui_rvy.php:224 +msgid "Revision updated." +msgstr "Revision aktualisiert." + +#: admin/filters-admin-ui-item_rvy.php:26 admin/options.php:101 +#: admin/revisions.php:221 rvy_init.php:237 +msgid "Change Requests" +msgstr "" + +#: admin/filters-admin-ui-item_rvy.php:32 admin/options.php:100 +#: admin/revisions.php:224 rvy_init.php:248 +#, fuzzy +#| msgid "Scheduled" +msgid "Scheduled Changes" +msgstr "Geplant" + +#: admin/history_rvy.php:158 #, php-format msgid "Compare %s of “%s”" msgstr "Vergleiche %s von “%s”" -#: F:\snapshot\revisionary/admin/history_rvy.php:137 +#: admin/history_rvy.php:159 msgid "← Return to editor" msgstr "← Zurück zum Editor" -#: F:\snapshot\revisionary/admin/history_rvy.php:439 -#: F:\snapshot\revisionary/admin/history_rvy.php:442 +#: admin/history_rvy.php:436 admin/history_rvy.php:439 msgid "(no title)" msgstr "(kein Titel)" -#: F:\snapshot\revisionary/admin/history_rvy.php:530 +#: admin/history_rvy.php:525 admin/options.php:545 msgid "Post Date" msgstr "Beitragsdatum" -#: F:\snapshot\revisionary/admin/history_rvy.php:531 +#: admin/history_rvy.php:526 msgid "Post Parent" msgstr "Ursprungsbeitrag" -#: F:\snapshot\revisionary/admin/history_rvy.php:532 +#: admin/history_rvy.php:527 msgid "Menu Order" msgstr "Menü-Reihenfolge" -#: F:\snapshot\revisionary/admin/history_rvy.php:533 +#: admin/history_rvy.php:528 msgid "Comment Status" msgstr "Kommentar-Status" -#: F:\snapshot\revisionary/admin/history_rvy.php:534 +#: admin/history_rvy.php:529 msgid "Ping Status" msgstr "Ping Status" -#: F:\snapshot\revisionary/admin/history_rvy.php:654 +#: admin/history_rvy.php:664 msgid "Page Template" msgstr "Seiten-Template" -#: F:\snapshot\revisionary/admin/history_rvy.php:657 +#: admin/history_rvy.php:667 msgid "Featured Image" msgstr "Beitragsbild" -#: F:\snapshot\revisionary/admin/history_rvy.php:666 +#: admin/history_rvy.php:676 msgid "Beaver Builder Data" msgstr "Beaver Builder Daten" -#: F:\snapshot\revisionary/admin/history_rvy.php:667 +#: admin/history_rvy.php:677 msgid "Beaver Builder Settings" msgstr "Beaver Builder Einstellungen" -#: F:\snapshot\revisionary/admin/history_rvy.php:880 +#: admin/history_rvy.php:914 msgid "Scheduled for " msgstr "Geplant für " -#: F:\snapshot\revisionary/admin/history_rvy.php:885 +#: admin/history_rvy.php:919 msgid "Requested for " msgstr "Angefragt für " -#: F:\snapshot\revisionary/admin/history_rvy.php:890 -msgid "Submitted " -msgstr "Eingereicht " +#: admin/history_rvy.php:924 +#, fuzzy +#| msgid "Modified Date" +msgid "Modified " +msgstr "Modifiziertes Datum" -#: F:\snapshot\revisionary/admin/history_rvy.php:895 +#: admin/history_rvy.php:929 #, php-format msgid "%s%s ago" msgstr "Vor %s%s" -#: F:\snapshot\revisionary/admin/history_rvy.php:895 +#: admin/history_rvy.php:929 #, php-format msgid "%s%s from now" msgstr "Noch %s%s" -#: F:\snapshot\revisionary/admin/history_rvy.php:951 +#: admin/history_rvy.php:940 admin/revision-action_rvy.php:310 +#: admin/revision-action_rvy.php:392 admin/revision-ui_rvy.php:265 +#: front_rvy.php:210 +msgid "M j, Y @ g:i a" +msgstr "M j, Y @ g:i a" + +#: admin/history_rvy.php:985 msgid "M j, Y @ H:i" msgstr "M j, Y @ H:i" -#: F:\snapshot\revisionary/admin/history_rvy.php:1036 -#: F:\snapshot\revisionary/admin/post-edit-block-ui_rvy.php:43 -#: F:\snapshot\revisionary/admin/post-edit_rvy.php:96 -#: F:\snapshot\revisionary/admin/post-edit_rvy.php:249 -#: F:\snapshot\revisionary/admin/PostEditSubmitMetabox.php:173 -msgid "Preview / Approve" -msgstr "Ansehen / Genehmigen" - -#: F:\snapshot\revisionary/admin/history_rvy.php:1119 +#: admin/history_rvy.php:1168 msgid "Preview / Restore" msgstr "Voransicht / Wiederherstellen" -#: F:\snapshot\revisionary/admin/history_rvy.php:1126 +#: admin/history_rvy.php:1175 msgid "Manage" msgstr "Verwalten" -#: F:\snapshot\revisionary/admin/history_rvy.php:1127 +#: admin/history_rvy.php:1176 msgid "List" msgstr "Auflisten" -#: F:\snapshot\revisionary/admin/options.php:96 +#: admin/options.php:81 submittee_rvy.php:11 submittee_rvy.php:14 +msgid "Cheatin’ uh?" +msgstr "" + +#: admin/options.php:94 msgid "Setting Scope" msgstr "Bereich festlegen" -#: F:\snapshot\revisionary/admin/options.php:100 +#: admin/options.php:98 msgid "Role Definition" msgstr "Rollendefinition" -#: F:\snapshot\revisionary/admin/options.php:103 +#: admin/options.php:99 admin/revisions.php:218 rvy_init.php:226 +msgid "Working Copies" +msgstr "" + +#: admin/options.php:103 msgid "Preview / Approval" msgstr "Voransicht / Genehmigung" -#: F:\snapshot\revisionary/admin/options.php:104 +#: admin/options.php:104 msgid "Revision Options" msgstr "Revisions-Optionen" -#: F:\snapshot\revisionary/admin/options.php:105 +#: admin/options.php:105 msgid "Email Notification" msgstr "Email-Benachrichtigungen" -#: F:\snapshot\revisionary/admin/options.php:111 -msgid "Enable Pending Revisions" +#: admin/options.php:112 +msgid "Working Copies require role capability" +msgstr "" + +#: admin/options.php:113 +#, fuzzy +#| msgid "Enable Pending Revisions" +msgid "Enable Change Requests" msgstr "Aktiviere ausstehende Revisionen" -#: F:\snapshot\revisionary/admin/options.php:112 -msgid "Enable Scheduled Revisions" +#: admin/options.php:114 +#, fuzzy +#| msgid "Enable Scheduled Revisions" +msgid "Enable Scheduled Changes" msgstr "Aktiviere geplante Revisionen" -#: F:\snapshot\revisionary/admin/options.php:113 -msgid "Prevent Revisors from editing others' revisions" -msgstr "Hindern sie Prüfer daran, die Revisionen anderer zu bearbeiten" +#: admin/options.php:115 +msgid "Change Requests require role capability" +msgstr "" + +#: admin/options.php:116 +msgid "Editing others' revisions requires role capability" +msgstr "" -#: F:\snapshot\revisionary/admin/options.php:114 -msgid "Prevent Revisors from viewing others' revisions" -msgstr "Hindern sie Prüfer daran, die Revisionen anderer zu ansehen" +#: admin/options.php:117 +msgid "Listing others' revisions requires role capability" +msgstr "" -#: F:\snapshot\revisionary/admin/options.php:115 -msgid "Revision publication triggers API actions to mimic post update" +#: admin/options.php:118 +msgid "Users can always administer revisions to their own editable posts" +msgstr "" + +#: admin/options.php:119 +msgid "Compatibility Mode" +msgstr "" + +#: admin/options.php:120 +msgid "Also notify on Revision Update" +msgstr "" + +#: admin/options.php:121 +#, fuzzy +#| msgid "Revision publication triggers API actions to mimic post update" +msgid "Revision Publication: API actions to mimic Post Update" msgstr "" "Revisionsveröffentlichung löst API Aktionen aus um Beitragsaktualisierung " "nachzuahmen" -#: F:\snapshot\revisionary/admin/options.php:116 -msgid "Strip html tags out of difference display" -msgstr "HTML Tags aus Gegenüberstellung entfernen" +#: admin/options.php:122 +#, fuzzy +#| msgid "Approve Button on Compare Revisions screen" +msgid "Hide html tags on Compare Revisions screen" +msgstr "Genehmigungsknopfs bei der Gegenüberstellung der Revisionen" -#: F:\snapshot\revisionary/admin/options.php:117 +#: admin/options.php:123 msgid "Asynchronous Publishing" msgstr "Asynchrone Veröffentlichung" -#: F:\snapshot\revisionary/admin/options.php:118 -#: F:\snapshot\revisionary/admin/options.php:119 +#: admin/options.php:124 admin/options.php:125 msgid "Update Publish Date" msgstr "Veröffentlichungsdatum aktualisieren" -#: F:\snapshot\revisionary/admin/options.php:120 -msgid "Email original Author when a Pending Revision is submitted" +#: admin/options.php:126 admin/options.php:127 +#, fuzzy +#| msgid "Modified Date" +msgid "Update Modified Date" +msgstr "Modifiziertes Datum" + +#: admin/options.php:128 +#, fuzzy +#| msgid "Email original Author when a Pending Revision is submitted" +msgid "Email original Author when a Change Request is submitted" msgstr "" "Ursprünglichen Autor via E-Mail benachrichtigen wenn eine ausstehende " "Revision eingereicht wurde" -#: F:\snapshot\revisionary/admin/options.php:121 -msgid "Email the original Author when a Pending Revision is approved" +#: admin/options.php:129 +#, fuzzy +#| msgid "Email the original Author when a Pending Revision is approved" +msgid "Email the original Author when a Change Request is approved" msgstr "" "Ursprünglichen Autor via E-Mail benachrichtigen wenn eine ausstehende " "Revision genehmigt wurde" -#: F:\snapshot\revisionary/admin/options.php:122 -msgid "Email the Revisor when a Pending Revision is approved" +#: admin/options.php:130 +#, fuzzy +#| msgid "Email the Revisor when a Pending Revision is approved" +msgid "Email the Revisor when a Change Request is approved" msgstr "Prüfer via E-Mail benachrichtigen wenn eine Revision genehmigt wurde" -#: F:\snapshot\revisionary/admin/options.php:123 -msgid "Email the original Author when a Scheduled Revision is published" +#: admin/options.php:131 +#, fuzzy +#| msgid "Email the original Author when a Scheduled Revision is published" +msgid "Email the original Author when a Scheduled Change is published" msgstr "" "Ursprünglichen Autor via E-Mail benachrichtigen wenn eine geplante Revision " "veröffentlicht wurde" -#: F:\snapshot\revisionary/admin/options.php:124 -msgid "Email the Revisor when a Scheduled Revision is published" +#: admin/options.php:132 +#, fuzzy +#| msgid "Email the Revisor when a Scheduled Revision is published" +msgid "Email the Revisor when a Scheduled Change is published" msgstr "" "Genehmiger via E-Mail benachrichtigen wenn eine geplante Revision " "veröffentlicht wurde" -#: F:\snapshot\revisionary/admin/options.php:125 +#: admin/options.php:133 msgid "Enable notification buffer" msgstr "Aktiviere Benachrichtigungs-Puffer" -#: F:\snapshot\revisionary/admin/options.php:126 +#: admin/options.php:134 msgid "All custom post types available to Revisors" msgstr "Alle für Prüfer verfügbaren benutzerdefinierten Beitragstypen" -#: F:\snapshot\revisionary/admin/options.php:127 +#: admin/options.php:135 msgid "Prevent Revisors from editing other user's drafts" msgstr "Andere Prüfer daran hindern, Entwürfe anderer zu bearbeiten" -#: F:\snapshot\revisionary/admin/options.php:128 +#: admin/options.php:136 msgid "Display Hints" msgstr "Hinweise anzeigen" -#: F:\snapshot\revisionary/admin/options.php:129 +#: admin/options.php:137 msgid "Show Preview Links" msgstr "Siehe Voransichts-Links" -#: F:\snapshot\revisionary/admin/options.php:130 +#: admin/options.php:138 msgid "Preview Link Type" msgstr "Link-Typ Voransicht" -#: F:\snapshot\revisionary/admin/options.php:131 +#: admin/options.php:139 msgid "Approve Button on Compare Revisions screen" msgstr "Genehmigungsknopfs bei der Gegenüberstellung der Revisionen" -#: F:\snapshot\revisionary/admin/options.php:135 -msgid "Email designated Publishers when a Pending Revision is submitted" +#: admin/options.php:140 +#, fuzzy +#| msgid "The revision was published." +msgid "Copy revision comments to published post" +msgstr "Die Revision wurde veröffentlicht." + +#: admin/options.php:141 +#, fuzzy +#| msgid "Compare Past Revisions" +msgid "Compare Past Revisions ordering:" +msgstr "Mit bisherigen Revisionen vergleichen" + +#: admin/options.php:147 +#, fuzzy +#| msgid "Email designated Publishers when a Pending Revision is submitted" +msgid "Email designated Publishers when a Change Request is submitted" msgstr "" "Festgelegte Verleger benachrichtigen wenn eine ausstehende Revision " "eingereicht wurde" -#: F:\snapshot\revisionary/admin/options.php:136 -msgid "Email designated Publishers when a Scheduled Revision is published" +#: admin/options.php:148 +#, fuzzy +#| msgid "Email designated Publishers when a Scheduled Revision is published" +msgid "Email designated Publishers when a Scheduled Change is published" msgstr "" "Festgelegte Verleger benachrichtigen wenn eine geplante Revision " "veröffentlicht wurde" -#: F:\snapshot\revisionary/admin/options.php:137 -msgid "Email designated Publishers when a Pending Revision is approved" +#: admin/options.php:149 +#, fuzzy +#| msgid "Email designated Publishers when a Pending Revision is approved" +msgid "Email designated Publishers when a Change Request is approved" msgstr "" "Festgelegte Verleger benachrichtigen wenn eine ausstehende Revision " "genehmigt wurde" -#: F:\snapshot\revisionary/admin/options.php:139 -msgid "Email Editors and Administrators when a Pending Revision is submitted" +#: admin/options.php:151 +#, fuzzy +#| msgid "" +#| "Email Editors and Administrators when a Pending Revision is submitted" +msgid "Email Editors and Administrators when a Change Request is submitted" msgstr "" "Redakteure und Administratoren benachrichtigen wenn eine ausstehende " "Revision eingereicht wurde" -#: F:\snapshot\revisionary/admin/options.php:140 -msgid "Email Editors and Administrators when a Scheduled Revision is published" +#: admin/options.php:152 +#, fuzzy +#| msgid "" +#| "Email Editors and Administrators when a Scheduled Revision is published" +msgid "Email Editors and Administrators when a Scheduled Change is published" msgstr "" "Redakteure und Administratoren benachrichtigen wenn eine geplante Revision " "veröffentlicht wurde" -#: F:\snapshot\revisionary/admin/options.php:141 -msgid "Email Editors and Administrators when a Pending Revision is approved" +#: admin/options.php:153 +#, fuzzy +#| msgid "Email Editors and Administrators when a Pending Revision is approved" +msgid "Email Editors and Administrators when a Change Request is approved" msgstr "" "Redakteure und Administratoren benachrichtigen wenn eine ausstehende " "Revision genehmigt wurde" -#: F:\snapshot\revisionary/admin/options.php:203 +#: admin/options.php:217 msgid "PublishPress Revisions Site Settings" msgstr "PublishPress Revisions Seiteneinstellungen" -#: F:\snapshot\revisionary/admin/options.php:211 -#: F:\snapshot\revisionary/admin/options.php:788 +#: admin/options.php:225 admin/options.php:898 msgid "Update »" msgstr "Aktualisieren »" -#: F:\snapshot\revisionary/admin/options.php:225 +#: admin/options.php:239 msgid "" "These are the default settings for options which can be " "adjusted per-site." @@ -988,13 +845,13 @@ msgstr "" "Hier sind Standardeinstellungen für Optionen welche je " "Seite angepasst werden können." -#: F:\snapshot\revisionary/admin/options.php:262 +#: admin/options.php:276 #, php-format msgid "You can also specify %1$sdefaults for site-specific settings%2$s." msgstr "" "Sie können auch %1$sseitenspezifische Standardeinstellungen%2$s festlegen." -#: F:\snapshot\revisionary/admin/options.php:263 +#: admin/options.php:277 #, php-format msgid "" "Use this tab to make NETWORK-WIDE changes to PublishPress " @@ -1003,7 +860,7 @@ msgstr "" "Verwenden Sie diesen Tab, um netzwerkweite Änderungen an " "den PublishPress Revisions Einstellungen vorzunehmen %s" -#: F:\snapshot\revisionary/admin/options.php:265 +#: admin/options.php:279 msgid "" "Here you can change the default value for settings which are controlled " "separately on each site." @@ -1011,14 +868,14 @@ msgstr "" "Hier können Sie den Standardwert für Einstellungen festlegen, welche auf " "jeder Seite separat festgelegt werden." -#: F:\snapshot\revisionary/admin/options.php:279 +#: admin/options.php:293 #, php-format msgid "Note that %1$s network-wide settings%2$s may also be available." msgstr "" "Beachten Sie, dass %1$snetzwerkweite Einstellungen%2$s auch verfügbar sein " "könnten." -#: F:\snapshot\revisionary/admin/options.php:311 +#: admin/options.php:325 msgid "" "The user role \"Revisor\" role is now available. Include capabilities for " "all custom post types in this role?" @@ -1026,7 +883,7 @@ msgstr "" "The Nutzerrolle \"Prüfer\" ist nun verfügbar. Berechtigungen für alle " "benutzerdefinierten Beitragstypen einbinden?" -#: F:\snapshot\revisionary/admin/options.php:316 +#: admin/options.php:330 msgid "" "If checked, users lacking site-wide publishing capabilities will also be " "checked for the edit_others_drafts capability" @@ -1034,7 +891,68 @@ msgstr "" "Wenn ausgewählt, wird Nutzern ohne seitenweite Berechtigungen ebenfalls die " "edit_others_drafts Berechtigung verliehen" -#: F:\snapshot\revisionary/admin/options.php:337 +#: admin/options.php:346 +#, fuzzy +#| msgid "" +#| "This restriction applies to users who are not full editors for the post " +#| "type. To enable a role, give it the list_others_revisions capability." +msgid "" +"This restriction applies to users who are not full editors for the post " +"type. To enable a role, add capabilities: copy_posts, copy_others_pages, etc." +msgstr "" +"Diese Beschränkung betrifft nur Nutzer die nicht Redakteure für diesen " +"Beitragstyp sind. Um diese Rolle zu aktivieren, geben Sie ihr die " +"list_others_revisions Berechtigung." + +#: admin/options.php:351 +msgid "" +"To expand the Posts / Pages listing for non-Editors, add capabilities: " +"list_others_pages, list_published_posts, etc." +msgstr "" + +#: admin/options.php:375 +#, php-format +msgid "" +"Enable published content to be copied, edited and submitted as Change " +"Requests, managed in %sRevision Queue%s." +msgstr "" + +#: admin/options.php:381 +#, fuzzy +#| msgid "" +#| "This restriction applies to users who are not full editors for the post " +#| "type. To enable a role, give it the edit_others_revisions capability." +msgid "" +"This restriction applies to users who are not full editors for the post " +"type. To enable a role, add capabilities: revise_posts, revise_others_pages, " +"etc." +msgstr "" +"Diese Beschränkung betrifft nur Nutzer, die nicht Redakteure für diesen " +"Beitragstyp sind. Um diese Rolle zu aktivieren, geben Sie ihr die " +"edit_others_revisions Berechtigung." + +#: admin/options.php:384 +#, fuzzy +#| msgid "" +#| "When a scheduled revision is published, also update the publish date." +msgid "" +"When a change request is published, update post publish date to current time." +msgstr "" +"Wenn eine geplante Revision veröffentlicht wird, dann aktualisiert sich auch " +"das Veröffentlichungsdatum." + +#: admin/options.php:387 +#, fuzzy +#| msgid "" +#| "When a scheduled revision is published, also update the publish date." +msgid "" +"When a change request is published, update post modified date to current " +"time." +msgstr "" +"Wenn eine geplante Revision veröffentlicht wird, dann aktualisiert sich auch " +"das Veröffentlichungsdatum." + +#: admin/options.php:407 msgid "" "If a currently published post or page is edited and a future date set, the " "change will not be applied until the selected date." @@ -1042,16 +960,37 @@ msgstr "" "Wenn ein aktuell veröffentlichter Beitrag oder eine Seite bearbeitet wird, " "werden die Änderungen erst an dem ausgewähltem Datum übernommen." -#: F:\snapshot\revisionary/admin/options.php:340 -msgid "When a scheduled revision is published, also update the publish date." +#: admin/options.php:410 +#, fuzzy +#| msgid "" +#| "When a scheduled revision is published, also update the publish date." +msgid "" +"When a scheduled change is published, update post publish date to current " +"time." +msgstr "" +"Wenn eine geplante Revision veröffentlicht wird, dann aktualisiert sich auch " +"das Veröffentlichungsdatum." + +#: admin/options.php:413 +#, fuzzy +#| msgid "" +#| "When a scheduled revision is published, also update the publish date." +msgid "" +"When a scheduled change is published, update post modified date to current " +"time." msgstr "" "Wenn eine geplante Revision veröffentlicht wird, dann aktualisiert sich auch " "das Veröffentlichungsdatum." -#: F:\snapshot\revisionary/admin/options.php:343 +#: admin/options.php:416 +#, fuzzy +#| msgid "" +#| "Publish scheduled revisions asynchronously, via a secondary http request " +#| "from the server. This is usually best since it eliminates delay, but " +#| "some servers may not support it." msgid "" -"Publish scheduled revisions asynchronously, via a secondary http request " -"from the server. This is usually best since it eliminates delay, but some " +"Publish scheduled changes asynchronously, via a secondary http request from " +"the server. This is usually best since it eliminates delay, but some " "servers may not support it." msgstr "" "Geplante Revisionen asynchron veröffentlichen, mit einer zweiten HTTP-" @@ -1059,27 +998,41 @@ msgstr "" "Verzögerungen ausgeschlossen werden. Dieses Feature wird jedoch nicht von " "allen Servern unterstützt." -#: F:\snapshot\revisionary/admin/options.php:361 -#, php-format +#: admin/options.php:434 msgid "" -"Enable Contributors to submit revisions to their own published content. " -"Revisors and users who have the edit_others (but not edit_published) " -"capability for the post type can submit revisions to other user's content. " -"These Pending Revisions are listed in %sRevision Queue%s." +"This restriction applies to users who are not full editors for the post " +"type. To enable a role, give it the edit_others_revisions capability." msgstr "" -"Mitwirkenden erlauben Revisionen für ihre eigenen veröffentlichten Inhalte " -"einzureichen. Prüfer und Nutzer, die die edit_others (aber nicht " -"edit_published) Berechtigung für den Beitragstyp haben, können Revisionen " -"der Inhalte anderer Nutzer einreichen. Diese ausstehenden Revisionen sind in " -"der %sRevision Queue%s aufgelistet." +"Diese Beschränkung betrifft nur Nutzer, die nicht Redakteure für diesen " +"Beitragstyp sind. Um diese Rolle zu aktivieren, geben Sie ihr die " +"edit_others_revisions Berechtigung." -#: F:\snapshot\revisionary/admin/options.php:367 -msgid "When a pending revision is published, also update the publish date." +#: admin/options.php:437 +msgid "" +"This restriction applies to users who are not full editors for the post " +"type. To enable a role, give it the list_others_revisions capability." +msgstr "" +"Diese Beschränkung betrifft nur Nutzer die nicht Redakteure für diesen " +"Beitragstyp sind. Um diese Rolle zu aktivieren, geben Sie ihr die " +"list_others_revisions Berechtigung." + +#: admin/options.php:440 +msgid "" +"Bypass the above restrictions for others' revisions to logged in user's own " +"posts." +msgstr "" + +#: admin/options.php:443 +msgid "" +"If some revisions are missing from the queue, disable a performance " +"enhancement for better compatibility with themes and plugins." msgstr "" -"Wenn eine ausstehende Revision veröffentlicht wird, dann aktualisiere auch " -"das Veröffentlichungsdatum." -#: F:\snapshot\revisionary/admin/options.php:383 +#: admin/options.php:448 +msgid "Regenerate \"post has revision\" flags" +msgstr "" + +#: admin/options.php:464 msgid "" "For themes that block revision preview, hide preview links from non-" "Administrators" @@ -1087,19 +1040,19 @@ msgstr "" "Für Themes, die die Voransicht der Revision blockieren, verstecke die " "Voranschau-Links vor nicht-Administratoren" -#: F:\snapshot\revisionary/admin/options.php:395 +#: admin/options.php:476 msgid "Published Post Slug" msgstr "Veröffentlichter Beitrags-Slug" -#: F:\snapshot\revisionary/admin/options.php:395 +#: admin/options.php:476 msgid "Revision Slug" msgstr "Revisions-Slug" -#: F:\snapshot\revisionary/admin/options.php:395 +#: admin/options.php:476 msgid "Revision ID only" msgstr "Nur die Revisions-ID" -#: F:\snapshot\revisionary/admin/options.php:406 +#: admin/options.php:487 msgid "" "Some themes or plugins may require Revision Slug or Revision ID link type " "for proper template loading and field display." @@ -1108,13 +1061,13 @@ msgstr "" "einen Revisions-ID Link-Typ, damit das Template richtig lädt und die " "Eingabefelder richtig dargestellt werden." -#: F:\snapshot\revisionary/admin/options.php:416 +#: admin/options.php:497 msgid "If disabled, Compare screen links to Revision Preview for approval" msgstr "" "Wenn deaktiviert, verlinkt die Vergleichsansicht die Revisions-Voransicht " "zur Genehmigung" -#: F:\snapshot\revisionary/admin/options.php:436 +#: admin/options.php:517 #, php-format msgid "" "For compatibility with Advanced Custom Fields, Beaver Builder and WPML, " @@ -1123,82 +1076,37 @@ msgstr "" "Für Kompatibilität mit ACF, Beamer Builder und WPML, upgraden zu PublishPress Revisions Pro." -#: F:\snapshot\revisionary/admin/options.php:445 -msgid "" -"This restriction applies to users who are not full editors for the post " -"type. To enable a role, give it the edit_others_revisions capability." -msgstr "" -"Diese Beschränkung betrifft nur Nutzer, die nicht Redakteure für diesen " -"Beitragstyp sind. Um diese Rolle zu aktivieren, geben Sie ihr die " -"edit_others_revisions Berechtigung." - -#: F:\snapshot\revisionary/admin/options.php:448 -msgid "" -"This restriction applies to users who are not full editors for the post " -"type. To enable a role, give it the list_others_revisions capability." -msgstr "" -"Diese Beschränkung betrifft nur Nutzer die nicht Redakteure für diesen " -"Beitragstyp sind. Um diese Rolle zu aktivieren, geben Sie ihr die " -"list_others_revisions Berechtigung." - -#: F:\snapshot\revisionary/admin/options.php:451 +#: admin/options.php:526 msgid "This may improve compatibility with some plugins." msgstr "Dies könnte die Kompatibilität mit einigen Plugins verbessern." -#: F:\snapshot\revisionary/admin/options.php:457 +#: admin/options.php:545 +#, fuzzy +#| msgid "Modified Date" +msgid "Modification Date" +msgstr "Modifiziertes Datum" + +#: admin/options.php:555 msgid "Show descriptive captions for PublishPress Revisions settings" msgstr "Überschriften für PublishPress Revisions Einstellungen anzeigen" -#: F:\snapshot\revisionary/admin/options.php:474 -#: F:\snapshot\revisionary/admin/options.php:531 +#: admin/options.php:575 admin/options.php:637 msgid "select recipients" msgstr "Empfänger wählen" -#: F:\snapshot\revisionary/admin/options.php:483 -#: F:\snapshot\revisionary/admin/options.php:501 +#: admin/options.php:584 admin/options.php:602 msgid "Never" msgstr "Niemals" -#: F:\snapshot\revisionary/admin/options.php:483 -#: F:\snapshot\revisionary/admin/options.php:501 +#: admin/options.php:584 admin/options.php:602 msgid "By default" msgstr "Standardmäßig" -#: F:\snapshot\revisionary/admin/options.php:483 -#: F:\snapshot\revisionary/admin/options.php:501 +#: admin/options.php:584 admin/options.php:602 msgid "Always" msgstr "Immer" -#: F:\snapshot\revisionary/admin/options.php:548 -msgid "" -"Note: \"by default\" means Pending Revision creators can customize email " -"notification recipients before submitting. Eligibile \"Publisher\" email " -"recipients are members of the Pending Revision Monitors group who " -"also have the ability to publish the revision. If not " -"explicitly defined, the Monitors group is all users with a primary WP role " -"of Administrator or Editor." -msgstr "" -"Beachten Sie: \"Standardmäßig\" bedeutet, dass Ersteller ausstehender " -"Revisionen Email-Benachrichtigungen vor dem Senden bearbeiten können. " -"Berechtigte \"Verleger\" Email-Empfänger sind Mitglieder der Gruppe zur " -"Überwachung ausstehender Revisionen, welche ebenfalls die " -"Berechtigung besitzt die Revision zu veröffentlichen. Wenn nicht explizit " -"definiert, besteht die Überwachungsgruppe aus primären WP Nutzerrollen wie " -"Administratoren oder Redakteuren." - -#: F:\snapshot\revisionary/admin/options.php:550 -#, php-format -msgid "" -"Note: \"by default\" means Pending Revision creators can customize email " -"notification recipients before submitting. For more flexibility in " -"moderation and notification, install the %1$s PressPermit Pro%2$s plugin." -msgstr "" -"Beachten Sie: \"Standardmäßig\" bedeutet, dass Ersteller ausstehender " -"Revisionen Email-Benachrichtigungen vor dem Senden bearbeiten können. Für " -"mehr Flexibilität bei der Moderation und Benachrichtigung, installieren sie " -"das %1$s PressPermit Pro%2$s Plugin." - -#: F:\snapshot\revisionary/admin/options.php:558 +#: admin/options.php:666 msgid "" "To avoid notification failures, buffer emails for delayed sending once " "minute, hour or day limits are exceeded" @@ -1206,56 +1114,56 @@ msgstr "" "Um Benachrichtigungsfehler zu vermeiden, nutzen Sie den Email-Puffer zum " "verzögerten Senden von Emails in 1-Minuten, Stunden oder Tages Intervallen" -#: F:\snapshot\revisionary/admin/options.php:573 +#: admin/options.php:683 msgid "Notification Buffer" msgstr "Benachrichtigungspuffer" -#: F:\snapshot\revisionary/admin/options.php:601 +#: admin/options.php:711 msgid "Notification Log" msgstr "Benachrichtigungsprotokoll" -#: F:\snapshot\revisionary/admin/options.php:630 +#: admin/options.php:740 msgid "Purge Notification Buffer" msgstr "Benachrichtigungspuffer löschen" -#: F:\snapshot\revisionary/admin/options.php:636 +#: admin/options.php:746 msgid "Truncate Notification Log" msgstr "Benachrichtigungsprotokoll kürzen" -#: F:\snapshot\revisionary/admin/options.php:642 +#: admin/options.php:752 #, php-format msgid "Sent in last minute: %d / %d" msgstr "In letzter Minute gesendet: %d / %d" -#: F:\snapshot\revisionary/admin/options.php:643 +#: admin/options.php:753 #, php-format msgid "Sent in last hour: %d / %d" msgstr "In der letzten Stunde gesendet: %d / %d" -#: F:\snapshot\revisionary/admin/options.php:644 +#: admin/options.php:754 #, php-format msgid "Sent in last day: %d / %d" msgstr "Gestern gesendet: %d / %d" -#: F:\snapshot\revisionary/admin/options.php:651 +#: admin/options.php:761 #, php-format msgid "Seconds until next buffer processing time: %d" msgstr "Sekunden bis zur nächsten Puffer Verarbeitung: %d" -#: F:\snapshot\revisionary/admin/options.php:660 +#: admin/options.php:770 msgid "Show Notification Log / Buffer" msgstr "Benachrichtigungs Protokoll / Puffer anzeigen" -#: F:\snapshot\revisionary/admin/options.php:662 +#: admin/options.php:772 msgid "Show with message content" msgstr "Nachricht mit Inhalt anzeigen" -#: F:\snapshot\revisionary/admin/options.php:703 +#: admin/options.php:813 #, php-format msgid "network-wide control of \"%s\"" msgstr "netzwerkweite Kontrolle von \"%s\"" -#: F:\snapshot\revisionary/admin/options.php:710 +#: admin/options.php:820 msgid "" "Specify which PublishPress Revisions Settings to control network-wide. " "Unselected settings are controlled separately on each site." @@ -1263,7 +1171,7 @@ msgstr "" "Geben Sie an welche PublishPress Revisions Einstellungen netzwerkweiten " "gelten sollen. Unausgewählte Einstellungen werden seitenweise eingestellt." -#: F:\snapshot\revisionary/admin/options.php:792 +#: admin/options.php:902 msgid "" "All settings in this form (including those on unselected tabs) will be reset " "to DEFAULTS. Are you sure?" @@ -1271,37 +1179,63 @@ msgstr "" "Alle die Einstellungen in diesem Formular (auch in die nicht ausgewählten " "Tabs) werden auf die Standardeinstellungen zurückgesetzt. Sind Sie sicher?" -#: F:\snapshot\revisionary/admin/options.php:797 +#: admin/options.php:907 msgid "Revert to Defaults" msgstr "Zurück auf Standardeinstellungen" -#: F:\snapshot\revisionary/admin/post-edit-block-ui_rvy.php:43 -#: F:\snapshot\revisionary/admin/post-edit_rvy.php:96 -#: F:\snapshot\revisionary/admin/post-edit_rvy.php:249 -#: F:\snapshot\revisionary/admin/PostEditSubmitMetabox.php:173 -msgid "View / Publish" +#: admin/post-edit_rvy.php:120 +#, fuzzy, php-format +#| msgid "%sScheduled Revisions: %s" +msgid "%sScheduled Changes: %s" +msgstr "%sGeplante Revisionen: %s" + +#: admin/post-edit_rvy.php:134 +#, php-format +msgid "%sChange Requests: %s" +msgstr "" + +#: admin/post-editor-workflow-ui_rvy.php:28 +#, fuzzy +msgid "(on approval)" +msgstr "Voransicht / Genehmigung" + +#: admin/post-editor-workflow-ui_rvy.php:42 +#, fuzzy +#| msgid "View / Publish" +msgid "Preview / Publish" msgstr "Ansehen / Veröffentlichen" -#: F:\snapshot\revisionary/admin/post-edit-block-ui_rvy.php:44 -#: F:\snapshot\revisionary/admin/post-edit_rvy.php:97 -#: F:\snapshot\revisionary/admin/post-edit_rvy.php:263 -#: F:\snapshot\revisionary/admin/PostEditSubmitMetabox.php:174 -msgid "View / moderate saved revision" -msgstr "Ansehen / gespeicherte Revision moderieren" +#: admin/post-editor-workflow-ui_rvy.php:42 +#, fuzzy +#| msgid "Preview / Approval" +msgid "Preview / Approve" +msgstr "Voransicht / Genehmigung" -#: F:\snapshot\revisionary/admin/post-edit-block-ui_rvy.php:47 -#: F:\snapshot\revisionary/admin/post-edit_rvy.php:100 -#: F:\snapshot\revisionary/admin/post-edit_rvy.php:265 -#: F:\snapshot\revisionary/admin/PostEditSubmitMetabox.php:177 -msgid "View saved revision" -msgstr "Gespeicherte Revision ansehen" +#: admin/post-editor-workflow-ui_rvy.php:47 +#, fuzzy +#| msgid "Approve saved changes" +msgid "View / Approve saved changes" +msgstr "Gespeicherte Änderungen genehmigen" -#: F:\snapshot\revisionary/admin/post-edit-block-ui_rvy.php:55 -#: F:\snapshot\revisionary/admin/post-edit_rvy.php:104 -msgid "View unsaved changes" +#: admin/post-editor-workflow-ui_rvy.php:49 +#, fuzzy +#| msgid "Preview it" +msgid "Preview / Submit" +msgstr "Voransicht" + +#: admin/post-editor-workflow-ui_rvy.php:49 +#, fuzzy +#| msgid "View / Publish" +msgid "View / Submit" +msgstr "Ansehen / Veröffentlichen" + +#: admin/post-editor-workflow-ui_rvy.php:50 +#, fuzzy +#| msgid "View unsaved changes" +msgid "View / Submit saved changes" msgstr "Ungesicherte Änderungen ansehen" -#: F:\snapshot\revisionary/admin/post-edit-block-ui_rvy.php:59 +#: admin/post-editor-workflow-ui_rvy.php:62 #, php-format msgid "" " %s Revision Edit" @@ -1309,191 +1243,142 @@ msgstr "" " %s " "Revisionsbearbeitung" -#: F:\snapshot\revisionary/admin/post-edit-block-ui_rvy.php:85 -msgid "Approve Revision" -msgstr "Revision genehmigen" +#: admin/post-editor-workflow-ui_rvy.php:74 +msgid "Error Submitting Changes" +msgstr "" + +#: admin/post-editor-workflow-ui_rvy.php:78 +msgid "Submit Change Request" +msgstr "" -#: F:\snapshot\revisionary/admin/post-edit-block-ui_rvy.php:88 -#: F:\snapshot\revisionary/admin/post-edit_rvy.php:212 -msgid "Approve saved changes" -msgstr "Gespeicherte Änderungen genehmigen" +#: admin/post-editor-workflow-ui_rvy.php:80 +#, fuzzy +#| msgid "Submitted " +msgid "Changes Submitted." +msgstr "Eingereicht " -#: F:\snapshot\revisionary/admin/post-edit-block-ui_rvy.php:110 -msgid "Update" -msgstr "Aktualisieren" +#: admin/post-editor-workflow-ui_rvy.php:81 +#: admin/post-editor-workflow-ui_rvy.php:156 +#: admin/post-editor-workflow-ui_rvy.php:175 +#, fuzzy +#| msgid "Preview" +msgid "view" +msgstr "Ansehen" -#: F:\snapshot\revisionary/admin/post-edit-block-ui_rvy.php:115 -msgid "Do not schedule current changes yet, but save to Revision Queue" -msgstr "Noch nicht speichern, aber in Revision Queue einreihen" +#: admin/post-editor-workflow-ui_rvy.php:94 +#, fuzzy +#| msgid "Approve saved changes" +msgid "Approve Changes" +msgstr "Gespeicherte Änderungen genehmigen" -#: F:\snapshot\revisionary/admin/post-edit-block-ui_rvy.php:123 -#, php-format -msgid "" -" %s Pending Revision" +#: admin/post-editor-workflow-ui_rvy.php:97 rvy_init.php:226 rvy_init.php:237 +#: rvy_init.php:248 +#, fuzzy +#| msgid "Publish now" +msgid "Publish Changes" +msgstr "Jetzt veröffentlichen" + +#: admin/post-editor-workflow-ui_rvy.php:131 +#, fuzzy, php-format +#| msgid "" +#| " %s Pending Revision" +msgid " %s Change Request" msgstr "" " %s Ausstehende Revision" -#: F:\snapshot\revisionary/admin/post-edit-block-ui_rvy.php:134 -#, php-format +#: admin/post-editor-workflow-ui_rvy.php:140 +#, fuzzy, php-format +#| msgid "" +#| " %s Scheduled " +#| "Revision" msgid "" -" %s Scheduled Revision" +" %s Scheduled Change" msgstr "" " %s Geplante Revision" -#: F:\snapshot\revisionary/admin/post-edit-block-ui_rvy.php:155 -msgid "Workflow…" -msgstr "Workflow…" - -#: F:\snapshot\revisionary/admin/post-edit_rvy.php:35 -#, php-format -msgid "Revision updated. %sView Preview%s" -msgstr "Revision aktualisiert. %sVoransicht%s" - -#: F:\snapshot\revisionary/admin/post-edit_rvy.php:37 -msgid "Revision updated." -msgstr "Revision aktualisiert." - -#: F:\snapshot\revisionary/admin/post-edit_rvy.php:109 -#, php-format -msgid "Edit %s Revision" -msgstr "%s Revision bearbeiten" - -#: F:\snapshot\revisionary/admin/post-edit_rvy.php:222 -msgid "Compare this revision to published copy, or to other revisions" +#: admin/post-editor-workflow-ui_rvy.php:152 +msgid "Create Working Copy" msgstr "" -"Vergleich dieser Revision mit der veröffentlichten Kopie oder anderen " -"Revisionen" -#: F:\snapshot\revisionary/admin/post-edit_rvy.php:304 -#, php-format -msgid "%sScheduled Revisions: %s" -msgstr "%sGeplante Revisionen: %s" - -#: F:\snapshot\revisionary/admin/post-edit_rvy.php:325 -#, php-format -msgid "%sPending Revisions: %s" -msgstr "%sAusstehende Revisionen: %s" - -#: F:\snapshot\revisionary/admin/PostEditSubmitMetabox.php:62 -#, php-format -msgid "Revision Edits: %s" -msgstr "Revisionsbearbeitungen: %s" - -#: F:\snapshot\revisionary/admin/PostEditSubmitMetabox.php:62 -#, php-format -msgid "Revisions: %s" -msgstr "Revisionen: %s" - -#: F:\snapshot\revisionary/admin/PostEditSubmitMetabox.php:65 -#, php-format -msgid "Your site is configured to keep only the last %s revisions." +#: admin/post-editor-workflow-ui_rvy.php:153 +msgid "Create a working copy of this post" msgstr "" -"Diese Seite ist konfiguriert nur die letzten %s Revisionen zu behalten." - -#: F:\snapshot\revisionary/admin/PostEditSubmitMetabox.php:105 -msgid "Move to Trash" -msgstr "In den Papierkorb legen" - -#: F:\snapshot\revisionary/admin/PostEditSubmitMetabox.php:141 -#, php-format -msgid "Save as %s" -msgstr "Speichern als %s" - -#: F:\snapshot\revisionary/admin/PostEditSubmitMetabox.php:189 -msgid "Preview Changes" -msgstr "Vorausschau der Änderungen" -#: F:\snapshot\revisionary/admin/PostEditSubmitMetabox.php:213 -msgid "Status:" -msgstr "Status:" - -#: F:\snapshot\revisionary/admin/PostEditSubmitMetabox.php:255 -#: F:\snapshot\revisionary/admin/PostEditSubmitMetabox.php:322 -msgid "OK" -msgstr "OK" - -#: F:\snapshot\revisionary/admin/PostEditSubmitMetabox.php:256 -#: F:\snapshot\revisionary/admin/PostEditSubmitMetabox.php:323 -msgid "Cancel" -msgstr "Abbrechen" +#: admin/post-editor-workflow-ui_rvy.php:154 +msgid "Update post before creating copy." +msgstr "" -#: F:\snapshot\revisionary/admin/PostEditSubmitMetabox.php:273 -msgid "Visibility:" -msgstr "Sichtbarkeit:" +#: admin/post-editor-workflow-ui_rvy.php:155 +msgid "Working Copy Ready." +msgstr "" -#: F:\snapshot\revisionary/admin/PostEditSubmitMetabox.php:291 -msgid "Public, Sticky" -msgstr "Öffentlich, Stick" +#: admin/post-editor-workflow-ui_rvy.php:158 +msgid "Error Creating Copy" +msgstr "" -#: F:\snapshot\revisionary/admin/PostEditSubmitMetabox.php:293 -#: F:\snapshot\revisionary/admin/PostEditSubmitMetabox.php:306 -#: F:\snapshot\revisionary/admin/PostEditSubmitMetabox.php:319 -msgid "Public" -msgstr "Öffentlich" +#: admin/post-editor-workflow-ui_rvy.php:171 +#, fuzzy +#| msgid "Schedule Revision" +msgid "Schedule Changes" +msgstr "Revision planen" -#: F:\snapshot\revisionary/admin/PostEditSubmitMetabox.php:300 -#, php-format -msgid "%s, Sticky" -msgstr "%s, Sticky" +#: admin/post-editor-workflow-ui_rvy.php:173 +msgid "For custom field changes, edit a scheduled copy." +msgstr "" -#: F:\snapshot\revisionary/admin/PostEditSubmitMetabox.php:343 -msgid "M j, Y @ G:i" -msgstr "M j, Y @ G:i" +#: admin/post-editor-workflow-ui_rvy.php:174 +msgid "Changes are Scheduled." +msgstr "" -#: F:\snapshot\revisionary/admin/revision-action_rvy.php:135 -#: F:\snapshot\revisionary/admin/revision-action_rvy.php:220 +#: admin/revision-action_rvy.php:303 admin/revision-action_rvy.php:388 #, php-format msgid "[%s] Revision Approval Notice" msgstr "[%s] Mitteilung zur Revisions-Genehmigung" -#: F:\snapshot\revisionary/admin/revision-action_rvy.php:136 -#, php-format -msgid "A revision to your %1$s \"%2$s\" has been approved." +#: admin/revision-action_rvy.php:304 +#, fuzzy, php-format +#| msgid "A revision to your %1$s \"%2$s\" has been approved." +msgid "A revision to the %1$s \"%2$s\" has been approved." msgstr "Eine Revision zu %1$s \"%2$s\" wurde genehmigt." -#: F:\snapshot\revisionary/admin/revision-action_rvy.php:139 +#: admin/revision-action_rvy.php:307 #, php-format msgid "The submitter was %1$s." msgstr "Eingereicht von %1$s." -#: F:\snapshot\revisionary/admin/revision-action_rvy.php:143 -#: F:\snapshot\revisionary/admin/revision-action_rvy.php:225 +#: admin/revision-action_rvy.php:311 admin/revision-action_rvy.php:393 #, php-format msgid "It will be published on %s" msgstr "Wird veröffentlicht am %s" -#: F:\snapshot\revisionary/admin/revision-action_rvy.php:147 -#: F:\snapshot\revisionary/admin/revision-action_rvy.php:229 +#: admin/revision-action_rvy.php:315 admin/revision-action_rvy.php:397 msgid "Preview it here: " msgstr "Voranschau hier: " -#: F:\snapshot\revisionary/admin/revision-action_rvy.php:150 -#: F:\snapshot\revisionary/admin/revision-action_rvy.php:232 +#: admin/revision-action_rvy.php:318 admin/revision-action_rvy.php:400 msgid "Editor: " msgstr "Redakteur: " -#: F:\snapshot\revisionary/admin/revision-action_rvy.php:152 -#: F:\snapshot\revisionary/admin/revision-action_rvy.php:234 -#: F:\snapshot\revisionary/admin/revision-action_rvy.php:857 -#: F:\snapshot\revisionary/admin/revision-action_rvy.php:882 -#: F:\snapshot\revisionary/admin/revision-action_rvy.php:917 +#: admin/revision-action_rvy.php:320 admin/revision-action_rvy.php:402 +#: admin/revision-action_rvy.php:1126 admin/revision-action_rvy.php:1151 +#: admin/revision-action_rvy.php:1220 msgid "View it online: " msgstr "Online ansehen: " -#: F:\snapshot\revisionary/admin/revision-action_rvy.php:221 +#: admin/revision-action_rvy.php:389 #, php-format msgid "The revision you submitted for the %1$s \"%2$s\" has been approved." msgstr "" "Die geplante Revision, die Sie für %1$s \"%2$s\" eingereicht haben, wurde " "genehmigt." -#: F:\snapshot\revisionary/admin/revision-action_rvy.php:853 -#: F:\snapshot\revisionary/admin/revision-action_rvy.php:875 -#, php-format -msgid "[%s] Scheduled Revision Publication Notice" +#: admin/revision-action_rvy.php:1122 admin/revision-action_rvy.php:1144 +#, fuzzy, php-format +#| msgid "[%s] Scheduled Revision Publication Notice" +msgid "[%s] Scheduled Change Publication Notice" msgstr "[%s] Mitteilung zur Veröffentlichung der geplanten Revision" -#: F:\snapshot\revisionary/admin/revision-action_rvy.php:854 +#: admin/revision-action_rvy.php:1123 #, php-format msgid "" "The scheduled revision you submitted for the %1$s \"%2$s\" has been " @@ -1502,88 +1387,111 @@ msgstr "" "Die geplante Revision, die Sie für %1$s \"%2$s\" eingereicht haben, wurde " "veröffentlicht." -#: F:\snapshot\revisionary/admin/revision-action_rvy.php:876 -#, php-format -msgid "A scheduled revision to your %1$s \"%2$s\" has been published." +#: admin/revision-action_rvy.php:1145 +#, fuzzy, php-format +#| msgid "A scheduled revision to your %1$s \"%2$s\" has been published." +msgid "A scheduled change to your %1$s \"%2$s\" has been published." msgstr "Eine geplante Revision für deinen %1$s \"%2$s\" wurde veröffentlicht." -#: F:\snapshot\revisionary/admin/revision-action_rvy.php:909 +#: admin/revision-action_rvy.php:1148 admin/revision-action_rvy.php:1217 #, php-format -msgid "[%s] Scheduled Revision Publication" +msgid "It was submitted by %1$s." +msgstr "Eingereicht von %1$s." + +#: admin/revision-action_rvy.php:1212 +#, fuzzy, php-format +#| msgid "[%s] Scheduled Revision Publication" +msgid "[%s] Scheduled Change Publication" msgstr "[%s] Geplante Revisionsveröffentlichung" -#: F:\snapshot\revisionary/admin/revision-action_rvy.php:911 -#, php-format -msgid "A scheduled revision to the %1$s \"%2$s\" has been published." +#: admin/revision-action_rvy.php:1214 +#, fuzzy, php-format +#| msgid "A scheduled revision to the %1$s \"%2$s\" has been published." +msgid "A scheduled change to the %1$s \"%2$s\" has been published." msgstr "Eine geplante Revision für %1$s \"%2$s\" wurde veröffentlicht." -#: F:\snapshot\revisionary/admin/revision-queue_rvy.php:9 +#: admin/revision-queue_rvy.php:9 msgid "You are not allowed to manage revisions." msgstr "Sie sind nicht befugt Revisionen zu verwalten." -#: F:\snapshot\revisionary/admin/revision-queue_rvy.php:13 +#: admin/revision-queue_rvy.php:13 +#, fuzzy +#| msgid "" +#| "Pending Revisions and Scheduled Revisions are both disabled. See " +#| "Revisions > Settings." msgid "" -"Pending Revisions and Scheduled Revisions are both disabled. See Revisions > " +"Change Requests and Scheduled Changes are both disabled. See Revisions > " "Settings." msgstr "" "Ausstehende und geplante Revisionen sind beide deaktiviert. Siehe Revisionen " "> Einstellungen." -#: F:\snapshot\revisionary/admin/revision-queue_rvy.php:39 +#: admin/revision-queue_rvy.php:41 +#, fuzzy, php-format +#| msgid "%s revision published." +msgid "%s revision submitted." +msgstr "%s Revision veröffentlicht." + +#: admin/revision-queue_rvy.php:42 #, php-format msgid "%s revision approved." msgstr "%s Revision genehmigt." -#: F:\snapshot\revisionary/admin/revision-queue_rvy.php:40 +#: admin/revision-queue_rvy.php:43 +#, fuzzy, php-format +#| msgid "%s revision published." +msgid "%s revision unscheduled." +msgstr "%s Revision veröffentlicht." + +#: admin/revision-queue_rvy.php:44 #, php-format msgid "%s revision published." msgstr "%s Revision veröffentlicht." -#: F:\snapshot\revisionary/admin/revision-queue_rvy.php:41 +#: admin/revision-queue_rvy.php:45 #, php-format msgid "%s revision permanently deleted." msgstr "%s Revision endgültig gelöscht." -#: F:\snapshot\revisionary/admin/revision-queue_rvy.php:103 -#: F:\snapshot\revisionary/admin/revision-queue_rvy.php:104 +#: admin/revision-queue_rvy.php:107 admin/revision-queue_rvy.php:108 #, php-format msgid "%sPost Author: %s" msgstr "%sBeitrags-Autor%s" -#: F:\snapshot\revisionary/admin/revision-queue_rvy.php:113 +#: admin/revision-queue_rvy.php:117 #, php-format msgid "Revision Queue %s" msgstr "Revision Queue %s" -#: F:\snapshot\revisionary/admin/revision-queue_rvy.php:119 +#: admin/revision-queue_rvy.php:123 #, php-format msgid "Search results for “%s”" msgstr "Suchergebnisse für “%s”" -#: F:\snapshot\revisionary/admin/revision-queue_rvy.php:132 +#: admin/revision-queue_rvy.php:136 msgid "Undo" msgstr "Rückgängig" -#: F:\snapshot\revisionary/admin/revision-ui_rvy.php:135 +#: admin/revision-ui_rvy.php:40 msgid "Publishers will be notified (but cannot be selected here)." msgstr "" "Verleger werden benachrichtigt (aber können hier nicht ausgewählt werden)." -#: F:\snapshot\revisionary/admin/revision-ui_rvy.php:137 +#: admin/revision-ui_rvy.php:42 msgid "No email notifications will be sent." msgstr "E-Mail Benachrichtigungen werden nicht gesendet werden." -#: F:\snapshot\revisionary/admin/revision-ui_rvy.php:209 +#: admin/revision-ui_rvy.php:92 #, php-format msgid "%1$s (Current)" msgstr "%1$s (Aktuell)" -#: F:\snapshot\revisionary/admin/revision-ui_rvy.php:213 +#: admin/revision-ui_rvy.php:96 #, php-format msgid "%1$s (Autosave)" msgstr "%1$s (automatisch speichern)" -#: F:\snapshot\revisionary/admin/revision-ui_rvy.php:223 +#: admin/revision-ui_rvy.php:106 #, php-format msgid "" "%1$s (Requested publication: %2$s)(Angeforderte " "Veröffentlichung: %2$s)" -#: F:\snapshot\revisionary/admin/revision-ui_rvy.php:225 +#: admin/revision-ui_rvy.php:108 #, php-format msgid "" "%1$s (Publish date: %2$s)" @@ -1600,40 +1508,36 @@ msgstr "" "%1$s (Veröffentlichungsdatum %2$s)" -#: F:\snapshot\revisionary/admin/revision-ui_rvy.php:325 +#: admin/revision-ui_rvy.php:206 msgid "The revision will be deleted. Are you sure?" msgstr "Diese Revision wird gelöscht. Sind Sie sicher?" -#: F:\snapshot\revisionary/admin/revision-ui_rvy.php:394 +#: admin/revision-ui_rvy.php:275 #, php-format msgid "Preview “%s”" msgstr "Voransicht “%s”" -#: F:\snapshot\revisionary/admin/revision-ui_rvy.php:399 -msgid "Unschedule" -msgstr "Planung streichen" - -#: F:\snapshot\revisionary/admin/revision-ui_rvy.php:497 +#: admin/revision-ui_rvy.php:391 msgid "Modified Date" msgstr "Modifiziertes Datum" -#: F:\snapshot\revisionary/admin/revision-ui_rvy.php:500 +#: admin/revision-ui_rvy.php:394 msgid "Author" msgstr "Autor" -#: F:\snapshot\revisionary/admin/revision-ui_rvy.php:501 +#: admin/revision-ui_rvy.php:395 msgid "Actions" msgstr "Aktionen" -#: F:\snapshot\revisionary/admin/revision-ui_rvy.php:516 +#: admin/revision-ui_rvy.php:410 msgid "Bulk Actions" msgstr "Mehrere Aktionen" -#: F:\snapshot\revisionary/admin/revision-ui_rvy.php:519 +#: admin/revision-ui_rvy.php:413 msgid "Apply" msgstr "Übernehmen" -#: F:\snapshot\revisionary/admin/revisions.php:20 +#: admin/revisions.php:20 msgid "" "Note: For visual display of revisions, add the following " "code to foliopress-wysiwyg.php:
      if " @@ -1643,38 +1547,465 @@ msgstr "" "folgenden Code zu foliopress-wysiwyg hinzu:
      if " "( strpos( $_SERVER[‚REQUEST_URI‘], ‚admin.php?page=rvy-revisions‘ ) ) return;" -#: F:\snapshot\revisionary/admin/revisions.php:56 +#: admin/revisions.php:51 msgid "No revision specified." msgstr "Keine Revision angegeben." -#: F:\snapshot\revisionary/admin/revisions.php:62 +#: admin/revisions.php:57 msgid "Past" msgstr "Bisher" -#: F:\snapshot\revisionary/admin/revisions.php:124 +#: admin/revisions.php:58 +msgid "Pending" +msgstr "Ausstehend" + +#: admin/revisions.php:59 rvy_init.php:248 +msgid "Scheduled" +msgstr "Geplant" + +#: admin/revisions.php:119 #, php-format msgid "Revisions of %s" msgstr "Revisionen von %s" -#: F:\snapshot\revisionary/admin/revisions.php:150 +#: admin/revisions.php:145 msgid "The requested revision does not exist." msgstr "The gesuchte Revision existiert nicht." -#: F:\snapshot\revisionary/admin/revisions.php:215 +#: admin/revisions.php:215 msgid "Past Revisions" msgstr "Bisherige Revisionen" -#: F:\snapshot\revisionary/admin/revisions.php:227 +#: admin/revisions.php:230 #, php-format msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" -#: F:\snapshot\revisionary/admin/revisions.php:242 +#: admin/revisions.php:245 #, php-format msgid "no %s revisions available." msgstr "Keine %s Revisionen verfügbar." -#: F:\snapshot\revisionary/lib/debug.php:182 +#: front_rvy.php:235 +#, fuzzy, php-format +#| msgid "List" +msgid "%sList%s" +msgstr "Auflisten" + +#: front_rvy.php:244 +#, php-format +msgid "%sCompare%s%sView Published Post%s" +msgstr "%sVergleichen%s%s Veröffentlichten Beitrag ansehen%s" + +#: front_rvy.php:258 +#, php-format +msgid "%sView Published Post%s" +msgstr "%s Veröffentlichten Beitrag ansehen%s" + +#: front_rvy.php:319 front_rvy.php:340 front_rvy.php:360 +msgid "Publish now" +msgstr "Jetzt veröffentlichen" + +#: front_rvy.php:324 +#, fuzzy, php-format +#| msgid "This is a Pending Revision. %s %s %s" +msgid "This is a Working Copy. %s %s %s" +msgstr "Dies ist eine ausstehende Revision. %s %s %s" + +#: front_rvy.php:336 +#, fuzzy, php-format +#| msgid "This is a Pending Revision (requested publish date: %s). %s %s %s" +msgid "This is a Change Request (requested publish date: %s). %s %s %s" +msgstr "" +"Dies ist eine ausstehende Revision (vorgesehenes Veröffentlichungsdatum: " +"%s). %s %s %s" + +#: front_rvy.php:342 +#, fuzzy, php-format +#| msgid "This is a Pending Revision. %s %s %s" +msgid "This is a Change Request. %s %s %s" +msgstr "Dies ist eine ausstehende Revision. %s %s %s" + +#: front_rvy.php:353 +msgid "This revision is very new, preview may not be synchronized with theme." +msgstr "" +"Diese Revision ist neu, die Voransicht ist eventuell noch nicht mit dem " +"Theme synchronisiert." + +#: front_rvy.php:354 +msgid "Reload" +msgstr "Neuladen" + +# ? +#: front_rvy.php:362 +#, fuzzy, php-format +#| msgid "This is a Scheduled Revision (for publication on %s). %s %s %s" +msgid "This is a Scheduled Change (for publication on %s). %s %s %s" +msgstr "Dies ist eine geplante Revision (Veröffentlichung am %s). %s %s %s" + +#: front_rvy.php:374 +#, php-format +msgid "This is the Current Revision. %s" +msgstr "Dies ist die aktuelle Revision. %s" + +#: front_rvy.php:379 +msgid "Restore" +msgstr "Wiederherstellen" + +#: front_rvy.php:380 +#, php-format +msgid "This is a Past Revision (from %s). %s %s" +msgstr "Dies ist eine vergangene Revision (vom %s). %s %s" + +#: lib/debug.php:187 #, php-format msgid "%1$s queries in %2$s seconds. %3$s MB used." msgstr "%1$s Abfragen in %2$s Sekunden. %3$s MB verwendet." + +#: revision-creation_rvy.php:159 +msgid "Could not insert revision into the database" +msgstr "Revision konnte nicht in die Datenbank eingefügt werden" + +#: revision-workflow_rvy.php:154 +#, php-format +msgid "[%s] Change Request Updated" +msgstr "" + +#: revision-workflow_rvy.php:156 +#, fuzzy, php-format +#| msgid "A pending revision to the %1$s \"%2$s\" has been submitted." +msgid "A change request to the %1$s \"%2$s\" has been updated." +msgstr "Eine ausstehende Revision zu %1$s \"%2$s\" wurde eingereicht." + +#: revision-workflow_rvy.php:158 +#, php-format +msgid "[%s] Change Request Submission" +msgstr "" + +#: revision-workflow_rvy.php:160 +#, fuzzy, php-format +#| msgid "A pending revision to the %1$s \"%2$s\" has been submitted." +msgid "A change request to the %1$s \"%2$s\" has been submitted." +msgstr "Eine ausstehende Revision zu %1$s \"%2$s\" wurde eingereicht." + +#: revision-workflow_rvy.php:163 +#, php-format +msgid "This operation was performed by %1$s." +msgstr "" + +#: revision-workflow_rvy.php:170 +msgid "Preview and Approval: " +msgstr "Vorschau und Genehmigung: " + +#: revision-workflow_rvy.php:173 +msgid "Revision Queue: " +msgstr "Revision Queue: " + +#: revision-workflow_rvy.php:175 +msgid "Edit Change Request: " +msgstr "" + +#: revisionary.php:67 +msgid "This plugin can be deleted." +msgstr "Dieses Plugin kann gelöscht werden." + +#: revisionary.php:83 revisionary.php:161 +#, php-format +msgid "" +"Another copy of PublishPress Revisions (or Revisionary) is already activated " +"(version %1$s: \"%2$s\")" +msgstr "" +"Eine weitere Kopie von PublishPress Revisions (oder Revisionary) ist bereits " +"aktiviert (Version %1$s: \"%2$s\")" + +#: revisionary.php:85 revisionary.php:163 +#, php-format +msgid "" +"Another copy of PublishPress Revisions (or Revisionary) is already activated " +"(version %1$s)" +msgstr "" +"Eine weitere Kopie von PublishPress Revisions (oder Revisionary) ist bereits " +"aktiviert (Version %1$s)" + +#: revisionary.php:182 +#, php-format +msgid "PublishPress Revisions requires PHP version %s or higher." +msgstr "PublishPress Revisions benötigt PHP Version %s oder höher." + +#: revisionary.php:189 +#, php-format +msgid "PublishPress Revisions requires WordPress version %s or higher." +msgstr "PublishPress Revisions benötigt Wordpress Version %s oder höher." + +#: rvy_init.php:226 rvy_init.php:237 rvy_init.php:248 +msgid "Save Revision" +msgstr "Revision speichern" + +#: rvy_init.php:226 +msgid "Draft" +msgstr "" + +#: rvy_init.php:237 +msgid "Entry" +msgstr "" + +#: rvy_init.php:423 +msgid "Revisor" +msgstr "Prüfer" + +#: rvy_init.php:848 +msgid "Revision Workflow" +msgstr "Revisions Workflow" + +#: vendor/publishpress/wordpress-version-notices/src/Module/MenuLink/Module.php:129 +msgid "Amazing! We are redirecting you to our site..." +msgstr "" + +#~ msgid "" +#~ "Autosave disabled when editing a published post/page to create a pending " +#~ "revision." +#~ msgstr "" +#~ "Automatisches Speichern ist deaktiviert während der Bearbeitung eines " +#~ "veröffentlichten Beitrags, um eine ausstehende Revision erstellen zu " +#~ "können." + +#~ msgid "Sorry, an error occurred while attempting to submit your revision!" +#~ msgstr "Ein Fehler ist aufgetreten beim dem Einreichen der Revision!" + +#~ msgid "Revision Submission Error" +#~ msgstr "Fehler beim Einreichen der Revision" + +#~ msgid "Pending Revision Created" +#~ msgstr "Ausstehende Revision erstellt" + +#~ msgid "Sorry, an error occurred while attempting to schedule your revision!" +#~ msgstr "" +#~ "Ein Problem ist aufgetreten während dem Versuch die Revision zu planen!" + +#~ msgid "Revision Scheduling Error" +#~ msgstr "Revision-Planungs Fehler" + +#~ msgid "Scheduled Revision Created" +#~ msgstr "Geplante Revision erstellt" + +#, php-format +#~ msgid "Invalid taxonomy: %s" +#~ msgstr "Ungültige Taxonomy: %s" + +#~ msgid "Invalid page template." +#~ msgstr "Ungültiges Seiten Template." + +#, php-format +#~ msgid "[%s] Pending Revision Notification" +#~ msgstr "[%s] Ausstehende Revisions-Nachricht" + +#~ msgid "Edit Revision: " +#~ msgstr "Revision bearbeiten: " + +#~ msgid "Sorry, an error occurred while attempting to save your revision." +#~ msgstr "Ein Problem ist aufgetreten während dem Speichern ihrer Revision." + +#~ msgid "Your modification was saved as a Scheduled Revision." +#~ msgstr "Ihre Änderungen wurden als geplante Revision übernommen." + +#~ msgid "Keep editing the revision" +#~ msgstr "Revision weiter bearbeiten" + +#~ msgid "Go back to schedule another revision" +#~ msgstr "Zurück gehen um eine weitere Revision zu planen" + +#~ msgid "View Revision Queue" +#~ msgstr "Revision Queue ansehen" + +#~ msgid "Your modification has been saved for editorial review." +#~ msgstr "Ihre Änderungen wurden zur redaktionellen Prüfung gespeichert." + +#~ msgid "" +#~ "If approved by an editor, it will be published on the date you specified." +#~ msgstr "" +#~ "Wenn durch einen Redakteur genehmigt, wird sie an dem spezifizierten " +#~ "Datum veröffentlicht." + +#~ msgid "It will be published when an editor approves it." +#~ msgstr "Sie wird veröffentlicht wenn ein Redakteur sie genehmigt." + +#~ msgid "Go back to submit another revision" +#~ msgstr "Zurück gehen um eine andere Revision zu erstellen" + +#~ msgid "Return to Edit Posts" +#~ msgstr "Zurück zu: Beiträge bearbeiten" + +#~ msgid "Return to Edit Pages" +#~ msgstr "Zurück zu: Seiten bearbeiten" + +#, php-format +#~ msgid "Return to Edit %s" +#~ msgstr "Zurück zu: %s bearbeiten" + +#~ msgid "Invalid featured media ID." +#~ msgstr "Ungültige Beitragsbild ID." + +#~ msgid "Pending Revision" +#~ msgstr "Ausstehende Revision" + +#~ msgid "Publish Revision" +#~ msgstr "Revision veröffentlichen" + +#~ msgid "Pending Revisions" +#~ msgstr "Ausstehende Revisionen" + +#~ msgid "Scheduled Revision" +#~ msgstr "Geplante Revision" + +#~ msgid "Scheduled Revisions" +#~ msgstr "Geplante Revisionen" + +#, php-format +#~ msgid "%1$s %2$s Revision" +#~ msgstr "%1$s %2$s Revision" + +#, php-format +#~ msgid "%1$s %2$s Revisions" +#~ msgstr "%1$s %2$s Revisionen" + +#, php-format +#~ msgid "View %s" +#~ msgstr "Siehe %s" + +#, php-format +#~ msgid "Published on: %s" +#~ msgstr "Veröffentlicht am: %s" + +#, php-format +#~ msgid "Schedule for: %s" +#~ msgstr "Geplant für: %s" + +#~ msgid "Save as Pending Revision" +#~ msgstr "Als ausstehende Revision speichern" + +#~ msgid "Do not publish current changes yet, but save to Revision Queue" +#~ msgstr "" +#~ "Momentane Änderungen noch nicht veröffentlichen, aber in der Revision " +#~ "Queue einreihen" + +#, php-format +#~ msgid "%s (revision)" +#~ msgstr "%s (Revision)" + +#~ msgid "Enter additional User Names or IDs (comma-separate)" +#~ msgstr "Zusätzliche Nutzernamen oder IDs eingeben (kommagetrennt)" + +#~ msgid "Submit Revision" +#~ msgstr "Revision einreichen" + +#~ msgid "Publishers to Notify of Your Revision" +#~ msgstr "Von deiner Revision zu benachrichtigende Verleger" + +#~ msgid "Prevent Revisors from editing others' revisions" +#~ msgstr "Hindern sie Prüfer daran, die Revisionen anderer zu bearbeiten" + +#~ msgid "Prevent Revisors from viewing others' revisions" +#~ msgstr "Hindern sie Prüfer daran, die Revisionen anderer zu ansehen" + +#~ msgid "Strip html tags out of difference display" +#~ msgstr "HTML Tags aus Gegenüberstellung entfernen" + +#, php-format +#~ msgid "" +#~ "Enable Contributors to submit revisions to their own published content. " +#~ "Revisors and users who have the edit_others (but not edit_published) " +#~ "capability for the post type can submit revisions to other user's " +#~ "content. These Pending Revisions are listed in %sRevision Queue%s." +#~ msgstr "" +#~ "Mitwirkenden erlauben Revisionen für ihre eigenen veröffentlichten " +#~ "Inhalte einzureichen. Prüfer und Nutzer, die die edit_others (aber nicht " +#~ "edit_published) Berechtigung für den Beitragstyp haben, können Revisionen " +#~ "der Inhalte anderer Nutzer einreichen. Diese ausstehenden Revisionen sind " +#~ "in der %sRevision Queue%s aufgelistet." + +#~ msgid "When a pending revision is published, also update the publish date." +#~ msgstr "" +#~ "Wenn eine ausstehende Revision veröffentlicht wird, dann aktualisiere " +#~ "auch das Veröffentlichungsdatum." + +#~ msgid "" +#~ "Note: \"by default\" means Pending Revision creators can customize email " +#~ "notification recipients before submitting. Eligibile \"Publisher\" email " +#~ "recipients are members of the Pending Revision Monitors group who " +#~ "also have the ability to publish the revision. If not " +#~ "explicitly defined, the Monitors group is all users with a primary WP " +#~ "role of Administrator or Editor." +#~ msgstr "" +#~ "Beachten Sie: \"Standardmäßig\" bedeutet, dass Ersteller ausstehender " +#~ "Revisionen Email-Benachrichtigungen vor dem Senden bearbeiten können. " +#~ "Berechtigte \"Verleger\" Email-Empfänger sind Mitglieder der Gruppe zur " +#~ "Überwachung ausstehender Revisionen, welche ebenfalls " +#~ "die Berechtigung besitzt die Revision zu veröffentlichen. Wenn nicht " +#~ "explizit definiert, besteht die Überwachungsgruppe aus primären WP " +#~ "Nutzerrollen wie Administratoren oder Redakteuren." + +#, php-format +#~ msgid "" +#~ "Note: \"by default\" means Pending Revision creators can customize email " +#~ "notification recipients before submitting. For more flexibility in " +#~ "moderation and notification, install the %1$s PressPermit Pro%2$s plugin." +#~ msgstr "" +#~ "Beachten Sie: \"Standardmäßig\" bedeutet, dass Ersteller ausstehender " +#~ "Revisionen Email-Benachrichtigungen vor dem Senden bearbeiten können. Für " +#~ "mehr Flexibilität bei der Moderation und Benachrichtigung, installieren " +#~ "sie das %1$s PressPermit Pro%2$s Plugin." + +#~ msgid "Approve Revision" +#~ msgstr "Revision genehmigen" + +#~ msgid "Update" +#~ msgstr "Aktualisieren" + +#~ msgid "Do not schedule current changes yet, but save to Revision Queue" +#~ msgstr "Noch nicht speichern, aber in Revision Queue einreihen" + +#~ msgid "Workflow…" +#~ msgstr "Workflow…" + +#, php-format +#~ msgid "%sPending Revisions: %s" +#~ msgstr "%sAusstehende Revisionen: %s" + +#, php-format +#~ msgid "Revision Edits: %s" +#~ msgstr "Revisionsbearbeitungen: %s" + +#, php-format +#~ msgid "Revisions: %s" +#~ msgstr "Revisionen: %s" + +#, php-format +#~ msgid "Your site is configured to keep only the last %s revisions." +#~ msgstr "" +#~ "Diese Seite ist konfiguriert nur die letzten %s Revisionen zu behalten." + +#, php-format +#~ msgid "Save as %s" +#~ msgstr "Speichern als %s" + +#~ msgid "Preview Changes" +#~ msgstr "Vorausschau der Änderungen" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Cancel" +#~ msgstr "Abbrechen" + +#~ msgid "Visibility:" +#~ msgstr "Sichtbarkeit:" + +#~ msgid "Public, Sticky" +#~ msgstr "Öffentlich, Stick" + +#~ msgid "Public" +#~ msgstr "Öffentlich" + +#, php-format +#~ msgid "%s, Sticky" +#~ msgstr "%s, Sticky" diff --git a/languages/revisionary-en_US.mo b/languages/revisionary-en_US.mo index 6bf79dad725153796aa8afbc43c91fe5128e4c3e..92ca4d6607710ee71bf12716cea70b98e4cdc904 100644 GIT binary patch delta 19 acmbQvI-PYwABVAlf}x3(f#Jq!j7$JG*99y9 delta 19 acmbQvI-PYwABT~lf}y#Up~1#!j7$JG?*%Ua diff --git a/languages/revisionary-en_US.po b/languages/revisionary-en_US.po index 5c17e4e5..06dbd814 100644 --- a/languages/revisionary-en_US.po +++ b/languages/revisionary-en_US.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: Revisionary Pro\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-09-21 17:10-0400\n" -"PO-Revision-Date: 2021-09-21 17:10-0400\n" +"POT-Creation-Date: 2021-09-30 14:01-0400\n" +"PO-Revision-Date: 2021-09-30 14:01-0400\n" "Last-Translator: Kevin Behrens \n" "Language-Team: English (United States)\n" "Language: en_US\n" @@ -20,7 +20,7 @@ msgstr "" "X-Poedit-SearchPath-1: admin\n" "X-Poedit-SearchPath-2: classes\n" -#: admin/RevisionEditSubmitMetabox.php:62 admin/class-list-table_rvy.php:839 +#: admin/RevisionEditSubmitMetabox.php:62 admin/class-list-table_rvy.php:872 msgid "Delete Permanently" msgstr "" @@ -41,32 +41,30 @@ msgstr "" #: admin/RevisionEditSubmitMetabox.php:114 #: admin/edit-revision-classic-ui_rvy.php:99 admin/post-edit_rvy.php:79 -#: admin/post-editor-workflow-ui_rvy.php:41 +#: admin/post-editor-workflow-ui_rvy.php:44 msgid "View / Publish" msgstr "" #: admin/RevisionEditSubmitMetabox.php:114 -#: admin/edit-revision-classic-ui_rvy.php:99 admin/history_rvy.php:1064 -#: admin/post-edit_rvy.php:79 admin/post-editor-workflow-ui_rvy.php:41 -msgid "Preview / Approve" +#: admin/edit-revision-classic-ui_rvy.php:99 admin/history_rvy.php:1072 +#: admin/post-edit_rvy.php:79 admin/post-editor-workflow-ui_rvy.php:44 +msgid "View / Approve" msgstr "" #: admin/RevisionEditSubmitMetabox.php:115 #: admin/edit-revision-classic-ui_rvy.php:100 admin/post-edit_rvy.php:98 -#: admin/post-editor-workflow-ui_rvy.php:42 msgid "View / moderate saved revision" msgstr "" -#: admin/RevisionEditSubmitMetabox.php:117 admin/class-list-table_rvy.php:551 +#: admin/RevisionEditSubmitMetabox.php:117 admin/class-list-table_rvy.php:574 #: admin/edit-revision-classic-ui_rvy.php:102 -#: admin/edit-revision-classic-ui_rvy.php:106 admin/history_rvy.php:1066 -#: admin/post-edit_rvy.php:82 admin/post-editor-workflow-ui_rvy.php:44 +#: admin/edit-revision-classic-ui_rvy.php:106 admin/history_rvy.php:1074 +#: admin/post-edit_rvy.php:82 msgid "View" msgstr "" #: admin/RevisionEditSubmitMetabox.php:118 #: admin/edit-revision-classic-ui_rvy.php:103 admin/post-edit_rvy.php:101 -#: admin/post-editor-workflow-ui_rvy.php:45 msgid "View saved revision" msgstr "" @@ -93,8 +91,8 @@ msgstr "" msgid "Publish on approval" msgstr "" -#: admin/RevisionEditSubmitMetabox.php:190 admin/class-list-table_rvy.php:527 -#: admin/class-list-table_rvy.php:1142 admin/history_rvy.php:1108 +#: admin/RevisionEditSubmitMetabox.php:190 admin/class-list-table_rvy.php:550 +#: admin/class-list-table_rvy.php:1175 admin/history_rvy.php:1116 #: front_rvy.php:269 msgid "Edit" msgstr "" @@ -155,7 +153,7 @@ msgstr "" msgid "The revision was published." msgstr "" -#: admin/admin-posts_rvy.php:113 admin/class-list-table_rvy.php:411 +#: admin/admin-posts_rvy.php:113 admin/class-list-table_rvy.php:434 #: rvy_init.php:236 msgid "Change Request" msgstr "" @@ -164,7 +162,7 @@ msgstr "" msgid "Has Revision" msgstr "" -#: admin/admin-posts_rvy.php:145 admin/admin_rvy.php:169 admin/options.php:102 +#: admin/admin-posts_rvy.php:145 admin/admin_rvy.php:172 admin/options.php:102 msgid "Revision Queue" msgstr "" @@ -172,7 +170,7 @@ msgstr "" msgid "New Working Copy" msgstr "" -#: admin/admin_lib-mu_rvy.php:10 admin/options.php:212 +#: admin/admin_lib-mu_rvy.php:10 admin/options.php:213 msgid "PublishPress Revisions Network Settings" msgstr "" @@ -180,7 +178,7 @@ msgstr "" msgid "Network Settings" msgstr "" -#: admin/admin_lib-mu_rvy.php:21 admin/options.php:214 +#: admin/admin_lib-mu_rvy.php:21 admin/options.php:215 msgid "PublishPress Revisions Network Defaults" msgstr "" @@ -188,48 +186,48 @@ msgstr "" msgid "Network Defaults" msgstr "" -#: admin/admin_rvy.php:150 admin/admin_rvy.php:166 +#: admin/admin_rvy.php:153 admin/admin_rvy.php:169 msgid "Revisions" msgstr "" -#: admin/admin_rvy.php:182 admin/options.php:218 +#: admin/admin_rvy.php:185 admin/options.php:219 msgid "PublishPress Revisions Settings" msgstr "" -#: admin/admin_rvy.php:182 admin/admin_rvy.php:219 admin/options.php:94 +#: admin/admin_rvy.php:185 admin/admin_rvy.php:222 admin/options.php:94 msgid "Settings" msgstr "" -#: admin/admin_rvy.php:189 admin/admin_rvy.php:190 +#: admin/admin_rvy.php:192 admin/admin_rvy.php:193 msgid "Upgrade to Pro" msgstr "" -#: admin/admin_rvy.php:259 +#: admin/admin_rvy.php:262 #, php-format msgid "If you like %s, please leave us a %s rating. Thank you!" msgstr "" -#: admin/admin_rvy.php:270 +#: admin/admin_rvy.php:273 msgid "About PublishPress Revisions" msgstr "" -#: admin/admin_rvy.php:270 +#: admin/admin_rvy.php:273 msgid "About" msgstr "" -#: admin/admin_rvy.php:272 +#: admin/admin_rvy.php:275 msgid "PublishPress Revisions Documentation" msgstr "" -#: admin/admin_rvy.php:272 admin/options.php:776 +#: admin/admin_rvy.php:275 admin/options.php:780 msgid "Documentation" msgstr "" -#: admin/admin_rvy.php:274 +#: admin/admin_rvy.php:277 msgid "Contact the PublishPress team" msgstr "" -#: admin/admin_rvy.php:274 +#: admin/admin_rvy.php:277 msgid "Contact" msgstr "" @@ -255,172 +253,172 @@ msgstr "" msgid "unselect" msgstr "" -#: admin/class-list-table_rvy.php:367 +#: admin/class-list-table_rvy.php:390 msgid "Revision" msgstr "" -#: admin/class-list-table_rvy.php:368 admin/post-editor-workflow-ui_rvy.php:25 +#: admin/class-list-table_rvy.php:391 admin/post-editor-workflow-ui_rvy.php:25 msgid "Status" msgstr "" -#: admin/class-list-table_rvy.php:369 +#: admin/class-list-table_rvy.php:392 msgid "Post Type" msgstr "" -#: admin/class-list-table_rvy.php:370 +#: admin/class-list-table_rvy.php:393 msgid "Revised By" msgstr "" -#: admin/class-list-table_rvy.php:371 +#: admin/class-list-table_rvy.php:394 msgid "Submission" msgstr "" -#: admin/class-list-table_rvy.php:379 +#: admin/class-list-table_rvy.php:402 msgid "Schedule" msgstr "" -#: admin/class-list-table_rvy.php:382 +#: admin/class-list-table_rvy.php:405 msgid "Published Post" msgstr "" -#: admin/class-list-table_rvy.php:384 +#: admin/class-list-table_rvy.php:407 msgid "Post Author" msgstr "" -#: admin/class-list-table_rvy.php:408 rvy_init.php:225 +#: admin/class-list-table_rvy.php:431 rvy_init.php:225 msgid "Working Copy" msgstr "" -#: admin/class-list-table_rvy.php:414 rvy_init.php:247 +#: admin/class-list-table_rvy.php:437 rvy_init.php:247 msgid "Scheduled Change" msgstr "" -#: admin/class-list-table_rvy.php:430 admin/class-list-table_rvy.php:1070 +#: admin/class-list-table_rvy.php:453 admin/class-list-table_rvy.php:1103 msgid "Y/m/d g:i:s a" msgstr "" -#: admin/class-list-table_rvy.php:438 admin/class-list-table_rvy.php:1075 -#: admin/history_rvy.php:979 +#: admin/class-list-table_rvy.php:461 admin/class-list-table_rvy.php:1108 +#: admin/history_rvy.php:987 #, php-format msgid "%s ago" msgstr "" -#: admin/class-list-table_rvy.php:441 admin/class-list-table_rvy.php:1078 +#: admin/class-list-table_rvy.php:464 admin/class-list-table_rvy.php:1111 msgid "Y/m/d g:i a" msgstr "" -#: admin/class-list-table_rvy.php:448 +#: admin/class-list-table_rvy.php:471 #, php-format msgid "Scheduled publication: %s" msgstr "" -#: admin/class-list-table_rvy.php:451 +#: admin/class-list-table_rvy.php:474 #, php-format msgid "Requested publication: %s" msgstr "" -#: admin/class-list-table_rvy.php:455 +#: admin/class-list-table_rvy.php:478 msgid "Missed schedule" msgstr "" -#: admin/class-list-table_rvy.php:498 admin/history_rvy.php:773 +#: admin/class-list-table_rvy.php:521 admin/history_rvy.php:781 msgid "No author" msgstr "" -#: admin/class-list-table_rvy.php:538 +#: admin/class-list-table_rvy.php:561 #, php-format msgid "View only revisions of %s" msgstr "" -#: admin/class-list-table_rvy.php:539 admin/class-list-table_rvy.php:881 +#: admin/class-list-table_rvy.php:562 admin/class-list-table_rvy.php:914 msgid "Filter" msgstr "" -#: admin/class-list-table_rvy.php:550 admin/class-list-table_rvy.php:558 +#: admin/class-list-table_rvy.php:573 admin/class-list-table_rvy.php:581 msgid "View published post" msgstr "" -#: admin/class-list-table_rvy.php:559 admin/class-list-table_rvy.php:1168 -#: admin/history_rvy.php:1161 admin/revision-ui_rvy.php:275 +#: admin/class-list-table_rvy.php:582 admin/class-list-table_rvy.php:1201 +#: admin/history_rvy.php:1169 admin/revision-ui_rvy.php:275 #: admin/revision-ui_rvy.php:297 msgid "Preview" msgstr "" -#: admin/class-list-table_rvy.php:582 +#: admin/class-list-table_rvy.php:605 msgid "Compare Past Revisions" msgstr "" -#: admin/class-list-table_rvy.php:583 +#: admin/class-list-table_rvy.php:606 msgid "History" msgstr "" -#: admin/class-list-table_rvy.php:737 +#: admin/class-list-table_rvy.php:768 #, fuzzy, php-format msgid "%sMy Copies & Changes%s (%s)" msgstr "%sMy Revisionz%s(%s)" -#: admin/class-list-table_rvy.php:769 +#: admin/class-list-table_rvy.php:802 #, php-format msgid "%sMy Published Posts%s(%s)" msgstr "" -#: admin/class-list-table_rvy.php:804 +#: admin/class-list-table_rvy.php:837 #, php-format msgid "All %s" msgstr "" -#: admin/class-list-table_rvy.php:828 front_rvy.php:311 +#: admin/class-list-table_rvy.php:861 front_rvy.php:312 msgid "Submit" msgstr "" -#: admin/class-list-table_rvy.php:831 admin/history_rvy.php:1064 -#: front_rvy.php:324 +#: admin/class-list-table_rvy.php:864 admin/history_rvy.php:1072 +#: front_rvy.php:331 msgid "Approve" msgstr "" -#: admin/class-list-table_rvy.php:832 +#: admin/class-list-table_rvy.php:865 msgid "Publish" msgstr "" -#: admin/class-list-table_rvy.php:835 admin/revision-ui_rvy.php:280 +#: admin/class-list-table_rvy.php:868 admin/revision-ui_rvy.php:280 msgid "Unschedule" msgstr "" -#: admin/class-list-table_rvy.php:860 +#: admin/class-list-table_rvy.php:893 msgid "Filter by category" msgstr "" -#: admin/class-list-table_rvy.php:925 +#: admin/class-list-table_rvy.php:958 msgid "Filter by date" msgstr "" -#: admin/class-list-table_rvy.php:927 +#: admin/class-list-table_rvy.php:960 msgid "All dates" msgstr "" -#: admin/class-list-table_rvy.php:986 +#: admin/class-list-table_rvy.php:1019 msgid "Select All" msgstr "" -#: admin/class-list-table_rvy.php:1058 +#: admin/class-list-table_rvy.php:1091 #, php-format msgid "“%s” (Edit)" msgstr "" -#: admin/class-list-table_rvy.php:1151 +#: admin/class-list-table_rvy.php:1184 msgid "Delete Revision" msgstr "" -#: admin/class-list-table_rvy.php:1152 admin/revision-ui_rvy.php:285 +#: admin/class-list-table_rvy.php:1185 admin/revision-ui_rvy.php:285 #: admin/revision-ui_rvy.php:411 msgid "Delete" msgstr "" -#: admin/class-list-table_rvy.php:1167 +#: admin/class-list-table_rvy.php:1200 msgid "Preview Revision" msgstr "" -#: admin/class-list-table_rvy.php:1179 +#: admin/class-list-table_rvy.php:1213 msgid "Compare Changes" msgstr "" @@ -445,7 +443,7 @@ msgid "Submit Change Schedule" msgstr "" #: admin/edit-revision-classic-ui_rvy.php:107 -#: admin/post-editor-workflow-ui_rvy.php:53 +#: admin/post-editor-workflow-ui_rvy.php:58 msgid "View unsaved changes" msgstr "" @@ -490,83 +488,83 @@ msgstr "" msgid "(no title)" msgstr "" -#: admin/history_rvy.php:527 admin/options.php:541 +#: admin/history_rvy.php:525 admin/options.php:545 msgid "Post Date" msgstr "" -#: admin/history_rvy.php:528 +#: admin/history_rvy.php:526 msgid "Post Parent" msgstr "" -#: admin/history_rvy.php:529 +#: admin/history_rvy.php:527 msgid "Menu Order" msgstr "" -#: admin/history_rvy.php:530 +#: admin/history_rvy.php:528 msgid "Comment Status" msgstr "" -#: admin/history_rvy.php:531 +#: admin/history_rvy.php:529 msgid "Ping Status" msgstr "" -#: admin/history_rvy.php:656 +#: admin/history_rvy.php:664 msgid "Page Template" msgstr "" -#: admin/history_rvy.php:659 +#: admin/history_rvy.php:667 msgid "Featured Image" msgstr "" -#: admin/history_rvy.php:668 +#: admin/history_rvy.php:676 msgid "Beaver Builder Data" msgstr "" -#: admin/history_rvy.php:669 +#: admin/history_rvy.php:677 msgid "Beaver Builder Settings" msgstr "" -#: admin/history_rvy.php:906 +#: admin/history_rvy.php:914 msgid "Scheduled for " msgstr "" -#: admin/history_rvy.php:911 +#: admin/history_rvy.php:919 msgid "Requested for " msgstr "" -#: admin/history_rvy.php:916 +#: admin/history_rvy.php:924 msgid "Modified " msgstr "" -#: admin/history_rvy.php:921 +#: admin/history_rvy.php:929 #, php-format msgid "%s%s ago" msgstr "" -#: admin/history_rvy.php:921 +#: admin/history_rvy.php:929 #, php-format msgid "%s%s from now" msgstr "" -#: admin/history_rvy.php:932 admin/revision-action_rvy.php:310 +#: admin/history_rvy.php:940 admin/revision-action_rvy.php:310 #: admin/revision-action_rvy.php:392 admin/revision-ui_rvy.php:265 #: front_rvy.php:210 msgid "M j, Y @ g:i a" msgstr "" -#: admin/history_rvy.php:977 +#: admin/history_rvy.php:985 msgid "M j, Y @ H:i" msgstr "" -#: admin/history_rvy.php:1160 +#: admin/history_rvy.php:1168 msgid "Preview / Restore" msgstr "" -#: admin/history_rvy.php:1167 +#: admin/history_rvy.php:1175 msgid "Manage" msgstr "" -#: admin/history_rvy.php:1168 +#: admin/history_rvy.php:1176 msgid "List" msgstr "" @@ -623,377 +621,387 @@ msgid "Listing others' revisions requires role capability" msgstr "" #: admin/options.php:118 -msgid "Compatibility Mode" +msgid "Users can always administer revisions to their own editable posts" msgstr "" #: admin/options.php:119 -msgid "Also notify on Revision Update" +msgid "Compatibility Mode" msgstr "" #: admin/options.php:120 -msgid "Revision Publication: API actions to mimic Post Update" +msgid "Also notify on Revision Update" msgstr "" #: admin/options.php:121 -msgid "Hide html tags on Compare Revisions screen" +msgid "Revision Publication: API actions to mimic Post Update" msgstr "" #: admin/options.php:122 +msgid "Hide html tags on Compare Revisions screen" +msgstr "" + +#: admin/options.php:123 msgid "Asynchronous Publishing" msgstr "" -#: admin/options.php:123 admin/options.php:124 +#: admin/options.php:124 admin/options.php:125 msgid "Update Publish Date" msgstr "" -#: admin/options.php:125 admin/options.php:126 +#: admin/options.php:126 admin/options.php:127 msgid "Update Modified Date" msgstr "" -#: admin/options.php:127 +#: admin/options.php:128 msgid "Email original Author when a Change Request is submitted" msgstr "" -#: admin/options.php:128 +#: admin/options.php:129 msgid "Email the original Author when a Change Request is approved" msgstr "" -#: admin/options.php:129 +#: admin/options.php:130 msgid "Email the Revisor when a Change Request is approved" msgstr "" -#: admin/options.php:130 +#: admin/options.php:131 msgid "Email the original Author when a Scheduled Change is published" msgstr "" -#: admin/options.php:131 +#: admin/options.php:132 msgid "Email the Revisor when a Scheduled Change is published" msgstr "" -#: admin/options.php:132 +#: admin/options.php:133 msgid "Enable notification buffer" msgstr "" -#: admin/options.php:133 +#: admin/options.php:134 msgid "All custom post types available to Revisors" msgstr "" -#: admin/options.php:134 +#: admin/options.php:135 msgid "Prevent Revisors from editing other user's drafts" msgstr "" -#: admin/options.php:135 +#: admin/options.php:136 msgid "Display Hints" msgstr "" -#: admin/options.php:136 +#: admin/options.php:137 msgid "Show Preview Links" msgstr "" -#: admin/options.php:137 +#: admin/options.php:138 msgid "Preview Link Type" msgstr "" -#: admin/options.php:138 +#: admin/options.php:139 msgid "Approve Button on Compare Revisions screen" msgstr "" -#: admin/options.php:139 +#: admin/options.php:140 msgid "Copy revision comments to published post" msgstr "" -#: admin/options.php:140 +#: admin/options.php:141 msgid "Compare Past Revisions ordering:" msgstr "" -#: admin/options.php:146 +#: admin/options.php:147 msgid "Email designated Publishers when a Change Request is submitted" msgstr "" -#: admin/options.php:147 +#: admin/options.php:148 msgid "Email designated Publishers when a Scheduled Change is published" msgstr "" -#: admin/options.php:148 +#: admin/options.php:149 msgid "Email designated Publishers when a Change Request is approved" msgstr "" -#: admin/options.php:150 +#: admin/options.php:151 msgid "Email Editors and Administrators when a Change Request is submitted" msgstr "" -#: admin/options.php:151 +#: admin/options.php:152 msgid "Email Editors and Administrators when a Scheduled Change is published" msgstr "" -#: admin/options.php:152 +#: admin/options.php:153 msgid "Email Editors and Administrators when a Change Request is approved" msgstr "" -#: admin/options.php:216 +#: admin/options.php:217 msgid "PublishPress Revisions Site Settings" msgstr "" -#: admin/options.php:224 admin/options.php:894 +#: admin/options.php:225 admin/options.php:898 msgid "Update »" msgstr "" -#: admin/options.php:238 +#: admin/options.php:239 msgid "" "These are the default settings for options which can be " "adjusted per-site." msgstr "" -#: admin/options.php:275 +#: admin/options.php:276 #, php-format msgid "You can also specify %1$sdefaults for site-specific settings%2$s." msgstr "" -#: admin/options.php:276 +#: admin/options.php:277 #, php-format msgid "" "Use this tab to make NETWORK-WIDE changes to PublishPress " "Revisions settings. %s" msgstr "" -#: admin/options.php:278 +#: admin/options.php:279 msgid "" "Here you can change the default value for settings which are controlled " "separately on each site." msgstr "" -#: admin/options.php:292 +#: admin/options.php:293 #, php-format msgid "Note that %1$s network-wide settings%2$s may also be available." msgstr "" -#: admin/options.php:324 +#: admin/options.php:325 msgid "" "The user role \"Revisor\" role is now available. Include capabilities for " "all custom post types in this role?" msgstr "" -#: admin/options.php:329 +#: admin/options.php:330 msgid "" "If checked, users lacking site-wide publishing capabilities will also be " "checked for the edit_others_drafts capability" msgstr "" -#: admin/options.php:345 +#: admin/options.php:346 msgid "" "This restriction applies to users who are not full editors for the post " "type. To enable a role, add capabilities: copy_posts, copy_others_pages, etc." msgstr "" -#: admin/options.php:350 +#: admin/options.php:351 msgid "" "To expand the Posts / Pages listing for non-Editors, add capabilities: " "list_others_pages, list_published_posts, etc." msgstr "" -#: admin/options.php:374 +#: admin/options.php:375 #, php-format msgid "" "Enable published content to be copied, edited and submitted as Change " "Requests, managed in %sRevision Queue%s." msgstr "" -#: admin/options.php:380 +#: admin/options.php:381 msgid "" "This restriction applies to users who are not full editors for the post " "type. To enable a role, add capabilities: revise_posts, revise_others_pages, " "etc." msgstr "" -#: admin/options.php:383 +#: admin/options.php:384 msgid "" "When a change request is published, update post publish date to current time." msgstr "" -#: admin/options.php:386 +#: admin/options.php:387 msgid "" "When a change request is published, update post modified date to current " "time." msgstr "" -#: admin/options.php:406 +#: admin/options.php:407 msgid "" "If a currently published post or page is edited and a future date set, the " "change will not be applied until the selected date." msgstr "" -#: admin/options.php:409 +#: admin/options.php:410 msgid "" "When a scheduled change is published, update post publish date to current " "time." msgstr "" -#: admin/options.php:412 +#: admin/options.php:413 msgid "" "When a scheduled change is published, update post modified date to current " "time." msgstr "" -#: admin/options.php:415 +#: admin/options.php:416 msgid "" "Publish scheduled changes asynchronously, via a secondary http request from " "the server. This is usually best since it eliminates delay, but some " "servers may not support it." msgstr "" -#: admin/options.php:433 +#: admin/options.php:434 msgid "" "This restriction applies to users who are not full editors for the post " "type. To enable a role, give it the edit_others_revisions capability." msgstr "" -#: admin/options.php:436 +#: admin/options.php:437 msgid "" "This restriction applies to users who are not full editors for the post " "type. To enable a role, give it the list_others_revisions capability." msgstr "" -#: admin/options.php:439 +#: admin/options.php:440 +msgid "" +"Bypass the above restrictions for others' revisions to logged in user's own " +"posts." +msgstr "" + +#: admin/options.php:443 msgid "" "If some revisions are missing from the queue, disable a performance " "enhancement for better compatibility with themes and plugins." msgstr "" -#: admin/options.php:444 +#: admin/options.php:448 msgid "Regenerate \"post has revision\" flags" msgstr "" -#: admin/options.php:460 +#: admin/options.php:464 msgid "" "For themes that block revision preview, hide preview links from non-" "Administrators" msgstr "" -#: admin/options.php:472 +#: admin/options.php:476 msgid "Published Post Slug" msgstr "" -#: admin/options.php:472 +#: admin/options.php:476 msgid "Revision Slug" msgstr "" -#: admin/options.php:472 +#: admin/options.php:476 msgid "Revision ID only" msgstr "" -#: admin/options.php:483 +#: admin/options.php:487 msgid "" "Some themes or plugins may require Revision Slug or Revision ID link type " "for proper template loading and field display." msgstr "" -#: admin/options.php:493 +#: admin/options.php:497 msgid "If disabled, Compare screen links to Revision Preview for approval" msgstr "" -#: admin/options.php:513 +#: admin/options.php:517 #, php-format msgid "" "For compatibility with Advanced Custom Fields, Beaver Builder and WPML, " "upgrade to PublishPress Revisions Pro." msgstr "" -#: admin/options.php:522 +#: admin/options.php:526 msgid "This may improve compatibility with some plugins." msgstr "" -#: admin/options.php:541 +#: admin/options.php:545 msgid "Modification Date" msgstr "" -#: admin/options.php:551 +#: admin/options.php:555 msgid "Show descriptive captions for PublishPress Revisions settings" msgstr "" -#: admin/options.php:571 admin/options.php:633 +#: admin/options.php:575 admin/options.php:637 msgid "select recipients" msgstr "" -#: admin/options.php:580 admin/options.php:598 +#: admin/options.php:584 admin/options.php:602 msgid "Never" msgstr "" -#: admin/options.php:580 admin/options.php:598 +#: admin/options.php:584 admin/options.php:602 msgid "By default" msgstr "" -#: admin/options.php:580 admin/options.php:598 +#: admin/options.php:584 admin/options.php:602 msgid "Always" msgstr "" -#: admin/options.php:662 +#: admin/options.php:666 msgid "" "To avoid notification failures, buffer emails for delayed sending once " "minute, hour or day limits are exceeded" msgstr "" -#: admin/options.php:679 +#: admin/options.php:683 msgid "Notification Buffer" msgstr "" -#: admin/options.php:707 +#: admin/options.php:711 msgid "Notification Log" msgstr "" -#: admin/options.php:736 +#: admin/options.php:740 msgid "Purge Notification Buffer" msgstr "" -#: admin/options.php:742 +#: admin/options.php:746 msgid "Truncate Notification Log" msgstr "" -#: admin/options.php:748 +#: admin/options.php:752 #, php-format msgid "Sent in last minute: %d / %d" msgstr "" -#: admin/options.php:749 +#: admin/options.php:753 #, php-format msgid "Sent in last hour: %d / %d" msgstr "" -#: admin/options.php:750 +#: admin/options.php:754 #, php-format msgid "Sent in last day: %d / %d" msgstr "" -#: admin/options.php:757 +#: admin/options.php:761 #, php-format msgid "Seconds until next buffer processing time: %d" msgstr "" -#: admin/options.php:766 +#: admin/options.php:770 msgid "Show Notification Log / Buffer" msgstr "" -#: admin/options.php:768 +#: admin/options.php:772 msgid "Show with message content" msgstr "" -#: admin/options.php:809 +#: admin/options.php:813 #, php-format msgid "network-wide control of \"%s\"" msgstr "" -#: admin/options.php:816 +#: admin/options.php:820 msgid "" "Specify which PublishPress Revisions Settings to control network-wide. " "Unselected settings are controlled separately on each site." msgstr "" -#: admin/options.php:898 +#: admin/options.php:902 msgid "" "All settings in this form (including those on unselected tabs) will be reset " "to DEFAULTS. Are you sure?" msgstr "" -#: admin/options.php:903 +#: admin/options.php:907 msgid "Revert to Defaults" msgstr "" @@ -1011,78 +1019,103 @@ msgstr "" msgid "(on approval)" msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:57 +#: admin/post-editor-workflow-ui_rvy.php:42 +msgid "Preview / Publish" +msgstr "" + +#: admin/post-editor-workflow-ui_rvy.php:42 +msgid "Preview / Approve" +msgstr "" + +#: admin/post-editor-workflow-ui_rvy.php:47 +msgid "View / Approve saved changes" +msgstr "" + +#: admin/post-editor-workflow-ui_rvy.php:49 +msgid "Preview / Submit" +msgstr "" + +#: admin/post-editor-workflow-ui_rvy.php:49 +msgid "View / Submit" +msgstr "" + +#: admin/post-editor-workflow-ui_rvy.php:50 +msgid "View / Submit saved changes" +msgstr "" + +#: admin/post-editor-workflow-ui_rvy.php:62 #, php-format msgid "" " %s Revision Edit" msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:69 +#: admin/post-editor-workflow-ui_rvy.php:74 msgid "Error Submitting Changes" msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:73 +#: admin/post-editor-workflow-ui_rvy.php:78 msgid "Submit Change Request" msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:75 +#: admin/post-editor-workflow-ui_rvy.php:80 msgid "Changes Submitted." msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:76 -#: admin/post-editor-workflow-ui_rvy.php:151 -#: admin/post-editor-workflow-ui_rvy.php:170 +#: admin/post-editor-workflow-ui_rvy.php:81 +#: admin/post-editor-workflow-ui_rvy.php:156 +#: admin/post-editor-workflow-ui_rvy.php:175 msgid "view" msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:89 +#: admin/post-editor-workflow-ui_rvy.php:94 msgid "Approve Changes" msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:92 rvy_init.php:237 rvy_init.php:248 +#: admin/post-editor-workflow-ui_rvy.php:97 rvy_init.php:226 rvy_init.php:237 +#: rvy_init.php:248 msgid "Publish Changes" msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:126 +#: admin/post-editor-workflow-ui_rvy.php:131 #, php-format msgid " %s Change Request" msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:135 +#: admin/post-editor-workflow-ui_rvy.php:140 #, php-format msgid "" " %s Scheduled Change" msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:147 +#: admin/post-editor-workflow-ui_rvy.php:152 msgid "Create Working Copy" msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:148 +#: admin/post-editor-workflow-ui_rvy.php:153 msgid "Create a working copy of this post" msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:149 +#: admin/post-editor-workflow-ui_rvy.php:154 msgid "Update post before creating copy." msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:150 +#: admin/post-editor-workflow-ui_rvy.php:155 msgid "Working Copy Ready." msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:153 +#: admin/post-editor-workflow-ui_rvy.php:158 msgid "Error Creating Copy" msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:166 +#: admin/post-editor-workflow-ui_rvy.php:171 msgid "Schedule Changes" msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:168 +#: admin/post-editor-workflow-ui_rvy.php:173 msgid "For custom field changes, edit a scheduled copy." msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:169 +#: admin/post-editor-workflow-ui_rvy.php:174 msgid "Changes are Scheduled." msgstr "" @@ -1115,8 +1148,8 @@ msgid "Editor: " msgstr "" #: admin/revision-action_rvy.php:320 admin/revision-action_rvy.php:402 -#: admin/revision-action_rvy.php:1124 admin/revision-action_rvy.php:1149 -#: admin/revision-action_rvy.php:1218 +#: admin/revision-action_rvy.php:1126 admin/revision-action_rvy.php:1151 +#: admin/revision-action_rvy.php:1220 msgid "View it online: " msgstr "" @@ -1125,34 +1158,34 @@ msgstr "" msgid "The revision you submitted for the %1$s \"%2$s\" has been approved." msgstr "" -#: admin/revision-action_rvy.php:1120 admin/revision-action_rvy.php:1142 +#: admin/revision-action_rvy.php:1122 admin/revision-action_rvy.php:1144 #, php-format msgid "[%s] Scheduled Change Publication Notice" msgstr "" -#: admin/revision-action_rvy.php:1121 +#: admin/revision-action_rvy.php:1123 #, php-format msgid "" "The scheduled revision you submitted for the %1$s \"%2$s\" has been " "published." msgstr "" -#: admin/revision-action_rvy.php:1143 +#: admin/revision-action_rvy.php:1145 #, php-format msgid "A scheduled change to your %1$s \"%2$s\" has been published." msgstr "" -#: admin/revision-action_rvy.php:1146 admin/revision-action_rvy.php:1215 +#: admin/revision-action_rvy.php:1148 admin/revision-action_rvy.php:1217 #, php-format msgid "It was submitted by %1$s." msgstr "" -#: admin/revision-action_rvy.php:1210 +#: admin/revision-action_rvy.php:1212 #, php-format msgid "[%s] Scheduled Change Publication" msgstr "" -#: admin/revision-action_rvy.php:1212 +#: admin/revision-action_rvy.php:1214 #, php-format msgid "A scheduled change to the %1$s \"%2$s\" has been published." msgstr "" @@ -1332,48 +1365,48 @@ msgstr "" msgid "%sView Published Post%s" msgstr "" -#: front_rvy.php:317 +#: front_rvy.php:319 front_rvy.php:340 front_rvy.php:360 +msgid "Publish now" +msgstr "" + +#: front_rvy.php:324 #, php-format msgid "This is a Working Copy. %s %s %s" msgstr "" -#: front_rvy.php:329 +#: front_rvy.php:336 #, php-format msgid "This is a Change Request (requested publish date: %s). %s %s %s" msgstr "" -#: front_rvy.php:333 front_rvy.php:353 -msgid "Publish now" -msgstr "" - -#: front_rvy.php:335 +#: front_rvy.php:342 #, php-format msgid "This is a Change Request. %s %s %s" msgstr "" -#: front_rvy.php:346 +#: front_rvy.php:353 msgid "This revision is very new, preview may not be synchronized with theme." msgstr "" -#: front_rvy.php:347 +#: front_rvy.php:354 msgid "Reload" msgstr "" -#: front_rvy.php:355 +#: front_rvy.php:362 #, php-format msgid "This is a Scheduled Change (for publication on %s). %s %s %s" msgstr "" -#: front_rvy.php:367 +#: front_rvy.php:374 #, php-format msgid "This is the Current Revision. %s" msgstr "" -#: front_rvy.php:372 +#: front_rvy.php:379 msgid "Restore" msgstr "" -#: front_rvy.php:373 +#: front_rvy.php:380 #, php-format msgid "This is a Past Revision (from %s). %s %s" msgstr "" @@ -1428,34 +1461,30 @@ msgstr "" msgid "This plugin can be deleted." msgstr "" -#: revisionary.php:83 revisionary.php:157 +#: revisionary.php:83 revisionary.php:161 #, php-format msgid "" "Another copy of PublishPress Revisions (or Revisionary) is already activated " "(version %1$s: \"%2$s\")" msgstr "" -#: revisionary.php:85 revisionary.php:159 +#: revisionary.php:85 revisionary.php:163 #, php-format msgid "" "Another copy of PublishPress Revisions (or Revisionary) is already activated " "(version %1$s)" msgstr "" -#: revisionary.php:178 +#: revisionary.php:182 #, php-format msgid "PublishPress Revisions requires PHP version %s or higher." msgstr "" -#: revisionary.php:185 +#: revisionary.php:189 #, php-format msgid "PublishPress Revisions requires WordPress version %s or higher." msgstr "" -#: rvy_init.php:226 -msgid "Publish Revision" -msgstr "" - #: rvy_init.php:226 rvy_init.php:237 rvy_init.php:248 msgid "Save Revision" msgstr "" diff --git a/languages/revisionary-fr_FR.mo b/languages/revisionary-fr_FR.mo index 3a34ff5d75c12a9d668df2d3545e5ac0348b40b3..f0e541494c8ca10e5b8513e5608c7ee0e54d4ba4 100644 GIT binary patch literal 536 zcmZvX!A`?442Fl`)FWpOK5!%@?IyHkY(j$#O)ycxKwPudTLWEEB`Jaj;q~?`xKwOH znx$XK@6V2%&GFH9i{gNELOLZKlFmqVbV(b6Jv!@}Z6wybVd~j5V=ri(GFm`VEehrG z#G-S+{@X|VP<53Hk_Yx@*p2ikAm(wzc#pL?L>&=bFy7%jxR=hexs}=#(iEaQR-_tFoC{)-%J@tcTR6SCw2Lo1foq|$vzb7>v=!Sj5=y1Tl1qa|84)~U&qUJ2+fln;`kva(S4 z0}Vrn`oSx^MUA%kQerSu9^$YQwuv;Bjikd;`dmO5?y^rPZJH;PXPn4h5DAdkTIszo U7LXRwIdpq*TY%DOQDwwiKkve$f&c&j literal 32665 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�<&eCz^7BLAI>& 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 diff --git a/languages/revisionary-fr_FR.po b/languages/revisionary-fr_FR.po index 7620f71e..3c3c7be8 100644 --- a/languages/revisionary-fr_FR.po +++ b/languages/revisionary-fr_FR.po @@ -2,1233 +2,921 @@ # This file is distributed under the same license as the PublishPress - PublishPress Revisions package. msgid "" msgstr "" -"PO-Revision-Date: 2020-07-29 18:03:23+0000\n" +"Project-Id-Version: PublishPress - PublishPress Revisions\n" +"POT-Creation-Date: 2021-09-30 14:15-0400\n" +"PO-Revision-Date: 2021-09-30 14:16-0400\n" +"Last-Translator: Kevin Behrens \n" +"Language-Team: \n" +"Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: GlotPress/2.4.0-alpha\n" -"Language: fr\n" -"Project-Id-Version: PublishPress - PublishPress Revisions\n" +"X-Generator: Poedit 2.4.3\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPath-1: admin\n" +"X-Poedit-SearchPath-2: classes\n" +"X-Poedit-SearchPath-3: includes\n" -#: revisionary.php:168 msgid "PublishPress Revisions requires WordPress version %s or higher." msgstr "PublishPress Revisions nécessite la version WordPress %s ou plus." -#: revisionary.php:161 msgid "PublishPress Revisions requires PHP version %s or higher." msgstr "PublishPress Revisions nécessite la version PHP %s ou supérieure." -#: revisionary.php:85 revisionary.php:143 msgid "Another copy of PublishPress Revisions (or Revisionary) is already activated (version %1$s)" msgstr "Une autre copie de PublishPress Revisions (ou Revisionary) est déjà activée (version %1$s)" -#: revisionary.php:83 revisionary.php:141 msgid "Another copy of PublishPress Revisions (or Revisionary) is already activated (version %1$s: \"%2$s\")" msgstr "Une autre copie de PublishPress Revisions (ou Revisionary) est déjà activée (version %1$s: « %2$s »)" -#: revisionary.php:67 msgid "This plugin can be deleted." msgstr "Ce plugin peut être supprimé." -#: admin/revision-action_rvy.php:878 msgid "A scheduled revision to your %1$s \"%2$s\" has been published." msgstr "Une demande de révision planifiée pour votre %1$s \"%2$s\" a été publiée." -#: admin/revision-action_rvy.php:856 msgid "The scheduled revision you submitted for the %1$s \"%2$s\" has been published." msgstr "Votre demande de révision planifiée pour %1$s \"%2$s\" a été publiée." -#: admin/revision-action_rvy.php:855 admin/revision-action_rvy.php:877 msgid "[%s] Scheduled Revision Publication Notice" msgstr "[%s] Notification concernant votre demande de révision planifiée" -#: admin/revision-action_rvy.php:221 msgid "The revision you submitted for the %1$s \"%2$s\" has been approved." msgstr "La demande de révision pour %1$s \"%2$s\" a été traitée." -#: admin/revision-action_rvy.php:152 admin/revision-action_rvy.php:234 -#: admin/revision-action_rvy.php:859 admin/revision-action_rvy.php:884 -#: admin/revision-action_rvy.php:919 msgid "View it online: " msgstr "Visualiser la demande en ligne: " -#: admin/revision-action_rvy.php:150 admin/revision-action_rvy.php:232 msgid "Editor: " msgstr "Éditeur:" -#: admin/revision-action_rvy.php:147 admin/revision-action_rvy.php:229 msgid "Preview it here: " msgstr "Prévisualiser ici:" -#: admin/revision-action_rvy.php:143 admin/revision-action_rvy.php:225 msgid "It will be published on %s" msgstr "Elle sera publiée le %s" -#: admin/revision-action_rvy.php:139 msgid "The submitter was %1$s." msgstr "Le demandeur était %1$s." -#: admin/revision-action_rvy.php:136 msgid "A revision to your %1$s \"%2$s\" has been approved." msgstr "Votre demande de révision pour %1$s \"%2$s\" a été traitée." -#: admin/revision-action_rvy.php:135 admin/revision-action_rvy.php:220 msgid "[%s] Revision Approval Notice" msgstr "[%s] Notification concernant votre demande de révision" -#: admin/admin_rvy.php:795 msgid "Contact" msgstr "Contact" -#: admin/admin_rvy.php:795 msgid "Contact the PublishPress team" msgstr "Contactez l'équipe de PublishPress" -#: admin/admin_rvy.php:793 msgid "PublishPress Revisions Documentation" msgstr "Documentation sur les révisions PublishPress" -#: admin/admin_rvy.php:791 msgid "About" msgstr "À propos" -#: admin/admin_rvy.php:791 msgid "About PublishPress Revisions" msgstr "À propos de PublishPress Revisions" -#: admin/admin_rvy.php:780 msgid "If you like %s, please leave us a %s rating. Thank you!" msgstr "Si vous aimez %s, veuillez nous laisser une note %s. Merci!" -#: admin/admin_rvy.php:746 msgid "%s (revision)" msgstr "%s (révision)" -#: admin/admin_rvy.php:645 admin/admin_rvy.php:646 msgid "Upgrade to Pro" msgstr "Passer à la version Pro" -#: admin/admin_rvy.php:605 msgid "Revisions" msgstr "Révisions" -#: admin/admin_rvy.php:490 msgid "Save as Pending Revision" msgstr "Enregistrer en tant que révision en attente" -#: admin/admin_rvy.php:333 msgid "The revision was published." msgstr "Cette demande de révision a été publiée." -#: admin/admin_rvy.php:330 msgid "The revision was scheduled for publication." msgstr "Cette demande de révision a été planifiée pour publication." -#: admin/admin_rvy.php:327 msgid "The revision was restored." msgstr "La demande de révision a été restaurée." -#: admin/admin_rvy.php:319 admin/admin_rvy.php:624 msgid "Revision Queue" msgstr "File d’attente de révision" -#: admin/post-edit-block-ui_rvy.php:155 msgid "Workflow…" msgstr "Workflow…" -#: admin/post-edit-block-ui_rvy.php:134 msgid " %s Scheduled Revision" msgid_plural " %s Scheduled Revisions" msgstr[0] "%s Révision planifiée" msgstr[1] "%s Révisions planifiées" -#: admin/post-edit-block-ui_rvy.php:123 msgid " %s Pending Revision" msgid_plural " %s Pending Revisions" msgstr[0] "%s Révision en attente" msgstr[1] "%s Révisions en attente" -#: admin/post-edit-block-ui_rvy.php:115 msgid "Do not schedule current changes yet, but save to Revision Queue" msgstr "Ne pas encore planifier les modifications en cours, mais enregistrer dans la file d’attente de révision" -#: admin/post-edit-block-ui_rvy.php:113 admin/admin_rvy.php:493 msgid "Do not publish current changes yet, but save to Revision Queue" msgstr "Ne publiez pas encore les modifications actuelles, mais enregistrez dans la file d’attente de révision" -#: admin/post-edit-block-ui_rvy.php:85 msgid "Approve Revision" msgstr "Approuver la révision" -#: admin/post-edit-block-ui_rvy.php:59 msgid " %s Revision Edit" msgid_plural " %s Revision Edits" msgstr[0] "Modification de la révision %s" msgstr[1] "Modifications de révision %s" -#: admin/revision-queue_rvy.php:113 msgid "Revision Queue %s" msgstr "File d’attente de révision %s" -#: admin/revision-queue_rvy.php:111 msgctxt "PublishedPostName (other filter captions)" msgid "Revision Queue for \"%s\"%s" msgstr "File d’attente de révision pour « %s\"%s" -#: admin/revision-queue_rvy.php:103 admin/revision-queue_rvy.php:104 msgid "%sPost Author: %s" msgstr "%sPost Auteur: %s" -#: admin/revision-queue_rvy.php:96 msgctxt "Posts / Pages / etc." msgid "of %s" msgstr "de %s" -#: admin/revision-queue_rvy.php:83 msgctxt "Author Name" msgid "%s: " msgstr "%s: " -#: admin/revision-queue_rvy.php:40 msgid "%s revision published." msgid_plural "%s revisions published." msgstr[0] "%s révision publiée." msgstr[1] "%s révisions publiées." -#: admin/revision-queue_rvy.php:39 msgid "%s revision approved." msgid_plural "%s revisions approved." msgstr[0] "%s révision approuvée." msgstr[1] "%s révisions approuvées." -#: admin/revision-queue_rvy.php:13 msgid "Pending Revisions and Scheduled Revisions are both disabled. See Revisions > Settings." msgstr "Les révisions en attente et les révisions planifiées sont toutes deux désactivées. Voir Révisions > Paramètres." -#: admin/revision-queue_rvy.php:9 msgid "You are not allowed to manage revisions." msgstr "Vous n’êtes pas autorisé à gérer les révisions." -#. translators: Publish box date formt, see http://php.net/date -#: admin/PostEditSubmitMetabox.php:343 msgid "M j, Y @ G:i" msgstr "M j, Y @ G:i" -#: admin/PostEditSubmitMetabox.php:273 msgid "Visibility:" msgstr "Visibilité :" -#: admin/PostEditSubmitMetabox.php:65 msgid "Your site is configured to keep only the last %s revisions." msgstr "Votre site est configuré pour conserver uniquement les %s dernières révisions." -#: admin/PostEditSubmitMetabox.php:62 msgid "Revision Edits: %s" msgstr "Modifications de révision : %s" -#: admin/history_rvy.php:1127 msgid "List" msgstr "Liste" -#: admin/history_rvy.php:1126 msgid "Manage" msgstr "Gérer" -#: admin/history_rvy.php:1119 msgid "Preview / Restore" msgstr "Aperçu / Restauration" -#: admin/history_rvy.php:1038 msgid "View" msgstr "Voir" -#: admin/history_rvy.php:952 msgctxt "revision date short format" msgid "j M @ H:i" msgstr "j M @ H:i" -#: admin/history_rvy.php:951 msgid "M j, Y @ H:i" msgstr "M j, Y @ H:i" -#: admin/history_rvy.php:906 admin/admin_rvy.php:443 msgid "M j, Y @ g:i a" msgstr "M j, Y @ g:i a" -#: admin/history_rvy.php:895 msgid "%s%s from now" msgstr "%s%s à partir de maintenant" -#: admin/history_rvy.php:890 msgid "Submitted " msgstr "Remis " -#: admin/history_rvy.php:885 msgid "Requested for " msgstr "Demandé pour" -#: admin/history_rvy.php:880 msgid "Scheduled for " msgstr "Prévu pour" -#: admin/history_rvy.php:667 msgid "Beaver Builder Settings" msgstr "Paramètres du constructeur de castors" -#: admin/history_rvy.php:666 msgid "Beaver Builder Data" msgstr "Données du constructeur de castors" -#: admin/history_rvy.php:657 msgid "Featured Image" msgstr "Image à la une" -#: admin/history_rvy.php:654 msgid "Page Template" msgstr "Modèle de page" -#: admin/history_rvy.php:534 msgid "Ping Status" msgstr "État du ping" -#: admin/history_rvy.php:533 msgid "Comment Status" msgstr "État du commentaire" -#: admin/history_rvy.php:532 msgid "Menu Order" msgstr "Ordre du menu" -#: admin/history_rvy.php:531 msgid "Post Parent" msgstr "Article Parent" -#: admin/history_rvy.php:530 msgid "Post Date" msgstr "Date de l'article" -#. translators: %s: post title -#: admin/history_rvy.php:136 msgid "Compare %s of “%s”" msgstr "Comparez %s de “%s&s”" -#. translators: %s: post title -#: admin/class-list-table_rvy.php:1069 msgid "Compare Changes" msgstr "Comparer les modifications" -#. translators: %s: post title -#: admin/class-list-table_rvy.php:1057 msgid "Preview Revision" msgstr "Révision d’aperçu" -#. translators: %s: post title -#: admin/class-list-table_rvy.php:1041 msgid "Delete Revision" msgstr "Supprimer Revision" -#. translators: 1: month name, 2: 4-digit year -#: admin/class-list-table_rvy.php:822 msgctxt "MonthName 4-DigitYear" msgid "%1$s %2$d" msgstr "%1$s %2$d" -#: admin/class-list-table_rvy.php:809 msgid "All dates" msgstr "Toutes les dates" -#: admin/class-list-table_rvy.php:807 msgid "Filter by date" msgstr "Filtrer par date" -#: admin/class-list-table_rvy.php:694 msgid "All %s" msgstr "Tous %s" -#: admin/class-list-table_rvy.php:659 msgid "%sMy Published Posts%s(%s)" msgstr "%sMy Publications%s(%s)" -#: admin/class-list-table_rvy.php:627 msgid "%sMy Revisions%s(%s)" msgstr "%sMy Révisions%s(%s)" -#: admin/class-list-table_rvy.php:477 msgid "History" msgstr "Historique" -#. translators: %s: post title -#: admin/class-list-table_rvy.php:476 msgid "Compare Past Revisions" msgstr "Comparer les révisions passées" -#. translators: %s: post title -#: admin/class-list-table_rvy.php:453 msgid "View published post" msgstr "Voir le post publié" -#. translators: %s: post title -#: admin/class-list-table_rvy.php:444 msgid "View only revisions of %s" msgstr "Afficher uniquement les révisions de %s" -#: admin/class-list-table_rvy.php:407 admin/history_rvy.php:771 msgid "No author" msgstr "aucun auteur" -#: admin/class-list-table_rvy.php:360 msgid "Requested publication: %s" msgstr "Publication demandée : %s" -#: admin/class-list-table_rvy.php:357 msgid "Scheduled publication: %s" msgstr "Publication planifiée : %s" -#: admin/class-list-table_rvy.php:350 admin/class-list-table_rvy.php:970 msgid "Y/m/d g:i a" msgstr "Y/m/d g:i a" -#: admin/class-list-table_rvy.php:339 admin/class-list-table_rvy.php:962 msgid "Y/m/d g:i:s a" msgstr "Y/m/d g:i:s a" -#: admin/class-list-table_rvy.php:298 msgid "Post Author" msgstr "Auteur de l’article" -#: admin/class-list-table_rvy.php:297 msgid "Published Post" msgstr "Publié Post" -#: admin/class-list-table_rvy.php:286 msgid "Submission" msgstr "Soumission" -#: admin/class-list-table_rvy.php:285 msgid "Revised By" msgstr "Révisé par" -#: admin/class-list-table_rvy.php:284 msgid "Post Type" msgstr "Type d'article" -#: admin/class-list-table_rvy.php:283 msgid "Status" msgstr "Statut" -#: admin/class-list-table_rvy.php:282 msgid "Revision" msgstr "Révision" -#: admin/admin_lib-mu_rvy.php:23 msgid "Network Defaults" msgstr "Paramètres par défaut réseau" -#: admin/admin_lib-mu_rvy.php:12 msgid "Network Settings" msgstr "Paramètres du réseau" -#: admin/admin-dashboard_rvy.php:37 msgid "View %s" msgstr "Voir %s" -#: admin/admin-dashboard_rvy.php:30 msgid "%1$s %2$s Revisions" msgstr "%1$s %2$s Révisions" -#: admin/admin-dashboard_rvy.php:28 msgid "%1$s %2$s Revision" msgstr "%1$s %2$s Révision" -#: admin/agents_checklist_rvy.php:130 msgid "unselect" msgstr "déselectionner" -#: admin/agents_checklist_rvy.php:125 msgid "select" msgstr "sélectionner" -#: admin/agents_checklist_rvy.php:116 msgid "filter:" msgstr "filtrer:" -#: admin/agents_checklist_rvy.php:98 msgid "show eligible users (%d)" msgstr "afficher les utilisateurs admissibles (%d)" -#: admin/agents_checklist_rvy.php:98 msgid "show current users (%d)" msgstr "afficher les utilisateurs courants (%d)" -#: admin/agents_checklist_rvy.php:43 msgid "Enter additional User Names or IDs (comma-separate)" msgstr "Entrez les noms d'utilisateur additionnels ou leurs ID (séparé par une virgule)" -#: admin/revisions.php:242 msgid "no %s revisions available." msgstr "aucune révision %s disponible." -#: admin/revisions.php:227 msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" -#: admin/revisions.php:215 msgid "Past Revisions" msgstr "Révisions antérieures" -#: admin/revisions.php:150 msgid "The requested revision does not exist." msgstr "La révision demandée n'existe pas." -#: admin/revisions.php:124 msgid "Revisions of %s" msgstr "Révisions de %s" -#: admin/revisions.php:62 msgid "Past" msgstr "antérieure" -#: admin/revisions.php:56 msgid "No revision specified." msgstr "Aucune révision spécifié." -#: admin/revisions.php:20 msgid "Note: For visual display of revisions, add the following code to foliopress-wysiwyg.php:
      if ( strpos( $_SERVER['REQUEST_URI'], 'admin.php?page=rvy-revisions' ) ) return;" msgstr "Remarque : Pour l’affichage visuel des révisions, ajoutez le code suivant à foliopress-wysiwyg.php :
    si ( strpos( $_SERVER['REQUEST_URI'], 'admin.php?page=rvy-revisions') ) de retour;" -#: admin/filters-admin-ui-item_rvy.php:162 msgid "Publishers to Notify of Your Revision" msgstr "Éditeurs à avertir pour votre demande de révision" -#: admin/filters-admin-ui-item_rvy.php:123 admin/admin_rvy.php:551 msgid "Current Time" msgstr "Heure actuelle" -#: admin/filters-admin-ui-item_rvy.php:122 msgid "Submit Scheduled Revision" msgstr "Soumettre une révision planifiée" -#: admin/filters-admin-ui-item_rvy.php:120 -#: admin/filters-admin-ui-item_rvy.php:121 admin/post-edit-block-ui_rvy.php:153 -#: admin/post-edit-block-ui_rvy.php:154 msgid "Submit Revision" msgstr "Soumettre les changements" -#: admin/filters-admin-ui-item_rvy.php:38 admin/post-edit-block-ui_rvy.php:109 msgid "Schedule Revision" msgstr "Révision de l’horaire" -#: admin/revision-ui_rvy.php:497 msgid "Modified Date" msgstr "Date de modification" -#: admin/revision-ui_rvy.php:325 msgid "The revision will be deleted. Are you sure?" msgstr "La demande de révision sera suppirmée. Continuer?" -#: admin/revision-ui_rvy.php:225 msgid "%1$s (Publish date: %2$s)" msgstr "%1$s (Date de publication : %2$s)" -#: admin/revision-ui_rvy.php:223 msgid "%1$s (Requested publication: %2$s)" msgstr "%1$s (Publication demandée : %2$s)" -#: admin/revision-ui_rvy.php:219 msgctxt "revision schedule date format" msgid "j F, Y, g:i a" msgstr "j F, Y, g:i a" -#: admin/revision-ui_rvy.php:213 msgid "%1$s (Autosave)" msgstr "%1$s (Autosave)" -#: admin/revision-ui_rvy.php:209 msgid "%1$s (Current)" msgstr "%1$s (Courant)" -#. translators: revision date format, see http://php.net/date -#: admin/revision-ui_rvy.php:190 msgctxt "revision date format" msgid "j F, Y @ g:i a" msgstr "j F, Y @ g:i a" -#: admin/revision-ui_rvy.php:137 msgid "No email notifications will be sent." msgstr "Aucune notification par e-mail ne sera envoyée." -#: admin/revision-ui_rvy.php:135 msgid "Publishers will be notified (but cannot be selected here)." msgstr "Les éditeurs seront avisés (mais ne peuvent pas être sélectionnés ici)." -#: admin/options.php:801 msgid "Revert to Defaults" msgstr "Revenir aux valeurs par défaut" -#: admin/options.php:796 msgid "All settings in this form (including those on unselected tabs) will be reset to DEFAULTS. Are you sure?" msgstr "Tous les paramètres de ce formulaire (y compris ceux sur les onglets non sélectionnés) seront réinitialisés en DEFAULTS. Es-tu sûr?" -#: admin/options.php:724 msgctxt "option_tabname (explanatory note)" msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" -#: admin/options.php:714 msgid "Specify which PublishPress Revisions Settings to control network-wide. Unselected settings are controlled separately on each site." msgstr "Spécifiez quels paramètres de révisions PublishPress pour contrôler l’ensemble du réseau. Les paramètres non sélectionnés sont contrôlés séparément sur chaque site." -#: admin/options.php:707 msgid "network-wide control of \"%s\"" msgstr "contrôle à l’échelle du réseau des «s%»" -#: admin/options.php:674 admin/admin_rvy.php:793 msgid "Documentation" msgstr "Documentation" -#: admin/options.php:666 msgid "Show with message content" msgstr "Afficher avec le contenu du message" -#: admin/options.php:664 msgid "Show Notification Log / Buffer" msgstr "Afficher le journal des notifications / Tampon" -#: admin/options.php:655 msgid "Seconds until next buffer processing time: %d" msgstr "Secondes jusqu’au temps de traitement de la mémoire tampon suivante : %d" -#: admin/options.php:648 msgid "Sent in last day: %d / %d" msgstr "Envoyé le dernier jour: %d / %d" -#: admin/options.php:647 msgid "Sent in last hour: %d / %d" msgstr "Envoyé dans la dernière heure: %d / %d" -#: admin/options.php:646 msgid "Sent in last minute: %d / %d" msgstr "Envoyé à la dernière minute : %d / %d" -#: admin/options.php:640 msgid "Truncate Notification Log" msgstr "Journal des notifications tronquées" -#: admin/options.php:634 msgid "Purge Notification Buffer" msgstr "Tampon de notification de purge" -#: admin/options.php:605 msgid "Notification Log" msgstr "Journal de notification" -#: admin/options.php:577 msgid "Notification Buffer" msgstr "Tampon de notification" -#: admin/options.php:562 msgid "To avoid notification failures, buffer emails for delayed sending once minute, hour or day limits are exceeded" msgstr "Pour éviter les échecs de notification, les e-mails tampon s’appliquant aux envois retardés une fois minutes, heures ou jours sont dépassés" -#: admin/options.php:554 msgid "Note: \"by default\" means Pending Revision creators can customize email notification recipients before submitting. For more flexibility in moderation and notification, install the %1$s PressPermit Pro%2$s plugin." msgstr "Remarque : « par défaut », les créateurs de révision en attente peuvent personnaliser les destinataires de notification par courriel avant de les soumettre. Pour plus de flexibilité dans la modération et la notification, installez le plugin %1$sPressPermit Pro%2$s " -#: admin/options.php:552 msgid "Note: \"by default\" means Pending Revision creators can customize email notification recipients before submitting. Eligibile \"Publisher\" email recipients are members of the Pending Revision Monitors group who also have the ability to publish the revision. If not explicitly defined, the Monitors group is all users with a primary WP role of Administrator or Editor." msgstr "Remarque : « par défaut », les créateurs de révision en attente peuvent personnaliser les destinataires de notification par courriel avant de les soumettre. Les destinataires de messagerie Eligibile « Publisher » sont membres du groupe Moniteurs de révision en attente qui ont également la possibilité de publier la révision. S’il n’est pas défini explicitement, le groupe Moniteurs est tous les utilisateurs ayant un rôle WP principal d’administrateur ou d’éditeur." -#: admin/options.php:487 admin/options.php:505 msgid "Always" msgstr "Toujours" -#: admin/options.php:487 admin/options.php:505 msgid "By default" msgstr "Par défaut" -#: admin/options.php:487 admin/options.php:505 msgid "Never" msgstr "Jamais" -#: admin/options.php:478 admin/options.php:535 msgid "select recipients" msgstr "sélectionner des destinataires" -#: admin/options.php:462 msgid "Regenerate revision storage flags (for Revision Queue listing)" msgstr "Régénérer les indicateurs de stockage de révision (pour la liste de la file d’attente de révision)" -#: admin/options.php:457 msgid "Show descriptive captions for PublishPress Revisions settings" msgstr "Afficher les légendes descriptives pour les paramètres De publishPress Revisions" -#: admin/options.php:451 msgid "This may improve compatibility with some plugins." msgstr "Cela peut améliorer la compatibilité avec certains plugins." -#: admin/options.php:448 msgid "This restriction applies to users who are not full editors for the post type. To enable a role, give it the list_others_revisions capability." msgstr "Cette restriction s’applique aux utilisateurs qui ne sont pas des éditeurs complets pour le type de publication. Pour activer un rôle, donnez-lui la list_others_revisions capacité." -#: admin/options.php:445 msgid "This restriction applies to users who are not full editors for the post type. To enable a role, give it the edit_others_revisions capability." msgstr "Cette restriction s’applique aux utilisateurs qui ne sont pas des éditeurs complets pour le type de publication. Pour activer un rôle, donnez-lui la edit_others_revisions capacité." -#: admin/options.php:436 msgid "For compatibility with Advanced Custom Fields, Beaver Builder and WPML, upgrade to PublishPress Revisions Pro." msgstr "Pour la compatibilité avec Advanced Custom Fields, Beaver Builder et WPML, passez à PublishPress Revisions Pro." -#: admin/options.php:416 msgid "If disabled, Compare screen links to Revision Preview for approval" msgstr "Si désactivé, comparer les liens d’écran vers Revision Preview pour approbation" -#: admin/options.php:406 msgid "Some themes or plugins may require Revision Slug or Revision ID link type for proper template loading and field display." msgstr "Certains thèmes ou plugins peuvent nécessiter le type de lien Révision Slug ou Revision ID pour le chargement de modèle et l’affichage du champ appropriés." -#: admin/options.php:395 msgid "Revision ID only" msgstr "ID de révision uniquement" -#: admin/options.php:395 msgid "Revision Slug" msgstr "Revision Slug" -#: admin/options.php:395 msgid "Published Post Slug" msgstr "Publié Post Slug" -#: admin/options.php:383 msgid "For themes that block revision preview, hide preview links from non-Administrators" msgstr "Pour les thèmes qui bloquent l’aperçu de révision, masquer les liens d’aperçu des non-Administrateurs" -#: admin/options.php:367 msgid "When a pending revision is published, also update the publish date." msgstr "Lorsqu’une révision en attente est publiée, mettez également à jour la date de publication." -#: admin/options.php:361 msgid "Enable Contributors to submit revisions to their own published content. Revisors and users who have the edit_others (but not edit_published) capability for the post type can submit revisions to other user's content. These Pending Revisions are listed in %sRevision Queue%s." msgstr "Permettre aux contributeurs de soumettre des révisions à leur propre contenu publié. Les réviseurs et les utilisateurs qui ont la capacité edit_others (mais pas edit_published) pour le type de publication peuvent soumettre des révisions au contenu d’un autre utilisateur. Ces révisions en attente sont répertoriées dans %sRevision Queue%s." -#: admin/options.php:343 msgid "Publish scheduled revisions asynchronously, via a secondary http request from the server. This is usually best since it eliminates delay, but some servers may not support it." msgstr "Publiez les révisions planifiées de façon asynchrone, via une demande http secondaire du serveur. C’est généralement mieux car il élimine le retard, mais certains serveurs peuvent ne pas le prendre en charge." -#: admin/options.php:340 msgid "When a scheduled revision is published, also update the publish date." msgstr "Lorsqu’une révision planifiée est publiée, mettez également à jour la date de publication." -#: admin/options.php:337 msgid "If a currently published post or page is edited and a future date set, the change will not be applied until the selected date." msgstr "Si une publication ou une page actuellement publiée est modifiée et qu’une date future est définie, la modification ne sera pas appliquée avant la date sélectionnée." -#: admin/options.php:316 msgid "If checked, users lacking site-wide publishing capabilities will also be checked for the edit_others_drafts capability" msgstr "S’ils sont vérifiés, les utilisateurs qui n’ont pas de capacités de publication à l’échelle du site seront également vérifiés pour la capacité edit_others_drafts" -#: admin/options.php:311 msgid "The user role \"Revisor\" role is now available. Include capabilities for all custom post types in this role?" msgstr "Le rôle utilisateur \" Revisor \" est maintenant disponible. Inclure des fonctionnalités pour tous les types de publication personnalisés dans ce rôle ?" -#: admin/options.php:279 msgid "Note that %1$s network-wide settings%2$s may also be available." msgstr "Notez que des paramètres à l’échelle du réseau de %1$speuvent également%2$s être disponibles." -#: admin/options.php:265 msgid "Here you can change the default value for settings which are controlled separately on each site." msgstr "Ici, vous pouvez modifier la valeur par défaut pour les paramètres qui sont contrôlés séparément sur chaque site." -#: admin/options.php:263 msgid "Use this tab to make NETWORK-WIDE changes to PublishPress Revisions settings. %s" msgstr "Utilisez cet onglet pour apporter des modifications NETWORK-WIDE aux paramètres De révisions PublishPress. %s" -#: admin/options.php:262 msgid "You can also specify %1$sdefaults for site-specific settings%2$s." msgstr "Vous pouvez également spécifier %1$sdefaults pour les paramètres spécifiques au site%2$s." -#: admin/options.php:225 msgid "These are the default settings for options which can be adjusted per-site." msgstr "Il s’agit des paramètres par défaut pour les options qui peuvent être ajustées par site." -#: admin/options.php:211 admin/options.php:792 msgid "Update »" msgstr "Mettre à jour »" -#: admin/options.php:205 admin/admin_rvy.php:638 msgid "PublishPress Revisions Settings" msgstr "Paramètres des révisions PublishPress" -#: admin/options.php:203 msgid "PublishPress Revisions Site Settings" msgstr "Paramètres du site PublishPress Revisions" -#: admin/options.php:201 admin/admin_lib-mu_rvy.php:23 msgid "PublishPress Revisions Network Defaults" msgstr "PublishPress Revisions Network Defaults" -#: admin/options.php:199 admin/admin_lib-mu_rvy.php:12 msgid "PublishPress Revisions Network Settings" msgstr "Publier les révisionspresses Paramètres du réseau" -#: admin/options.php:141 msgid "Email Editors and Administrators when a Pending Revision is approved" msgstr "Éditeurs et administrateurs de messagerie lorsqu’une révision en attente est approuvée" -#: admin/options.php:140 msgid "Email Editors and Administrators when a Scheduled Revision is published" msgstr "Éditeurs et administrateurs de messagerie lorsque une révision planifiée est publiée" -#: admin/options.php:139 msgid "Email Editors and Administrators when a Pending Revision is submitted" msgstr "Éditeurs et administrateurs de messagerie lorsqu’une révision en attente est soumise" -#: admin/options.php:137 msgid "Email designated Publishers when a Pending Revision is approved" msgstr "Envoyer un courriel aux éditeurs désignés lorsqu’une révision en attente est approuvée" -#: admin/options.php:136 msgid "Email designated Publishers when a Scheduled Revision is published" msgstr "Envoyer un courriel aux éditeurs désignés lors de la publication d’une révision planifiée" -#: admin/options.php:135 msgid "Email designated Publishers when a Pending Revision is submitted" msgstr "Envoyer un courriel aux éditeurs désignés lorsqu’une révision en attente est soumise" -#: admin/options.php:131 msgid "Approve Button on Compare Revisions screen" msgstr "Bouton Approuver sur l’écran Comparer les révisions" -#: admin/options.php:130 msgid "Preview Link Type" msgstr "Type de lien d’aperçu" -#: admin/options.php:129 msgid "Show Preview Links" msgstr "Afficher les liens d’aperçu" -#: admin/options.php:127 msgid "Prevent Revisors from editing other user's drafts" msgstr "Empêcher les réviseurs d’éditer d’autres brouillons utilisateur-apos;s" -#: admin/options.php:126 msgid "All custom post types available to Revisors" msgstr "Tous les types de publication personnalisés disponibles pour Revisors" -#: admin/options.php:125 msgid "Enable notification buffer" msgstr "Activer la mémoire tampon de notification" -#: admin/options.php:124 msgid "Email the Revisor when a Scheduled Revision is published" msgstr "Envoyer un courriel au Réviseur lorsqu’une révision planifiée est publiée" -#: admin/options.php:123 msgid "Email the original Author when a Scheduled Revision is published" msgstr "Envoyer un courriel à l’auteur d’origine lorsqu’une révision planifiée est publiée" -#: admin/options.php:122 msgid "Email the Revisor when a Pending Revision is approved" msgstr "Envoyer un courriel au Réviseur lorsqu’une révision en attente est approuvée" -#: admin/options.php:121 msgid "Email the original Author when a Pending Revision is approved" msgstr "Envoyer un courriel à l’auteur d’origine lorsqu’une révision en attente est approuvée" -#: admin/options.php:120 msgid "Email original Author when a Pending Revision is submitted" msgstr "Envoyer un message d’auteur original lorsqu’une révision en attente est soumise" -#: admin/options.php:118 admin/options.php:119 msgid "Update Publish Date" msgstr "Mettre à jour la date de publication" -#: admin/options.php:117 msgid "Asynchronous Publishing" msgstr "Éditions asynchrones" -#: admin/options.php:116 msgid "Strip html tags out of difference display" msgstr "Bandez les balises html hors de l’affichage de différence" -#: admin/options.php:115 msgid "Revision publication triggers API actions to mimic post update" msgstr "La publication de révision déclenche des actions d’API pour imiter la mise à jour post" -#: admin/options.php:114 msgid "Prevent Revisors from viewing others' revisions" msgstr "Empêcher les réviseurs de consulter les autres; révisions" -#: admin/options.php:113 msgid "Prevent Revisors from editing others' revisions" msgstr "Empêcher les réviseurs d’éditer d’autres; les révisions" -#: admin/options.php:112 msgid "Enable Scheduled Revisions" msgstr "Activer les révisions planifiées" -#: admin/options.php:111 msgid "Enable Pending Revisions" msgstr "Activer les révisions en attente" -#: admin/options.php:105 msgid "Email Notification" msgstr "Notification par courriel" -#: admin/options.php:104 msgid "Revision Options" msgstr "Options de révision" -#: admin/options.php:103 msgid "Preview / Approval" msgstr "Aperçu / Approbation" -#: admin/options.php:100 msgid "Role Definition" msgstr "Définition des rôles" -#: admin/options.php:96 msgid "Setting Scope" msgstr "Définition de l’étendue" -#: admin/options.php:96 admin/admin_rvy.php:638 msgid "Settings" msgstr "Paramètres" -#: admin/post-edit_rvy.php:325 msgid "%sPending Revisions: %s" msgstr "%sPending Revisions : %s" -#: admin/post-edit_rvy.php:304 msgid "%sScheduled Revisions: %s" msgstr "%sScheduled Revisions: %s" -#: admin/post-edit_rvy.php:222 msgid "Compare this revision to published copy, or to other revisions" msgstr "Comparez cette révision à la copie publiée ou à d’autres révisions" -#: admin/post-edit_rvy.php:221 admin/post-edit_rvy.php:316 -#: admin/post-edit_rvy.php:337 admin/class-list-table_rvy.php:1070 -#: admin/PostEditSubmitMetabox.php:74 msgctxt "revisions" msgid "Compare" msgstr "Comparer" -#: admin/post-edit_rvy.php:212 admin/post-edit-block-ui_rvy.php:88 msgid "Approve saved changes" msgstr "Approuver les modifications enregistrées" -#: admin/post-edit_rvy.php:109 msgid "Edit %s Revision" msgstr "Modifier la révision de %s" -#: admin/post-edit_rvy.php:104 admin/post-edit-block-ui_rvy.php:55 msgid "View unsaved changes" msgstr "Afficher les modifications non enregistrées" -#: admin/post-edit_rvy.php:100 admin/post-edit_rvy.php:265 -#: admin/PostEditSubmitMetabox.php:177 admin/post-edit-block-ui_rvy.php:47 msgid "View saved revision" msgstr "Afficher la révision enregistrée" -#: admin/post-edit_rvy.php:97 admin/post-edit_rvy.php:263 -#: admin/PostEditSubmitMetabox.php:174 admin/post-edit-block-ui_rvy.php:44 msgid "View / moderate saved revision" msgstr "Afficher / révision modérée enregistrée" -#: admin/post-edit_rvy.php:96 admin/post-edit_rvy.php:249 -#: admin/history_rvy.php:1036 admin/PostEditSubmitMetabox.php:173 -#: admin/post-edit-block-ui_rvy.php:43 -msgid "Preview / Approve" +msgid "View / Approve" msgstr "Afficher / Approuver" -#: admin/post-edit_rvy.php:96 admin/post-edit_rvy.php:249 -#: admin/PostEditSubmitMetabox.php:173 admin/post-edit-block-ui_rvy.php:43 msgid "View / Publish" msgstr "Afficher / Publier" -#: admin/post-edit_rvy.php:37 msgid "Revision updated." msgstr "Révision mise à jour." -#: admin/post-edit_rvy.php:35 msgid "Revision updated. %sView Preview%s" msgstr "Révision mise à jour. %sView Preview%s" -#: admin/admin-init_rvy.php:265 msgid "Dismiss" msgstr "Rejeter" -#: admin/admin-init_rvy.php:239 msgid "Revisionary is now PublishPress Revisions! Note the new Revisions menu and %sRevision Queue%s screen, where Pending and Scheduled Revisions are listed. %s" msgstr "Revisionary est maintenant PublishPress Révisions! Notez le nouveau menu Révisions et l’écran %sRevision Queue%s, où sont répertoriés les révisions en attente et planifiées. %s" -#: admin/admin-init_rvy.php:229 msgid "Welcome to PublishPress Revisions! Here's how it works:%s
  • \"Contributors\" can submit revisions to their published posts.
  • \"Revisors\" can submit revisions to posts and pages published by others.
  • \"Authors\", \"Editors\" and \"Administrators\" can approve revisions or schedule their own revisions.
  • %s%s%s" msgstr "Bienvenue à PublishPress Révisions! Voici comment cela fonctionne:%s
  • Les « contributeurs » peuvent soumettre des révisions à leurs publications.
  • Les « reviseurs » peuvent soumettre des révisions aux publications et aux pages publiées par d’autres.
  • Les « auteurs », les « éditeurs » et les « administrateurs » peuvent approuver les révisions ou planifier leurs propres révisions.
  • %s%s%s" -#: admin/admin-init_rvy.php:223 msgid "For more details on setting up PublishPress Revisions, %sread this guide%s." msgstr "Pour plus de détails sur la configuration des révisions PublishPress, %sread this guide%s." -#: admin/admin-init_rvy.php:151 msgid "Sorry, you are not allowed to delete this revision." msgstr "Désolé, vous n’êtes pas autorisé à supprimer cette révision." -#: admin/admin-init_rvy.php:116 msgid "Sorry, you are not allowed to approve this revision." msgstr "Désolé, vous n’êtes pas autorisé à approuver cette révision." -#: revision-workflow_rvy.php:249 msgid "Return to Edit %s" msgstr "Retour à Modifier %s" -#: revision-workflow_rvy.php:245 msgid "Return to Edit Pages" msgstr "Retour à la modification des pages" -#: revision-workflow_rvy.php:242 msgid "Return to Edit Posts" msgstr "Retour à la modification des articles" -#: revision-workflow_rvy.php:221 msgid "Go back to submit another revision" msgstr "Revenir pour soumettre une autre révision" -#: revision-workflow_rvy.php:200 msgid "It will be published when an editor approves it." msgstr "Il sera publié lorsqu’un éditeur l’approuvera." -#: revision-workflow_rvy.php:198 msgid "If approved by an editor, it will be published on the date you specified." msgstr "S’il est approuvé par un éditeur, il sera publié à la date que vous avez spécifiée." -#: revision-workflow_rvy.php:195 msgid "Your modification has been saved for editorial review." msgstr "Votre modification a été enregistrée pour révision." -#: revision-workflow_rvy.php:186 revision-workflow_rvy.php:225 msgid "View Revision Queue" msgstr "Afficher la file d’attente de révision" -#: revision-workflow_rvy.php:184 msgid "Go back to schedule another revision" msgstr "Revenir à planifier une autre révision" -#: revision-workflow_rvy.php:182 revision-workflow_rvy.php:217 msgid "Keep editing the revision" msgstr "Continuer à modifier la révision" -#: revision-workflow_rvy.php:175 revision-workflow_rvy.php:212 msgid "Preview it" msgstr "Prévisualiser" -#: revision-workflow_rvy.php:169 msgid "Your modification was saved as a Scheduled Revision." msgstr "Votre modification a été enregistrée en tant que Révision planifiée" -#: revision-workflow_rvy.php:138 msgid "Sorry, an error occurred while attempting to save your revision." msgstr "Désolé, une erreur s’est produite lors de la tentative d’enregistrement de votre révision." -#: revision-workflow_rvy.php:50 msgid "Edit Revision: " msgstr "Modifier la révision :" -#: revision-workflow_rvy.php:48 msgid "Revision Queue: " msgstr "File d’attente de révision :" -#: revision-workflow_rvy.php:45 msgid "Preview and Approval: " msgstr "Aperçu et approbation :" -#: revision-workflow_rvy.php:38 msgid "It was submitted by %1$s." msgstr "Envoyé par %1$s." -#: revision-workflow_rvy.php:36 msgid "A pending revision to the %1$s \"%2$s\" has been submitted." msgstr "Une demande de révision pour %1$s \"%2$s\" a été envoyée." -#: revision-workflow_rvy.php:34 msgid "[%s] Pending Revision Notification" msgstr "[%s] Notification pour révision en attente" -#: revision-creation_rvy.php:705 msgid "Invalid page template." msgstr "Modèle de page invalide." -#. translators: %s: taxonomy name -#: revision-creation_rvy.php:626 msgid "Invalid taxonomy: %s" msgstr "Taxonomie non valide : %s" -#: revision-creation_rvy.php:585 msgid "Could not insert revision into the database" msgstr "Impossible d’insérer une révision dans la base de données" -#: revision-creation_rvy.php:562 msgid "Scheduled Revision Created" msgstr "Révision planifiée créée" -#: revision-creation_rvy.php:525 msgid "Revision Scheduling Error" msgstr "Erreur de planification de révision" -#: revision-creation_rvy.php:524 msgid "Sorry, an error occurred while attempting to schedule your revision!" msgstr "Désolé, une erreur s’est produite lors de la tentative de planifier votre révision!" -#: revision-creation_rvy.php:378 msgid "Pending Revision Created" msgstr "Demande de révision créée" -#: revision-creation_rvy.php:285 msgid "Revision Submission Error" msgstr "Erreur de soumission de révision" -#: revision-creation_rvy.php:284 msgid "Sorry, an error occurred while attempting to submit your revision!" msgstr "Désolé, une erreur s’est produite lors de la tentative de soumettre votre révision!" -#: revision-creation_rvy.php:47 msgid "Autosave disabled when editing a published post/page to create a pending revision." msgstr "Autoparter désactivé lors de la modification d’une publication/page publiée pour créer une révision en attente." -#: rvy_init.php:737 msgid "Revision Workflow" msgstr "Flux de travail de révision" -#: rvy_init.php:310 msgctxt "User role" msgid "Revisor" msgstr "Revisor" -#: rvy_init.php:298 msgid "Revisor" msgstr "Réviseur" -#: rvy_init.php:162 admin/class-list-table_rvy.php:323 msgid "Scheduled" msgstr "Planifié" -#: rvy_init.php:162 admin/options.php:101 -#: admin/filters-admin-ui-item_rvy.php:169 admin/revisions.php:221 msgid "Scheduled Revisions" msgstr "Révisions programmées" -#: rvy_init.php:161 msgid "Scheduled Revision" msgstr "Révision planifiée" -#: rvy_init.php:151 admin/class-list-table_rvy.php:320 msgid "Pending" msgstr "En attente" -#: rvy_init.php:151 admin/options.php:102 -#: admin/filters-admin-ui-item_rvy.php:156 admin/revisions.php:218 msgid "Pending Revisions" msgstr "Révisions en attente" -#: rvy_init.php:151 rvy_init.php:162 admin/edit-revision-ui_rvy.php:15 -#: admin/edit-revision-ui_rvy.php:16 admin/PostEditSubmitMetabox.php:136 msgid "Update Revision" msgstr "Mettre à jour la révision" -#: rvy_init.php:151 rvy_init.php:162 admin/post-edit-block-ui_rvy.php:117 msgid "Save Revision" msgstr "Enregistrer la révision" -#: rvy_init.php:151 rvy_init.php:162 msgid "Publish Revision" msgstr "Publier la révision" -#: rvy_init.php:150 admin/post-edit-block-ui_rvy.php:112 -#: admin/admin_rvy.php:296 msgid "Pending Revision" msgstr "Révision en attente" -#: rvy_init.php:72 msgid "Every 2 Minutes" msgstr "Toutes les 2 minutes" -#: revisionary_main.php:399 msgid "Invalid featured media ID." msgstr "ID de média en vedette non valide." -#: lib/debug.php:182 msgid "%1$s queries in %2$s seconds. %3$s MB used." msgstr "%1$s requêtes en %2$s secondes. %3$s Mo utilisé." -#: front_rvy.php:271 msgid "This is the Current Revision. %s" msgstr "Il s’agit de la révision en cours. %s" -#: front_rvy.php:259 msgid "This is a Past Revision (from %s). %s %s" msgstr "Il s’agit d’une révision passée (à partir de %s). %s %s" -#: front_rvy.php:258 msgid "Restore" msgstr "Restaurer" -#: front_rvy.php:251 msgid "This is a Scheduled Revision (for publication on %s). %s %s %s" msgstr "Il s’agit d’une révision planifiée (pour publication sur %s). %s %s %s" -#: front_rvy.php:243 msgid "Reload" msgstr "Rafraichir" -#: front_rvy.php:242 msgid "This revision is very new, preview may not be synchronized with theme." msgstr "Cette révision est très nouvelle, l’aperçu peut ne pas être synchronisé avec le thème." -#: front_rvy.php:232 msgid "This is a Pending Revision. %s %s %s" msgstr "Il s’agit d’une révision en attente. %s %s %s" -#: front_rvy.php:231 front_rvy.php:249 msgid "Publish now" msgstr "Publier maintenant" -#: front_rvy.php:228 msgid "This is a Pending Revision (requested publish date: %s). %s %s %s" msgstr "Il s’agit d’une révision en attente (date de publication demandée : %s). %s %s %s " -#: front_rvy.php:227 admin/post-edit_rvy.php:212 admin/history_rvy.php:1036 msgid "Approve" msgstr "Approuver" -#: front_rvy.php:191 msgid "Edit" msgstr "Modifier" -#: front_rvy.php:182 msgid "%sView Published Post%s" msgstr "%sView Published Post%s" -#: front_rvy.php:172 msgid "%sCompare%s%sView Published Post%s" msgstr "%sCompare%s%sView Published Post%s" -#. Author URI of the plugin msgid "https://publishpress.com" msgstr "https://publishpress.com" -#. Author of the plugin msgid "PublishPress" msgstr "PublishPress" -#. Description of the plugin msgid "Maintain published content with teamwork and precision using the Revisions model to submit, approve and schedule changes." msgstr "Maintenir le contenu publié avec le travail d’équipe et la précision à l’aide du modèle révisions pour soumettre, approuver et planifier les changements." -#. Plugin URI of the plugin msgid "https://publishpress.com/revisionary/" msgstr "https://publishpress.com/revisionary/" -#. Plugin Name of the plugin msgid "PublishPress Revisions" -msgstr "Révisions PublishPress" \ No newline at end of file +msgstr "Révisions PublishPress" diff --git a/languages/revisionary-it_IT.mo b/languages/revisionary-it_IT.mo index 6c930f27e8c4e42830495172b878fd99cc92aacc..82a45061f45d28231a30b11e7dc7378170c543d0 100644 GIT binary patch literal 537 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\n" +"Language-Team: \n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: GlotPress/2.4.0-alpha\n" -"Language: it\n" -"Project-Id-Version: PublishPress - PublishPress Revisions\n" +"X-Generator: Poedit 2.4.3\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPath-1: admin\n" +"X-Poedit-SearchPath-2: classes\n" +"X-Poedit-SearchPath-3: includes\n" -#: revisionary.php:168 msgid "PublishPress Revisions requires WordPress version %s or higher." msgstr "PublishPress Revisions richiede WordPress versione %s o superiore." -#: revisionary.php:161 msgid "PublishPress Revisions requires PHP version %s or higher." msgstr "PublishPress Revisions richiede la versione PHP %s o successiva." -#: revisionary.php:85 revisionary.php:143 msgid "Another copy of PublishPress Revisions (or Revisionary) is already activated (version %1$s)" msgstr "Un'altra copia di PublishPress Revisions (o Revisionary) è già attivata (versione %1$s)" -#: revisionary.php:83 revisionary.php:141 msgid "Another copy of PublishPress Revisions (or Revisionary) is already activated (version %1$s: \"%2$s\")" msgstr "Un'altra copia di PublishPress Revisions (o Revisionary) è già attivata (versione %1$s: \"%2s\")" -#: revisionary.php:67 msgid "This plugin can be deleted." msgstr "Questo plugin può essere eliminato." -#: admin/revision-action_rvy.php:878 msgid "A scheduled revision to your %1$s \"%2$s\" has been published." msgstr "Una revisione pianificata per il %1$s \"%2$s\" è stata pubblicata." -#: admin/revision-action_rvy.php:856 msgid "The scheduled revision you submitted for the %1$s \"%2$s\" has been published." msgstr "La revisione pianificata da voi inoltrata per il %1$s \"%2$s\" è stata pubblicata." -#: admin/revision-action_rvy.php:855 admin/revision-action_rvy.php:877 msgid "[%s] Scheduled Revision Publication Notice" msgstr "[%s] Notifica di Pubblicazione della Revisione pianificata" -#: admin/revision-action_rvy.php:221 msgid "The revision you submitted for the %1$s \"%2$s\" has been approved." msgstr "La revisione che hai inoltrato per il %1$s \"%2$s\" è stata approvata." -#: admin/revision-action_rvy.php:152 admin/revision-action_rvy.php:234 -#: admin/revision-action_rvy.php:859 admin/revision-action_rvy.php:884 -#: admin/revision-action_rvy.php:919 msgid "View it online: " msgstr "Visualizza in linea:" -#: admin/revision-action_rvy.php:150 admin/revision-action_rvy.php:232 msgid "Editor: " msgstr "Editore:" -#: admin/revision-action_rvy.php:147 admin/revision-action_rvy.php:229 msgid "Preview it here: " msgstr "Anteprima qui:" -#: admin/revision-action_rvy.php:143 admin/revision-action_rvy.php:225 msgid "It will be published on %s" msgstr "Sarà pubblicato il %s" -#: admin/revision-action_rvy.php:139 msgid "The submitter was %1$s." msgstr "E' stato inoltrato da %1$s." -#: admin/revision-action_rvy.php:136 msgid "A revision to your %1$s \"%2$s\" has been approved." msgstr "La revisione che hai inoltrato per il %1$s \"%2$s\" è stata approvata." -#: admin/revision-action_rvy.php:135 admin/revision-action_rvy.php:220 msgid "[%s] Revision Approval Notice" msgstr "[%s] Notifica di Approvazione di Revisione" -#: admin/admin_rvy.php:795 msgid "Contact" msgstr "Contatto" -#: admin/admin_rvy.php:795 msgid "Contact the PublishPress team" msgstr "Contatta il team PublishPress" -#: admin/admin_rvy.php:793 msgid "PublishPress Revisions Documentation" msgstr "Documentazione PublishPress Revisions" -#: admin/admin_rvy.php:791 msgid "About" msgstr "Info" -#: admin/admin_rvy.php:791 msgid "About PublishPress Revisions" msgstr "Informazioni sulle revisioni PublishPress" -#: admin/admin_rvy.php:780 msgid "If you like %s, please leave us a %s rating. Thank you!" msgstr "Se ti piace %s, ti preghiamo di lasciare una valutazione %s. Grazie!" -#: admin/admin_rvy.php:746 msgid "%s (revision)" msgstr "%s (revisione)" -#: admin/admin_rvy.php:645 admin/admin_rvy.php:646 msgid "Upgrade to Pro" msgstr "Aggiorna a Pro" -#: admin/admin_rvy.php:605 msgid "Revisions" msgstr "Revisioni" -#: admin/admin_rvy.php:490 msgid "Save as Pending Revision" msgstr "Salva come revisione in sospeso" -#: admin/admin_rvy.php:333 msgid "The revision was published." msgstr "La revisione è stata pubblicata." -#: admin/admin_rvy.php:330 msgid "The revision was scheduled for publication." msgstr "La revisione è stata prevista per la sua pubblicazione." -#: admin/admin_rvy.php:327 msgid "The revision was restored." msgstr "La revisione è stata ripristinata." -#: admin/admin_rvy.php:319 admin/admin_rvy.php:624 msgid "Revision Queue" msgstr "Coda revisioni" -#: admin/post-edit-block-ui_rvy.php:155 msgid "Workflow…" msgstr "Workflow…" -#: admin/post-edit-block-ui_rvy.php:134 msgid " %s Scheduled Revision" msgid_plural " %s Scheduled Revisions" msgstr[0] "%s Revisione programmata" msgstr[1] "%s Revisioni programmate" -#: admin/post-edit-block-ui_rvy.php:123 msgid " %s Pending Revision" msgid_plural " %s Pending Revisions" msgstr[0] "%s Revisione in sospeso" msgstr[1] "%s Revisioni in sospeso" -#: admin/post-edit-block-ui_rvy.php:115 msgid "Do not schedule current changes yet, but save to Revision Queue" msgstr "Non pianificare ancora le modifiche correnti, ma salva nella coda revisioni" -#: admin/post-edit-block-ui_rvy.php:113 admin/admin_rvy.php:493 msgid "Do not publish current changes yet, but save to Revision Queue" msgstr "Non pubblicare ancora le modifiche correnti, ma salva nella coda revisioni" -#: admin/post-edit-block-ui_rvy.php:85 msgid "Approve Revision" msgstr "Approva revisione" -#: admin/post-edit-block-ui_rvy.php:59 msgid " %s Revision Edit" msgid_plural " %s Revision Edits" msgstr[0] "%s Modifica revisione" msgstr[1] "%s Modifiche revisione" -#: admin/revision-queue_rvy.php:113 msgid "Revision Queue %s" msgstr "Coda revisioni %s" -#: admin/revision-queue_rvy.php:111 msgctxt "PublishedPostName (other filter captions)" msgid "Revision Queue for \"%s\"%s" msgstr "Coda revisioni per \"%s\"%s" -#: admin/revision-queue_rvy.php:103 admin/revision-queue_rvy.php:104 msgid "%sPost Author: %s" msgstr "%sPost Autore: %s" -#: admin/revision-queue_rvy.php:96 msgctxt "Posts / Pages / etc." msgid "of %s" msgstr "di %s" -#: admin/revision-queue_rvy.php:83 msgctxt "Author Name" msgid "%s: " msgstr "%s: " -#: admin/revision-queue_rvy.php:40 msgid "%s revision published." msgid_plural "%s revisions published." msgstr[0] "%s revisione pubblicata." msgstr[1] "%s revisioni pubblicate." -#: admin/revision-queue_rvy.php:39 msgid "%s revision approved." msgid_plural "%s revisions approved." msgstr[0] "%s revisione approvata." msgstr[1] "%s revisioni approvate." -#: admin/revision-queue_rvy.php:13 msgid "Pending Revisions and Scheduled Revisions are both disabled. See Revisions > Settings." msgstr "Le revisioni in sospeso e le revisioni programmate sono entrambe disabilitate. Vedere Revisioni > Impostazioni." -#: admin/revision-queue_rvy.php:9 msgid "You are not allowed to manage revisions." msgstr "Non è consentito gestire le revisioni." -#. translators: Publish box date formt, see http://php.net/date -#: admin/PostEditSubmitMetabox.php:343 msgid "M j, Y @ G:i" msgstr "M j, Y @ G:i" -#: admin/PostEditSubmitMetabox.php:273 msgid "Visibility:" msgstr "Visibilità:" -#: admin/PostEditSubmitMetabox.php:65 msgid "Your site is configured to keep only the last %s revisions." msgstr "Il sito è configurato per mantenere solo le ultime %s revisioni." -#: admin/PostEditSubmitMetabox.php:62 msgid "Revision Edits: %s" msgstr "Modifiche revisione: %s" -#: admin/history_rvy.php:1127 msgid "List" msgstr "Lista" -#: admin/history_rvy.php:1126 msgid "Manage" msgstr "Gestisci" -#: admin/history_rvy.php:1119 msgid "Preview / Restore" msgstr "Anteprima / Ripristino" -#: admin/history_rvy.php:1038 msgid "View" msgstr "Vedi" -#: admin/history_rvy.php:952 msgctxt "revision date short format" msgid "j M @ H:i" msgstr "j M @ H:i" -#: admin/history_rvy.php:951 msgid "M j, Y @ H:i" msgstr "M j, Y @ H:i" -#: admin/history_rvy.php:906 admin/admin_rvy.php:443 msgid "M j, Y @ g:i a" msgstr "M j, Y , g:i a" -#: admin/history_rvy.php:895 msgid "%s%s from now" msgstr "%s%s da oggi" -#: admin/history_rvy.php:890 msgid "Submitted " msgstr "Inviato " -#: admin/history_rvy.php:885 msgid "Requested for " msgstr "Richiesto per" -#: admin/history_rvy.php:880 msgid "Scheduled for " msgstr "Previsto per" -#: admin/history_rvy.php:667 msgid "Beaver Builder Settings" msgstr "Impostazioni di Beaver Builder" -#: admin/history_rvy.php:666 msgid "Beaver Builder Data" msgstr "Dati del generatore di castia" -#: admin/history_rvy.php:657 msgid "Featured Image" msgstr "Immagine in evidenza" -#: admin/history_rvy.php:654 msgid "Page Template" msgstr "Template di pagina" -#: admin/history_rvy.php:534 msgid "Ping Status" msgstr "Stato ping" -#: admin/history_rvy.php:533 msgid "Comment Status" msgstr "Stato del commento" -#: admin/history_rvy.php:532 msgid "Menu Order" msgstr "Ordine Menu" -#: admin/history_rvy.php:531 msgid "Post Parent" msgstr "Articolo genitore" -#: admin/history_rvy.php:530 msgid "Post Date" msgstr "Data di pubblicazione" -#. translators: %s: post title -#: admin/history_rvy.php:136 msgid "Compare %s of “%s”" msgstr "Confronta %s di “%s”" -#. translators: %s: post title -#: admin/class-list-table_rvy.php:1069 msgid "Compare Changes" msgstr "Confronta modifiche" -#. translators: %s: post title -#: admin/class-list-table_rvy.php:1057 msgid "Preview Revision" msgstr "Revisione anteprima" -#. translators: %s: post title -#: admin/class-list-table_rvy.php:1041 msgid "Delete Revision" msgstr "Elimina revisione" -#. translators: 1: month name, 2: 4-digit year -#: admin/class-list-table_rvy.php:822 msgctxt "MonthName 4-DigitYear" msgid "%1$s %2$d" msgstr "%1$s %2$d" -#: admin/class-list-table_rvy.php:809 msgid "All dates" msgstr "Tutte le date" -#: admin/class-list-table_rvy.php:807 msgid "Filter by date" msgstr "Filtra per data" -#: admin/class-list-table_rvy.php:694 msgid "All %s" msgstr "Tutti %s" -#: admin/class-list-table_rvy.php:659 msgid "%sMy Published Posts%s(%s)" msgstr "%sI miei post pubblicati%s(%s)" -#: admin/class-list-table_rvy.php:627 msgid "%sMy Revisions%s(%s)" msgstr "%sLe mie revisioni%s(%s)" -#: admin/class-list-table_rvy.php:477 msgid "History" msgstr "Cronologia" -#. translators: %s: post title -#: admin/class-list-table_rvy.php:476 msgid "Compare Past Revisions" msgstr "Confronta revisioni passate" -#. translators: %s: post title -#: admin/class-list-table_rvy.php:453 msgid "View published post" msgstr "Visualizza post pubblicati" -#. translators: %s: post title -#: admin/class-list-table_rvy.php:444 msgid "View only revisions of %s" msgstr "Visualizza solo le revisioni di %s" -#: admin/class-list-table_rvy.php:407 admin/history_rvy.php:771 msgid "No author" msgstr "Nessun Autore" -#: admin/class-list-table_rvy.php:360 msgid "Requested publication: %s" msgstr "Pubblicazione richiesta: %s" -#: admin/class-list-table_rvy.php:357 msgid "Scheduled publication: %s" msgstr "Pubblicazione pianificata: %s" -#: admin/class-list-table_rvy.php:350 admin/class-list-table_rvy.php:970 msgid "Y/m/d g:i a" msgstr "Y/m/d g:i a" -#: admin/class-list-table_rvy.php:339 admin/class-list-table_rvy.php:962 msgid "Y/m/d g:i:s a" msgstr "G/m/a g:i:s a" -#: admin/class-list-table_rvy.php:298 msgid "Post Author" msgstr "Autore Post" -#: admin/class-list-table_rvy.php:297 msgid "Published Post" msgstr "Pubblicazione Post" -#: admin/class-list-table_rvy.php:286 msgid "Submission" msgstr "Sottoscrizione" -#: admin/class-list-table_rvy.php:285 msgid "Revised By" msgstr "Rivisto da" -#: admin/class-list-table_rvy.php:284 msgid "Post Type" msgstr "Tipo di post" -#: admin/class-list-table_rvy.php:283 msgid "Status" msgstr "Stato" -#: admin/class-list-table_rvy.php:282 msgid "Revision" msgstr "Revisione" -#: admin/admin_lib-mu_rvy.php:23 msgid "Network Defaults" msgstr "Impostazioni predefinite di rete" -#: admin/admin_lib-mu_rvy.php:12 msgid "Network Settings" msgstr "Impostazioni di rete" -#: admin/admin-dashboard_rvy.php:37 msgid "View %s" msgstr "Visualizza %s" -#: admin/admin-dashboard_rvy.php:30 msgid "%1$s %2$s Revisions" msgstr "%1$s %2$s Revisioni" -#: admin/admin-dashboard_rvy.php:28 msgid "%1$s %2$s Revision" msgstr "%1$s %2$s Revisione" -#: admin/agents_checklist_rvy.php:130 msgid "unselect" msgstr "deseleziona" -#: admin/agents_checklist_rvy.php:125 msgid "select" msgstr "seleziona" -#: admin/agents_checklist_rvy.php:116 msgid "filter:" msgstr "filtra:" -#: admin/agents_checklist_rvy.php:98 msgid "show eligible users (%d)" msgstr "mostra utenti eleggibili (%d)" -#: admin/agents_checklist_rvy.php:98 msgid "show current users (%d)" msgstr "mostra utenti attuali (%d)" -#: admin/agents_checklist_rvy.php:43 msgid "Enter additional User Names or IDs (comma-separate)" msgstr "Inserire nomi utente o IDs (separare con una virgola)" -#: admin/revisions.php:242 msgid "no %s revisions available." msgstr "Nessuna %s revisione è disponibile" -#: admin/revisions.php:227 msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" -#: admin/revisions.php:215 msgid "Past Revisions" msgstr "Revisioni passate" -#: admin/revisions.php:150 msgid "The requested revision does not exist." msgstr "La revisione richiesta non esiste." -#: admin/revisions.php:124 msgid "Revisions of %s" msgstr "Revisioni di %s" -#: admin/revisions.php:62 msgid "Past" msgstr "Articolo" -#: admin/revisions.php:56 msgid "No revision specified." msgstr "Nessuna revisione specificata." -#: admin/revisions.php:20 msgid "Note: For visual display of revisions, add the following code to foliopress-wysiwyg.php:
      if ( strpos( $_SERVER['REQUEST_URI'], 'admin.php?page=rvy-revisions' ) ) return;" msgstr " Nota: Per la visualizzazione visiva delle revisioni, aggiungete il seguente codice a foliopress-wysiwyg.php:
      if ( strpos( $_SERVER['REQUEST_URI'], 'admin.php?page=rvy-revisions' ) ) return;" -#: admin/filters-admin-ui-item_rvy.php:162 msgid "Publishers to Notify of Your Revision" msgstr "I Pubblicatori notificano le vostre Revisioni" -#: admin/filters-admin-ui-item_rvy.php:123 admin/admin_rvy.php:551 msgid "Current Time" msgstr "Data attuale" -#: admin/filters-admin-ui-item_rvy.php:122 msgid "Submit Scheduled Revision" msgstr "Invia revisione programmata" -#: admin/filters-admin-ui-item_rvy.php:120 -#: admin/filters-admin-ui-item_rvy.php:121 admin/post-edit-block-ui_rvy.php:153 -#: admin/post-edit-block-ui_rvy.php:154 msgid "Submit Revision" msgstr "Invia revisione" -#: admin/filters-admin-ui-item_rvy.php:38 admin/post-edit-block-ui_rvy.php:109 msgid "Schedule Revision" msgstr "Pianifica revisione" -#: admin/revision-ui_rvy.php:497 msgid "Modified Date" msgstr "Data modificata" -#: admin/revision-ui_rvy.php:325 msgid "The revision will be deleted. Are you sure?" msgstr "Questa revisione sarà cancellata. Siete sicuri?" -#: admin/revision-ui_rvy.php:225 msgid "%1$s (Publish date: %2$s)" msgstr "%1$s (Data di pubblicazione: %2$s)" -#: admin/revision-ui_rvy.php:223 msgid "%1$s (Requested publication: %2$s)" msgstr "%1$s s (Pubblicazione richiesta: %2$s)" -#: admin/revision-ui_rvy.php:219 msgctxt "revision schedule date format" msgid "j F, Y, g:i a" msgstr "j F, Y, g:i a" -#: admin/revision-ui_rvy.php:213 msgid "%1$s (Autosave)" msgstr "%1$s (salvataggio automatico)" -#: admin/revision-ui_rvy.php:209 msgid "%1$s (Current)" msgstr "%1$s (corrente)" -#. translators: revision date format, see http://php.net/date -#: admin/revision-ui_rvy.php:190 msgctxt "revision date format" msgid "j F, Y @ g:i a" msgstr "j F, Y : g:i a" -#: admin/revision-ui_rvy.php:137 msgid "No email notifications will be sent." msgstr "Non verrà inviata alcuna notifica e-mail." -#: admin/revision-ui_rvy.php:135 msgid "Publishers will be notified (but cannot be selected here)." msgstr "Gli editori riceveranno una notifica (ma non potranno essere selezionati qui)." -#: admin/options.php:801 msgid "Revert to Defaults" msgstr "Ritorna al predefinito" -#: admin/options.php:796 msgid "All settings in this form (including those on unselected tabs) will be reset to DEFAULTS. Are you sure?" msgstr "Tutte le impostazioni in questo modulo (incluse quelle nelle schede non selezionate) saranno azzerate alle impostazioni predefinite. Siete sicuri?" -#: admin/options.php:724 msgctxt "option_tabname (explanatory note)" msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" -#: admin/options.php:714 msgid "Specify which PublishPress Revisions Settings to control network-wide. Unselected settings are controlled separately on each site." msgstr "Specificare quali impostazioni delle revisioni di PublishPress controllare a livello di rete. Le impostazioni non selezionate vengono controllate separatamente in ogni sito." -#: admin/options.php:707 msgid "network-wide control of \"%s\"" msgstr "controllo a livello di rete di \"%s\"" -#: admin/options.php:674 admin/admin_rvy.php:793 msgid "Documentation" msgstr "Documentazione" -#: admin/options.php:666 msgid "Show with message content" msgstr "Mostra con il contenuto del messaggio" -#: admin/options.php:664 msgid "Show Notification Log / Buffer" msgstr "Mostra registro notifiche / buffer" -#: admin/options.php:655 msgid "Seconds until next buffer processing time: %d" msgstr "Secondi fino al tempo di elaborazione del buffer successivo: %d" -#: admin/options.php:648 msgid "Sent in last day: %d / %d" msgstr "Inviato nell'ultimo giorno: %d / %d" -#: admin/options.php:647 msgid "Sent in last hour: %d / %d" msgstr "Inviato nell'ultima ora: %d / %d" -#: admin/options.php:646 msgid "Sent in last minute: %d / %d" msgstr "Inviato nell'ultimo minuto: %d / %d" -#: admin/options.php:640 msgid "Truncate Notification Log" msgstr "Troncamento registro notifiche" -#: admin/options.php:634 msgid "Purge Notification Buffer" msgstr "Elimina buffer di notifica" -#: admin/options.php:605 msgid "Notification Log" msgstr "Registro notifiche" -#: admin/options.php:577 msgid "Notification Buffer" msgstr "Buffer di notifica" -#: admin/options.php:562 msgid "To avoid notification failures, buffer emails for delayed sending once minute, hour or day limits are exceeded" msgstr "Per evitare errori di notifica, le e-mail di buffer per l'invio ritardato una volta i limiti di minuti, ore o giorni vengono superati" -#: admin/options.php:554 msgid "Note: \"by default\" means Pending Revision creators can customize email notification recipients before submitting. For more flexibility in moderation and notification, install the %1$s PressPermit Pro%2$s plugin." msgstr "Nota: \"per impostazione predefinita\" significa che gli autori di revisioni in sospeso possono personalizzare i destinatari delle notifiche e-mail prima dell'invio. Per una maggiore flessibilità nella moderazione e nella notifica, installare il plug-in %1$s PressPermit Pro%2$s." -#: admin/options.php:552 msgid "Note: \"by default\" means Pending Revision creators can customize email notification recipients before submitting. Eligibile \"Publisher\" email recipients are members of the Pending Revision Monitors group who also have the ability to publish the revision. If not explicitly defined, the Monitors group is all users with a primary WP role of Administrator or Editor." msgstr "Nota: \"per impostazione predefinita\" significa che gli autori di revisioni in sospeso possono personalizzare i destinatari delle notifiche e-mail prima dell'invio. I destinatari e-mail \"Editore\" Eligibile sono membri del gruppo Monitoraggio revisioni in sospeso che hanno anche la possibilità di pubblicare la revisione. Se non definito in modo esplicito, il gruppo Monitor è costituito da tutti gli utenti con un ruolo WP primario di Amministratore o Editor." -#: admin/options.php:487 admin/options.php:505 msgid "Always" msgstr "Sempre" -#: admin/options.php:487 admin/options.php:505 msgid "By default" msgstr "Per impostazione predefinita" -#: admin/options.php:487 admin/options.php:505 msgid "Never" msgstr "Mai" -#: admin/options.php:478 admin/options.php:535 msgid "select recipients" msgstr "Seleziona i destinatari" -#: admin/options.php:462 msgid "Regenerate revision storage flags (for Revision Queue listing)" msgstr "Rigenera flag di archiviazione revisione (per l'elenco Coda revisioni)" -#: admin/options.php:457 msgid "Show descriptive captions for PublishPress Revisions settings" msgstr "Mostra didascalie descrittive per le impostazioni delle revisioni publishPress" -#: admin/options.php:451 msgid "This may improve compatibility with some plugins." msgstr "Questo può migliorare la compatibilità con alcuni plugin." -#: admin/options.php:448 msgid "This restriction applies to users who are not full editors for the post type. To enable a role, give it the list_others_revisions capability." msgstr "Questa restrizione si applica agli utenti che non sono redattori completi per il tipo di post. Per abilitare un ruolo, assegnargli la funzionalità list_others_revisions." -#: admin/options.php:445 msgid "This restriction applies to users who are not full editors for the post type. To enable a role, give it the edit_others_revisions capability." msgstr "Questa restrizione si applica agli utenti che non sono redattori completi per il tipo di post. Per abilitare un ruolo, assegnargli la funzionalità edit_others_revisions." -#: admin/options.php:436 msgid "For compatibility with Advanced Custom Fields, Beaver Builder and WPML, upgrade to PublishPress Revisions Pro." msgstr "Per la compatibilità con Advanced Custom Fields, Beaver Builder e WPML, esegui l'upgrade a PublishPress Revisions Pro." -#: admin/options.php:416 msgid "If disabled, Compare screen links to Revision Preview for approval" msgstr "Se disabilitata, Confronta collegamenti schermata a Anteprima revisione per l'approvazione" -#: admin/options.php:406 msgid "Some themes or plugins may require Revision Slug or Revision ID link type for proper template loading and field display." msgstr "Alcuni temi o plugin potrebbero richiedere il tipo di link Slug o ID revisione per il caricamento corretto del modello e la visualizzazione dei campi." -#: admin/options.php:395 msgid "Revision ID only" msgstr "Solo ID revisione" -#: admin/options.php:395 msgid "Revision Slug" msgstr "Scansione slug" -#: admin/options.php:395 msgid "Published Post Slug" msgstr "Pubblicato Post Slug" -#: admin/options.php:383 msgid "For themes that block revision preview, hide preview links from non-Administrators" msgstr "Per i temi che bloccano l'anteprima della revisione, nascondi i link di anteprima ai non amministratori" -#: admin/options.php:367 msgid "When a pending revision is published, also update the publish date." msgstr "Quando viene pubblicata una revisione in sospeso, aggiornare anche la data di pubblicazione." -#: admin/options.php:361 msgid "Enable Contributors to submit revisions to their own published content. Revisors and users who have the edit_others (but not edit_published) capability for the post type can submit revisions to other user's content. These Pending Revisions are listed in %sRevision Queue%s." msgstr "Consentire ai collaboratori di inviare revisioni al proprio contenuto pubblicato. I revisori e gli utenti che dispongono della funzionalità edit_others (ma non edit_published) per il tipo di post possono inviare revisioni al contenuto di altri utenti. Queste revisioni in sospeso sono elencate nella coda %sRevision%s." -#: admin/options.php:343 msgid "Publish scheduled revisions asynchronously, via a secondary http request from the server. This is usually best since it eliminates delay, but some servers may not support it." msgstr "Pubblicare le revisioni pianificate in modo asincrono, tramite una richiesta http secondaria dal server. Questo è di solito meglio in quanto elimina il ritardo, ma alcuni server potrebbero non supportarlo." -#: admin/options.php:340 msgid "When a scheduled revision is published, also update the publish date." msgstr "Quando viene pubblicata una revisione pianificata, aggiornare anche la data di pubblicazione." -#: admin/options.php:337 msgid "If a currently published post or page is edited and a future date set, the change will not be applied until the selected date." msgstr "Se l'attuale pubblicazione di un articolo o pagina è modificata ed ha impostato una data futura, il cambiamento non sarà applicato fino a tale data selezionata." -#: admin/options.php:316 msgid "If checked, users lacking site-wide publishing capabilities will also be checked for the edit_others_drafts capability" msgstr "Se selezionata, gli utenti privi di funzionalità di pubblicazione a livello di sito verranno controllati anche per la funzionalità edit_others_drafts" -#: admin/options.php:311 msgid "The user role \"Revisor\" role is now available. Include capabilities for all custom post types in this role?" msgstr "Il ruolo utente \"Revisore\" è ora disponibile. Includere funzionalità per tutti i tipi di post personalizzati in questo ruolo?" -#: admin/options.php:279 msgid "Note that %1$s network-wide settings%2$s may also be available." msgstr "Si noti che potrebbero essere disponibili anche le impostazioni a livello di rete di." -#: admin/options.php:265 msgid "Here you can change the default value for settings which are controlled separately on each site." msgstr "Qui è possibile modificare il valore predefinito per le impostazioni che sono controllate separatamente su ogni sito." -#: admin/options.php:263 msgid "Use this tab to make NETWORK-WIDE changes to PublishPress Revisions settings. %s" msgstr "Utilizzare questa scheda per apportare modifiche NETWORK-WIDE alle impostazioni di PublishPress Revisions. %s" -#: admin/options.php:262 msgid "You can also specify %1$sdefaults for site-specific settings%2$s." msgstr "È inoltre possibile specificare %1$s defaults per le impostazioni specifiche del sito%2$s." -#: admin/options.php:225 msgid "These are the default settings for options which can be adjusted per-site." msgstr "Queste sono le impostazioni predefinite per le opzioni che possono essere regolate per sito." -#: admin/options.php:211 admin/options.php:792 msgid "Update »" msgstr "Aggiorna »" -#: admin/options.php:205 admin/admin_rvy.php:638 msgid "PublishPress Revisions Settings" msgstr "Impostazioni di PublishPress Revisions" -#: admin/options.php:203 msgid "PublishPress Revisions Site Settings" msgstr "Impostazioni sito PublishPress Revisions" -#: admin/options.php:201 admin/admin_lib-mu_rvy.php:23 msgid "PublishPress Revisions Network Defaults" msgstr "PubblicareImpostazioni predefinite di rete revisioni" -#: admin/options.php:199 admin/admin_lib-mu_rvy.php:12 msgid "PublishPress Revisions Network Settings" msgstr "Impostazioni di rete PublishPress Revisions" -#: admin/options.php:141 msgid "Email Editors and Administrators when a Pending Revision is approved" msgstr "Editor e amministratori di posta elettronica quando viene approvata una revisione in sospeso" -#: admin/options.php:140 msgid "Email Editors and Administrators when a Scheduled Revision is published" msgstr "Invia una e-mail ai Pubblicatori / Amministratori quando una Revisione pianificata sia stata pubblicata" -#: admin/options.php:139 msgid "Email Editors and Administrators when a Pending Revision is submitted" msgstr "Invia una e-mail ai Pubblicatori / Amministratori quando una Revisione in attesa è stata inoltrata" -#: admin/options.php:137 msgid "Email designated Publishers when a Pending Revision is approved" msgstr "Invia e-mail ai publisher designati quando viene approvata una revisione in sospeso" -#: admin/options.php:136 msgid "Email designated Publishers when a Scheduled Revision is published" msgstr "Inviare una e-mail al revisore quando una Revisione Pianificata sia stata pubblicata" -#: admin/options.php:135 msgid "Email designated Publishers when a Pending Revision is submitted" msgstr "Invia una e-mail ai Pubblicatori / Amministratori quando una Revisione in attesa è stata inoltrata" -#: admin/options.php:131 msgid "Approve Button on Compare Revisions screen" msgstr "Pulsante Approva nella schermata Confronta revisioni" -#: admin/options.php:130 msgid "Preview Link Type" msgstr "Tipo di collegamento di anteprima" -#: admin/options.php:129 msgid "Show Preview Links" msgstr "Mostra collegamenti di anteprima" -#: admin/options.php:127 msgid "Prevent Revisors from editing other user's drafts" msgstr "Impedire ai revisori di modificare altre bozze dell'utente;s" -#: admin/options.php:126 msgid "All custom post types available to Revisors" msgstr "Tutti i tipi di post personalizzati disponibili per Revisori" -#: admin/options.php:125 msgid "Enable notification buffer" msgstr "Abilitare il buffer di notificaEnable notification buffer" -#: admin/options.php:124 msgid "Email the Revisor when a Scheduled Revision is published" msgstr "Inviare una e-mail al revisore quando una Revisione Pianificata sia stata pubblicata" -#: admin/options.php:123 msgid "Email the original Author when a Scheduled Revision is published" msgstr "Inviare una e-mail al revisore quando una Revisione Pianificata sia stata pubblicata" -#: admin/options.php:122 msgid "Email the Revisor when a Pending Revision is approved" msgstr "Invia una e-mail al revisore quando una Revisione in attesa sia stata approvata" -#: admin/options.php:121 msgid "Email the original Author when a Pending Revision is approved" msgstr "Invia una e-mail al revisore quando una Revisione in attesa sia stata approvata" -#: admin/options.php:120 msgid "Email original Author when a Pending Revision is submitted" msgstr "Invia una e-mail ai Pubblicatori / Amministratori quando una Revisione in attesa è stata inoltrata" -#: admin/options.php:118 admin/options.php:119 msgid "Update Publish Date" msgstr "Aggiorna data di pubblicazione" -#: admin/options.php:117 msgid "Asynchronous Publishing" msgstr "Pubblicazione asincrona" -#: admin/options.php:116 msgid "Strip html tags out of difference display" msgstr "Striscia html tag fuori dalla visualizzazione differenza" -#: admin/options.php:115 msgid "Revision publication triggers API actions to mimic post update" msgstr "La pubblicazione delle revisioni attiva le azioni API per simulare l'aggiornamento successivo" -#: admin/options.php:114 msgid "Prevent Revisors from viewing others' revisions" msgstr "Impedire agli altri Revisione" -#: admin/options.php:113 msgid "Prevent Revisors from editing others' revisions" msgstr "Impedire ai revisori di altri utenti di modificare le revisioni di altri utenti." -#: admin/options.php:112 msgid "Enable Scheduled Revisions" msgstr "Abilita revisioni pianificate" -#: admin/options.php:111 msgid "Enable Pending Revisions" msgstr "Abilita revisioni in sospeso" -#: admin/options.php:105 msgid "Email Notification" msgstr "Notifica email" -#: admin/options.php:104 msgid "Revision Options" msgstr "Opzioni di revisione" -#: admin/options.php:103 msgid "Preview / Approval" msgstr "Anteprima / Approvazione" -#: admin/options.php:100 msgid "Role Definition" msgstr "Definizione del ruolo" -#: admin/options.php:96 msgid "Setting Scope" msgstr "Impostazione dell'ambito" -#: admin/options.php:96 admin/admin_rvy.php:638 msgid "Settings" msgstr "Impostazioni" -#: admin/post-edit_rvy.php:325 msgid "%sPending Revisions: %s" msgstr "%sRevisioni in sospeso: %s" -#: admin/post-edit_rvy.php:304 msgid "%sScheduled Revisions: %s" msgstr "%sRevisioni pianificate: %s" -#: admin/post-edit_rvy.php:222 msgid "Compare this revision to published copy, or to other revisions" msgstr "Confrontare la revisione con la copia pubblicata o con altre revisioni" -#: admin/post-edit_rvy.php:221 admin/post-edit_rvy.php:316 -#: admin/post-edit_rvy.php:337 admin/class-list-table_rvy.php:1070 -#: admin/PostEditSubmitMetabox.php:74 msgctxt "revisions" msgid "Compare" msgstr "Confronta" -#: admin/post-edit_rvy.php:212 admin/post-edit-block-ui_rvy.php:88 msgid "Approve saved changes" msgstr "Approvare le modifiche salvate" -#: admin/post-edit_rvy.php:109 msgid "Edit %s Revision" msgstr "Modifica revisione %s" -#: admin/post-edit_rvy.php:104 admin/post-edit-block-ui_rvy.php:55 msgid "View unsaved changes" msgstr "Visualizzare le modifiche non salvate" -#: admin/post-edit_rvy.php:100 admin/post-edit_rvy.php:265 -#: admin/PostEditSubmitMetabox.php:177 admin/post-edit-block-ui_rvy.php:47 msgid "View saved revision" msgstr "Visualizzare la revisione salvata" -#: admin/post-edit_rvy.php:97 admin/post-edit_rvy.php:263 -#: admin/PostEditSubmitMetabox.php:174 admin/post-edit-block-ui_rvy.php:44 msgid "View / moderate saved revision" msgstr "Visualizza / Moderata revisione salvata" -#: admin/post-edit_rvy.php:96 admin/post-edit_rvy.php:249 -#: admin/history_rvy.php:1036 admin/PostEditSubmitMetabox.php:173 -#: admin/post-edit-block-ui_rvy.php:43 -msgid "Preview / Approve" +msgid "View / Approve" msgstr "Visualizza/ Approva" -#: admin/post-edit_rvy.php:96 admin/post-edit_rvy.php:249 -#: admin/PostEditSubmitMetabox.php:173 admin/post-edit-block-ui_rvy.php:43 msgid "View / Publish" msgstr "Visualizza/Pubblica" -#: admin/post-edit_rvy.php:37 msgid "Revision updated." msgstr "Revisione aggiornata." -#: admin/post-edit_rvy.php:35 msgid "Revision updated. %sView Preview%s" msgstr "Revisione aggiornata. %sView Anteprima%s" -#: admin/admin-init_rvy.php:265 msgid "Dismiss" msgstr "Nascondi" -#: admin/admin-init_rvy.php:239 msgid "Revisionary is now PublishPress Revisions! Note the new Revisions menu and %sRevision Queue%s screen, where Pending and Scheduled Revisions are listed. %s" msgstr "Revisionario è ora PublishPress Revisions! Prendere nota del nuovo menu Revisioni e della schermata %sRevisioni coda%s, in cui sono elencate le revisioni in sospeso e pianificate. %s" -#: admin/admin-init_rvy.php:229 msgid "Welcome to PublishPress Revisions! Here's how it works:%s
  • \"Contributors\" can submit revisions to their published posts.
  • \"Revisors\" can submit revisions to posts and pages published by others.
  • \"Authors\", \"Editors\" and \"Administrators\" can approve revisions or schedule their own revisions.
  • %s%s%s" msgstr "Benvenuti a PublishPress Revisions! Ecco come funziona:%s
  • I \"Contributori\" possono inviare revisioni ai post pubblicati.
  • I \"Revisori\" possono inviare revisioni ai post e alle pagine pubblicate da altri.
  • \"Autori\", \"Editor\" e \"Amministratori\" possono approvare le revisioni o pianificare le proprie revisioni.
  • %s%s%s" -#: admin/admin-init_rvy.php:223 msgid "For more details on setting up PublishPress Revisions, %sread this guide%s." msgstr "Per ulteriori dettagli sull'impostazione delle revisioni PublishPress, %sread questa guida%s." -#: admin/admin-init_rvy.php:151 msgid "Sorry, you are not allowed to delete this revision." msgstr "Spiacenti, non è consentito eliminare questa revisione." -#: admin/admin-init_rvy.php:116 msgid "Sorry, you are not allowed to approve this revision." msgstr "Spiacenti, non è consentito approvare questa revisione." -#: revision-workflow_rvy.php:249 msgid "Return to Edit %s" msgstr "Torna alla modifica %s" -#: revision-workflow_rvy.php:245 msgid "Return to Edit Pages" msgstr "Torna alle Pagine di Modifica" -#: revision-workflow_rvy.php:242 msgid "Return to Edit Posts" msgstr "Torna alla Modifica degli Articoli" -#: revision-workflow_rvy.php:221 msgid "Go back to submit another revision" msgstr "Tornare indietro per inviare un'altra revisione" -#: revision-workflow_rvy.php:200 msgid "It will be published when an editor approves it." msgstr "Sarà pubblicato quando un editor lo approverà." -#: revision-workflow_rvy.php:198 msgid "If approved by an editor, it will be published on the date you specified." msgstr "Se approvato da un editor, verrà pubblicato alla data specificata." -#: revision-workflow_rvy.php:195 msgid "Your modification has been saved for editorial review." msgstr "Le vostre modifiche sono state salvate per una revisione editoriale." -#: revision-workflow_rvy.php:186 revision-workflow_rvy.php:225 msgid "View Revision Queue" msgstr "Visualizza coda revisioni" -#: revision-workflow_rvy.php:184 msgid "Go back to schedule another revision" msgstr "Tornare alla pianificazione di un'altra revisione" -#: revision-workflow_rvy.php:182 revision-workflow_rvy.php:217 msgid "Keep editing the revision" msgstr "Continuare a modificare la revisione" -#: revision-workflow_rvy.php:175 revision-workflow_rvy.php:212 msgid "Preview it" msgstr "Visualizzarlo in anteprima" -#: revision-workflow_rvy.php:169 msgid "Your modification was saved as a Scheduled Revision." msgstr "Le vostre modifiche sono state salvate per una revisione pianificata." -#: revision-workflow_rvy.php:138 msgid "Sorry, an error occurred while attempting to save your revision." msgstr "Spiacenti, si è verificato un errore durante il tentativo di salvare la revisione." -#: revision-workflow_rvy.php:50 msgid "Edit Revision: " msgstr "Modifica revisione:" -#: revision-workflow_rvy.php:48 msgid "Revision Queue: " msgstr "Coda revisioni:" -#: revision-workflow_rvy.php:45 msgid "Preview and Approval: " msgstr "Anteprima e approvazione:" -#: revision-workflow_rvy.php:38 msgid "It was submitted by %1$s." msgstr "E' stato inoltrato da %1$s." -#: revision-workflow_rvy.php:36 msgid "A pending revision to the %1$s \"%2$s\" has been submitted." msgstr "Una revisione in attesa per il %1$s \"%2$s\" è stata inoltrata." -#: revision-workflow_rvy.php:34 msgid "[%s] Pending Revision Notification" msgstr "[%s] Notifica di Revisione in attesa" -#: revision-creation_rvy.php:705 msgid "Invalid page template." msgstr "Modello di pagina non valido. " -#. translators: %s: taxonomy name -#: revision-creation_rvy.php:626 msgid "Invalid taxonomy: %s" msgstr "Tassonomia non valida: %s" -#: revision-creation_rvy.php:585 msgid "Could not insert revision into the database" msgstr "Impossibile inserire la revisione nel database" -#: revision-creation_rvy.php:562 msgid "Scheduled Revision Created" msgstr "Pianificazione revisione creata" -#: revision-creation_rvy.php:525 msgid "Revision Scheduling Error" msgstr "Errore di pianificazione delle revisioni" -#: revision-creation_rvy.php:524 msgid "Sorry, an error occurred while attempting to schedule your revision!" msgstr "Spiacenti, si è verificato un errore durante il tentativo di pianificare la revisione!" -#: revision-creation_rvy.php:378 msgid "Pending Revision Created" msgstr "Revisione in attesa creata" -#: revision-creation_rvy.php:285 msgid "Revision Submission Error" msgstr "Errore di invio revisione" -#: revision-creation_rvy.php:284 msgid "Sorry, an error occurred while attempting to submit your revision!" msgstr "Spiacenti, si è verificato un errore durante il tentativo di inviare la revisione!" -#: revision-creation_rvy.php:47 msgid "Autosave disabled when editing a published post/page to create a pending revision." msgstr "Salvataggio automatico disabilitato durante la modifica di un post/pagina pubblicato per creare una revisione in sospeso." -#: rvy_init.php:737 msgid "Revision Workflow" msgstr "Flusso di lavoro revisione" -#: rvy_init.php:310 msgctxt "User role" msgid "Revisor" msgstr "Revisore" -#: rvy_init.php:298 msgid "Revisor" msgstr "Revisioni" -#: rvy_init.php:162 admin/class-list-table_rvy.php:323 msgid "Scheduled" msgstr "Programmato" -#: rvy_init.php:162 admin/options.php:101 -#: admin/filters-admin-ui-item_rvy.php:169 admin/revisions.php:221 msgid "Scheduled Revisions" msgstr "Revisioni pianificate" -#: rvy_init.php:161 msgid "Scheduled Revision" msgstr "Revisione programmata" -#: rvy_init.php:151 admin/class-list-table_rvy.php:320 msgid "Pending" msgstr "In attesa" -#: rvy_init.php:151 admin/options.php:102 -#: admin/filters-admin-ui-item_rvy.php:156 admin/revisions.php:218 msgid "Pending Revisions" msgstr "In attesa di revisione" -#: rvy_init.php:151 rvy_init.php:162 admin/edit-revision-ui_rvy.php:15 -#: admin/edit-revision-ui_rvy.php:16 admin/PostEditSubmitMetabox.php:136 msgid "Update Revision" msgstr "Aggiorna revisione" -#: rvy_init.php:151 rvy_init.php:162 admin/post-edit-block-ui_rvy.php:117 msgid "Save Revision" msgstr "Salva revisione" -#: rvy_init.php:151 rvy_init.php:162 msgid "Publish Revision" msgstr "Pubblica revisione" -#: rvy_init.php:150 admin/post-edit-block-ui_rvy.php:112 -#: admin/admin_rvy.php:296 msgid "Pending Revision" msgstr "Revisione in sospeso" -#: rvy_init.php:72 msgid "Every 2 Minutes" msgstr "Ogni 2 minuti" -#: revisionary_main.php:399 msgid "Invalid featured media ID." msgstr "ID multimediale in evidenza non valido." -#: lib/debug.php:182 msgid "%1$s queries in %2$s seconds. %3$s MB used." msgstr "%1$s richieste al database effettuate in %2$s. %3$s MB usati." -#: front_rvy.php:271 msgid "This is the Current Revision. %s" msgstr "Questa è la revisione corrente. %s" -#: front_rvy.php:259 msgid "This is a Past Revision (from %s). %s %s" msgstr "Questa è una revisione passata (da %s). %s %s" -#: front_rvy.php:258 msgid "Restore" msgstr "Ripristina" -#: front_rvy.php:251 msgid "This is a Scheduled Revision (for publication on %s). %s %s %s" msgstr "Si tratta di una revisione pianificata (per la pubblicazione su %s). %s %s %s" -#: front_rvy.php:243 msgid "Reload" msgstr "Ricarica" -#: front_rvy.php:242 msgid "This revision is very new, preview may not be synchronized with theme." msgstr "Questa revisione è molto nuova, l'anteprima potrebbe non essere sincronizzata con il tema." -#: front_rvy.php:232 msgid "This is a Pending Revision. %s %s %s" msgstr "Questa è una revisione in sospeso. %s %s %s" -#: front_rvy.php:231 front_rvy.php:249 msgid "Publish now" msgstr "Pubblica adesso" -#: front_rvy.php:228 msgid "This is a Pending Revision (requested publish date: %s). %s %s %s" msgstr "Si tratta di una revisione in sospeso (data di pubblicazione richiesta: %s). %s %s %s" -#: front_rvy.php:227 admin/post-edit_rvy.php:212 admin/history_rvy.php:1036 msgid "Approve" msgstr "Approva" -#: front_rvy.php:191 msgid "Edit" msgstr "Modifica" -#: front_rvy.php:182 msgid "%sView Published Post%s" msgstr "%sView Published Post%s" -#: front_rvy.php:172 msgid "%sCompare%s%sView Published Post%s" msgstr "%sCompare%s%sView Published Post%s" -#. Author URI of the plugin msgid "https://publishpress.com" msgstr "https://publishpress.com" -#. Author of the plugin msgid "PublishPress" msgstr "PubblicarePress" -#. Description of the plugin msgid "Maintain published content with teamwork and precision using the Revisions model to submit, approve and schedule changes." msgstr "Gestire il contenuto pubblicato con il lavoro in team e con precisione utilizzando il modello Revisioni per inviare, approvare e pianificare le modifiche." -#. Plugin URI of the plugin msgid "https://publishpress.com/revisionary/" msgstr "https://publishpress.com/revisionary/" -#. Plugin Name of the plugin msgid "PublishPress Revisions" -msgstr "PubblicareRevisioni Press" \ No newline at end of file +msgstr "PubblicareRevisioni Press" diff --git a/languages/revisionary-sv_SV.mo b/languages/revisionary-sv_SV.mo index 383455314e77296ac8acba96f2f9882c35c6bea0..c3c71aa9241a19b817e62d3c197f74f12a74d20d 100644 GIT binary patch delta 7787 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 RyopV2>Gj0!sGnP&@gJdP!T10G delta 5676 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\n" +"Language-Team: \n" +"X-Poedit-Basepath: ../../../../../../snapshot/revisionary\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPath-1: admin\n" +"X-Poedit-SearchPath-2: classes\n" +"X-Poedit-SearchPath-3: includes\n" #: admin/options.php:130 msgid "Copy revision comments to published post" @@ -722,7 +730,7 @@ msgstr "Visa" #: admin/post-edit_rvy.php:96 admin/post-edit_rvy.php:251 #: admin/history_rvy.php:1037 admin/PostEditSubmitMetabox.php:173 #: admin/post-edit-block-ui_rvy.php:43 -msgid "Preview / Approve" +msgid "View / Approve" msgstr "Visa / Godkänn" #: admin/post-edit_rvy.php:96 admin/post-edit_rvy.php:251 @@ -1469,4 +1477,4 @@ msgstr "https://publishpress.com" #. Author of the plugin msgid "PublishPress" -msgstr "PublishPress" \ No newline at end of file +msgstr "PublishPress" diff --git a/languages/revisionary.pot b/languages/revisionary.pot index b2ecec75..90661980 100644 --- a/languages/revisionary.pot +++ b/languages/revisionary.pot @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: PublishPress Revisions Pro\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-09-21 17:10-0400\n" +"POT-Creation-Date: 2021-09-30 14:00-0400\n" "PO-Revision-Date: \n" "Last-Translator: Kevin Behrens \n" "Language-Team: PublishPress \n" @@ -19,7 +19,7 @@ msgstr "" "X-Poedit-SearchPath-1: admin\n" "X-Poedit-SearchPath-2: classes\n" -#: admin/RevisionEditSubmitMetabox.php:62 admin/class-list-table_rvy.php:839 +#: admin/RevisionEditSubmitMetabox.php:62 admin/class-list-table_rvy.php:872 msgid "Delete Permanently" msgstr "" @@ -40,32 +40,30 @@ msgstr "" #: admin/RevisionEditSubmitMetabox.php:114 #: admin/edit-revision-classic-ui_rvy.php:99 admin/post-edit_rvy.php:79 -#: admin/post-editor-workflow-ui_rvy.php:41 +#: admin/post-editor-workflow-ui_rvy.php:44 msgid "View / Publish" msgstr "" #: admin/RevisionEditSubmitMetabox.php:114 -#: admin/edit-revision-classic-ui_rvy.php:99 admin/history_rvy.php:1064 -#: admin/post-edit_rvy.php:79 admin/post-editor-workflow-ui_rvy.php:41 -msgid "Preview / Approve" +#: admin/edit-revision-classic-ui_rvy.php:99 admin/history_rvy.php:1072 +#: admin/post-edit_rvy.php:79 admin/post-editor-workflow-ui_rvy.php:44 +msgid "View / Approve" msgstr "" #: admin/RevisionEditSubmitMetabox.php:115 #: admin/edit-revision-classic-ui_rvy.php:100 admin/post-edit_rvy.php:98 -#: admin/post-editor-workflow-ui_rvy.php:42 msgid "View / moderate saved revision" msgstr "" -#: admin/RevisionEditSubmitMetabox.php:117 admin/class-list-table_rvy.php:551 +#: admin/RevisionEditSubmitMetabox.php:117 admin/class-list-table_rvy.php:574 #: admin/edit-revision-classic-ui_rvy.php:102 -#: admin/edit-revision-classic-ui_rvy.php:106 admin/history_rvy.php:1066 -#: admin/post-edit_rvy.php:82 admin/post-editor-workflow-ui_rvy.php:44 +#: admin/edit-revision-classic-ui_rvy.php:106 admin/history_rvy.php:1074 +#: admin/post-edit_rvy.php:82 msgid "View" msgstr "" #: admin/RevisionEditSubmitMetabox.php:118 #: admin/edit-revision-classic-ui_rvy.php:103 admin/post-edit_rvy.php:101 -#: admin/post-editor-workflow-ui_rvy.php:45 msgid "View saved revision" msgstr "" @@ -92,8 +90,8 @@ msgstr "" msgid "Publish on approval" msgstr "" -#: admin/RevisionEditSubmitMetabox.php:190 admin/class-list-table_rvy.php:527 -#: admin/class-list-table_rvy.php:1142 admin/history_rvy.php:1108 +#: admin/RevisionEditSubmitMetabox.php:190 admin/class-list-table_rvy.php:550 +#: admin/class-list-table_rvy.php:1175 admin/history_rvy.php:1116 #: front_rvy.php:269 msgid "Edit" msgstr "" @@ -145,7 +143,7 @@ msgstr "" msgid "The revision was published." msgstr "" -#: admin/admin-posts_rvy.php:113 admin/class-list-table_rvy.php:411 +#: admin/admin-posts_rvy.php:113 admin/class-list-table_rvy.php:434 #: rvy_init.php:236 msgid "Change Request" msgstr "" @@ -154,7 +152,7 @@ msgstr "" msgid "Has Revision" msgstr "" -#: admin/admin-posts_rvy.php:145 admin/admin_rvy.php:169 admin/options.php:102 +#: admin/admin-posts_rvy.php:145 admin/admin_rvy.php:172 admin/options.php:102 msgid "Revision Queue" msgstr "" @@ -162,7 +160,7 @@ msgstr "" msgid "New Working Copy" msgstr "" -#: admin/admin_lib-mu_rvy.php:10 admin/options.php:212 +#: admin/admin_lib-mu_rvy.php:10 admin/options.php:213 msgid "PublishPress Revisions Network Settings" msgstr "" @@ -170,7 +168,7 @@ msgstr "" msgid "Network Settings" msgstr "" -#: admin/admin_lib-mu_rvy.php:21 admin/options.php:214 +#: admin/admin_lib-mu_rvy.php:21 admin/options.php:215 msgid "PublishPress Revisions Network Defaults" msgstr "" @@ -178,48 +176,48 @@ msgstr "" msgid "Network Defaults" msgstr "" -#: admin/admin_rvy.php:150 admin/admin_rvy.php:166 +#: admin/admin_rvy.php:153 admin/admin_rvy.php:169 msgid "Revisions" msgstr "" -#: admin/admin_rvy.php:182 admin/options.php:218 +#: admin/admin_rvy.php:185 admin/options.php:219 msgid "PublishPress Revisions Settings" msgstr "" -#: admin/admin_rvy.php:182 admin/admin_rvy.php:219 admin/options.php:94 +#: admin/admin_rvy.php:185 admin/admin_rvy.php:222 admin/options.php:94 msgid "Settings" msgstr "" -#: admin/admin_rvy.php:189 admin/admin_rvy.php:190 +#: admin/admin_rvy.php:192 admin/admin_rvy.php:193 msgid "Upgrade to Pro" msgstr "" -#: admin/admin_rvy.php:259 +#: admin/admin_rvy.php:262 #, php-format msgid "If you like %s, please leave us a %s rating. Thank you!" msgstr "" -#: admin/admin_rvy.php:270 +#: admin/admin_rvy.php:273 msgid "About PublishPress Revisions" msgstr "" -#: admin/admin_rvy.php:270 +#: admin/admin_rvy.php:273 msgid "About" msgstr "" -#: admin/admin_rvy.php:272 +#: admin/admin_rvy.php:275 msgid "PublishPress Revisions Documentation" msgstr "" -#: admin/admin_rvy.php:272 admin/options.php:776 +#: admin/admin_rvy.php:275 admin/options.php:780 msgid "Documentation" msgstr "" -#: admin/admin_rvy.php:274 +#: admin/admin_rvy.php:277 msgid "Contact the PublishPress team" msgstr "" -#: admin/admin_rvy.php:274 +#: admin/admin_rvy.php:277 msgid "Contact" msgstr "" @@ -245,172 +243,172 @@ msgstr "" msgid "unselect" msgstr "" -#: admin/class-list-table_rvy.php:367 +#: admin/class-list-table_rvy.php:390 msgid "Revision" msgstr "" -#: admin/class-list-table_rvy.php:368 admin/post-editor-workflow-ui_rvy.php:25 +#: admin/class-list-table_rvy.php:391 admin/post-editor-workflow-ui_rvy.php:25 msgid "Status" msgstr "" -#: admin/class-list-table_rvy.php:369 +#: admin/class-list-table_rvy.php:392 msgid "Post Type" msgstr "" -#: admin/class-list-table_rvy.php:370 +#: admin/class-list-table_rvy.php:393 msgid "Revised By" msgstr "" -#: admin/class-list-table_rvy.php:371 +#: admin/class-list-table_rvy.php:394 msgid "Submission" msgstr "" -#: admin/class-list-table_rvy.php:379 +#: admin/class-list-table_rvy.php:402 msgid "Schedule" msgstr "" -#: admin/class-list-table_rvy.php:382 +#: admin/class-list-table_rvy.php:405 msgid "Published Post" msgstr "" -#: admin/class-list-table_rvy.php:384 +#: admin/class-list-table_rvy.php:407 msgid "Post Author" msgstr "" -#: admin/class-list-table_rvy.php:408 rvy_init.php:225 +#: admin/class-list-table_rvy.php:431 rvy_init.php:225 msgid "Working Copy" msgstr "" -#: admin/class-list-table_rvy.php:414 rvy_init.php:247 +#: admin/class-list-table_rvy.php:437 rvy_init.php:247 msgid "Scheduled Change" msgstr "" -#: admin/class-list-table_rvy.php:430 admin/class-list-table_rvy.php:1070 +#: admin/class-list-table_rvy.php:453 admin/class-list-table_rvy.php:1103 msgid "Y/m/d g:i:s a" msgstr "" -#: admin/class-list-table_rvy.php:438 admin/class-list-table_rvy.php:1075 -#: admin/history_rvy.php:979 +#: admin/class-list-table_rvy.php:461 admin/class-list-table_rvy.php:1108 +#: admin/history_rvy.php:987 #, php-format msgid "%s ago" msgstr "" -#: admin/class-list-table_rvy.php:441 admin/class-list-table_rvy.php:1078 +#: admin/class-list-table_rvy.php:464 admin/class-list-table_rvy.php:1111 msgid "Y/m/d g:i a" msgstr "" -#: admin/class-list-table_rvy.php:448 +#: admin/class-list-table_rvy.php:471 #, php-format msgid "Scheduled publication: %s" msgstr "" -#: admin/class-list-table_rvy.php:451 +#: admin/class-list-table_rvy.php:474 #, php-format msgid "Requested publication: %s" msgstr "" -#: admin/class-list-table_rvy.php:455 +#: admin/class-list-table_rvy.php:478 msgid "Missed schedule" msgstr "" -#: admin/class-list-table_rvy.php:498 admin/history_rvy.php:773 +#: admin/class-list-table_rvy.php:521 admin/history_rvy.php:781 msgid "No author" msgstr "" -#: admin/class-list-table_rvy.php:538 +#: admin/class-list-table_rvy.php:561 #, php-format msgid "View only revisions of %s" msgstr "" -#: admin/class-list-table_rvy.php:539 admin/class-list-table_rvy.php:881 +#: admin/class-list-table_rvy.php:562 admin/class-list-table_rvy.php:914 msgid "Filter" msgstr "" -#: admin/class-list-table_rvy.php:550 admin/class-list-table_rvy.php:558 +#: admin/class-list-table_rvy.php:573 admin/class-list-table_rvy.php:581 msgid "View published post" msgstr "" -#: admin/class-list-table_rvy.php:559 admin/class-list-table_rvy.php:1168 -#: admin/history_rvy.php:1161 admin/revision-ui_rvy.php:275 +#: admin/class-list-table_rvy.php:582 admin/class-list-table_rvy.php:1201 +#: admin/history_rvy.php:1169 admin/revision-ui_rvy.php:275 #: admin/revision-ui_rvy.php:297 msgid "Preview" msgstr "" -#: admin/class-list-table_rvy.php:582 +#: admin/class-list-table_rvy.php:605 msgid "Compare Past Revisions" msgstr "" -#: admin/class-list-table_rvy.php:583 +#: admin/class-list-table_rvy.php:606 msgid "History" msgstr "" -#: admin/class-list-table_rvy.php:737 +#: admin/class-list-table_rvy.php:768 #, php-format msgid "%sMy Copies & Changes%s (%s)" msgstr "" -#: admin/class-list-table_rvy.php:769 +#: admin/class-list-table_rvy.php:802 #, php-format msgid "%sMy Published Posts%s(%s)" msgstr "" -#: admin/class-list-table_rvy.php:804 +#: admin/class-list-table_rvy.php:837 #, php-format msgid "All %s" msgstr "" -#: admin/class-list-table_rvy.php:828 front_rvy.php:311 +#: admin/class-list-table_rvy.php:861 front_rvy.php:312 msgid "Submit" msgstr "" -#: admin/class-list-table_rvy.php:831 admin/history_rvy.php:1064 -#: front_rvy.php:324 +#: admin/class-list-table_rvy.php:864 admin/history_rvy.php:1072 +#: front_rvy.php:331 msgid "Approve" msgstr "" -#: admin/class-list-table_rvy.php:832 +#: admin/class-list-table_rvy.php:865 msgid "Publish" msgstr "" -#: admin/class-list-table_rvy.php:835 admin/revision-ui_rvy.php:280 +#: admin/class-list-table_rvy.php:868 admin/revision-ui_rvy.php:280 msgid "Unschedule" msgstr "" -#: admin/class-list-table_rvy.php:860 +#: admin/class-list-table_rvy.php:893 msgid "Filter by category" msgstr "" -#: admin/class-list-table_rvy.php:925 +#: admin/class-list-table_rvy.php:958 msgid "Filter by date" msgstr "" -#: admin/class-list-table_rvy.php:927 +#: admin/class-list-table_rvy.php:960 msgid "All dates" msgstr "" -#: admin/class-list-table_rvy.php:986 +#: admin/class-list-table_rvy.php:1019 msgid "Select All" msgstr "" -#: admin/class-list-table_rvy.php:1058 +#: admin/class-list-table_rvy.php:1091 #, php-format msgid "“%s” (Edit)" msgstr "" -#: admin/class-list-table_rvy.php:1151 +#: admin/class-list-table_rvy.php:1184 msgid "Delete Revision" msgstr "" -#: admin/class-list-table_rvy.php:1152 admin/revision-ui_rvy.php:285 +#: admin/class-list-table_rvy.php:1185 admin/revision-ui_rvy.php:285 #: admin/revision-ui_rvy.php:411 msgid "Delete" msgstr "" -#: admin/class-list-table_rvy.php:1167 +#: admin/class-list-table_rvy.php:1200 msgid "Preview Revision" msgstr "" -#: admin/class-list-table_rvy.php:1179 +#: admin/class-list-table_rvy.php:1213 msgid "Compare Changes" msgstr "" @@ -435,7 +433,7 @@ msgid "Submit Change Schedule" msgstr "" #: admin/edit-revision-classic-ui_rvy.php:107 -#: admin/post-editor-workflow-ui_rvy.php:53 +#: admin/post-editor-workflow-ui_rvy.php:58 msgid "View unsaved changes" msgstr "" @@ -480,83 +478,83 @@ msgstr "" msgid "(no title)" msgstr "" -#: admin/history_rvy.php:527 admin/options.php:541 +#: admin/history_rvy.php:525 admin/options.php:545 msgid "Post Date" msgstr "" -#: admin/history_rvy.php:528 +#: admin/history_rvy.php:526 msgid "Post Parent" msgstr "" -#: admin/history_rvy.php:529 +#: admin/history_rvy.php:527 msgid "Menu Order" msgstr "" -#: admin/history_rvy.php:530 +#: admin/history_rvy.php:528 msgid "Comment Status" msgstr "" -#: admin/history_rvy.php:531 +#: admin/history_rvy.php:529 msgid "Ping Status" msgstr "" -#: admin/history_rvy.php:656 +#: admin/history_rvy.php:664 msgid "Page Template" msgstr "" -#: admin/history_rvy.php:659 +#: admin/history_rvy.php:667 msgid "Featured Image" msgstr "" -#: admin/history_rvy.php:668 +#: admin/history_rvy.php:676 msgid "Beaver Builder Data" msgstr "" -#: admin/history_rvy.php:669 +#: admin/history_rvy.php:677 msgid "Beaver Builder Settings" msgstr "" -#: admin/history_rvy.php:906 +#: admin/history_rvy.php:914 msgid "Scheduled for " msgstr "" -#: admin/history_rvy.php:911 +#: admin/history_rvy.php:919 msgid "Requested for " msgstr "" -#: admin/history_rvy.php:916 +#: admin/history_rvy.php:924 msgid "Modified " msgstr "" -#: admin/history_rvy.php:921 +#: admin/history_rvy.php:929 #, php-format msgid "%s%s ago" msgstr "" -#: admin/history_rvy.php:921 +#: admin/history_rvy.php:929 #, php-format msgid "%s%s from now" msgstr "" -#: admin/history_rvy.php:932 admin/revision-action_rvy.php:310 +#: admin/history_rvy.php:940 admin/revision-action_rvy.php:310 #: admin/revision-action_rvy.php:392 admin/revision-ui_rvy.php:265 #: front_rvy.php:210 msgid "M j, Y @ g:i a" msgstr "" -#: admin/history_rvy.php:977 +#: admin/history_rvy.php:985 msgid "M j, Y @ H:i" msgstr "" -#: admin/history_rvy.php:1160 +#: admin/history_rvy.php:1168 msgid "Preview / Restore" msgstr "" -#: admin/history_rvy.php:1167 +#: admin/history_rvy.php:1175 msgid "Manage" msgstr "" -#: admin/history_rvy.php:1168 +#: admin/history_rvy.php:1176 msgid "List" msgstr "" @@ -613,328 +611,336 @@ msgid "Listing others' revisions requires role capability" msgstr "" #: admin/options.php:118 -msgid "Compatibility Mode" +msgid "Users can always administer revisions to their own editable posts" msgstr "" #: admin/options.php:119 -msgid "Also notify on Revision Update" +msgid "Compatibility Mode" msgstr "" #: admin/options.php:120 -msgid "Revision Publication: API actions to mimic Post Update" +msgid "Also notify on Revision Update" msgstr "" #: admin/options.php:121 -msgid "Hide html tags on Compare Revisions screen" +msgid "Revision Publication: API actions to mimic Post Update" msgstr "" #: admin/options.php:122 +msgid "Hide html tags on Compare Revisions screen" +msgstr "" + +#: admin/options.php:123 msgid "Asynchronous Publishing" msgstr "" -#: admin/options.php:123 admin/options.php:124 +#: admin/options.php:124 admin/options.php:125 msgid "Update Publish Date" msgstr "" -#: admin/options.php:125 admin/options.php:126 +#: admin/options.php:126 admin/options.php:127 msgid "Update Modified Date" msgstr "" -#: admin/options.php:127 +#: admin/options.php:128 msgid "Email original Author when a Change Request is submitted" msgstr "" -#: admin/options.php:128 +#: admin/options.php:129 msgid "Email the original Author when a Change Request is approved" msgstr "" -#: admin/options.php:129 +#: admin/options.php:130 msgid "Email the Revisor when a Change Request is approved" msgstr "" -#: admin/options.php:130 +#: admin/options.php:131 msgid "Email the original Author when a Scheduled Change is published" msgstr "" -#: admin/options.php:131 +#: admin/options.php:132 msgid "Email the Revisor when a Scheduled Change is published" msgstr "" -#: admin/options.php:132 +#: admin/options.php:133 msgid "Enable notification buffer" msgstr "" -#: admin/options.php:133 +#: admin/options.php:134 msgid "All custom post types available to Revisors" msgstr "" -#: admin/options.php:134 +#: admin/options.php:135 msgid "Prevent Revisors from editing other user's drafts" msgstr "" -#: admin/options.php:135 +#: admin/options.php:136 msgid "Display Hints" msgstr "" -#: admin/options.php:136 +#: admin/options.php:137 msgid "Show Preview Links" msgstr "" -#: admin/options.php:137 +#: admin/options.php:138 msgid "Preview Link Type" msgstr "" -#: admin/options.php:138 +#: admin/options.php:139 msgid "Approve Button on Compare Revisions screen" msgstr "" -#: admin/options.php:139 +#: admin/options.php:140 msgid "Copy revision comments to published post" msgstr "" -#: admin/options.php:140 +#: admin/options.php:141 msgid "Compare Past Revisions ordering:" msgstr "" -#: admin/options.php:146 +#: admin/options.php:147 msgid "Email designated Publishers when a Change Request is submitted" msgstr "" -#: admin/options.php:147 +#: admin/options.php:148 msgid "Email designated Publishers when a Scheduled Change is published" msgstr "" -#: admin/options.php:148 +#: admin/options.php:149 msgid "Email designated Publishers when a Change Request is approved" msgstr "" -#: admin/options.php:150 +#: admin/options.php:151 msgid "Email Editors and Administrators when a Change Request is submitted" msgstr "" -#: admin/options.php:151 +#: admin/options.php:152 msgid "Email Editors and Administrators when a Scheduled Change is published" msgstr "" -#: admin/options.php:152 +#: admin/options.php:153 msgid "Email Editors and Administrators when a Change Request is approved" msgstr "" -#: admin/options.php:216 +#: admin/options.php:217 msgid "PublishPress Revisions Site Settings" msgstr "" -#: admin/options.php:224 admin/options.php:894 +#: admin/options.php:225 admin/options.php:898 msgid "Update »" msgstr "" -#: admin/options.php:238 +#: admin/options.php:239 msgid "These are the default settings for options which can be adjusted per-site." msgstr "" -#: admin/options.php:275 +#: admin/options.php:276 #, php-format msgid "You can also specify %1$sdefaults for site-specific settings%2$s." msgstr "" -#: admin/options.php:276 +#: admin/options.php:277 #, php-format msgid "Use this tab to make NETWORK-WIDE changes to PublishPress Revisions settings. %s" msgstr "" -#: admin/options.php:278 +#: admin/options.php:279 msgid "Here you can change the default value for settings which are controlled separately on each site." msgstr "" -#: admin/options.php:292 +#: admin/options.php:293 #, php-format msgid "Note that %1$s network-wide settings%2$s may also be available." msgstr "" -#: admin/options.php:324 +#: admin/options.php:325 msgid "The user role \"Revisor\" role is now available. Include capabilities for all custom post types in this role?" msgstr "" -#: admin/options.php:329 +#: admin/options.php:330 msgid "If checked, users lacking site-wide publishing capabilities will also be checked for the edit_others_drafts capability" msgstr "" -#: admin/options.php:345 +#: admin/options.php:346 msgid "This restriction applies to users who are not full editors for the post type. To enable a role, add capabilities: copy_posts, copy_others_pages, etc." msgstr "" -#: admin/options.php:350 +#: admin/options.php:351 msgid "To expand the Posts / Pages listing for non-Editors, add capabilities: list_others_pages, list_published_posts, etc." msgstr "" -#: admin/options.php:374 +#: admin/options.php:375 #, php-format msgid "Enable published content to be copied, edited and submitted as Change Requests, managed in %sRevision Queue%s." msgstr "" -#: admin/options.php:380 +#: admin/options.php:381 msgid "This restriction applies to users who are not full editors for the post type. To enable a role, add capabilities: revise_posts, revise_others_pages, etc." msgstr "" -#: admin/options.php:383 +#: admin/options.php:384 msgid "When a change request is published, update post publish date to current time." msgstr "" -#: admin/options.php:386 +#: admin/options.php:387 msgid "When a change request is published, update post modified date to current time." msgstr "" -#: admin/options.php:406 +#: admin/options.php:407 msgid "If a currently published post or page is edited and a future date set, the change will not be applied until the selected date." msgstr "" -#: admin/options.php:409 +#: admin/options.php:410 msgid "When a scheduled change is published, update post publish date to current time." msgstr "" -#: admin/options.php:412 +#: admin/options.php:413 msgid "When a scheduled change is published, update post modified date to current time." msgstr "" -#: admin/options.php:415 +#: admin/options.php:416 msgid "Publish scheduled changes asynchronously, via a secondary http request from the server. This is usually best since it eliminates delay, but some servers may not support it." msgstr "" -#: admin/options.php:433 +#: admin/options.php:434 msgid "This restriction applies to users who are not full editors for the post type. To enable a role, give it the edit_others_revisions capability." msgstr "" -#: admin/options.php:436 +#: admin/options.php:437 msgid "This restriction applies to users who are not full editors for the post type. To enable a role, give it the list_others_revisions capability." msgstr "" -#: admin/options.php:439 +#: admin/options.php:440 +msgid "Bypass the above restrictions for others' revisions to logged in user's own posts." +msgstr "" + +#: admin/options.php:443 msgid "If some revisions are missing from the queue, disable a performance enhancement for better compatibility with themes and plugins." msgstr "" -#: admin/options.php:444 +#: admin/options.php:448 msgid "Regenerate \"post has revision\" flags" msgstr "" -#: admin/options.php:460 +#: admin/options.php:464 msgid "For themes that block revision preview, hide preview links from non-Administrators" msgstr "" -#: admin/options.php:472 +#: admin/options.php:476 msgid "Published Post Slug" msgstr "" -#: admin/options.php:472 +#: admin/options.php:476 msgid "Revision Slug" msgstr "" -#: admin/options.php:472 +#: admin/options.php:476 msgid "Revision ID only" msgstr "" -#: admin/options.php:483 +#: admin/options.php:487 msgid "Some themes or plugins may require Revision Slug or Revision ID link type for proper template loading and field display." msgstr "" -#: admin/options.php:493 +#: admin/options.php:497 msgid "If disabled, Compare screen links to Revision Preview for approval" msgstr "" -#: admin/options.php:513 +#: admin/options.php:517 #, php-format msgid "For compatibility with Advanced Custom Fields, Beaver Builder and WPML, upgrade to PublishPress Revisions Pro." msgstr "" -#: admin/options.php:522 +#: admin/options.php:526 msgid "This may improve compatibility with some plugins." msgstr "" -#: admin/options.php:541 +#: admin/options.php:545 msgid "Modification Date" msgstr "" -#: admin/options.php:551 +#: admin/options.php:555 msgid "Show descriptive captions for PublishPress Revisions settings" msgstr "" -#: admin/options.php:571 admin/options.php:633 +#: admin/options.php:575 admin/options.php:637 msgid "select recipients" msgstr "" -#: admin/options.php:580 admin/options.php:598 +#: admin/options.php:584 admin/options.php:602 msgid "Never" msgstr "" -#: admin/options.php:580 admin/options.php:598 +#: admin/options.php:584 admin/options.php:602 msgid "By default" msgstr "" -#: admin/options.php:580 admin/options.php:598 +#: admin/options.php:584 admin/options.php:602 msgid "Always" msgstr "" -#: admin/options.php:662 +#: admin/options.php:666 msgid "To avoid notification failures, buffer emails for delayed sending once minute, hour or day limits are exceeded" msgstr "" -#: admin/options.php:679 +#: admin/options.php:683 msgid "Notification Buffer" msgstr "" -#: admin/options.php:707 +#: admin/options.php:711 msgid "Notification Log" msgstr "" -#: admin/options.php:736 +#: admin/options.php:740 msgid "Purge Notification Buffer" msgstr "" -#: admin/options.php:742 +#: admin/options.php:746 msgid "Truncate Notification Log" msgstr "" -#: admin/options.php:748 +#: admin/options.php:752 #, php-format msgid "Sent in last minute: %d / %d" msgstr "" -#: admin/options.php:749 +#: admin/options.php:753 #, php-format msgid "Sent in last hour: %d / %d" msgstr "" -#: admin/options.php:750 +#: admin/options.php:754 #, php-format msgid "Sent in last day: %d / %d" msgstr "" -#: admin/options.php:757 +#: admin/options.php:761 #, php-format msgid "Seconds until next buffer processing time: %d" msgstr "" -#: admin/options.php:766 +#: admin/options.php:770 msgid "Show Notification Log / Buffer" msgstr "" -#: admin/options.php:768 +#: admin/options.php:772 msgid "Show with message content" msgstr "" -#: admin/options.php:809 +#: admin/options.php:813 #, php-format msgid "network-wide control of \"%s\"" msgstr "" -#: admin/options.php:816 +#: admin/options.php:820 msgid "Specify which PublishPress Revisions Settings to control network-wide. Unselected settings are controlled separately on each site." msgstr "" -#: admin/options.php:898 +#: admin/options.php:902 msgid "All settings in this form (including those on unselected tabs) will be reset to DEFAULTS. Are you sure?" msgstr "" -#: admin/options.php:903 +#: admin/options.php:907 msgid "Revert to Defaults" msgstr "" @@ -952,76 +958,101 @@ msgstr "" msgid "(on approval)" msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:57 +#: admin/post-editor-workflow-ui_rvy.php:42 +msgid "Preview / Publish" +msgstr "" + +#: admin/post-editor-workflow-ui_rvy.php:42 +msgid "Preview / Approve" +msgstr "" + +#: admin/post-editor-workflow-ui_rvy.php:47 +msgid "View / Approve saved changes" +msgstr "" + +#: admin/post-editor-workflow-ui_rvy.php:49 +msgid "Preview / Submit" +msgstr "" + +#: admin/post-editor-workflow-ui_rvy.php:49 +msgid "View / Submit" +msgstr "" + +#: admin/post-editor-workflow-ui_rvy.php:50 +msgid "View / Submit saved changes" +msgstr "" + +#: admin/post-editor-workflow-ui_rvy.php:62 #, php-format msgid " %s Revision Edit" msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:69 +#: admin/post-editor-workflow-ui_rvy.php:74 msgid "Error Submitting Changes" msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:73 +#: admin/post-editor-workflow-ui_rvy.php:78 msgid "Submit Change Request" msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:75 +#: admin/post-editor-workflow-ui_rvy.php:80 msgid "Changes Submitted." msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:76 -#: admin/post-editor-workflow-ui_rvy.php:151 -#: admin/post-editor-workflow-ui_rvy.php:170 +#: admin/post-editor-workflow-ui_rvy.php:81 +#: admin/post-editor-workflow-ui_rvy.php:156 +#: admin/post-editor-workflow-ui_rvy.php:175 msgid "view" msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:89 +#: admin/post-editor-workflow-ui_rvy.php:94 msgid "Approve Changes" msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:92 rvy_init.php:237 rvy_init.php:248 +#: admin/post-editor-workflow-ui_rvy.php:97 rvy_init.php:226 rvy_init.php:237 +#: rvy_init.php:248 msgid "Publish Changes" msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:126 +#: admin/post-editor-workflow-ui_rvy.php:131 #, php-format msgid " %s Change Request" msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:135 +#: admin/post-editor-workflow-ui_rvy.php:140 #, php-format msgid " %s Scheduled Change" msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:147 +#: admin/post-editor-workflow-ui_rvy.php:152 msgid "Create Working Copy" msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:148 +#: admin/post-editor-workflow-ui_rvy.php:153 msgid "Create a working copy of this post" msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:149 +#: admin/post-editor-workflow-ui_rvy.php:154 msgid "Update post before creating copy." msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:150 +#: admin/post-editor-workflow-ui_rvy.php:155 msgid "Working Copy Ready." msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:153 +#: admin/post-editor-workflow-ui_rvy.php:158 msgid "Error Creating Copy" msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:166 +#: admin/post-editor-workflow-ui_rvy.php:171 msgid "Schedule Changes" msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:168 +#: admin/post-editor-workflow-ui_rvy.php:173 msgid "For custom field changes, edit a scheduled copy." msgstr "" -#: admin/post-editor-workflow-ui_rvy.php:169 +#: admin/post-editor-workflow-ui_rvy.php:174 msgid "Changes are Scheduled." msgstr "" @@ -1054,8 +1085,8 @@ msgid "Editor: " msgstr "" #: admin/revision-action_rvy.php:320 admin/revision-action_rvy.php:402 -#: admin/revision-action_rvy.php:1124 admin/revision-action_rvy.php:1149 -#: admin/revision-action_rvy.php:1218 +#: admin/revision-action_rvy.php:1126 admin/revision-action_rvy.php:1151 +#: admin/revision-action_rvy.php:1220 msgid "View it online: " msgstr "" @@ -1064,32 +1095,32 @@ msgstr "" msgid "The revision you submitted for the %1$s \"%2$s\" has been approved." msgstr "" -#: admin/revision-action_rvy.php:1120 admin/revision-action_rvy.php:1142 +#: admin/revision-action_rvy.php:1122 admin/revision-action_rvy.php:1144 #, php-format msgid "[%s] Scheduled Change Publication Notice" msgstr "" -#: admin/revision-action_rvy.php:1121 +#: admin/revision-action_rvy.php:1123 #, php-format msgid "The scheduled revision you submitted for the %1$s \"%2$s\" has been published." msgstr "" -#: admin/revision-action_rvy.php:1143 +#: admin/revision-action_rvy.php:1145 #, php-format msgid "A scheduled change to your %1$s \"%2$s\" has been published." msgstr "" -#: admin/revision-action_rvy.php:1146 admin/revision-action_rvy.php:1215 +#: admin/revision-action_rvy.php:1148 admin/revision-action_rvy.php:1217 #, php-format msgid "It was submitted by %1$s." msgstr "" -#: admin/revision-action_rvy.php:1210 +#: admin/revision-action_rvy.php:1212 #, php-format msgid "[%s] Scheduled Change Publication" msgstr "" -#: admin/revision-action_rvy.php:1212 +#: admin/revision-action_rvy.php:1214 #, php-format msgid "A scheduled change to the %1$s \"%2$s\" has been published." msgstr "" @@ -1261,48 +1292,48 @@ msgstr "" msgid "%sView Published Post%s" msgstr "" -#: front_rvy.php:317 +#: front_rvy.php:319 front_rvy.php:340 front_rvy.php:360 +msgid "Publish now" +msgstr "" + +#: front_rvy.php:324 #, php-format msgid "This is a Working Copy. %s %s %s" msgstr "" -#: front_rvy.php:329 +#: front_rvy.php:336 #, php-format msgid "This is a Change Request (requested publish date: %s). %s %s %s" msgstr "" -#: front_rvy.php:333 front_rvy.php:353 -msgid "Publish now" -msgstr "" - -#: front_rvy.php:335 +#: front_rvy.php:342 #, php-format msgid "This is a Change Request. %s %s %s" msgstr "" -#: front_rvy.php:346 +#: front_rvy.php:353 msgid "This revision is very new, preview may not be synchronized with theme." msgstr "" -#: front_rvy.php:347 +#: front_rvy.php:354 msgid "Reload" msgstr "" -#: front_rvy.php:355 +#: front_rvy.php:362 #, php-format msgid "This is a Scheduled Change (for publication on %s). %s %s %s" msgstr "" -#: front_rvy.php:367 +#: front_rvy.php:374 #, php-format msgid "This is the Current Revision. %s" msgstr "" -#: front_rvy.php:372 +#: front_rvy.php:379 msgid "Restore" msgstr "" -#: front_rvy.php:373 +#: front_rvy.php:380 #, php-format msgid "This is a Past Revision (from %s). %s %s" msgstr "" @@ -1357,30 +1388,26 @@ msgstr "" msgid "This plugin can be deleted." msgstr "" -#: revisionary.php:83 revisionary.php:157 +#: revisionary.php:83 revisionary.php:161 #, php-format msgid "Another copy of PublishPress Revisions (or Revisionary) is already activated (version %1$s: \"%2$s\")" msgstr "" -#: revisionary.php:85 revisionary.php:159 +#: revisionary.php:85 revisionary.php:163 #, php-format msgid "Another copy of PublishPress Revisions (or Revisionary) is already activated (version %1$s)" msgstr "" -#: revisionary.php:178 +#: revisionary.php:182 #, php-format msgid "PublishPress Revisions requires PHP version %s or higher." msgstr "" -#: revisionary.php:185 +#: revisionary.php:189 #, php-format msgid "PublishPress Revisions requires WordPress version %s or higher." msgstr "" -#: rvy_init.php:226 -msgid "Publish Revision" -msgstr "" - #: rvy_init.php:226 rvy_init.php:237 rvy_init.php:248 msgid "Save Revision" msgstr "" From af1b6a3b2ac70df52a8d80849bec54e2df93262c Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Thu, 30 Sep 2021 14:25:47 -0400 Subject: [PATCH 123/193] Update change log --- readme.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/readme.txt b/readme.txt index 4a7587fe..314c842e 100644 --- a/readme.txt +++ b/readme.txt @@ -106,6 +106,8 @@ Follow PublishPress on [Facebook](https://www.facebook.com/publishpress), [Twitt = 3.0-beta = * New revision submission mechanism: create a working copy first instead of editing existing post. Then submit as a Change Request before scheduling or publication +* Changes to plugin-related UI in Post / Revision editor +* Admin Bar includes Create Working Copy button * Adjusted Revision Queue filter captions * Permissions integration: revise_others_posts, revise_others_pages, etc. capabilties are equivalent to list_others capabilities in allowing uneditable items to be listed From b4ae2ed80c241fcddac666890ac34fa7121f213c Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Thu, 30 Sep 2021 14:26:36 -0400 Subject: [PATCH 124/193] Update beta version tag --- revisionary.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/revisionary.php b/revisionary.php index 213502ac..ebde795a 100644 --- a/revisionary.php +++ b/revisionary.php @@ -5,7 +5,7 @@ * Description: Maintain published content with teamwork and precision using the Revisions model to submit, approve and schedule changes. * Author: PublishPress * Author URI: https://publishpress.com - * Version: 3.0-beta3.3 + * Version: 3.0-beta4 * Text Domain: revisionary * Domain Path: /languages/ * Min WP Version: 4.9.7 @@ -96,7 +96,7 @@ function($links, $file) // register these functions before any early exits so normal activation/deactivation can still run with RS_DEBUG register_activation_hook(__FILE__, function() { - $current_version = '3.0-beta3.3'; + $current_version = '3.0-beta4'; $last_ver = get_option('revisionary_last_version'); @@ -191,7 +191,7 @@ function() return; } - define('PUBLISHPRESS_REVISIONS_VERSION', '3.0-beta3.3'); + define('PUBLISHPRESS_REVISIONS_VERSION', '3.0-beta4'); if ( ! defined( 'RVY_VERSION' ) ) { define( 'RVY_VERSION', PUBLISHPRESS_REVISIONS_VERSION ); // back compat From 431211e305124ebde5590e52b2beefa48fdd6a14 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Thu, 30 Sep 2021 14:54:14 -0400 Subject: [PATCH 125/193] Display notice on Revision Queue, Settings if AUTOSAVE_INTERVAL set too high Autosaves are used when a working copy is created or submitted from the editor screen with unsaved modifications. --- admin/admin_rvy.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/admin/admin_rvy.php b/admin/admin_rvy.php index 281dcd24..8356bdc9 100644 --- a/admin/admin_rvy.php +++ b/admin/admin_rvy.php @@ -101,6 +101,15 @@ function __construct() { add_filter('presspermit_status_control_scripts', [$this, 'fltDisableStatusControlScripts']); add_filter('cme_plugin_capabilities', [$this, 'fltPublishPressCapsSection']); + + if (defined('AUTOSAVE_INTERVAL') && (AUTOSAVE_INTERVAL > 5) && !defined('PP_REVISIONS_IGNORE_AUTOSAVE_INTERVAL')) { + if (!empty($_REQUEST['page']) && in_array($_REQUEST['page'], ['revisionary-settings', 'rvy-net_options', 'revisionary-q'])) { + add_action('all_admin_notices', function() { + $message = sprintf(__( 'For proper results, please set the AUTOSAVE_INTERVAL constant to 5 or lower.', 'revisionary' )); + echo "
    " . $message . '
    '; + }); + } + } } function admin_scripts() { From 7deb20f9ffa78e69fc847350dbe16acf84aedea4 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Thu, 30 Sep 2021 17:13:06 -0400 Subject: [PATCH 126/193] Revision Preview: custom field display safeguard (port over from Pro) --- front_rvy.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/front_rvy.php b/front_rvy.php index 31062e34..2f134fde 100644 --- a/front_rvy.php +++ b/front_rvy.php @@ -181,6 +181,15 @@ function act_template_redirect() { do_action('revisionary_preview_load', $revision_id, $published_post_id); + if (!defined('REVISIONARY_PREVIEW_NO_META_MIRROR')) { + // For display integrity, copy any missing keys from published post. Note: Any fields missing from revision are left unmodified at revision approval. + revisionary_copy_postmeta($published_post_id, $revision_id, ['empty_target_only' => true]); + } + + if (!defined('REVISIONARY_PREVIEW_NO_TERM_MIRROR')) { + revisionary_copy_terms($published_post_id, $revision_id, ['empty_target_only' => true]); + } + if (defined('PUBLISHPRESS_MULTIPLE_AUTHORS_VERSION') && !defined('REVISIONARY_DISABLE_MA_PREVIEW_CORRECTION') && rvy_in_revision_workflow($post)) { $_authors = get_multiple_authors($revision_id); From c3c71c50b710121af5561b88e8c51b92a0ad2d1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Valenti=CC=81n=20Garci=CC=81a?= Date: Thu, 7 Oct 2021 12:41:40 -0500 Subject: [PATCH 127/193] Make Update revision secondary style --- admin/rvy_revision-block-edit.dev.js | 8 ++--- admin/rvy_revision-block-edit.js | 48 +--------------------------- 2 files changed, 5 insertions(+), 51 deletions(-) diff --git a/admin/rvy_revision-block-edit.dev.js b/admin/rvy_revision-block-edit.dev.js index 3a82aebb..3a929888 100644 --- a/admin/rvy_revision-block-edit.dev.js +++ b/admin/rvy_revision-block-edit.dev.js @@ -243,7 +243,7 @@ jQuery(document).ready( function($) { var RvyRecaptionSaveDraft = function() { if ($('button.editor-post-save-draft:not(.rvy-recaption)').length) { RvyRecaptionElement('button.editor-post-save-draft:not(.rvy-recaption)', rvyObjEdit.saveRevision); - $('button.editor-post-save-draft:not(.rvy-recaption)').addClass('rvy-recaption').removeClass('is-tertiary').addClass('is-primary').addClass('ppr-purple-button'); + $('button.editor-post-save-draft:not(.rvy-recaption)').addClass('rvy-recaption').removeClass('is-tertiary').addClass('is-secondary').addClass('ppr-purple-button'); } if (($('div.edit-post-header__settings a.editor-post-preview:visible').length || $('div.block-editor-post-preview__dropdown button.block-editor-post-preview__button-toggle:visible').length) && !$('a.rvy-post-preview').length) { @@ -263,13 +263,13 @@ jQuery(document).ready( function($) { if (rvyObjEdit.viewCaption) { RvyRecaptionElement('.block-editor-post-preview__button-toggle', rvyObjEdit.viewCaption); $('button.block-editor-post-preview__button-toggle:not(.ppr-purple-button)').removeClass('is-tertiary').addClass('is-secondary').addClass('ppr-purple-button'); - } + } } if (rvyObjEdit.viewTitle) { $('div.edit-post-header__settings a.rvy-post-preview').attr('title', rvyObjEdit.viewTitle); } - + } else { if (!rvyObjEdit.multiPreviewActive) { // WP < 5.5 if (!$('a.editor-post-preview').next('a.rvy-post-preview').length) { @@ -279,7 +279,7 @@ jQuery(document).ready( function($) { if (rvyObjEdit.viewCaption) { RvyRecaptionElement('div.edit-post-header__settings a.rvy-post-preview', rvyObjEdit.viewCaption); } - + if (rvyObjEdit.viewTitle) { $('div.edit-post-header__settings a.rvy-post-preview').attr('title', rvyObjEdit.viewTitle); } diff --git a/admin/rvy_revision-block-edit.js b/admin/rvy_revision-block-edit.js index af2da03e..9fdcccda 100644 --- a/admin/rvy_revision-block-edit.js +++ b/admin/rvy_revision-block-edit.js @@ -1,47 +1 @@ -jQuery(document).ready(function($){function RvyRecaptionElement(btnSelector,btnCaption,btnIcon=''){let node=document.querySelector(btnSelector);if(node){document.querySelector(btnSelector).innerText=`${btnCaption}`;if(btnIcon){document.querySelector(btnSelector).innerHTML=`${btnCaption}`;}}} -function RvySetPublishButtonCaption(caption,waitForSaveDraftButton,forceRegen,timeout){if(caption==''&&(typeof rvyObjEdit['publishCaptionCurrent']!='undefined')){caption=rvyObjEdit.publishCaptionCurrent;}else{rvyObjEdit.publishCaptionCurrent=caption;} -if(typeof waitForSaveDraftButton=='undefined'){waitForSaveDraftButton=false;} -if((!waitForSaveDraftButton||$('button.editor-post-switch-to-draft').filter(':visible').length||$('button.editor-post-save-draft').filter(':visible').length)&&$('button.editor-post-publish-button').length){RvyRecaptionElement('button.editor-post-publish-button',caption);}} -var RvyDetectPublishOptionsDivClosureInterval='';var RvyDetectPublishOptionsDiv=function(){if($('div.components-modal__header').length){clearInterval(RvyDetectPublishOptionsDivInterval);if($('span.pp-recaption-button').first()){rvyObjEdit.overrideColor=$('span.pp-recaption-button').first().css('color');} -var RvyDetectPublishOptionsClosure=function(){if(!$('div.components-modal__header').length){clearInterval(RvyDetectPublishOptionsDivClosureInterval);$('span.pp-recaption-button').hide();RvyInitInterval=setInterval(RvyInitializeBlockEditorModifications,50);RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,1000);}} -RvyDetectPublishOptionsDivClosureInterval=setInterval(RvyDetectPublishOptionsClosure,200);}} -var RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,1000);rvyObjEdit.publishCaptionCurrent=rvyObjEdit.publish;var RvyInitializeBlockEditorModifications=function(){if(($('button.editor-post-publish-button').length||$('button.editor-post-publish-panel__toggle').length)&&($('button.editor-post-switch-to-draft').length||$('button.editor-post-save-draft').length)){clearInterval(RvyInitInterval);if($('button.editor-post-publish-panel__toggle').length){if(typeof rvyObjEdit.prePublish!='undefined'&&rvyObjEdit.prePublish){RvyRecaptionElement('button.editor-post-publish-panel__toggle',rvyObjEdit.prePublish);} -$(document).on('click','button.editor-post-publish-panel__toggle,span.pp-recaption-prepublish-button',function(){RvySetPublishButtonCaption('',false,true);});}else{RvySetPublishButtonCaption(rvyObjEdit.publish,false,true);} -$('select.editor-post-author__select').parent().hide();$('button.editor-post-trash').parent().show();$('button.editor-post-switch-to-draft').hide();$('div.components-notice-list').hide();} -if(($('button.editor-post-publish-button').length||$('button.editor-post-publish-panel__toggle').length)){$('button.editor-post-publish-button').hide();$('button.editor-post-publish-panel__toggle').hide();}} -var RvyInitInterval=setInterval(RvyInitializeBlockEditorModifications,50);var RvyHideElements=function(){var ediv='div.edit-post-sidebar ';if($(ediv+'div.edit-post-post-visibility,'+ediv+'div.editor-post-link,'+ediv+'select.editor-post-author__select:visible,'+ediv+'div.components-base-control__field input[type="checkbox"]:visible,'+ediv+'button.editor-post-switch-to-draft,'+ediv+'button.editor-post-trash').length){$(ediv+'select.editor-post-author__select').parent().hide();$(ediv+'button.editor-post-trash').parent().show();$(ediv+'button.editor-post-switch-to-draft').hide();$(ediv+'div.editor-post-link').parent().hide();$(ediv+'div.components-notice-list').hide();if(!rvyObjEdit.scheduledRevisionsEnabled){$(ediv+'div.edit-post-post-schedule').hide();} -$(ediv+'#publishpress-notifications').hide();$('#icl_div').closest('div.edit-post-meta-boxes-area').hide();} -if($('button.editor-post-publish-button').length){$('button.editor-post-publish-button').hide();}} -var RvyHideInterval=setInterval(RvyHideElements,50);var RvySubmissionUI=function(){if($('div.edit-post-post-schedule').length){var refSelector='div.edit-post-post-schedule';}else{var refSelector='div.edit-post-post-visibility';} -if(rvyObjEdit.ajaxurl&&!$('div.edit-post-revision-status').length&&$(refSelector).length){$(refSelector).before('
    ' -+''+rvyObjEdit.statusLabel+'' -+'
    ' -+rvyObjEdit[rvyObjEdit.currentStatus+'StatusCaption'] -+'
    ' -+'
    ');if(rvyObjEdit[rvyObjEdit.currentStatus+'ActionURL']){var url=rvyObjEdit[rvyObjEdit.currentStatus+'ActionURL'];}else{var url='javascript:void(0)';} -if(rvyObjEdit[rvyObjEdit.currentStatus+'ActionCaption']){$(refSelector).after('');} -if(RvyApprovalLocked!=$('button.revision-approve').prop('disabled')){if(RvyApprovalLocked){$('button.revision-approve').html('Revision needs update.');}else{$('button.revision-approve').html(rvyObjEdit[rvyObjEdit.currentStatus+'ActionCaption']);}} -$('button.revision-approve').prop('disabled',RvyApprovalLocked&&('pending'==rvyObjEdit.currentStatus));$('.edit-post-post-schedule__toggle').after('');if(rvyObjEdit[rvyObjEdit.currentStatus+'DeletionURL']){$('button.editor-post-trash').wrap('');}} -$('button.post-schedule-footnote').toggle(!/\d/.test($('button.edit-post-post-schedule__toggle').html()));} -var RvyUIInterval=setInterval(RvySubmissionUI,100);var RvyApprovalLocked=false;$(document).on('click','div.edit-post-visual-editor *, div.editor-inserter *',function(){if('pending'==rvyObjEdit.currentStatus){RvyApprovalLocked=true;$('button.revision-approve').prop('disabled',true);}});$(document).on('click','button.edit-post-post-schedule__toggle',function(){RvyApprovalLocked=true;$('button.revision-approve').prop('disabled',true);});$(document).on('click','button.editor-post-save-draft',function(){RvyApprovalLocked=false;$('button.revision-approve').prop('disabled',false);$('button.revision-approve').html(rvyObjEdit[rvyObjEdit.currentStatus+'ActionCaption']);});function RvyGetRandomInt(max){return Math.floor(Math.random()*max);} -$(document).on('click','div.postbox-container',function(){$('button.revision-approve').prop('disabled','disabled');});$(document).on('click','button.revision-approve',function(){if(!rvyObjEdit[rvyObjEdit.currentStatus+'ActionURL']){var revisionaryCreateDone=function(){$('.revision-approve').hide();$('.revision-created').show();rvyObjEdit.currentStatus='pending';$('.rvy-current-status').html(rvyObjEdit[rvyObjEdit.currentStatus+'StatusCaption']);$('a.revision-edit').attr('href',rvyObjEdit[rvyObjEdit.currentStatus+'CompletedURL']).show();} -var revisionaryCreateError=function(data,txtStatus){$('div.rvy-creation-ui').html(rvyObjEdit[rvyObjEdit.currentStatus+'ErrorCaption']);} -var data={'rvy_ajax_field':rvyObjEdit[rvyObjEdit.currentStatus+'AjaxField'],'rvy_ajax_value':wp.data.select('core/editor').getCurrentPostId(),'nc':RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryCreateDone,error:revisionaryCreateError});}});var RvyRecaptionSaveDraft=function(){if($('button.editor-post-save-draft:not(.rvy-recaption)').length){RvyRecaptionElement('button.editor-post-save-draft:not(.rvy-recaption)',rvyObjEdit.saveRevision);$('button.editor-post-save-draft:not(.rvy-recaption)').addClass('rvy-recaption').removeClass('is-tertiary').addClass('is-primary').addClass('ppr-purple-button');} -if(($('div.edit-post-header__settings a.editor-post-preview:visible').length||$('div.block-editor-post-preview__dropdown button.block-editor-post-preview__button-toggle:visible').length)&&!$('a.rvy-post-preview').length){if(rvyObjEdit.viewURL&&$('.block-editor-post-preview__button-toggle').length){if($('div.edit-post-header-preview__grouping-external').length==1){var svgElem=$('div.edit-post-header-preview__grouping-external a svg').clone()[0].outerHTML;$('div.edit-post-header-preview__grouping-external').after('');} -if(rvyObjEdit.viewCaption){RvyRecaptionElement('.block-editor-post-preview__button-toggle',rvyObjEdit.viewCaption);$('button.block-editor-post-preview__button-toggle:not(.ppr-purple-button)').removeClass('is-tertiary').addClass('is-secondary').addClass('ppr-purple-button');}} -if(rvyObjEdit.viewTitle){$('div.edit-post-header__settings a.rvy-post-preview').attr('title',rvyObjEdit.viewTitle);}}else{if(!rvyObjEdit.multiPreviewActive){if(!$('a.editor-post-preview').next('a.rvy-post-preview').length){original=$('div.edit-post-header__settings a.editor-post-preview');$(original).after(original.clone().attr('href',rvyObjEdit.viewURL).attr('target','_blank').removeClass('editor-post-preview').addClass('rvy-post-preview').css('margin','0 10px 0 10px'));if(rvyObjEdit.viewCaption){RvyRecaptionElement('div.edit-post-header__settings a.rvy-post-preview',rvyObjEdit.viewCaption);} -if(rvyObjEdit.viewTitle){$('div.edit-post-header__settings a.rvy-post-preview').attr('title',rvyObjEdit.viewTitle);}} -if(rvyObjEdit.previewTitle&&!$('a.editor-post-preview').attr('title')){$('div.edit-post-header__settings a.editor-post-preview').attr('title',rvyObjEdit.previewTitle);}}} -if(rvyObjEdit.revisionEdits&&$('div.edit-post-sidebar a.editor-post-last-revision__title:visible').length&&!$('div.edit-post-sidebar a.editor-post-last-revision__title.rvy-recaption').length){$('div.edit-post-sidebar a.editor-post-last-revision__title').html(rvyObjEdit.revisionEdits);$('div.edit-post-sidebar a.editor-post-last-revision__title').addClass('rvy-recaption');}} -var RvyRecaptionSaveDraftInterval=setInterval(RvyRecaptionSaveDraft,100);}); \ No newline at end of file +jQuery(document).ready(function($){function RvyRecaptionElement(btnSelector,btnCaption,btnIcon=""){let node=document.querySelector(btnSelector);if(node){document.querySelector(btnSelector).innerText=`${btnCaption}`;if(btnIcon){document.querySelector(btnSelector).innerHTML=`${btnCaption}`}}}function RvySetPublishButtonCaption(caption,waitForSaveDraftButton,forceRegen,timeout){if(caption==""&&typeof rvyObjEdit["publishCaptionCurrent"]!="undefined"){caption=rvyObjEdit.publishCaptionCurrent}else{rvyObjEdit.publishCaptionCurrent=caption}if(typeof waitForSaveDraftButton=="undefined"){waitForSaveDraftButton=false}if((!waitForSaveDraftButton||$("button.editor-post-switch-to-draft").filter(":visible").length||$("button.editor-post-save-draft").filter(":visible").length)&&$("button.editor-post-publish-button").length){RvyRecaptionElement("button.editor-post-publish-button",caption)}}var RvyDetectPublishOptionsDivClosureInterval="";var RvyDetectPublishOptionsDiv=function(){if($("div.components-modal__header").length){clearInterval(RvyDetectPublishOptionsDivInterval);if($("span.pp-recaption-button").first()){rvyObjEdit.overrideColor=$("span.pp-recaption-button").first().css("color")}var RvyDetectPublishOptionsClosure=function(){if(!$("div.components-modal__header").length){clearInterval(RvyDetectPublishOptionsDivClosureInterval);$("span.pp-recaption-button").hide();RvyInitInterval=setInterval(RvyInitializeBlockEditorModifications,50);RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,1e3)}};RvyDetectPublishOptionsDivClosureInterval=setInterval(RvyDetectPublishOptionsClosure,200)}};var RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,1e3);rvyObjEdit.publishCaptionCurrent=rvyObjEdit.publish;var RvyInitializeBlockEditorModifications=function(){if(($("button.editor-post-publish-button").length||$("button.editor-post-publish-panel__toggle").length)&&($("button.editor-post-switch-to-draft").length||$("button.editor-post-save-draft").length)){clearInterval(RvyInitInterval);if($("button.editor-post-publish-panel__toggle").length){if(typeof rvyObjEdit.prePublish!="undefined"&&rvyObjEdit.prePublish){RvyRecaptionElement("button.editor-post-publish-panel__toggle",rvyObjEdit.prePublish)}$(document).on("click","button.editor-post-publish-panel__toggle,span.pp-recaption-prepublish-button",function(){RvySetPublishButtonCaption("",false,true)})}else{RvySetPublishButtonCaption(rvyObjEdit.publish,false,true)}$("select.editor-post-author__select").parent().hide();$("button.editor-post-trash").parent().show();$("button.editor-post-switch-to-draft").hide();$("div.components-notice-list").hide()}if($("button.editor-post-publish-button").length||$("button.editor-post-publish-panel__toggle").length){$("button.editor-post-publish-button").hide();$("button.editor-post-publish-panel__toggle").hide()}};var RvyInitInterval=setInterval(RvyInitializeBlockEditorModifications,50);var RvyHideElements=function(){var ediv="div.edit-post-sidebar ";if($(ediv+"div.edit-post-post-visibility,"+ediv+"div.editor-post-link,"+ediv+"select.editor-post-author__select:visible,"+ediv+'div.components-base-control__field input[type="checkbox"]:visible,'+ediv+"button.editor-post-switch-to-draft,"+ediv+"button.editor-post-trash").length){$(ediv+"select.editor-post-author__select").parent().hide();$(ediv+"button.editor-post-trash").parent().show();$(ediv+"button.editor-post-switch-to-draft").hide();$(ediv+"div.editor-post-link").parent().hide();$(ediv+"div.components-notice-list").hide();if(!rvyObjEdit.scheduledRevisionsEnabled){$(ediv+"div.edit-post-post-schedule").hide()}$(ediv+"#publishpress-notifications").hide();$("#icl_div").closest("div.edit-post-meta-boxes-area").hide()}if($("button.editor-post-publish-button").length){$("button.editor-post-publish-button").hide()}};var RvyHideInterval=setInterval(RvyHideElements,50);var RvySubmissionUI=function(){if($("div.edit-post-post-schedule").length){var refSelector="div.edit-post-post-schedule"}else{var refSelector="div.edit-post-post-visibility"}if(rvyObjEdit.ajaxurl&&!$("div.edit-post-revision-status").length&&$(refSelector).length){$(refSelector).before('
    '+""+rvyObjEdit.statusLabel+""+'
    '+rvyObjEdit[rvyObjEdit.currentStatus+"StatusCaption"]+"
    "+"
    ");if(rvyObjEdit[rvyObjEdit.currentStatus+"ActionURL"]){var url=rvyObjEdit[rvyObjEdit.currentStatus+"ActionURL"]}else{var url="javascript:void(0)"}if(rvyObjEdit[rvyObjEdit.currentStatus+"ActionCaption"]){$(refSelector).after('")}if(RvyApprovalLocked!=$("button.revision-approve").prop("disabled")){if(RvyApprovalLocked){$("button.revision-approve").html("Revision needs update.")}else{$("button.revision-approve").html(rvyObjEdit[rvyObjEdit.currentStatus+"ActionCaption"])}}$("button.revision-approve").prop("disabled",RvyApprovalLocked&&"pending"==rvyObjEdit.currentStatus);$(".edit-post-post-schedule__toggle").after('");if(rvyObjEdit[rvyObjEdit.currentStatus+"DeletionURL"]){$("button.editor-post-trash").wrap('')}}$("button.post-schedule-footnote").toggle(!/\d/.test($("button.edit-post-post-schedule__toggle").html()))};var RvyUIInterval=setInterval(RvySubmissionUI,100);var RvyApprovalLocked=false;$(document).on("click","div.edit-post-visual-editor *, div.editor-inserter *",function(){if("pending"==rvyObjEdit.currentStatus){RvyApprovalLocked=true;$("button.revision-approve").prop("disabled",true)}});$(document).on("click","button.edit-post-post-schedule__toggle",function(){RvyApprovalLocked=true;$("button.revision-approve").prop("disabled",true)});$(document).on("click","button.editor-post-save-draft",function(){RvyApprovalLocked=false;$("button.revision-approve").prop("disabled",false);$("button.revision-approve").html(rvyObjEdit[rvyObjEdit.currentStatus+"ActionCaption"])});function RvyGetRandomInt(max){return Math.floor(Math.random()*max)}$(document).on("click","div.postbox-container",function(){$("button.revision-approve").prop("disabled","disabled")});$(document).on("click","button.revision-approve",function(){if(!rvyObjEdit[rvyObjEdit.currentStatus+"ActionURL"]){var revisionaryCreateDone=function(){$(".revision-approve").hide();$(".revision-created").show();rvyObjEdit.currentStatus="pending";$(".rvy-current-status").html(rvyObjEdit[rvyObjEdit.currentStatus+"StatusCaption"]);$("a.revision-edit").attr("href",rvyObjEdit[rvyObjEdit.currentStatus+"CompletedURL"]).show()};var revisionaryCreateError=function(data,txtStatus){$("div.rvy-creation-ui").html(rvyObjEdit[rvyObjEdit.currentStatus+"ErrorCaption"])};var data={rvy_ajax_field:rvyObjEdit[rvyObjEdit.currentStatus+"AjaxField"],rvy_ajax_value:wp.data.select("core/editor").getCurrentPostId(),nc:RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryCreateDone,error:revisionaryCreateError})}});var RvyRecaptionSaveDraft=function(){if($("button.editor-post-save-draft:not(.rvy-recaption)").length){RvyRecaptionElement("button.editor-post-save-draft:not(.rvy-recaption)",rvyObjEdit.saveRevision);$("button.editor-post-save-draft:not(.rvy-recaption)").addClass("rvy-recaption").removeClass("is-tertiary").addClass("is-secondary").addClass("ppr-purple-button")}if(($("div.edit-post-header__settings a.editor-post-preview:visible").length||$("div.block-editor-post-preview__dropdown button.block-editor-post-preview__button-toggle:visible").length)&&!$("a.rvy-post-preview").length){if(rvyObjEdit.viewURL&&$(".block-editor-post-preview__button-toggle").length){if($("div.edit-post-header-preview__grouping-external").length==1){var svgElem=$("div.edit-post-header-preview__grouping-external a svg").clone()[0].outerHTML;$("div.edit-post-header-preview__grouping-external").after('")}if(rvyObjEdit.viewCaption){RvyRecaptionElement(".block-editor-post-preview__button-toggle",rvyObjEdit.viewCaption);$("button.block-editor-post-preview__button-toggle:not(.ppr-purple-button)").removeClass("is-tertiary").addClass("is-secondary").addClass("ppr-purple-button")}}if(rvyObjEdit.viewTitle){$("div.edit-post-header__settings a.rvy-post-preview").attr("title",rvyObjEdit.viewTitle)}}else{if(!rvyObjEdit.multiPreviewActive){if(!$("a.editor-post-preview").next("a.rvy-post-preview").length){original=$("div.edit-post-header__settings a.editor-post-preview");$(original).after(original.clone().attr("href",rvyObjEdit.viewURL).attr("target","_blank").removeClass("editor-post-preview").addClass("rvy-post-preview").css("margin","0 10px 0 10px"));if(rvyObjEdit.viewCaption){RvyRecaptionElement("div.edit-post-header__settings a.rvy-post-preview",rvyObjEdit.viewCaption)}if(rvyObjEdit.viewTitle){$("div.edit-post-header__settings a.rvy-post-preview").attr("title",rvyObjEdit.viewTitle)}}if(rvyObjEdit.previewTitle&&!$("a.editor-post-preview").attr("title")){$("div.edit-post-header__settings a.editor-post-preview").attr("title",rvyObjEdit.previewTitle)}}}if(rvyObjEdit.revisionEdits&&$("div.edit-post-sidebar a.editor-post-last-revision__title:visible").length&&!$("div.edit-post-sidebar a.editor-post-last-revision__title.rvy-recaption").length){$("div.edit-post-sidebar a.editor-post-last-revision__title").html(rvyObjEdit.revisionEdits);$("div.edit-post-sidebar a.editor-post-last-revision__title").addClass("rvy-recaption")}};var RvyRecaptionSaveDraftInterval=setInterval(RvyRecaptionSaveDraft,100)}); From 8371a33810a7d5ba0d99244debc5ef9ec8870a6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Valenti=CC=81n=20Garci=CC=81a?= Date: Thu, 7 Oct 2021 13:07:25 -0500 Subject: [PATCH 128/193] Use secondary style for view buttons --- admin/revisionary.css | 3 ++- admin/rvy_post-block-edit.dev.js | 4 ++-- admin/rvy_post-block-edit.js | 33 +--------------------------- admin/rvy_revision-block-edit.dev.js | 2 +- admin/rvy_revision-block-edit.js | 2 +- 5 files changed, 7 insertions(+), 37 deletions(-) diff --git a/admin/revisionary.css b/admin/revisionary.css index a69e5b77..1fe16a55 100644 --- a/admin/revisionary.css +++ b/admin/revisionary.css @@ -546,7 +546,8 @@ div.components-panel div.revision-created { margin: 15px 0 15px 0; } -.ppr-purple-button.components-button.is-tertiary { +.edit-post-sidebar .ppr-purple-button.components-button.is-tertiary, +.edit-post-sidebar .ppr-purple-button.components-button.is-secondary { padding: 0 7px; } diff --git a/admin/rvy_post-block-edit.dev.js b/admin/rvy_post-block-edit.dev.js index 4b40e508..ba8279fa 100644 --- a/admin/rvy_post-block-edit.dev.js +++ b/admin/rvy_post-block-edit.dev.js @@ -38,7 +38,7 @@ jQuery(document).ready( function($) { + '' + rvyObjEdit.completedCaption + ' ' - + '' + + '' + rvyObjEdit.completedLinkCaption + ''; if (rvyObjEdit.scheduleCaption) { @@ -55,7 +55,7 @@ jQuery(document).ready( function($) { + '' + rvyObjEdit.scheduledCaption + ' ' - + '' + + '' + rvyObjEdit.scheduledLinkCaption + ''; } } diff --git a/admin/rvy_post-block-edit.js b/admin/rvy_post-block-edit.js index 108c7578..6833b8da 100644 --- a/admin/rvy_post-block-edit.js +++ b/admin/rvy_post-block-edit.js @@ -1,32 +1 @@ -jQuery(document).ready(function($){if(rvyObjEdit.scheduledRevisionsURL||rvyObjEdit.pendingRevisionsURL){var RvyPendingRevPanel=function(){var ediv='div.edit-post-sidebar ';if(rvyObjEdit.scheduledRevisionsURL&&!$(ediv+'div.edit-post-last-revision__panel a.rvy-scheduled-revisions').length){var sclone=$('div.edit-post-last-revision__panel a:first').clone().addClass('rvy-scheduled-revisions').attr('href',rvyObjEdit.scheduledRevisionsURL).html(rvyObjEdit.scheduledRevisionsCaption);$(ediv+'div.edit-post-last-revision__panel a:last').after(sclone);} -if(rvyObjEdit.pendingRevisionsURL&&!$(ediv+'div.edit-post-last-revision__panel a.rvy-pending-revisions').length){var pclone=$('div.edit-post-last-revision__panel a:first').clone().addClass('rvy-pending-revisions').attr('href',rvyObjEdit.pendingRevisionsURL).html(rvyObjEdit.pendingRevisionsCaption);$(ediv+'div.edit-post-last-revision__panel a:last').after(pclone);} -$('div.edit-post-last-revision__panel').css('height','inherit');} -setInterval(RvyPendingRevPanel,200);} -var rvyIsPublished=false;var RvySubmissionUI=function(){if(rvyObjEdit.ajaxurl&&!$('button.revision-approve').length){var html='
    ' -+'';if(rvyObjEdit.scheduleCaption){let postStatus=wp.data.select('core/editor').getCurrentPostAttribute('status');var publishedStatuses=Object.keys(rvyObjEdit.publishedStatuses).map(function(key){return rvyObjEdit.publishedStatuses[key];});rvyIsPublished=publishedStatuses.indexOf(postStatus)>=0;if(rvyIsPublished){html+='' -+'';}} -html+='
    ';$('div.edit-post-post-schedule').after(html);if(rvyCreationDisabled){$('button.revision-approve').prop('disabled','disabled');$('button.revision-schedule').prop('disabled','disabled');$('a.revision-approve').attr('title',rvyObjEdit.actionDisabledTitle);$('a.revision-schedule').attr('title',rvyObjEdit.scheduleDisabledTitle);}else{$('button.revision-approve').prop('disabled',false);$('button.revision-schedule').prop('disabled',false);$('a.revision-approve').attr('title',rvyObjEdit.actionTitle);$('a.revision-schedule').attr('title',rvyObjEdit.scheduleTitle);}}} -var RvyUIInterval=setInterval(RvySubmissionUI,200);function RvyGetRandomInt(max){return Math.floor(Math.random()*max);} -var rvyCreationDisabled=false;$(document).on('click','div.postbox-container',function(){rvyCreationDisabled=true;$('button.revision-approve').prop('disabled','disabled');$('button.revision-schedule').prop('disabled','disabled');$('a.revision-approve').attr('title',rvyObjEdit.actionDisabledTitle);$('a.revision-schedule').attr('title',rvyObjEdit.scheduleDisabledTitle);});$(document).on('click','button.editor-post-publish-button',function(){rvyCreationDisabled=false;$('button.revision-approve').prop('disabled',false);$('button.revision-schedule').prop('disabled',false);$('a.revision-approve').attr('title',rvyObjEdit.actionTitle);$('a.revision-schedule').attr('title',rvyObjEdit.scheduleTitle);});$(document).on('click','button.revision-create',function(){if($('a.revision-create').attr('disabled')){return;} -var revisionaryCreateDone=function(){$('.revision-create').hide();$('.revision-created').show();$('button.revision-created a').attr('href',rvyObjEdit.completedURL);} -var revisionaryCreateError=function(data,txtStatus){$('div.rvy-creation-ui').html(rvyObjEdit.errorCaption);} -var data={'rvy_ajax_field':'create_revision','rvy_ajax_value':wp.data.select('core/editor').getCurrentPostId(),'rvy_date_selection':RvyTimeSelection,'nc':RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryCreateDone,error:revisionaryCreateError});});$(document).on('click','button.revision-schedule',function(){if($('a.revision-schedule').attr('disabled')){return;} -var revisionaryScheduleDone=function(){$('.revision-schedule').hide();$('.revision-scheduled').show();$('button.revision-scheduled a').attr('href',rvyObjEdit.scheduledURL);} -var revisionaryScheduleError=function(data,txtStatus){$('div.rvy-creation-ui').html(rvyObjEdit.errorCaption);} -var data={'rvy_ajax_field':'create_scheduled_revision','rvy_ajax_value':wp.data.select('core/editor').getCurrentPostId(),'rvy_date_selection':RvyTimeSelection,'nc':RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryScheduleDone,error:revisionaryScheduleError});});var RvySelectedFutureDate=false;var RvyTimeSelection='';var RvyRefreshScheduleButton=function(){var selectedDateHTML=$('button.edit-post-post-schedule__toggle').html();if(!/\d/.test(selectedDateHTML)||!rvyIsPublished){RvyTimeSelection='';$('.rvy-creation-ui .revision-schedule').hide();$('.rvy-creation-ui .revision-scheduled').hide();$('.rvy-creation-ui .revision-created').hide();$('.rvy-creation-ui .revision-create').show();return;} -var selectedDate=new Date(selectedDateHTML);RvyTimeSelection=selectedDate.getTime();var tdiff=RvyTimeSelection-Date.now();RvyTimeSelection=RvyTimeSelection/1000;if((tdiff>1000)){RvySelectedFutureDate=true;$('.rvy-creation-ui .revision-create').hide();$('.rvy-creation-ui .revision-created').hide();$('.rvy-creation-ui .revision-scheduled').hide();$('.rvy-creation-ui .revision-schedule').show();}else{$('.rvy-creation-ui .revision-schedule').hide();$('.rvy-creation-ui .revision-scheduled').hide();$('.rvy-creation-ui .revision-created').hide();$('.rvy-creation-ui .revision-create').show();if(tdiff<=0){if(RvySelectedFutureDate){RvyTimeSelection='';}}}} -var RvyDetectPublishOptionsDivClosureInterval=false;var RvyDetectPublishOptionsDiv=function(){if($('div.edit-post-post-schedule__dialog').length){clearInterval(RvyDetectPublishOptionsDivInterval);var RvyDetectPublishOptionsClosure=function(){if(!$('div.edit-post-post-schedule__dialog').length){clearInterval(RvyDetectPublishOptionsDivClosureInterval);RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,500);RvyRefreshScheduleButton();}} -RvyDetectPublishOptionsDivClosureInterval=setInterval(RvyDetectPublishOptionsClosure,200);}} -var RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,500);}); \ No newline at end of file +jQuery(document).ready(function($){if(rvyObjEdit.scheduledRevisionsURL||rvyObjEdit.pendingRevisionsURL){var RvyPendingRevPanel=function(){var ediv="div.edit-post-sidebar ";if(rvyObjEdit.scheduledRevisionsURL&&!$(ediv+"div.edit-post-last-revision__panel a.rvy-scheduled-revisions").length){var sclone=$("div.edit-post-last-revision__panel a:first").clone().addClass("rvy-scheduled-revisions").attr("href",rvyObjEdit.scheduledRevisionsURL).html(rvyObjEdit.scheduledRevisionsCaption);$(ediv+"div.edit-post-last-revision__panel a:last").after(sclone)}if(rvyObjEdit.pendingRevisionsURL&&!$(ediv+"div.edit-post-last-revision__panel a.rvy-pending-revisions").length){var pclone=$("div.edit-post-last-revision__panel a:first").clone().addClass("rvy-pending-revisions").attr("href",rvyObjEdit.pendingRevisionsURL).html(rvyObjEdit.pendingRevisionsCaption);$(ediv+"div.edit-post-last-revision__panel a:last").after(pclone)}$("div.edit-post-last-revision__panel").css("height","inherit")};setInterval(RvyPendingRevPanel,200)}var rvyIsPublished=false;var RvySubmissionUI=function(){if(rvyObjEdit.ajaxurl&&!$("button.revision-approve").length){var html='
    "+'";if(rvyObjEdit.scheduleCaption){let postStatus=wp.data.select("core/editor").getCurrentPostAttribute("status");var publishedStatuses=Object.keys(rvyObjEdit.publishedStatuses).map(function(key){return rvyObjEdit.publishedStatuses[key]});rvyIsPublished=publishedStatuses.indexOf(postStatus)>=0;if(rvyIsPublished){html+='"+'"}}html+="
    ";$("div.edit-post-post-schedule").after(html);if(rvyCreationDisabled){$("button.revision-approve").prop("disabled","disabled");$("button.revision-schedule").prop("disabled","disabled");$("a.revision-approve").attr("title",rvyObjEdit.actionDisabledTitle);$("a.revision-schedule").attr("title",rvyObjEdit.scheduleDisabledTitle)}else{$("button.revision-approve").prop("disabled",false);$("button.revision-schedule").prop("disabled",false);$("a.revision-approve").attr("title",rvyObjEdit.actionTitle);$("a.revision-schedule").attr("title",rvyObjEdit.scheduleTitle)}}};var RvyUIInterval=setInterval(RvySubmissionUI,200);function RvyGetRandomInt(max){return Math.floor(Math.random()*max)}var rvyCreationDisabled=false;$(document).on("click","div.postbox-container",function(){rvyCreationDisabled=true;$("button.revision-approve").prop("disabled","disabled");$("button.revision-schedule").prop("disabled","disabled");$("a.revision-approve").attr("title",rvyObjEdit.actionDisabledTitle);$("a.revision-schedule").attr("title",rvyObjEdit.scheduleDisabledTitle)});$(document).on("click","button.editor-post-publish-button",function(){rvyCreationDisabled=false;$("button.revision-approve").prop("disabled",false);$("button.revision-schedule").prop("disabled",false);$("a.revision-approve").attr("title",rvyObjEdit.actionTitle);$("a.revision-schedule").attr("title",rvyObjEdit.scheduleTitle)});$(document).on("click","button.revision-create",function(){if($("a.revision-create").attr("disabled")){return}var revisionaryCreateDone=function(){$(".revision-create").hide();$(".revision-created").show();$("button.revision-created a").attr("href",rvyObjEdit.completedURL)};var revisionaryCreateError=function(data,txtStatus){$("div.rvy-creation-ui").html(rvyObjEdit.errorCaption)};var data={rvy_ajax_field:"create_revision",rvy_ajax_value:wp.data.select("core/editor").getCurrentPostId(),rvy_date_selection:RvyTimeSelection,nc:RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryCreateDone,error:revisionaryCreateError})});$(document).on("click","button.revision-schedule",function(){if($("a.revision-schedule").attr("disabled")){return}var revisionaryScheduleDone=function(){$(".revision-schedule").hide();$(".revision-scheduled").show();$("button.revision-scheduled a").attr("href",rvyObjEdit.scheduledURL)};var revisionaryScheduleError=function(data,txtStatus){$("div.rvy-creation-ui").html(rvyObjEdit.errorCaption)};var data={rvy_ajax_field:"create_scheduled_revision",rvy_ajax_value:wp.data.select("core/editor").getCurrentPostId(),rvy_date_selection:RvyTimeSelection,nc:RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryScheduleDone,error:revisionaryScheduleError})});var RvySelectedFutureDate=false;var RvyTimeSelection="";var RvyRefreshScheduleButton=function(){var selectedDateHTML=$("button.edit-post-post-schedule__toggle").html();if(!/\d/.test(selectedDateHTML)||!rvyIsPublished){RvyTimeSelection="";$(".rvy-creation-ui .revision-schedule").hide();$(".rvy-creation-ui .revision-scheduled").hide();$(".rvy-creation-ui .revision-created").hide();$(".rvy-creation-ui .revision-create").show();return}var selectedDate=new Date(selectedDateHTML);RvyTimeSelection=selectedDate.getTime();var tdiff=RvyTimeSelection-Date.now();RvyTimeSelection=RvyTimeSelection/1e3;if(tdiff>1e3){RvySelectedFutureDate=true;$(".rvy-creation-ui .revision-create").hide();$(".rvy-creation-ui .revision-created").hide();$(".rvy-creation-ui .revision-scheduled").hide();$(".rvy-creation-ui .revision-schedule").show()}else{$(".rvy-creation-ui .revision-schedule").hide();$(".rvy-creation-ui .revision-scheduled").hide();$(".rvy-creation-ui .revision-created").hide();$(".rvy-creation-ui .revision-create").show();if(tdiff<=0){if(RvySelectedFutureDate){RvyTimeSelection=""}}}};var RvyDetectPublishOptionsDivClosureInterval=false;var RvyDetectPublishOptionsDiv=function(){if($("div.edit-post-post-schedule__dialog").length){clearInterval(RvyDetectPublishOptionsDivInterval);var RvyDetectPublishOptionsClosure=function(){if(!$("div.edit-post-post-schedule__dialog").length){clearInterval(RvyDetectPublishOptionsDivClosureInterval);RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,500);RvyRefreshScheduleButton()}};RvyDetectPublishOptionsDivClosureInterval=setInterval(RvyDetectPublishOptionsClosure,200)}};var RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,500)}); diff --git a/admin/rvy_revision-block-edit.dev.js b/admin/rvy_revision-block-edit.dev.js index 3a929888..7741822b 100644 --- a/admin/rvy_revision-block-edit.dev.js +++ b/admin/rvy_revision-block-edit.dev.js @@ -155,7 +155,7 @@ jQuery(document).ready( function($) { + '' + rvyObjEdit[rvyObjEdit.currentStatus + 'CompletedCaption'] + ' ' - + '' + + '' + rvyObjEdit[rvyObjEdit.currentStatus + 'CompletedLinkCaption'] + '' + '' diff --git a/admin/rvy_revision-block-edit.js b/admin/rvy_revision-block-edit.js index 9fdcccda..218e140f 100644 --- a/admin/rvy_revision-block-edit.js +++ b/admin/rvy_revision-block-edit.js @@ -1 +1 @@ -jQuery(document).ready(function($){function RvyRecaptionElement(btnSelector,btnCaption,btnIcon=""){let node=document.querySelector(btnSelector);if(node){document.querySelector(btnSelector).innerText=`${btnCaption}`;if(btnIcon){document.querySelector(btnSelector).innerHTML=`${btnCaption}`}}}function RvySetPublishButtonCaption(caption,waitForSaveDraftButton,forceRegen,timeout){if(caption==""&&typeof rvyObjEdit["publishCaptionCurrent"]!="undefined"){caption=rvyObjEdit.publishCaptionCurrent}else{rvyObjEdit.publishCaptionCurrent=caption}if(typeof waitForSaveDraftButton=="undefined"){waitForSaveDraftButton=false}if((!waitForSaveDraftButton||$("button.editor-post-switch-to-draft").filter(":visible").length||$("button.editor-post-save-draft").filter(":visible").length)&&$("button.editor-post-publish-button").length){RvyRecaptionElement("button.editor-post-publish-button",caption)}}var RvyDetectPublishOptionsDivClosureInterval="";var RvyDetectPublishOptionsDiv=function(){if($("div.components-modal__header").length){clearInterval(RvyDetectPublishOptionsDivInterval);if($("span.pp-recaption-button").first()){rvyObjEdit.overrideColor=$("span.pp-recaption-button").first().css("color")}var RvyDetectPublishOptionsClosure=function(){if(!$("div.components-modal__header").length){clearInterval(RvyDetectPublishOptionsDivClosureInterval);$("span.pp-recaption-button").hide();RvyInitInterval=setInterval(RvyInitializeBlockEditorModifications,50);RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,1e3)}};RvyDetectPublishOptionsDivClosureInterval=setInterval(RvyDetectPublishOptionsClosure,200)}};var RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,1e3);rvyObjEdit.publishCaptionCurrent=rvyObjEdit.publish;var RvyInitializeBlockEditorModifications=function(){if(($("button.editor-post-publish-button").length||$("button.editor-post-publish-panel__toggle").length)&&($("button.editor-post-switch-to-draft").length||$("button.editor-post-save-draft").length)){clearInterval(RvyInitInterval);if($("button.editor-post-publish-panel__toggle").length){if(typeof rvyObjEdit.prePublish!="undefined"&&rvyObjEdit.prePublish){RvyRecaptionElement("button.editor-post-publish-panel__toggle",rvyObjEdit.prePublish)}$(document).on("click","button.editor-post-publish-panel__toggle,span.pp-recaption-prepublish-button",function(){RvySetPublishButtonCaption("",false,true)})}else{RvySetPublishButtonCaption(rvyObjEdit.publish,false,true)}$("select.editor-post-author__select").parent().hide();$("button.editor-post-trash").parent().show();$("button.editor-post-switch-to-draft").hide();$("div.components-notice-list").hide()}if($("button.editor-post-publish-button").length||$("button.editor-post-publish-panel__toggle").length){$("button.editor-post-publish-button").hide();$("button.editor-post-publish-panel__toggle").hide()}};var RvyInitInterval=setInterval(RvyInitializeBlockEditorModifications,50);var RvyHideElements=function(){var ediv="div.edit-post-sidebar ";if($(ediv+"div.edit-post-post-visibility,"+ediv+"div.editor-post-link,"+ediv+"select.editor-post-author__select:visible,"+ediv+'div.components-base-control__field input[type="checkbox"]:visible,'+ediv+"button.editor-post-switch-to-draft,"+ediv+"button.editor-post-trash").length){$(ediv+"select.editor-post-author__select").parent().hide();$(ediv+"button.editor-post-trash").parent().show();$(ediv+"button.editor-post-switch-to-draft").hide();$(ediv+"div.editor-post-link").parent().hide();$(ediv+"div.components-notice-list").hide();if(!rvyObjEdit.scheduledRevisionsEnabled){$(ediv+"div.edit-post-post-schedule").hide()}$(ediv+"#publishpress-notifications").hide();$("#icl_div").closest("div.edit-post-meta-boxes-area").hide()}if($("button.editor-post-publish-button").length){$("button.editor-post-publish-button").hide()}};var RvyHideInterval=setInterval(RvyHideElements,50);var RvySubmissionUI=function(){if($("div.edit-post-post-schedule").length){var refSelector="div.edit-post-post-schedule"}else{var refSelector="div.edit-post-post-visibility"}if(rvyObjEdit.ajaxurl&&!$("div.edit-post-revision-status").length&&$(refSelector).length){$(refSelector).before('
    '+""+rvyObjEdit.statusLabel+""+'
    '+rvyObjEdit[rvyObjEdit.currentStatus+"StatusCaption"]+"
    "+"
    ");if(rvyObjEdit[rvyObjEdit.currentStatus+"ActionURL"]){var url=rvyObjEdit[rvyObjEdit.currentStatus+"ActionURL"]}else{var url="javascript:void(0)"}if(rvyObjEdit[rvyObjEdit.currentStatus+"ActionCaption"]){$(refSelector).after('")}if(RvyApprovalLocked!=$("button.revision-approve").prop("disabled")){if(RvyApprovalLocked){$("button.revision-approve").html("Revision needs update.")}else{$("button.revision-approve").html(rvyObjEdit[rvyObjEdit.currentStatus+"ActionCaption"])}}$("button.revision-approve").prop("disabled",RvyApprovalLocked&&"pending"==rvyObjEdit.currentStatus);$(".edit-post-post-schedule__toggle").after('");if(rvyObjEdit[rvyObjEdit.currentStatus+"DeletionURL"]){$("button.editor-post-trash").wrap('')}}$("button.post-schedule-footnote").toggle(!/\d/.test($("button.edit-post-post-schedule__toggle").html()))};var RvyUIInterval=setInterval(RvySubmissionUI,100);var RvyApprovalLocked=false;$(document).on("click","div.edit-post-visual-editor *, div.editor-inserter *",function(){if("pending"==rvyObjEdit.currentStatus){RvyApprovalLocked=true;$("button.revision-approve").prop("disabled",true)}});$(document).on("click","button.edit-post-post-schedule__toggle",function(){RvyApprovalLocked=true;$("button.revision-approve").prop("disabled",true)});$(document).on("click","button.editor-post-save-draft",function(){RvyApprovalLocked=false;$("button.revision-approve").prop("disabled",false);$("button.revision-approve").html(rvyObjEdit[rvyObjEdit.currentStatus+"ActionCaption"])});function RvyGetRandomInt(max){return Math.floor(Math.random()*max)}$(document).on("click","div.postbox-container",function(){$("button.revision-approve").prop("disabled","disabled")});$(document).on("click","button.revision-approve",function(){if(!rvyObjEdit[rvyObjEdit.currentStatus+"ActionURL"]){var revisionaryCreateDone=function(){$(".revision-approve").hide();$(".revision-created").show();rvyObjEdit.currentStatus="pending";$(".rvy-current-status").html(rvyObjEdit[rvyObjEdit.currentStatus+"StatusCaption"]);$("a.revision-edit").attr("href",rvyObjEdit[rvyObjEdit.currentStatus+"CompletedURL"]).show()};var revisionaryCreateError=function(data,txtStatus){$("div.rvy-creation-ui").html(rvyObjEdit[rvyObjEdit.currentStatus+"ErrorCaption"])};var data={rvy_ajax_field:rvyObjEdit[rvyObjEdit.currentStatus+"AjaxField"],rvy_ajax_value:wp.data.select("core/editor").getCurrentPostId(),nc:RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryCreateDone,error:revisionaryCreateError})}});var RvyRecaptionSaveDraft=function(){if($("button.editor-post-save-draft:not(.rvy-recaption)").length){RvyRecaptionElement("button.editor-post-save-draft:not(.rvy-recaption)",rvyObjEdit.saveRevision);$("button.editor-post-save-draft:not(.rvy-recaption)").addClass("rvy-recaption").removeClass("is-tertiary").addClass("is-secondary").addClass("ppr-purple-button")}if(($("div.edit-post-header__settings a.editor-post-preview:visible").length||$("div.block-editor-post-preview__dropdown button.block-editor-post-preview__button-toggle:visible").length)&&!$("a.rvy-post-preview").length){if(rvyObjEdit.viewURL&&$(".block-editor-post-preview__button-toggle").length){if($("div.edit-post-header-preview__grouping-external").length==1){var svgElem=$("div.edit-post-header-preview__grouping-external a svg").clone()[0].outerHTML;$("div.edit-post-header-preview__grouping-external").after('")}if(rvyObjEdit.viewCaption){RvyRecaptionElement(".block-editor-post-preview__button-toggle",rvyObjEdit.viewCaption);$("button.block-editor-post-preview__button-toggle:not(.ppr-purple-button)").removeClass("is-tertiary").addClass("is-secondary").addClass("ppr-purple-button")}}if(rvyObjEdit.viewTitle){$("div.edit-post-header__settings a.rvy-post-preview").attr("title",rvyObjEdit.viewTitle)}}else{if(!rvyObjEdit.multiPreviewActive){if(!$("a.editor-post-preview").next("a.rvy-post-preview").length){original=$("div.edit-post-header__settings a.editor-post-preview");$(original).after(original.clone().attr("href",rvyObjEdit.viewURL).attr("target","_blank").removeClass("editor-post-preview").addClass("rvy-post-preview").css("margin","0 10px 0 10px"));if(rvyObjEdit.viewCaption){RvyRecaptionElement("div.edit-post-header__settings a.rvy-post-preview",rvyObjEdit.viewCaption)}if(rvyObjEdit.viewTitle){$("div.edit-post-header__settings a.rvy-post-preview").attr("title",rvyObjEdit.viewTitle)}}if(rvyObjEdit.previewTitle&&!$("a.editor-post-preview").attr("title")){$("div.edit-post-header__settings a.editor-post-preview").attr("title",rvyObjEdit.previewTitle)}}}if(rvyObjEdit.revisionEdits&&$("div.edit-post-sidebar a.editor-post-last-revision__title:visible").length&&!$("div.edit-post-sidebar a.editor-post-last-revision__title.rvy-recaption").length){$("div.edit-post-sidebar a.editor-post-last-revision__title").html(rvyObjEdit.revisionEdits);$("div.edit-post-sidebar a.editor-post-last-revision__title").addClass("rvy-recaption")}};var RvyRecaptionSaveDraftInterval=setInterval(RvyRecaptionSaveDraft,100)}); +jQuery(document).ready(function($){function RvyRecaptionElement(btnSelector,btnCaption,btnIcon=""){let node=document.querySelector(btnSelector);if(node){document.querySelector(btnSelector).innerText=`${btnCaption}`;if(btnIcon){document.querySelector(btnSelector).innerHTML=`${btnCaption}`}}}function RvySetPublishButtonCaption(caption,waitForSaveDraftButton,forceRegen,timeout){if(caption==""&&typeof rvyObjEdit["publishCaptionCurrent"]!="undefined"){caption=rvyObjEdit.publishCaptionCurrent}else{rvyObjEdit.publishCaptionCurrent=caption}if(typeof waitForSaveDraftButton=="undefined"){waitForSaveDraftButton=false}if((!waitForSaveDraftButton||$("button.editor-post-switch-to-draft").filter(":visible").length||$("button.editor-post-save-draft").filter(":visible").length)&&$("button.editor-post-publish-button").length){RvyRecaptionElement("button.editor-post-publish-button",caption)}}var RvyDetectPublishOptionsDivClosureInterval="";var RvyDetectPublishOptionsDiv=function(){if($("div.components-modal__header").length){clearInterval(RvyDetectPublishOptionsDivInterval);if($("span.pp-recaption-button").first()){rvyObjEdit.overrideColor=$("span.pp-recaption-button").first().css("color")}var RvyDetectPublishOptionsClosure=function(){if(!$("div.components-modal__header").length){clearInterval(RvyDetectPublishOptionsDivClosureInterval);$("span.pp-recaption-button").hide();RvyInitInterval=setInterval(RvyInitializeBlockEditorModifications,50);RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,1e3)}};RvyDetectPublishOptionsDivClosureInterval=setInterval(RvyDetectPublishOptionsClosure,200)}};var RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,1e3);rvyObjEdit.publishCaptionCurrent=rvyObjEdit.publish;var RvyInitializeBlockEditorModifications=function(){if(($("button.editor-post-publish-button").length||$("button.editor-post-publish-panel__toggle").length)&&($("button.editor-post-switch-to-draft").length||$("button.editor-post-save-draft").length)){clearInterval(RvyInitInterval);if($("button.editor-post-publish-panel__toggle").length){if(typeof rvyObjEdit.prePublish!="undefined"&&rvyObjEdit.prePublish){RvyRecaptionElement("button.editor-post-publish-panel__toggle",rvyObjEdit.prePublish)}$(document).on("click","button.editor-post-publish-panel__toggle,span.pp-recaption-prepublish-button",function(){RvySetPublishButtonCaption("",false,true)})}else{RvySetPublishButtonCaption(rvyObjEdit.publish,false,true)}$("select.editor-post-author__select").parent().hide();$("button.editor-post-trash").parent().show();$("button.editor-post-switch-to-draft").hide();$("div.components-notice-list").hide()}if($("button.editor-post-publish-button").length||$("button.editor-post-publish-panel__toggle").length){$("button.editor-post-publish-button").hide();$("button.editor-post-publish-panel__toggle").hide()}};var RvyInitInterval=setInterval(RvyInitializeBlockEditorModifications,50);var RvyHideElements=function(){var ediv="div.edit-post-sidebar ";if($(ediv+"div.edit-post-post-visibility,"+ediv+"div.editor-post-link,"+ediv+"select.editor-post-author__select:visible,"+ediv+'div.components-base-control__field input[type="checkbox"]:visible,'+ediv+"button.editor-post-switch-to-draft,"+ediv+"button.editor-post-trash").length){$(ediv+"select.editor-post-author__select").parent().hide();$(ediv+"button.editor-post-trash").parent().show();$(ediv+"button.editor-post-switch-to-draft").hide();$(ediv+"div.editor-post-link").parent().hide();$(ediv+"div.components-notice-list").hide();if(!rvyObjEdit.scheduledRevisionsEnabled){$(ediv+"div.edit-post-post-schedule").hide()}$(ediv+"#publishpress-notifications").hide();$("#icl_div").closest("div.edit-post-meta-boxes-area").hide()}if($("button.editor-post-publish-button").length){$("button.editor-post-publish-button").hide()}};var RvyHideInterval=setInterval(RvyHideElements,50);var RvySubmissionUI=function(){if($("div.edit-post-post-schedule").length){var refSelector="div.edit-post-post-schedule"}else{var refSelector="div.edit-post-post-visibility"}if(rvyObjEdit.ajaxurl&&!$("div.edit-post-revision-status").length&&$(refSelector).length){$(refSelector).before('
    '+""+rvyObjEdit.statusLabel+""+'
    '+rvyObjEdit[rvyObjEdit.currentStatus+"StatusCaption"]+"
    "+"
    ");if(rvyObjEdit[rvyObjEdit.currentStatus+"ActionURL"]){var url=rvyObjEdit[rvyObjEdit.currentStatus+"ActionURL"]}else{var url="javascript:void(0)"}if(rvyObjEdit[rvyObjEdit.currentStatus+"ActionCaption"]){$(refSelector).after('")}if(RvyApprovalLocked!=$("button.revision-approve").prop("disabled")){if(RvyApprovalLocked){$("button.revision-approve").html("Revision needs update.")}else{$("button.revision-approve").html(rvyObjEdit[rvyObjEdit.currentStatus+"ActionCaption"])}}$("button.revision-approve").prop("disabled",RvyApprovalLocked&&"pending"==rvyObjEdit.currentStatus);$(".edit-post-post-schedule__toggle").after('");if(rvyObjEdit[rvyObjEdit.currentStatus+"DeletionURL"]){$("button.editor-post-trash").wrap('')}}$("button.post-schedule-footnote").toggle(!/\d/.test($("button.edit-post-post-schedule__toggle").html()))};var RvyUIInterval=setInterval(RvySubmissionUI,100);var RvyApprovalLocked=false;$(document).on("click","div.edit-post-visual-editor *, div.editor-inserter *",function(){if("pending"==rvyObjEdit.currentStatus){RvyApprovalLocked=true;$("button.revision-approve").prop("disabled",true)}});$(document).on("click","button.edit-post-post-schedule__toggle",function(){RvyApprovalLocked=true;$("button.revision-approve").prop("disabled",true)});$(document).on("click","button.editor-post-save-draft",function(){RvyApprovalLocked=false;$("button.revision-approve").prop("disabled",false);$("button.revision-approve").html(rvyObjEdit[rvyObjEdit.currentStatus+"ActionCaption"])});function RvyGetRandomInt(max){return Math.floor(Math.random()*max)}$(document).on("click","div.postbox-container",function(){$("button.revision-approve").prop("disabled","disabled")});$(document).on("click","button.revision-approve",function(){if(!rvyObjEdit[rvyObjEdit.currentStatus+"ActionURL"]){var revisionaryCreateDone=function(){$(".revision-approve").hide();$(".revision-created").show();rvyObjEdit.currentStatus="pending";$(".rvy-current-status").html(rvyObjEdit[rvyObjEdit.currentStatus+"StatusCaption"]);$("a.revision-edit").attr("href",rvyObjEdit[rvyObjEdit.currentStatus+"CompletedURL"]).show()};var revisionaryCreateError=function(data,txtStatus){$("div.rvy-creation-ui").html(rvyObjEdit[rvyObjEdit.currentStatus+"ErrorCaption"])};var data={rvy_ajax_field:rvyObjEdit[rvyObjEdit.currentStatus+"AjaxField"],rvy_ajax_value:wp.data.select("core/editor").getCurrentPostId(),nc:RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryCreateDone,error:revisionaryCreateError})}});var RvyRecaptionSaveDraft=function(){if($("button.editor-post-save-draft:not(.rvy-recaption)").length){RvyRecaptionElement("button.editor-post-save-draft:not(.rvy-recaption)",rvyObjEdit.saveRevision);$("button.editor-post-save-draft:not(.rvy-recaption)").addClass("rvy-recaption").removeClass("is-tertiary").addClass("is-secondary").addClass("ppr-purple-button")}if(($("div.edit-post-header__settings a.editor-post-preview:visible").length||$("div.block-editor-post-preview__dropdown button.block-editor-post-preview__button-toggle:visible").length)&&!$("a.rvy-post-preview").length){if(rvyObjEdit.viewURL&&$(".block-editor-post-preview__button-toggle").length){if($("div.edit-post-header-preview__grouping-external").length==1){var svgElem=$("div.edit-post-header-preview__grouping-external a svg").clone()[0].outerHTML;$("div.edit-post-header-preview__grouping-external").after('")}if(rvyObjEdit.viewCaption){RvyRecaptionElement(".block-editor-post-preview__button-toggle",rvyObjEdit.viewCaption);$("button.block-editor-post-preview__button-toggle:not(.ppr-purple-button)").removeClass("is-tertiary").addClass("is-secondary").addClass("ppr-purple-button")}}if(rvyObjEdit.viewTitle){$("div.edit-post-header__settings a.rvy-post-preview").attr("title",rvyObjEdit.viewTitle)}}else{if(!rvyObjEdit.multiPreviewActive){if(!$("a.editor-post-preview").next("a.rvy-post-preview").length){original=$("div.edit-post-header__settings a.editor-post-preview");$(original).after(original.clone().attr("href",rvyObjEdit.viewURL).attr("target","_blank").removeClass("editor-post-preview").addClass("rvy-post-preview").css("margin","0 10px 0 10px"));if(rvyObjEdit.viewCaption){RvyRecaptionElement("div.edit-post-header__settings a.rvy-post-preview",rvyObjEdit.viewCaption)}if(rvyObjEdit.viewTitle){$("div.edit-post-header__settings a.rvy-post-preview").attr("title",rvyObjEdit.viewTitle)}}if(rvyObjEdit.previewTitle&&!$("a.editor-post-preview").attr("title")){$("div.edit-post-header__settings a.editor-post-preview").attr("title",rvyObjEdit.previewTitle)}}}if(rvyObjEdit.revisionEdits&&$("div.edit-post-sidebar a.editor-post-last-revision__title:visible").length&&!$("div.edit-post-sidebar a.editor-post-last-revision__title.rvy-recaption").length){$("div.edit-post-sidebar a.editor-post-last-revision__title").html(rvyObjEdit.revisionEdits);$("div.edit-post-sidebar a.editor-post-last-revision__title").addClass("rvy-recaption")}};var RvyRecaptionSaveDraftInterval=setInterval(RvyRecaptionSaveDraft,100)}); From 7e0d5bde06ce7777cbc63fd5d8ee7a8b5d2fbce5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Valenti=CC=81n=20Garci=CC=81a?= Date: Thu, 7 Oct 2021 13:14:03 -0500 Subject: [PATCH 129/193] Replace "view" with "Preview" label --- admin/post-editor-workflow-ui_rvy.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/admin/post-editor-workflow-ui_rvy.php b/admin/post-editor-workflow-ui_rvy.php index d54c0291..db246c20 100644 --- a/admin/post-editor-workflow-ui_rvy.php +++ b/admin/post-editor-workflow-ui_rvy.php @@ -78,7 +78,7 @@ public static function revisionLinkParams($args = []) { $vars['draftActionCaption'] = __('Submit Change Request', 'revisionary'); $vars['draftActionURL'] = ''; // wp_nonce_url( rvy_admin_url("admin.php?page=rvy-revisions&revision={$post->ID}&action=submit$redirect_arg"), "submit-post_$published_post_id|{$post->ID}" ); $vars['draftCompletedCaption'] = __('Changes Submitted.', 'revisionary'); - $vars['draftCompletedLinkCaption'] = __('view', 'revisionary'); + $vars['draftCompletedLinkCaption'] = __('Preview', 'revisionary'); $vars['draftCompletedURL'] = rvy_preview_url($post); } else { $vars['draftActionCaption'] = ''; @@ -153,7 +153,7 @@ public static function postLinkParams($args = []) { 'actionTitle' => esc_attr(__('Create a working copy of this post', 'revisionary')), 'actionDisabledTitle' => esc_attr(__('Update post before creating copy.', 'revisionary')), 'completedCaption' => __('Working Copy Ready.', 'revisionary'), - 'completedLinkCaption' => __('view', 'revisionary'), + 'completedLinkCaption' => __('Preview', 'revisionary'), 'completedURL' => rvy_nc_url( add_query_arg('get_new_revision', $post->ID, get_permalink($post->ID))), 'errorCaption' => __('Error Creating Copy', 'revisionary'), 'ajaxurl' => rvy_admin_url(''), @@ -172,7 +172,7 @@ public static function postLinkParams($args = []) { 'scheduleTitle' => '', 'scheduleDisabledTitle' => esc_attr(__('For custom field changes, edit a scheduled copy.', 'revisionary')), 'scheduledCaption' => __('Changes are Scheduled.', 'revisionary'), - 'scheduledLinkCaption' => __('view', 'revisionary'), + 'scheduledLinkCaption' => __('Preview', 'revisionary'), 'scheduledURL' => rvy_nc_url( add_query_arg('get_new_revision', $post->ID, get_permalink($post->ID))), )); } From 0c16df5d5c51cc2dc0d2e7a1afa2aef159454717 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 12 Oct 2021 17:25:57 -0400 Subject: [PATCH 130/193] More conventional status labels; option to use Working Copy / Change Request labeling --- admin/admin-init_rvy.php | 2 +- admin/admin-posts_rvy.php | 2 +- admin/class-list-table_rvy.php | 22 +--- admin/filters-admin-ui-item_rvy.php | 4 +- admin/options.php | 74 ++++++++----- admin/post-edit_rvy.php | 4 +- admin/post-editor-workflow-ui_rvy.php | 44 ++++---- admin/revision-action_rvy.php | 10 +- admin/revision-queue_rvy.php | 6 +- admin/revisions.php | 6 +- defaults_rvy.php | 2 + front_rvy.php | 8 +- revision-workflow_rvy.php | 10 +- revisionary_main.php | 2 +- rvy_init.php | 146 ++++++++++++++++++++++++-- 15 files changed, 247 insertions(+), 95 deletions(-) diff --git a/admin/admin-init_rvy.php b/admin/admin-init_rvy.php index df68add0..9521f085 100644 --- a/admin/admin-init_rvy.php +++ b/admin/admin-init_rvy.php @@ -329,7 +329,7 @@ function rvy_intro_message($abbreviated = false) { function rvy_migration_message() { return sprintf( - __('Revisionary is now PublishPress Revisions! Note the new Revisions menu and %sRevision Queue%s screen, where Change Requests and Scheduled Changes are listed. %s', 'revisionary'), + __('Revisionary is now PublishPress Revisions! Note the new Revisions menu and %sRevision Queue%s screen, where Revisions are listed. %s', 'revisionary'), '', '', '
    ' . rvy_intro_message(true) . '
    ' diff --git a/admin/admin-posts_rvy.php b/admin/admin-posts_rvy.php index b6fa8222..a059837e 100644 --- a/admin/admin-posts_rvy.php +++ b/admin/admin-posts_rvy.php @@ -110,7 +110,7 @@ public function fltTrashedPostState($post_states, $post) { } if (!isset($post_states['rvy_revision'])) { - $post_states['rvy_revision'] = __('Change Request', 'revisionary'); + $post_states['rvy_revision'] = __('Revision', 'revisionary'); } } diff --git a/admin/class-list-table_rvy.php b/admin/class-list-table_rvy.php index 0f7d93a4..25c2ff1c 100644 --- a/admin/class-list-table_rvy.php +++ b/admin/class-list-table_rvy.php @@ -424,22 +424,10 @@ function rvy_pending_custom_col( $column_name, $post_id ) { break; case 'post_status': - - switch ( $post->post_mime_type ) { - case 'draft-revision': - $label = __('Working Copy', 'revisionary'); - break; - case 'pending-revision': - $label = __('Change Request', 'revisionary'); - break; - case 'future-revision': - $label = __('Scheduled Change', 'revisionary'); - break; - default: - if ( $status_obj = get_post_status_object( $post->post_mime_type) ) - $label = $status_obj->label; - else - $label = ucwords($post->post_status); + if (rvy_is_revision_status($post->post_mime_type)) { + $label = pp_revisions_status_label($post->post_mime_type, 'short'); + } else { + $label = ucwords($post->post_mime_type); } $link = add_query_arg('post_status', $post->post_mime_type, $request_url); @@ -764,7 +752,7 @@ protected function get_views() { } $links['mine'] = sprintf( - apply_filters('revisionary_my_copies_label', __('%sMy Copies & Changes%s (%s)', 'revisionary')), + apply_filters('revisionary_my_copies_label', (rvy_get_option('revision_statuses_noun_labels')) ? __('%sMy Copies & Changes%s (%s)', 'revisionary') : __('%sMy Revisions%s (%s)', 'revisionary') ), "", '', "$my_count" ); } diff --git a/admin/filters-admin-ui-item_rvy.php b/admin/filters-admin-ui-item_rvy.php index 45b3adb2..81b75a90 100644 --- a/admin/filters-admin-ui-item_rvy.php +++ b/admin/filters-admin-ui-item_rvy.php @@ -23,13 +23,13 @@ function add_meta_boxes() { if ( rvy_get_option( 'pending_revisions' ) ) { require_once( dirname(__FILE__).'/revision-ui_rvy.php' ); - add_meta_box( 'pending_revisions', __( 'Change Requests', 'revisionary'), [$this, 'rvy_metabox_revisions_pending'], $object_type ); + add_meta_box( 'pending_revisions', pp_revisions_status_label('pending-revision', 'plural'), [$this, 'rvy_metabox_revisions_pending'], $object_type ); } if ( rvy_get_option( 'scheduled_revisions' ) ) { require_once( dirname(__FILE__).'/revision-ui_rvy.php' ); - add_meta_box( 'future_revisions', __( 'Scheduled Changes', 'revisionary'), [$this, 'rvy_metabox_revisions_future'], $object_type ); + add_meta_box( 'future_revisions', pp_revisions_status_label('future-revision', 'plural'), [$this, 'rvy_metabox_revisions_future'], $object_type ); } } diff --git a/admin/options.php b/admin/options.php index ef8eee06..b18f057e 100644 --- a/admin/options.php +++ b/admin/options.php @@ -96,9 +96,10 @@ function options_ui( $sitewide = false, $customize_defaults = false ) { $this->section_captions = array( 'features' => array( 'role_definition' => __('Role Definition', 'revisionary'), - 'working_copy' => __('Working Copies', 'revisionary'), - 'scheduled_revisions' => __('Scheduled Changes', 'revisionary'), - 'pending_revisions' => __('Change Requests', 'revisionary'), + 'revision_statuses' => __('Revision Statuses', 'revisionary'), + 'working_copy' => pp_revisions_status_label('draft-revision', 'plural'), + 'scheduled_revisions' => pp_revisions_status_label('future-revision', 'plural'), + 'pending_revisions' => pp_revisions_status_label('pending-revision', 'plural'), 'revision_queue' => __('Revision Queue', 'revisionary'), 'preview' => __('Preview / Approval', 'revisionary'), 'revisions' => __('Revision Options', 'revisionary'), @@ -107,12 +108,19 @@ function options_ui( $sitewide = false, $customize_defaults = false ) { ); // TODO: replace individual _e calls with these (and section, tab captions) +$pending_revision_singular = pp_revisions_status_label('pending-revision', 'name'); +$pending_revision_plural = pp_revisions_status_label('pending-revision', 'plural'); +$pending_revision_basic = pp_revisions_status_label('pending-revision', 'basic'); +$future_revision_singular = pp_revisions_status_label('future-revision', 'name'); + $this->option_captions = apply_filters('revisionary_option_captions', [ - 'copy_posts_capability' => __("Working Copies require role capability", 'revisionary'), - 'pending_revisions' => __('Enable Change Requests', 'revisionary'), - 'scheduled_revisions' => __('Enable Scheduled Changes', 'revisionary'), - 'revise_posts_capability' => __("Change Requests require role capability", 'revisionary'), + 'revision_statuses_noun_labels' => __('Use alternate labeling: "Working Copy" > "Change Request" > "Scheduled Change"', 'revisionary'), + 'copy_posts_capability' => sprintf(__("%s require role capability", 'revisionary'), pp_revisions_status_label('draft-revision', 'plural')), + 'caption_copy_as_edit' => __("Posts / Pages admin listing: limited users get 'Edit' caption"), + 'pending_revisions' => sprintf(__('Enable %s', 'revisionary'), $pending_revision_plural), + 'scheduled_revisions' => sprintf(__('Enable %s', 'revisionary'), pp_revisions_status_label('future-revision', 'plural')), + 'revise_posts_capability' => sprintf(__("%s require role capability", 'revisionary'), $pending_revision_plural), 'revisor_lock_others_revisions' => __("Editing others' revisions requires role capability", 'revisionary'), 'revisor_hide_others_revisions' => __("Listing others' revisions requires role capability", 'revisionary'), 'admin_revisions_to_own_posts' => __("Users can always administer revisions to their own editable posts", 'revisionary'), @@ -125,11 +133,11 @@ function options_ui( $sitewide = false, $customize_defaults = false ) { 'pending_revision_update_post_date' => __('Update Publish Date', 'revisionary'), 'scheduled_revision_update_modified_date' => __('Update Modified Date', 'revisionary'), 'pending_revision_update_modified_date' => __('Update Modified Date', 'revisionary'), - 'pending_rev_notify_author' => __('Email original Author when a Change Request is submitted', 'revisionary'), - 'rev_approval_notify_author' => __('Email the original Author when a Change Request is approved', 'revisionary'), - 'rev_approval_notify_revisor' => __('Email the Revisor when a Change Request is approved', 'revisionary'), - 'publish_scheduled_notify_author' => __('Email the original Author when a Scheduled Change is published', 'revisionary'), - 'publish_scheduled_notify_revisor' => __('Email the Revisor when a Scheduled Change is published', 'revisionary'), + 'pending_rev_notify_author' => sprintf(__('Email original Author when a %s is submitted', 'revisionary'), $pending_revision_basic), + 'rev_approval_notify_author' => sprintf(__('Email the original Author when a %s is approved', 'revisionary'), $pending_revision_singular), + 'rev_approval_notify_revisor' => sprintf(__('Email the Revisor when a %s is approved', 'revisionary'), $pending_revision_singular), + 'publish_scheduled_notify_author' => sprintf(__('Email the original Author when a %s is published', 'revisionary'), $future_revision_singular), + 'publish_scheduled_notify_revisor' => sprintf(__('Email the Revisor when a %s is published', 'revisionary'), $future_revision_singular), 'use_notification_buffer' => __('Enable notification buffer', 'revisionary'), 'revisor_role_add_custom_rolecaps' => __('All custom post types available to Revisors', 'revisionary' ), 'require_edit_others_drafts' => __('Prevent Revisors from editing other user's drafts', 'revisionary' ), @@ -144,13 +152,13 @@ function options_ui( $sitewide = false, $customize_defaults = false ) { if ( defined('RVY_CONTENT_ROLES') ) { - $this->option_captions['pending_rev_notify_admin'] = __('Email designated Publishers when a Change Request is submitted', 'revisionary'); - $this->option_captions['publish_scheduled_notify_admin'] = __('Email designated Publishers when a Scheduled Change is published', 'revisionary'); - $this->option_captions['rev_approval_notify_admin'] = __('Email designated Publishers when a Change Request is approved', 'revisionary'); + $this->option_captions['pending_rev_notify_admin'] = sprintf(__('Email designated Publishers when a %s is submitted', 'revisionary'), $pending_revision_basic); + $this->option_captions['publish_scheduled_notify_admin'] = sprintf(__('Email designated Publishers when a %s is published', 'revisionary'), $future_revision_singular); + $this->option_captions['rev_approval_notify_admin'] = sprintf(__('Email designated Publishers when a %s is approved', 'revisionary'), $pending_revision_singular); } else { - $this->option_captions['pending_rev_notify_admin'] = __('Email Editors and Administrators when a Change Request is submitted', 'revisionary'); - $this->option_captions['publish_scheduled_notify_admin'] = __('Email Editors and Administrators when a Scheduled Change is published', 'revisionary'); - $this->option_captions['rev_approval_notify_admin'] = __('Email Editors and Administrators when a Change Request is approved', 'revisionary'); + $this->option_captions['pending_rev_notify_admin'] = sprintf(__('Email Editors and Administrators when a %s is submitted', 'revisionary'), $pending_revision_basic); + $this->option_captions['publish_scheduled_notify_admin'] = sprintf(__('Email Editors and Administrators when a %s is published', 'revisionary'), $future_revision_singular); + $this->option_captions['rev_approval_notify_admin'] = sprintf(__('Email Editors and Administrators when a %s is approved', 'revisionary'), $pending_revision_singular); } @@ -158,6 +166,7 @@ function options_ui( $sitewide = false, $customize_defaults = false ) { 'features' => [ 'license' => ['edd_key'], 'role_definition' => ['revisor_role_add_custom_rolecaps', 'require_edit_others_drafts'], + 'revision_statuses' => ['revision_statuses_noun_labels'], 'working_copy' => ['copy_posts_capability'], 'scheduled_revisions' => ['scheduled_revisions', 'async_scheduled_publish', 'scheduled_revision_update_post_date', 'scheduled_revision_update_modified_date'], 'pending_revisions' => ['pending_revisions', 'revise_posts_capability', 'pending_revision_update_post_date', 'pending_revision_update_modified_date'], @@ -335,6 +344,23 @@ function options_ui( $sitewide = false, $customize_defaults = false ) { form_options[$tab][$section] ) ) :?> + + section_captions[$tab][$section]; ?> + + + option_checkbox( 'revision_statuses_noun_labels', $tab, $section, $hint, '' ); + ?> + + +form_options[$tab][$section] ) ) :?> @@ -372,7 +398,7 @@ function options_ui( $sitewide = false, $customize_defaults = false ) { ", '' ); @@ -381,10 +407,10 @@ function options_ui( $sitewide = false, $customize_defaults = false ) { $hint = __('This restriction applies to users who are not full editors for the post type. To enable a role, add capabilities: revise_posts, revise_others_pages, etc.', 'revisionary'); $this->option_checkbox( 'revise_posts_capability', $tab, $section, $hint, '' ); - $hint = __( 'When a change request is published, update post publish date to current time.', 'revisionary' ); + $hint = sprintf(__( 'When a %s is published, update post publish date to current time.', 'revisionary' ), pp_revisions_status_label('pending-revision', 'name')); $this->option_checkbox( 'pending_revision_update_post_date', $tab, $section, $hint, '' ); - $hint = __( 'When a change request is published, update post modified date to current time.', 'revisionary' ); + $hint = sprintf(__( 'When a %s is published, update post modified date to current time.', 'revisionary' ), pp_revisions_status_label('pending-revision', 'name')); $this->option_checkbox( 'pending_revision_update_modified_date', $tab, $section, $hint, '' ); do_action('revisionary_option_ui_pending_revisions', $this); @@ -407,13 +433,13 @@ function options_ui( $sitewide = false, $customize_defaults = false ) { $hint = __( 'If a currently published post or page is edited and a future date set, the change will not be applied until the selected date.', 'revisionary' ); $this->option_checkbox( 'scheduled_revisions', $tab, $section, $hint, '' ); - $hint = __( 'When a scheduled change is published, update post publish date to current time.', 'revisionary' ); + $hint = sprintf(__( 'When a %s is published, update post publish date to current time.', 'revisionary' ), pp_revisions_status_label('future-revision', 'name')); $this->option_checkbox( 'scheduled_revision_update_post_date', $tab, $section, $hint, '' ); - $hint = __( 'When a scheduled change is published, update post modified date to current time.', 'revisionary' ); + $hint = sprintf(__( 'When a %s is published, update post modified date to current time.', 'revisionary' ), pp_revisions_status_label('future-revision', 'name')); $this->option_checkbox( 'scheduled_revision_update_modified_date', $tab, $section, $hint, '' ); - $hint = __( 'Publish scheduled changes asynchronously, via a secondary http request from the server. This is usually best since it eliminates delay, but some servers may not support it.', 'revisionary' ); + $hint = __( 'Publish scheduled revisions asynchronously, via a secondary http request from the server. This is usually best since it eliminates delay, but some servers may not support it.', 'revisionary' ); $this->option_checkbox( 'async_scheduled_publish', $tab, $section, $hint, '' ); ?> diff --git a/admin/post-edit_rvy.php b/admin/post-edit_rvy.php index 66e3c364..f8b8f31e 100644 --- a/admin/post-edit_rvy.php +++ b/admin/post-edit_rvy.php @@ -116,7 +116,7 @@ function act_post_submit_revisions_links() { ?>
     ', '' . count($_revisions) . ''); + printf('%s' . pp_revisions_status_label('future-revision', 'plural') . ': %s', ' ', '' . count($_revisions) . ''); ?> ID&revision=future-revision")); ?>" target="_revision_diff"> @@ -130,7 +130,7 @@ function act_post_submit_revisions_links() { ?>
     ', '' . count($_revisions) . ''); + printf('%s' . pp_revisions_status_label('pending-revision', 'plural') . ': %s', ' ', '' . count($_revisions) . ''); ?> ID&revision=pending-revision")); ?>" target="_revision_diff"> diff --git a/admin/post-editor-workflow-ui_rvy.php b/admin/post-editor-workflow-ui_rvy.php index d54c0291..7d1c4a52 100644 --- a/admin/post-editor-workflow-ui_rvy.php +++ b/admin/post-editor-workflow-ui_rvy.php @@ -44,10 +44,10 @@ public static function revisionLinkParams($args = []) { $vars['viewCaption'] = ('future-revision' == $post->post_mime_type) ? __('View / Publish', 'revisionary') : __('View / Approve', 'revisionary'); } - $vars['viewTitle'] = __('View / Approve saved changes', 'revisionary'); + $vars['viewTitle'] = __('View / Approve saved revision', 'revisionary'); } else { $vars['viewCaption'] = version_compare($wp_version, '5.5-beta', '>=') ? __('Preview / Submit') : __('View / Submit'); - $vars['viewTitle'] = __('View / Submit saved changes', 'revisionary'); + $vars['viewTitle'] = __('View / Submit saved revision', 'revisionary'); } } else { $vars['viewURL'] = ''; @@ -59,7 +59,7 @@ public static function revisionLinkParams($args = []) { $_revisions = wp_get_post_revisions($post->ID); if ($_revisions && count($_revisions) > 1) { - $vars['revisionEdits'] = sprintf(_n(' %s Revision Edit', ' %s Revision Edits', count($_revisions), 'revisionary'), count($_revisions)); + $vars['revisionEdits'] = sprintf(_n('%s%s Revision Edit', '%s%s Revision Edits', ' ', count($_revisions), 'revisionary'), count($_revisions)); } else { $vars['revisionEdits'] = ''; } @@ -71,13 +71,14 @@ public static function revisionLinkParams($args = []) { $vars['draftStatusCaption'] = $draft_obj->label; $vars['draftAjaxField'] = (current_user_can('set_revision_pending-revision', $post->ID)) ? 'submit_revision' : ''; - $vars['draftErrorCaption'] = __('Error Submitting Changes', 'revisionary'); + $vars['draftErrorCaption'] = __('Revision Submission Error', 'revisionary'); $vars['draftDeletionURL'] = get_delete_post_link($post->ID, '', false); if ($vars['draftAjaxField']) { - $vars['draftActionCaption'] = __('Submit Change Request', 'revisionary'); + $vars['draftActionCaption'] = pp_revisions_status_label('pending-revision', 'submit'); $vars['draftActionURL'] = ''; // wp_nonce_url( rvy_admin_url("admin.php?page=rvy-revisions&revision={$post->ID}&action=submit$redirect_arg"), "submit-post_$published_post_id|{$post->ID}" ); - $vars['draftCompletedCaption'] = __('Changes Submitted.', 'revisionary'); + $vars['draftInProcessCaption'] = pp_revisions_status_label('pending-revision', 'submitting'); + $vars['draftCompletedCaption'] = pp_revisions_status_label('pending-revision', 'submitted'); $vars['draftCompletedLinkCaption'] = __('view', 'revisionary'); $vars['draftCompletedURL'] = rvy_preview_url($post); } else { @@ -91,10 +92,12 @@ public static function revisionLinkParams($args = []) { $vars['futureStatusCaption'] = $future_obj->label; if ($can_publish) { - $vars['pendingActionCaption'] = __('Approve Changes', 'revisionary'); + $vars['pendingActionCaption'] = pp_revisions_status_label('pending-revision', 'approve'); $vars['pendingActionURL'] = wp_nonce_url( rvy_admin_url("admin.php?page=rvy-revisions&revision={$post->ID}&action=approve$redirect_arg&editor=1"), "approve-post_$published_post_id|{$post->ID}" ); - $vars['futureActionCaption'] = __('Publish Changes', 'revisionary'); + $vars['pendingInProcessCaption'] = pp_revisions_status_label('pending-revision', 'approving'); + + $vars['futureActionCaption'] = pp_revisions_status_label('future-revision', 'publish'); $vars['futureActionURL'] = wp_nonce_url( rvy_admin_url("admin.php?page=rvy-revisions&revision={$post->ID}&action=publish$redirect_arg&editor=1"), "publish-post_$published_post_id|{$post->ID}" ); $vars['pendingDeletionURL'] = get_delete_post_link($post->ID, '', false); @@ -128,7 +131,9 @@ public static function postLinkParams($args = []) { if ($do_pending_revisions && $_revisions = rvy_get_post_revisions($post->ID, 'pending-revision', ['orderby' => 'ID', 'order' => 'ASC'])) { $status_obj = get_post_status_object('pending-revision'); - $vars['pendingRevisionsCaption'] = sprintf(_n(' %s Change Request', ' %s Change Requests', count($_revisions), 'revisionary'), count($_revisions)); + + $status_label = (count($_revisions) <= 1) ? pp_revisions_status_label('pending-revision', 'name') : pp_revisions_status_label('pending-revision', 'plural'); + $vars['pendingRevisionsCaption'] = sprintf(' %s %s', count($_revisions), $status_label); $vars['pendingRevisionsURL'] = rvy_admin_url("revision.php?post_id=$post->ID&revision=pending-revision"); // @todo: fix i8n } else { @@ -137,7 +142,9 @@ public static function postLinkParams($args = []) { if ($do_scheduled_revisions && $_revisions = rvy_get_post_revisions($post->ID, 'future-revision', ['orderby' => 'ID', 'order' => 'ASC'])) { $status_obj = get_post_status_object('future-revision'); - $vars['scheduledRevisionsCaption'] = sprintf(_n(' %s Scheduled Change', ' %s Scheduled Changes', count($_revisions), 'revisionary'), count($_revisions)); + + $status_label = (count($_revisions) <= 1) ? pp_revisions_status_label('future-revision', 'name') : pp_revisions_status_label('future-revision', 'plural'); + $vars['scheduledRevisionsCaption'] = sprintf(' %s %s', count($_revisions), $status_label); $vars['scheduledRevisionsURL'] = rvy_admin_url("revision.php?post_id=$post->ID&revision=future-revision"); } else { @@ -149,13 +156,14 @@ public static function postLinkParams($args = []) { if (current_user_can('copy_post', $post->ID)) { $vars = array_merge($vars, array( - 'actionCaption' => __('Create Working Copy', 'revisionary'), - 'actionTitle' => esc_attr(__('Create a working copy of this post', 'revisionary')), - 'actionDisabledTitle' => esc_attr(__('Update post before creating copy.', 'revisionary')), - 'completedCaption' => __('Working Copy Ready.', 'revisionary'), + 'actionCaption' => pp_revisions_status_label('draft-revision', 'submit'), + 'actionTitle' => esc_attr(sprintf(__('Create a %s of this post', 'revisionary'), strtolower(pp_revisions_status_label('draft-revision', 'basic')))), + 'actionDisabledTitle' => esc_attr(sprintf(__('Update post before creating %s.', 'revisionary'), strtolower(pp_revisions_status_label('draft-revision', 'basic')))), + 'creatingCaption' => pp_revisions_status_label('draft-revision', 'submitting'), + 'completedCaption' => pp_revisions_status_label('draft-revision', 'submitted'), 'completedLinkCaption' => __('view', 'revisionary'), 'completedURL' => rvy_nc_url( add_query_arg('get_new_revision', $post->ID, get_permalink($post->ID))), - 'errorCaption' => __('Error Creating Copy', 'revisionary'), + 'errorCaption' => __('Error Creating Revision', 'revisionary'), 'ajaxurl' => rvy_admin_url(''), 'postID' => $post->ID )); @@ -168,10 +176,10 @@ public static function postLinkParams($args = []) { $vars = array_merge($vars, array( 'publishedStatuses' => $published_statuses, - 'scheduleCaption' => __('Schedule Changes', 'revisionary'), + 'scheduleCaption' => pp_revisions_status_label('future-revision', 'submit'), 'scheduleTitle' => '', - 'scheduleDisabledTitle' => esc_attr(__('For custom field changes, edit a scheduled copy.', 'revisionary')), - 'scheduledCaption' => __('Changes are Scheduled.', 'revisionary'), + 'scheduleDisabledTitle' => esc_attr(sprintf(__('For custom field changes, edit a scheduled %s.', 'revisionary'), strtolower(pp_revisions_status_label('draft-revision', 'basic')))), + 'scheduledCaption' => pp_revisions_status_label('future-revision', 'submitted'), 'scheduledLinkCaption' => __('view', 'revisionary'), 'scheduledURL' => rvy_nc_url( add_query_arg('get_new_revision', $post->ID, get_permalink($post->ID))), )); diff --git a/admin/revision-action_rvy.php b/admin/revision-action_rvy.php index c67d545f..6d9eca39 100644 --- a/admin/revision-action_rvy.php +++ b/admin/revision-action_rvy.php @@ -1118,7 +1118,7 @@ function rvy_publish_scheduled_revisions($args = array()) { $type_caption = $type_obj->labels->singular_name; if ( rvy_get_option( 'publish_scheduled_notify_revisor' ) ) { - $title = sprintf( __('[%s] Scheduled Change Publication Notice', 'revisionary' ), $blogname ); + $title = sprintf( __('[%s] %s Publication Notice', 'revisionary' ), $blogname, pp_revisions_status_label('future-revision', 'name') ); $message = sprintf( __('The scheduled revision you submitted for the %1$s "%2$s" has been published.', 'revisionary' ), $type_caption, $row->post_title ) . "\r\n\r\n"; if ( ! empty($post->ID) ) @@ -1140,8 +1140,8 @@ function rvy_publish_scheduled_revisions($args = array()) { // Prior to 1.3, notification was sent to author even if also revision submitter if ( ( ( $post->post_author != $row->post_author ) || defined( 'RVY_LEGACY_SCHEDULED_REV_POST_AUTHOR_NOTIFY' ) ) && rvy_get_option( 'publish_scheduled_notify_author' ) ) { - $title = sprintf( __('[%s] Scheduled Change Publication Notice', 'revisionary' ), $blogname ); - $message = sprintf( __('A scheduled change to your %1$s "%2$s" has been published.', 'revisionary' ), $type_caption, $post->post_title ) . "\r\n\r\n"; + $title = sprintf( __('[%s] %s Publication Notice', 'revisionary' ), $blogname, pp_revisions_status_label('future-revision', 'name') ); + $message = sprintf( __('A scheduled revision to your %1$s "%2$s" has been published.', 'revisionary' ), $type_caption, $post->post_title ) . "\r\n\r\n"; if ( $revisor = new WP_User( $row->post_author ) ) $message .= sprintf( __('It was submitted by %1$s.'), $revisor->display_name ) . "\r\n\r\n"; @@ -1208,9 +1208,9 @@ function rvy_publish_scheduled_revisions($args = array()) { } if (empty($skip_notification)) { - $title = sprintf(__('[%s] Scheduled Change Publication'), $blogname ); + $title = sprintf(__('[%s] %s Publication'), $blogname, pp_revisions_status_label('future-revision', 'name') ); - $message = sprintf( __('A scheduled change to the %1$s "%2$s" has been published.'), $type_caption, $row->post_title ) . "\r\n\r\n"; + $message = sprintf( __('A scheduled revision to the %1$s "%2$s" has been published.'), $type_caption, $row->post_title ) . "\r\n\r\n"; if ( $author = new WP_User( $row->post_author ) ) $message .= sprintf( __('It was submitted by %1$s.'), $author->display_name ) . "\r\n\r\n"; diff --git a/admin/revision-queue_rvy.php b/admin/revision-queue_rvy.php index 41ed75a1..7f679b65 100644 --- a/admin/revision-queue_rvy.php +++ b/admin/revision-queue_rvy.php @@ -10,7 +10,11 @@ } if (!rvy_get_option('pending_revisions') && !rvy_get_option('scheduled_revisions')) { - wp_die( __( 'Change Requests and Scheduled Changes are both disabled. See Revisions > Settings.', 'revisionary' ) ); + wp_die( sprintf(__( + '%s and %s are both disabled. See Revisions > Settings.', 'revisionary' ), + pp_revisions_status_label('pending-revision', 'plural'), + pp_revisions_status_label('future-revision', 'plural') + )); } set_current_screen( 'revisionary-q' ); diff --git a/admin/revisions.php b/admin/revisions.php index 66b0b0f5..d61d12e1 100644 --- a/admin/revisions.php +++ b/admin/revisions.php @@ -215,13 +215,9 @@ $status_caption = __( 'Past Revisions', 'revisionary' ); break; case 'draft-revision': - $status_caption = __( 'Working Copies', 'revisionary' ); - break; case 'pending-revision': - $status_caption = __( 'Change Requests', 'revisionary' ); - break; case 'future-revision': - $status_caption = __( 'Scheduled Changes', 'revisionary' ); + $status_caption = pp_revisions_status_label($_revision_status, 'plural'); break; } diff --git a/defaults_rvy.php b/defaults_rvy.php index 19840f35..beed1465 100644 --- a/defaults_rvy.php +++ b/defaults_rvy.php @@ -14,6 +14,7 @@ function rvy_default_options_sitewide() { $def = array( 'copy_posts_capability' => true, + 'revision_statuses_noun_labels' => true, 'pending_revisions' => true, 'revise_posts_capability' => true, 'scheduled_revisions' => true, @@ -61,6 +62,7 @@ function rvy_default_options_sitewide() { function rvy_default_options() { $def = array( 'copy_posts_capability' => 0, + 'revision_statuses_noun_labels' => 0, 'pending_revisions' => 1, 'revise_posts_capability' => 0, 'scheduled_revisions' => 1, diff --git a/front_rvy.php b/front_rvy.php index 2f134fde..cd7730ac 100644 --- a/front_rvy.php +++ b/front_rvy.php @@ -329,7 +329,7 @@ function act_template_redirect() { $publish_button .= ($can_publish) ? '' . $publish_caption . '' : ''; } - $message = sprintf( __('This is a Working Copy. %s %s %s', 'revisionary'), $view_published, $edit_button, $publish_button ); + $message = sprintf( __('This is a %s. %s %s %s', 'revisionary'), pp_revisions_status_label('draft-revision', 'name'), $view_published, $edit_button, $publish_button ); break; @@ -341,13 +341,13 @@ function act_template_redirect() { if ( strtotime( $post->post_date_gmt ) > agp_time_gmt() ) { $class = 'pending_future'; $publish_button = ($can_publish) ? '' . $approve_caption . '' : ''; - $message = sprintf( __('This is a Change Request (requested publish date: %s). %s %s %s', 'revisionary'), $date, $view_published, $edit_button, $publish_button ); + $message = sprintf( __('This is a %s (requested publish date: %s). %s %s %s', 'revisionary'), pp_revisions_status_label('pending-revision', 'name'), $date, $view_published, $edit_button, $publish_button ); } else { $class = 'pending'; $status_obj = get_post_status_object(get_post_field('post_status', rvy_post_id($revision_id))); $publish_caption = (!empty($status_obj->public) || !empty($status_obj->private)) ? __('Publish now', 'revisionary') : $approve_caption; $publish_button = ($can_publish) ? '' . $publish_caption . '' : ''; - $message = sprintf( __('This is a Change Request. %s %s %s', 'revisionary'), $view_published, $edit_button, $publish_button ); + $message = sprintf( __('This is a %s. %s %s %s', 'revisionary'), pp_revisions_status_label('pending-revision', 'name'), $view_published, $edit_button, $publish_button ); } break; @@ -366,7 +366,7 @@ function act_template_redirect() { $edit_url = rvy_admin_url("post.php?action=edit&post=$revision_id"); $publish_button = ($can_publish) ? '' . __( 'Publish now', 'revisionary' ) . '' : ''; $publish_button .= $reload_link; - $message = sprintf( __('This is a Scheduled Change (for publication on %s). %s %s %s', 'revisionary'), $date, $view_published, $edit_button, $publish_button ); + $message = sprintf( __('This is a %s (for publication on %s). %s %s %s', 'revisionary'), pp_revisions_status_label('future-revision', 'name'), $date, $view_published, $edit_button, $publish_button ); break; case '' : diff --git a/revision-workflow_rvy.php b/revision-workflow_rvy.php index 608a8aa9..8dd69b37 100644 --- a/revision-workflow_rvy.php +++ b/revision-workflow_rvy.php @@ -151,13 +151,13 @@ function do_notifications( $notification_type, $status, $post_arr, $args ) { $blogname = wp_specialchars_decode( get_option('blogname'), ENT_QUOTES ); if (!empty($args['update'])) { - $title = sprintf( __('[%s] Change Request Updated', 'revisionary'), $blogname ); + $title = sprintf( __('[%s] %s Updated', 'revisionary'), $blogname, pp_revisions_status_label('pending-revision', 'name') ); - $message = sprintf( __('A change request to the %1$s "%2$s" has been updated.', 'revisionary'), $type_caption, $post_arr['post_title'] ) . "\r\n\r\n"; + $message = sprintf( __('A %s to the %1$s "%2$s" has been updated.', 'revisionary'), strtolower(pp_revisions_status_label('pending-revision', 'name')), $type_caption, $post_arr['post_title'] ) . "\r\n\r\n"; } else { - $title = sprintf( __('[%s] Change Request Submission', 'revisionary'), $blogname ); + $title = sprintf( __('[%s] %s Submission', 'revisionary'), $blogname, pp_revisions_status_label('pending-revision', 'name') ); - $message = sprintf( __('A change request to the %1$s "%2$s" has been submitted.', 'revisionary'), $type_caption, $post_arr['post_title'] ) . "\r\n\r\n"; + $message = sprintf( __('A %s to the %1$s "%2$s" has been submitted.', 'revisionary'), strtolower(pp_revisions_status_label('pending-revision', 'name')), $type_caption, $post_arr['post_title'] ) . "\r\n\r\n"; } $message .= sprintf( __('This operation was performed by %1$s.', 'revisionary' ), $current_user->display_name ) . "\r\n\r\n"; @@ -172,7 +172,7 @@ function do_notifications( $notification_type, $status, $post_arr, $args ) { $message .= __( 'Revision Queue: ', 'revisionary' ) . rvy_admin_url("admin.php?page=revisionary-q&published_post={$published_post->ID}") . "\r\n\r\n"; - $message .= __( 'Edit Change Request: ', 'revisionary' ) . rvy_admin_url("post.php?action=edit&post={$revision_id}") . "\r\n"; + $message .= sprintf(__( 'Edit %s: ', 'revisionary' ), pp_revisions_status_label('pending-revision', 'name')) . rvy_admin_url("post.php?action=edit&post={$revision_id}") . "\r\n"; } if ( $admin_notify ) { diff --git a/revisionary_main.php b/revisionary_main.php index 6f6bb9d5..8f6e3a2c 100644 --- a/revisionary_main.php +++ b/revisionary_main.php @@ -146,7 +146,7 @@ function adminToolbarItem($admin_bar) { if (current_user_can('copy_post', $post->ID)) { $admin_bar->add_menu([ 'id' => 'rvy-create-revision', - 'title' => 'New Working Copy', // Your menu title + 'title' => rvy_get_option('revision_statuses_noun_labels') ? __('New Working Copy', 'revisionary') : __('New Revision', 'revisionary'), // Your menu title //'href' => wp_nonce_url(rvy_admin_url("admin.php?page=rvy-revisions&post={$post->ID}&action=revise&front=1"), "submit-post_{$post->ID}"), // URL 'href' => rvy_admin_url("admin.php?page=rvy-revisions&post={$post->ID}&action=revise&front=1"), // URL 'meta' => [ diff --git a/rvy_init.php b/rvy_init.php index 2283d465..691f8696 100644 --- a/rvy_init.php +++ b/rvy_init.php @@ -45,6 +45,16 @@ function() { _rvy_jreviews_preview_compat(); } +// Default early beta testers to same revision status labeling they are already using. They will be directly notified of the new setting. +$last_ver = get_option('revisionary_last_version'); + +if (version_compare($last_ver, '3.0-alpha', '>=') && version_compare($last_ver, '3.0-beta7', '<')) { + if (!get_option('pp_revisions_beta3_option_sync_done')) { + update_option('rvy_revision_statuses_noun_labels', 1); + update_option('pp_revisions_beta3_option_sync_done', 1); + } +} + function rvy_mail_check_buffer($new_msg = [], $args = []) { if (empty($args['log_only'])) { if (!$use_buffer = rvy_get_option('use_notification_buffer')) { @@ -221,34 +231,142 @@ function rvy_delete_post_meta($post_id, $meta_key) { } function rvy_status_registrations() { + + $labels = apply_filters('revisionary_status_labels', + rvy_get_option('revision_statuses_noun_labels') ? + [ + 'draft-revision' => [ + 'name' => __('Working Copy', 'revisionary'), + 'submit' => __('Create Working Copy', 'revisionary'), + 'submit_short' => __('Create Copy', 'revisionary'), + 'submitting' => __('Creating Working Copy...', 'revisionary'), + 'submitted' => __('Working Copy ready.', 'revisionary'), + 'approve' => __('Approve Changes', 'revisionary'), + 'approving' => __('Approving Changes...', 'revisionary'), + 'publish' => __('Publish Changes', 'revisionary'), + 'save' => __('Save Revision', 'revisionary'), + 'update' => __('Update Revision', 'revisionary'), + 'plural' => __('Working Copies', 'revisionary'), + 'short' => __('Working Copy', 'revisionary'), + 'count' => _n_noop('Working Copies (%d)', 'Working Copies (%d)'), // @todo: confirm API will support a fixed string + 'basic' => 'Copy', + ], + + 'pending-revision' => [ + 'name' => __('Change Request', 'revisionary'), + 'submit' => __('Submit Change Request', 'revisionary'), + 'submit_short' => __('Submit Changes', 'revisionary'), + 'submitting' => __('Submitting Changes...', 'revisionary'), + 'submitted' => __('Changes Submitted.', 'revisionary'), + 'approve' => __('Approve Changes', 'revisionary'), + 'approving' => __('Approving Changes...', 'revisionary'), + 'publish' => __('Publish Changes', 'revisionary'), + 'save' => __('Save Revision', 'revisionary'), + 'update' => __('Update Revision', 'revisionary'), + 'plural' => __('Change Requests', 'revisionary'), + 'short' => __('Change Request', 'revisionary'), + 'count' => _n_noop('Change Requests (%d)', 'Change Requests (%d)'), + 'enable' => __('Enable Change Requests', 'revisionary'), + 'basic' => 'Change Request', + ], + + 'future-revision' => [ + 'name' => __('Scheduled Change', 'revisionary'), + 'submit' => __('Schedule Changes', 'revisionary'), + 'submit_short' => __('Schedule Changes', 'revisionary'), + 'submitting' => __('Scheduling Changes...', 'revisionary'), + 'submitted' => __('Changes are Scheduled.', 'revisionary'), + 'approve' => __('Schedule Changes', 'revisionary'), + 'publish' => __('Publish Changes', 'revisionary'), + 'save' => __('Save Revision', 'revisionary'), + 'update' => __('Update Revision', 'revisionary'), + 'plural' => __('Scheduled Changes', 'revisionary'), + 'short' => __('Scheduled Change', 'revisionary'), + 'count' => _n_noop('Scheduled Changes (%d)', 'Scheduled Changes (%d)'), + 'basic' => 'Scheduled Change', + ], + ] + + : + [ + 'draft-revision' => [ + 'name' => __('Unsubmitted Revision', 'revisionary'), + 'submit' => __('New Revision', 'revisionary'), + 'submit_short' => __('New Revision', 'revisionary'), + 'submitting' => __('Creating Revision...', 'revisionary'), + 'submitted' => __('Revision ready to edit.', 'revisionary'), + 'approve' => __('Approve Revision', 'revisionary'), + 'publish' => __('Publish Revision', 'revisionary'), + 'save' => __('Save Revision', 'revisionary'), + 'update' => __('Update Revision', 'revisionary'), + 'plural' => __('Unsubmitted Revisions', 'revisionary'), + 'short' => __('Not Submitted', 'revisionary'), + 'count' => _n_noop('Not Submitted for Approval (%s)', 'Not Submitted for Approval (%s)'), // @todo: confirm API will support a fixed string + 'basic' => 'Revision', + ], + + 'pending-revision' => [ + 'name' => __('Submitted Revision', 'revisionary'), + 'submit' => __('Submit Revision', 'revisionary'), + 'submitting' => __('Submitting Revision...', 'revisionary'), + 'submitted' => __('Revision Submitted.', 'revisionary'), + 'submit_short' => __('Submit Revision', 'revisionary'), + 'approve' => __('Approve Revision', 'revisionary'), + 'publish' => __('Publish Revision', 'revisionary'), + 'save' => __('Save Revision', 'revisionary'), + 'update' => __('Update Revision', 'revisionary'), + 'plural' => __('Submitted Revisions', 'revisionary'), + 'short' => __('Submitted', 'revisionary'), + 'count' => _n_noop('Submitted for Approval (%s)', 'Submitted for Approval (%s)'), + 'basic' => 'Revision', + ], + + 'future-revision' => [ + 'name' => __('Scheduled Revision', 'revisionary'), + 'submit' => __('Schedule Revision', 'revisionary'), + 'submit_short' => __('Schedule Revision', 'revisionary'), + 'submitting' => __('Scheduling Revision...', 'revisionary'), + 'submitted' => __('Revision Scheduled.', 'revisionary'), + 'approve' => __('Approve Revision', 'revisionary'), + 'publish' => __('Publish Revision', 'revisionary'), + 'save' => __('Save Revision', 'revisionary'), + 'update' => __('Update Revision', 'revisionary'), + 'plural' => __('Scheduled Revisions', 'revisionary'), + 'short' => __('Scheduled', 'revisionary'), + 'count' => _n_noop('Scheduled Revision (%s)', 'Scheduled Revisions (%s)'), + 'basic' => 'Scheduled Revision', + ], + ] + ); + register_post_status('draft-revision', array( - 'label' => __('Working Copy', 'revisionary'), - 'labels' => (object)['publish' => __('Publish Changes', 'revisionary'), 'save' => __('Save Revision', 'revisionary'), 'update' => __('Update Revision', 'revisionary'), 'plural' => __('Working Copies', 'revisionary'), 'short' => __('Draft', 'revisionary') ], + 'label' => $labels['draft-revision']['name'], + 'labels' => (object) $labels['draft-revision'], 'protected' => true, 'internal' => true, - 'label_count' => _n_noop('Working Copies (%s)', 'Working Copies (%s)'), // @todo: confirm API will support a fixed string + 'label_count' => $labels['draft-revision']['count'], 'exclude_from_search' => false, 'show_in_admin_all_list' => false, 'show_in_admin_status_list' => false, )); register_post_status('pending-revision', array( - 'label' => __('Change Request', 'revisionary'), - 'labels' => (object)['publish' => __('Publish Changes', 'revisionary'), 'save' => __('Save Revision', 'revisionary'), 'update' => __('Update Revision', 'revisionary'), 'plural' => __('Change Requests', 'revisionary'), 'short' => __('Entry', 'revisionary') ], + 'label' => $labels['pending-revision']['name'], + 'labels' => (object) $labels['pending-revision'], 'protected' => true, 'internal' => true, - 'label_count' => _n_noop('Change Requests (%s)', 'Change Requests (%s)'), + 'label_count' => $labels['pending-revision']['count'], 'exclude_from_search' => false, 'show_in_admin_all_list' => false, 'show_in_admin_status_list' => false, )); register_post_status('future-revision', array( - 'label' => __('Scheduled Change', 'revisionary'), - 'labels' => (object)['publish' => __('Publish Changes', 'revisionary'), 'save' => __('Save Revision', 'revisionary'), 'update' => __('Update Revision', 'revisionary'), 'plural' => __('Scheduled Changes', 'revisionary'), 'short' => __('Scheduled', 'revisionary')], + 'label' => $labels['future-revision']['name'], + 'labels' => (object) $labels['future-revision'], 'protected' => true, 'internal' => true, - 'label_count' => _n_noop('Scheduled Changes (%s)', 'Scheduled Changes (%s)'), + 'label_count' => $labels['future-revision']['count'], 'exclude_from_search' => false, 'show_in_admin_all_list' => false, 'show_in_admin_status_list' => false, @@ -289,6 +407,16 @@ function rvy_status_registrations() { ); } +function pp_revisions_status_label($status_name, $label_property) { + global $wp_post_statuses; + + if (!empty($wp_post_statuses[$status_name]) && !empty($wp_post_statuses[$status_name]->labels->$label_property)) { + return $wp_post_statuses[$status_name]->labels->$label_property; + } else { + return ''; + } +} + // WP function is_plugin_active_for_network() is defined in admin function rvy_plugin_active_for_network( $plugin ) { if ( ! is_multisite() ) { From 34542e5558374f734dbf595716bb9dc6a3fc26af Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 12 Oct 2021 17:34:05 -0400 Subject: [PATCH 131/193] Fix autosave implementation (trigger on revision submission) Revision creation / submission no longer relies on shortening the autosave interval. --- admin/admin_rvy.php | 9 ---- admin/post-editor-workflow-ui_rvy.php | 4 ++ admin/revisionary.css | 13 +++++ admin/rvy_post-block-edit.dev.js | 64 ++++++++++++++++++++++- admin/rvy_post-classic-edit.dev.js | 26 ++++++---- admin/rvy_revision-block-edit.dev.js | 74 ++++++++++++++++++++++++++- revisionary.php | 4 -- 7 files changed, 167 insertions(+), 27 deletions(-) diff --git a/admin/admin_rvy.php b/admin/admin_rvy.php index 8356bdc9..281dcd24 100644 --- a/admin/admin_rvy.php +++ b/admin/admin_rvy.php @@ -101,15 +101,6 @@ function __construct() { add_filter('presspermit_status_control_scripts', [$this, 'fltDisableStatusControlScripts']); add_filter('cme_plugin_capabilities', [$this, 'fltPublishPressCapsSection']); - - if (defined('AUTOSAVE_INTERVAL') && (AUTOSAVE_INTERVAL > 5) && !defined('PP_REVISIONS_IGNORE_AUTOSAVE_INTERVAL')) { - if (!empty($_REQUEST['page']) && in_array($_REQUEST['page'], ['revisionary-settings', 'rvy-net_options', 'revisionary-q'])) { - add_action('all_admin_notices', function() { - $message = sprintf(__( 'For proper results, please set the AUTOSAVE_INTERVAL constant to 5 or lower.', 'revisionary' )); - echo "
    " . $message . '
    '; - }); - } - } } function admin_scripts() { diff --git a/admin/post-editor-workflow-ui_rvy.php b/admin/post-editor-workflow-ui_rvy.php index d54c0291..bff390f9 100644 --- a/admin/post-editor-workflow-ui_rvy.php +++ b/admin/post-editor-workflow-ui_rvy.php @@ -77,6 +77,7 @@ public static function revisionLinkParams($args = []) { if ($vars['draftAjaxField']) { $vars['draftActionCaption'] = __('Submit Change Request', 'revisionary'); $vars['draftActionURL'] = ''; // wp_nonce_url( rvy_admin_url("admin.php?page=rvy-revisions&revision={$post->ID}&action=submit$redirect_arg"), "submit-post_$published_post_id|{$post->ID}" ); + $vars['draftInProcessCaption'] = pp_revisions_status_label('pending-revision', 'submitting'); $vars['draftCompletedCaption'] = __('Changes Submitted.', 'revisionary'); $vars['draftCompletedLinkCaption'] = __('view', 'revisionary'); $vars['draftCompletedURL'] = rvy_preview_url($post); @@ -94,6 +95,8 @@ public static function revisionLinkParams($args = []) { $vars['pendingActionCaption'] = __('Approve Changes', 'revisionary'); $vars['pendingActionURL'] = wp_nonce_url( rvy_admin_url("admin.php?page=rvy-revisions&revision={$post->ID}&action=approve$redirect_arg&editor=1"), "approve-post_$published_post_id|{$post->ID}" ); + $vars['pendingInProcessCaption'] = pp_revisions_status_label('pending-revision', 'approving'); + $vars['futureActionCaption'] = __('Publish Changes', 'revisionary'); $vars['futureActionURL'] = wp_nonce_url( rvy_admin_url("admin.php?page=rvy-revisions&revision={$post->ID}&action=publish$redirect_arg&editor=1"), "publish-post_$published_post_id|{$post->ID}" ); @@ -152,6 +155,7 @@ public static function postLinkParams($args = []) { 'actionCaption' => __('Create Working Copy', 'revisionary'), 'actionTitle' => esc_attr(__('Create a working copy of this post', 'revisionary')), 'actionDisabledTitle' => esc_attr(__('Update post before creating copy.', 'revisionary')), + 'creatingCaption' => pp_revisions_status_label('draft-revision', 'submitting'), 'completedCaption' => __('Working Copy Ready.', 'revisionary'), 'completedLinkCaption' => __('view', 'revisionary'), 'completedURL' => rvy_nc_url( add_query_arg('get_new_revision', $post->ID, get_permalink($post->ID))), diff --git a/admin/revisionary.css b/admin/revisionary.css index a69e5b77..1590aaa9 100644 --- a/admin/revisionary.css +++ b/admin/revisionary.css @@ -540,6 +540,19 @@ color: #2271B1; color: #655997 !important; } +div.components-panel div.revision-submitting { + margin: 6px 0 6px 0; +} + +div.components-panel div.revision-creating { + margin: 15px 0 15px 0; + padding: 6px 0 9px 2px; /* @todo: review this spacing relative to button.revision-created */ +} + +div.components-panel span.ppr-submission-spinner, div.components-panel div.revision-submitting span.spinner { +float: none; +height: 25px !important; +} div.components-panel button.revision-approve, div.components-panel div.revision-created { diff --git a/admin/rvy_post-block-edit.dev.js b/admin/rvy_post-block-edit.dev.js index 4b40e508..497b0b3c 100644 --- a/admin/rvy_post-block-edit.dev.js +++ b/admin/rvy_post-block-edit.dev.js @@ -34,6 +34,10 @@ jQuery(document).ready( function($) { + rvyObjEdit.actionTitle + '">' + + '' + + '' + + '' + + '
    option_checkbox( 'caption_copy_as_edit', $tab, $section, $hint, '' ); + //do_action('revisionary_option_ui_working_copies', $this); ?> diff --git a/defaults_rvy.php b/defaults_rvy.php index beed1465..9c982fb3 100644 --- a/defaults_rvy.php +++ b/defaults_rvy.php @@ -15,6 +15,7 @@ function rvy_default_options_sitewide() { $def = array( 'copy_posts_capability' => true, 'revision_statuses_noun_labels' => true, + 'caption_copy_as_edit' => true, 'pending_revisions' => true, 'revise_posts_capability' => true, 'scheduled_revisions' => true, @@ -63,6 +64,7 @@ function rvy_default_options() { $def = array( 'copy_posts_capability' => 0, 'revision_statuses_noun_labels' => 0, + 'caption_copy_as_edit' => 0, 'pending_revisions' => 1, 'revise_posts_capability' => 0, 'scheduled_revisions' => 1, From 24a4bc8029324414d36e16bade1aaf42b22a6098 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 12 Oct 2021 17:44:31 -0400 Subject: [PATCH 133/193] Revision scheduling: disable Schedule button while in progress @todo: apply spinner and "Scheduling" caption --- admin/rvy_post-block-edit.dev.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/admin/rvy_post-block-edit.dev.js b/admin/rvy_post-block-edit.dev.js index 497b0b3c..2309a796 100644 --- a/admin/rvy_post-block-edit.dev.js +++ b/admin/rvy_post-block-edit.dev.js @@ -192,6 +192,8 @@ jQuery(document).ready( function($) { return; } + $('button.revision-schedule').prop('disabled', true); + var revisionaryScheduleDone = function () { $('.revision-schedule').hide(); $('.revision-scheduled').show(); From bd4daa4ecf24fa2b132b42285e84c691c193e978 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 12 Oct 2021 17:45:31 -0400 Subject: [PATCH 134/193] Revision scheduling: Schedule button recaptions to "Update" on side panel toggle --- admin/rvy_post-block-edit.dev.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/admin/rvy_post-block-edit.dev.js b/admin/rvy_post-block-edit.dev.js index 2309a796..a1d7230e 100644 --- a/admin/rvy_post-block-edit.dev.js +++ b/admin/rvy_post-block-edit.dev.js @@ -79,6 +79,8 @@ jQuery(document).ready( function($) { $('a.revision-approve').attr('title', rvyObjEdit.actionTitle); $('a.revision-schedule').attr('title', rvyObjEdit.scheduleTitle); } + + RvyRefreshScheduleButton(); } } var RvyUIInterval = setInterval(RvySubmissionUI, 200); From bda5b2cbcdc9265d25829b494304146c888f8647 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 12 Oct 2021 17:46:27 -0400 Subject: [PATCH 135/193] Lang: eliminate encoded spaces from translation strings --- front_rvy.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/front_rvy.php b/front_rvy.php index cd7730ac..96e7dad2 100644 --- a/front_rvy.php +++ b/front_rvy.php @@ -247,10 +247,12 @@ function act_template_redirect() { '' ) . sprintf( + str_replace(' ', ' ', apply_filters( 'revisionary_preview_compare_view_caption', - __("%sCompare%s%sView Published Post%s", 'revisionary'), + __("%sCompare%s%sView Published Post%s", 'revisionary'), $post // revision + ) ), "", '', @@ -261,10 +263,12 @@ function act_template_redirect() { } else { // @todo $view_published = ($published_url) ? sprintf( + str_replace(' ', ' ', apply_filters( 'revisionary_preview_view_caption', - __("%sView Published Post%s", 'revisionary'), + __("%sView Published Post%s", 'revisionary'), $post // revision + ) ), "", "" From ece06f7153588bafc4193668de32993182256904 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 12 Oct 2021 17:46:59 -0400 Subject: [PATCH 136/193] Fix error message on detection of another Revisions version active --- revisionary.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/revisionary.php b/revisionary.php index dafd005b..d0ebec03 100644 --- a/revisionary.php +++ b/revisionary.php @@ -80,7 +80,8 @@ function($links, $file) add_action('all_admin_notices', function() { if (defined('REVISIONARY_FILE')) { - $message = sprintf( __( 'Another copy of PublishPress Revisions (or Revisionary) is already activated (version %1$s: "%2$s")', 'revisionary' ), RVY_VERSION, dirname(plugin_basename(REVISIONARY_FILE)) ); + $other_version = (defined('REVISIONARY_VERSION')) ? REVISIONARY_VERSION : PUBLISHPRESS_REVISIONS_VERSION; + $message = sprintf( __( 'Another copy of PublishPress Revisions (or Revisionary) is already activated (version %1$s: "%2$s")', 'revisionary' ), $other_version, dirname(plugin_basename(REVISIONARY_FILE)) ); } else { $message = sprintf( __( 'Another copy of PublishPress Revisions (or Revisionary) is already activated (version %1$s)', 'revisionary' ), RVY_VERSION ); } From 3280d1fe2c363f3a574dfc12dd5aa86e47097426 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 12 Oct 2021 17:47:44 -0400 Subject: [PATCH 137/193] Earlier inclusion of some basic plugin functions --- revisionary.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/revisionary.php b/revisionary.php index d0ebec03..d8c48556 100644 --- a/revisionary.php +++ b/revisionary.php @@ -119,6 +119,8 @@ function($links, $file) require_once(dirname(__FILE__).'/activation_rvy.php'); } + require_once(dirname(__FILE__).'/functions.php'); + // import from Revisionary 1.x new RevisionaryActivation(['import_legacy' => true]); @@ -137,6 +139,8 @@ function($links, $file) { global $wpdb; + require_once(dirname(__FILE__).'/functions.php'); + // convert pending / scheduled revisions to v2.x format, which also prevents them from being listed as regular drafts / pending posts $revision_status_csv = rvy_revision_statuses(['return' => 'csv']); $wpdb->query("UPDATE $wpdb->posts SET post_status = post_mime_type WHERE post_mime_type IN ($revision_status_csv)"); From 1fde4586c9f9c8735e095a29aa92272f43eeb7b5 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 12 Oct 2021 17:48:06 -0400 Subject: [PATCH 138/193] Normalize whitespace --- admin/revisionary.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/admin/revisionary.css b/admin/revisionary.css index 1590aaa9..c992bd6b 100644 --- a/admin/revisionary.css +++ b/admin/revisionary.css @@ -555,7 +555,8 @@ height: 25px !important; } div.components-panel button.revision-approve, -div.components-panel div.revision-created { +div.components-panel div.revision-created +{ margin: 15px 0 15px 0; } From fbaef26e49b3048a76ced017a42de2bb4f04c226 Mon Sep 17 00:00:00 2001 From: Kevin Behrens <43488774+agapetry@users.noreply.github.com> Date: Tue, 12 Oct 2021 17:48:40 -0400 Subject: [PATCH 139/193] Update minified javascript files --- admin/rvy_post-block-edit.js | 20 +++++++++++++------- admin/rvy_post-classic-edit.js | 8 ++++---- admin/rvy_revision-block-edit.js | 10 ++++++++-- 3 files changed, 25 insertions(+), 13 deletions(-) diff --git a/admin/rvy_post-block-edit.js b/admin/rvy_post-block-edit.js index 108c7578..d6c23c17 100644 --- a/admin/rvy_post-block-edit.js +++ b/admin/rvy_post-block-edit.js @@ -5,6 +5,9 @@ setInterval(RvyPendingRevPanel,200);} var rvyIsPublished=false;var RvySubmissionUI=function(){if(rvyObjEdit.ajaxurl&&!$('button.revision-approve').length){var html='
    ' ++'' +'';}} -html+='
    ';$('div.edit-post-post-schedule').after(html);if(rvyCreationDisabled){$('button.revision-approve').prop('disabled','disabled');$('button.revision-schedule').prop('disabled','disabled');$('a.revision-approve').attr('title',rvyObjEdit.actionDisabledTitle);$('a.revision-schedule').attr('title',rvyObjEdit.scheduleDisabledTitle);}else{$('button.revision-approve').prop('disabled',false);$('button.revision-schedule').prop('disabled',false);$('a.revision-approve').attr('title',rvyObjEdit.actionTitle);$('a.revision-schedule').attr('title',rvyObjEdit.scheduleTitle);}}} +html+='
    ';$('div.edit-post-post-schedule').after(html);if(rvyCreationDisabled){$('button.revision-approve').prop('disabled','disabled');$('button.revision-schedule').prop('disabled','disabled');$('a.revision-approve').attr('title',rvyObjEdit.actionDisabledTitle);$('a.revision-schedule').attr('title',rvyObjEdit.scheduleDisabledTitle);}else{$('button.revision-approve').prop('disabled',false);$('button.revision-schedule').prop('disabled',false);$('a.revision-approve').attr('title',rvyObjEdit.actionTitle);$('a.revision-schedule').attr('title',rvyObjEdit.scheduleTitle);} +RvyRefreshScheduleButton();}} var RvyUIInterval=setInterval(RvySubmissionUI,200);function RvyGetRandomInt(max){return Math.floor(Math.random()*max);} -var rvyCreationDisabled=false;$(document).on('click','div.postbox-container',function(){rvyCreationDisabled=true;$('button.revision-approve').prop('disabled','disabled');$('button.revision-schedule').prop('disabled','disabled');$('a.revision-approve').attr('title',rvyObjEdit.actionDisabledTitle);$('a.revision-schedule').attr('title',rvyObjEdit.scheduleDisabledTitle);});$(document).on('click','button.editor-post-publish-button',function(){rvyCreationDisabled=false;$('button.revision-approve').prop('disabled',false);$('button.revision-schedule').prop('disabled',false);$('a.revision-approve').attr('title',rvyObjEdit.actionTitle);$('a.revision-schedule').attr('title',rvyObjEdit.scheduleTitle);});$(document).on('click','button.revision-create',function(){if($('a.revision-create').attr('disabled')){return;} -var revisionaryCreateDone=function(){$('.revision-create').hide();$('.revision-created').show();$('button.revision-created a').attr('href',rvyObjEdit.completedURL);} +var rvyCreationDisabled=false;$(document).on('click','div.postbox-container',function(){rvyCreationDisabled=true;$('button.revision-approve').prop('disabled','disabled');$('button.revision-schedule').prop('disabled','disabled');$('a.revision-approve').attr('title',rvyObjEdit.actionDisabledTitle);$('a.revision-schedule').attr('title',rvyObjEdit.scheduleDisabledTitle);});$(document).on('click','button.editor-post-publish-button',function(){rvyCreationDisabled=false;$('button.revision-approve').prop('disabled',false);$('button.revision-schedule').prop('disabled',false);$('a.revision-approve').attr('title',rvyObjEdit.actionTitle);$('a.revision-schedule').attr('title',rvyObjEdit.scheduleTitle);});var rvyIsAutosaveStarted=false;var rvyIsAutosaveDone=false;$(document).on('click','button.revision-create',function(){if($('a.revision-create').attr('disabled')){return;} +$('button.revision-create').hide();$('div.revision-creating').show();$('div.revision-creating span.ppr-submission-spinner').css('visibility','visible');if(!wp.data.select('core/editor').isEditedPostDirty()){rvyCreateCopy();return;} +rvyIsAutosaveStarted=false;rvyIsAutosaveDone=false;wp.data.dispatch('core/editor').autosave();var tmrNoAutosave=setTimeout(()=>{if(!rvyIsAutosaveStarted){clearInterval(intAutosaveWatch);rvyCreateCopy();}},10000);var intAutosaveDoneWatch;var intAutosaveWatch=setInterval(()=>{if(wp.data.select('core/editor').isAutosavingPost()){rvyIsAutosaveStarted=true;clearInterval(intAutosaveWatch);clearTimeout(tmrNoAutosave);var tmrAutosaveTimeout=setTimeout(()=>{if(!rvyIsAutosaveDone){clearInterval(intAutosaveWatch);rvyCreateCopy();}},10000);intAutosaveDoneWatch=setInterval(()=>{if(!wp.data.select('core/editor').isAutosavingPost()){rvyIsAutosaveDone=true;clearInterval(intAutosaveDoneWatch);clearTimeout(tmrAutosaveTimeout);rvyCreateCopy();}},100);}},100);});function rvyCreateCopy(){var revisionaryCreateDone=function(){$('.revision-create').hide();$('.revision-creating').hide();$('.revision-created').show();$('a.revision-approve span.spinner').css('visibility','hidden');$('button.revision-created a').attr('href',rvyObjEdit.completedURL);} var revisionaryCreateError=function(data,txtStatus){$('div.rvy-creation-ui').html(rvyObjEdit.errorCaption);} -var data={'rvy_ajax_field':'create_revision','rvy_ajax_value':wp.data.select('core/editor').getCurrentPostId(),'rvy_date_selection':RvyTimeSelection,'nc':RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryCreateDone,error:revisionaryCreateError});});$(document).on('click','button.revision-schedule',function(){if($('a.revision-schedule').attr('disabled')){return;} -var revisionaryScheduleDone=function(){$('.revision-schedule').hide();$('.revision-scheduled').show();$('button.revision-scheduled a').attr('href',rvyObjEdit.scheduledURL);} +var data={'rvy_ajax_field':'create_revision','rvy_ajax_value':wp.data.select('core/editor').getCurrentPostId(),'rvy_date_selection':RvyTimeSelection,'nc':RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryCreateDone,error:revisionaryCreateError});} +$(document).on('click','button.revision-schedule',function(){if($('a.revision-schedule').attr('disabled')){return;} +$('button.revision-schedule').prop('disabled',true);var revisionaryScheduleDone=function(){$('.revision-schedule').hide();$('.revision-scheduled').show();$('button.revision-scheduled a').attr('href',rvyObjEdit.scheduledURL);} var revisionaryScheduleError=function(data,txtStatus){$('div.rvy-creation-ui').html(rvyObjEdit.errorCaption);} -var data={'rvy_ajax_field':'create_scheduled_revision','rvy_ajax_value':wp.data.select('core/editor').getCurrentPostId(),'rvy_date_selection':RvyTimeSelection,'nc':RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryScheduleDone,error:revisionaryScheduleError});});var RvySelectedFutureDate=false;var RvyTimeSelection='';var RvyRefreshScheduleButton=function(){var selectedDateHTML=$('button.edit-post-post-schedule__toggle').html();if(!/\d/.test(selectedDateHTML)||!rvyIsPublished){RvyTimeSelection='';$('.rvy-creation-ui .revision-schedule').hide();$('.rvy-creation-ui .revision-scheduled').hide();$('.rvy-creation-ui .revision-created').hide();$('.rvy-creation-ui .revision-create').show();return;} -var selectedDate=new Date(selectedDateHTML);RvyTimeSelection=selectedDate.getTime();var tdiff=RvyTimeSelection-Date.now();RvyTimeSelection=RvyTimeSelection/1000;if((tdiff>1000)){RvySelectedFutureDate=true;$('.rvy-creation-ui .revision-create').hide();$('.rvy-creation-ui .revision-created').hide();$('.rvy-creation-ui .revision-scheduled').hide();$('.rvy-creation-ui .revision-schedule').show();}else{$('.rvy-creation-ui .revision-schedule').hide();$('.rvy-creation-ui .revision-scheduled').hide();$('.rvy-creation-ui .revision-created').hide();$('.rvy-creation-ui .revision-create').show();if(tdiff<=0){if(RvySelectedFutureDate){RvyTimeSelection='';}}}} +var data={'rvy_ajax_field':'create_scheduled_revision','rvy_ajax_value':wp.data.select('core/editor').getCurrentPostId(),'rvy_date_selection':RvyTimeSelection,'nc':RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryScheduleDone,error:revisionaryScheduleError});});var RvySelectedFutureDate=false;var RvyTimeSelection='';var RvyRefreshScheduleButton=function(){var selectedDateHTML=$('button.edit-post-post-schedule__toggle').html();if(!/\d/.test(selectedDateHTML)||!rvyIsPublished){RvyTimeSelection='';$('.rvy-creation-ui .revision-schedule').hide();$('.rvy-creation-ui .revision-scheduled').hide();$('.rvy-creation-ui .revision-creating').hide();$('.rvy-creation-ui .revision-created').hide();$('.rvy-creation-ui .revision-create').show();return;} +var selectedDate=new Date(selectedDateHTML);RvyTimeSelection=selectedDate.getTime();var tdiff=RvyTimeSelection-Date.now();RvyTimeSelection=RvyTimeSelection/1000;if((tdiff>1000)){RvySelectedFutureDate=true;$('.rvy-creation-ui .revision-create').hide();$('.rvy-creation-ui .revision-creating').hide();$('.rvy-creation-ui .revision-created').hide();$('.rvy-creation-ui .revision-scheduled').hide();$('.rvy-creation-ui .revision-schedule').show();}else{$('.rvy-creation-ui .revision-schedule').hide();$('.rvy-creation-ui .revision-scheduled').hide();$('.rvy-creation-ui .revision-created').hide();$('.rvy-creation-ui .revision-creating').hide();$('.rvy-creation-ui .revision-create').show();if(tdiff<=0){if(RvySelectedFutureDate){RvyTimeSelection='';}}}} var RvyDetectPublishOptionsDivClosureInterval=false;var RvyDetectPublishOptionsDiv=function(){if($('div.edit-post-post-schedule__dialog').length){clearInterval(RvyDetectPublishOptionsDivInterval);var RvyDetectPublishOptionsClosure=function(){if(!$('div.edit-post-post-schedule__dialog').length){clearInterval(RvyDetectPublishOptionsDivClosureInterval);RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,500);RvyRefreshScheduleButton();}} RvyDetectPublishOptionsDivClosureInterval=setInterval(RvyDetectPublishOptionsClosure,200);}} var RvyDetectPublishOptionsDivInterval=setInterval(RvyDetectPublishOptionsDiv,500);}); \ No newline at end of file diff --git a/admin/rvy_post-classic-edit.js b/admin/rvy_post-classic-edit.js index 29d582fd..3f391f4e 100644 --- a/admin/rvy_post-classic-edit.js +++ b/admin/rvy_post-classic-edit.js @@ -14,14 +14,14 @@ jQuery(document).ready(function($){var RvySubmissionUI=function(){if(rvyObjEdit. html+='
    ';$('#delete-action').before(html);}} var RvyUIInterval=setInterval(RvySubmissionUI,100);function RvyGetRandomInt(max){return Math.floor(Math.random()*max);} $(document).on('click','a.revision-create',function(){if($('a.revision-create').attr('disabled')){return;} -$('a.revision-create').attr('disabled','disabled');if(wp.autosave.server.postChanged()){wp.autosave.server.triggerSave();var approvalDelay=250;}else{var approvalDelay=1;} -var revisionaryCreateDone=function(){$('.revision-create').hide();$('.revision-created-wrapper').show();$('div.revision-created-wrapper a.revision-edit').attr('href',rvyObjEdit.completedURL);$('a.revision-create').removeAttr('disabled');} +$('a.revision-create').attr('disabled','disabled');if(wp.autosave&&wp.autosave.server.postChanged()){var tmoRevisionSubmit=setTimeout(rvyCopyPost,5000);var intRevisionSubmit=setInterval(function(){if(!wp.autosave.server.postChanged()){clearTimeout(tmoRevisionSubmit);clearInterval(intRevisionSubmit);rvyCopyPost();}},250);wp.autosave.server.triggerSave();}else{rvyCopyPost();}});function rvyCopyPost(){var revisionaryCreateDone=function(){$('.revision-create').hide();$('.revision-created-wrapper').show();$('div.revision-created-wrapper a.revision-edit').attr('href',rvyObjEdit.completedURL);$('a.revision-create').removeAttr('disabled');} var revisionaryCreateError=function(data,txtStatus){$('div.rvy-creation-ui').html(rvyObjEdit.errorCaption);} -var tmoSubmit=setInterval(function(){if(!wp.autosave.server.postChanged()){var data={'rvy_ajax_field':'create_revision','rvy_ajax_value':rvyObjEdit.postID,'rvy_date_selection':RvyTimeSelection,'nc':RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryCreateDone,error:revisionaryCreateError});clearInterval(tmoSubmit);}},approvalDelay);});$(document).on('click','div.postbox-container',function(){$('a.revision-create').attr('disabled','disabled');$('a.revision-schedule').attr('disabled','disabled');});$(document).on('click','a.revision-schedule',function(){if($('a.revision-schedule').attr('disabled')){return;} +var data={'rvy_ajax_field':'create_revision','rvy_ajax_value':rvyObjEdit.postID,'rvy_date_selection':RvyTimeSelection,'nc':RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryCreateDone,error:revisionaryCreateError});} +$(document).on('click','div.postbox-container',function(){$('a.revision-create').attr('disabled','disabled');$('a.revision-schedule').attr('disabled','disabled');});$(document).on('click','a.revision-schedule',function(){if($('a.revision-schedule').attr('disabled')){return;} $('a.revision-schedule').attr('disabled','disabled');if(wp.autosave.server.postChanged()){wp.autosave.server.triggerSave();var approvalDelay=250;}else{var approvalDelay=1;} var revisionaryScheduleDone=function(){$('.revision-schedule').hide();$('.revision-scheduled-wrapper').show();$('div.revision-scheduled-wrapper a.revision-edit').attr('href',rvyObjEdit.scheduledURL);$('a.revision-schedule').removeAttr('disabled');} var revisionaryScheduleError=function(data,txtStatus){$('div.rvy-creation-ui').html(rvyObjEdit.errorCaption);} var tmoSubmit=setInterval(function(){if(!wp.autosave.server.postChanged()){var data={'rvy_ajax_field':'create_scheduled_revision','rvy_ajax_value':rvyObjEdit.postID,'rvy_date_selection':RvyTimeSelection,'nc':RvyGetRandomInt(99999999)};$.ajax({url:rvyObjEdit.ajaxurl,data:data,dataType:"html",success:revisionaryScheduleDone,error:revisionaryScheduleError});clearInterval(tmoSubmit);}},approvalDelay);});$(document).on('click','#post-body-content *, #content_ifr *, #wp-content-editor-container *, #tinymce *, #submitpost, span.revision-created',function(){RvyRefreshScheduleButton();});var RvySelectedFutureDate=false;var RvyTimeSelection='';var RvyRefreshScheduleButton=function(){var selectedDateHTML=$('#timestamp').html();if(!/\d/.test(selectedDateHTML)||!rvyIsPublished){RvyTimeSelection='';$('.rvy-creation-ui .revision-schedule').hide();$('.rvy-creation-ui .revision-scheduled-wrapper').hide();$('.rvy-creation-ui .revision-created-wrapper').hide();$('.rvy-creation-ui .revision-create').show();return;} -var dateStr=$('#mm').val()+'/'+$('#jj').val()+'/'+$('#aa').val()+' '+$('#hh').val()+':'+$('#mn').val()+':00';var selectedDate=new Date(dateStr);RvyTimeSelection=selectedDate.getTime();var tdiff=RvyTimeSelection-Date.now();RvyTimeSelection=RvyTimeSelection/1000;console.log(tdiff);if((tdiff>1000)){RvySelectedFutureDate=true;$('.rvy-creation-ui .revision-create').hide();$('.rvy-creation-ui .revision-created-wrapper').hide();$('.rvy-creation-ui .revision-scheduled-wrapper').hide();$('.rvy-creation-ui .revision-schedule').show();$('#publish').hide();}else{$('.rvy-creation-ui .revision-schedule').hide();$('.rvy-creation-ui .revision-scheduled-wrapper').hide();$('.rvy-creation-ui .revision-created-wrapper').hide();$('.rvy-creation-ui .revision-create').show();if(tdiff<=0){if(RvySelectedFutureDate){RvyTimeSelection='';}} +var dateStr=$('#mm').val()+'/'+$('#jj').val()+'/'+$('#aa').val()+' '+$('#hh').val()+':'+$('#mn').val()+':00';var selectedDate=new Date(dateStr);RvyTimeSelection=selectedDate.getTime();var tdiff=RvyTimeSelection-Date.now();RvyTimeSelection=RvyTimeSelection/1000;if((tdiff>1000)){RvySelectedFutureDate=true;$('.rvy-creation-ui .revision-create').hide();$('.rvy-creation-ui .revision-created-wrapper').hide();$('.rvy-creation-ui .revision-scheduled-wrapper').hide();$('.rvy-creation-ui .revision-schedule').show();$('#publish').hide();}else{$('.rvy-creation-ui .revision-schedule').hide();$('.rvy-creation-ui .revision-scheduled-wrapper').hide();$('.rvy-creation-ui .revision-created-wrapper').hide();$('.rvy-creation-ui .revision-create').show();if(tdiff<=0){if(RvySelectedFutureDate){RvyTimeSelection='';}} $('#publish').show();}} $(document).on('click','a.save-timestamp, a.cancel-timestamp',function(){RvyRefreshScheduleButton();});}); \ No newline at end of file diff --git a/admin/rvy_revision-block-edit.js b/admin/rvy_revision-block-edit.js index af2da03e..0b999324 100644 --- a/admin/rvy_revision-block-edit.js +++ b/admin/rvy_revision-block-edit.js @@ -23,6 +23,9 @@ if(rvyObjEdit[rvyObjEdit.currentStatus+'ActionCaption']){$(refSelector).after('< +'' ++'' +'