A few weeks ago, I posted a blog entry mentioning a new feature in 4.0 which aims to make development of applications within the IPS Social Suite (both for us and third party modification authors) easier. We focussed on managing the database schema in that blog entry and I'd now like to take you through the other features.
Modules
Two tabs (one for admin modules and one for front modules) allow you to view all modules and sections in your application. You can add modules (which will both insert it into the database and create the relevant files in the filesystem), change the default section for a module (which previously required a defaultSection.php file) and create new sections.
When you're creating a new section, the form looks like this (this is for creating a section for an admin module):
The "Type" field controls the code that will be placed in the file created for the section - the options are:
- "Blank" - which will create the class with no other logic, so the section will be blank.
- "Table" which will create a class with a boilerplate for displaying a table.
- "Node Controller" - which will create a boilerplate for displaying a tree of containers such as IP.Board forums, IP.Downloads categories, IP.Nexus groups, etc. We've not posted how this class works, but a future blog entry will give more details.
No matter which type you select, the system will automatically generate a file, with a basic class structure already filled in, including ACP restrictions checks, etc.
The "Menu Tab" field is admin specific and controls under which tab in the Admin CP the section should show (for example, we have some stuff from the "core" app under the "Look & Feel" tab). Previously, one would have to edit the menu.xml file for the module to add sections, and making sections appear under tabs other the default application tab was very difficult - the new system does it for you.
The "ACP Restriction" field is also admin specific and allows you to select an existing ACP restriction which will control who can see the section. It also has a special "Create Restriction" option, which will cause the system to create a restriction, and use that. Previously, one would have to edit the permissions.xml file to create restrictions and then assign them in the menu.xml file.
Of course - you can completely bypass this feature and manually create your module folders and section files, but the addition of this feature makes the process much quicker.
Admin CP Menu
This tab contains a graphical representation of the data which was previously stored in menu.xml files.
![](http://community.invisionpower.com/uploads/monthly_04_2013/blogentry-108264-0-29421900-1365428781_thumb.png)
![](http://community.invisionpower.com/uploads/monthly_04_2013/blogentry-108264-0-17161400-1365428782_thumb.png)
Admin CP Restrictions
This tab contains a graphical representation of the data which was previously stored in permissions.xml files.
![](http://community.invisionpower.com/uploads/monthly_04_2013/blogentry-108264-0-01212100-1365428873_thumb.png)
Extensions
Extensions are ways in which applications interact with one another. Previously, you would drop extension files in your applications "/extensions" folder, though there wasn't much reasoning to the structure of the directory, it was difficult to know what extensions were available, and sometimes understanding an extensions requirements was difficult.
In 4.0, the extensions directory is more structured - the format is owner app > extension type > extension file (so admin/group_form.php for example, is now core/GroupForm/*.php) so this tab provides a GUI for managing your applications extensions. Applications can also specify a boilerplate file for an extension, so you can see what extensions are available, and clicking the "add" button will create a file with a basic structure to get you going.
![](http://community.invisionpower.com/uploads/monthly_04_2013/blogentry-108264-0-76563600-1365429816_thumb.png)
Settings
In 4.0, developers have much more control over how settings are presented, rather than all being dumped in the central "System Settings" table. With this, much of the data that was previously needed in settings.xml is no longer required, so we've simplified the process of creating setting to just providing a key and a default value.
![](http://community.invisionpower.com/uploads/monthly_04_2013/blogentry-108264-0-14033100-1365433111_thumb.png)
Versions
The versions tab shows all of the application's versions and the database queries that the upgrader will run when upgrading to that version. It's sort of a combination of the versions.xml file and the setup folder.
![](http://community.invisionpower.com/uploads/monthly_04_2013/blogentry-108264-0-96533200-1365433582_thumb.png)
![](http://community.invisionpower.com/uploads/monthly_04_2013/blogentry-108264-0-83518600-1365433583_thumb.png)
Queries are automatically added as you modify the database schema. Naturally you can also manually add queries, or specify a custom PHP script to run in that upgrade step.