Jump to content

mentioning multiple people

myselfolli

@colonel_mortis Same thing happened.

 

Text:

Spoiler

This is a browser feature intended for developers. Do not paste any code here given to you by someone else. It may compromise your account or have other negative side effects. root_library.js.a7ab53e221279575f283c625c080d7d1.js:15:824
(EMBED): Origin in loader is https://linustechtips.com commonEmbedHandler.js:50:4
(EMBED): Starting timeout... commonEmbedHandler.js:50:4
(EMBED): Called ready commonEmbedHandler.js:50:4
(EMBED): Called responsiveState commonEmbedHandler.js:50:4

( function() {
        var getPrivate = function( obj ) {
                var _ = ( obj.getPrivate && obj.getPrivate() ) || obj._ || ( obj._ = {} );
                return _.events || ( _.events = {} );
            };
        var eventEntry = function( eventName ) {
                this.name = eventName;
                this.listeners = [];
            };
        eventEntry.prototype = {
            getListenerIndex: function( listenerFunction ) {
                for ( var i = 0, listeners = this.listeners; i < listeners.length; i++ ) {
                    if ( listeners[ i ].fn == listenerFunction )
                        return i;
                }
                return -1;
            }
        };
        function getEntry( name ) {
            var events = getPrivate( this );
            return events[ name ] || ( events[ name ] = new eventEntry( name ) );
        }
        Object.assign( CKEDITOR.event.prototype, {
            define: function( name, meta ) {
                var entry = getEntry.call( this, name );
                CKEDITOR.tools.extend( entry, meta, true );
            },
            on: function( eventName, listenerFunction, scopeObj, listenerData, priority ) {
                var me = this;
                function listenerFirer( editor, publisherData, stopFn, cancelFn ) {
                    var ev = {
                        name: eventName,
                        sender: this,
                        editor: editor,
                        data: publisherData,
                        listenerData: listenerData,
                        stop: stopFn,
                        cancel: cancelFn,
                        removeListener: removeListener
                    };

                    var ret = listenerFunction.call( scopeObj, ev );

                    return ret === false ? false : ev.data;
                }
                function removeListener() {
                    me.removeListener( eventName, listenerFunction );
                }
                var event = getEntry.call( this, eventName );
                if ( event.getListenerIndex( listenerFunction ) < 0 ) {
                    // Get the listeners.
                    var listeners = event.listeners;
                    // Fill the scope.
                    if ( !scopeObj )
                        scopeObj = this;
                    // Default the priority, if needed.
                    if ( isNaN( priority ) )
                        priority = 10;
                    listenerFirer.fn = listenerFunction;
                    listenerFirer.priority = priority;
                    // Search for the right position for this new listener, based on its
                    // priority.
                    for ( var i = listeners.length - 1; i >= 0; i-- ) {
                        // Find the item which should be before the new one.
                        if ( listeners[ i ].priority <= priority ) {
                            // Insert the listener in the array.
                            listeners.splice( i + 1, 0, listenerFirer );
                            return { removeListener: removeListener };
                        }
                    }
                    // If no position has been found (or zero length), put it in
                    // the front of list.
                    listeners.unshift( listenerFirer );
                }
                return { removeListener: removeListener };
            },
            once: function() {
                var args = Array.prototype.slice.call( arguments ),
                    fn = args[ 1 ];
                args[ 1 ] = function( evt ) {
                    evt.removeListener();
                    return fn.apply( this, arguments );
                };
                return this.on.apply( this, args );
            },
            capture: function() {
                CKEDITOR.event.useCapture = 1;
                var retval = this.on.apply( this, arguments );
                CKEDITOR.event.useCapture = 0;
                return retval;
            },
            fire: ( function() {
                // Create the function that marks the event as stopped.
                var stopped = 0;
                var stopEvent = function() {
                        stopped = 1;
                    };
                // Create the function that marks the event as canceled.
                var canceled = 0;
                var cancelEvent = function() {
                        canceled = 1;
                    };
                return function( eventName, data, editor ) {
                    // Get the event entry.
                    var event = getPrivate( this )[ eventName ];
                    // Save the previous stopped and cancelled states. We may
                    // be nesting fire() calls.
                    var previousStopped = stopped,
                        previousCancelled = canceled;
                    // Reset the stopped and canceled flags.
                    stopped = canceled = 0;
                    if ( event ) {
                        var listeners = event.listeners;
                        if ( listeners.length ) {
                            // As some listeners may remove themselves from the
                            // event, the original array length is dinamic. So,
                            // let's make a copy of all listeners, so we are
                            // sure we'll call all of them.
                            listeners = listeners.slice( 0 );
                            var retData;
                            // Loop through all listeners.
                            for ( var i = 0; i < listeners.length; i++ ) {
                                // Call the listener, passing the event data.
                                if ( event.errorProof ) {
                                    try {
                                        retData = listeners[ i ].call( this, editor, data, stopEvent, cancelEvent );
                                    } catch ( er ) {}
                                } else {
                                    retData = listeners[ i ].call( this, editor, data, stopEvent, cancelEvent );
                                }
                                if ( retData === false )
                                    canceled = 1;
                                else if ( typeof retData != 'undefined' )
                                    data = retData;
                                // No further calls is stopped or canceled.
                                if ( stopped || canceled )
                                    break;
                            }
                        }
                    }
                    var ret = canceled ? false : ( typeof data == 'undefined' ? true : data );
                    // Restore the previous stopped and canceled states.
                    stopped = previousStopped;
                    canceled = previousCancelled;
                    return ret;
                };
            } )(),
            fireOnce: function( eventName, data, editor ) {
                var ret = this.fire( eventName, data, editor );
                delete getPrivate( this )[ eventName ];
                return ret;
            },
            removeListener: function( eventName, listenerFunction ) {
                // Get the event entry.
                var event = getPrivate( this )[ eventName ];
                if ( event ) {
                    var index = event.getListenerIndex( listenerFunction );
                    if ( index >= 0 )
                        event.listeners.splice( index, 1 );
                }
            },
            removeAllListeners: function() {
                var events = getPrivate( this );
                for ( var i in events )
                    delete events[ i ];
            },
            hasListeners: function( eventName ) {
                var event = getPrivate( this )[ eventName ];
                return ( event && event.listeners.length > 0 );
            }
        } );
    } )();
undefined
Assertion failed: Input argument is not an HTMLInputElement onloadwff.js:71:850453
TypeError: l is undefined[Learn More]
ckeditor.js:10:47
TypeError: l is undefined[Learn More]
ckeditor.js:10:47
TypeError: l is undefined[Learn More] ckeditor.js:10:47

2

(Kept in the code part just in case)

 

Screenshot:

Spoiler

firefox_GChmFA5FYO.png.366807f2923344636945968836878774.png

 

 

I double checked it since it broke pretty quickly and, it worked better the second time but, it still broke the same way.

Make sure to quote or tag people, so they get notified.

Link to comment
Share on other sites

Link to post
Share on other sites

Oh, the editor does some weird stuff apparently, which is why that code isn't being applied (it was still using the old code). I believe this should actually be used:

( function() {
		var getPrivate = function( obj ) {
				var _ = ( obj.getPrivate && obj.getPrivate() ) || obj._ || ( obj._ = {} );
				return _.events || ( _.events = {} );
			};
		var eventEntry = function( eventName ) {
				this.name = eventName;
				this.listeners = [];
			};
		eventEntry.prototype = {
			getListenerIndex: function( listenerFunction ) {
				for ( var i = 0, listeners = this.listeners; i < listeners.length; i++ ) {
					if ( listeners[ i ].fn == listenerFunction )
						return i;
				}
				return -1;
			}
		};
		function getEntry( name ) {
			var events = getPrivate( this );
			return events[ name ] || ( events[ name ] = new eventEntry( name ) );
		}
		Object.assign( CKEDITOR.instances.topic_comment_1046001, {
			on: function( eventName, listenerFunction, scopeObj, listenerData, priority ) {
				var me = this;
				function listenerFirer( editor, publisherData, stopFn, cancelFn ) {
					var ev = {
						name: eventName,
						sender: this,
						editor: editor,
						data: publisherData,
						listenerData: listenerData,
						stop: stopFn,
						cancel: cancelFn,
						removeListener: removeListener
					};

					var ret = listenerFunction.call( scopeObj, ev );

					return ret === false ? false : ev.data;
				}
				function removeListener() {
					me.removeListener( eventName, listenerFunction );
				}
				var event = getEntry.call( this, eventName );
				if ( event.getListenerIndex( listenerFunction ) < 0 ) {
					// Get the listeners.
					var listeners = event.listeners;
					// Fill the scope.
					if ( !scopeObj )
						scopeObj = this;
					// Default the priority, if needed.
					if ( isNaN( priority ) )
						priority = 10;
					listenerFirer.fn = listenerFunction;
					listenerFirer.priority = priority;
					// Search for the right position for this new listener, based on its
					// priority.
					for ( var i = listeners.length - 1; i >= 0; i-- ) {
						// Find the item which should be before the new one.
						if ( listeners[ i ].priority <= priority ) {
							// Insert the listener in the array.
							listeners.splice( i + 1, 0, listenerFirer );
							return { removeListener: removeListener };
						}
					}
					// If no position has been found (or zero length), put it in
					// the front of list.
					listeners.unshift( listenerFirer );
				}
				return { removeListener: removeListener };
			}
		} );
	} )();

 

Edited by colonel_mortis

HTTP/2 203

Link to comment
Share on other sites

Link to post
Share on other sites

@colonel_mortis Nope, when I insert the code it immediately gives out an error.

 

Text:

Spoiler
This is a browser feature intended for developers. Do not paste any code here given to you by someone else. It may compromise your account or have other negative side effects. root_library.js.a7ab53e221279575f283c625c080d7d1.js:15:824
Request to access cookie or storage on “https://z-na.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&Operation=GetScript&ID=OneJS&WS=1” was blocked because it came from a tracker and content blocking is enabled. 1046001-mentioning-multiple-people
( function() { var getPrivate = function( obj ) { var _ = ( obj.getPrivate && obj.getPrivate() ) || obj._ || ( obj._ = {} ); return _.events || ( _.events = {} ); }; var eventEntry = function( eventName ) { this.name = eventName; this.listeners = []; }; eventEntry.prototype = { getListenerIndex: function( listenerFunction ) { for ( var i = 0, listeners = this.listeners; i < listeners.length; i++ ) { if ( listeners[ i ].fn == listenerFunction ) return i; } return -1; } }; function getEntry( name ) { var events = getPrivate( this ); return events[ name ] || ( events[ name ] = new eventEntry( name ) ); } Object.assign( CKEDITOR.instances.topic_comment_1046150, { on: function( eventName, listenerFunction, scopeObj, listenerData, priority ) { var me = this; function listenerFirer( editor, publisherData, stopFn, cancelFn ) { var ev = { name: eventName, sender: this, editor: editor, data: publisherData, listenerData: listenerData, stop: stopFn, cancel: cancelFn, removeListener: removeListener }; var ret = listenerFunction.call( scopeObj, ev ); return ret === false ? false : ev.data; } function removeListener() { me.removeListener( eventName, listenerFunction ); } var event = getEntry.call( this, eventName ); if ( event.getListenerIndex( listenerFunction ) < 0 ) { // Get the listeners. var listeners = event.listeners; // Fill the scope. if ( !scopeObj ) scopeObj = this; // Default the priority, if needed. if ( isNaN( priority ) ) priority = 10; listenerFirer.fn = listenerFunction; listenerFirer.priority = priority; // Search for the right position for this new listener, based on its // priority. for ( var i = listeners.length - 1; i >= 0; i-- ) { // Find the item which should be before the new one. if ( listeners[ i ].priority <= priority ) { // Insert the listener in the array. listeners.splice( i + 1, 0, listenerFirer ); return { removeListener: removeListener }; } } // If no position has been found (or zero length), put it in // the front of list. listeners.unshift( listenerFirer ); } return { removeListener: removeListener }; } } ); } )();
 
TypeError: can't convert undefined to object debugger eval code:23:3
Request to access cookie or storage on “https://pbs.twimg.com/profile_images/705216964705259524/V_cjHoyM_normal.jpg” was blocked because it came from a tracker and content blocking is enabled. 1046001-mentioning-multiple-people
Assertion failed: Input argument is not an HTMLInputElement onloadwff.js:71:850453
 

TypeError: l is undefined[Learn More]

 

TypeError: l is undefined[Learn More] ckeditor.js:10:47

 

 

 Screenshot:

Spoiler

First attempt:

firefox_THKDijTcOU.png.44387ae5dcc0fb78ab423c3e6bdf0994.png

 

Second attempt:

firefox_NFIWHmxAlQ.png.b8f505c2d68b438c1076dcfd86bc026f.png

 

 

Make sure to quote or tag people, so they get notified.

Link to comment
Share on other sites

Link to post
Share on other sites

1 minute ago, Cyberspirit said:

@colonel_mortis Nope, when I insert the code it immediately gives out an error.

 

Text:

  Reveal hidden contents
 

 

 Screenshot:

 

I knew that would happen, and still forgot to fix it... I've updated the code, try it again now. It will only fix the editor in this topic, not any other topics.

HTTP/2 203

Link to comment
Share on other sites

Link to post
Share on other sites

@colonel_mortis *Knocks on wood* That seems to have done it. It works perfectly fine with that code.

 

Text:

Spoiler
This is a browser feature intended for developers. Do not paste any code here given to you by someone else. It may compromise your account or have other negative side effects. root_library.js.a7ab53e221279575f283c625c080d7d1.js:15:824
( function() { var getPrivate = function( obj ) { var _ = ( obj.getPrivate && obj.getPrivate() ) || obj._ || ( obj._ = {} ); return _.events || ( _.events = {} ); }; var eventEntry = function( eventName ) { this.name = eventName; this.listeners = []; }; eventEntry.prototype = { getListenerIndex: function( listenerFunction ) { for ( var i = 0, listeners = this.listeners; i < listeners.length; i++ ) { if ( listeners[ i ].fn == listenerFunction ) return i; } return -1; } }; function getEntry( name ) { var events = getPrivate( this ); return events[ name ] || ( events[ name ] = new eventEntry( name ) ); } Object.assign( CKEDITOR.instances.topic_comment_1046001, { on: function( eventName, listenerFunction, scopeObj, listenerData, priority ) { var me = this; function listenerFirer( editor, publisherData, stopFn, cancelFn ) { var ev = { name: eventName, sender: this, editor: editor, data: publisherData, listenerData: listenerData, stop: stopFn, cancel: cancelFn, removeListener: removeListener }; var ret = listenerFunction.call( scopeObj, ev ); return ret === false ? false : ev.data; } function removeListener() { me.removeListener( eventName, listenerFunction ); } var event = getEntry.call( this, eventName ); if ( event.getListenerIndex( listenerFunction ) < 0 ) { // Get the listeners. var listeners = event.listeners; // Fill the scope. if ( !scopeObj ) scopeObj = this; // Default the priority, if needed. if ( isNaN( priority ) ) priority = 10; listenerFirer.fn = listenerFunction; listenerFirer.priority = priority; // Search for the right position for this new listener, based on its // priority. for ( var i = listeners.length - 1; i >= 0; i-- ) { // Find the item which should be before the new one. if ( listeners[ i ].priority <= priority ) { // Insert the listener in the array. listeners.splice( i + 1, 0, listenerFirer ); return { removeListener: removeListener }; } } // If no position has been found (or zero length), put it in // the front of list. listeners.unshift( listenerFirer ); } return { removeListener: removeListener }; } } ); } )();
undefined
Request to access cookie or storage on “https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png” was blocked because it came from a tracker and content blocking is enabled. 1046001-mentioning-multiple-people
Request to access cookie or storage on “https://pbs.twimg.com/profile_images/759389555648704516/saOptTt6_normal.jpg” was blocked because it came from a tracker and content blocking is enabled. 1046001-mentioning-multiple-people
Request to access cookie or storage on “https://graph.facebook.com/10155175565774056/picture?type=square&height=240” was blocked because it came from a tracker and content blocking is enabled. 1046001-mentioning-multiple-people
Request to access cookie or storage on “https://graph.facebook.com/701333918/picture?type=square&height=240” was blocked because it came from a tracker and content blocking is enabled. 1046001-mentioning-multiple-people
Request to access cookie or storage on “https://graph.facebook.com/1302217069886009/picture?type=square&height=240” was blocked because it came from a tracker and content blocking is enabled. 1046001-mentioning-multiple-people
Request to access cookie or storage on “https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png” was blocked because it came from a tracker and content blocking is enabled. 1046001-mentioning-multiple-people
 

Just a bunch of cookie stuff.

 

Spoiler

firefox_7DOLqjuIlo.png.749839fb330b9f1a7225367e7a6c6ce7.png

 

 

 

Make sure to quote or tag people, so they get notified.

Link to comment
Share on other sites

Link to post
Share on other sites

4 minutes ago, Cyberspirit said:

@colonel_mortis *Knocks on wood* That seems to have done it. It works perfectly fine with that code.

 

Text:

  Reveal hidden contents
 

Just a bunch of cookie stuff.

 

  Hide contents

firefox_7DOLqjuIlo.png.749839fb330b9f1a7225367e7a6c6ce7.png

 

 

 

Perfect. Thanks for putting up with the previous errors!

I've applied the fix to this site now, though because of the way it's been changed it is possible for it to be overwritten at some point in the future (so it might break again).

HTTP/2 203

Link to comment
Share on other sites

Link to post
Share on other sites

this issue's been on the forum since ipb4 upgrade, i really thought someone had mentioned this bug before this thread. 

 

Spoiler
Spoiler

AMD 5000 Series Ryzen 7 5800X| MSI MAG X570 Tomahawk WiFi | G.SKILL Trident Z RGB 32GB (2 * 16GB) DDR4 3200MHz CL16-18-18-38 | Asus GeForce GTX 3080Ti STRIX | SAMSUNG 980 PRO 500GB PCIe NVMe Gen4 SSD M.2 + Samsung 970 EVO Plus 1TB PCIe NVMe M.2 (2280) Gen3 | Cooler Master V850 Gold V2 Modular | Corsair iCUE H115i RGB Pro XT | Cooler Master Box MB511 | ASUS TUF Gaming VG259Q Gaming Monitor 144Hz, 1ms, IPS, G-Sync | Logitech G 304 Lightspeed | Logitech G213 Gaming Keyboard |

PCPartPicker 

Link to comment
Share on other sites

Link to post
Share on other sites

3 minutes ago, Rohith_Kumar_Sp said:

this issue's been on the forum since ipb4 upgrade, i really thought someone had mentioned this bug before this thread. 

It has been mentioned a few times, and fixes have been applied whenever I've been able to make progress. This time, the bug existed in the editor rather than the forum software, which made it more elusive.

 

If people are still having issues now that the fix has been applied, please let me know!

HTTP/2 203

Link to comment
Share on other sites

Link to post
Share on other sites

  • 1 month later...
2 hours ago, colonel_mortis said:

Has anyone had this issue since 20th March, or has the fix worked completely?

@myselfolli @Cyberspirit @Bananasplit_00

I haven't tried mentioning loads of people since then, only switched mobile browsers which broke stuff cuz FF android

I spent $2500 on building my PC and all i do with it is play no games atm & watch anime at 1080p(finally) watch YT and write essays...  nothing, it just sits there collecting dust...

Builds:

The Toaster Project! Northern Bee!

 

The original LAN PC build log! (Old, dead and replaced by The Toaster Project & 5.0)

Spoiler

"Here is some advice that might have gotten lost somewhere along the way in your life. 

 

#1. Treat others as you would like to be treated.

#2. It's best to keep your mouth shut; and appear to be stupid, rather than open it and remove all doubt.

#3. There is nothing "wrong" with being wrong. Learning from a mistake can be more valuable than not making one in the first place.

 

Follow these simple rules in life, and I promise you, things magically get easier. " - MageTank 31-10-2016

 

 

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×