-
Posts
70,143 -
Joined
-
Last visited
-
Days Won
649
Content Type
Downloads
Release Notes
IPS4 Guides
IPS4 Developer Documentation
Invision Community Blog
Development Blog
Deprecation Tracker
Providers Directory
Projects
Release Notes v5
Invision Community 5 Bug Tracker
Forums
Events
Store
Gallery
Everything posted by Matt
-
Yes, there's a lot we would love to do, but a tear down and re-write isn't something we have the luxury of time for, so we will need to keep using the "long-ass" methods for now.
-
The first blog is out now: Keep in mind that it's a 10,000 foot overview, there's much more detail to follow in subsequent blogs.
-
When planning Invision Community 5, we knew we had a unique opportunity to hit the reset button. It's hard to believe, but how we work with the framework has been the same since 2013. The priorities we held a decade ago no longer align with our current vision. The landscape of modern frameworks has evolved, and we have adapted accordingly. When we initially designed the Invision Community 4 framework all those years ago, our goal was to create an open development platform. We aimed to empower you with the ability to extend virtually every function we built, granting complete freedom to shape our UI, workflows, and functionality according to your needs. However, over the decade, we have realised that this freedom has inadvertently become a prison. While monkey patching allowed the overloading of any method we had written, it came at a significant cost. Even the slightest change to our original method signatures could break an entire community, forcing you to update your applications. Ironically, the more we strived to enhance our framework, the less stable your applications became. We dismissed requests for proper workflows like extensions, webhooks, and event listeners, urging you to rely solely on method overloading, often having to copy chunks of code just to add a few lines of your own. Invision Community 5 represents a much-needed reset. It is a moment to reassess everything we know about extending frameworks and construct definitive pathways and workflows that serve you better. Our aim is for you to continue crafting exceptional applications that bring fresh functionality to the Invision Community while protecting the integrity of our core functionality. Change can be intimidating, but let us embrace this opportunity to bid farewell to outdated and fragile tools and pave the way for a collaborative future with precision-designed resources instead. In the coming weeks, we will delve deeply into the new development tools offered by Invision Community 5, but today, I wanted to give you a brief overview of what's to come for code development. We will do a near-future entry on creating themes with Invision Community 5. Out with the old Monkey patching via code hooks was the primary way to add functionality to Invision Community. However, it meant that we could not update our code base without risking breaking many popular applications, a situation that will only get worse as PHP starts to lock down type hinting and casting. Furthermore, IDEs have a tough time working out relationships between classes requiring special tools to create alias files to allow full use of many advanced tools of PHPStorm and other editors. Finally, monkey patching relied on heavy use of eval() which is not a very efficient PHP method. Monkey patching has been removed in Invision Community 5. Your IDE with Invision Community 4. Your IDE with Invision Community 5. Template hooks, as you know them, have also been removed. I only mention this now as they often go hand-in-hand with code hooks to add items to menus, data-attributes to blocks and CSS classes to many areas. We will do a more thorough blog on theme editing soon, but we still retain a way to hook into key areas. In with the new We will write a series of developer blogs to look in more detail at the new systems, but here is a quick overview of the new tools and a brief description of what they are capable of. Content Menus We have removed much of the menu logic for content items and comments from templates and created a simple, extensible way to add links to commonly used menus, such as the item moderation menu and the per-post 'three dots' menu. You no longer need a template hook to perform such a basic task. UIExtension This framework provides you with an easy way to add CSS, data-attributes and even templated HTML into specific areas within nodes and content items/comments. A common reason to create template hooks was to tweak the CSS classes or add data-attributes for client-side scripting. In the same way that we've stripped menus out of templates, we've removed the content item badges (pinned, hidden, etc.) and into the UIExtension making it easy to add your own badges to this area without the need for template or code hooks. Finally, UIExtension can add form fields into Invision Community content forms. Event Listeners The easiest way to describe this is like MemberSync but for content (items and comments), members, Commerce invoices and Commerce packages. Do you need to run your code each time a forum post is made? Not a problem. Do you need to run your code when a topic is locked? Perhaps when an item is viewed? All this and more is possible via the new listeners. The advantage is that you don't need to copy chunks of our code when overloading a single method in a hook. You write your clean code in an object-specific listener. What else? We have also undertaken a long overdue code clean-up. Every single file has been updated to update return types and function signature types and to use aliases instead of fully qualified names (for example, new Url() instead of new \IPS\Http\Url()). Many methods have been removed from the Content classes and moved into traits. Likewise, many interfaces are now traits to reuse code properly, reducing the behemoth-sized classes. Elsewhere, all the search indexing logic that was entwined in content and node classes has now been moved to the extension system, further reducing the noise and volume of key classes. A Quick Recap Generic broad reaching tools such as monkey patching and template overloading have been removed. New precision tools with a specific use-case have been created. There are less opportunities to overwrite and change our UI and functionality but easier ways to extend and create new functionality. The future We have worked hard on these development tools to ensure that most of what you do now can be achieved in Invision Community 5. We have had input from various stakeholders, including those who regularly create modifications for Invision Community to ensure our new tools are fit for purpose. Through the alpha and beta testing phase, we want your feedback, and we will listen to your suggestions. We cannot promise that you can do everything with Invision Community 5 that you currently do, which is intentional, but we are confident that you can still hit all the major beats. We want to protect our UI and functionality a little more but encourage you to build amazing new functionality to work alongside Invision Community 5. Together, we will shape the next era of Invision Community.
-
We love updating things because Elon got bored.
-
Keep an eye out for the UIExtension news coming soon for form fields.
-
All excellent points. Let me run through them. 1) Agree, that restriction will be lifted in 5. 2) I'll check to see if we have an easier solution for this in 5. 3) Easier in v5. 4) Easier in v5. 5) Will check to see if we have a solution for this in 5. 6) Fixed in v5.
-
Has v5 been released and no one told me ? 😀 We have built new tools but will listen to feedback and there is plenty of time to tweak and adjust.
-
Code clean up ✅ Import over FQN ✅ Better use of traits ✅ Search code clean up ✅ Happy PHPStorm without hacks/class_alias ✅ More recent PHP versions needed ✅ Better use of newer PHP functions ✅ More to follow, but I think you’ll be content with the changes to be announced.
-
Hi all, Next week we plan on releasing a few blogs outlining what development looks like for Invision Community v5. I was curious as to what changes you'd like to see, and what changes do you think are coming?
-
I think a lot of what you need can be done with Pages Databases.
-
Happy to listen if you have specific features you want to discuss?
-
Hmm to fix the bug or change the translations to "anonymous-ish"? 🤔
-
GTM sits above Google Analytics, it handles passing the data to it. https://www.analyticsmania.com/post/what-is-data-layer-in-google-tag-manager/
-
You also use an analytics provider such as Google Analytics and our powerful data-layer management to track what your members do on your community.
-
Twitter's Mid-Life Crisis and the IPS Promotions Feature
Matt replied to Dreadknux's topic in Technical Problems
I think you're relatively safe with Google and Apple. I rarely see FB and Twitter sign-in buttons anymore. -
Twitter's Mid-Life Crisis and the IPS Promotions Feature
Matt replied to Dreadknux's topic in Technical Problems
We're keeping that as you can still use the 'internal' method but we'll be reviewing all our promotion tools to make sense of them as we have a few ways now (pinned, featured, promoted, etc). -
Twitter's Mid-Life Crisis and the IPS Promotions Feature
Matt replied to Dreadknux's topic in Technical Problems
We've removed the promotion tools in v5. With Meta increasing the barrier to get approved and Twitter falling apart, it doesn't make sense to keep it. There are various low-cost promotion tools such as Buffer (free tier) to manually post to social media, or you can connect via Zapier to post to social media. -
Delete member button from member's list should ask what to do with data
Matt replied to Gabriel Torres's topic in Feedback
It's worth checking your browser's dev tools > console to see if anything is preventing JS from running. -
Almost all functionality will be available to those with active licenses, certainly more than enough to combat the surge we've seen. We may add a little more algorithm-crunching stuff for cloud given access to AWS computing power and more room to swallow additional costs given cloud pricing. It's very much in progress, so we'll have news when everything has been completed.
-
The project is well underway. Not firm ETA, but it's coming to v4, so you won't need to wait for v5.
-
I'd like to say more but we really want to present the entire package so it all makes sense. I also want to say that while I often talk about the new stuff we do, it's the product of a very hard working team. We have had input from multiple stakeholders, including those who use the v4 dev tools daily, when designing the new development tools.
-
We continue to offer major upgrades to active license holders. We do not require a purchase of a new license. Better.
-
You had a great view to watch Dan Butler's penalty zoom over the stadium.
-
PHP 8.1 (8.2 compatible) will be the version minimum. You won't need to re-learn everything, it's not a complete rewrite. Some things to keep in mind: We import namespaces so we no longer use fully qualified names. What does this mean? Old: namespace IPS\foo class foo { function _construct() { if ( \IPS\Member::i()->isAdmin() ) { $this->bar = \IPS\Request::i()->input; } } } New: namespace IPS\foo use IPS\Member; use IPS\Request; class foo { function _construct() { if ( Member::i()->isAdmin() ) { $this->bar = Request::i()->input; } } } You *could* use FQN but we no longer do that. The result is a lot neater. We have also moved most Content interfaces into traits (where it makes sense) and we've introduced a few new dev tools which we'll speak about very soon. So it's really about cleaning up existing code and moving existing hooks, etc into the new dev tools. You're not starting from scratch again. I'll be working on some new dev blogs to go through all the changes in a bit more detail hopefully later this month.