• I’ve got an error in console ‘Uncaught TypeError: Cannot read property ‘extend’ of undefined’ by this way ‘/acf-qtranslate/v5/assets/input.js’
    seems like bacuse of this error i can’t update chages in my page, more precisely i can update changes but my site got 3 languages, and when i pressing on one of my links to give name in another language and then press update it is gonna updating forever till i refresh the page.

    This is the line where error:

    acf.fields.qtranslate_wysiwyg = acf.field.extend({

    and here is the full function with error:

    (function ($) {
    
        acf.fields.qtranslate_wysiwyg = acf.field.extend({
            type: 'qtranslate_wysiwyg',
            $el: null,
            $textarea: null,
            toolbars: {},
    
            actions: {
                'ready': 'initialize',
                'append': 'initialize',
                'remove': 'disable',
                'sortstart': 'disable',
                'sortstop': 'enable'
            },
    
            focus: function () {
    
                // update vars
                this.$el = this.$field.find('.wp-editor-wrap.current-language').last();
                this.$textarea = this.$el.find('textarea');
    
                // settings
                this.settings = acf.get_data(this.$el);
                this.settings.id = this.$textarea.attr('id');
            },
    
            initialize: function () {
    
                // bail early if no tinymce
                if (typeof tinyMCEPreInit === 'undefined') {
    
                    return false;
    
                }
    
                // vars
                var mceInit = this.get_mceInit(),
                    qtInit = this.get_qtInit();
    
                // append settings
                tinyMCEPreInit.mceInit[mceInit.id] = mceInit;
                tinyMCEPreInit.qtInit[qtInit.id] = qtInit;
    
                // initialize mceInit
                if (this.$el.hasClass('tmce-active')) {
    
                    try {
    
                        tinymce.init(mceInit);
    
                    } catch (e) {
                    }
    
                }
    
                // initialize qtInit
                try {
    
                    var qtag = quicktags(qtInit);
    
                    this._buttonsInit(qtag);
    
                } catch (e) {
                }
    
            },
    
            get_mceInit: function () {
    
                // reference
                var $field = this.$field;
    
                // vars
                var toolbar = this.get_toolbar(this.settings.toolbar),
                    mceInit = $.extend({}, tinyMCEPreInit.mceInit.acf_content);
    
                // selector
                mceInit.selector = '#' + this.settings.id;
    
                // id
                mceInit.id = this.settings.id; // tinymce v4
                mceInit.elements = this.settings.id; // tinymce v3
    
                // toolbar
                if (toolbar) {
    
                    var k = (tinymce.majorVersion < 4) ? 'theme_advanced_buttons' : 'toolbar';
    
                    for (var i = 1; i < 5; i++) {
    
                        mceInit[k + i] = acf.isset(toolbar, i) ? toolbar[i] : '';
    
                    }
    
                }
    
                // events
                if (tinymce.majorVersion < 4) {
    
                    mceInit.setup = function (ed) {
    
                        ed.onInit.add(function (ed, event) {
    
                            // focus
                            $(ed.getBody()).on('focus', function () {
    
                                acf.validation.remove_error($field);
    
                            });
    
                            $(ed.getBody()).on('blur', function () {
    
                                // update the hidden textarea
                                // - This fixes a bug when adding a taxonomy term as the form is not posted and the hidden textarea is never populated!
    
                                // save to textarea
                                ed.save();
    
                                // trigger change on textarea
                                $field.find('textarea').trigger('change');
    
                            });
    
                        });
    
                    };
    
                } else {
    
                    mceInit.setup = function (ed) {
    
                        ed.on('focus', function (e) {
    
                            acf.validation.remove_error($field);
    
                        });
    
                        ed.on('blur', function (e) {
    
                            // update the hidden textarea
                            // - This fixes a but when adding a taxonomy term as the form is not posted and the hidden textarea is never populated!
    
                            // save to textarea
                            ed.save();
    
                            // trigger change on textarea
                            $field.find('textarea').trigger('change');
    
                        });
    
                    };
    
                }
    
                // hook for 3rd party customization
                mceInit = acf.apply_filters('wysiwyg_tinymce_settings', mceInit, mceInit.id);
    
                // return
                return mceInit;
    
            },
    
            get_qtInit: function () {
    
                // vars
                var qtInit = $.extend({}, tinyMCEPreInit.qtInit.acf_content);
    
                // id
                qtInit.id = this.settings.id;
    
                // hook for 3rd party customization
                qtInit = acf.apply_filters('wysiwyg_quicktags_settings', qtInit, qtInit.id);
    
                // return
                return qtInit;
    
            },
    
            /*
             *  disable
             *
             *  This function will disable the tinymce for a given field
             *  Note: txtarea_el is different from $textarea.val() and is the value that you see, not the value that you save.
             *        this allows text like <--more--> to wok instead of showing as an image when the tinymce is removed
             *
             *  @type	function
             *  @date	1/08/2014
             *  @since	5.0.0
             *
             *  @param	n/a
             *  @return	n/a
             */
    
            disable: function () {
    
                try {
    
                    // vars
                    var ed = tinyMCE.get(this.settings.id),
                        txtarea_el = tinyMCE.DOM.get(this.settings.id);
                    val = txtarea_el.value;
    
                    // destory
                    ed.destroy();
    
                    // update value
                    if (this.$field.find('.wp-editor-wrap').hasClass('html-active')) {
    
                        txtarea_el.value = val;
    
                    }
    
                } catch (e) {
                }
    
            },
    
            enable: function () {
    
                // bail early if html mode
                if (this.$field.find('.wp-editor-wrap').hasClass('html-active')) {
    
                    return;
    
                }
    
                try {
    
                    tinyMCE.init(tinyMCEPreInit.mceInit[this.settings.id]);
    
                } catch (e) {
                }
    
            },
    
            get_toolbar: function (name) {
    
                // bail early if toolbar doesn't exist
                if (typeof this.toolbars[name] !== 'undefined') {
    
                    return this.toolbars[name];
    
                }
    
                // return
                return false;
    
            },
    
            /*
             *  _buttonsInit
             *
             *  This function will add the quicktags HTML to a WYSIWYG field. Normaly, this is added via quicktags on document ready,
             *  however, there is no support for 'append'. Source: wp-includes/js/quicktags.js:245
             *
             *  @type	function
             *  @date	1/08/2014
             *  @since	5.0.0
             *
             *  @param	ed (object) quicktag object
             *  @return	n/a
             */
    
            _buttonsInit: function (ed) {
                var defaults = ',strong,em,link,block,del,ins,img,ul,ol,li,code,more,close,';
    
                canvas = ed.canvas;
                name = ed.name;
                settings = ed.settings;
                html = '';
                theButtons = {};
                use = '';
    
                // set buttons
                if (settings.buttons) {
                    use = ',' + settings.buttons + ',';
                }
    
                for (i in edButtons) {
                    if (!edButtons[i]) {
                        continue;
                    }
    
                    id = edButtons[i].id;
                    if (use && defaults.indexOf(',' + id + ',') !== -1 && use.indexOf(',' + id + ',') === -1) {
                        continue;
                    }
    
                    if (!edButtons[i].instance || edButtons[i].instance === inst) {
                        theButtons[id] = edButtons[i];
    
                        if (edButtons[i].html) {
                            html += edButtons[i].html(name + '_');
                        }
                    }
                }
    
                if (use && use.indexOf(',fullscreen,') !== -1) {
                    theButtons.fullscreen = new qt.FullscreenButton();
                    html += theButtons.fullscreen.html(name + '_');
                }
    
                if ('rtl' === document.getElementsByTagName('html')[0].dir) {
                    theButtons.textdirection = new qt.TextDirectionButton();
                    html += theButtons.textdirection.html(name + '_');
                }
    
                ed.toolbar.innerHTML = html;
                ed.theButtons = theButtons;
    
            },
    
        });
    
    })(jQuery);

    I will appreciate if somebody will help;)
    Thanks.
    Paul.

  • The topic ‘acf-qtranslate console error’ is closed to new replies.