Jump to content
View in the app

A better way to browse. Learn more.

Learn more

Invision Community Blog

Having a great forum skin is something every forum owner craves. A great skin is a big selling point, as it gives visitors a good first impression, and it colors (pun intended) the overall experience of using that forum. While a great many sites are perfectly happy with the stock IP.Board forum skin, getting something new is often a top priority for sites that are trying to make it big. Up until now, you've had a few options for this:


Download or purchase a skin from IPS Resources, or a third party resource site Pay a skinner to make you a custom skin Teach yourself how to skin
While all of these options are certainly good choices, we'd like to introduce another option for you: our Skin Generator service. This is a brand new service we have developed and made available to those with active IP.Board services licenses as a special little perk.

The way the tool works is that it presents you with several options for customizing your skin, such as choosing different color choices:



Clicking on one of the color text boxes there gives you a small UI (from jscolor.com) to choose different colors. You can either use that dialog, or type in a hex color there. There is also an option to apply our 'contrast limiting' function, which attempts to ensure light colors aren't too light, and dark colors aren't too dark; it can be used, or not, to try and get the skin looking the way you want. Once you have chosen colors and any other options, click the Preview button to show what that skin will look like; that shows in the main part of the page. Here's a quick one I created to demonstrate this preview:



Note the tabs at the top for the different views, you can preview your choices in a couple of different forum views there. Here's a Topic View preview of this same skin:



Previewing the skins is cool enough, but it wouldn't be a very good skin generator if it wouldn't let you get the skin you created for use on your own site, would it? Below the options for choosing your skin colors, there is a box for choosing some options to build your skin download:



In here, you can name your skin, and choose the IPS applications you have installed, and their versions. By choosing all of these, your downloaded skin will contain all of the appropriate CSS, templates, and image files for all of these apps. No more worrying about whether the skin you got from a resource site has been coded to work with your IP.Gallery install!

Once you fill out this box, click Export, and it'll prompt you to download the .zip file of that skin; the Skin Set and Skin Image Set files will be included in that zip, ready for you to import into your site. Here's one I created and installed on my test board:



Please consider this a beta service at this point. As this is a brand new service plus it is doing something rather difficult (creating a skin automatically) we do expect many bugs. Right now this is designed for IP.Board 3.0.5. We will be upgrading it to IP.Board 3.1 when it is released. Please post any bugs you find or ideas you may have!

That about wraps it up, please let us know what you think, or any other features you'd like to see introduced in future updates! :)
  • 18,058 views
IP.Content has many features, and indeed it's quite possible to create a rather useful articles system using the custom databases feature introduced in IP.Content 1.1, however many of our users have been requesting a true "articles" feature since the first release of IP.Content. In typical IPS fashion, we've listened, and you will be happy to hear that IP.Content 2.0 introduces a new "Articles" module.



Building on existing functionality

As I mentioned, you can create a very useful and workable articles section using the existing databases features in IP.Content. The database feature accomplishes so much of what needs to be implemented for articles, in fact, that articles actually "build on" databases behind the scenes. Much of the interfaces will feel familiar, because indeed much of the code is shared between the two modules. This helps ensure consistency is met between the various sections of the site, and helps to ensure that bug fixes for one area are automatically and immediately carried over to the other. Many of the ACP pages will feel nearly identical to the databases section, and the majority of the features are available in your own custom created databases as well. We feel that the similarities with the existing functionality will help you to get started with articles quickly and efficiently, while the new features and functionality will help to set it apart from the rest of your databases.

Navigational flow and frontpages

In a generic custom database within IP.Content you will have a "categories" template (which displays a list of your categories, akin to the forum index page), a "listing" template (which shows the listing of records, similar to viewing a forum), and a "display" template (which facilitates displaying the actual record itself, similar to viewing a topic). The articles module separates here from the databases functionality a little, giving you some more options and flexibility.

The homepage uses a new template type we refer to as a "frontpage" template. When you first visit the articles section, this frontpage template is used to show you the landing page content. By default, articles that are flagged to show on the homepage will display on the frontpage, however you can naturally change the template to manipulate the data however you like. We will ship with 3 default frontpage templates:


1x2x2
This template displays a large article summary block at the top. The next 2 rows have 2 article summary blocks side by side. Finally, two more rows can display showing article summary blocks side by side. Blog
The blog-style template displays one article per row, showing the entire article text (or the first page of the article text, if it is a multi-page article). This is similar to what you might expect to see when you visit a blog. Single Column
This template displays one article per row as well, however instead of displaying the full article (or first page of the article), it only displays a small summary. This is similar to what you might expect to see on a typical news site.


You can of course also create your own frontpage templates, or modify our defaults to suit your own needs. It is entirely up to you, however we have included a few to help get you started.

Now, a user is likely to enter an article directly from the front page, since we bring articles to the forefront with the frontpage template. If so, they will reach a "display" template, just like they would with a standard custom database. However, if a user instead clicks through to a category, they will see a layout similar to the homepage, since you now will also assign a frontpage template to each category. The category will display articles in a fashion similar to the homepage (although you can use different frontpage templates per-category), instead of just providing a listing of articles as would happen in a standard custom database.

We do still have a "categories" template within the articles module, which is linked in our default site from the category block. You can make use of this if you want, however we believe you will find it secondary to the main navigation structure, instead of a primary focus as it is in other custom databases. There is also an "archives" template, which is similar to the "listing" template in any other custom database. It will list all articles within your articles section, and features sorting, filtering and pagination as appropriate.

Managing articles

The ACP interface for managing articles has similarly been overhauled, allowing for an easier and more efficient process of managing your articles. You can dynamically sort the listing of articles both in a lowest to highest and highest to lowest order, you can change the status of an article to published or draft using AJAX, and you can filter articles via multiple characteristics to allow you to easily and quickly find the content you need to edit. The form to add and edit articles has been cleaned up and condensed, making it a much quicker process to add or update an article.



When adding or editing an article, you will be able to set certain characteristics about the article. You can control whether the article shows on the frontpage or not. You can control whether the article will allow users to comment on it or not. You can also specify a comment cutoff date, after which comments will no longer be allowed. You can control when the article itself "expires", after which it will only be available when viewing the archive listing. You can change the article author to another member (using AJAX). You can even control, per-article, which article view template to use. This means that you can create a set of pre-defined article view templates (for instance, maybe one which displays the screenshot image on the left, and one which displays it centered at the top of the article), and then when adding your article you just select which template to use from a dropdown menu. Overall, you have a lot of control to ensure that your article is presented exactly how you intend. It is important to note that, just like with your other custom databases, you can create additional custom fields for your articles if you find that you need a field which is not presented by default.

There is also a frontpage manager page in the ACP, where you can quickly see all articles set to display on the front page, with the ability to remove any articles that should no longer be available on the front page. It is important to note that you can also control how many articles are displayed on the front page, and that your template can further control how many articles are displayed, based on certain conditions of the template. Thus, while you may have 20 articles set to display on the front page, only 10 may actually display. Your front page manager can help you control which articles, exactly, should display.



Promoting forum content

Along with the new articles section of IP.Content in version 2.0, we have added a "Promote to article" hook to the forums. Users allowed to use this new button will be able to promote any post on the forums to the new articles section of IP.Content 2.0.

The promotion feature has several options to ensure that it is flexible enough to meet your needs. Firstly, as the administrator, you can control which user groups are allowed to use the feature. You can allow both copying and moving of posts to the articles section. When you allow copying of posts and a user clicks on the promote button, a new article will be posted as a copy of the post. When you allow moving of posts and a user uses the feature, instead of copying the post to the articles section, it will be moved (with the original post in the forum being deleted).

You can optionally have a link left behind in the forums pointing to the new article. When a post is copied, this link is added to the end of the post. When a post is moved and a link is left behind, the post isn't actually removed, but rather replaced with the link to the new article. As the administrator, you can allow your users to specify whether to leave a link behind each time a post is promoted, or require that the link always be left behind.

This new feature should help facilitate promotion of valuable content on your site, and help enable easier content discovery by your vistors, registered or otherwise. As the search engine industry often says, "content is king". The content on your site is its most valuable asset, and this feature helps you better manage that content, to ensure it is benefiting your site as best as possible.



Before we move on, I would like to take a moment to mention that the articles section can also allow comments to be stored in the forums, just like your other databases. This new feature in IP.Content 2.0, discussed in a past blog entry, supports databases and articles alike.

New default site

By itself, we believe the new article section will help you better manage your site, and get you started using IP.Content quicker than ever. No longer will you need to manually create a database, create database templates, tweak them to suit your needs, add the database to a page, and so on. Instead, the articles section takes care of the majority of the legwork for you. So now that we've made everything easier to use from the outset, where can we go from there?

Well, not content to sit back even for a moment, we have redesigned the default site that ships with IP.Content to better highlight some of the features of IP.Content 2.0. By default, you will have two "pages". One hosts the new articles section, while the other is a demo of another custom database: a media section, linking to various youtube videos. We feel that the new demo site better shows off many of the capabilities of IP.Content, so that you can better understand how to use the system. Some of the things the new default site shows off:

Some default pages Some CSS "pages" Custom blocks holding variables An article category feed A "latest articles" feed A "latest article comments" feed A separate custom database


The default site will also populate some basic content for the above areas so that it is not empty upon installation.

We will not be inserting this default site for upgrading users (the expectation is that if you are upgrading, you're already familiar with the software and would only be deleting the default site content anyways), so we've decided to host a demo of the new default site so you can click around and see how it works. We will post some articles describing how we created some of these areas for you to benefit from near the release of IP.Content 2.0, in case you are curious how we accomplished certain functionality (such as the media database).

Take a look for yourself!

And with that said, head on over to our demo installation so you can take a look! This is an early look at the actual default site that will be presented with IP.Content 2.0 upon installation. We look forward to hearing your feedback, and we hope you are as excited as we are about the latest feature announcement for IP.Content 2.0. Overwhelmingly, the one thing our customers have requested for IP.Content 2.0 is a "true article system". We've listened, and a true article section is on its way.
  • 15,362 views
When we developed IP.Board 3, one of the main goals was to centralize searching and simplify it to provide results cleanly and concisely. Since then we have had a lot of emphatic feedback on how to develop the search further and to improve the interface.

We've have taken all that feedback on board and completely overhauled search making it more flexible and more useful. This blog entry lists the major improvements. There's a lot to get through, so lets get started.

Search Form

The search form has been redesigned with separate applications in mind. Right away you'll notice that there are radio buttons to select which app you want to search in which then presents its own filtering options.


As the filter and sort options are unique to the application, you can request to sort by very specific fields such as topic title, views, etc.


Full boolean searching is supported with the ability to choose the search mode between "match all words" and "match any words". Phrase searching is also available, for example searching for "roses are red" will find topics or posts that match that phrase precisely.

Search Results

This screen shot shows the search results as a topic list. You'll notice immediately two things; first it now shows hidden or soft deleted topics in the result stream (assuming you have permission to see them) and also a multi-moderation checkbox to the right.


As when viewing a normal forum, you can select multiple topics and perform moderation on them in a few clicks. This makes it much easier to moderate the board especially as the same functionality is applied to both "View New Content" and "Active Content" and User's Content.


We've also implemented the topic preview when you mouse over the topic row.


This screen shot shows the same search but listed as posts. You'll note it uses the familiar post template and also has multi-moderation available.

Multiple Content Types

Now that applications have more control over the search itself, you can specify multiple content types that can be searched. The 'members' tab allows you to search through members or profile comments.


This screen shot shows the result of searching in profile comments.

Finding User Content
As of IP.Board 3.1, "Find my posts" and "Find my topics" have been merged into a more useful view "User's Content". This works across all applications so you can quickly view all of the content the user has created. Remember that hidden and soft deleted items are also shown where permission allows making moderation even easier.


The new button on the user's profile.


The forum application's "Users Content" view. Note that this first view shows all topics the user has started and all topics the user has posted in, much like a "My Activity" feed.

This works across all applications, like IP.Gallery


Sphinx Integration
We added Sphinx integration into IP.Board 3 to provide a way to offset the resources used when members search. However, it was a very simple implementation and many filtering options were removed.

I'm happy to say that I've completely overhauled Sphinx integration so that it is identical to the regular search. Indeed, Sphinx is running on my local test board and all these screen shots are taken with Sphinx activated.

I'm also pleased to say that Sphinx is now used for searching, active content, new content and user's content views so you can take full advantage of the fast and efficient searching it provides.

That concludes our search updates. I hope that you enjoy these updates and that you find searching less of a chore in IP.Board 3.1.0 We genuinely appreciate all the feedback that we get and we've really listened with your search feedback.

Oh, one last thing...
If you'll excuse the Jobzian finale, there is one other improvement to the search system:


The global search box is now context sensitive so that when you are viewing a forum or topic, you have the choice to restrict your search.
  • 18,552 views
IP.Content is an extremely flexible system. While considering the possibilities with IP.Content and feeding content to your external pages, we knew that there were multiple options.




Using a database
You can create a database to store content such as articles, and then allow commenting on these articles directly. In doing so, you keep your articles and your topics separated. Using a blog
You could create a blog, and then create a feed block that pulls entries from this specific blog to your homepage. In doing so, you could create a dynamically updated homepage which is fed from a specified blog. You would not easily be able to allow commenting on the entries on the homepage, but the blog itself would still allow commenting. Using a forum
You could create a forum and then post your "news" topics in this forum. Then you can create a forum feed block to pull these topics to your homepage. This allows for easy syndication of topics you wish to show elsewhere, although you will again face limitations when it comes to allowing comments. Raw pages
You could certainly create new pages manually, and update them on your homepage. You could even create a topic manually associated with each page, and then feed replies from that topic to the page using a forum reply feed block, if you wanted.

Many users have expressed interest in a hybrid method not listed above. Specifically, many users have requested a way to use the forums to facilitate commenting on database records. As of IP.Content 2.0, this will now be possible.



Overview

Databases are segregated from your forums on purpose. They are their own "section", and are designed to run independently of the forums. Still, there's no reason that the two can't play nicely together, right?



With IP.Content 2.0, you will now be able to turn on and off the forum integration at a per-database (and per-category) level. When you do, submitting a record to the database will post a topic in a forum of your choosing. You can also optionally choose to use that topic as the comment storage container. If you choose to do so, comments made in the database will actually be posted as replies to the topic, and the comments displayed on the page will be the replies pulled directly from the topic.



Specifics

For each database, you can enable and disable the forum integration. You will be able to turn the forum integration on, specify which forum the topics should be posted in, specify a topic title "prefix" and "suffix", specify if the topic should be deleted if the record gets deleted, and enable the feature to use the topic to host the comments for the record.








Further to this, you can override these settings at the category level as well. By default, the categories will inherit the forum settings, but you can edit each category and override any of the above settings.








This allows you to create some interesting combinations. You could use the built in database functionality for all categories except for your news category, for instance. Or you can have IP.Content post the topics in an appropriately mirrored category structure in the forums. It's up to you!



You can also allow IP.Content to remove the automatically generated topic (and any replies to the topic) when you delete the record, as well. Additionally, any standard moderator actions (delete comment, approve comment, unapprove comment, etc.) will work seamlessly from IP.Content, both from the front end and from the ACP, regardless of whether you use the forum integration or not. While you can manage comments from the forum as well (for instance, if you delete a reply to the topic, that "comment" will no longer show up when viewing the IP.Content record), we recommend you use IP.Content to manage the comments. In some instances, IP.Content may need to take additional actions which will only be triggered when the moderator action is initiated from IP.Content.



Comments

When you enable the forum integration for comments, any comments made on the record are not stored in the IP.Content database tables, but instead are posted as replies to the automatically created topic. When displaying the comments in IP.Content, instead of checking it's local tables it will instead pull the replies to the topic and display them on the record page. Users will be able to comment on the record directly, OR post a reply to the topic (provided you give them appropriate permissions in the forums). Either way, the comment will be displayed appropriately when viewing the record in IP.Content.



Note that IP.Content will be able to post to the topic even if you do not allow any permission masks to access the forums you have told IP.Content to use. This means you can create hidden forums to host the topics if you want, or you can create forums that are open to everyone. Some users may prefer to navigate your main website (powered by IP.Content), while some users may find navigating your forums more familiar. Using this new integration option, you can cater to both demographics on your site easily, all the while without increasing your workload or duplicating the content inappropriately across your site.



The comments as displayed in IP.Content when using the forum integration appear the same way they would if you stored the comments locally. Your users won't know the difference. Note that if you leave reputation on a comment that comes from the forum, the reputation is associated with the forum post (so the user will not be able to visit the topic and rep a post again). Just for completeness, here's an example of comments being fed from the automatically generated topic anyways.








Upgrading

When you upgrade to IP.Content 2, naturally your existing articles won't have topics stored in the forums, thus comments won't be stored in the forums either. Any record that does not have a topic associated will automatically fallback to using it's local built-in commenting system, while new records submitted will use the forums as configured. This means that when you upgrade, you don't have to worry about any of your comments disappearing if you decide to make use of the new functionality.



Everything should work seamlessly so you don't have to worry about rebuilding records or missing comments. When you upgrade, you can optionally make use of this new feature, but it won't affect your previously saved records.



Wrap Up

We feel that this new capability in IP.Content solidifies the forum integration capabilities available with IP.Content, allowing you to create unique and creative site configurations. You can allow visitors to view the content from both IP.Content and the forums, or only from IP.Content, or only from the forums. You can opt not to embed the database into any pages, and instead just allow members to read the records and comment on them from the forums only. You can let IP.Content post a topic and all comments to a hidden forum to make moderation easier for your old-time moderators who aren't familiar with IP.Content. You have many options; this is the goal with IP.Content. To allow you to decide how your site should function. We look forward to hearing your feedback regarding this new feature!

  • 7,130 views
Templates in IP.Content are a useful tool that can save administrators a lot of work managing their site. They are utilized to facilitate displaying database content, and can be utilized to normalize the display of multiple pages through a shared template. We have made a few small tweaks to templates to make them easier to manage and easier to use in IP.Content 2.0.


Separation of templates

In IP.Content 1.x database templates and page templates were displayed on the same page. While they technically use the same backend system to render the templated HTML, it can be confusing for users to associate page templates and database templates on the same page. Utilizing containers can help separate the two types of templates, but we felt we should go a step further. In IP.Content 2.0, database templates and page templates are not displayed on the same page. Database templates now have their own page under the generic Templates header.


Container grouping

Within the template areas you can create containers to "contain" your templates. This is primarily used as a form of categorization and grouping, allowing you to group similar templates together. This is useful when viewing the templates on the template manager page, however templates are not similarly grouped when viewing them in dropdowns elsewhere throughout IP.Content.


We have enhanced the template dropdowns in IP.Content to display the appropriate template containers you have created in the dropdown menus, allowing you to more easily identify the templates you wish to use. The template containers are rendered as "optgroup" tags, so they will be unselectable (you won't be able to accidentally set a template container as your page template, for instance).


Developers may be interested to know that in implementing this change, we have enhanced the IP.Board admin CP output library formDropdown() method to accept an optional array of opt groups. You will be able to make use of this new optgroup functionality in your third party applications starting with IP.Board 3.1.


Identifier storage

Previously in IP.Content, we recorded whether a template was a database template or page template, however we never recorded what kind of database template you were saving (i.e. a "category" template, a "listing" template, or a "record display" template). Starting with 2.x, we now store what kind of database template you are creating, and in doing so we can better streamline IP.Content's options elsewhere.


When you create a database, only listing templates will be displayed in the listing template dropdown menu, for instance. This will help prevent users from accidentally setting a category display template as their listing template (in which case, no records are ever listed). Additionally, when clicking the link to display database variable help, we can now show you the variables directly related to the template you are editing, without having to ask you to select what kind of template it is first.


While this isn't an exciting change, for sure, we believe you'll find it streamlines management of your IP.Content installation, and makes your available options much clearer.


Template comparisons

We are introducing a template comparison tool for your database templates starting with IP.Content 2.0. When you upgrade to IP.Content 2.0, you will need to make template changes to take advantage of some of the newer features. For instance, to show the button to "watch" a record or category, the HTML for this button needs to be added to the template. It can be tedious and time consuming for you to have to manually create a new template and then copy over the customizations you have made to your previous template.


We have added a template comparison tool that will compare your database template to the default database template for that template type (i.e. to compare your database listing template to the default database listing template) so that you can quickly see what is different in your custom template compared to the default.


We believe this tool will help ease upgrades moving forward, especially upgrades where new features are introduced to the databases functionality in IP.Content.


Until next time...

We realize this isn't the most exciting blog entry about IP.Content 2, but we wanted to finish telling you about some of the smaller changes you should expect to see in IP.Content 2 before we get into the bigger things. Stay tuned for the next few blog entries. We think you'll like what we have in store!
  • 4,905 views
Add and edit hookpoints Based on requests from users integrating IP.Content into their website, we have added two new hook points to the database handler: postSave() and postSaveEdit(). These are called immediately upon saving the record to the database (for add and edit requests, respectively), and can be utilized to take action on a record after it has been saved. This could be used, for instance, if a file is uploaded or linked, and you need to take action on this file, but don't want to until the record itself has been accepted. Format numerically We have added a new field formatting option that will allow you to automatically format fields numerically, based on your selected locale. This option will automatically apply thousands and decimal separators to the value supplied in the field. "Bump" records with comments There is a new per-database configuration option that will allow you to tell IP.Content that when a new comment is made on a record, that record should be "bumped" to the beginning of the list. For this to work, you must be sorting your database by "last update". When this option is enabled and a new comment is made on the record, the last update timestamp for the record will also be updated, moving that record to the top of the list. Other contributors If you have a database configured that allows wiki-style editing, and you have revisions enabled for this database, a new line will be displayed below the "Submitted by:" field showing all members who have contributed to the record. This is useful in a true collaborative environment to allow you to see all users that have modified the record. You can still utilize the revision manager in the ACP for details of each revision, as well. Random database feeds You will now be able to order database record and comment feeds randomly, making these feeds more consistent with the other feeds you can create using the block manager. You can use this ability to show a block with 10 random records, for instance, helping your users to discover the content in your databases easier. Database category feeds You will now be able to create feeds of the categories within a database. The feed template has some slight modifications made to it in order to display the categories in a more natural display than you would use for records. Hierarchy is preserved with the feed. More consistent linking In IP.Content 1.2 and below, many of the links to the databases require using a "redirecter" link to get there. By that, I mean that instead of linking directly to a category or record on the page it is actually located on, we link to "app=ccs&module=pages&do=redirect&database=1&record=1" (for example). This is effective and efficient, however it is not the most desirable setup naturally. In IP.Content 2, the actual link to the resource is correctly used instead. Primarily, you will notice the changes in feeds. Canonical tags And while we're on the subject of SEO and consistent linking, the next feature we'd like to announce for IP.Content 2.0 is that of canonical tags. Canonical tags will be automatically determined and added to pages and databases (including category and record display pages in databases). This will help to ensure that any additional links that may load a page or database record will pass it's link value through to the correct canonical URL. New field type: uploads The attachments field shipped with IP.Content 1 works well, and is very consistent with IP.Board posting. Your users will find it familiar, and indeed in most cases this may be the best field to use for your specific needs. However, many users have requested the ability to upload single files, often because they would like to be able to manipulate these files from the listing template (for example), or because they want more control over how the files are embedded into the actual record. IP.Content 2.0 introduces a new single file upload field which you can use to upload single files. You can add more than one of this field type to a database (there is no hardcoded limit), and the value that will be seen by IP.Content is simply the URL to the file you've uploaded. There is no image resizing or other functions executed with this particular field type - it is a simple field to allow you to upload a file easily. You can use this field type for any file type as well (you can define which file types are allowed with the field when configuring the field in the ACP). When editing records, a note will be displayed below the upload field to let you know if a file is already present and will be overwritten by uploading a new file. A checkbox will also be available to allow you to easily remove the file without uploading a new one. Resize image template plugin When implementing the single file upload field, we begin experimenting with ways to embed the content within the record, and found that it would be useful to be able to dynamically resize images that were uploaded, even if we didn't resize the file itself. Even just specifying width and height parameters to the image would allow us to manipulate the display for our specific purposes. To this end, we've added a new template plugin that accomplishes just that. Note that template plugins can be used all over IPB and are not restricted to IP.Content specifically. You use the template plugin by embedding the following:
While we work to wrap up some of the IP.Content 2.0 changes we'll be discussing in upcoming blog entries, I wanted to take a moment to give everyone a quick update on some of the smaller changes and tweaks we've already implemented in IP.Content 2.0. These small, but useful, tweaks and feature enhancements are sure to allow you to take IP.Content databases in new directions.


































































{parse resize_image="url or path to image" maxwidth="100" maxheight="100"} The plugin will determine the proportionately resized width and height values that fit within your constraints, and return the string "width='x' and height='x'" to suit your request. Note that maxwidth and maxheight are both optional parameters (you could restrict based on width only, for instance), however at least one must be supplied. Multipage records We have added a new custom bbcode that can be used within IP.Content to create multi-page records. The bbcode is very easy to use. Below you will find an example:











[/page][page] This is the text for page 2 [/page][page] This is the text for page 3
This is the text for page 1







Effectively, you just insert " Moderator "add record" permission While IP.Content does allow for some separation of authoring and editorial duties, many of the lines are blurred and a true editorial process is not always clear within this environment. We made some small enhancements to the moderator duty capabilities in IP.Content 2 to overcome this. There is a new permission option for moderators: "Add Records". Utilizing this permission, you can easily create a true editorial review process for all articles posted on your site. You can now create "moderators" who have only "add record" permissions. These moderators can post new records into the database, but cannot edit or approve those records. Then, you setup your editors as moderators with enhanced permissions in the database. These are the users that can edit, delete and approve records. Your authors will then add the records, and your editors will edit, review and approve the records the authors add. By utilizing a multi-step process, you cut down on grammatical, spelling, and factual errors in the content posted on your site. Share links A week or two ago, we can expect to see in IP.Board 3.1. This new sharing link functionality will be integrated with IP.Content 2, as well, allowing you to easily share (or email/print/download) any record in your IP.Content databases. Comment reputation Going along with the last feature, in keeping consistent with IP.Board we have integrated reputation into IP.Content database comments. You can now leave reputation for database comments, just like comments in other areas such as IP.Blog, and these comments will automatically be hidden or displayed based on your configured reputation preferences. You will be able to quickly view comments hidden through negative reputation filtering by clicking a link presented with the comment. Subscribe to records and categories And last, but not least, for today: the ability to watch categories and records in IP.Content 2.0. You will be able to click a watch icon (which will change to "Stop watching" if you are already subscribed) in categories and when viewing records starting with IP.Content 2.0. Upon clicking the button, you will begin receiving notifications of new records in categories you subscribe to, and new comments made to records you have subscribed to. These notifications honor your configured notification preferences in IP.Board 3.1. AND THAT'S NOT ALL! As you can see, there are a lot of exciting changes coming to IP.Content 2.0. We feel that many of these changes round out the database features significantly, bringing its functionality in line with that of IP.Board, both for consistency, and to allow you to offer your users more functionality that they are already familiar with. We still have some more great features we can't wait to tell you about, but we hope these tidbits will tide you over while we work to finish up those other enhancements. We're working hard to make IP.Content 2.0 a great release. We hope you're as excited about the upcoming changes as we are!




" where you want a page break inserted. The custom bbcode takes care of the rest, inserting page links (which you can style independently of the main IP.Board pagination links) below the article content for the specified page. Here's a screenshot that will make this a little clearer (in this screenshot, we are on page 2).
















Matt blogged about the new sharing links functionality




















[contentpagination=4]
  • 5,824 views
In IP.Board 3.0 we introduced a simple reputation feature, allowing users to give positive or negative reputation to a post.
While administrators can view who gave reputation through the Admin CP, in IP.Board 3.1 we have introduced a way for all users to view who gave reputation on any given post.

To view who gave reputation, you just click on the reputation number at the bottom of the post which will now display a popup balloon indicating who has given reputation.


There is a per-group setting to control who can use this feature. If a user does not have permission to use it, the number will not be clickable and appear unchanged from how it currently is.

The data is loaded through an AJAX call when the link is clicked, so there is no additional queries to the topic view for this feature.
  • 12,189 views
We recently blogged about our new profile customization options. I've made a few updates since and wanted to update you on them.

As you may already be aware, we have added Twitter integration into IP.Board 3.1. This enables you to 'connect' your Twitter account to your forum account to share links, status updates and to allow you to use your Twitter photo on the board.

I've taken this a step further and added an option to allow you to import your Twitter background preferences to your profile:


My test Twitter account with using a different Twitter theme


The background preferences (img and color) imported into IP.Board


The preferences control panel

I've also added a few handy links to the Profile Customization control panel. These links allow you to revert all customizations, remove just the background image and load your profile to see the changes:



I've also included a quick way to remove your own customizations while viewing your profile:



And if you are a "Super Moderator", then you remove and remove and disable customizations on any profile you view:



We hope that you enjoy this feature and allowing Twitter to set your background further personalizes your board profile and re-enforces your own personal brand.
  • 15,571 views
While not a particular interesting blog entry :) I wanted anyone interested to know that our demo service term has been extended from 24 to 48 hours. As always, you can email sales for a further extension if you might need more time.

If you are considering using IP.Board now is a great time to get your proverbial feet wet on version 3.0.5 so you are ready as soon as the upcoming version 3.1 is released! If you have any questions, feel free to email [email protected] to speak to our sales staff or post in our pre-sales forum for friendly help from the community.
  • 3,901 views
We read virtually every piece of feedback we receive, even if we don't reply and we often see the same requests coming up. The ability to 'preview' the topic by viewing an excerpt from the first post is often requested and we've added this into IP.Board 3.1.

We've made it a little more useful by also including the last time you read a topic (if applicable) and the number of unread posts so you can quickly review how much activity has taken place since you last read the topic.



When you 'mouse over' a topic entry, you'll see a little 'pop-up' icon. Clicking this loads an excerpt from the first post along with some data underneath. This is very useful for moderators who can quickly review un-approved topics and well as being useful for normal members who can quickly decide whether they want to open the topic or not.

Technical Details:
- Icon appears for moderators / admins and normal members. If there are no moderator tools, it shows on its own.
- When you mouse over the cell, the icon is "faded" until you mouse over the actual icon.
- Data is loaded via Ajax to reduce mark-up required in the templates.
- The post excerpt is stripped of all BBCode and mark-up to prevent it breaking out of the pop-up.

This feature adds a little more functionality and polish to the forum index allowing you to perform your daily routine a little quicker and a little easier.
  • 16,089 views
The IP.Board 2 series introduced a number of new profile features designed to make your profile page a little more interactive. Besides the usual stats and figures, we introduced a personal photo and the ability to leave comments and list recent visitors. This made your profile page a little more personal and encouraged repeat visits.

With the status updates feature in IP.Board 3.1, the profile page is becoming increasingly like a little user portal. With that in mind, we've extended the personalization options to include profile page background customization. You can allow your members permission to add a new background image or change the background color which instantly changes the feel of the page.

Here's an example of my own profile:


I've chosen a beach scene, so I've not tiled the image. This allows the image to not repeat and remain 'fixed' so that when you scroll, the background doesn't scroll with it.

You'll note a new menu item in the User Control Panel:


Naturally, you as the administrator can control which groups have permission to do this:


When the user adds a profile background, the margins on the profile page increase so you can see the background image. If the user doesn't have a background image set, the profile appears as normal with minimal padding. You can adjust this by editing the profile page CSS as normal via the Admin CP.

The profile page has undergone a few tweaks to make it a little neater. We've moved all the user's information into the left hand bar leaving more space to the right for other data such as the status updates, etc. We plan to develop user customization further in future releases.

Technical Notes:
- Group settings to enable / allow uploads / allow URL images / maximum upload size
- Ability to disable on a per-user basis
- Ability to tile an image, or to fix it (background-repeat: no-repeat; background-attachment: fixed)
  • 19,637 views
IP.Content is a complex framework that allows you to create and manage website content in many different ways. You can embed blocks and databases into pages, and pages can be wrapped by templates. You can define page names and use friendly URLs through the IP.Board built-in FURL system, you can use friendly URL's through the included index.php file with IP.Content (for instance, if you want your website in the root of your domain, and the forums in a subfolder), or you can optionally not use friendly URLs at all. Because of the many configuration options, and the fact that you are already embedding a database within another friendly URL system of sorts (given that you define the filename of your page already), friendly URLs were not supported in IP.Content 1.


They will be in 2.x, however.


We have added support for databases in IP.Content 2.x to utilize friendly URLs. To make use of this support, you will need to be using an existing friendly URL method (accessing IP.Content through the included index.php file, or using IP.Board friendly URLs).

The index page of a database lists the categories contained within the database, and is accessed by accessing the page the database is embedded on. For example, if you embed your database on a page called "database.html", then you may access your category index page at



http://domain.com/database.html

In IP.Content 1.x, if you clicked on a category from this page, you would see a URL similar to the following



http://domain.com/database.html?category=1

Arguably, the URL is still "friendly", but "?category=1" doesn't really tell you much about the link you are clicking on. In IP.Content 2.x, you will now define the friendly URL name for the category by editing the category in the ACP. The upgrade process will automatically set a friendly URL name for your categories based on the category title, but you have free-reign to go back through and set the categories to be accessed as a different name if you wish. If I set the category 1 friendly URL title to be "ipb-rocks" for instance, the URL to the category is now



http://domain.com/database.html/_/ipb-rocks

Because categories are defined by administrators and we are able to do error checking while saving your category configurations, categories do not require any additional information in the URL (such as the category ID).

This page will list the records stored in the category. In IP.Content 1 those records would be accessed as follows:



http://domain.com/database.html?record=1

Again, this isn't unfriendly, but we can do a little better. Similar to topics in the forums, records will automatically inherit their title based on the specified title for the record. For instance, if the record title is "IP.Content is cool!", it will be automatically rewritten to the following URL



http://domain.com/database.html/_/ipb-rocks/ipcontent-is-cool-r1

In this instance, because titles can be duplicated and we wouldn't want to restrict record titles purely to prevent URL conflicts, we must add a marker with the ID to the end of the URL. IP.Content in turn uses this information to load up the proper record when this URL is requested. This is pretty useful in and of itself, however we went a step further.

IP.Content is used by many different customers in many different fashions. On some sites, anyone can submit to the database. On some sites, only administrators submit to the database. Because of the different configuration options, and because some databases are small and very controlled by nature, we knew that some administrators would like to remove the record ID from the end of the URL. So we built in support to do just that. If you would like to remove the "-r1" from the end of the URL in the last example, you need only login to the ACP, load up the record to edit it, and within the ACP you will have the option to specify the friendly URL for this specific record. If you manually specify a friendly URL for the record, it overrides the dynamic friendly URL and is used instead. You will not be able to set this same friendly URL for any other record, naturally, but you can edit the URLs at any time should you need to. Thus, you can turn the above record into the following URL



http://domain.com/database.html/_/ipb-rocks/ipcontent-is-cool

You may have already noticed, but it's important to note that IP.Content utilizes the category hierarchy within the URL for records, including for any sub-categories you may have configured. If you do not utilize categories for your database, that's fine as well - IP.Content will already know this and omit the category from the URL without issue.



While not related to the friendly URLs, there's something else I'd like to point out while we're discussing friendly URLs in IP.Content. You are not required to specify an extension for the pages you create in IP.Content, if you don't want to. If you didn't realize this, you can rename "database.html", in our example, to just "database" and the page will continue to function just fine. If you did so, your URL would become



http://domain.com/database/_/ipb-rocks/ipcontent-is-cool



I know some of you are going to ask about the "/_/" marker in the URLs posted above. It is not a typo. Because of the complexity and many configuration possiblities (pages can be in folders, which can be subfolders, with or without an extension, and so on), IP.Content requires some sort of "marker" in the URL so that it knows when the rest of the parameters are database information. We thought about setting some sort of word for this marker (i.e. "news") but quickly realized this isn't feasible, because everyone uses their databases for different purposes, and many of our customers do not speak English natively. Additionally, you may run one more than one database, however the marker itself is global to IP.Content. While the marker will ship as "/_/" in IP.Content 2.0, you can change it if you desire by editing a constant in an IP.Content file. We felt that having this constant was the the best way to ensure you had control over the marker, should you wish to change it, given that we cannot store this information as an ACP setting for technical reasons.



Your requests for friendly URLs in IP.Content 2.x have been heard. They will be available, and will work right out of the box based upon your existing configuration. We have much more in store, so stay tuned!
  • 5,668 views
The page manager, introduced with IP.Content 1.0, is a core feature to IP.Content. It allows you to create pages and folders, and manage those pages and folders, core functionality that IP.Content relies on for everything else. Page management has been pretty reliable and functional, but we decided we wanted to improve the interface for IP.Content 2.0 to make it sleeker, faster and even more functional.


Several interface tweaks have been (and are still being) implemented in IP.Content, and the page manager was one of the primary focuses of these interface enhancements. We'll quickly describe the major changes below.

Redesigned "buttons"


The IP.Board ACP interface utilizes a small "button" icon that is located to the far right of a row in the ACP that you can take action against. In most cases, you will click this button and then choose an option from a resulting dropdown menu. Here's a quick screenshot of one such button to give you an idea of what I'm referring to




While functional, Rikki has redesigned this area to allow for the more important buttons/options to be pulled out of the menu, while still allowing for the menu to contain further options you may need to take on a row, but likely won't be executing very often. This means that for your typical options (i.e. edit) you now have one click, instead of two. And it's a lot prettier to boot!





The folder rows allow you to quickly add a new folder or page under the selected folder, while the page rows allow you you to quickly edit the page. Additional options remain tucked neatly away in the dropdown menu, just a click away.

Quicker access to folders

In IP.Content 1.x, when you click on a folder you are taken to a new page that lists that folder's contents. If there is a subfolder, you can click on it to enter into that folder. While effective, if you have a deep folder structure, this can require some time to fully drill down to where you want to end go. There's an easier way than this, surely!

With IP.Content 2.0, when you click a folder, its contents will be returned via AJAX and displayed inline. Any subfolders will be listed, along with any files in the folder, right below the folder row that you clicked in (indented, to show "depth"). You can click on subfolders to return those results as well. here's a quick screenshot to show you what I'm talking about.




In this screenshot, I've clicked on "another-test" and then proceeded to click on "sub-another" to show its contents as well. With this method, you can quickly drill down into any directory without having to wait for several page loads to occur, improving resource usage and efficiency, while simultaneously reducing the time it takes to accomplish the same task as before.

Page filtering

When you just have 4 or 5 pages, it's not much of a task to find the one you need to edit. You can quickly browse the list of pages from the page manager and click on it to edit it. Once you start designing an entire site, however, and utilize folders to create sub-sections of the site, it can become increasingly difficult to find the exact page you are looking to edit. Setting aside any "difficulty" in navigating to where you need to get, if you have a 10-level directory structure, it obviously takes a little bit of time to drill that deep.

IP.Content 2.x features a new filtering field at the top of the page manager page. This filtering field utilizes live-search functionality to show you search results as you type into the field. You start off by typing in the name of the page you wish to edit. The display will switch to show you all search results for that page, and the folder the search result is contained within. From here you just click on the page and start editing. You can click the "x" icon to clear the search results and switch back to the normal page manager listing, all without any page refreshes.







If you know the name of the page you want to edit, but don't remember what folder it is contained within, this new filter capability can make it easier to find where you need to go without hassle.

More AJAX

We've utilized AJAX elsewhere on the page manager to make common actions quicker and smoother. For instance, if you click on a button to add a folder, and submit the new folder name, it is submitted to the server via AJAX and then displays inline where it should (i.e. as a subfolder of an existing folder, or in the main page manager root, depending on what folder you are adding your new folder to).

Deleting and emptying folders also utilize AJAX to accomplish these actions without the need for a full page refresh. Inline confirm prompts (newly restyled) ensure that you don't accidentally click the link without confirming that you truly want to empty or delete the folder.




Additionally, deleting pages also utilize AJAX to accomplish the task, again with the restyled confirm prompt to prevent you from accidentally removing something you didn't mean to.

Conclusion

Many of these new interface changes you will see introduced elsewhere in IP.Content, such as the new action buttons to trigger actions against a specific row of data. Other minor tweaks are being implemented elsewhere in the ACP as well, but we'll leave that for another blog entry. ;)

As always, if you have any questions or feedback, we'd love to hear it!
  • 4,996 views
Over the past year we have introduced new services that are available to our IP.Board Standard Licenses holders, such as the spam service and the chat service. We also have plans for more services that will be tied to your license. While this provides a lot of value to your license, managing these services is a cumbersome process, you need to create keys for each of these services and enter them in different areas of the ACP.

We're always looking for ways to streamline and improve your experience, toward that end we will be introduce a new centralized license key that will work for all services. Starting with IP.Board 3.1, all licenses will be given a single key that will grant access to all services available to that license. When we introduce new services, you will automatically have access to that service without having to log in to your client area account to generate a new key and activate it.

IP.Board 3.1 will include a new license manager in the ACP. When you first access the manager, you will see a screen that lets you enter your license key and your forum URL:



After you activate your license, you will be able to see the status of your license and all the services that are attached to that license:



Like all previous versions of IP.Board, your forum will function if you do not enter your license key, however you will not have access to any of the special extra services your license provides until you activate your license key. There will be a grace period where old spam and chat keys will continue to function, however we recommend that you activate your new license keys as soon as possible.

We hope that this simplification of our license key system will be beneficial to everyone and that you enjoy all the services it provides! As always feedback and suggestions are welcome.
  • 8,571 views
When we were developing IP.Board 3.0 we were looking for ways to lower the barrier for registering. There are many single sign in providers but most of them required separate registration and set-up. Around this time, Facebook released their emerging API "Facebook Connect". We seized the opportunity to implement it within IP.Board 3 and adhered to all their guidelines. The first implementation of the Facebook Connect API was less of a point of authentication but more of a way to appear as a member of a site.

This was slightly at odds with the concept of permanent registration at a forum and a few work-arounds had to be made. For example, there was no way to request your Facebook data without you actually being active on the board and connected (logged into Facebook). Also, Facebook did not allow you to request the Facebook user's real email address but instead had to make do with a long proxy email address that Facebook would use to forward mail to your Facebook account. Despite these limitations, it worked well in allowing users with a Facebook account to register almost instantly on your forum.

Since then, Facebook have updated their API dramatically allowing so much more functionality. Naturally, we have taken the opportunity to update the integration within IP.Board. You can now request several different permissions to allow IP.Board to fetch your Facebook data without you being online. Furthermore, IP.Board can now store a permanent "key" to link your forum account to your Facebook account meaning that you shouldn't see the "Connect" button once you initially set up your forum account.

As these permissions need to be explicitly granted, we have added a little section to the "Manage Facebook Connect" page to list the permissions IP.Board requires and whether or not such permission has been granted. If permission has not been granted, you will be give the option of requesting permission.



You can now also publish your status updates directly to your Facebook account using the new API methods:



This new implementation should clear up a lot of the current Facebook issues people experience, mostly due to authorization errors between IP.Board and Facebook caused by expired sessions.

The new methods also allow the new sharing links system.
  • 14,119 views
Following on from our recent blog entry about Twitter Integration, I'd like to present our newest IP.Board 3.1.0 feature: Sharing Links. This new feature makes good use of our improved Facebook Connect integration and the new Twitter integration.

As most Facebook and Twitter users have discovered, sometimes you see a link to a great article or topic and want to share it with your friends and followers. This new feature makes this very easy to do. You don't even have to leave the page to do it. The ease of use will encourage your members to share your links among their friends increasing the traffic to your forum.

If you have connected your forum account to Twitter and Facebook, then clicking on the share link icon for those services loads a pop-up enabling you to tailor your content before sending it. Of course, there are many more places to share links which is why we've included a few other methods by default and made it very easy to add your own.

Let's look at the feature in more detail.

The screen shot below shows a typical topic and the new share icons underneath. In this case, we've just clicked on the "Twitter" icon:



Now, lets hit "Share". We see a confirmation of our tweet and a link to it:



Let's take a quick look on the Twitter site to confirm it. (I've removed some of the bit.ly URL in this screen shot)



Now, let's hit the Facebook icon:



A quick look on Facebook confirms the link has been added to my wall



Of course, if you don't have your account linked to Twitter or Facebook, the standard "share" link is launched for each service. The other services act like this too, a new window is opened with the service's share page loaded and filled in.

Developers will be pleased to note that adding share links to your own pages is incredibly easy. All you need to do is add one small line of code to your templates and it handles the rest. You don't need to load or parse any data directly, it's all handled for you. For example:



Share this: {IPSLib::shareLinks( $documentTitle )}

Wouldn't it be great to know which links were shared and how many times? You'll be pleased to know that IP.Board tracks the number of shares for each URL and service type and can show a log of this data in the Admin CP. We've also put together a side bar hook to process this data:



This data is cached each time a link is shared, so it is very light to load and process. It is entirely abstracted so your own applications can make use of it.

It's no secret how social media has improved how we share data to each other and this feature allows your board to gain more exposure using existing services. The seamless integration with Facebook and Twitter lowers the barrier for sharing your content.

Here's a quick overview of the feature:

- Global on/off switch to remove the share link icons and functionality
- On/off switch per forum to remove the icons and functionality
- Fall back to simple service's "share" page if member doesn't have JS enabled, or does not have their account connected
- Admin CP options to add more services and to disable existing services
- Sidebar hook uses cached data and can be disabled. Guests cannot see it.
- Topics that are shared that you do not have permission to see have the topic title "Protected Topic" by default in the sidebar block.
  • 27,498 views
Database "Tweaks"
The database functionality in IP.Content is quite powerful at its core. You can do a lot of things with the database feature that would normally be laborious coding yourself. A lot of addon applications add common features: rating, comments, sorting options, etc. IP.Content takes all of this legwork out of the picture by providing it for you with just a few clicks in your admin control panel. But there's always room to improve! We have focused on some small but useful tweaks and improvements to the core database features that we think will benefit everyone.



Specify The Text

IP.Content databases refer to stored entries as "records". This is a generic term that can be used for just about any database, which is why we chose to use this originally. It is understandable, however, that some of you want to personalize the interface a bit more. "Records" isn't exactly the clearest term in all cases to all users, so it makes sense that you might want to refer to the entries as "articles," "pets," or "recipes", for instance.

With IP.Content 2.0 you will be able to define the text bit to use to represent "records" in a database right from the database configuration form in the ACP. Four fields will be presented to allow you to define the singular and plural versions of the words in both lower-cased, and first-letter-capitalized versions. I know this probably reads a little confusing, but basically it allows you to define "record", "records", "Record" and "Records" independently. While PHP has many useful functions that can handle this just fine for the English language, in an effort to better-support our international customers we felt it prudent to allow you to define all of these versions of the word yourself.



Specify The Content

In IP.Content 1.x we provided an option on the database configuration page to allow you to indicate which field represents the "title" of a record. Because databases are so configurable, we needed to give you a way to specify this field so it can be re-used properly throughout IP.Content. In IP.Content 2.0, you will now also specify which field represents the "body" or "content" of a record. Some databases may have no use for this, but if you are setting up a database of articles, you will surely want to specify which field represents the "content". This designation is then used to determine which field to show as the "body" in a database feed, and in our next new feature we'll talk about...



RSS Feeds

Yes, you can now allow automatically generated RSS feeds in your IP.Content databases. Even better, RSS feeds are supported at both the database and the category level, automatically. You can also disable RSS feeds individually on a per-category level, should you wish to. This is useful if you have a private staff-only category of articles, for instance, which you do not want to publish via RSS with the rest of the articles in the database.




Settings have been added to both the database and the category configuration forms to enable/disable RSS feeds, specify how long (if at all) you wish to cache the feeds, and to specify how many records to include in the feed. The category configuration form also has a setting to exclude it from the global RSS feed, as mentioned previously. Feeds are cached, if configured to do so, for performance reasons.



Duplicated Sort Form

In the ACP record management screen, we have duplicated the sort/filter form to the top of the page. If you have a lot of record management duties to perform in the ACP, this can help you to more quickly drill down to find the records you need to work on by eliminating the need to scroll to the bottom of the screen each time you wish to change the returned records.

We have also added a "Save and Reload" button to the record add/edit form. You can stop with the PMs now Ditchmonkey! :lol:



Save and Reload

We've added a button to the add/edit record form in the ACP that will allow you to "Save and Reload" the record. If you are making may small changes to a record (for instance, you want to refresh the record on the front end to verify how it's displaying), this is useful as it will save your changes, and then immediately reload the form so you can continue editing the record, instead of forcing you to save, find the record, and click edit on it again to bring the form back up.



Meta Tags

Configuration fields have been added to the database and category forms in the ACP to allow you to define your meta keyword and description tags for your databases and categories. For records, meta tags by default will be automatically determined, just the same as happens in topics in the forum. You can, however, also manually override the meta tags on a per-record basis from the ACP by editing the record, should you need to.



Display Subcategories

Similar to how the board index will list subcategories underneath their parent forums, IP.Content 2.0 will now (by default) display subcategories of a category underneath the category title when viewing categories.





And more to come!

These are just a few of the changes we've made to the databases system in IP.Content 2.0 that we believe will make your databases more useful, more configurable, and more "your own". The changes better integrate IP.Content with the forums, providing a more seamless feel to the site, while at the same time enhancing IP.Content-specific functionality to let you better control your content.

Be sure to stay tuned for our future updates on IP.Content 2.0! We have a lot of other useful changes in store you'll surely want to take advantage of.
  • 4,431 views
Last year we introduced a Spam Monitoring service to combat the increasing problem of registrations on communities from spam accounts and the response to this service has been great! The spam service has been a great success so far and we would like to take the time to share some stats about how effective the service has been.

The service is only as effective as the number of communities that sign up and report data back to our system, so we are happy to report that thousands of communities have joined the service and are helping each other to reduce the amount of spam each receives. If you have not yet signed up, we would encourage you to take this opportunity to do so: the Spam Monitoring service is free to all active IP.Board license holders!* It is a great way to improve and protect your community while saving you time.

Thanks to the network of communities that have joined this service, we have been able to block tens of thousands of spammers from registering on communities that participate in this service! The spam service itself receives thousands of requests per hour and continues to build its database from that data. As always, your registration data is kept safe and is not permanently stored as transmitted data is only used to detect spammers.

We are continuing to monitor everything that is reported and look for trends to help the system better identify spammers that are registering on your communities. If you are signed up for the service and a spammer does register, please remember to use the Mark as Spam feature (both in the IP.Board AdminCP and the front-end for moderator use) so that we can receive that data and use it to improve the service for everyone.

If you are signed up for the spam service, please take a moment to check your logs (in the IP.Board AdminCP) and make sure that the service is working for you. We have noticed that some sites do not have the correct URL for their site so their requests to the service are not working as a result. If you are having any issues, please open a ticket and let us know.

New in IP.Board 3.1

Most of the processing for the service is handled by IPS servers but we are adding two enhancements in IP.Board 3.1: reporting false-positives and statistics.

Reporting False-Positives

Just as your email client sometimes flags a legitimate email as a spam message, our service sometimes tries to be a bit over-protective and will flag a legitimate account as belonging to a known spammer. You can currently "un-flag" that account and restore it to normal but that information is not passed back to IPS so the service could learn that a particular account was actually legitimate. In IP.Board 3.1, removing a spam status on an account will be reported back to IPS to improve the service.

Statistics

IP.Board 3.1 will include reports and graphs on how the service is protecting your individual community.


We hope you continue to enjoy the protection the service offers and if you have any suggestions, please post in our feedback forums. Thanks!




*The following packages include the services option, which the spam service falls under, and qualify to use the service at no cost:


IPS Hosting clients IP.Board Standard License IP.Board Business license IP.Board Community Suite license
  • 4,715 views
IP.Content 1.x has turned out to be a very solid, stable, and extensible application, allowing for a vastly diverse number of implementations that showcase many of it's capabilities. We're thrilled to see so many of our customers using IP.Content in different and creative ways. We've been gathering feedback from all of you to help shape the future of IP.Content, and to that end we want to share with you some changes you can expect to see in IP.Content 2.0.




Feed Blocks
Feed blocks are a very powerful tool in IP.Content. You can create blocks that feed data from any application in IP.Board (that supports IP.Content), as well as from any RSS feed. In fact, much of the data you will want to show on IP.Content pages is easily returned through a feed block (latest gallery images, recent topics, top posters, etc.) of one kind or another. With each release we put some effort into improving the feed blocks further to make them as useful as possible.



Database Comments

Some of you have requested a new feed block type that will allow you to pull database comments from IP.Content databases, and IP.Content 2.0 will now feature this capability. Some practical uses for such a feed type include a "Latest Article Comments" block, or a "Comments Awaiting Approval" block for moderators. Use your imagination, and let IP.Content do the rest.



Forum Feed: Honor Permissions

Presently in IP.Content, if you create a feed block and restrict the forums that content can be pulled from, the topics and/or posts are pulled, regardless of whether the user has permission to view the content. This was done by design, to allow you to have a hidden forum for news entries (for example) and still feed this to your home page. Some users have requested that we allow them to honor a user's view permissions when filtering content by forum, however, and this will now be supported in IP.Content 2.0. When creating a feed from the forums, there will be a checkbox to allow you to honor the forum permissions, and only content a user is able to see will be returned. This only impacts forum feeds where you have explicitly restricted which forums to pull content from (if you do not restrict the forums that content can be pulled from, the user's view permissions are already honored).



Filtering Database Feeds

Database feeds were implemented in IP.Content 1.x, however the filtering options are relatively restrictive. It is logical that some of you may want to restrict records returned in a database feed based on custom fields, providing you with more opportunities to define the parameters used to determine what content to display. With IP.Content 2.0, you will now be able to restrict database feeds to filter content based on most of your custom fields (the same ones you can use to sort/search within a database presently). You will be able to define up to 5 custom filters based on your custom fields. This opens up many opportunities for you to introduce creative new database feed blocks on your site.



Gallery Feed Improvements

Virtually everyone creating Gallery feed blocks will ultimately want to display the image thumbnail. While this is entirely possible in the current version of IP.Content, it requires you to add some code to your template manually; code that everyone ends up adding. To make Gallery feeds easier to use for everyone, the code to generate the image thumbnail is now automatically executed in the feed, and the thumbnail is available to the template as $r['thumbnail'].



Additionally, we've added a new filter setting under the category multi-select box. Enabling this new checkbox will tell the feed to also check in any albums (that the user has permission to view) under the selected categories. This means you could, for example, select the Member's Gallery and check this checkbox, and not have to manually select every album contained within the Member's Gallery (and it also means you won't have to continuously edit the block configuration to continue selecting new albums as they are created).



And a few other tweaks

In addition to the changes above, we've been going through some of the feed blocks to try better respect the returned data you expect to see. For instance, in a topic feed, the last_poster_id can sometimes be the last poster id in the forum, rather than the topic. We're taking some time to try to normalize the data returned from feed blocks so that you have better access to the data you want to use.




And a lot more to come...
We have a lot more in the pipelines for IP.Content 2.0 as well, and we can't wait to reveal what else we've got up our sleeves. We're hard at work improving the interface, performance, and usability of the system, and we are taking all received feedback into account while we work to make IP.Content the best tool of it's kind! We're very proud of IP.Content and hope that you are enjoying it so far. If you have any features you're just dying to see included, please be sure to post them in the feature suggestions forum. Similarly, if you have any questions or feedback about the changes discussed in this blog, please feel free to leave your comments. What we've discussed here is just the tip of the iceburg. We think you'll be even more excited to hear what else we've got in store when we roll out our next blog entry. Stay tuned!
  • 6,870 views
IP.Board already has many moderation tools, including the ability to "approve" and "un-approve" posts and topics to make them hidden from the general community. IP.Board also has a "Trash Can" forum which collects all deleted topics and posts giving you a chance to keep them and manually move them back if you wanted to do so.

Recently, we've had several requests for a "soft delete" option. This would work in a similar manner to the "approve" and "un-approve" system but with an extended permission set. Essentially, when you "soft delete" a topic or post, it vanishes for the general community (by default) but is still visible to moderators and administrators in-line. You can also add a reason why the item was deleted and it records the time stamp. If you have permission, then you can restore the post if desired with a click of a button.

The permissions model works like this:

Per Member Group:
- Can Soft Delete All Topics
- Can Soft Delete All Posts
- Can Soft Delete My Topics
- Can Soft Delete My Posts
- Can See Soft Deleted Items
- Can See Soft Deleted Content
- Can Restore Soft-Deleted Topics
- Can Restore Soft-Deleted Posts

Per Moderator: (Will override member group selection in the forum(s) they moderate)
- Can Soft Delete All Topics
- Can Soft Delete All Posts
- Can See Soft Deleted Items
- Can See Soft Deleted Content
- Can Restore Soft-Deleted Topics
- Can Restore Soft-Deleted Posts

This gives you many options. For example, you could allow your members to "soft delete" their own content allowing you the chance to restore it. Conversely, you may also want your members to see that some items have been deleted, but not see the actual content of what was deleted. The choice is yours.

Here's a few screen shots detailing the feature:


When the delete button is clicked, a new dialogue appears giving you the option to "remove from view" (aka, soft delete) or "Delete Now" which will either remove it from the database, or move it into the Trash Can forum if it is set up.


How the deleted post looks if you have "See Deleted Items" permission. The toggle button is visible for those with "See Soft Deleted Content" permission.


The forum's topic list shows a pink background with a delete icon for topics with "soft deleted" posts. Clicking the delete icon brings up a list of the deleted posts.


Clicking on the delete icon (that appears when you mouseover the cell) brings up a dialogue similar to the post one.


Showing the deleted item in the forum's topic list. Clicking the topic title link will take you to the topic if you have "See Soft Deleted Content" permission.

This feature also works with the multi-moderation allowing you to "soft delete" or "restore" many posts or topics at once.

Please keep in mind that the screenshots shown are based on a pre-beta build of IP.Board 3.1 and will likely receive a little polish before release.
  • 20,819 views
Yesterday we showed IP.Board 3.1's ad code integration for the first time, today we'd like to give a quick update on the status of this new feature.

First of all, we were excited to read all of the positive feedback and great suggestions. We like to write these blog entries before features are 'set in stone', so that we can more easily and quickly include suggestions from our customers.

Group Setting

In response to your feedback, we've included a new setting that will allow you to hide ads for specified groups.



Ad Placement

Another common concern was the placement of ads within topic view. While we are not going to add an additional setting that gives you the option of showing the ad inside the first post, we do want to show you how easy it is to accomplish this. The ad code is passed into the template bit along with the first post, so you can move it any place you like within in that first post. Here is the code to display the ad:



<if test="adCodeCheck:|:$post['post']['_adCode']"> {$post['post']['_adCode']} </if> By default, we have this setup so that the ad is placed after the first post is completely printed. However, if you would like the ad displayed inside the first post, all you need to do is move that display code and place it after this code:

<if test="postSignature:|:$post['post']['signature']"> {$post['post']['signature']} </if> The same is true of the other ad codes, it's very easy to move them to any place in the template that you would like. Modification Developers There are also a few functions that may be of interest to modification developers. If you want to give users the ability to show ads in your mods, you can easily check permissions before displaying the ad using this new function: IPSAdCode::userCanViewAds(). This will return true/false depending on if the user can view ads or not. Much like the board index, forum view, and topic view, you can have your modification set it it's own global header/footer ads by using a simple function:

IPSAdCode::setGlobalCode( 'header', $yourHeaderAd ); IPSAdCode::setGlobalCode( 'footer', $yourFooterAd );


Once again, thank you for the great feedback!
  • 20,010 views
Advertising integration has been an often requested feature for a long time, so we're pleased to announce that IP.Board 3.1 will include this feature! We've create a simple system that will allow you to insert ad code at various locations throughout the forum. The integration is not specific to any ad platform, so you can use this for Google AdSense, or any other platform that you may use for your site. We did not want to choose any specific advertising platform to keep the system flexible plus IPS would never get between you and your advertising revenue.

There are several predefined ad spots, all you need to do is paste the code for your ads into any of these locations.


Header and Footer Ads

The first two locations you can place ads are in the global header and footer, these ads will show on every page in the forum, except for redirect screens.



As you can see in the screen shot, this system uses a simple settings page for adding ad code, you can paste anything you want into these boxes. In addition, there are several areas that can override the global header and footer code with page specific header and footer code. The Board Index, Forum View, and Topic View are able to use this override feature, so that you can either not show ads on one of those areas, or show different ads.

Aside from the headers and footers, there are three other locations that you can place ads:

Board Index Side Bar

A simple hook will allow you to place ads in the sidebar of the forum index, you can use the existing hook ordering system to determine where on the sidebar the ad will be displayed.

Forum View & Topic View

You can also specify ad code that will be displayed inline with topics in forum view and posts in topic view, these ads will be displayed after the first topic or post. Here's a screenshot of each:





As you can see, this is a basic and easy to use system for placing ads in IP.Board. We have ideas for future enhancements to this system and will be improving things as we go but, even with this basic implemenation, you can now easily disperse advertisements throughout your community.

We hope that you find this helpful, and as always, we look forward to your feedback and suggestions!
  • 27,566 views
One of the neat new features of IP.Board 3.0 was its integrated application/hook installer and upgrader. Using this took a lot of the headache out of updating modifications when the author produced a new version as you would have either needed to use a custom installer script or install a component dedicated to modification installations. This has helped out with the installations of modifications, but skins still install in essentially the same way, and there is nothing built in to the product to let you upgrade skins.

Currently, when a new third party skin gets updated by its author, it can involve a lot of work for board owners who use that skin to upgrade the copy of it on their site. The old procedure was to import the new version of the skin, move everyone who was using the old version onto the new version, and delete the old version. If you had customized anything to do with that skin template prior to initially installing it, you'd have to keep track of what changes you had made so that you could apply them to the new version of the skin. It should go without saying, this procedure was clunky at best.

Recently I stumbled across a post where this frustration was mentioned. This got me thinking about the issue. Surely there must be a way to upgrade a skin just like hooks and applications can be upgraded, right?

Right now I'm developing some additional functionality in the Skin Import/Export feature in IP.Board 3.1 to take care of this. Essentially how it will work is this: when you import a skin set, the skin info is checked to see if a 'skin set key' has been set. If it has, it checks if this key matches the key of a skin you already have installed. If it does match, and you check a box indicating you want to try and upgrade, it will attempt to upgrade your existing skin. Any replacements/CSS/templates that this new skin XML has will be checked against the existing items from the old version of the skin to see if changes are needed.

Thus far, I have it coded to show you the check box to indicate whether or not an upgrade will be attempted:



I also have a lot of the back end work done where it will see if it needs to upgrade an existing item instead of just inserting a new version of the item. There's a lot of checking involved to be sure I'm not duplicating elements, so this will require a lot of testing. I've got a few bugs to work though on this, but it should be in place pretty soon.

I think that this will be a feature that will be appreciated by a lot of folks. I welcome any feedback you may have. :)
  • 14,365 views
I had previously blogged about the status update improvements coming in IP.Board 3.1.0. This blog runs through some exciting new integration features with Twitter.

As IP.Board already has Facebook integration, it makes sense to also integrate Twitter. This further lowers the bar when registering a new account on your forum. If your visitors have have a Twitter account, they can use this to register a new forum account or to "connect" their existing account with their Twitter account.



Integrating your Twitter account allows you to use your Twitter profile picture and description on the board.



You can also import your latest Twitter status onto the board, or post your board status to Twitter. If your forum status is longer than 140 characters, it will cut the status off and automatically add a Bit.ly URL pointing to your forum status update.





You may note that each status update on the forum has a little icon showing where the status originated.

These improvements should increase registrations on your board and generate more traffic to it.
  • 16,636 views

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.