| ... | ... |
@@ -32,4 +32,38 @@ |
| 32 | 32 |
max-width: 100%; |
| 33 | 33 |
width: 50%; |
| 34 | 34 |
height: auto; |
| 35 |
-} |
|
| 36 | 35 |
\ No newline at end of file |
| 36 |
+} |
|
| 37 |
+ |
|
| 38 |
+#rc-rollback-container {
|
|
| 39 |
+ margin: 16px 0; |
|
| 40 |
+ padding-top: 8px; |
|
| 41 |
+ border-top: 1px solid #eee; |
|
| 42 |
+} |
|
| 43 |
+.rc-rollback-datetime-wrap {
|
|
| 44 |
+ display: none; |
|
| 45 |
+ margin: 10px 0; |
|
| 46 |
+ line-height: 28px; |
|
| 47 |
+} |
|
| 48 |
+.rc-rollback-datetime-wrap select {
|
|
| 49 |
+ line-height: 14px; |
|
| 50 |
+ padding: 0; |
|
| 51 |
+ vertical-align: top; |
|
| 52 |
+ font-size: 12px; |
|
| 53 |
+} |
|
| 54 |
+.rc-rollback-datetime-wrap input {
|
|
| 55 |
+ border-width: 1px; |
|
| 56 |
+ border-style: solid; |
|
| 57 |
+} |
|
| 58 |
+.rc-rollback-datetime {
|
|
| 59 |
+ display: inline-block; |
|
| 60 |
+} |
|
| 61 |
+ |
|
| 62 |
+.rc-donation {
|
|
| 63 |
+ float: left; |
|
| 64 |
+ clear: both; |
|
| 65 |
+ background-color: #faf096; |
|
| 66 |
+ border: 1px solid #faa824; |
|
| 67 |
+ border-radius: 3px; |
|
| 68 |
+ padding: 0 12px; |
|
| 69 |
+ color: #212121; |
|
| 70 |
+} |
| 37 | 71 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,72 @@ |
| 0 |
+<?php |
|
| 1 |
+/** |
|
| 2 |
+ * Description of class-rucy-componet |
|
| 3 |
+ * |
|
| 4 |
+ * @author Nita |
|
| 5 |
+ */ |
|
| 6 |
+class Class_Rucy_Component {
|
|
| 7 |
+ /** |
|
| 8 |
+ * |
|
| 9 |
+ * |
|
| 10 |
+ * @return bool |
|
| 11 |
+ */ |
|
| 12 |
+ public function update_support_post_type( array $post_types ) {
|
|
| 13 |
+ return update_option( RC_SETTING_OPTION_KEY, $post_types ); |
|
| 14 |
+ } |
|
| 15 |
+ public function get_support_post_type() {
|
|
| 16 |
+ $res = get_option( RC_SETTING_OPTION_KEY ); |
|
| 17 |
+ if( !$res ) {
|
|
| 18 |
+ $res = array( 'post', 'page' ); |
|
| 19 |
+ } else if ( !is_array( $res ) ) {
|
|
| 20 |
+ $res = explode( ',' , $res ); |
|
| 21 |
+ } |
|
| 22 |
+ return $res; |
|
| 23 |
+ } |
|
| 24 |
+ public function get_post_types( $type = 'objects' ) {
|
|
| 25 |
+ $args = array( 'public' => true, ); |
|
| 26 |
+ $post_types = get_post_types( $args, $type ); |
|
| 27 |
+ unset( $post_types['attachment'], $post_types['revision'], $post_types['nav_menu_item'] ); |
|
| 28 |
+ return $post_types; |
|
| 29 |
+ } |
|
| 30 |
+ |
|
| 31 |
+ public function get_post_meta_keys() {
|
|
| 32 |
+ $post_meta_keys = new stdClass(); |
|
| 33 |
+ $post_meta_keys->accept = 'rc_reserv_accept'; |
|
| 34 |
+ $post_meta_keys->content = 'rc_reserv_content'; |
|
| 35 |
+ $post_meta_keys->date = 'rc_reserv_date'; |
|
| 36 |
+ $post_meta_keys->feature_img = 'rc_reserv_feature_image'; |
|
| 37 |
+ $post_meta_keys->accept_feature_img = 'rc_reserv_accept_feature_image'; |
|
| 38 |
+ $post_meta_keys->accept_update = 'rc_reserv_accept_post_update'; |
|
| 39 |
+ $post_meta_keys->accept_rollback = 'rc_rollback_accept'; |
|
| 40 |
+ $post_meta_keys->rollback_date = 'rc_rollback_date'; |
|
| 41 |
+ $post_meta_keys->accept_rollback_update = 'rc_rollback_accept_update_date'; |
|
| 42 |
+ $post_meta_keys->accept_rollback_feature_img = 'rc_rollback_accept_feature_image'; |
|
| 43 |
+ return $post_meta_keys; |
|
| 44 |
+ } |
|
| 45 |
+ |
|
| 46 |
+ public function get_post_rc_meta( $post_id = "" ) {
|
|
| 47 |
+ $base = $this->get_post_meta_keys(); |
|
| 48 |
+ $res = new stdClass(); |
|
| 49 |
+ if( $post_id > 0 ) {
|
|
| 50 |
+ foreach ( $base as $key => $value ) {
|
|
| 51 |
+ $res->$key = get_post_meta( $post_id, $value, true ); |
|
| 52 |
+ } |
|
| 53 |
+ } |
|
| 54 |
+ return $res; |
|
| 55 |
+ } |
|
| 56 |
+ |
|
| 57 |
+ public function save_rc_post_meta_base( $post_id, $post_meta_key, array $post ) {
|
|
| 58 |
+ if ( is_array( $post ) ) {
|
|
| 59 |
+ $post_data = ""; |
|
| 60 |
+ if ( isset( $post[$post_meta_key] ) ) {
|
|
| 61 |
+ $post_data = $post[$post_meta_key]; |
|
| 62 |
+ } |
|
| 63 |
+ $meta = get_post_meta( $post_id, $post_meta_key, true ); |
|
| 64 |
+ if ( $meta != $post_data ) {
|
|
| 65 |
+ update_post_meta( $post_id, $post_meta_key, $post_data, $meta ); |
|
| 66 |
+ } elseif ( $post_data == "" ) {
|
|
| 67 |
+ delete_post_meta( $post_id, $post_meta_key ); |
|
| 68 |
+ } |
|
| 69 |
+ } |
|
| 70 |
+ } |
|
| 71 |
+} |
| 0 | 72 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,131 @@ |
| 0 |
+<?php |
|
| 1 |
+/** |
|
| 2 |
+ * Description of class-rucy-cron |
|
| 3 |
+ * |
|
| 4 |
+ * @author Nita |
|
| 5 |
+ */ |
|
| 6 |
+require_once RC_PLUGIN_DIR . '/inc/class-rucy-component.php'; |
|
| 7 |
+ |
|
| 8 |
+class Class_Rucy_Cron {
|
|
| 9 |
+ |
|
| 10 |
+ public function update_rc_reserved_content( $post_id ) {
|
|
| 11 |
+ $component = new Class_Rucy_Component(); |
|
| 12 |
+ $post_metas = $component->get_post_rc_meta( (int)$post_id ); |
|
| 13 |
+ if ( $post_metas->accept != "1" ) {
|
|
| 14 |
+ return; |
|
| 15 |
+ } |
|
| 16 |
+ // rollback |
|
| 17 |
+ $rollback_data = array(); |
|
| 18 |
+ if( $post_metas->accept_rollback == "1" ) {
|
|
| 19 |
+ $rollback_data = $this->get_rollback_post( (int)$post_id, $post_metas->accept_rollback_date, $post_metas->accept_rollback_feature_img ); |
|
| 20 |
+ } |
|
| 21 |
+ // set update content |
|
| 22 |
+ $updates = array( |
|
| 23 |
+ 'ID' => (int)$post_id, |
|
| 24 |
+ 'post_content' => apply_filters( 'the_content', $post_metas->content ), |
|
| 25 |
+ ); |
|
| 26 |
+ // set update post date |
|
| 27 |
+ if ( $post_metas->accept_update == "1" ) {
|
|
| 28 |
+ $updates['post_date'] = $post_metas->date; |
|
| 29 |
+ $updates['post_date_gmt'] = get_gmt_from_date( $post_metas->date ); |
|
| 30 |
+ } |
|
| 31 |
+ // update post |
|
| 32 |
+ remove_filter( 'content_save_pre', 'wp_filter_post_kses' ); |
|
| 33 |
+ remove_filter( 'content_filtered_save_pre', 'wp_filter_post_kses' ); |
|
| 34 |
+ add_filter( 'content_save_pre', array( $this, 'rc_content_allow_iframe' ) ); |
|
| 35 |
+ wp_update_post( $updates, true ); |
|
| 36 |
+ remove_filter( 'content_save_pre', array( $this, 'rc_content_allow_iframe' ) ); |
|
| 37 |
+ add_filter( 'content_save_pre', 'wp_filter_post_kses' ); |
|
| 38 |
+ add_filter( 'content_filtered_save_pre', 'wp_filter_post_kses' ); |
|
| 39 |
+ // update feature image |
|
| 40 |
+ if ( $post_metas->accept_feature_img == "1" && $post_metas->feature_img != "" ) {
|
|
| 41 |
+ $this->update_post_thumbnail( $post_id, $post_metas->feature_img ); |
|
| 42 |
+ } |
|
| 43 |
+ // delete post metas |
|
| 44 |
+ $post_meta_keys = $component->get_post_meta_keys(); |
|
| 45 |
+ foreach ( $post_meta_keys as $key => $value ) {
|
|
| 46 |
+ delete_post_meta( $post_id, $value ); |
|
| 47 |
+ } |
|
| 48 |
+ // clear schedule on wp_cron |
|
| 49 |
+ wp_clear_scheduled_hook( RC_CRON_HOOK, array( $post_id ) ); |
|
| 50 |
+ // save post meta for rollback |
|
| 51 |
+ if ( $post_metas->accept_rollback == "1" ) {
|
|
| 52 |
+ $reserve_date = strtotime( get_gmt_from_date( $post_metas->rollback_date ) . "GMT" ); |
|
| 53 |
+ $this->set_rollback_setting( $post_id, $reserve_date, $rollback_data ); |
|
| 54 |
+ } |
|
| 55 |
+ } |
|
| 56 |
+ |
|
| 57 |
+ public function rc_content_allow_iframe( $content ) {
|
|
| 58 |
+ global $allowedposttags; |
|
| 59 |
+ // iframe and attribute in iframe |
|
| 60 |
+ $allowedposttags['iframe'] = array( |
|
| 61 |
+ 'class' => array(), 'src' => array(), |
|
| 62 |
+ 'width' => array(), 'height' => array(), |
|
| 63 |
+ 'frameborder' => array(), 'scrolling' => array(), |
|
| 64 |
+ 'marginheight' => array(), 'marginwidth' => array(), |
|
| 65 |
+ 'srcdoc' => array(), 'sandbox' => array(), |
|
| 66 |
+ 'seamless' => array(), 'name' => array(), |
|
| 67 |
+ ); |
|
| 68 |
+ return $content; |
|
| 69 |
+ } |
|
| 70 |
+ |
|
| 71 |
+ private function update_post_thumbnail( $post_id, $reserved_post_thumb_path ) {
|
|
| 72 |
+ include_once(ABSPATH . 'wp-admin/includes/image.php'); |
|
| 73 |
+ $upload_dir = wp_upload_dir(); |
|
| 74 |
+ $image_data = file_get_contents( $reserved_post_thumb_path ); |
|
| 75 |
+ $file_name = basename( $reserved_post_thumb_path ); |
|
| 76 |
+ |
|
| 77 |
+ if( wp_mkdir_p( $upload_dir['path'] ) ) {
|
|
| 78 |
+ $file = $upload_dir['path'] . '/' . $file_name; |
|
| 79 |
+ } else {
|
|
| 80 |
+ $file = $upload_dir['basedir'] . '/' . $file_name; |
|
| 81 |
+ } |
|
| 82 |
+ file_put_contents( $file, $image_data ); |
|
| 83 |
+ $wp_file_type = wp_check_filetype( $file_name, null ); |
|
| 84 |
+ $attachment = array( |
|
| 85 |
+ 'post_mime_type' => $wp_file_type['type'], |
|
| 86 |
+ 'post_title' => sanitize_file_name( $file_name ), |
|
| 87 |
+ 'post_content' => '', |
|
| 88 |
+ 'post_status' => 'inherit', |
|
| 89 |
+ ); |
|
| 90 |
+ delete_post_thumbnail( $post_id ); |
|
| 91 |
+ $attachment_id = wp_insert_attachment( $attachment, $file, $post_id ); |
|
| 92 |
+ $attach_data = wp_generate_attachment_metadata( $attachment_id, $file ); |
|
| 93 |
+ if( !empty( $attach_data ) && !is_wp_error( $attach_data ) ){
|
|
| 94 |
+ $res = wp_update_attachment_metadata( $attachment_id, $attach_data ); |
|
| 95 |
+ set_post_thumbnail( $post_id, $attachment_id ); |
|
| 96 |
+ |
|
| 97 |
+ return $res; |
|
| 98 |
+ } |
|
| 99 |
+ } |
|
| 100 |
+ |
|
| 101 |
+ private function get_rollback_post( $post_id, $accept_rollback_date = "0", $accept_rollback_feature_image = "0" ) {
|
|
| 102 |
+ $post_data = get_post( $post_id ); |
|
| 103 |
+ $component = new Class_Rucy_Component(); |
|
| 104 |
+ $post_meta_keys = $component->get_post_meta_keys(); |
|
| 105 |
+ |
|
| 106 |
+ $res = array( |
|
| 107 |
+ $post_meta_keys->content => $post_data->post_content, |
|
| 108 |
+ $post_meta_keys->accept => "1", |
|
| 109 |
+ ); |
|
| 110 |
+ if ( $accept_rollback_date == "1" ) {
|
|
| 111 |
+ $res[$post_meta_keys->accept_update] = "1"; |
|
| 112 |
+ $res[$post_meta_keys->date] = $post_data->post_date; |
|
| 113 |
+ } |
|
| 114 |
+ if ( $accept_rollback_feature_image == "1" ) {
|
|
| 115 |
+ $res[$post_meta_keys->accept_feature_img] = "1"; |
|
| 116 |
+ $feature_image = wp_get_attachment_image_src( get_post_thumbnail_id( $post_id ), 'full' ); |
|
| 117 |
+ $res[$post_meta_keys->feature_img] = $feature_image[0]; |
|
| 118 |
+ } |
|
| 119 |
+ |
|
| 120 |
+ return $res; |
|
| 121 |
+ } |
|
| 122 |
+ |
|
| 123 |
+ private function set_rollback_setting( $post_id, $reserve_date, array $rollback_data ) {
|
|
| 124 |
+ $component = new Class_Rucy_Component(); |
|
| 125 |
+ foreach ( $rollback_data as $key => $value ) {
|
|
| 126 |
+ $component->save_rc_post_meta_base( (int)$post_id, $key, $rollback_data ); |
|
| 127 |
+ } |
|
| 128 |
+ wp_schedule_single_event( $reserve_date, RC_CRON_HOOK, array( $post_id ) ); |
|
| 129 |
+ } |
|
| 130 |
+} |
| 0 | 131 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,332 @@ |
| 0 |
+<?php |
|
| 1 |
+/** |
|
| 2 |
+ * |
|
| 3 |
+ * |
|
| 4 |
+ * @author Nita |
|
| 5 |
+ */ |
|
| 6 |
+require_once RC_PLUGIN_DIR . '/inc/class-rucy-component.php'; |
|
| 7 |
+ |
|
| 8 |
+class Class_Rucy_Editer {
|
|
| 9 |
+ public $post_metas; |
|
| 10 |
+ public $post_meta_keys; |
|
| 11 |
+ public $support_post_types; |
|
| 12 |
+ public $current_post_content; |
|
| 13 |
+ |
|
| 14 |
+ public function add_rucy_metabox() {
|
|
| 15 |
+ $component = new Class_Rucy_Component(); |
|
| 16 |
+ $support_post_types = $component->get_support_post_type(); |
|
| 17 |
+ foreach ( $support_post_types as $post_type ) {
|
|
| 18 |
+ add_meta_box( 'rucy_metabox', 'Rucy - Reservation Update Content -', array( $this, 'add_rucy_editor_box' ), $post_type, 'normal', 'high' ); |
|
| 19 |
+ } |
|
| 20 |
+ } |
|
| 21 |
+ |
|
| 22 |
+ public function add_rucy_editor_box() {
|
|
| 23 |
+ global $post; |
|
| 24 |
+ $component = new Class_Rucy_Component(); |
|
| 25 |
+ $current_year = date_i18n( 'Y' ); |
|
| 26 |
+ $support_post_types = $component->get_support_post_type(); |
|
| 27 |
+ $this->support_post_types = $support_post_types; |
|
| 28 |
+ $this->post_meta_keys = $component->get_post_meta_keys(); |
|
| 29 |
+ $this->post_metas = $component->get_post_rc_meta( $post->ID ); |
|
| 30 |
+ $this->current_post_content = $post->post_content; |
|
| 31 |
+ $dismissed = explode( ',', get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) ); |
|
| 32 |
+ $reserve_date = ( $this->post_metas->date == "" ) ? date_i18n( 'Y-m-d H:i:s' ) : $this->post_metas->date; |
|
| 33 |
+ $arr_reserve_date = getdate(strtotime( $reserve_date ) ); |
|
| 34 |
+ $arr_date = array( |
|
| 35 |
+ 'rc_year' => date_i18n( 'Y', $arr_reserve_date[0] ), |
|
| 36 |
+ 'rc_month' => date_i18n( 'm', $arr_reserve_date[0] ), |
|
| 37 |
+ 'rc_day' => date_i18n( 'd', $arr_reserve_date[0] ), |
|
| 38 |
+ 'rc_hour' => date_i18n( 'H', $arr_reserve_date[0] ), |
|
| 39 |
+ 'rc_minutes' => date_i18n( 'i', $arr_reserve_date[0] ), |
|
| 40 |
+ ); |
|
| 41 |
+ $reserve_content = ( $this->post_metas->content == "" ) ? $this->current_post_content : $this->post_metas->content; |
|
| 42 |
+ // rollback settings |
|
| 43 |
+ $rollback_date = ( $this->post_metas->rollback_date == "" ) ? date_i18n( 'Y-m-d H:i:s' ) : $this->post_metas->rollback_date; |
|
| 44 |
+ $arr_rollback_date = getdate(strtotime( $rollback_date ) ); |
|
| 45 |
+ $arr_rb_date = array( |
|
| 46 |
+ 'rc_rb_year' => date_i18n( 'Y', $arr_rollback_date[0] ), |
|
| 47 |
+ 'rc_rb_month' => date_i18n( 'm', $arr_rollback_date[0] ), |
|
| 48 |
+ 'rc_rb_day' => date_i18n( 'd', $arr_rollback_date[0] ), |
|
| 49 |
+ 'rc_rb_hour' => date_i18n( 'H', $arr_rollback_date[0] ), |
|
| 50 |
+ 'rc_rb_minutes' => date_i18n( 'i', $arr_rollback_date[0] ), |
|
| 51 |
+ ); |
|
| 52 |
+?> |
|
| 53 |
+<div id="rc-post-wrap" class="curtime"> |
|
| 54 |
+ <input type="hidden" id="schroeder" name="schroeder" value="<?php echo wp_create_nonce(plugin_basename(__FILE__)); ?>" /> |
|
| 55 |
+ <label for="<?php echo $this->post_meta_keys->accept; ?>" class="rc_accept"><input type="checkbox" id="<?php echo $this->post_meta_keys->accept; ?>" name="<?php echo $this->post_meta_keys->accept; ?>" value="1" <?php echo ( $this->post_metas->accept == "1" ) ? "checked" : ""; ?> /> <?php _e('Accept reserve update content.',RC_TXT_DOMAIN) ?></label>
|
|
| 56 |
+ <div class="rc-datetime" id="timestamp"> |
|
| 57 |
+ <?php _e( 'UpdateTime', RC_TXT_DOMAIN ); ?> : <strong><?php echo date_i18n( 'Y/m/d @ H:i', strtotime( $reserve_date ) ); ?></strong> |
|
| 58 |
+ </div> |
|
| 59 |
+ <a href="#edit-reservdate" class="edit-timestamp rc-datetime-edit"><?php _e( 'Edit' ); ?></a> |
|
| 60 |
+ <div class="rc-datetime-wrap"> |
|
| 61 |
+ <select name="rc_year" id=""> |
|
| 62 |
+ <?php for( $y = $current_year; $y <= ( $current_year + 3); $y++ ): |
|
| 63 |
+ $selected_y = ( $y == date_i18n( 'Y', $arr_reserve_date[0] ) ) ? "selected" : ""; ?> |
|
| 64 |
+ <option value="<?php echo $y; ?>" <?php echo $selected_y; ?>><?php echo $y; ?></option> |
|
| 65 |
+ <?php endfor; ?> |
|
| 66 |
+ </select> / |
|
| 67 |
+ <select name="rc_month" id=""> |
|
| 68 |
+ <?php for( $i = 1; $i <= 12; $i++ ): |
|
| 69 |
+ $m = sprintf( "%02d", $i ); |
|
| 70 |
+ $selected_m = ( $m == date_i18n( 'm', $arr_reserve_date[0] ) ) ? "selected" : ""; |
|
| 71 |
+ ?> |
|
| 72 |
+ <option value="<?php echo $m; ?>" <?php echo $selected_m; ?>><?php echo $m; ?></option> |
|
| 73 |
+ <?php endfor; ?> |
|
| 74 |
+ </select> / |
|
| 75 |
+ <select name="rc_day" id=""> |
|
| 76 |
+ <?php for( $d = 1; $d<=31; $d++ ): |
|
| 77 |
+ $d = sprintf( "%02d", $d ); |
|
| 78 |
+ $selected_d = ( $d == date_i18n( 'd', $arr_reserve_date[0] ) ) ? "selected" : ""; |
|
| 79 |
+ ?> |
|
| 80 |
+ <option value="<?php echo $d; ?>" <?php echo $selected_d; ?>><?php echo $d; ?></option> |
|
| 81 |
+ <?php endfor; ?> |
|
| 82 |
+ </select>@ |
|
| 83 |
+ <select name="rc_hour" id=""> |
|
| 84 |
+ <?php for( $h = 0; $h <= 23; $h++ ): |
|
| 85 |
+ $h = sprintf("%02d",$h);
|
|
| 86 |
+ $selected_h = ( $h == date_i18n( 'H', $arr_reserve_date[0] ) ) ? "selected" : ""; |
|
| 87 |
+ ?> |
|
| 88 |
+ <option value="<?php echo $h; ?>" <?php echo $selected_h; ?>><?php echo $h; ?></option> |
|
| 89 |
+ <?php endfor; ?> |
|
| 90 |
+ </select>: |
|
| 91 |
+ <select name="rc_minutes" id=""> |
|
| 92 |
+ <?php for( $min = 0; $min <= 59; $min++ ): |
|
| 93 |
+ $min = sprintf( "%02d", $min ); |
|
| 94 |
+ $selected_min = ( $min == date_i18n( 'i', $arr_reserve_date[0] ) ) ? "selected" : ""; |
|
| 95 |
+ ?> |
|
| 96 |
+ <option value="<?php echo $min; ?>" <?php echo $selected_min; ?>><?php echo $min; ?></option> |
|
| 97 |
+ <?php endfor; ?> |
|
| 98 |
+ </select> |
|
| 99 |
+ <a href="#edit-reservdate" class="rc-datetime-update button"><?php _e('OK',RC_TXT_DOMAIN) ?></a>
|
|
| 100 |
+ <a href="#edit-reservdate" class="rc-datetime-cancel"><?php _e('Cancel',RC_TXT_DOMAIN) ?></a>
|
|
| 101 |
+ </div> |
|
| 102 |
+ <?php foreach ( $arr_date as $k => $v ): ?> |
|
| 103 |
+ <input type="hidden" name="<?php echo $k; ?>_cr" id="<?php echo $k; ?>_cr" value="<?php echo $v; ?>" /> |
|
| 104 |
+ <?php endforeach; ?> |
|
| 105 |
+ <div id="rc-accept-update-update"> |
|
| 106 |
+ <label for="rc-accept-update-postdate"> |
|
| 107 |
+ <input type="checkbox" name="<?php echo $this->post_meta_keys->accept_update; ?>" value="1" id="rc-accept-update-postdate" class="rc-accept-update-postdate" <?php echo ( $this->post_metas->accept_update == "1" ) ? "checked" : ""; ?> /> <?php _e('Accept reserve update post date.', RC_TXT_DOMAIN); ?>
|
|
| 108 |
+ </label> |
|
| 109 |
+ </div> |
|
| 110 |
+<?php if( array_search( 'rc_update_postdate', $dismissed ) === false ): |
|
| 111 |
+ $pointer_content = '<h3>' . __( 'Attention - reservation update UpdateTime', RC_TXT_DOMAIN ) . '</h3>'; |
|
| 112 |
+ $pointer_content .= '<p>' . __( "If update UpdateTime, this post\'s permalink is changed by permalink settings.", RC_TXT_DOMAIN ) . '</p>'; |
|
| 113 |
+ ?> |
|
| 114 |
+ <script type="text/javascript"> |
|
| 115 |
+ jQuery(document).ready(function(){
|
|
| 116 |
+ // show notice pointer update postdate. |
|
| 117 |
+ jQuery('#rc-accept-update-update').pointer({
|
|
| 118 |
+ content : '<?php echo $pointer_content; ?>', |
|
| 119 |
+ buttons : function(e, t){
|
|
| 120 |
+ return jQuery('<a class="close" href="#"><?php _e( 'Do not show future', RC_TXT_DOMAIN ) ?></a>').bind('click.pointer',function(e){
|
|
| 121 |
+ e.preventDefault(); |
|
| 122 |
+ t.element.pointer('close');
|
|
| 123 |
+ }); |
|
| 124 |
+ }, |
|
| 125 |
+ position : { edge : "top", align : "left"},
|
|
| 126 |
+ close : function(){
|
|
| 127 |
+ jQuery.post("<?php echo admin_url( 'admin-ajax.php' ); ?>", {
|
|
| 128 |
+ action : 'dismiss-wp-pointer', |
|
| 129 |
+ pointer : 'rc_update_postdate' |
|
| 130 |
+ }); |
|
| 131 |
+ } |
|
| 132 |
+ }).pointer('open');
|
|
| 133 |
+ }); |
|
| 134 |
+ </script> |
|
| 135 |
+<?php endif; ?> |
|
| 136 |
+</div> |
|
| 137 |
+<?php |
|
| 138 |
+ wp_editor( $reserve_content, $this->post_meta_keys->content ); |
|
| 139 |
+ /* |
|
| 140 |
+ * support feature image reservation. |
|
| 141 |
+ */ |
|
| 142 |
+ if( current_theme_supports('post-thumbnails') ):
|
|
| 143 |
+?> |
|
| 144 |
+<fieldset> |
|
| 145 |
+<h3><?php echo __( 'Featured Image for Reservation Update', RC_TXT_DOMAIN ); ?></h3> |
|
| 146 |
+<label class="rc_feature_accept"> |
|
| 147 |
+ <input type="checkbox" name="<?php echo $this->post_meta_keys->accept_feature_img; ?>" value="1" <?php echo ( $this->post_metas->accept_feature_img == "1") ? "checked" : ""; ?>> <?php _e( 'Accept reserve update feature image.', RC_TXT_DOMAIN ); ?> |
|
| 148 |
+</label> |
|
| 149 |
+<div class="rc_feature_image_uploader"> |
|
| 150 |
+ <p><button id="rc_feature_image_upload" class="button rc-feature-uploader-button <?php echo ( $this->post_metas->feature_img != '' ) ? ' has_image' : ''; ?>"><?php _e( 'Set featured image for Reservation', RC_TXT_DOMAIN ); ?></button></p> |
|
| 151 |
+<div class="rc-feature-image-uploader__ctrl"> |
|
| 152 |
+ <div class="rc-feature-image-preview"> |
|
| 153 |
+ <?php |
|
| 154 |
+ if ( ! empty( $this->post_metas->feature_img ) ) {
|
|
| 155 |
+ echo $this->post_metas->feature_img; |
|
| 156 |
+ } |
|
| 157 |
+ ?> |
|
| 158 |
+ </div> |
|
| 159 |
+</div> |
|
| 160 |
+<p><button class="button rc_remove_feature_image"><?php _e( 'Remove Featured image for Reservation', RC_TXT_DOMAIN ); ?></button></p> |
|
| 161 |
+<input type="hidden" id="rc_feature_image" name="<?php echo $this->post_meta_keys->feature_img; ?>" value="<?php echo $this->post_metas->feature_img; ?>" /> |
|
| 162 |
+</div> |
|
| 163 |
+</fieldset> |
|
| 164 |
+<fieldset id="rc-rollback-container" class="curtime"> |
|
| 165 |
+ <h3><?php _e( 'Setting Rollback post content.', RC_TXT_DOMAIN ); ?></h3> |
|
| 166 |
+ <label for="rc-accept-rollback-content"> |
|
| 167 |
+ <input type="checkbox" name="<?php echo $this->post_meta_keys->accept_rollback ?>" value="1" id="rc-accept-rollback-content" class="rc-accept-rollback-content" <?php echo ( $this->post_metas->accept_rollback == "1" ) ? "checked" : ""; ?> > <?php _e( 'Accept rollback content.', RC_TXT_DOMAIN ); ?> |
|
| 168 |
+ </label> |
|
| 169 |
+ <div class="rc-rollback-datetime" id="timestamp"> |
|
| 170 |
+ <?php _e( 'Rollback DateTime', RC_TXT_DOMAIN ); ?> : <strong><?php echo date_i18n("Y/m/d @ H:i", strtotime( $rollback_date ) ); ?></strong>
|
|
| 171 |
+ </div> |
|
| 172 |
+ <a href="#edit-rollback-datetime" class="edit-timestamp rc-rollback-datetime-edit"><?php _e('Edit'); ?></a>
|
|
| 173 |
+ <div class="rc-rollback-datetime-wrap"> |
|
| 174 |
+ <select name="rc_rb_year" id=""> |
|
| 175 |
+ <?php for( $y = $current_year; $y <= ( $current_year + 3); $y++ ): |
|
| 176 |
+ $selected_y = ( $y == date_i18n( 'Y', $arr_rollback_date[0] ) ) ? "selected" : ""; ?> |
|
| 177 |
+ <option value="<?php echo $y; ?>" <?php echo $selected_y; ?>><?php echo $y; ?></option> |
|
| 178 |
+ <?php endfor; ?> |
|
| 179 |
+ </select> / |
|
| 180 |
+ <select name="rc_rb_month" id=""> |
|
| 181 |
+ <?php for( $i = 1; $i <= 12; $i++ ): |
|
| 182 |
+ $m = sprintf( "%02d", $i ); |
|
| 183 |
+ $selected_m = ( $m == date_i18n( 'm', $arr_rollback_date[0] ) ) ? "selected" : ""; |
|
| 184 |
+ ?> |
|
| 185 |
+ <option value="<?php echo $m; ?>" <?php echo $selected_m; ?>><?php echo $m; ?></option> |
|
| 186 |
+ <?php endfor; ?> |
|
| 187 |
+ </select> / |
|
| 188 |
+ <select name="rc_rb_day" id=""> |
|
| 189 |
+ <?php for( $d = 1; $d<=31; $d++ ): |
|
| 190 |
+ $d = sprintf( "%02d", $d ); |
|
| 191 |
+ $selected_d = ( $d == date_i18n( 'd', $arr_rollback_date[0] ) ) ? "selected" : ""; |
|
| 192 |
+ ?> |
|
| 193 |
+ <option value="<?php echo $d; ?>" <?php echo $selected_d; ?>><?php echo $d; ?></option> |
|
| 194 |
+ <?php endfor; ?> |
|
| 195 |
+ </select>@ |
|
| 196 |
+ <select name="rc_rb_hour" id=""> |
|
| 197 |
+ <?php for( $h = 0; $h <= 23; $h++ ): |
|
| 198 |
+ $h = sprintf("%02d",$h);
|
|
| 199 |
+ $selected_h = ( $h == date_i18n( 'H', $arr_rollback_date[0] ) ) ? "selected" : ""; |
|
| 200 |
+ ?> |
|
| 201 |
+ <option value="<?php echo $h; ?>" <?php echo $selected_h; ?>><?php echo $h; ?></option> |
|
| 202 |
+ <?php endfor; ?> |
|
| 203 |
+ </select>: |
|
| 204 |
+ <select name="rc_rb_minutes" id=""> |
|
| 205 |
+ <?php for( $min = 0; $min <= 59; $min++ ): |
|
| 206 |
+ $min = sprintf( "%02d", $min ); |
|
| 207 |
+ $selected_min = ( $min == date_i18n( 'i', $arr_rollback_date[0] ) ) ? "selected" : ""; |
|
| 208 |
+ ?> |
|
| 209 |
+ <option value="<?php echo $min; ?>" <?php echo $selected_min; ?>><?php echo $min; ?></option> |
|
| 210 |
+ <?php endfor; ?> |
|
| 211 |
+ </select> |
|
| 212 |
+ <a href="#edit-rollback-datetime" class="rc-rollback-datetime-update button"><?php _e('OK',RC_TXT_DOMAIN) ?></a>
|
|
| 213 |
+ <a href="#edit-rollback-datetime" class="rc-rollback-datetime-cancel"><?php _e('Cancel',RC_TXT_DOMAIN) ?></a>
|
|
| 214 |
+ </div> |
|
| 215 |
+ <?php foreach ( $arr_rb_date as $k => $v ): ?> |
|
| 216 |
+ <input type="hidden" name="<?php echo $k; ?>_cr" id="<?php echo $k; ?>_cr" value="<?php echo $v; ?>"/> |
|
| 217 |
+ <?php endforeach; ?> |
|
| 218 |
+ <div id="rc-accept-rollback-updatetime-wrap"> |
|
| 219 |
+ <label for="rc-accept-rollback-updatetime"> |
|
| 220 |
+ <input id="rc-accept-rollback-updatetime" type="checkbox" value="1" name="<?php echo $this->post_meta_keys->accept_rollback_update; ?>" <?php echo ( $this->post_metas->accept_rollback_update == "1" ) ? "checked" : ""; ?>> <?php _e( 'Accept Rollback post date.', RC_TXT_DOMAIN ); ?> |
|
| 221 |
+ </label> |
|
| 222 |
+ </div> |
|
| 223 |
+ <?php if( current_theme_supports( 'post-thumbnails' ) ): ?> |
|
| 224 |
+ <div id="rc-accept-rollback-feature-image-wrap"> |
|
| 225 |
+ <label for="rc-accept-rollback-feature-image"> |
|
| 226 |
+ <input id="rc-accept-rollback-feature-image" type="checkbox" value="1" name="<?php echo $this->post_meta_keys->accept_rollback_feature_img; ?>" <?php echo ( $this->post_metas->accept_rollback_feature_img == "1" ) ? "checked" : ""; ?>> <?php _e( 'Accept Rollback feature image.', RC_TXT_DOMAIN ); ?> |
|
| 227 |
+ </label> |
|
| 228 |
+ </div> |
|
| 229 |
+ <?php endif; ?> |
|
| 230 |
+</fieldset> |
|
| 231 |
+<?php |
|
| 232 |
+ endif; |
|
| 233 |
+ } |
|
| 234 |
+ |
|
| 235 |
+// save post meta |
|
| 236 |
+ public function save_rc_post_meta( $post_id ) {
|
|
| 237 |
+ $component = new Class_Rucy_Component(); |
|
| 238 |
+ if( !isset( $_POST ) && !isset( $_POST['post_type'] ) ) {
|
|
| 239 |
+ return; |
|
| 240 |
+ } |
|
| 241 |
+ if(isset( $_POST['schroeder'] ) && !wp_verify_nonce( $_POST['schroeder'], plugin_basename( __FILE__ ) ) ) {
|
|
| 242 |
+ return; |
|
| 243 |
+ } |
|
| 244 |
+ if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
|
|
| 245 |
+ return; |
|
| 246 |
+ } |
|
| 247 |
+ $accept_post_types = $component->get_support_post_type(); |
|
| 248 |
+ if ( !in_array( $_POST['post_type'], $accept_post_types ) ) {
|
|
| 249 |
+ return; |
|
| 250 |
+ } |
|
| 251 |
+ $post_meta_keys = $component->get_post_meta_keys(); |
|
| 252 |
+ $date = mktime( $_POST['rc_hour'], $_POST['rc_minutes'], 00, $_POST['rc_month'], $_POST['rc_day'], $_POST['rc_year'] ); |
|
| 253 |
+ if( $date ) {
|
|
| 254 |
+ $_POST[$post_meta_keys->date] = date_i18n( 'Y-m-d H:i:s', $date ); |
|
| 255 |
+ } else {
|
|
| 256 |
+ $_POST[$post_meta_keys->date] = ""; |
|
| 257 |
+ } |
|
| 258 |
+ if( !isset( $_POST[$post_meta_keys->accept] ) || $_POST[$post_meta_keys->accept] != "1" ){
|
|
| 259 |
+ $_POST[$post_meta_keys->accept] = "0"; |
|
| 260 |
+ } |
|
| 261 |
+ // rollback setting |
|
| 262 |
+ $rdate = mktime( $_POST['rc_rb_hour'], $_POST['rc_rb_minutes'], 00, $_POST['rc_rb_month'], $_POST['rc_rb_day'], $_POST['rc_rb_year'] ); |
|
| 263 |
+ if ( $rdate ) {
|
|
| 264 |
+ $_POST[$post_meta_keys->rollback_date] = date_i18n( 'Y-m-d H:i:s', $rdate ); |
|
| 265 |
+ } else {
|
|
| 266 |
+ $_POST[$post_meta_keys->rollback_date] = ""; |
|
| 267 |
+ } |
|
| 268 |
+ if( !isset( $_POST[$post_meta_keys->accept_rollback] ) || $_POST[$post_meta_keys->accept_rollback] != "1" ){
|
|
| 269 |
+ $_POST[$post_meta_keys->accept_rollback] = "0"; |
|
| 270 |
+ } |
|
| 271 |
+ if( !isset( $_POST[$post_meta_keys->accept_rollback_update] ) || $_POST[$post_meta_keys->accept_rollback_update] != "1" ){
|
|
| 272 |
+ $_POST[$post_meta_keys->accept_rollback_update] = "0"; |
|
| 273 |
+ } |
|
| 274 |
+ if( !isset( $_POST[$post_meta_keys->accept_rollback_feature_img] ) || $_POST[$post_meta_keys->accept_rollback_feature_img] != "1" ){
|
|
| 275 |
+ $_POST[$post_meta_keys->accept_rollback_feature_img] = "0"; |
|
| 276 |
+ } |
|
| 277 |
+ // save post meta |
|
| 278 |
+ foreach ( $post_meta_keys as $key => $value ) {
|
|
| 279 |
+ $component->save_rc_post_meta_base( $post_id, $value, $_POST ); |
|
| 280 |
+ } |
|
| 281 |
+ // regist reserve update content |
|
| 282 |
+ if ( $_POST[$post_meta_keys->accept] == "1" ) {
|
|
| 283 |
+ $reserve_date = strtotime( get_gmt_from_date( $_POST[$post_meta_keys->date] ) . " GMT" ); |
|
| 284 |
+ if ( in_array( $_POST['post_type'], $accept_post_types ) ) {
|
|
| 285 |
+ wp_schedule_single_event( $reserve_date, RC_CRON_HOOK, array( $post_id ) ); |
|
| 286 |
+ } |
|
| 287 |
+ } else if ( $_POST[$post_meta_keys->accept] == "0" || !isset ( $_POST[$post_meta_keys->accept] ) ) {
|
|
| 288 |
+ // delete schedule |
|
| 289 |
+ wp_clear_scheduled_hook(RC_CRON_HOOK, array($post_id)); |
|
| 290 |
+ } |
|
| 291 |
+ } |
|
| 292 |
+ |
|
| 293 |
+ // add update message |
|
| 294 |
+ public function add_reservation_message( $messages ) {
|
|
| 295 |
+ global $post, $post_ID; |
|
| 296 |
+ $component = new Class_Rucy_Component(); |
|
| 297 |
+ $accept_post_types = $component->get_support_post_type(); |
|
| 298 |
+ $post_type = get_post_type( $post ); |
|
| 299 |
+ |
|
| 300 |
+ if ( !in_array( $post_type, $accept_post_types ) ) {
|
|
| 301 |
+ return $messages; |
|
| 302 |
+ } |
|
| 303 |
+ |
|
| 304 |
+ $post_metas = $component->get_post_rc_meta( $post_ID ); |
|
| 305 |
+ if ( $post_metas->accept != "1" ) {
|
|
| 306 |
+ return $messages; |
|
| 307 |
+ } |
|
| 308 |
+ |
|
| 309 |
+ $add_message_date = date_i18n( 'Y/m/d @ H:i', strtotime( $post_metas->date ) ); |
|
| 310 |
+ $base_str = __( 'registered reservation update content _RC_DATETIME_', RC_TXT_DOMAIN ); |
|
| 311 |
+ $add_message = '<br>' . strtr( $base_str, array( '_RC_DATETIME_' => $add_message_date ) ); |
|
| 312 |
+ |
|
| 313 |
+ if( $post_metas->accept_rollback == "1" ) {
|
|
| 314 |
+ $rollback_date = date_i18n( 'Y/m/d @ H:i', strtotime( $post_metas->rollback_date ) ); |
|
| 315 |
+ $rollback_base_str = __( 'registered rollback content _RC_ROLLBACK_DATETIME_ ', RC_TXT_DOMAIN ); |
|
| 316 |
+ $add_message .= '<br>' . strtr( $rollback_base_str , array( '_RC_ROLLBACK_DATETIME_' => $rollback_date ) ); |
|
| 317 |
+ } |
|
| 318 |
+ // published |
|
| 319 |
+ $messages[$post_type][1] .= $add_message; |
|
| 320 |
+ $messages[$post_type][4] .= $add_message; |
|
| 321 |
+ $messages[$post_type][6] .= $add_message; |
|
| 322 |
+ // saved |
|
| 323 |
+ $messages[$post_type][7] .= $add_message; |
|
| 324 |
+ // submited |
|
| 325 |
+ $messages[$post_type][8] .= $add_message; |
|
| 326 |
+ // scheduled |
|
| 327 |
+ $messages[$post_type][9] .= $add_message; |
|
| 328 |
+ |
|
| 329 |
+ return $messages; |
|
| 330 |
+ } |
|
| 331 |
+} |
| 0 | 332 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,93 @@ |
| 0 |
+<?php |
|
| 1 |
+/** |
|
| 2 |
+ * |
|
| 3 |
+ * |
|
| 4 |
+ * @author Nita |
|
| 5 |
+ */ |
|
| 6 |
+require_once RC_PLUGIN_DIR . '/inc/class-rucy-component.php'; |
|
| 7 |
+ |
|
| 8 |
+class Class_Rucy_Setting {
|
|
| 9 |
+ // |
|
| 10 |
+ public function set_admin_menu() {
|
|
| 11 |
+ add_options_page( 'Rucy', 'Rucy', 'manage_options', 'rucy', array( $this, 'add_setting_menu') ); |
|
| 12 |
+ } |
|
| 13 |
+ |
|
| 14 |
+ public function add_setting_menu() {
|
|
| 15 |
+ $component = new Class_Rucy_Component(); |
|
| 16 |
+ $post_types = $component->get_post_types(); |
|
| 17 |
+ $support_post_type = $component->get_support_post_type(); |
|
| 18 |
+ $is_different = false; |
|
| 19 |
+ if( ( isset( $_POST['page_options'] ) && $_POST['page_options'] === RC_SETTING_OPTION_KEY ) |
|
| 20 |
+ && ( isset( $_POST['_wpnonce'] ) && wp_verify_nonce( $_POST['_wpnonce'], 'update-options' ) ) |
|
| 21 |
+ ) {
|
|
| 22 |
+ // update post |
|
| 23 |
+ $post_support_posts = ( isset($_POST['rc_support_post_types']) ) ? $_POST['rc_support_post_types'] : array(); |
|
| 24 |
+ if( count( array_diff( $support_post_type, $post_support_posts ) ) ) {
|
|
| 25 |
+ // different data before post |
|
| 26 |
+ $is_different = true; |
|
| 27 |
+ } |
|
| 28 |
+ $is_update = $component->update_support_post_type( $post_support_posts ); |
|
| 29 |
+ if ( $is_different && $is_update ) {
|
|
| 30 |
+ set_transient( RC_SETTING_UPDATE, array( __( 'Success to setting update.', RC_TXT_DOMAIN ) ), 10 ); |
|
| 31 |
+ } else if ( $is_different === false && $is_update === false ) {
|
|
| 32 |
+ set_transient( RC_SETTING_UPDATE, array( __( 'Success to setting update.', RC_TXT_DOMAIN ) ), 10 ); |
|
| 33 |
+ } else if ( $is_different && $is_update === false ) {
|
|
| 34 |
+ // 更新失敗 |
|
| 35 |
+ $e = new WP_Error(); |
|
| 36 |
+ $e->add( 'error', __( 'Failed to setting update.', RC_TXT_DOMAIN ) ); |
|
| 37 |
+ set_transient( RC_SETTING_ERROR, $e->get_error_messages(), 10 ); |
|
| 38 |
+ } |
|
| 39 |
+ $support_post_type = $component->get_support_post_type(); |
|
| 40 |
+ wp_safe_redirect( menu_page_url( 'rucy', false ) ); |
|
| 41 |
+ } |
|
| 42 |
+?> |
|
| 43 |
+<div class="wrap"> |
|
| 44 |
+ <h2><?php _e( 'Rucy Settings', RC_TXT_DOMAIN ); ?></h2> |
|
| 45 |
+ <p><?php _e( 'Configure content types reservation update.', RC_TXT_DOMAIN ); ?></p> |
|
| 46 |
+ <div class="rc-donation"> |
|
| 47 |
+ <p><?php _e( 'Your contribution will continue to better this plugin.', RC_TXT_DOMAIN ); ?> <a href="http://www.amazon.co.jp/registry/wishlist/27FDI6LJU0X1O" class="button"><?php _e( 'Donate', RC_TXT_DOMAIN ); ?></a></p> |
|
| 48 |
+ </div> |
|
| 49 |
+ <form method="post" action="#"> |
|
| 50 |
+ <?php wp_nonce_field('update-options'); ?>
|
|
| 51 |
+ <table class="form-table"> |
|
| 52 |
+ <tr class=""> |
|
| 53 |
+ <th><?php _e( 'post type', RC_TXT_DOMAIN ); ?></th> |
|
| 54 |
+ <td> |
|
| 55 |
+ <ul> |
|
| 56 |
+ <?php foreach ( $post_types as $key => $post_type ) {
|
|
| 57 |
+ $checked = ( in_array( $key, $support_post_type ) ) ? 'checked' : ''; |
|
| 58 |
+ ?> |
|
| 59 |
+ <li><label for="rc_<?php echo $key; ?>"><input type="checkbox" id="rc_<?php echo $key; ?>" name="rc_support_post_types[]" value="<?php echo $key; ?>" <?php echo $checked; ?> /><?php echo $post_type->labels->name; ?></label></li> |
|
| 60 |
+ <?php } ?> |
|
| 61 |
+ </ul> |
|
| 62 |
+ </td> |
|
| 63 |
+ </tr> |
|
| 64 |
+ </table> |
|
| 65 |
+ <input type="hidden" name="action" value="update" /> |
|
| 66 |
+ <input type="hidden" name="page_options" value="<?php echo RC_SETTING_OPTION_KEY ?>"/> |
|
| 67 |
+ <p class="submit"> |
|
| 68 |
+ <input type="submit" class="button-primary" value="<?php _e( 'Save Changes' ) ?>" /> |
|
| 69 |
+ </p> |
|
| 70 |
+ </form> |
|
| 71 |
+</div> |
|
| 72 |
+<?php |
|
| 73 |
+ } |
|
| 74 |
+ |
|
| 75 |
+ public function set_admin_notices() {
|
|
| 76 |
+ $message_class = ""; |
|
| 77 |
+ if ( $messages = get_transient( RC_SETTING_UPDATE ) ) {
|
|
| 78 |
+ $message_class = 'updated'; |
|
| 79 |
+ } else if ( $messages = get_transient( RC_SETTING_ERROR ) ) {
|
|
| 80 |
+ $message_class = 'error'; |
|
| 81 |
+ } |
|
| 82 |
+?> |
|
| 83 |
+<div class="<?php echo $message_class; ?>"> |
|
| 84 |
+ <ul> |
|
| 85 |
+ <?php foreach ( $messages as $message ): ?> |
|
| 86 |
+ <li><?php echo esc_html( $message ); ?></li> |
|
| 87 |
+ <?php endforeach; ?> |
|
| 88 |
+ </ul> |
|
| 89 |
+</div> |
|
| 90 |
+<?php |
|
| 91 |
+ } |
|
| 92 |
+} |
| ... | ... |
@@ -28,7 +28,7 @@ jQuery(document).ready(function(){
|
| 28 | 28 |
jQuery('.rc-datetime-wrap').addClass('form-invalid');
|
| 29 | 29 |
return false; |
| 30 | 30 |
} |
| 31 |
- jQuery('.rc-datetime > b').html(year + "/" + month + "/" + day + " @ " + hour + ":" + min);
|
|
| 31 |
+ jQuery('.rc-datetime > strong').html(year + "/" + month + "/" + day + " @ " + hour + ":" + min);
|
|
| 32 | 32 |
jQuery('#rc_year_cr').val(year);
|
| 33 | 33 |
jQuery('#rc_month_cr').val(month);
|
| 34 | 34 |
jQuery('#rc_day_cr').val(day);
|
| ... | ... |
@@ -45,7 +45,7 @@ jQuery(document).ready(function(){
|
| 45 | 45 |
var day = jQuery('#rc_day_cr').val();
|
| 46 | 46 |
var hour = jQuery('#rc_hour_cr').val();
|
| 47 | 47 |
var min = jQuery('#rc_minutes_cr').val();
|
| 48 |
- jQuery('.rc-datetime > b').html(year + "/" + month + "/" + day + " @ " + hour + ":" + min);
|
|
| 48 |
+ jQuery('.rc-datetime > strong').html(year + "/" + month + "/" + day + " @ " + hour + ":" + min);
|
|
| 49 | 49 |
jQuery('select[name="rc_year"]').val(year);
|
| 50 | 50 |
jQuery('select[name="rc_month"]').val(month);
|
| 51 | 51 |
jQuery('select[name="rc_day"]').val(day);
|
| ... | ... |
@@ -109,6 +109,60 @@ jQuery(document).ready(function(){
|
| 109 | 109 |
} |
| 110 | 110 |
|
| 111 | 111 |
}); |
| 112 |
- |
|
| 112 |
+ // rollback settings |
|
| 113 |
+ jQuery('.rc-rollback-datetime-edit').on('click',function(){
|
|
| 114 |
+ jQuery(this).hide(); |
|
| 115 |
+ jQuery('.rc-rollback-datetime-wrap').slideDown('normal');
|
|
| 116 |
+ return false; |
|
| 117 |
+ }); |
|
| 118 |
+ // edit rollback date |
|
| 119 |
+ jQuery('.rc-rollback-datetime-update').on('click', function(){
|
|
| 120 |
+ var rb_year = jQuery('select[name="rc_rb_year"]').val();
|
|
| 121 |
+ var rb_month = jQuery('select[name="rc_rb_month"]').val();
|
|
| 122 |
+ var rb_day = jQuery('select[name="rc_rb_day"]').val();
|
|
| 123 |
+ var rb_hour = jQuery('select[name="rc_rb_hour"]').val();
|
|
| 124 |
+ var rb_min = jQuery('select[name="rc_rb_minutes"]').val();
|
|
| 125 |
+ var rbDate = new Date(rb_year, rb_month - 1, rb_day, rb_hour, rb_min); |
|
| 126 |
+ var rb_now = new Date(); |
|
| 127 |
+ var rb_flg = false; |
|
| 128 |
+ if(rbDate.getFullYear() != rb_year || (1 + rbDate.getMonth()) != rb_month || rbDate.getDate() != rb_day || rbDate.getMinutes() != rb_min){
|
|
| 129 |
+ rb_flg = false; |
|
| 130 |
+ } else if (rbDate.getTime() < rb_now.getTime()) {
|
|
| 131 |
+ rb_flg = false; |
|
| 132 |
+ } else {
|
|
| 133 |
+ rb_flg = true; |
|
| 134 |
+ } |
|
| 135 |
+ if(rb_flg === true){
|
|
| 136 |
+ jQuery('.rc-rollback-datetime-wrap').removeClass('form-invalid');
|
|
| 137 |
+ } else {
|
|
| 138 |
+ jQuery('.rc-rollback-datetime-wrap').addClass('form-invalid');
|
|
| 139 |
+ return false; |
|
| 140 |
+ } |
|
| 141 |
+ jQuery('.rc-rollback-datetime > strong').html(rb_year + "/" + rb_month + "/" + rb_day + " @ " + rb_hour + ":" + rb_min);
|
|
| 142 |
+ jQuery('#rc_rb_year_cr').val(rb_year);
|
|
| 143 |
+ jQuery('#rc_rb_month_cr').val(rb_month);
|
|
| 144 |
+ jQuery('#rc_rb_day_cr').val(rb_day);
|
|
| 145 |
+ jQuery('#rc_rb_hour_cr').val(rb_hour);
|
|
| 146 |
+ jQuery('#rc_rb_minutes_cr').val(rb_min);
|
|
| 147 |
+ jQuery('.rc-rollback-datetime-wrap').slideUp('normal');
|
|
| 148 |
+ jQuery('.rc-rollback-datetime-edit').show();
|
|
| 149 |
+ }); |
|
| 150 |
+ // cancel rollback date |
|
| 151 |
+ jQuery('.rc-rollback-datetime-cancel').on('click',function(){
|
|
| 152 |
+ var rb_year = jQuery('#rc_rb_year_cr').val();
|
|
| 153 |
+ var rb_month = jQuery('#rc_rb_month_cr').val();
|
|
| 154 |
+ var rb_day = jQuery('#rc_rb_day_cr').val();
|
|
| 155 |
+ var rb_hour = jQuery('#rc_rb_hour_cr').val();
|
|
| 156 |
+ var rb_min = jQuery('#rc_rb_minutes_cr').val();
|
|
| 157 |
+ jQuery('.rc-rollback-datetime > strong').html(rb_year + "/" + rb_month + "/" + rb_day + " @ " + rb_hour + ":" + rb_min);
|
|
| 158 |
+ jQuery('select[name="rc_rb_year"]').val(rb_year);
|
|
| 159 |
+ jQuery('select[name="rc_rb_month"]').val(rb_month);
|
|
| 160 |
+ jQuery('select[name="rc_rb_day"]').val(rb_day);
|
|
| 161 |
+ jQuery('select[name="rc_rb_hour"]').val(rb_hour);
|
|
| 162 |
+ jQuery('select[name="rc_rb_minutes"]').val(rb_min);
|
|
| 163 |
+ jQuery('.rc-rollback-datetime-wrap').slideUp('normal');
|
|
| 164 |
+ jQuery('.rc-rollback-datetime-edit').show();
|
|
| 165 |
+ return false; |
|
| 166 |
+ }); |
|
| 113 | 167 |
}); |
| 114 | 168 |
|
| ... | ... |
@@ -1,11 +1,11 @@ |
| 1 | 1 |
msgid "" |
| 2 | 2 |
msgstr "" |
| 3 | 3 |
"Project-Id-Version: rucy\n" |
| 4 |
-"POT-Creation-Date: 2015-04-08 06:31+0900\n" |
|
| 5 |
-"PO-Revision-Date: 2015-04-08 06:31+0900\n" |
|
| 4 |
+"POT-Creation-Date: 2015-10-19 03:33+0900\n" |
|
| 5 |
+"PO-Revision-Date: 2015-10-19 03:37+0900\n" |
|
| 6 | 6 |
"Last-Translator: nita <nita@gips.jp>\n" |
| 7 | 7 |
"Language-Team: \n" |
| 8 |
-"Language: ja\n" |
|
| 8 |
+"Language: ja_JP\n" |
|
| 9 | 9 |
"MIME-Version: 1.0\n" |
| 10 | 10 |
"Content-Type: text/plain; charset=UTF-8\n" |
| 11 | 11 |
"Content-Transfer-Encoding: 8bit\n" |
| ... | ... |
@@ -13,37 +13,37 @@ msgstr "" |
| 13 | 13 |
"X-Poedit-Basepath: .\n" |
| 14 | 14 |
"Plural-Forms: nplurals=1; plural=0;\n" |
| 15 | 15 |
"X-Poedit-KeywordsList: __;_e\n" |
| 16 |
-"X-Poedit-SearchPath-0: ..\n" |
|
| 16 |
+"X-Poedit-SearchPath-0: ../inc\n" |
|
| 17 | 17 |
|
| 18 |
-#: ../rucy.php:112 |
|
| 18 |
+#: ../inc/class-rucy-editor.php:56 |
|
| 19 | 19 |
msgid "Accept reserve update content." |
| 20 | 20 |
msgstr "予約更新を行う" |
| 21 | 21 |
|
| 22 |
-#: ../rucy.php:115 |
|
| 22 |
+#: ../inc/class-rucy-editor.php:58 |
|
| 23 | 23 |
msgid "UpdateTime" |
| 24 | 24 |
msgstr "更新日時" |
| 25 | 25 |
|
| 26 |
-#: ../rucy.php:117 |
|
| 26 |
+#: ../inc/class-rucy-editor.php:60 ../inc/class-rucy-editor.php:173 |
|
| 27 | 27 |
msgid "Edit" |
| 28 | 28 |
msgstr "編集" |
| 29 | 29 |
|
| 30 |
-#: ../rucy.php:167 |
|
| 30 |
+#: ../inc/class-rucy-editor.php:100 ../inc/class-rucy-editor.php:213 |
|
| 31 | 31 |
msgid "OK" |
| 32 | 32 |
msgstr "OK" |
| 33 | 33 |
|
| 34 |
-#: ../rucy.php:168 |
|
| 34 |
+#: ../inc/class-rucy-editor.php:101 ../inc/class-rucy-editor.php:214 |
|
| 35 | 35 |
msgid "Cancel" |
| 36 | 36 |
msgstr "キャンセル" |
| 37 | 37 |
|
| 38 |
-#: ../rucy.php:185 |
|
| 38 |
+#: ../inc/class-rucy-editor.php:108 |
|
| 39 | 39 |
msgid "Accept reserve update post date." |
| 40 | 40 |
msgstr "更新日時を更新する" |
| 41 | 41 |
|
| 42 |
-#: ../rucy.php:191 |
|
| 42 |
+#: ../inc/class-rucy-editor.php:112 |
|
| 43 | 43 |
msgid "Attention - reservation update UpdateTime" |
| 44 | 44 |
msgstr "注意 - 更新日時の更新について" |
| 45 | 45 |
|
| 46 |
-#: ../rucy.php:192 |
|
| 46 |
+#: ../inc/class-rucy-editor.php:113 |
|
| 47 | 47 |
msgid "" |
| 48 | 48 |
"If update UpdateTime, this post\\'s permalink is changed by permalink " |
| 49 | 49 |
"settings." |
| ... | ... |
@@ -51,95 +51,123 @@ msgstr "" |
| 51 | 51 |
"更新日時を更新すると、パーマリンク設定内容によってはパーマリンクが変更される" |
| 52 | 52 |
"場合があります。" |
| 53 | 53 |
|
| 54 |
-#: ../rucy.php:200 |
|
| 54 |
+#: ../inc/class-rucy-editor.php:121 |
|
| 55 | 55 |
msgid "Do not show future" |
| 56 | 56 |
msgstr "今後表示しない" |
| 57 | 57 |
|
| 58 |
-#: ../rucy.php:227 |
|
| 58 |
+#: ../inc/class-rucy-editor.php:146 |
|
| 59 | 59 |
msgid "Featured Image for Reservation Update" |
| 60 | 60 |
msgstr "予約更新用アイキャッチ画像" |
| 61 | 61 |
|
| 62 |
-#: ../rucy.php:229 |
|
| 62 |
+#: ../inc/class-rucy-editor.php:148 |
|
| 63 | 63 |
msgid "Accept reserve update feature image." |
| 64 | 64 |
msgstr "アイキャッチ画像の予約更新を行う" |
| 65 | 65 |
|
| 66 |
-#: ../rucy.php:231 |
|
| 67 |
-msgid "Set featured image Reservation" |
|
| 68 |
-msgstr "予約更新用アイキャッチ画像を設定" |
|
| 69 |
- |
|
| 70 |
-#: ../rucy.php:231 |
|
| 66 |
+#: ../inc/class-rucy-editor.php:151 |
|
| 71 | 67 |
msgid "Set featured image for Reservation" |
| 72 | 68 |
msgstr "予約更新用アイキャッチ画像を登録する" |
| 73 | 69 |
|
| 74 |
-#: ../rucy.php:232 |
|
| 70 |
+#: ../inc/class-rucy-editor.php:161 |
|
| 75 | 71 |
msgid "Remove Featured image for Reservation" |
| 76 | 72 |
msgstr "予約更新用アイキャッチ画像を削除する" |
| 77 | 73 |
|
| 78 |
-#: ../rucy.php:401 |
|
| 79 |
-msgid "registered reservation update content _RC_DATETIME_" |
|
| 80 |
-msgstr "_RC_DATETIME_ に更新するよう予約しました。" |
|
| 74 |
+#: ../inc/class-rucy-editor.php:166 |
|
| 75 |
+msgid "Setting Rollback post content." |
|
| 76 |
+msgstr "ロールバック設定" |
|
| 81 | 77 |
|
| 82 |
-#: ../rucy.php:421 |
|
| 83 |
-msgid "Reservation Update DateTime" |
|
| 84 |
-msgstr "予約更新日時" |
|
| 78 |
+#: ../inc/class-rucy-editor.php:168 |
|
| 79 |
+msgid "Accept rollback content." |
|
| 80 |
+msgstr "記事のロールバックを行う" |
|
| 85 | 81 |
|
| 86 |
-#: ../rucy.php:436 |
|
| 87 |
-msgid "None" |
|
| 88 |
-msgstr "なし" |
|
| 82 |
+#: ../inc/class-rucy-editor.php:171 |
|
| 83 |
+msgid "Rollback DateTime" |
|
| 84 |
+msgstr "ロールバック日時" |
|
| 89 | 85 |
|
| 90 |
-#: ../rucy.php:484 |
|
| 91 |
-msgid "post or page is not allow." |
|
| 92 |
-msgstr "カスタム投稿タイプにpostもしくはpageは入力できません。" |
|
| 86 |
+#: ../inc/class-rucy-editor.php:221 |
|
| 87 |
+msgid "Accept Rollback post date." |
|
| 88 |
+msgstr "更新日時のロールバックを行う" |
|
| 93 | 89 |
|
| 94 |
-#: ../rucy.php:492 |
|
| 95 |
-msgid "Do not input \"post\" or \"page\". " |
|
| 96 |
-msgstr "postもしくはpageは入力できません。" |
|
| 90 |
+#: ../inc/class-rucy-editor.php:227 |
|
| 91 |
+msgid "Accept Rollback feature image." |
|
| 92 |
+msgstr "アイキャッチ画像のロールバックを行う" |
|
| 97 | 93 |
|
| 98 |
-#: ../rucy.php:494 |
|
| 99 |
-msgid "Please input alphabet or numeric. And do not input sequencial commas." |
|
| 100 |
-msgstr "英数のみ入力してください。また、連続でカンマの入力はできません。" |
|
| 94 |
+#: ../inc/class-rucy-editor.php:311 |
|
| 95 |
+msgid "registered reservation update content _RC_DATETIME_" |
|
| 96 |
+msgstr "_RC_DATETIME_ に更新するよう予約しました。" |
|
| 101 | 97 |
|
| 102 |
-#: ../rucy.php:496 |
|
| 103 |
-#, fuzzy |
|
| 104 |
-msgid "Do not input \"attachment\" or \"revision\". " |
|
| 105 |
-msgstr "postもしくはpageは入力できません。" |
|
| 98 |
+#: ../inc/class-rucy-editor.php:316 |
|
| 99 |
+msgid "registered rollback content _RC_ROLLBACK_DATETIME_ " |
|
| 100 |
+msgstr "_RC_ROLLBACK_DATETIME_ にロールバックします。" |
|
| 106 | 101 |
|
| 107 |
-#: ../rucy.php:523 |
|
| 102 |
+#: ../inc/class-rucy-setting.php:31 ../inc/class-rucy-setting.php:33 |
|
| 103 |
+msgid "Success to setting update." |
|
| 104 |
+msgstr "設定の更新が完了しました。" |
|
| 105 |
+ |
|
| 106 |
+#: ../inc/class-rucy-setting.php:37 |
|
| 107 |
+msgid "Failed to setting update." |
|
| 108 |
+msgstr "設定の更新に失敗。" |
|
| 109 |
+ |
|
| 110 |
+#: ../inc/class-rucy-setting.php:45 |
|
| 108 | 111 |
msgid "Rucy Settings" |
| 109 | 112 |
msgstr "予約更新設定" |
| 110 | 113 |
|
| 111 |
-#: ../rucy.php:524 |
|
| 114 |
+#: ../inc/class-rucy-setting.php:46 |
|
| 112 | 115 |
msgid "Configure content types reservation update." |
| 113 | 116 |
msgstr "予約更新する投稿タイプを設定してください。" |
| 114 | 117 |
|
| 115 |
-#: ../rucy.php:529 |
|
| 118 |
+#: ../inc/class-rucy-setting.php:48 |
|
| 119 |
+msgid "Your contribution will continue to better this plugin." |
|
| 120 |
+msgstr "あなたの貢献があれば、このプラグインをもっと良くすることができます。" |
|
| 121 |
+ |
|
| 122 |
+#: ../inc/class-rucy-setting.php:48 |
|
| 123 |
+msgid "Donate" |
|
| 124 |
+msgstr "寄付する" |
|
| 125 |
+ |
|
| 126 |
+#: ../inc/class-rucy-setting.php:54 |
|
| 116 | 127 |
msgid "post type" |
| 117 | 128 |
msgstr "投稿タイプ" |
| 118 | 129 |
|
| 119 |
-#: ../rucy.php:529 |
|
| 120 |
-msgid "Require" |
|
| 121 |
-msgstr "必須" |
|
| 130 |
+#: ../inc/class-rucy-setting.php:69 |
|
| 131 |
+msgid "Save Changes" |
|
| 132 |
+msgstr "変更を保存" |
|
| 133 |
+ |
|
| 134 |
+#~ msgid "Set featured image Reservation" |
|
| 135 |
+#~ msgstr "予約更新用アイキャッチ画像を設定" |
|
| 122 | 136 |
|
| 123 |
-#: ../rucy.php:532 |
|
| 124 |
-msgid "post" |
|
| 125 |
-msgstr "投稿" |
|
| 137 |
+#~ msgid "Reservation Update DateTime" |
|
| 138 |
+#~ msgstr "予約更新日時" |
|
| 126 | 139 |
|
| 127 |
-#: ../rucy.php:533 |
|
| 128 |
-msgid "page" |
|
| 129 |
-msgstr "固定ページ" |
|
| 140 |
+#~ msgid "None" |
|
| 141 |
+#~ msgstr "なし" |
|
| 130 | 142 |
|
| 131 |
-#: ../rucy.php:544 |
|
| 132 |
-msgid "custom post type" |
|
| 133 |
-msgstr "カスタム投稿タイプ" |
|
| 143 |
+#~ msgid "post or page is not allow." |
|
| 144 |
+#~ msgstr "カスタム投稿タイプにpostもしくはpageは入力できません。" |
|
| 134 | 145 |
|
| 135 |
-#: ../rucy.php:546 |
|
| 136 |
-msgid "Separated by commas" |
|
| 137 |
-msgstr "カンマ区切りで入力" |
|
| 146 |
+#~ msgid "Do not input \"post\" or \"page\". " |
|
| 147 |
+#~ msgstr "postもしくはpageは入力できません。" |
|
| 138 | 148 |
|
| 139 |
-#: ../rucy.php:559 |
|
| 140 |
-msgid "Save Changes" |
|
| 141 |
-msgstr "変更を保存" |
|
| 149 |
+#~ msgid "" |
|
| 150 |
+#~ "Please input alphabet or numeric. And do not input sequencial commas." |
|
| 151 |
+#~ msgstr "英数のみ入力してください。また、連続でカンマの入力はできません。" |
|
| 152 |
+ |
|
| 153 |
+#, fuzzy |
|
| 154 |
+#~ msgid "Do not input \"attachment\" or \"revision\". " |
|
| 155 |
+#~ msgstr "postもしくはpageは入力できません。" |
|
| 156 |
+ |
|
| 157 |
+#~ msgid "Require" |
|
| 158 |
+#~ msgstr "必須" |
|
| 159 |
+ |
|
| 160 |
+#~ msgid "post" |
|
| 161 |
+#~ msgstr "投稿" |
|
| 162 |
+ |
|
| 163 |
+#~ msgid "page" |
|
| 164 |
+#~ msgstr "固定ページ" |
|
| 165 |
+ |
|
| 166 |
+#~ msgid "custom post type" |
|
| 167 |
+#~ msgstr "カスタム投稿タイプ" |
|
| 168 |
+ |
|
| 169 |
+#~ msgid "Separated by commas" |
|
| 170 |
+#~ msgstr "カンマ区切りで入力" |
|
| 142 | 171 |
|
| 143 |
-#: ../rucy.php:618 |
|
| 144 |
-msgid "Settings" |
|
| 145 |
-msgstr "設定" |
|
| 172 |
+#~ msgid "Settings" |
|
| 173 |
+#~ msgstr "設定" |
| ... | ... |
@@ -37,6 +37,13 @@ You can install this plugin directly from your WordPress dashboard: |
| 37 | 37 |
|
| 38 | 38 |
== Changelog == |
| 39 | 39 |
|
| 40 |
+= 0.4.0 = |
|
| 41 |
+* 2015-10-21 |
|
| 42 |
+* add post rollback function. |
|
| 43 |
+* refactoring |
|
| 44 |
+* add plugin icon. |
|
| 45 |
+* change banner image. |
|
| 46 |
+ |
|
| 40 | 47 |
= 0.3.0 = |
| 41 | 48 |
* 2015-04-09 |
| 42 | 49 |
* add "feature image" and "post date" to reservation update. |
| ... | ... |
@@ -2,634 +2,159 @@ |
| 2 | 2 |
/* |
| 3 | 3 |
* Plugin Name: Rucy |
| 4 | 4 |
* Plugin URI: https://github.com/gips/rucy |
| 5 |
- * Description: Reservation Update (Published) Content. |
|
| 6 |
- * Version: 0.3.0 |
|
| 5 |
+ * Description: Reservation Update "Published" Content(Post & Page). |
|
| 6 |
+ * Version: 0.4.0 |
|
| 7 | 7 |
* Author: Nita |
| 8 | 8 |
* License: GPLv2 or later |
| 9 | 9 |
* Text Domain: rucy |
| 10 | 10 |
* Domain Path: /lang |
| 11 | 11 |
*/ |
| 12 |
-define('RC_PLUGIN_URL', plugin_dir_url(__FILE__));
|
|
| 13 |
-define('RC_SETTING_OPTION_KEY', 'rucy_post_type');
|
|
| 14 |
-define('RC_TXT_DOMAIN', 'rucy');
|
|
| 15 |
-define('RC_POSTTYPE_DEFAULT','post,page');
|
|
| 16 |
-define('RC_CRON_HOOK', 'rucy_update_reserved_content');
|
|
| 17 |
-load_plugin_textdomain( RC_TXT_DOMAIN, false, 'rucy/lang'); |
|
| 18 |
- |
|
| 19 |
-add_action('admin_enqueue_scripts','load_rc_jscss');
|
|
| 20 |
-function load_rc_jscss() |
|
| 21 |
-{
|
|
| 22 |
- global $hook_suffix; |
|
| 23 |
- if(in_array($hook_suffix, array('post.php','post-new.php',)))
|
|
| 24 |
- {
|
|
| 25 |
- wp_register_style('rucy.css', RC_PLUGIN_URL . '/css/rucy.css',array(),'0.1.0');
|
|
| 26 |
- wp_enqueue_style('rucy.css');
|
|
| 27 |
- wp_register_script('rucy.js', RC_PLUGIN_URL . '/js/rucy.js', array('jquery'), '0.1.0');
|
|
| 28 |
- wp_enqueue_script('rucy.js');
|
|
| 29 |
- } |
|
| 30 |
-} |
|
| 31 |
- |
|
| 32 |
-// load js and css for pointer |
|
| 33 |
-add_action('admin_menu', 'load_rc_pointer_menu');
|
|
| 34 |
-function load_rc_pointer_menu() {
|
|
| 35 |
- wp_enqueue_script('wp-pointer');
|
|
| 36 |
- wp_enqueue_style('wp-pointer');
|
|
| 37 |
-} |
|
| 38 |
-/** |
|
| 39 |
- * get rucy post_metas or post_meta keys. |
|
| 40 |
- * @param int $post_id |
|
| 41 |
- * @return array |
|
| 42 |
- */ |
|
| 43 |
-function get_rc_metas($post_id = "") |
|
| 44 |
-{
|
|
| 45 |
- $base = array( |
|
| 46 |
- 'accept' => 'rc_reserv_accept', |
|
| 47 |
- 'content' => 'rc_reserv_content', |
|
| 48 |
- 'date' => 'rc_reserv_date', |
|
| 49 |
- 'feature_img' => 'rc_reserv_feature_image', |
|
| 50 |
- 'accept_feature_img' => 'rc_reserv_accept_feature_image', |
|
| 51 |
- 'accept_update' => 'rc_reserv_accept_post_update', |
|
| 52 |
- ); |
|
| 53 |
- if($post_id > 0) |
|
| 54 |
- {
|
|
| 55 |
- foreach ($base as $key => $value) |
|
| 56 |
- {
|
|
| 57 |
- $res[$key] = get_post_meta($post_id, $value, true); |
|
| 58 |
- } |
|
| 59 |
- } else {
|
|
| 60 |
- $res = $base; |
|
| 61 |
- } |
|
| 62 |
- return $res; |
|
| 63 |
-} |
|
| 64 |
- |
|
| 65 |
-// add reserv_metabox |
|
| 66 |
-add_action('admin_menu', 'add_rc_metabox_out');
|
|
| 67 |
-function add_rc_metabox_out() |
|
| 68 |
-{
|
|
| 69 |
- $accept_post_type = get_rc_setting(); |
|
| 70 |
- foreach ($accept_post_type as $post_type) |
|
| 71 |
- {
|
|
| 72 |
- add_meta_box('rucy_metabox','Rucy - Reservation Update Content -','add_rucy_metabox_inside',$post_type,'normal','high');
|
|
| 73 |
- } |
|
| 74 |
-} |
|
| 75 |
-function add_rucy_metabox_inside() |
|
| 76 |
-{
|
|
| 77 |
- global $post; |
|
| 78 |
- $rc_keys = get_rc_metas(); |
|
| 79 |
- $rc_content_name = $rc_keys['content']; |
|
| 80 |
- $rc_accept_name = $rc_keys['accept']; |
|
| 81 |
- $rc_metas = get_rc_metas($post->ID); |
|
| 82 |
- $reserv_accept = $rc_metas['accept']; |
|
| 83 |
- $reserv_date = $rc_metas['date']; |
|
| 84 |
- if("" == $reserv_date)
|
|
| 85 |
- {
|
|
| 86 |
- $reserv_date = date_i18n('Y-m-d H:i:s');
|
|
| 87 |
- } |
|
| 88 |
- $reserv_date_arr = getdate(strtotime($reserv_date)); |
|
| 89 |
- $current_y = date_i18n('Y');
|
|
| 90 |
- $reserv_content = $rc_metas['content']; |
|
| 91 |
- if("" == $reserv_content)
|
|
| 92 |
- {
|
|
| 93 |
- $reserv_content = $post->post_content; |
|
| 94 |
- } |
|
| 95 |
-?> |
|
| 96 |
-<div id="rc-post-wrap" class="curtime"> |
|
| 97 |
- <input type="hidden" name="schroeder" id="schroeder" value="<?php echo wp_create_nonce(plugin_basename(__FILE__)); ?>"/> |
|
| 98 |
- <label class="rc_accept"> |
|
| 99 |
- <input type="checkbox" name="<?php echo $rc_accept_name; ?>" value="1" <?php echo ($reserv_accept == "1") ? "checked" : ""; ?>> <?php _e('Accept reserve update content.',RC_TXT_DOMAIN) ?>
|
|
| 100 |
- </label> |
|
| 101 |
- <div class="rc-datetime" id="timestamp"> |
|
| 102 |
- <?php _e('UpdateTime',RC_TXT_DOMAIN) ?>:<b><?php echo date_i18n("Y/m/d @ H:i", strtotime($reserv_date)); ?></b>
|
|
| 103 |
- </div> |
|
| 104 |
- <a href="#edit-reservdate" class="edit-timestamp rc-datetime-edit"><?php _e('Edit') ?></a>
|
|
| 105 |
- <div class="rc-datetime-wrap"> |
|
| 106 |
- <select name="rc_year"> |
|
| 107 |
- <?php |
|
| 108 |
- for($y = $current_y; $y <= ($current_y + 3); $y++){
|
|
| 109 |
- $y_selected = ($y == date_i18n('Y',$reserv_date_arr[0])) ? "selected" : "";
|
|
| 110 |
- echo '<option value="'.$y.'" '.$y_selected.'>'.$y.'</option>'; |
|
| 111 |
- } |
|
| 112 |
- ?> |
|
| 113 |
- </select> |
|
| 114 |
- <?php echo '/' ?> |
|
| 115 |
- <select name="rc_month"> |
|
| 116 |
- <?php |
|
| 117 |
- for($i = 1; $i <= 12; $i++) |
|
| 118 |
- {
|
|
| 119 |
- $m = sprintf("%02d",$i);
|
|
| 120 |
- $selected = ($m == date_i18n('m',$reserv_date_arr[0])) ? "selected" : "";
|
|
| 121 |
- echo '<option value="'.$m.'" '.$selected.'>'.$m.'</option>'; |
|
| 122 |
- } |
|
| 123 |
- ?> |
|
| 124 |
- </select><?php echo '/' ?> |
|
| 125 |
- <select name="rc_day"> |
|
| 126 |
- <?php |
|
| 127 |
- for($d = 1; $d<=31; $d++){
|
|
| 128 |
- $d = sprintf("%02d",$d);
|
|
| 129 |
- $d_selected = ($d == date_i18n('d',$reserv_date_arr[0])) ? "selected" : "";
|
|
| 130 |
- echo '<option value="'.$d.'" '.$d_selected.'>'.$d.'</option>'; |
|
| 131 |
- } |
|
| 132 |
- ?> |
|
| 133 |
- </select> |
|
| 134 |
- @ |
|
| 135 |
- <select name="rc_hour"> |
|
| 136 |
- <?php |
|
| 137 |
- for($h = 0; $h <= 23; $h++){
|
|
| 138 |
- $h = sprintf("%02d",$h);
|
|
| 139 |
- $h_selected = ($h == date_i18n('H',$reserv_date_arr[0])) ? "selected" : "";
|
|
| 140 |
- echo '<option value="'.$h.'" '.$h_selected.'>'.$h.'</option>'; |
|
| 141 |
- } |
|
| 142 |
- ?> |
|
| 143 |
- </select> |
|
| 144 |
- : |
|
| 145 |
- <select name="rc_minutes"> |
|
| 146 |
- <?php |
|
| 147 |
- for($min = 0; $min <= 59; $min++){
|
|
| 148 |
- $min = sprintf("%02d",$min);
|
|
| 149 |
- $min_selected = ($min == date_i18n('i',$reserv_date_arr[0])) ? "selected" : "";
|
|
| 150 |
- echo '<option value="'.$min.'" '.$min_selected.'>'.$min.'</option>'; |
|
| 151 |
- } |
|
| 152 |
- ?> |
|
| 153 |
- </select> |
|
| 154 |
- <a href="#edit-reservdate" class="rc-datetime-update button"><?php _e('OK',RC_TXT_DOMAIN) ?></a>
|
|
| 155 |
- <a href="#edit-reservdate" class="rc-datetime-cancel"><?php _e('Cancel',RC_TXT_DOMAIN) ?></a>
|
|
| 156 |
- </div> |
|
| 157 |
- <?php |
|
| 158 |
- $date_arr = array( |
|
| 159 |
- 'rc_year' => date_i18n('Y',$reserv_date_arr[0]),
|
|
| 160 |
- 'rc_month' => date_i18n('m',$reserv_date_arr[0]),
|
|
| 161 |
- 'rc_day' => date_i18n('d',$reserv_date_arr[0]),
|
|
| 162 |
- 'rc_hour' => date_i18n('H',$reserv_date_arr[0]),
|
|
| 163 |
- 'rc_minutes' => date_i18n('i',$reserv_date_arr[0])
|
|
| 164 |
- ); |
|
| 165 |
- foreach ($date_arr as $k => $v) |
|
| 166 |
- {
|
|
| 167 |
- echo '<input type="hidden" name="'.$k.'_cr" id="'.$k.'_cr" value="'.$v.'">'; |
|
| 168 |
- } |
|
| 169 |
- ?> |
|
| 170 |
- <div id="rc-accept-update-update"> |
|
| 171 |
- <label for="rc-accept-update-postdate"> |
|
| 172 |
- <input id="rc-accept-update-postdate" type="checkbox" name="<?php echo $rc_keys['accept_update']; ?>" value="1" <?php echo ($rc_metas['accept_update'] == '1') ? "checked" : ""; ?> /> <?php _e('Accept reserve update post date.', RC_TXT_DOMAIN); ?>
|
|
| 173 |
- </label> |
|
| 174 |
- </div> |
|
| 175 |
- <?php |
|
| 176 |
- $dismissed = explode(',', get_user_meta(get_current_user_id(), 'dismissed_wp_pointers', true));
|
|
| 177 |
- if(array_search('rc_update_postdate', $dismissed) === false):
|
|
| 178 |
- $pointer_content = '<h3>' . __('Attention - reservation update UpdateTime', RC_TXT_DOMAIN) . '</h3>';
|
|
| 179 |
- $pointer_content .= '<p>'.__("If update UpdateTime, this post\'s permalink is changed by permalink settings.", RC_TXT_DOMAIN).'</p>';
|
|
| 180 |
- ?> |
|
| 181 |
- <script type="text/javascript"> |
|
| 182 |
- jQuery(document).ready(function(){
|
|
| 183 |
- // show notice pointer update postdate. |
|
| 184 |
- jQuery('#rc-accept-update-update').pointer({
|
|
| 185 |
- content : '<?php echo $pointer_content ?>', |
|
| 186 |
- buttons : function(e, t){
|
|
| 187 |
- return jQuery('<a class="close" href="#"><?php _e('Do not show future', RC_TXT_DOMAIN) ?></a>').bind('click.pointer',function(e){
|
|
| 188 |
- e.preventDefault(); |
|
| 189 |
- t.element.pointer('close');
|
|
| 190 |
- }); |
|
| 191 |
- }, |
|
| 192 |
- position : { edge : "top", align : "left"},
|
|
| 193 |
- close : function(){
|
|
| 194 |
- jQuery.post("<?php echo admin_url('admin-ajax.php'); ?>", {
|
|
| 195 |
- action : 'dismiss-wp-pointer', |
|
| 196 |
- pointer : 'rc_update_postdate' |
|
| 197 |
- }); |
|
| 198 |
- } |
|
| 199 |
- }).pointer('open');
|
|
| 200 |
- }); |
|
| 201 |
- </script> |
|
| 202 |
- <?php |
|
| 203 |
- endif; |
|
| 204 |
- ?> |
|
| 205 |
-</div> |
|
| 206 |
-<?php |
|
| 207 |
- wp_editor($reserv_content, $rc_content_name); |
|
| 208 |
-/* |
|
| 209 |
- * support feature image reservation. |
|
| 210 |
- */ |
|
| 211 |
- if( current_theme_supports('post-thumbnails') ) {
|
|
| 212 |
-?> |
|
| 213 |
-<fieldset> |
|
| 214 |
-<h3><?php echo __('Featured Image for Reservation Update', RC_TXT_DOMAIN); ?></h3>
|
|
| 215 |
-<label class="rc_feature_accept"> |
|
| 216 |
- <input type="checkbox" name="<?php echo $reserv_accept_feature_name; ?>" value="1" <?php echo ($reserv_accept_feature == "1") ? "checked" : ""; ?>> <?php _e('Accept reserve update feature image.', RC_TXT_DOMAIN); ?>
|
|
| 217 |
-</label> |
|
| 218 |
-<div class="rc_feature_image_uploader"> |
|
| 219 |
-<p><button id="rc_feature_image_upload" class="button rc-feature-uploader-button <?php echo ($reserv_feature_image != '') ? ' has_image' : ''; ?>"><?php _e('Set featured image for Reservation', RC_TXT_DOMAIN); ?></button></p>
|
|
| 220 |
- |
|
| 221 |
-<div class="rc-feature-image-uploader__ctrl"> |
|
| 222 |
- <div class="rc-feature-image-preview"> |
|
| 223 |
- <?php |
|
| 224 |
- if ( ! empty( $reserv_feature_image ) ) {
|
|
| 225 |
- echo $reserv_feature_image; |
|
| 226 |
- } |
|
| 227 |
- ?> |
|
| 228 |
- </div> |
|
| 229 |
-</div> |
|
| 230 |
- |
|
| 231 |
-<p><button class="button rc_remove_feature_image"><?php _e('Remove Featured image for Reservation', RC_TXT_DOMAIN) ?></button></p>
|
|
| 232 |
-<input type="hidden" id="rc_feature_image" name="<?php echo $reserv_feature_name ?>" value="<?php echo $reserv_feature ?>" /> |
|
| 233 |
-</div> |
|
| 234 |
-</fieldset> |
|
| 235 |
-<?php |
|
| 236 |
- } |
|
| 237 |
-} |
|
| 238 |
- |
|
| 239 |
-// save post meta |
|
| 240 |
-add_action('save_post','save_rc_post_meta');
|
|
| 241 |
-function save_rc_post_meta($post_id) |
|
| 242 |
-{
|
|
| 243 |
- if(isset($_POST) && isset($_POST['post_type'])) |
|
| 244 |
- {
|
|
| 245 |
- if(isset($_POST['schroeder']) && !wp_verify_nonce($_POST['schroeder'], plugin_basename(__FILE__))){
|
|
| 246 |
- return; |
|
| 247 |
- } |
|
| 248 |
- if(defined('DOING_AUTOSAVE') && DOING_AUTOSAVE){
|
|
| 249 |
- return; |
|
| 250 |
- } |
|
| 251 |
- $rc_keys = get_rc_metas(); |
|
| 252 |
- $accept_post_type = get_rc_setting(); |
|
| 253 |
- if(in_array($_POST['post_type'], $accept_post_type)) |
|
| 254 |
- {
|
|
| 255 |
- $date = mktime($_POST['rc_hour'], $_POST['rc_minutes'], 00, $_POST['rc_month'], $_POST['rc_day'], $_POST['rc_year']); |
|
| 256 |
- if($date) |
|
| 257 |
- {
|
|
| 258 |
- $_POST[$rc_keys['date']] = date_i18n('Y-m-d H:i:s',$date);
|
|
| 259 |
- } else {
|
|
| 260 |
- $_POST[$rc_keys['date']] = ""; |
|
| 12 |
+define( 'RC_PLUGIN_URL', plugin_dir_url(__FILE__) ); |
|
| 13 |
+define( 'RC_PLUGIN_DIR', untrailingslashit( dirname( __FILE__ ) ) ); |
|
| 14 |
+define( 'RC_SETTING_OPTION_KEY', 'rucy_post_type' ); |
|
| 15 |
+define( 'RC_TXT_DOMAIN', 'rucy' ); |
|
| 16 |
+define( 'RC_CRON_HOOK', 'rucy_update_reserved_content' ); |
|
| 17 |
+define( 'RC_SETTING_UPDATE', 'rucy_setting_update' ); |
|
| 18 |
+define( 'RC_SETTING_ERROR', 'rucy_setting_error' ); |
|
| 19 |
+define( 'RC_VERSION', '0.4.0' ); |
|
| 20 |
+load_plugin_textdomain( RC_TXT_DOMAIN, false, 'rucy/lang' ); |
|
| 21 |
+ |
|
| 22 |
+require_once RC_PLUGIN_DIR . '/inc/class-rucy-component.php'; |
|
| 23 |
+require_once RC_PLUGIN_DIR . '/inc/class-rucy-setting.php'; |
|
| 24 |
+require_once RC_PLUGIN_DIR . '/inc/class-rucy-editor.php'; |
|
| 25 |
+require_once RC_PLUGIN_DIR . '/inc/class-rucy-cron.php'; |
|
| 26 |
+ |
|
| 27 |
+class Rucy_Class {
|
|
| 28 |
+ public $support_post_type = array(); |
|
| 29 |
+ |
|
| 30 |
+ public function __construct() {
|
|
| 31 |
+ register_activation_hook( plugin_basename(__FILE__), array( $this, 'activate_plugin' ) ); |
|
| 32 |
+ add_action( 'admin_init', array( $this, 'rucy_upgrade' ) ); |
|
| 33 |
+ add_action('admin_enqueue_scripts', array( $this, 'enqueue_style_script' ));
|
|
| 34 |
+ add_action( 'admin_menu', array( $this, 'enqueue_pointer_menu' ) ); |
|
| 35 |
+ add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), array( $this, 'add_setting_link' ) ); |
|
| 36 |
+ $setting = new Class_Rucy_Setting(); |
|
| 37 |
+ add_action( 'admin_menu', array( $setting, 'set_admin_menu' ) ); |
|
| 38 |
+ add_action( 'admin_notices', array( $setting, 'set_admin_notices' ) ); |
|
| 39 |
+ $editor = new Class_Rucy_Editer(); |
|
| 40 |
+ add_action( 'admin_menu', array( $editor, 'add_rucy_metabox' ) ); |
|
| 41 |
+ add_action( 'save_post', array( $editor, 'save_rc_post_meta' ) ); |
|
| 42 |
+ add_filter( 'post_updated_messages', array( $editor, 'add_reservation_message' ) ); |
|
| 43 |
+ $component = new Class_Rucy_Component(); |
|
| 44 |
+ $accept_post_types = $component->get_support_post_type(); |
|
| 45 |
+ foreach ( $accept_post_types as $p ) {
|
|
| 46 |
+ if ( in_array( $p, array( 'page', 'post' ) ) ) {
|
|
| 47 |
+ $p .= 's'; |
|
| 261 | 48 |
} |
| 262 |
- if(!isset($_POST[$rc_keys['accept']]) || $_POST[$rc_keys['accept']] != "1"){
|
|
| 263 |
- $_POST[$rc_keys['accept']] = "0"; |
|
| 49 |
+ add_filter('manage_'.$p.'_columns', array( $this, 'manage_rucy_cols' ) );
|
|
| 50 |
+ add_action('manage_'.$p.'_custom_column', array( $this, 'add_rucy_col' ), 10, 2);
|
|
| 51 |
+ } |
|
| 52 |
+ // update content to reserved content |
|
| 53 |
+ $cron = new Class_Rucy_Cron(); |
|
| 54 |
+ add_action( RC_CRON_HOOK, array( $cron, 'update_rc_reserved_content' ) ); |
|
| 55 |
+ // deactivation this plugin |
|
| 56 |
+ register_deactivation_hook( __FILE__ , array( $this, 'uninstall_rucy' ) ); |
|
| 57 |
+ // uninstall this plugin |
|
| 58 |
+ register_uninstall_hook( __FILE__, array( $this, 'uninstall_rucy' ) ); |
|
| 59 |
+ } |
|
| 60 |
+ |
|
| 61 |
+ public function activate_plugin() {
|
|
| 62 |
+ $this->init_support_post_type(); |
|
| 63 |
+ } |
|
| 64 |
+ |
|
| 65 |
+ public function init_support_post_type() {
|
|
| 66 |
+ $component = new Class_Rucy_Component(); |
|
| 67 |
+ $this->support_post_type = $component->get_support_post_type(); |
|
| 68 |
+ $component->update_support_post_type( $this->support_post_type ); |
|
| 69 |
+ } |
|
| 70 |
+ |
|
| 71 |
+ /** |
|
| 72 |
+ * load css and js for this plugin. |
|
| 73 |
+ * |
|
| 74 |
+ * @global type $hook_suffix |
|
| 75 |
+ */ |
|
| 76 |
+ public function enqueue_style_script() {
|
|
| 77 |
+ global $hook_suffix; |
|
| 78 |
+ if ( in_array( $hook_suffix, array( 'post.php', 'post-new.php', 'settings_page_rucy' ) ) ) {
|
|
| 79 |
+ wp_register_style('rucy.css', RC_PLUGIN_URL . 'css/rucy.css',array(),'0.1.0');
|
|
| 80 |
+ wp_register_script('rucy.js', RC_PLUGIN_URL . 'js/rucy.js', array('jquery'), '0.1.1');
|
|
| 81 |
+ wp_enqueue_style('rucy.css');
|
|
| 82 |
+ wp_enqueue_script('rucy.js');
|
|
| 83 |
+ } |
|
| 84 |
+ } |
|
| 85 |
+ |
|
| 86 |
+ /** |
|
| 87 |
+ * load enqueue script and style for pointer |
|
| 88 |
+ */ |
|
| 89 |
+ public function enqueue_pointer_menu() {
|
|
| 90 |
+ wp_enqueue_script( 'wp-pointer' ); |
|
| 91 |
+ wp_enqueue_style( 'wp-pointer' ); |
|
| 92 |
+ } |
|
| 93 |
+ |
|
| 94 |
+ public function add_setting_link( $links ) {
|
|
| 95 |
+ $links[] = '<a href="' . get_admin_url( null, 'options-general.php?page=rucy' ) . '">' . __('Settings') . '</a>';
|
|
| 96 |
+ return $links; |
|
| 97 |
+ } |
|
| 98 |
+ |
|
| 99 |
+ public function manage_rucy_cols( $columns ) {
|
|
| 100 |
+ $columns['rucy_reservation_date'] = __( "Reservation Update DateTime", RC_TXT_DOMAIN ); |
|
| 101 |
+ $columns['rucy_rollback_date'] = __( "Rollback DateTime", RC_TXT_DOMAIN ); |
|
| 102 |
+ return $columns; |
|
| 103 |
+ } |
|
| 104 |
+ |
|
| 105 |
+ public function add_rucy_col( $column_name, $post_id ) {
|
|
| 106 |
+ $component = new Class_Rucy_Component(); |
|
| 107 |
+ $post_metas = $component->get_post_rc_meta( $post_id ); |
|
| 108 |
+ if ( $column_name == 'rucy_reservation_date' ) {
|
|
| 109 |
+ if ( $post_metas->accept == "1" ) {
|
|
| 110 |
+ echo $post_metas->date; |
|
| 111 |
+ } else {
|
|
| 112 |
+ _e( 'None' ); |
|
| 264 | 113 |
} |
| 265 | 114 |
} |
| 266 |
- foreach ($rc_keys as $key => $val) |
|
| 267 |
- {
|
|
| 268 |
- save_rc_post_meta_base($post_id, $val); |
|
| 269 |
- } |
|
| 270 |
- if($_POST[$rc_keys['accept']] == "1") |
|
| 271 |
- {
|
|
| 272 |
- $reserv_date = strtotime(get_gmt_from_date($_POST[$rc_keys['date']]) . " GMT"); |
|
| 273 |
- if(in_array($_POST['post_type'], $accept_post_type) ) |
|
| 274 |
- {
|
|
| 275 |
- wp_schedule_single_event($reserv_date, RC_CRON_HOOK, array($post_id)); |
|
| 115 |
+ if ( $column_name == 'rucy_rollback_date' ) {
|
|
| 116 |
+ if ( $post_metas->accept_rollback == "1" ) {
|
|
| 117 |
+ echo $post_metas->rollback_date; |
|
| 118 |
+ } else {
|
|
| 119 |
+ _e( 'None' ); |
|
| 276 | 120 |
} |
| 277 |
- } else if($_POST[$rc_keys['accept']] == "0" || !isset ($_POST[$rc_keys['accept']])) {
|
|
| 278 |
- // delete schedule |
|
| 279 |
- wp_clear_scheduled_hook(RC_CRON_HOOK, array($post_id)); |
|
| 280 |
- } |
|
| 281 |
- } |
|
| 282 |
-} |
|
| 283 |
- |
|
| 284 |
-/** |
|
| 285 |
- * save, update, delete post_meta |
|
| 286 |
- * |
|
| 287 |
- * @param int $post_id |
|
| 288 |
- * @param string $post_metakey |
|
| 289 |
- */ |
|
| 290 |
-function save_rc_post_meta_base($post_id, $post_metakey) |
|
| 291 |
-{
|
|
| 292 |
- if(isset($_POST)) |
|
| 293 |
- {
|
|
| 294 |
- $post_data = ""; |
|
| 295 |
- if(isset($_POST[$post_metakey])) |
|
| 296 |
- {
|
|
| 297 |
- $post_data = $_POST[$post_metakey]; |
|
| 298 |
- } |
|
| 299 |
- $meta = get_post_meta($post_id, $post_metakey,true); |
|
| 300 |
- if ($post_data != $meta) {
|
|
| 301 |
- update_post_meta($post_id, $post_metakey, $post_data, $meta); |
|
| 302 |
- } elseif("" == $post_data) {
|
|
| 303 |
- delete_post_meta($post_id, $post_metakey); |
|
| 304 |
- } |
|
| 305 |
- } |
|
| 306 |
-} |
|
| 307 |
- |
|
| 308 |
-// update post for wp-cron |
|
| 309 |
-add_action('rucy_update_reserved_content', 'update_rc_reserved_content', 10, 1);
|
|
| 310 |
-function update_rc_reserved_content($post_id) |
|
| 311 |
-{
|
|
| 312 |
- $rc_metas = get_rc_metas((int)$post_id); |
|
| 313 |
- if("1" == $rc_metas['accept'])
|
|
| 314 |
- {
|
|
| 315 |
- $updates = array( |
|
| 316 |
- 'ID' => (int)$post_id, |
|
| 317 |
- 'post_content' => apply_filters('the_content', $rc_metas['content']),
|
|
| 318 |
- ); |
|
| 319 |
- $upp = wp_update_post($updates,true); |
|
| 320 |
- // update post date |
|
| 321 |
- if(isset($rc_metas['accept_update']) && "1" == $rc_metas['accept_update']) {
|
|
| 322 |
- $updates['post_date'] = $rc_metas['date']; |
|
| 323 |
- $updates['post_date_gmt'] = get_gmt_from_date($rc_metas['date']); |
|
| 324 |
- } |
|
| 325 |
- // feature_image |
|
| 326 |
- if(isset($rc_metas['accept_feature_img']) && "1" == $rc_metas['accept_feature_img'] && |
|
| 327 |
- isset($rc_metas['feature_img']) && $rc_metas['feature_img'] != '') {
|
|
| 328 |
- update_rc_post_thumbnail($post_id, $rc_metas['feature_img']); |
|
| 329 |
- } |
|
| 330 |
- remove_filter('content_save_pre', 'wp_filter_post_kses');
|
|
| 331 |
- remove_filter('content_filtered_save_pre', 'wp_filter_post_kses');
|
|
| 332 |
- add_filter('content_save_pre', 'rc_content_allow_iframe');
|
|
| 333 |
- $upp = wp_update_post($updates,true); |
|
| 334 |
- remove_filter('content_save_pre', 'rc_content_allow_iframe');
|
|
| 335 |
- add_filter('content_save_pre', 'wp_filter_post_kses');
|
|
| 336 |
- add_filter('content_filtered_save_pre', 'wp_filter_post_kses');
|
|
| 337 |
- } |
|
| 338 |
- $dels = get_rc_metas(); |
|
| 339 |
- foreach ($dels as $key => $del) |
|
| 340 |
- {
|
|
| 341 |
- delete_post_meta($post_id, $del); |
|
| 342 |
- } |
|
| 343 |
- wp_clear_scheduled_hook(RC_CRON_HOOK, array($post_id)); |
|
| 344 |
-} |
|
| 345 |
- |
|
| 346 |
-function rc_content_allow_iframe($content) |
|
| 347 |
-{
|
|
| 348 |
- global $allowedposttags; |
|
| 349 |
- // iframe and attribute in iframe |
|
| 350 |
- $allowedposttags['iframe'] = array( |
|
| 351 |
- 'class' => array(), 'src' => array(), |
|
| 352 |
- 'width' => array(), 'height' => array(), |
|
| 353 |
- 'frameborder' => array(), 'scrolling' => array(), |
|
| 354 |
- 'marginheight' => array(), 'marginwidth' => array(), |
|
| 355 |
- 'srcdoc' => array(), 'sandbox' => array(), |
|
| 356 |
- 'seamless' => array(), 'name' => array(), |
|
| 357 |
- ); |
|
| 358 |
- return $content; |
|
| 359 |
-} |
|
| 360 |
- |
|
| 361 |
-function update_rc_post_thumbnail($post_id, $reserved_post_thumb_path) |
|
| 362 |
-{
|
|
| 363 |
- include_once(ABSPATH . 'wp-admin/includes/image.php'); |
|
| 364 |
- $upload_dir = wp_upload_dir(); |
|
| 365 |
- $image_data = file_get_contents($reserved_post_thumb_path); |
|
| 366 |
- $file_name = basename($reserved_post_thumb_path); |
|
| 367 |
- if(wp_mkdir_p($upload_dir['path'])) {
|
|
| 368 |
- $file = $upload_dir['path'] . '/' . $file_name; |
|
| 369 |
- } else {
|
|
| 370 |
- $file = $upload_dir['basedir'] . '/' . $file_name; |
|
| 371 |
- } |
|
| 372 |
- file_put_contents($file, $image_data); |
|
| 373 |
- $wp_file_type = wp_check_filetype($file_name, null); |
|
| 374 |
- $attachment = array( |
|
| 375 |
- 'post_mime_type' => $wp_file_type['type'], |
|
| 376 |
- 'post_title' => sanitize_file_name($file_name), |
|
| 377 |
- 'post_content' => '', |
|
| 378 |
- 'post_status' => 'inherit', |
|
| 379 |
- ); |
|
| 380 |
- delete_post_thumbnail($post_id); |
|
| 381 |
- $attachment_id = wp_insert_attachment($attachment, $file, $post_id); |
|
| 382 |
- $attach_data = wp_generate_attachment_metadata($attachment_id, $file); |
|
| 383 |
- if(!empty($attach_data) && !is_wp_error($attach_data)){
|
|
| 384 |
- $res = wp_update_attachment_metadata($attachment_id, $attach_data); |
|
| 385 |
- set_post_thumbnail($post_id, $attachment_id); |
|
| 386 |
- |
|
| 387 |
- return $res; |
|
| 388 |
- } |
|
| 389 |
-} |
|
| 390 |
- |
|
| 391 |
-// add update message |
|
| 392 |
-add_filter('post_updated_messages','add_rc_message');
|
|
| 393 |
-function add_rc_message($messages) |
|
| 394 |
-{
|
|
| 395 |
- global $post, $post_ID; |
|
| 396 |
- $arr_post_types = get_rc_setting(true); |
|
| 397 |
- $post_type = get_post_type($post); |
|
| 398 |
- if(in_array($post_type, $arr_post_types)) |
|
| 399 |
- {
|
|
| 400 |
- $rc_metas = get_rc_metas($post_ID); |
|
| 401 |
- if("1" == $rc_metas['accept'])
|
|
| 402 |
- {
|
|
| 403 |
- $add_message_date = date_i18n('Y/m/d @ H:i', strtotime($rc_metas['date']));
|
|
| 404 |
- $str = __('registered reservation update content _RC_DATETIME_',RC_TXT_DOMAIN);
|
|
| 405 |
- $add_message = '<br>' . strtr($str, array('_RC_DATETIME_' => $add_message_date));
|
|
| 406 |
- // published |
|
| 407 |
- $messages[$post_type][1] .= $add_message; |
|
| 408 |
- $messages[$post_type][4] .= $add_message; |
|
| 409 |
- $messages[$post_type][6] .= $add_message; |
|
| 410 |
- // saved |
|
| 411 |
- $messages[$post_type][7] .= $add_message; |
|
| 412 |
- // submited |
|
| 413 |
- $messages[$post_type][8] .= $add_message; |
|
| 414 |
- // scheduled |
|
| 415 |
- $messages[$post_type][9] .= $add_message; |
|
| 416 | 121 |
} |
| 417 | 122 |
} |
| 418 |
- return $messages; |
|
| 419 |
-} |
|
| 420 |
- |
|
| 421 |
-// add reservation info at postlist |
|
| 422 |
-function manage_rucy_cols($columns) |
|
| 423 |
-{
|
|
| 424 |
- $columns['rucy_reservation_date'] = __("Reservation Update DateTime", RC_TXT_DOMAIN);
|
|
| 425 |
- return $columns; |
|
| 426 |
-} |
|
| 427 |
- |
|
| 428 |
-function add_rucy_col($column_name, $post_id) |
|
| 429 |
-{
|
|
| 430 |
- $rc_metas = get_rc_metas($post_id); |
|
| 431 |
- $s = ""; |
|
| 432 |
- if($column_name == 'rucy_reservation_date') |
|
| 433 |
- {
|
|
| 434 |
- $s = $rc_metas['accept']; |
|
| 435 |
- if($s == "1") |
|
| 436 |
- {
|
|
| 437 |
- echo $rc_metas['date']; |
|
| 438 |
- } else {
|
|
| 439 |
- echo __('None');
|
|
| 123 |
+ |
|
| 124 |
+ public function uninstall_rucy() {
|
|
| 125 |
+ wp_clear_scheduled_hook( RC_CRON_HOOK ); |
|
| 126 |
+ delete_option( RC_SETTING_OPTION_KEY ); |
|
| 127 |
+ delete_option( RC_VERSION ); |
|
| 128 |
+ $all_posts = get_posts( 'numberposts=-1&post_status=' ); |
|
| 129 |
+ $component = new Class_Rucy_Component(); |
|
| 130 |
+ $post_meta_keys = $component->get_post_meta_keys(); |
|
| 131 |
+ foreach ( $all_posts as $post_info ) {
|
|
| 132 |
+ foreach ( $post_meta_keys as $key => $value ) {
|
|
| 133 |
+ delete_post_meta( $post_info->ID, $value ); |
|
| 134 |
+ } |
|
| 440 | 135 |
} |
| 441 | 136 |
} |
| 442 |
-} |
|
| 443 |
- |
|
| 444 |
-$accept_post_type = get_rc_setting(); |
|
| 445 |
-foreach ($accept_post_type as $p){
|
|
| 446 |
- if(in_array($p, array('page', 'post'))) {
|
|
| 447 |
- $p .= 's'; |
|
| 448 |
- } |
|
| 449 |
- add_filter('manage_'.$p.'_columns', 'manage_rucy_cols');
|
|
| 450 |
- add_action('manage_'.$p.'_custom_column', 'add_rucy_col', 10, 2);
|
|
| 451 |
-} |
|
| 452 |
- |
|
| 453 |
-// setting page |
|
| 454 |
-add_action('admin_menu','admin_menu_rucy');
|
|
| 455 |
-function admin_menu_rucy() |
|
| 456 |
-{
|
|
| 457 |
- add_options_page('Rucy', 'Rucy', 'manage_options', 'rucy', 'add_rc_setting');
|
|
| 458 |
-} |
|
| 459 |
-function add_rc_setting() |
|
| 460 |
-{
|
|
| 461 |
- $post = $_POST; |
|
| 462 |
- $is_checked_post = ""; |
|
| 463 |
- $is_checked_page = ""; |
|
| 464 |
- $custom_post_types = ""; |
|
| 465 |
- $error_class = "form-invalid"; |
|
| 466 |
- $basic_post_types = array('page','post');
|
|
| 467 |
- $invalid_post_types = array('attachment','revision');
|
|
| 468 |
- $message = array(); |
|
| 469 |
- $error = 0; |
|
| 470 |
- if(isset($post['page_options'])) |
|
| 471 |
- {
|
|
| 472 |
- $res = ""; |
|
| 473 |
- if(isset($post['rc_post']) && $post['rc_post'] == 'post') |
|
| 474 |
- {
|
|
| 475 |
- $res .= $post['rc_post']; |
|
| 476 |
- $is_checked_post = "checked"; |
|
| 477 |
- } else {
|
|
| 478 |
- $error += 1; |
|
| 479 |
- } |
|
| 480 |
- if(isset($post['rc_page']) && $post['rc_page'] == 'page') {
|
|
| 481 |
- $res .= "," . $post['rc_page']; |
|
| 482 |
- $is_checked_page = "checked"; |
|
| 137 |
+ |
|
| 138 |
+ public function rucy_upgrade() {
|
|
| 139 |
+ $rc_version = get_option( 'rucy_version' ); |
|
| 140 |
+ $rc_support_types = get_option( RC_SETTING_OPTION_KEY ); |
|
| 141 |
+ $is_old = false; |
|
| 142 |
+ if ( $rc_version ) {
|
|
| 143 |
+ // compare |
|
| 144 |
+ $new_version = RC_VERSION; |
|
| 145 |
+ if ( $rc_version != $new_version ) {
|
|
| 146 |
+ $is_old = true; |
|
| 147 |
+ } |
|
| 483 | 148 |
} else {
|
| 484 |
- $error += 1; |
|
| 485 |
- } |
|
| 486 |
- if($error == 2){
|
|
| 487 |
- $message['post_page'] = __("post or page is not allow.", RC_TXT_DOMAIN);
|
|
| 488 |
- } |
|
| 489 |
- if(isset($post['rc_custom_post']) && $post['rc_custom_post'] != "") {
|
|
| 490 |
- $custom_check = explode(',', $post['rc_custom_post']);
|
|
| 491 |
- foreach ($custom_check as $check) |
|
| 492 |
- {
|
|
| 493 |
- if(in_array($check, $basic_post_types)) |
|
| 494 |
- {
|
|
| 495 |
- $message['custom_post'] = __('Do not input "post" or "page". ', RC_TXT_DOMAIN);
|
|
| 496 |
- } else if(!preg_match('/[a-zA-Z0-9_-]/', $check)) {
|
|
| 497 |
- $message['custom_post'] = __("Please input alphabet or numeric. And do not input sequencial commas.", RC_TXT_DOMAIN);
|
|
| 498 |
- } else if(in_array($check, $invalid_post_types)){
|
|
| 499 |
- $message['custom_post'] = __('Do not input "attachment" or "revision". ',RC_TXT_DOMAIN);
|
|
| 500 |
- } |
|
| 149 |
+ // old version lessthan 0.3.0 |
|
| 150 |
+ $is_old = true; |
|
| 151 |
+ if ( !is_array( $rc_support_types ) ) {
|
|
| 152 |
+ update_option( RC_SETTING_OPTION_KEY, explode( ',', $rc_support_types ) ); |
|
| 501 | 153 |
} |
| 502 |
- $res .= "," . $post['rc_custom_post']; |
|
| 503 |
- $custom_post_types = $post['rc_custom_post']; |
|
| 504 |
- } |
|
| 505 |
- if($res != "" && count($message) == 0) |
|
| 506 |
- {
|
|
| 507 |
- update_option(RC_SETTING_OPTION_KEY, $res); |
|
| 508 | 154 |
} |
| 509 |
- } else {
|
|
| 510 |
- $message = array(); |
|
| 511 |
- $arr_setting = get_rc_setting(); |
|
| 512 |
- $is_checked_post = (in_array('post', $arr_setting) == TRUE) ? 'checked' : "";
|
|
| 513 |
- $is_checked_page = (in_array('page', $arr_setting) == TRUE) ? 'checked' : "";
|
|
| 514 |
- $arr_custom_post_types = array(); |
|
| 515 |
- foreach ($arr_setting as $v) |
|
| 516 |
- {
|
|
| 517 |
- if(!in_array($v, $basic_post_types)) |
|
| 518 |
- {
|
|
| 519 |
- array_push($arr_custom_post_types, $v); |
|
| 520 |
- } |
|
| 155 |
+ if ( $is_old ) {
|
|
| 156 |
+ update_option( 'rucy_version' , RC_VERSION ); |
|
| 521 | 157 |
} |
| 522 |
- $custom_post_types = implode(',', $arr_custom_post_types);
|
|
| 523 |
- } |
|
| 524 |
-?> |
|
| 525 |
-<div class="wrap"> |
|
| 526 |
- <h2><?php _e('Rucy Settings', RC_TXT_DOMAIN); ?></h2>
|
|
| 527 |
- <p><?php _e('Configure content types reservation update.',RC_TXT_DOMAIN); ?></p>
|
|
| 528 |
- <form method="post" action="#"> |
|
| 529 |
- <?php wp_nonce_field('update-options'); ?>
|
|
| 530 |
- <table class="form-table"> |
|
| 531 |
- <tr class="<?php echo (isset($message['post_page']) == true) ? $error_class : ""; ?>"> |
|
| 532 |
- <th><?php _e('post type',RC_TXT_DOMAIN) ?><br><small>*<?php _e('Require',RC_TXT_DOMAIN) ?></small></th>
|
|
| 533 |
- <td> |
|
| 534 |
- <ul> |
|
| 535 |
- <li><label for="rc_post"><input type="checkbox" id="rc_post" name="rc_post" value="post" <?php echo $is_checked_post ?>><?php _e('post',RC_TXT_DOMAIN) ?></label></li>
|
|
| 536 |
- <li><label for="rc_page"><input type="checkbox" id="rc_page" name="rc_page" value="page" <?php echo $is_checked_page ?>><?php _e('page',RC_TXT_DOMAIN) ?></label></li>
|
|
| 537 |
- </ul> |
|
| 538 |
- <?php |
|
| 539 |
- if(isset($message['post_page'])) |
|
| 540 |
- {
|
|
| 541 |
- echo '<p>'.$message['post_page'].'</p>'; |
|
| 542 |
- } |
|
| 543 |
- ?> |
|
| 544 |
- </td> |
|
| 545 |
- </tr> |
|
| 546 |
- <tr class="<?php echo (isset($message['custom_post']) == true) ? $error_class : ""; ?>"> |
|
| 547 |
- <th><?php _e('custom post type',RC_TXT_DOMAIN) ?></th>
|
|
| 548 |
- <td> |
|
| 549 |
- <input type="text" value="<?php echo $custom_post_types ?>" name="rc_custom_post" placeholder="<?php _e('Separated by commas',RC_TXT_DOMAIN) ?>">
|
|
| 550 |
- <?php |
|
| 551 |
- if(isset($message['custom_post'])) |
|
| 552 |
- {
|
|
| 553 |
- echo '<p>'.$message['custom_post'].'</p>'; |
|
| 554 |
- } |
|
| 555 |
- ?> |
|
| 556 |
- </td> |
|
| 557 |
- </tr> |
|
| 558 |
- </table> |
|
| 559 |
- <input type="hidden" name="action" value="update" /> |
|
| 560 |
- <input type="hidden" name="page_options" value="<?php echo RC_SETTING_OPTION_KEY ?>"/> |
|
| 561 |
- <p class="submit"> |
|
| 562 |
- <input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" />
|
|
| 563 |
- </p> |
|
| 564 |
- </form> |
|
| 565 |
-</div> |
|
| 566 |
-<?php |
|
| 567 |
-} |
|
| 568 |
-/** |
|
| 569 |
- * get post type allowed rucy |
|
| 570 |
- * |
|
| 571 |
- * @param boolean $is_array |
|
| 572 |
- * @return string |
|
| 573 |
- */ |
|
| 574 |
-function get_rc_setting($is_array = true) |
|
| 575 |
-{
|
|
| 576 |
- $rc_setting = get_option(RC_SETTING_OPTION_KEY); |
|
| 577 |
- $res = ""; |
|
| 578 |
- if(!$rc_setting) |
|
| 579 |
- {
|
|
| 580 |
- $rc_setting = RC_POSTTYPE_DEFAULT; |
|
| 581 |
- } |
|
| 582 |
- if($is_array) |
|
| 583 |
- {
|
|
| 584 |
- $res = explode(',', $rc_setting);
|
|
| 585 |
- } else {
|
|
| 586 |
- $res = $rc_setting; |
|
| 587 |
- } |
|
| 588 |
- return $res; |
|
| 589 |
-} |
|
| 590 |
- |
|
| 591 |
-// uninstall |
|
| 592 |
-if(function_exists('register_uninstall_hook'))
|
|
| 593 |
-{
|
|
| 594 |
- register_uninstall_hook(__FILE__, 'uninstall_rucy'); |
|
| 595 |
-} |
|
| 596 |
-// deactivation |
|
| 597 |
-if(function_exists('register_deactivation_hook'))
|
|
| 598 |
-{
|
|
| 599 |
- register_deactivation_hook(__FILE__, 'uninstall_rucy'); |
|
| 600 |
-} |
|
| 601 |
- |
|
| 602 |
-function uninstall_rucy() |
|
| 603 |
-{
|
|
| 604 |
- wp_clear_scheduled_hook(RC_CRON_HOOK); |
|
| 605 |
- delete_option(RC_SETTING_OPTION_KEY); |
|
| 606 |
- $allposts = get_posts('numberposts=-1&post_status=');
|
|
| 607 |
- $meta_keys = get_rc_metas(); |
|
| 608 |
- foreach ($allposts as $postinfo) |
|
| 609 |
- {
|
|
| 610 |
- foreach ($meta_keys as $k => $val) |
|
| 611 |
- {
|
|
| 612 |
- delete_post_meta($postinfo->ID, $val); |
|
| 613 |
- } |
|
| 614 |
- } |
|
| 615 |
-} |
|
| 616 |
- |
|
| 617 |
-// link to setting |
|
| 618 |
-add_filter('plugin_action_links_' . plugin_basename(__FILE__), 'add_rc_setting_link');
|
|
| 619 |
-function add_rc_setting_link($links) |
|
| 620 |
-{
|
|
| 621 |
- $links[] = '<a href="' . get_admin_url(null, 'options-general.php?page=rucy') . '">' . __('Settings') . '</a>';
|
|
| 622 |
- return $links; |
|
| 623 |
-} |
|
| 624 |
- |
|
| 625 |
-// activate plugin action |
|
| 626 |
-register_activation_hook(plugin_basename(__FILE__), 'install_rucy'); |
|
| 627 |
-function install_rucy() |
|
| 628 |
-{
|
|
| 629 |
- $rc_setting = get_option(RC_SETTING_OPTION_KEY); |
|
| 630 |
- if(!$rc_setting) |
|
| 631 |
- {
|
|
| 632 |
- $basic_post_types = RC_POSTTYPE_DEFAULT; |
|
| 633 |
- update_option(RC_SETTING_OPTION_KEY, $basic_post_types); |
|
| 634 | 158 |
} |
| 635 | 159 |
} |
| 160 |
+new Rucy_Class(); |
|
| 636 | 161 |
\ No newline at end of file |