Update dependencies and create a new wp-ajax for get sample permalink

This commit is contained in:
weryques 2018-07-10 15:11:21 -03:00
parent 4add863f81
commit c34bb699ae
7 changed files with 294 additions and 1792 deletions

1948
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -10,7 +10,6 @@
"axios": "^0.18.0",
"buefy": "^0.6.6",
"bulma": "^0.7.1",
"html-to-json": "^0.6.0",
"mdi": "^2.2.43",
"moment": "^2.22.2",
"npm": "^6.1.0",
@ -23,25 +22,25 @@
"vuex": "^3.0.1"
},
"devDependencies": {
"autoprefixer": "^8.6.4",
"autoprefixer": "^8.6.5",
"babel-core": "^6.26.3",
"babel-loader": "^7.1.4",
"babel-loader": "^7.1.5",
"babel-preset-env": "^1.7.0",
"babel-preset-stage-3": "^6.24.1",
"cross-env": "^5.2.0",
"css-loader": "^0.28.11",
"css-loader": "^1.0.0",
"cypress": "^3.0.2",
"element-theme-chalk": "^2.4.3",
"eslint": "^5.0.1",
"eslint": "^5.1.0",
"eslint-loader": "^2.0.0",
"eslint-plugin-vue": "^4.5.0",
"file-loader": "^1.1.11",
"node-sass": "^4.9.1",
"postcss-loader": "^2.1.5",
"node-sass": "^4.9.2",
"postcss-loader": "^2.1.6",
"sass-loader": "^7.0.3",
"style-loader": "^0.21.0",
"uglifyjs-webpack-plugin": "^1.2.7",
"vue-custom-element": "^3.2.1",
"vue-custom-element": "^3.2.2",
"vue-loader": "^15.2.4",
"vue-template-compiler": "^2.5.16",
"webpack": "^4.15.1",

View File

@ -18,7 +18,9 @@ class Admin {
private function __construct() {
add_action( 'wp_ajax_tainacan_date_i18n', array( &$this, 'ajax_date_i18n') );
add_action( 'wp_ajax_tainacan-date-i18n', array( &$this, 'ajax_date_i18n') );
add_action( 'wp_ajax_tainacan-sample-permalink', array( &$this, 'ajax_sample_permalink') );
add_action( 'admin_menu', array( &$this, 'add_admin_menu' ) );
add_filter( 'admin_body_class', array( &$this, 'admin_body_class' ) );
@ -119,7 +121,7 @@ class Admin {
wp_localize_script( 'tainacan-user-admin', 'tainacan_plugin', $settings );
wp_enqueue_media();
wp_enqueue_script('undescore', includes_url('js') . '/underscore.min.js' );
wp_enqueue_script('underscore', includes_url('js') . '/underscore.min.js' );
wp_enqueue_script('jcrop');
wp_enqueue_script( 'customize-controls' );
@ -170,7 +172,6 @@ class Admin {
'root_wp_api' => esc_url_raw( rest_url() ) . 'wp/v2/',
'wp_ajax_url' => admin_url( 'admin-ajax.php' ),
'nonce' => wp_create_nonce( 'wp_rest' ),
'sample_permalink_nonce' => wp_create_nonce( 'samplepermalink' ),
'components' => $components,
'i18n' => $tainacan_admin_i18n,
'user_caps' => $user_caps,
@ -242,5 +243,61 @@ class Admin {
wp_die();
}
function ajax_sample_permalink(){
$id = $_POST['post_id'];
$title = $_POST['new_title'];
$name = $_POST['new_slug'];
$post = get_post( $id );
if ( ! $post )
return array( '', '' );
$ptype = get_post_type_object($post->post_type);
// Hack: get_permalink() would return ugly permalink for drafts, so we will fake that our post is published.
if ( in_array( $post->post_status, array( 'auto-draft', 'draft', 'pending', 'future' ) ) ) {
$post->post_status = 'publish';
$post->post_name = sanitize_title($post->post_name ? $post->post_name : $post->post_title, $post->ID);
}
// If the user wants to set a new name -- override the current one
// Note: if empty name is supplied -- use the title instead, see #6072
if ( !is_null($name) )
$post->post_name = sanitize_title($name ? $name : $title, $post->ID);
$post->post_name = wp_unique_post_slug($post->post_name, $post->ID, $post->post_status, $post->post_type, $post->post_parent);
$post->filter = 'sample';
$permalink = get_permalink($post, true);
// Replace custom post_type Token with generic pagename token for ease of use.
$permalink = str_replace("%$post->post_type%", '%pagename%', $permalink);
// Handle page hierarchy
if ( $ptype->hierarchical ) {
$uri = get_page_uri($post);
if ( $uri ) {
$uri = untrailingslashit($uri);
$uri = strrev( stristr( strrev( $uri ), '/' ) );
$uri = untrailingslashit($uri);
}
/** This filter is documented in wp-admin/edit-tag-form.php */
$uri = apply_filters( 'editable_slug', $uri, $post );
if ( !empty($uri) )
$uri .= '/';
$permalink = str_replace('%pagename%', "{$uri}%pagename%", $permalink);
}
/** This filter is documented in wp-admin/edit-tag-form.php */
$permalink = array( 'permalink' => $permalink, 'slug' => apply_filters( 'editable_slug', $post->post_name, $post ) );
echo json_encode($permalink);
wp_die();
}
}

View File

@ -396,7 +396,6 @@
import { mapActions } from 'vuex';
import wpMediaFrames from '../../js/wp-media-frames';
import { wpAjax } from '../../js/mixins';
import htmlToJSON from 'html-to-json'
export default {
name: 'CollectionEditionForm',
@ -485,18 +484,8 @@ export default {
this.isUpdatingSlug = true;
this.getSamplePermalink(this.collectionId, this.form.name, this.form.slug)
.then(samplePermalink => {
let promise = htmlToJSON.parse(samplePermalink, {
permalink($doc) {
return $doc.find('#editable-post-name-full').text();
}
});
promise.done((result) => {
this.form.slug = result.permalink;
//this.$console.info(this.form.slug);
});
.then((res) => {
this.form.slug = res.data.slug;
this.isUpdatingSlug = false;
this.formErrorMessage = '';

View File

@ -135,8 +135,7 @@
<script>
import { wpAjax } from "../../js/mixins";
import { mapActions, mapGetters } from 'vuex';
import TermsList from '../lists/terms-list.vue'
import htmlToJSON from 'html-to-json';
import TermsList from '../lists/terms-list.vue';
import CustomDialog from '../other/custom-dialog.vue';
export default {
@ -268,18 +267,8 @@
this.isUpdatingSlug = true;
this.getSamplePermalink(this.taxonomyId, this.form.name, this.form.slug)
.then(samplePermalink => {
let promise = htmlToJSON.parse(samplePermalink, {
permalink($doc) {
return $doc.find('#editable-post-name-full').text();
}
});
promise.done((result) => {
this.form.slug = result.permalink;
//this.$console.info(this.form.slug);
});
.then((res) => {
this.form.slug = res.data.slug;
this.isUpdatingSlug = false;
this.formErrorMessage = '';

View File

@ -1,6 +1,6 @@
// Overrides lodash by original WordPress Underscore Library
window.lodash = _.noConflict();
window.underscore = _.noConflict();
//window.lodash = _.noConflict();
//window.underscore = _.noConflict();
// Main imports
import Vue from 'vue';

View File

@ -15,30 +15,20 @@ export const wpAjax = {
},
methods: {
getSamplePermalink(id, newTitle, newSlug){
return new Promise((resolve, reject) => {
this.axiosWPAjax.post('', qs.stringify({
action: 'sample-permalink',
return this.axiosWPAjax.post('', qs.stringify({
action: 'tainacan-sample-permalink',
post_id: id,
new_title: newTitle,
new_slug: newSlug,
samplepermalinknonce: tainacan_plugin.sample_permalink_nonce,
}))
.then(res => {
resolve(res.data);
})
.catch(error => {
reject(error)
})
});
nonce: tainacan_plugin.nonce,
}));
},
getDatei18n(dateString){
this.axiosWPAjax.post('', qs.stringify({
action: 'tainacan_date_i18n',
return this.axiosWPAjax.post('', qs.stringify({
action: 'tainacan-date-i18n',
date_string: dateString,
nonce: tainacan_plugin.nonce,
})).then(res => {
return res.data
});
}));
},
}
};