Jump to content
View in the app

A better way to browse. Learn more.

Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Invision Community Blog

Early on during development of IP.Downloads 2.3, one key area we identified that we wanted to improve was the notification capabilities of IP.Downloads. In previous versions of IP.Downloads, you can elect to be notified when a file you are watching is updated, and you can elect to be notified when a file you submit is approved or denied. These are necessary and useful notification options, however they do not encompass all of the scenarios users might want to be notified of within the application.

New Comments

We have implemented the new 'Like' and 'Comments' systems into IP.Downloads 2.3 (we will discuss this further in our next blog entry), and in doing so have added the ability to allow users to be notified when a new comment is received on a file. A user need only visit a file, 'like' it, and choose to be notified of new comments if they so wish. If you are subscribed to files, or have any files in your favorites list in your current IP.Downloads installation, those will be removed, and converted into 'likes' appropriately when you upgrade to IP.Downloads 2.3.

New Files

In addition to supporting 'likes' for files, you can now 'like' any category in IP.Downloads, allowing you to receive notifications (if you choose) when new files are submitted to a category you like.

Broken Files

Until IP.Downloads 2.3, no one would be notified when a file is reported broken. A note would be added to the top of the page with some details, and the file would be listed in the Moderation panel, however this requires moderators to be vigilant and to actively monitor the Moderation panel to discover when files are reported broken.

Beginning with IP.Downloads 2.3, you will now be able to elect to be notified when a file you have submitted is reported broken (as the file submitter). This allows you to know if any of your files are being reported as broken by the community, giving you the opportunity to address issues with the file if needed, and to communicate with moderators more effectively if they contact you about the file.

Additionally, moderators will now be able to elect to be notified when a file is reported broken, giving them the opportunity to let the software handle notifying them of problems, rather than requiring the moderators to actively monitor areas of the software to discover problems on their own. We believe this new functionality will ease the workload of your moderators, and ensure consistent communication occurs between the software and your staff.

As an aside - we have also added group-based permissions for who can report a file as broken, which will now allow administrators to better control who has access to perform this action in IP.Downloads.

Files Pending Approval

In addition to having no way to know when a file is reported broken, in previous versions of IP.Downloads moderators had no way to know (without checking for themselves) if a file is pending approval. This means that moderators must monitor the downloads area manually to determine if files are pending approval, which is time consuming and inefficient. Beginning with IP.Downloads 2.3.0, your moderators will now be able to elect to receive notifications of new files pending approval, allowing them to be notified when action is required on their part, without having to actively monitor the downloads area.


Summary

With IP.Downloads 2.3 we are working to improve both the consistency between IP.Downloads and IP.Board (as well as our other addon applications), and the usability in the application itself. We believe these small but important changes will allow you (the admin), your staff, and your users much better control over how they interact with the software, saving everyone time, energy, and useless clicks. ;)

Let us know what you think in the comments, and subscribe to our blog if you are looking forward to our next IP.Downloads blog entry, which will discuss some further usability and consistency improvements you can expect to see in IP.Downloads 2.3!
  • 3,275 views
I blogged in a previous entry about the new "like" system that is coming to IP.Gallery, IP.Downloads and IP.Blog.

This is a brand new feature in the core of IP.Board and even though we plan to make more use of it in the actual forums in 3.2, it is ready to be used by modification authors in 3.1.3.

Before I get into the mechanics of the system, I wanted to give you a brief overview of how it works.


This screen shot shows the "like" bar directly underneath the image. The pop-up overlay shows who has "liked" the image. This is opened when you click on the "1 other" link.


When you like an image, you can elect to receive notification of 'updates'. Updates can be various things, in this example it is when a comment is added. You can also elect to 'like' the item anonymously so you can receive updates without showing on the "liked by" list.


All content you "like" is added to your "like center". From here you can bulk remove or update the type of notification. We do plan to make this "like center" more extensive in 3.2.0 with a tabbed interface and more filters but it is ready to use in 3.1.3.


You can quickly access the "like center" from your username drop down at the top of the page.

Implementation
You can add "like" to almost any object by adding a single PHP class into /extensions/like/. I'll take you through the "like" class for Gallery. This file is situated in /admin/applications_addon/ips/gallery/extensions/like/images.php

The class name is as follows:



class like_{app}_{type}_composite extends classes_like_composite

So, for Gallery, this is:



class like_gallery_images_composite extends classes_like_composite

There are only three methods that need to be defined:

The first two are very straight forward:


* Return an array of acceptable frequencies * Possible: immediate, offline, daily, weekly * * @return array */ public function allowedFrequencies() { return array( 'immediate', 'offline' ); } /** * return type of notification available for this item * * @return array (key, readable name) */ public function getNotifyType() { return array( 'comments', 'comments' ); }
/**




















Note: If this "like" will notify of new comments, then the only allowed frequencies are 'immediate' and 'offline'.

The last is getMeta


* Returns the type of item * * @param mixed Relationship ID or array of * @param array Array of meta to select (title, url, type, parentTitle, parentUrl, parentType) null fetches all * @return array Meta data */ public function getMeta( $relId, $selectType=null ) { $return = array(); $isNumeric = false; if ( is_numeric( $relId ) ) { $relId = array( intval($relId) ); $isNumeric = true; } $this->DB->build( array( 'select' => 'i.*', 'from' => array( 'gallery_images' => 'i' ), 'where' => 'i.id IN (' . implode( ',', $relId ) . ')', 'add_join' => array( array( 'select' => 'a.*', 'from' => array( 'gallery_albums_main' => 'a' ), 'where' => 'i.img_album_id=a.album_id', 'type' => 'left' ) ) ) ); $this->DB->execute(); while( $row = $this->DB->fetch() ) { /* Title */ if ( $selectType === null OR ( is_array( $selectType ) AND in_array( 'title', $selectType ) ) ) { $return[ $row['id'] ]['like.title'] = $row['caption']; } /* URL */ if ( $selectType === null OR ( is_array( $selectType ) AND in_array( 'url', $selectType ) ) ) { $return[ $row['id'] ]['like.url'] = $this->registry->output->buildSEOUrl( "app=gallery&image=" . $row['id'], "public", $row['caption_seo'], "viewimage" ); } /* Type */ if ( $selectType === null OR ( is_array( $selectType ) AND in_array( 'type', $selectType ) ) ) { $return[ $row['id'] ]['like.type'] = 'Image'; } /* Parent title */ if ( $selectType === null OR ( is_array( $selectType ) AND in_array( 'parentTitle', $selectType ) ) ) { $return[ $row['id'] ]['like.parentTitle'] = $row['album_name']; } /* Parent url */ if ( $selectType === null OR ( is_array( $selectType ) AND in_array( 'parentTitle', $selectType ) ) ) { $return[ $row['id'] ]['like.parentUrl'] = $this->registry->output->buildSEOUrl( "app=gallery&album=" . $row['album_id'], "public", $row['album_name_seo'], "viewalbum" ); } /* Parent Type */ if ( $selectType === null OR ( is_array( $selectType ) AND in_array( 'parentType', $selectType ) ) ) { $return[ $row['id'] ]['like.parentType'] = 'Album'; } } return ( $isNumeric === true ) ? array_pop( $return ) : $return; }
/**





































































This method returns meta data about either a single item or an array of items. This is used to generate the data in the "like center".

To add the like bar in your own applications, all you need to do is add:


require_once( IPS_ROOT_PATH . 'sources/classes/like/composite.php' ); $likeClass = classes_like::bootstrap( '{app}', '{type}' ); $like = $likeClass->render( 'summary', $itemId );







$like now contains the HTML which you can use in your templates like so:


<div>{$like}</div>




I will go into more detail on this in our documentation and please watch out for the "comments" class blog entry as it ties in with this class to auto-send comment notifications without any additional coding!
  • 5,463 views
IP.Content is a powerful toolset that allows you to create dynamic pages and content on your site, utilizing all of the APIs IP.Board provides. Using these tools, you can create pages, templates and blocks that retrieve, transform, and output data in your IP.Board and addon application databases. IP.Content can even allow you to take blocks you have created and integrate them into any page in IP.Board itself, so you can create dynamic content-driven blocks on any page of your IP.Board installation with ease.

While the integration possibilities are quite robust within IP.Board, we wanted to take this a step further and allow you to implement blocks created in IP.Content anywhere! Imagine if you could create a feed of the latest topics on your forum, and integrate that into your Wordpress blog? Or imagine creating a feed of your latest Gallery images to show on your website homepage, simply by inserting a little tag into your homepage HTML file? With IP.Content 2.1, you will be able to do exactly that.


A new "external.php" file will be included in the Tools folder of your IP.Content download. You will first need to upload this to your IP.Board root directory.

Then, in the ACP Block Management page, you will see a new icon next to every IP.Content block.



When you click this icon, you will be presented with a small modal box that includes the exact HTML (a javascript tag) that you need to include where-ever you want the block to show up



You simply copy this javascript tag, and paste it into your page where-ever you would like for the block to show. It really is that simple! Additionally, while this is not the "preferred" method of integrating blocks into your IP.Content pages themselves, there is nothing stopping you from doing so if you find this method to be the easiest way to include your blocks in your pages.

I have created a short video to demonstrate how this works. Hopefully you will be able to see just how easy this new feature is to use in IP.Content through a short tutorial example.




As you can see, there is really nothing to it - you simply copy a tag into your HTML page and the block shows up. Additionally, because the block is loading off of your forum domain and utilizing the IP.Board framework, all member data is available to the block. You can create user profile blocks, for instance, and show them on your external site, providing an easy way to integrate "member" functionality into your site without having to create your own membership system, or tie your site into your IP.Board installation through backend PHP code.


Some Boring Techy Details, if you are interested

The block is implemented via a javascript tag, which then renders an iframe into the page. The iframe will size dynamically so that all of the block content is displayed, and scrollbars are not. You can override this on a per-block basis, simply by changing the URL in the script tag to include "&w=xx&h=xx" parameters (you can provide either parameter, or both parameters) if you wish to set a static width and/or height (if you do so, the iframe will automatically show scrollbars as one would expect).


We hope you like this new feature in IP.Content 2.1, and that it will help you expand your website in easy and fun ways. Let us know what you think in the comments!
  • 10,633 views
As the entry title says, this blog entry describes changes and improvements to the hooks functionality in IP.Board, and is aimed mainly at modification authors.

New Data hook access points
Several new data hooks have been added for IP.Board and the addons. Here a list of the ones added in 3.1.3:

IP.Board
topicViewQuery: allows you to add new fields for the members table in the query, and add new joins when posts are retrieved from the database. This will allow you to select additional fields in the members table if you need to, or join in other database tables to retrieve additional information for your modification. The main use for this would be to retrieve additional data to show in the userInfoPane template. incrementUsersPostCount: several modifications need to execute code when the post count for a user is incremented (example: popular points modifications). This new data hook will allow you to do so.

Add Calendar Event Edit Calendar Event

Add New Blog Add Blog Entry: Entry Add Blog Entry: Poll Data Edit Blog Entry: Entry Data Edit Blog Entry: Added Poll Edit Blog Entry: Updated Poll Add Blog Entry Comment Edit Blog Entry Comment

Add Download Edit Download Update Downloads Category Info Rebuild Downloads Statistics Cache Add Download Comment Edit Download Comment

[*]IP.Calendar [*]IP.Blog [*]IP.Downloads

The other applications, such as IP.Gallery, will all see new data hooks as well.


Library hooks support
In IP.Board 3.1.0, we introduced a new type of hook: Library Hooks. This hook type is a powerful tool for modification authors, allowing you to overload the libraries and extend virtually any function in the IP.Board code. Initially, the support for library hooks was limited and often times a class loaded from different areas of the code would sometimes load any library hooks associated with it, and sometimes would not; for IP.Board 3.1.3 we have added support for them in a lot more areas of the code. All of our addon applications have been updated to use them too!

While IP.Board 3.1.3 is a major improvement in terms of library hook support, we will continue working on implementing the library hook support throughout all of IP.Board, with the expectation that IP.Board 3.2 will support library hooks in 100% of locations that can utilize them.


New function IPSLib::loadActionOverloader()
Action overloaders are usually executed automatically by the code but unfortunately that happens only when those classes are executed directly; when those classes are loaded and executed manually like in the code below the overload doesn't apply:


require_once( IPSLib::getAppDir('core') . '/modules_admin/languages/manage_languages.php' ); $langLib = new admin_core_languages_manage_languages( $this->registry ); To resolve this issue, we have added a new function in IPSLib that works similarly to IPSLib::loadLibrary(). This function however accepts only 2 parameters: the first one is the path to the file itself while the second parameter is the class you are overloading. This is an example based on the code above:

$classToLoad = IPSLib::loadActionOverloader( IPSLib::getAppDir('core') . '/modules_admin/languages/manage_languages.php', 'admin_core_languages_manage_languages' ); $langLib = new $classToLoad( $this->registry ); Support for usercpFormsExt plugin dropped Starting with IP.Board 3.1.3, we have discontinued support for the plugin usercpFormsExt.php. This is a plugin that we introduced in the 3.0 version of IP.Board to extend the user control panel tabs when library hooks didn't exist. It has now been replaced with a much more flexible library hook that allows for infinite extensions and you won't even need to upload a file as everything is done with a simple hook. If any developers were using this functionality, be sure to update your code to use the new library hook method. This below is the current code in the public_core_usercp_manualResolver class, for reference:

//----------------------------------------- // Begin initilization routine for extension //----------------------------------------- $classToLoad = IPSLib::loadLibrary( $EXT_DIR . '/usercpForms.php', 'usercpForms_' . $_TAB, $_TAB ); $usercp_module = new $classToLoad();



We appreciate the feedback of our developers, and hope that these small changes make it easier to extend IP.Board and create useful and creative addons for our products.
  • 7,511 views
Over this summer we have put a lot of work into the IPS applications to get them up to the same level of modern code that IP.Board itself features. If you have been following our blog you will have read about all the new features and enhancements coming to the applications. More blog entries on updates to other applications are coming so keep reading our blog for updates.

You may have noticed that there have not been a lot of releases to our applications over the last couple months. This is because we decided to take a new approach to our development cycle and we are happy to say we are wrapping up development on updates to all of our applications! Anyone who has been a customer of IPS for a period of time knows that we are always reluctant to post any sort of schedules. They are too easy to miss and, when that happens, people tend to get a tad... upset :)

For the first (and who knows: perhaps the last) time we are able to announce a general release schedule. On October 26 we will release IP.Board 3.1.3 which is a maintenance release that addresses many reported bugs and also contains code needed for the upcoming updates to all of our applications. After this release, we plan on releasing either an update or maintenance release to one of our applications every Tuesday through the end of the year! Some weeks there may also be an additional release on Thursday depending on schedule requirements. So that's one or two releases every week through the end of the year! The following applications (not listed in release order) will be released, updated, or see maintenance releases as needed:


IP.Blog IP.Chat IP.Content IP.Downloads IP.Gallery IP.Nexus

Once this application update release schedule is complete we will have a new, modern line of applications that work with IP.Board and will be well-positioned for the upcoming IP.Board 3.2 series.

Everyone at IPS hopes you are as excited we are at this aggressive release schedule and the improvements to your community all of these updates will bring!
  • 19,006 views
Arguably the most crucial part of the gallery system is the upload system. A cumbersome and slow upload system deters people from uploading new images.

Certainly, the current Gallery doesn't make it very easy to upload multiple images and filling out the meta data such as caption, etc is a chore. We've had a lot of feedback over the years on the Gallery's upload system and I wanted to take the opportunity to write a fast and intuitive upload system.

The following video takes you through a typical scenario: You've taken a bunch of pictures, labelled them and you're ready to share them with the community.



I recommend that you click the full screen button or use a powerful magnifying glass.
  • 9,483 views
One of the benefits provided to IP.Board license holders is the skin generator which allows you to automatically generate an IP.Board skin using the colours you choose.

If you're not familiar - have a look at our previous blog entry on it.


Something which is frequently requested by skinners is a way to move the member box in the IP.Board header to a different location, so it isn't overlaying the logo; more like a traditional member bar.
I've spent some time today working this in as an option to the skin generator. When you go to the skin generator, there will be an option under "Choose Options" that says "Add member bar?" - simply check this box, and the member bar will be included in your skin.


Here's a screenshot of how it looks using the default colours:


If you'd like this look on your community simply head over to the skin generator and download a skin in your colour choice. For instructions on how to import skins, please see our documentation.


Enjoy!
  • 5,461 views
Alongside the new articles system introduced in IP.Content 2.0, we redesigned and included a default demo site to showcase some of the core functionality in IP.Content. This default demo site utilizes the concept of page templates, custom database templates, custom databases, custom blocks, and all of the useful functionality you will probably make use of yourself. The idea behind this is that we wanted to show off some of the capabilities of IP.Content in a "real-world demo" so that you could dive in and, hopefully, better understand how all of the different capabilities of IP.Content can be pulled together to create unique and creative websites.


Well, while the demo site looks sharp and has been generally well received, there has been one recurring criticism of this approach with IP.Content 2.0 - the articles system, because it was embedded into the default demo site, did not look consistent with the rest of IP.Board if you chose not to use the included page template. If you edited the "index.html" page and set it to use the IPB wrapper (and not the page template we included), much of the layout did not flow as expected.


We have decided to change our approach with IP.Content 2.1. We are no longer going to include a default page wrapper with IP.Content 2.1. I'm sure some of our customers may have liked seeing how the page templates can be used to facilitate making an entire website with a consistent look and feel outside of the forums, however in our polling most of the users who make separate website pages (and don't want them to look like the forums) are already fully capable of doing so. Additionally, these users tend to be more advanced users and they login to IP.Content after it is installed and just delete the default wrapper anyways. This functionality is still in place of course, however the new default installation of IP.Content will utilize the IP.Board wrapper instead of a separate wrapper, in an effort to make IP.Content more consistent with your forums, and much easier to use "out of the box".

The new templates included with IP.Content 2.1 are not radically different from 2.0, however some changes have been applied to various elements of the pages to allow IP.Content to re-use your existing IP.Board skin easier with fewer changes on your part. Ideally, this means IP.Content will work out of the box with (most) custom skins with few or no styling tweaks needed. Thus, once you install IP.Content 2.1, you can click the Pages tab and begin adding your own articles: a much more plug-n-play approach, if you will.

I'm sure a couple of screenshots will make this clearer, so here you can see the major views of the articles system in IP.Content 2.1 (using the IP.Board wrapper). Please be aware that these screenshots are not 100% finished and small details may change between now and release. We're still tweaking a few areas but wanted to give you an idea of what was in store.

This is a category frontpage of the "Databases" category



One of the first things you'll notice here is that the sidebar has been moved to the right hand side of the page. The concept of "articles" is part of a content-driven website. Articles are content that are highly relevant to your community that you want separated from the forums, in an area that is easy to navigate and view. To this end, much like most blog products on the market, we have moved the sidebar to the right side of the page so that the first thing you see when you visit the page is the content.

We will also set the *default* frontpage template to be our "Frontpage (Blog Format)" template. For those of you who are not familiar with IP.Content (or, who are not familiar with the concept of a frontpage or the frontpage templates), the "Frontpage" is the first page you hit when visiting the articles system, or when you visit any given category in the articles system. You can assign a special frontpage template that allows you to issue the content in the manner you best see fit (and you can assign separate frontpage templates on a per-category basis if you choose to do so). IP.Content ships with 3 default frontpage templates (although you can modify these, and/or create your own): 1x2x2 Layout (this is where you get a larger area for the first article, which will have it's own "row", and then all other articles on the frontpage will be in a smaller sized box with 2 per row), Blog Format (this is a layout similar to a blog product, where the entire article shows on the frontpage, one per row), and Single Column (where you have a layout similar to the blog layout, however only an excerpt of the article is shown instead of the whole thing). While the 1x2x2 layout is arguably the most creative, and as such we used it to show off what you could do with IP.Content 2.0, we have opted to use the Blog Format frontpage template as our default template in IP.Content 2.1. We feel this is more consistent with most users' experiences on other websites, and should make it easier for users to navigate your own site as a result. (It is important to note, all 3 templates are still shipped and available for use with 2.1 - we are only changing the default configuration here).


This is the article view



Here you will notice that we now re-use the "maintitle" styling from the forums for the header of the page. The interface should feel much more consistent with topics and posts in your forums, while still standing out as content that is not directly contained within the forums.

All user-action buttons have been added to the container bar below the content, and the date/poster info is moved above the content into it's own bar with a separate background color. This allows the content to better "stand out" without other meta data contained within the same area distracting the user's eyes. All in all there isn't much to say about the changes made to this page - we think they're pretty self-explanatory.


And here is the archives view



Again, most of the changes should be pretty self-explanatory. A list of the articles contained within the category is shown (as is pagination, when necessary), along with a sort-bar that allows you to resort the articles in a couple of different ways. This is not unlike IP.Content 2.0, however of course this is now displayed within the IP.Board wrapper. If you have sub-categories in the category you are viewing, they will be displayed below the list of articles.


We have also redesigned the included media database demo so that it will work with or without the default demo site wrapper.



Again, we have moved the sidebar to the right side of the page to put the focus on the page content, and we have simplified the interface, removing extraneous meta data. A list of recent videos is shown at the bottom of the page, while the most popular videos are shown on the right side of the page. It is important to note that this "media database" is nothing more than a regular database in IP.Content, with some customized database templates. You could entirely recreate this media database yourself without anything special - we ship with it simply to show some creative ways you can use the databases functionality.


If you didn't notice in the screenshots initially, we've also updated the breadcrumb functionality for databases (and articles) so that if you are using the IP.Board wrapper, the breadcrumbs are correctly appended to the IP.Board secondary navigation bar, rather than being inserted separately. This should provide for better navigational consistency with other applications.


We value all of our customers' feedback and as a direct result of the feedback received, you can see that we are making changes to IP.Content 2.1 in an attempt to make it easier to approach and use. You will no longer have to jump through hoops to use IP.Content inside or outside a wrapper - either way you wish to use the software, we've got you covered out of the box. We look forward to your comments!
  • 7,097 views
Blocks, a core feature of IP.Content, provide you with an easy way to create static and dynamic widgets that can be embedded anywhere in IP.Content (and indeed, anywhere in IP.Board itself). There are three core block types: custom blocks (where you can effectively embed any HTML or PHP you want into a widget), plugin blocks (these blocks execute a PHP script to generate specific output, such as a mini-calendar or poll), and feed blocks (feed blocks are used to "feed" data from anywhere in IP.Board, as well as RSS feeds). While blocks are extremely powerful, it can be challenging for a novice to fully understand what can be done with the blocks in IP.Content. To get the most out of your blocks, and to make them customized and unique to your site, you have to know what variables are passed to the blocks and thus are available for your use.

As part of our drive to make IP.Content easier to use and more accessible to novice and intermediate users, we have developed an inline block helper window for IP.Content 2.1 that we think will help everyone to better understand what variables are available in individual block templates.

(Please be aware that the following videos and screenshots are of a pre-final copy of IP.Content 2.1. The interface may change before the final version is released.)


Launching the Variable Help

In the following screenshot, I have clicked on the "Recent Articles" block and am now presented with the form to edit the block template. You will see a "help" button that you can click which opens the block variable help window.



Upon clicking the button, the variable help window opens



Here we can see that two variables are passed into the template. Different blocks have different variables available to them, so this helps us understand what is available with the block we are currently working on. $title is a variable that holds the block title (as the description notes), while $records is an array that holds all of the records in this feed. You will note that $records is underlined because it is a link. When we click on this link, it expands the variable help for the $records variable.



Now we can see that when we loop over the $records (this is done by default in the template), each member is an array, and we see what array keys are available.

By default, you see this in the template:


<li class='{parse striping="feed_striping"}'> <a href='{$r['url']}'>{parse expression="IPSText::truncate( $r['field_1_value'], 30 )"}</a> </li> </foreach>
<foreach loop="$records as $r">





Here you can see that the default template uses $r['url'] and as well as $r['field_1_value']. If you were not familiar with the software, you may not know what this means. By utilizing the documentation available now, you can now gain an understanding of what is happening.

$r['url']: The URL to the database record or article
$r['field_1_value']: The formatted value for the field "Title" that should be shown to users


Now What?

While understanding what each variable in the default template is for is very helpful on it's own, you can now take your blocks even further. Now that you can access documentation on what variables are available, and what each variable does, you can modify your block templates to make them more personalized to your site, with the information you want to display. Let's walk through a quick example.

Please see the following video, and the subsequent description of what we have just done.




The first step we take is to create the block. For this demonstration, I am creating a "feed" block that pulls topics from the forums. Because I am showing "news" from a specific forum, I opt to order by "start date" (instead of the date the last post was made). I decided not to edit the template initially, and saved the block. Now I preview the block so you can see what it will look by default.

The default template works well as a "latest posts" block, however if we are intending to show news, we will probably want to show the entire post. Next, I go back in and edit the block template.

I decided to move the date to the beginning of each row, and then I show the name of the member that started the topic.

Now, I remove the code that truncates (shortens) the post, and wrap it in a div that gives it a margin so it is easier to see.

Lastly, I decided to add a small blurb to the end of each row that tells who last edited the post, and a little bit of information about this user. I added the last poster's name, the date they made their last post to the topic, their profile picture (the "mini" size version), the user's post count, and the number of times this user's profile has been viewed. I save the block again, and launch the preview again to give you and idea of what the end result will look like.

All of the above was simply to demonstrate how you might be able to use the block help to find variables you may wish to use in your blocks. By using the block help, I was able to add a lot more data and thus make the block more useful.


Wrapping Up

Of course, the block templates still don't write themselves - you will need to determine what it is you want to show and where. We hope, however, that the block variable help panel provides you with direct, relevant documentation of the various variables you will want to access in your blocks. We believe this help panel will lower the bar to customizing IP.Content just a little bit further, making it easier for more people to do the things they want easier in IP.Content. We look forward to your feedback and hope you like the changes!
  • 5,579 views
Late last week I left a teaser image of the 'view image'.

I have taken a short video to explain some of the larger changes and features of this page for Gallery 4.



I recommend clicking the full screen icon and ensuring the "HD" icon is blue to avoid excessive squinting.

This video will also give an indication for the direction of future IP.Board releases as we'll integrate "ajax" replies into 3.2 along with the new favorites system which I'll go into in more depth in a future blog entry.
  • 7,415 views
While we continue to work on polishing IP.Content 2.1 to make it easier to access and easier to use, we wanted to take a moment to highlight some of the changes we have already made which we believe will allow you to better make use of all that IP.Content 2.1 has to offer. One major goal we are continuing to work towards with IP.Content 2.1 is to make it easier for everyone to use, and we believe these two changes will do just that (even if our work is not yet done).

Textual Keys in Templates
Databases and articles map to pre-defined templates in the ACP. You can modify these templates, and even create new ones, as needed for your site. You can use one database template for all of your databases, or you can make one template for each database you create in order to give each database it's own unique look and feel. There are many ways to configure your templates so that you get the most out of IP.Content.

One limiting factor in IP.Content 2.0 (and previous versions), however, is that within the templates you refer to the fields by the field ID. For instance, if you want to show the "content" for a database record, you may have to use a variable like so: $record[ $database['database_field_content'] . '_value' ]. In and of itself, this isn't a "problem", however when you are working with the template it's not immediately clear what variable you are referencing, and you will probably find that you need to look up what variables are available in the templates quite frequently. We have implemented a way to make this easier in IP.Content 2.1.

When you add or edit fields you can now define textual keys, and then utilize these keys in your templates. For instance, the article title field has a text key of "article_title". Now, in your templates, you can refer to this value simply as: $record['article_title']. Clearly, this is easier to use, easier to remember, and easier to understand when you come back to this template at a later point to make changes.

The upgrade routine will NOT update your existing templates. You are not forced to use the textual keys, and in fact you will need to add text keys to any fields you already have if you do wish to use them. However, moving forward we believe this will make it much easier for everyone working with templates to adapt the template to their needs.


Overhauled Wizard Process
IP.Content features a wizard process for block and page additions and edits. This wizard process is both necessary (some options can change based on previously selected options) and helpful for new users. While we are happy with how the wizard process works, we felt there were some obvious improvements that we could make, and we are happy to announce that they will be available beginning with IP.Content 2.1.

Firstly, after a page or block is created, more often than not when you go edit either a page or block you are wanting to edit the content or template. We accounted for this in earlier versions of IP.Content by building a special secondary form that is loaded, and if you wanted to change anything else you needed to relaunch the wizard. In IP.Content 2.1 this is not the case - when you go to edit a page or block you are taken into the wizard process, defaulting to the page where you edit the page content or block template. This allows us to consolidate the process, giving you a more consistent user experience and reducing the total amount of code needed to deliver the same functionality.

Secondly, you can now jump back and forth to any step in the wizard process at will (after the page or block is created, when editing the saved content). This means when you click on the page you will be taken to the step in the wizard where you edit the content, however if you just want to enable caching you can click on the "Caching" step, supply the values you wish to use, and hit "Save" without having to walk all the way through the wizard again. You can use a "Save and Reload" button on the wizard as well, if you wish to apply your changes, but leave the form still open.

Additionally, when you are creating a new block or page for the first time, while you cannot jump ahead in the wizard, you CAN jump backwards to any previous step if needed.

You can view a quick video here:

http://www.screencast.com/users/bfarber/folders/Jing/media/aa2105db-7931-4364-8182-5e402e50ae0a



We hope that these improvements make it easier for you to create your blocks, templates and pages, and allow you to better control and manage these resources once created. Please let us know if you have any feedback!
  • 2,870 views
The article and database functionality in IP.Content helps you manage content on your site in many ways, so one goal we work towards in each release is balancing functionality and capability with ease of use. We don't want to remove functionality to make the software easier to use, but we also don't want the functionality available to inhibit how you use the software. We also work towards integration and consistency with the forums to help deliver a consistent experience for your users. Some changes you can expect to see to the databases and articles areas in IP.Content 2.1 have been implemented to help deliver on improved functionality, consistency, and ease of use.

Facebook Like
IP.Board 3.1 introduced the ability to "Like" any topic on Facebook, helping to share content from your community on the world's largest social network. This functionality has been well received, and we are pleased to announce that IP.Content 2.1 will feature this same capability for any articles and database records on your site. Your users will now be able to "Like" (and comment through Facebook) any content you post in your articles and databases areas (if you have enabled the Facebook Like hook).

Easier Moderation
It can be challenging for your moderators to know what content is pending approval in your databases in IP.Content 2.0. We have improved moderator interaction with the databases and articles in a few key ways that we believe will help you better manage the content stored in your databases.

1) Records pending approval in the articles section are now highlighted with the "moderated" CSS class on frontpages and in archive listings in the articles section. This allows you to easily see which articles are not yet approved so your moderators know which ones require approval.

2) Records pending approval are now tracked at the category level. This allows IP.Content 2.1 to show a link below each category "There are x articles pending approval". Your moderators can click on this link, and all articles pending approval will be shown at the top of the listing, similar to how the forums function.





The records pending approval tracking has also been implemented for general databases as well.

Enhanced Frontpages
Frontpages are a new concept introduced in IP.Content 2.0 - they act as a landing page for the articles area (or individual categories within your articles section). We have added two new key features to the frontpage feature of IP.Content 2.1 which we believe will help you better control this page and configure it to work how you like.

Pinned Articles
The "pinned" status on an article is honored in the archive listings, however pinned articles were not automatically pinned to the top of frontpages. We have added a new setting to the Frontpage Manager in IP.Content 2.1.0 that will allow you to choose if you want your pinned articles to be pinned at the top of your frontpages as well.

Pagination
Frontpages were meant to act as a sort of "portal" for your articles, and were not originally designed to allow you to walk through all of your content. You could use the archives view in order to walk through all of the submitted content, if you wanted.

In IP.Content 2.1.0 you can now enable pagination in the Frontpage Manager, allowing for pagination right from the frontpage. When enabled, a simple pagination method is utilized to provide a "Next Page" and "Previous Page" (when appropriate) at the bottom of your frontpages, allowing you to walk through all of your articles right from the frontpage similar to how a blog might work. It is important that you match the number of "articles per page" setting in the frontpage manager to the number of articles that are displayed (as frontpages can show fewer articles than you configure) in order for frontpage pagination to work 100% correctly, however after you have configured your frontpages correctly your users will now be able to more easily view all of the articles on your site without having to load each category's archive view individually.


Database Plugin Updates
Databases support plugin callback functionality to allow advanced developers to exert more control over how IP.Content processes data before updating it's local records. We have expanded the plugin support in 2.1 to give you better control in your callback plugins. All areas that support plugins now have preX() and postX() plugin callbacks, and further to that, context-specific data is now passed to the plugin to allow you to more easily check for errors in submissions or manipulate the data that will be stored in the database. For postX() plugins, the new primary key ID for the inserted content is passed to the plugin callback so you can manipulate the new record as needed.

Even better, we already have basic documentation written up for the plugin changes, so we should have all of our plugin documentation available when IP.Content 2.1 is launched!


We believe these small but useful features will allow you to better control the behavior of databases in IP.Content 2.1, giving you more functionality, more consistency with the forums, and more control over how IP.Content functions on your site.
  • 5,572 views
Following on from my manifesto blog entry, I wanted to discuss some of the changes to structure that Gallery 4.0 introduces and explain why we have made those changes.

This blog entry does get a little technical, but even if you are not a technical person, please bear with me and feel free to skip over sections that are not relevant to you. I feel it is important to explain in detail the challenges faced when re-writing Gallery.

Overview
I want to completely re-focus Gallery and make the media the center of the application. I want users to view the images without being so concerned as to where they belong. I want to focus on organic discovery over being forced to browse pages of user albums or pages of categories.

The Problem
Although competent, it's no secret that the current Gallery has become a little confusing and over complicated. Over the years features and settings have been added too appease a small demand that has undermined the "flow" of the product. I have reviewed a lot of our customer's gallery installations and in most cases a lot of the more complex functionality in Gallery is not being utilised.

For example, the current Gallery allows for very complex permission based hierarchical structures that mixes albums and categories. Programatically, this is incredibly hard to maintain and almost impossible to work with beyond a superficial level.

Consider the following:
- Category A (Global viewing permission)
-- Category B (Restricted viewing permission)
----User Album A (Public)
------ User Album B (Private)

This allows for great flexibility but a severe cost to code maintenance and efficiency. The only way to fetch images that the current user has permission to view is by loading all the categories and albums into memory and iterating over each; testing view permissions and finally constructing a large list of permissible IDs which is passed into an SQL query. This is an "expensive" operation and once you get past 10,000 albums you quickly run into issues with MySQL not being able to parse the query as it is too large. This is a wall and the current model allows for no way around it.

The Solution
Categories and albums are almost alike. They are both containers that can accept uploads. For this reason, I have merged them into a more pragmatic "albums" model.

Administrators can set up "Global Albums". These behave much like categories used to in that you can set them to be containers only or allow uploads. You can restrict access permission based on member permissions much like you do with forums.

Users can create "Albums". These are almost identical to the current user albums in that they can be set to "Public", "Private" or "Friend Only". These are no longer restricted to the 'Members' category or being children of categories. They are created at "root" level and are not included in the hierarchy unless attached to a category.

This creates two different spaces. The Admin defined strict hierarchy and a more social public space.

There are hard rules on user created album use and the software deliberately restricts the freedom of use so that order is maintained and a simple flowing permission model is employed. In practical use, you shouldn't notice these limits but the code is much simpler if you box in their usage.

When creating a user album, you can elect to attach it to a category. When you do attach it to a category, it automatically inherits the permission of the parent category. You will be unable to set it to friend only or private. You cannot attach a sub-album to an album attached to a category.

- Category A
---- Category B
------ User Album X (Inherits permission from Category B)

This small change makes selecting images much simpler as you do not have to consider a dozen different possible permutations. We can now cache permissions with the image which makes selecting them outside of an album a quick and efficient task. This allows us to quickly query "streams" of images without having to learn about their album which frees up what we can do with the interface.

I will begin to reveal more specific interface implementation over the coming weeks.

Please let me know if you have any questions!
  • 3,593 views
IP.Content features robust integration with IP.Board, allowing you to promote posts to articles and allowing you to use your forums to host the comments for your articles and other database records. This functionality is important to many administrators, helping integrate these two areas of your site closely. We have enhanced the IP.Content and IP.Board integration in IP.Content 2.1.0, giving you better control over how IP.Content interacts with your forums.


Better Control of Topics
You can configure IP.Content to post a new topic in the forums when a new database record is saved. This topic is then used to host the comments for the article or database record, and your users can then comment on the article either from the article page directly, or within the forums. Your moderators can control the comments from both areas, giving you a lot of flexibility with regards to how your databases function.

We have enhanced this integration in IP.Content 2.1.0, allowing you to better control the topics that are automatically generated in the forums. Previously, when a topic was posted, the post consisted of the article or database record "content" only. Beginning with IP.Content 2.1.0, you can now control on a per-field basis which fields are included with the automatically generated forum topic. A new "Topic Format" option is available for each field in your databases, allowing you to control how that field is represented in the topic that is posted.

If you leave the "Topic Format" option blank, the field will not be included in the automatically posted topic. Otherwise, you control the format very much like you would control a profile custom field - you can define a "{key}" and a "{value}" macro which IP.Content will replace appropriately. With this new option, you can control which fields are included (or not included) in the topic that is posted, and how they will be formatted. You could use this capability to create a form on your website which in turn posts topics in a hidden forum for your staff to review, or you could include more details about an article (such as the article image) when it is posted. This new option should give you much better control over the topics IP.Content creates in your forums.


Better Synchronizing of Articles
IP.Content 2.1.0 will include a new hook that will allow for comment counts to be more accurate when you use the forums to manage comments. Now, if your moderators delete a comment from the forums (instead of from IP.Content), IP.Content will be properly updated so that it reflects the accurate comment count.

Additionally, when IP.Content posts a topic to host the comments for the article, a link to the article is now included automatically at the end of the post. This may seem like a minor detail at first, but this will help better integrate and cross-reference the content on your site so that your users can more easily discover everything you offer.


Re-Use Existing Topics
Many users have requested a way, when they promote a post to an article, to be able to use the existing topic to host the comments for the new article. Currently with IP.Content 2.0, when you promote a post to an article and you use the forums for the comments, a new topic will be created. You now have more control over this process in IP.Content 2.1.

There is a new configuration option in the ACP under "Promote Article Settings" to allow you to control this new behavior. The options for this setting, labeled "Allow promoter to associate article?", are "Do not associate", "Allow promoter to choose" and "Automatically associate". When you select "Do not associate", a new topic is created, just as IP.Content 2.0 currently behaves. When you select "Automatically associate", when the post is promoted to an article the existing topic is automatically associated with the article, in order to host it's comments. When you choose "Allow promoter to choose", an option is available on the promotion form allowing you to re-use the existing topic to host the comments for the article.

It is important to realize some caveats with this capability:


While the option to "move" a post may still be available, this could result in breaking the topic association if you promote the first post in the topic to an article. It is strongly recommended that if you are planning to associate articles with their existing topics that you disable the ability to "move" posts. Promoting a post in the middle of a topic will result in the entire topic (including posts made BEFORE the one that was promoted) to appear to be comments of the promoted post. This could result in unrelated posts appearing to be comments of your articles.


Notwithstanding the above noted "gotchas", this new capability is a highly requested feature that we hope allows you to control the way your articles and forums are integrated in the manner you see fit best for your site.
  • 6,491 views
Evolution
Six years ago, before Twitter existed and before Facebook became popular we launched "Invision Gallery". It was a simpler time. Not everyone 'surfed' the web with javascript enabled and in general interfaces were fairly basic. The Gallery mimicked a forum structure. It had categories which the administrator set up and allowed members to upload images. Other members could comment on those images and it worked great.

A little further down the road we added albums so members could create their own albums. These went inside a special category called "Members". This worked great.

A few years back when we upgraded Gallery to be IP.Board 3 compatible we added a newer front-end that did away with the normal category view and added the "boxes" that we're used to seeing now. This was great.

Although Gallery was starting to show its age. The web has moved on. Interfaces are more fluid and dynamic. People don't want to click through a dozen links to upload a picture. The additional functionality added over the years started to cripple the interface so that many found it confusing. Even setting up the basic permissions and categories caused a few to reach for technical support in frustration.

Clearly it's time to take Gallery apart and start again.

Revolution
The "truth" of the application is very simple:

Upload some media into an album
View, discuss and share that media.

Our aim is to streamline those processes so that they are intuitive and modern. We're not content with basic static pages anymore. We want to interact with the site like we would a desktop application and the new Gallery delivers that experience.

IP.Gallery 4.0 is a huge upgrade; the single biggest upgrade it has ever seen. We're blasting out the cobwebs and introducing a slick new interface that never loses sight of what a Gallery should be. We're simplifying permissions and accessibility to remove the clutter and confusion. We want you to fall in love with Gallery again.

Over the coming weeks I'll be discussing the new functionality in more depth, but until then, I'll leave you with a few teaser images:






For this one blog entry, I'm going to close comments and ask that you post your feedback in the Gallery forum.

We'd love to hear what you think.
  • 2,856 views
Every administrator wants to have complete control over the web pages on their site, and this is what IP.Content is all about - allowing you full control over your site's content, right from your admin control panel. While IP.Content is already extremely configurable, we have taken the software even further with IP.Content 2.1, giving you finer control over some key aspects of IP.Content.


More Control Over Searching
With the first release of IP.Content, the central IP.Board search routine only supported searching IP.Content "pages". With IP.Content 2.0, we added support for searching within articles, databases and comments (in addition to the existing page searching support) from IP.Board's central search area.

While this has proved useful and well-received, many administrators have requested more configuration options for IP.Content with regards to searching. IP.Content 2.1.0 will include two primary, oft-requested options that allow you to better control how searching on your website responds to requests.

1) You can now configure in the IP.Content settings which area to search by default when a user searches in IP.Content. In IP.Content 2.0, "Pages" were the default and this could not (easily) be changed. Now, you can configure IP.Content to search Pages, Articles, Article Comments, any databases you have, or comments in any databases you have by default (the user can still change this from the advanced search form and the search results pages as before), depending on what is best for your site.

2) You can now shut off searching within individual databases on a per-database level. When configuring the database you just toggle a radio button, and that database is no longer searchable through the central IP.Board search routine. When you turn off searching in a database, searching in comments within that database is also automatically disabled.

These two new capabilities, combined, give you much more control over how IP.Board's central search areas behave with respect to IP.Content.


Multiple Domain Support
When you run IP.Content outside of your forum root directory, you supply the URL to the index.php file in the admin control panel. IP.Content uses this information to format the URLs to pages, and to understand which page was actually requested by the user. Some users have expressed their desire to run IP.Content from multiple locations on their site, for instance "articles.site.com" and "media.site.com", rather than running all pages under one base URL.

With IP.Content 2.1.0 we have changed the setting "URL to index.php" from a text input field (which only allows one URL to be entered) to a textarea field, allowing you to enter as many URLs to the index.php file as needed, one per line. After you have supplied the URLs to the index.php file (or files), you can upload the special index.php to each location specified, allowing you to run IP.Content from more than one location on your site. IP.Content will then be able to parse any URLs you have configured for in the ACP.


Search Engine Optimization
A new configuration option has been added to the page configuration wizard which allows you to omit the page's filename from the URL when generated. This option will only work correctly for pages with the same filename configured under "Default home page" (index.html by default). The purpose of this setting is to indicate to IP.Content that when it generates URLs to the page, not to add the filename on to the end.

For instance, if you have configured IP.Content to run from the root of your site, you may want users to access the homepage through the URL "site.com/" rather than "site.com/index.html". This new option allows for you to tell IP.Content to do just that.



We hope you will find some or all of these new options useful. While these new capabilities aren't exactly whiz-bang new features, they allow you to more finely control how your site works, and after all - that's what IP.Content is all about!
  • 4,754 views
Blocks are a core concept in IP.Content, allowing you to easily create widgets that you can embed on any page (within IP.Content or otherwise). IP.Content 2.1 introduces several useful updates for blocks that we believe will help you customize your pages even further than before.


Status Updates Plugin Block

IP.Board 3.1.0 improved status update functionality greatly, adding multiple status update support, commenting, and more. Along with this new functionality, the status updates sidebar plugin that is displayed on the forum index was updated to support the new features.

IP.Content 2.1.0 introduces a new plugin block that allows you to display this status update plugin on any IP.Content pages you wish.


New Feed Blocks

As of IP.Content 2.1.0, you will now be able to create feed blocks of both profile comments and status updates (and replies). This new feed block is available in addition to the previously mentioned status updates plugin block. You can filter both feeds to control what content is pulled based on the poster and receiver information (for instance, show all profile comments made by my friends, or show all profile comments received by the admin of the site). These feed types can be useful for creating social networking style pages - perhaps you want to show a feed of all profile comments for the currently logged in user, or perhaps you want to show a feed of all recent status updates from the logged in user's friends. These new feed types can be used in creative ways to create social pages your users will love.


New Filter Options: Members Feeds

Beginning with IP.Content 2.1.0 some new filtering options have been added for member feeds. You can now restrict a member's feed to only show members you are friends with. This can be useful to create a "friends feed", for instance, in order to list all of a particular user's friends. You can also now filter member feeds to only show logged in users. You could, for example, combine this with the option to only show friends for a user to show all of your currently online friends. These two new filter options can be used in creative ways to make interesting member feeds for your community.


Dynamic Filtering for Databases

In IP.Content 2.0, you can filter database and article feed blocks based on arbitrary data in up to 5 fields. This can be useful to create content-driven feeds based on specific fields in your database, however it has the drawback that the feeds are always static based upon the configuration in the ACP.

Beginning in IP.Content 2.1.0, you can now configure the database and article feeds to filter based on input variables. For instance, you can embed one of these feed blocks on a page, and then when you link to the page you can add an input variable that will allow for dynamic filtering of the content. This is probably explained easiest through an example.

Let's say you have a page "results.php" that you have embedded a database feed block in. This ecan create a feed of results from your database based on the block configuration in the ACP. With IP.Content 2.1.0, you could set one of the custom filter fields to search one of your database fields for "@title". The @ symbol here tells IP.Content to obtain the filter from the input variables - in this case an input variable named 'title'. When linking users to this page, you would use a URL similar to "mysite.com/results.php?title=hello". When IP.Content loads this page and parses the block, it will use the value from the input variable ("hello" in this example) to search in the field, finding all records that have "hello" in the title.

This feature may be hard to understand at first, but affords developers with powerful ways to create unique pages without having to manually configure feeds for every possible scenario. We will be posting some documentation on how to use this feature following the release of IP.Content 2.1.0.



We hope you find these updates to the blocks in IP.Content 2.1.0 useful and look forward to your feedback!
  • 4,970 views
Improvements to Template Management

Development of IP.Content 2.1.0 is well underway, and we've reached the point where we are ready to start sharing with you some of the things you can expect to see updated in IP.Content 2.1.0. We hope you are as excited as we are about the upcoming update, so without further ado, let's cut to the chase...


Revision Support

Have you ever been editing your page templates and made a change that you wish you could undo, but weren't sure what the template was like prior to making your change? Or maybe a helpful admin on your site made a change to a database template that you later discovered broke some functionality that you had previously added? There are often times when you may wish to review, or possibly even restore, a previous version of one of your templates. With IP.Content 2.1.0 this will be possible through the administrative interface.

Anytime you edit a template in IP.Content 2.1.0, a backup of the template is saved in the database. A new menu option available for each template allows you to easily review all of the stored revisions.





When you click on "Manage Revisions" it brings you to a new page that will list all of the stored revisions for a given template in reverse chronological order.





From this page, you can edit and delete any previously stored revision. You can also restore a revision from this screen. If you restore a revision, the current copy of the template is stored as a revision for future reference. You can also compare a revision from this page against the currently active version of the template, allowing you to pinpoint exactly what has changed.





In addition to all template types (page, database and article templates), revision support is also available for pages! That means if you need to restore an older copy of a page, you no longer have to worry about finding a backup somewhere - just use the revision manager to keep track of all your changes, and backtrack through them as needed.


Sharing Made Easy

Many of our users have asked for an easy way to share templates, and we are pleased to announce that IP.Content 2.1.0 will now include the ability to import and export any of your page, database and article templates.

From the template listing screens, you can now export both individual templates AND entire categories of templates







If you export an entire category of templates, the category and ALL templates in the category will be included with the export. Of course if you export a single template, only that template will be included in the export.

After you export the template, you can then import the template into any IP.Content template screen.





If you import an XML export that contains a category, the category will be inserted if it does not already exist. All templates that do not exist will be inserted as well, otherwise templates that already exist (based on the "template key") will be updated.

We hope that the ability to export and import templates will help customers in 2 primary ways

We hope these template manager updates provide you with useful tools to help you better manage your website. We also hope that the import/export functionality is utilized to build a robust collection of community-contributed templates that everyone can benefit from. If you have any questions or feedback, we'd love to hear from you! Otherwise, stay tuned for our next IP.Content development update blog entry...
[*]It should now be much easier to transfer templates from a development site to your live site. After setting up your database, article or page templates how you want, you can export them and import them into your live site. [*]Skinners can now create IP.Content templates and share them easily through the resource site. This allows for skinners to share free and paid IP.Content templates with users, and allows users who are not as familiar with HTML and CSS an easy way to install templates without having to code them from scratch.




  • 5,277 views
Since we announced IP.Nexus back in May, the interest shown has been phenomenal. We have held two limited pre-sales of IP.Nexus providing participants with a beta version of the product to provide feedback and testing beyond our internal QA team.

The ideas presented by the participants of these pre-sales has been invaluable. By using Nexus in real-world situations, users have provided some great ideas both for putting the finishing touches on 1.0 and for future versions. I wanted to go over some of the bigger things we've improved on since my original development entries so you can see how the feature-set has progressed thanks to these pre-sales.


Improved Tax Classes and Shipping Methods

For users selling physical items, we have improved and expanded on the tax class and shipping method functionality and interface.

It is now easy to set up multiple tax classes with rates dependant on the location of your customers, and flexible shipping methods which are also location-dependant and taxable.

See these short videos for an short overview:







Upsell

Lots of stores offer addon products and services for a product. When a user adds an item to the cart, this is a perfect opportunity to present such addons to customers to upsell.

We've added this to IP.Nexus. This is an example of what you might see now when you add an item to your cart which has addon services:




Improved IP.Downloads Integration

IP.Nexus integrates with IP.Downloads in a way that allows you (or even your users) to add files to IP.Downloads and specify them as being paid.

While this works great if you're selling single files, some users wanted a way to sell items through the IP.Nexus Store, but still be able to take advantage of the great IP.Downloads file handling features like secure non-web-accessible files and version handling.

We've tightened up the integration between IP.Downloads to provide an additional option when uploading a file: the option to associate a download with an IP.Nexus package.

To the administrator, what this means is, if you're setting up a package in IP.Nexus which you'd like to add a download to, you would then go to IP.Downloads and add the file there. You can use a category no users can access to make the process a bit more seamless, but if a user who hasn't purchased the package stumbles across the file in IP.Downloads, they'll simply be redirected to the Store if they try to download.



To the user, when they purchase an item in IP.Nexus which has a file associated with it, they will then see a "Download" button when they view that package in the client area:



Clicking that link will begin the download immediately - the integration is completely seamless to the user.

You can of course, have downloads which are associated with more than one package, and packages that are associated with more than one download (multiple download buttons will show).


IP.Nexus Release Schedule

As we have received so much great feedback from our pre-sale beta testers, we have been implementing many of their ideas and fixing issues they have discovered. This does mean that the first supported release of IP.Nexus has been delayed as we add new requests and then must test those new additions. However, we believe that taking this extra time to mature and expand the product's feature set will benefit everyone in the long run. As IP.Nexus deals with commerce on your community we of course want it to be as stable as possible for its first release.

We are anticipating a final, supported release of IP.Nexus sometime in October at the current time. We may do another pre-sale between now and then for those who cannot wait to try IP.Nexus so keep an eye on our Blog or subscribe to our Blog for updates.

Thank you all for your interest!
  • 6,264 views
We are very excited to be nearing the first public beta release of IP.Nexus! There has been much interest in the community for this new product and we cannot wait to get it out the door so everyone can start to enjoy its ecommerce, support, and other features.

As this product deals with monetizing your community, we are being very careful with its release. We do not want to release a product that might be unstable when it is designed to collect money on your behalf. Therefore, we are going to offer pre-sales for IP.Nexus in two phases. We are now ready for the second pre-sale phase. This second phase is available for purchase now and will be available for 24 hours.

The final, retail price of IP.Nexus will be $74.99 plus an optional renewal of $35 every 6 months for continued support, services, and upgrades. For this second round of limited pre-sale, we will be offering those that purchase during the next 24 hours to buy IP.Nexus at a reduced up-front price of $50 plus no renewals for a full year.

In return for a large discount, those choosing to participate in the pre-sale phase will have access to a beta release of IP.Nexus and a private forum to give us feedback. Please note that if you are one of the pre-sale participants, no ticket support will be offered. You are also going to be using beta software so there will be issues and we will appreciate your feedback and bug reports.

To order, simply login to the client area and click New Purchase. You will see IP.Nexus under IP.Board Optional Addons. Once 24 hours has expired it will disappear so act now! Once you purchase, login to the company forums with same you use in the client area and you will see an IP.Nexus testing forum appear under the Customer Lounge forum.

Promotion Expired

The 24 hour time for this promotion has expired. Thank you!
  • 7,084 views
IPS is constantly looking for ways to improve, and one area of focus is documentation. We get a lot of feedback regarding documentation, and quite frequently the feedback we receive is, unfortunately, too vague to act on specifically. It's always a pleasant delight to get specific, focused feedback on how we can improve.

Last week I happened across a topic on our forums with just this kind of feedback, and after reviewing the suggestion and what it would take to implement, we agreed that the work was worth it. Cap'n Refsmmat posted some well-thought-out, clear and concise feedback on a specific action we could take that would make finding documentation easier, and I'm happy to announce that this change has been put in place on our website.

It was pointed out that as a user, it doesn't matter too much where the documentation you are searching for is located specifically. Whether it is a community article, official documentation, or an error code - you just want to find out more information, regardless of where that information is located. Today I built a few Sphinx search indexes of our downloads area, our error codes database, our official documentation, and our community-submitted articles, and then built a search interface to query all of these areas at once. We have replaced the search form in our documentation area with this new search utility.

Feel free to test out the new search tool and let us know what you think! Just head on over to our documentation page and use the search box at the top of the page to look for whatever it is you need to find. We may evolve this new tool further in the future, but for now we hope that it helps you find what you are looking for with less hassle and bouncing around.
  • 2,661 views
We are very excited to be nearing the first public beta release of IP.Nexus! There has been much interest in the community for this new product and we cannot wait to get it out the door so everyone can start to enjoy its ecommerce, support, and other features.

As this product deals with monetizing your community, we are being very careful with its release. We do not want to release a product that might be unstable when it is designed to collect money on your behalf. Therefore, we are going to offer pre-sales for IP.Nexus in two phases. The first phase will be limited to 50 people and will be offered at a generous discount off the retail price. In return for this large discount, these 50 people will have access to pre-beta release of IP.Nexus and a private forum to give us feedback.

The final, retail price of IP.Nexus will be $74.99 plus an optional renewal of $35 every 6 months for continued support, services, and upgrades. For this first round of limited pre-sale, we will be offering the first 50 people to buy IP.Nexus a reduced up-front price of $50 plus no renewals for a full year.

Once this first limited, 50 sale offer is full we will not accept new sales until our second pre-sale which will come when the first, public beta is available. The second pre-sale will be offered to unlimited people for a short time so please keep an eye on our company blog for updates.

Please note that if you are one of the lucky 50 pre-orders, no ticket support will be offered. You are also going to be using pre-beta software so there will be issues and we will appreciate your feedback and bug reports.

To order, simply login to the client area and click New Purchase. You will see IP.Nexus under IP.Board Optional Addons. Once the first 50 are sold out it will disappear so act now! Once you purchase, login to the company forums with same you use in the client area and you will see an IP.Nexus testing forum appear under the Customer Lounge forum.

First 50 Sold Out

In just an hour we have sold out of the first 50 pre-sale licenses. Please keep an eye on our company blog for the public pre-sale coming soon. Thanks for your support!
  • 10,468 views
In IP.Board 3.1.0 we added a 'step through' form that users registering via Twitter and Facebook were prompted to complete before being fully registered. This was so that the user could choose their own display name and complete an email address when it wasn't available from the service (such as Twitter).



If a member chose not to complete this form then their registration would not be complete and their account would be missing some data such as a display name and valid email address. This led to some confusion when viewing the member list in the Admin CP.



Was this a bug? Was IP.Board mysteriously deleting member information? To prevent this confusion, we've removed these 'incomplete' members from the member list and added a new section to manage them.



This new section clearly lists those members that are still in the process of completing their registration. It also identifies which service they used to start the account creation process. If you choose to delete these partial accounts, the member can always re-sign in to repeat the process.

We hope this little feature cuts down on confusion and removes 'clutter' from the Admin CP member list.
  • 11,934 views

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.