Jump to content

Esther E.

Invision Community Team
  • Posts

    89
  • Joined

  • Last visited

  • Days Won

    2

 Content Type 

Downloads

Release Notes

IPS4 Guides

IPS4 Developer Documentation

Invision Community Blog

Development Blog

Deprecation Tracker

Providers Directory

Forums

Events

Store

Gallery

Everything posted by Esther E.

  1. Except that his specific approach actually is possible, literally with the same onPurchaseGenerated method.
  2. Listeners don't return any data at all. I'm not quite following the question, can you please clarify?
  3. It's slightly frustrating to see people over and over again insist that things aren't going to work because we won't have hooks, after we've gone through so much trouble to make sure that people can continue to do most of the things they currently do.
  4. Wrong listener. There is a listener for invoice items as well.
  5. By now you might be getting a little tired of hearing about our UI Extensions, but we still have a few more features to talk about. We showed you how to add CSS and data attributes to content. We discussed how to add form fields and menu items. In this final entry on this tool, we'll talk about working with Nodes. ACP Tools Nodes are different than the Items and Comments, as they are typically managed in the ACP and not on the front-end. Therefore, we needed additional extension methods to allow developers to handle custom actions. Let's take a look at Nodes in the ACP. There are a few areas where developers may need to insert custom logic. The UINode extension includes the following methods: rowButtons Returns an array of action buttons that will be added to the control strip on the right. This method functions identically to the Model::getButtons() method. rowHtml Inserts custom HTML to the left of the control strip. rowBadge If a badge should be displayed, return an array with the CSS class and language string. Note that anything defined in the base class get__badge() method will take precedence over your extension. No Entry It is important to note that not all Node classes support the form-related methods. We have of course added support for all content containers, such as Forums and Calendars. We will consider including support for other classes upon request, however, nodes that handle infrastructure (e.g. Theme, Lang) will not be supported. We have also locked down some system-level classes (not all) where any extension is potentially destructive. Classes such as Application and Module cannot be extended. OK, so what CAN I still do? AMA (well, almost anything). We still have a few more tools to show you, but at this point we'd like to hear from you. We know there is still a lot of uncertainty around how to migrate your modifications from v4 to v5, and we're here to assist with that. Send us your questions or use-cases by submitting a topic here. Please note that this is a private forum; you will not see topics posted by others, so you are free to share code samples if necessary. We will review your questions, and then aggregate them into an FAQ. The deadline for your question to be considered for the FAQ is September 1. After that you may still submit questions in the Contributor forum, where we will do our best to respond.
  6. We're actually still adding a few things to the listeners, as there were some points that came up as we continue development. I do plan on posting a follow-up in the comments here when we're closer to finalizing those changes. Right now it looks like there may still be more, so I'd rather wait for a bit.
  7. I don't recall saying that UI Extensions had anything to do with this, and it was definitely not related to what I had in mind. I also don't recall anyone saying that the last UI Extension entry would be the last dev tools entry. We still have a few more things coming that are not finalized yet. We discussed this, and decided not to implement it. Not all requests are going to be fulfilled. We are happy to discuss them, but just because we talk about it doesn't mean the answer will be yes.
  8. Some. We added the following methods to the Member listeners: onReact onUnreact onFollow onUnfollow As mentioned in previous comments on this entry, we allowed for listeners on base classes, like \IPS\Content\Item. I'm not sure what other suggestions you're referring to regarding listeners. Was there something specific?
  9. I've added your request to our internal list for discussion.
  10. Can you elaborate please?
  11. That's correct. I would suggest reaching out to the authors of the modifications to verify that their applications/plugins are compatible.
  12. As stated here, you'll need to switch back to PHP7, then disable everything, and then switch back to PHP8. Alternatively, you can roll back to PHP7 and then reach out to the author(s) of your modifications to verify PHP8 compatibility.
  13. Misread it as 4.7.11. Sorry about that. In that case it's trial and error. Disable everything, then enable one by one until you check them all. Likely more than one with an issue.
  14. Looks like 2 issues (at least) with 3rd party applications (or plugins). There's no way to tell which one from the error log, so you'll need to disable all of them. Once you do that, you can check the PHP scanner in the support section of the ACP to see which modifications have been flagged. That said... the second error message in your logs won't be flagged by the scanner. That one is going to have to be trial and error to figure out which is the culprit.
  15. For what it's worth, I too have a few clients who have modified the event form (I can think of 3 right off the bat, but there are probably more). And I already have a pretty good idea how I'll handle that. Hope that helps a little?
  16. In theory you could remove them entirely using JS, not just hide them. As Matt has said in previous entries, there are things that you will no longer be able to do, and that's intentional. You will be able to do most things, but not all. That said, I can think of some ways to do what you're asking, but let's wait until we have all the dev tools announced and then I'm happy to discuss. I don't want to start giving suggestions about things I can't show you in full.
  17. That's correct, but you can always use Javascript and/or CSS to hide fields.
  18. That's what the callback is for, specifically for validation so that it won't save. Sorry, I'm not really following what it is that you need to do that isn't already doable. If your code is adding the field, then you have full control over the callback that is used. There's no chain.
  19. Custom validation is typically declared as a callback when you add the field to the form. How are you currently doing this?
  20. This is for 3rd party devs to allow their applications to add fields to content forms. This is not something in the ACP.
  21. In our previous blog entry, we described the UI Extension and its overall capabilities. Today, we'll talk about how to use this new tool to extend content forms and menus. Form Fields A popular modification request is to add fields to a Content Item, such as a Topic. All UI extension classes contain the following methods: formElements Returns an array of form elements that will be added to the form. Note: Unlike other UI Extension methods, the first parameter of this method can be NULL, if you are creating a new item. formPostSave Allows you to process the fields that were added in the formElements method. Note that this method is triggered after the form is saved. Note: This method has the same function as the ContentListener method onCreateOrEdit, but we've added support for it here as well to avoid the creation of multiple classes, and to keep related code in the same place. Element Placement By default, all new form elements will be inserted at the end of the form. However, there are times that you may want to insert your fields into specific positions within the form. You can use the new FormAbstract::setPosition() method to specify where the element should be inserted. Let's look at an example. public function formElements( ?BaseItem $item, ?Model $container ): array { return [ 'my_new_field' => new Text( 'my_new_field', $item ? $item->new_field : null, true ) ]; } The above will append a Text field called "my_new_field" at the end of the Topic form. public function formElements( ?BaseItem $item, ?Model $container ): array { $field = new Text( 'my_new_field', null, true ); return [ 'my_new_field' => $field->setPosition( Topic::$formLangPrefix . 'tags', Topic::$formLangPrefix . 'mainTab' ) ]; } By using setPosition, I've placed the new field after the "tags" field, on the main tab in the form. Extending Content Menus In this blog entry, we introduced our new approach to building menus. With UI extensions, you can add your own items to Item and Comment menus using the following methods: UIItem::menuItems UIComment::menuItems We will discuss nodes and their menus in a future blog entry. Extending Item Badges Similarly, you can use the UI Extension to add badges to the item header. The UIItem::badges() method returns an array of badges and/or icons to be appended to the badge display. This concludes our discussion of UI Extension features related to Items and Comments. In our next blog entry, we'll discuss Nodes and what additional methods are available.
  22. My own, for starters. There is more than one other developer who builds modifications privately. IPS itself has private custom clients. So yes, we did take quite a large sample size.
  23. When we designed the development toolkit (there were a few of us involved in these discussions), we looked at a very large sample size of modifications to see what we needed to accommodate. There were quite a few instances where a conversation started with "people shouldn't do X" and then one of us said "but what about in a scenario where ____?" I have been doing a feature check on all my private clients (not a small number) to see what is and is not still doable, to see who will need a heads up that things won't work the same way in v5, etc. The majority will be fine. The reality is, that when you take the full toolkit into account, with a little (not even a lot) of creativity, you can still do most things.
  24. 3rd party devs don't know that for sure yet. We haven't finished discussing the development tools, so they really can't tell what will and will not work. Most things are still doable. Some things are not. It's "wait and see" right now.
  25. Esther E.

    IC5: Menus

    At the moment it's only first or last but we've been discussing this internally.
×
×
  • Create New...