Basic folder and bundle structure for item submission shortcode. #388

This commit is contained in:
mateuswetah 2020-05-25 16:54:23 -03:00
parent e42cd01c09
commit ba16e2ced0
6 changed files with 216 additions and 1 deletions

View File

@ -49,7 +49,8 @@ class Theme_Helper {
add_filter('get_the_archive_title', array($this, 'filter_archive_title'));
add_shortcode( 'tainacan-search', array($this, 'search_shortcode'));
add_shortcode( 'tainacan-item-submission', array($this, 'item_submission_shortcode'));
add_action( 'generate_rewrite_rules', array( &$this, 'rewrite_rules' ), 10, 1 );
add_filter( 'query_vars', array( &$this, 'rewrite_rules_query_vars' ) );
add_filter( 'template_include', array( &$this, 'rewrite_rule_template_include' ) );
@ -354,6 +355,26 @@ class Theme_Helper {
return $image;
}
public function item_submission_shortcode($args) {
global $TAINACAN_BASE_URL;
$props = ' ';
// Passes arguments to custom props
if ($args) {
foreach ($args as $key => $value) {
if ($value == true || $value == 'true') {
$props .= str_replace('_', '-', $key) . '="' . $value . '" ';
}
}
}
wp_enqueue_script('tainacan-item-submission', $TAINACAN_BASE_URL . '/assets/js/item_submission.js' , ['underscore', 'media-editor', 'media-views', 'customize-controls'] , TAINACAN_VERSION);
wp_localize_script('tainacan-item-submission', 'tainacan_plugin', \Tainacan\Admin::get_instance()->get_admin_js_localization_params());
return "<div id='tainacan-item-submission-form' $props ></div>";
}
public function search_shortcode($args) {
$props = ' ';

View File

@ -0,0 +1,48 @@
<template>
<item-submission-form class="tainacan-item-submission-form" />
</template>
<script>
export default {
name: "ItemSubmission"
}
</script>
<style lang="scss">
// TAINACAN Variables
@import "../admin/scss/_variables.scss";
// Bulma imports
@import "./scss/item-submission-basics.sass";
// Buefy imports
@import "../../../node_modules/buefy/src/scss/utils/_all.scss";
@import "../../../node_modules/buefy/src/scss/components/_datepicker.scss";
@import "../../../node_modules/buefy/src/scss/components/_checkbox.scss";
@import "../../../node_modules/buefy/src/scss/components/_radio.scss";
@import "../../../node_modules/buefy/src/scss/components/_tag.scss";
@import "../../../node_modules/buefy/src/scss/components/_loading.scss";
@import "../../../node_modules/buefy/src/scss/components/_dropdown.scss";
@import "../../../node_modules/buefy/src/scss/components/_modal.scss";
@import "../../../node_modules/buefy/src/scss/components/_dialog.scss";
@import "../../../node_modules/buefy/src/scss/components/_notices.scss";
@import "../../../node_modules/buefy/src/scss/components/_numberinput.scss";
// Tainacan imports
@import "../admin/scss/_modals.scss";
@import "../admin/scss/_buttons.scss";
@import "../admin/scss/_inputs.scss";
@import "../admin/scss/_checkboxes.scss";
@import "../admin/scss/_pagination.scss";
@import "../admin/scss/_tags.scss";
@import "../admin/scss/_notices.scss";
@import "../admin/scss/_tabs.scss";
@import "../admin/scss/_selects.scss";
@import "../admin/scss/_dropdown-and-autocomplete.scss";
@import "../admin/scss/_tooltips.scss";
@import "../admin/scss/_control.scss";
@import "../admin/scss/_tainacan-form.scss";
@import "../admin/scss/_custom_variables.scss";
</style>

View File

@ -0,0 +1,123 @@
// Main imports
import Vue from 'vue';
import Buefy from 'buefy';
import VTooltip from 'v-tooltip';
import cssVars from 'css-vars-ponyfill';
import VueTheMask from 'vue-the-mask';
import qs from 'qs';
// Metadata Types
import Text from '../../admin/components/metadata-types/text/Text.vue';
import Textarea from '../../admin/components/metadata-types/textarea/Textarea.vue';
import Selectbox from '../../admin/components/metadata-types/selectbox/Selectbox.vue';
import Numeric from '../../admin/components/metadata-types/numeric/Numeric.vue';
import Date from '../../admin/components/metadata-types/date/Date.vue';
import Relationship from '../../admin/components/metadata-types/relationship/Relationship.vue';
import Taxonomy from '../../admin/components/metadata-types/taxonomy/Taxonomy.vue';
import Compound from '../../admin/components/metadata-types/compound/Compound.vue';
import User from '../../admin/components/metadata-types/user/User.vue';
// Main components
import ItemSubmissionForm from '../pages/item-submission-form.vue';
import ItemSubmission from '../item-submission.vue';
// Remaining imports
import HelpButton from '../../admin/components/other/help-button.vue';
import store from '../../admin/js/store/store';
import { I18NPlugin, UserPrefsPlugin, ConsolePlugin, StatusHelperPlugin, CommentsStatusHelperPlugin } from '../../admin/js/utilities';
document.addEventListener("DOMContentLoaded", () => {
// Mount only if the div exists
if (document.getElementById('tainacan-item-submission-form')) {
// Display Icons only once everything is loaded
function listen(evnt, elem, func) {
if (elem.addEventListener) // W3C DOM
elem.addEventListener(evnt,func,false);
else if (elem.attachEvent) { // IE DOM
var r = elem.attachEvent("on"+evnt, func);
return r;
} else if (document.head) {
var iconHideStyle = document.createElement("style");
iconHideStyle.innerText = '.tainacan-icon{ opacity: 1 !important; }';
document.head.appendChild(iconHideStyle);
} else {
var iconHideStyle = document.createElement("style");
iconHideStyle.innerText = '.tainacan-icon{ opacity: 1 !important; }';
document.getElementsByTagName("head")[0].appendChild(iconHideStyle);
}
}
/* Registers Extra Vue Plugins passed to the window.tainacan_extra_plugins */
if (typeof window.tainacan_extra_plugins != "undefined") {
for (let [extraVuePluginName, extraVuePluginObject] of Object.entries(window.tainacan_extra_plugins))
Vue.use(extraVuePluginObject);
}
// Configure and Register Plugins
Vue.use(Buefy, {
defaultTooltipAnimated: true
});
Vue.use(VTooltip);
Vue.use(I18NPlugin);
Vue.use(UserPrefsPlugin);
Vue.use(StatusHelperPlugin);
Vue.use(ConsolePlugin, {visual: false});
Vue.use(VueTheMask);
Vue.use(CommentsStatusHelperPlugin);
/* Registers Extra Vue Components passed to the window.tainacan_extra_components */
if (typeof window.tainacan_extra_components != "undefined") {
for (let [extraVueComponentName, extraVueComponentObject] of Object.entries(window.tainacan_extra_components)) {
Vue.component(extraVueComponentName, extraVueComponentObject);
}
}
/* Metadata */
Vue.component('tainacan-text', Text);
Vue.component('tainacan-textarea', Textarea);
Vue.component('tainacan-selectbox', Selectbox);
Vue.component('tainacan-numeric', Numeric);
Vue.component('tainacan-date', Date);
Vue.component('tainacan-relationship', Relationship);
Vue.component('tainacan-taxonomy', Taxonomy);
Vue.component('tainacan-compound', Compound);
Vue.component('tainacan-user', User);
/* Main page component */
Vue.component('item-submission-form', ItemSubmissionForm);
Vue.component('item-submission', ItemSubmission);
/* Others */
Vue.component('help-button', HelpButton);
const VueItemSubmission = new Vue({
store,
data: {},
beforeMount () {},
methods: {
isParameterTrue(parameter) {
const value = this.$el.attributes[parameter].value;
return (value == true || value == 'true' || value == '1' || value == 1) ? true : false;
}
},
render: h => h(ItemSubmission)
});
VueItemSubmission.$mount('#tainacan-item-submission-form');
listen("load", window, function() {
var iconsStyle = document.createElement("style");
iconsStyle.setAttribute('type', 'text/css');
iconsStyle.innerText = '.tainacan-icon{ opacity: 1 !important; }';
document.head.appendChild(iconsStyle);
});
// Initialize Ponyfill for Custom CSS properties
cssVars({
// Options...
});
}
});

View File

@ -0,0 +1,11 @@
<template>
<div>
<h1>ITEM SUBMISSION FORM</h1>
</div>
</template>
<script>
export default {
name: 'ItemSubmissionForm'
}
</script>

View File

@ -0,0 +1,11 @@
@import "../../../../node_modules/bulma/sass/utilities/_all.sass"
@import "../../../../node_modules/bulma/sass/base/helpers.sass"
@import "../../../../node_modules/bulma/sass/form/_all.sass"
@import "../../../../node_modules/bulma/sass/components/pagination.sass"
@import "../../../../node_modules/bulma/sass/elements/icon.sass"
@import "../../../../node_modules/bulma/sass/elements/tag.sass"
@import "../../../../node_modules/bulma/sass/components/tabs.sass"
@import "../../../../node_modules/bulma/sass/elements/button.sass"
@import "../../../../node_modules/bulma/sass/grid/columns.sass"
@import "../../../../node_modules/bulma/sass/components/dropdown.sass"
@import "../../../../node_modules/bulma/sass/components/modal.sass"

View File

@ -7,6 +7,7 @@ module.exports = {
entry: {
admin: './src/views/admin/js/main.js',
theme_search: './src/views/theme-search/js/theme-main.js',
item_submission: './src/views/item-submission/js/item-submission-main.js',
roles: './src/views/roles/js/roles-main.js',
block_terms_list: './src/views/gutenberg-blocks/tainacan-terms/terms-list/index.js',