Everything posted by G17 Media
-
CustomField extensions don't work correctly with CMS databases
1) Create new CustomField extension 2) Go to CMS database fields 3) Go to add field, your custom type will be shown from the available field types dropdown 4) After adding your field, it will not show in the field list 5) Going manually to the edit field page with the field id edited in the URL will say: The custom field type YourFieldName does not exist, please select a valid field type.
-
Custom Editor Extension: JS error on 2nd editor instance
Hello, we have a really basic extension for our own, more advanced canned responses: var obj = { restrictions: [""], addButtons() { return { test1: { /*isAvailable: editor => editor.options.restrictions.has('ipsCustomExtension__g17editorcannedresponse__'), isActive: editor => editor.options.restrictions.has('ipsCustomExtension__g17editorcannedresponse__'),*/ html: '<span><i class="fa-solid fa-message"></i></span>', command: function (editor) { Debug.log(editor); var url = ips.getSetting('baseURL') + '?app=g17mediaaddons&module=cannedresponse&do=editor&editorId=' + editor.editor.options.name; var title = "Canned Response"; this.storage.dialog = ips.ui.dialog.create({ title: title, fixed: false, url: url, forceReload: true, remoteSubmit: false, remoteVerify: false }); this.storage.dialog.show(); }, // This puts the button before bold, after the 'link' button, inside the `...` menu and at the end of the toolbar locations: [null], } } }, }; ips.ui.editorv5.registerExtension('g17editorcannedresponse', obj);This works absolutely fine, adds the button, and opens the dialog mentioned when clicked. There's later logic for the dialog to then insert content into the editor externally, but that's beyond the scope here. However, if a second instance of the editor is booted on the page (like hitting Edit on a multi-post topic after playing with the editor at the bottom of the page), you cannot edit the text, the editor will briefly show, then disappear with the following JS error: main-R_MZN_ry.js?v=6701dc1d9f1739874311:40 TypeError: Cannot destructure property 'command' of 'r.options.ipsPlugins.buttons[e]' as it is undefined. at J6 (main-R_MZN_ry.js?v=6701dc1d9f1739874311:200:87924) at zT (main-R_MZN_ry.js?v=6701dc1d9f1739874311:38:17029) at eD (main-R_MZN_ry.js?v=6701dc1d9f1739874311:40:44058) at Xw (main-R_MZN_ry.js?v=6701dc1d9f1739874311:40:39790) at nH (main-R_MZN_ry.js?v=6701dc1d9f1739874311:40:39718) at $_ (main-R_MZN_ry.js?v=6701dc1d9f1739874311:40:39570) at pS (main-R_MZN_ry.js?v=6701dc1d9f1739874311:40:35934) at Kw (main-R_MZN_ry.js?v=6701dc1d9f1739874311:40:34883) at I (main-R_MZN_ry.js?v=6701dc1d9f1739874311:25:1569) at MessagePort.de (main-R_MZN_ry.js?v=6701dc1d9f1739874311:25:1938) eS @ main-R_MZN_ry.js?v=6701dc1d9f1739874311:40 n.callback @ main-R_MZN_ry.js?v=6701dc1d9f1739874311:40 UN @ main-R_MZN_ry.js?v=6701dc1d9f1739874311:38 JN @ main-R_MZN_ry.js?v=6701dc1d9f1739874311:40 qw @ main-R_MZN_ry.js?v=6701dc1d9f1739874311:40 JY @ main-R_MZN_ry.js?v=6701dc1d9f1739874311:40 iH @ main-R_MZN_ry.js?v=6701dc1d9f1739874311:40 As @ main-R_MZN_ry.js?v=6701dc1d9f1739874311:40 Kw @ main-R_MZN_ry.js?v=6701dc1d9f1739874311:40 I @ main-R_MZN_ry.js?v=6701dc1d9f1739874311:25 de @ main-R_MZN_ry.js?v=6701dc1d9f1739874311:25 main-R_MZN_ry.js?v=6701dc1d9f1739874311:200 Uncaught TypeError: Cannot destructure property 'command' of 'r.options.ipsPlugins.buttons[e]' as it is undefined. at J6 (main-R_MZN_ry.js?v=6701dc1d9f1739874311:200:87924) at zT (main-R_MZN_ry.js?v=6701dc1d9f1739874311:38:17029) at eD (main-R_MZN_ry.js?v=6701dc1d9f1739874311:40:44058) at Xw (main-R_MZN_ry.js?v=6701dc1d9f1739874311:40:39790) at nH (main-R_MZN_ry.js?v=6701dc1d9f1739874311:40:39718) at $_ (main-R_MZN_ry.js?v=6701dc1d9f1739874311:40:39570) at pS (main-R_MZN_ry.js?v=6701dc1d9f1739874311:40:35934) at Kw (main-R_MZN_ry.js?v=6701dc1d9f1739874311:40:34883) at I (main-R_MZN_ry.js?v=6701dc1d9f1739874311:25:1569) at MessagePort.de (main-R_MZN_ry.js?v=6701dc1d9f1739874311:25:1938) I thought of reporting this one as it should be easy to reproduce (it doesn't require any of the other parts working to reproduce). I'm not sure if it affects all third-party extensions or whether this is a fault of me using the not currently hugely documented editor extension system.
-
Is "Allowed CSS classes" Available on IPS5?
It’s available as a development setting for an application. Developer Center > (your application) > Front-End > Parser Settings.
-
Key values to differentiate guests from logged-in
In an ideal world, all ad companies would provide you with tags that plug in nicely with IPS’ advertisement system. We have definitely had ad companies which have requested some on-page way of telling the difference between a logged in user or not for more dynamic ads and varying type of ads. I’ve found some of them do struggle on the concept of ‘just give me code for this case’ as they want to fully manage the page without giving us individual units.
-
Key values to differentiate guests from logged-in
Well it depends on how they want to do it. If they’re fine with JavaScript, a call to ips.getSetting('memberID')will return non zero if a user is logged in. Otherwise, you could use template logic to insert a psuedo hidden div.
-
Beta 11 is here (already!)
Am I right in thinking that editor restrictions right now are mostly client side? I've looked through the code and most of the restrictions seem client-sided, but there's obviously things I could be missing. If this is the case, is there any plans to verify these restrictions on the server side?
-
Merge Tags
G17 Media replied to SoloInter's post in a topic in Invision Community 5: Beta Testing's Beta Discussioniirc; we had to build custom functionality for this; the caches will not be automatically rebuilt, but are necessary.
-
Chrome crashes: STATUS_ACCESS_VIOLATION
G17 Media replied to Florent Cadet's post in a topic in Invision Community 5: Beta Testing's Beta DiscussionI had a similar issue on a beta/unstable Chromium build, the fix was, of course, using a stable Chrome version.
-
New deployment option for Invision Community Classic
IPS won't do this because their cloud system doesn't work like this. However, we actually locally maintain our own Docker "master image" which has all of our custom apps and tweaks to IPS - as well as custom written ability to automatically upgrade (e.g. automatic database and IPS formatted application upgrades) as well as automatically install for testing branches etc. It doesn't actually require any changes to IPS' core code (at least for v4 😆), so you can definitely hire a developer or work on doing the same in-house if you want a serviceable Docker image. IPS give us the software, it's up to us how we chose to install/deploy/configure it.
-
Will Invision Community 5 be the end for customisation of existing apps?
There are definitely customizations that were possible before that won't be possible in IPS 5 for third parties. Whilst I'm sure IPS will make their event listener and extension system quite extensive, there are definitely cases where it will not cover. Compare that to being able to edit any class and any template dynamically via hooking, the level of power for third party developers is definitely not as strong. However, I'm looking forward to seeing the capabilities of the new system.
-
BUG: Leaderboard: Pagination on Past Leaders broken
Using pagination on the leaderboard 'Past Leaders' tab doesn't work. You can reproduce on this community: https://invisioncommunity.com/pastleaders/ Try going to next page, or pick a page.
-
Invision Community v5: An update, and next steps
We're trying to plan whether to continue to use IPS or migrate to our own platform, so would love to have a look to evaluate.
-
Invision Community 5: The all-new editor
The alpha testing group probably mostly consists of those who are at least experts or well-versed in using web technology and quick learners. @13.'s suggestion is probably more aligned with how I see normal users using it.
-
What could cause broken QR code with google auth?
Google doesn't need to render the code. 2FA/TOTP QR code generation does not require data being sent to Google. There is not a need for IPS to be sending these codes to Google for rendering, it could be done locally. Google Authenticator is one app for 2FA/TOTP codes, but you can use other apps. Even Google Authenticator itself does not transmit/backup TOTP codes to Google unless you activate its optional backup function.
-
What could cause broken QR code with google auth?
Is 2FA data really being sent to Google for rendering? 😕
-
Issue with moderators seeing downloads pendingversion in approval queue
To replicate on any IPS community: Create File Moderator subgroup, add it to Moderators, give every File/Downloads permission (including hide/unhide). Post a file where approval is required. Note that the file appears in the approval queue for a user in that moderator group. Post an update to said file, where approval is required. Note that the file is not shown in the approval queue for this moderator group, nor can they actually approve the file. I've fixed this on my community so I don't need this to be fixed upstream - but this is a heads up for a bug in Invision Community.
-
Issue with moderators seeing downloads pendingversion in approval queue
Moderators with all Downloads permissions granted do not see pending versions in the approval queue. Is there a permission I'm not seeing for pending files versions?
-
Issue with moderators seeing downloads pendingversion in approval queue
We're experiencing an issue with moderators with only file permissions granted being unable to see pending versions in the approval queue. I looked into this and there's a check in ./applications/downloads/extensions/core/ContentRouter/Files.php:49 where PendingVersion is only inserted where \IPS\downloads\File::modPermission( 'unhide', $member ) is true. However, since no container is provided, this will only return true if the user has global content unhide permission.
-
Adding primary keys to all tables that are missing one?
That's a complete bizarre modification DigitalOcean have made to MySQL. There are definitely use cases for not using a primary ID in some tables. As @Marc Stridgen mentions it's not even needed for replication. We also use replication on our self-hosted infra without this need. Be aware that if you make any schema change, IPS will attempt to undo it every upgrade.
-
Buying new self hosted licence - how to choose few applications?
The conversion page mentions new terms, could you link to them on that page or here? I can't seem to find them.
-
How could the same user sign up for 4 accounts with the same username/ip?
Also seen this - it's rare enough we never reported, but certainly seems to happen.
-
Caching and views/hits increase
Did you ever get a chance to do this?
-
IPS lazyloading does not work on dynamically loaded HTML elements (paginated, ajax loaded, etc)
Bump - this is a big issue for forums which are image or embed heavy and go beyond 1 page. This would also benefit those Cloud customers to fix 😉
-
Missing option to support s3 Path Style, how to overcome it ?
The core of the issue I uncovered during testing was a failure in IPS' URL encoding and had nothing to do with Minio/Wasabi (although I am happy to be wrong -- works fine in our environment with a one line fix). The "scariest" feature IPS really uses is multipart file uploads, which work on pretty much any S3 compatible service I've used.
-
IPS lazyloading does not work on dynamically loaded HTML elements (paginated, ajax loaded, etc)
Hello, I've discovered a bug in how IPS' lazyloading works on dynamic elements. in ./dev/js/library/app.js, line 61, you define a hook/override for $.fn.html. This makes sure that if dynamically loaded HTML contains lazyload elgible content, you instate the lazyload handler on it. The problem seems to be instead of looping each lazyload element, ips.utils.lazyLoad.observe is called on the entire element. This then registers the IntersectionObserver on the entire element, causing each lazyloading element to be loaded straight away, defeating the point of the lazyload. The fix is to instead call ips.utils.lazyLoad.observe on each lazyload capable element, like it's done elsewhere in the suite. I have patched this locally, but thought it would be useful to share to the IPS developers. Happy new year!