<?xml version="1.0"?>
<rss version="2.0"><channel><title>Invision Community Blog: Invision Community</title><link>https://invisioncommunity.com/news/invision-community/page/32/?d=34</link><description>Invision Community Blog: Invision Community</description><language>en</language><item><title>Lifting the lid on the registry</title><link>https://invisioncommunity.com/news/invision-community/2536-lifting-the-lid-on-the-registry/</link><description><![CDATA[<p>In a previous blog entry on IP.Board 3.0's new framework, I mentioned that at the core of the new framework is something called 'ipsRegistry'. This blog post will go into more detail and will be of interest to modification authors.<br><br><b>Overview </b><br>IP.Board, like most complex applications, has a need for 'core' data, like settings, session and input data ($_GET, $_POST, etc). There is also a need for a database connection and access to global objects like cached data. It would be incredibly wasteful to make each file and class set up a database connection, load any cached data, authorize the browser session and build up any settings. This could happen many time in any IP.Board view.<br><br>Clearly there is a need for a way to initialize this data once and then pass it throughout the application. This is exactly what the ipsRegistry is for. Previous versions of IP.Board relied on the 'ipsclass' object as a registry; but this quickly became tarnished without clear boundries as more and more data was attached to it. It was more of a global variable than anything else. The new registry is composed of clearly defined objects. Also in previous versions initialization of the settings, caches, input data, sessions, etc was handled over a scattering of classes and files. The new registry is a single point for this initialization. This initialization occurs when init() is called. This makes it much easier to use IPS registry data in your own scripts and modifications. Previously you would have needed to copy out half of the default index.php. Now your scripts can be as simple as:<br><br></p><p>  require_once( 'classes/base/ipsRegistry.php' );    /* Call init which loads up input, caches, settings, creates the DB handle, authorizes and loads the member  $registry = ipsRegistry::instance()-&gt;init();    print $registry-&gt;request()-&gt;getField('foo');  $registry-&gt;DB()-&gt;do_update( 'table', array( 'foo' =&gt; 'bar' ); );  print ( $registry-&gt;member()-&gt;getProperty('member_id') ) ? 'Hello ' . $registry-&gt;member()-&gt;getProperty('members_display_name') : 'You are a guest';</p><pre class="ipsCode">require_once( 'conf_data.php' );<br><br><br><br><br><br><br><br></pre><p><br><br><br><b>Gathering Input from URLs and Forms</b><br>One key part of IP.Board's initialization was the sanitization of $_GET and $_POST into a clean array. This was vital to the overall security of the board. IP.Board 3.0 as a 'request' registry object for this and all functions relating to this initialization (parse_key, parse_value, etc). This is available via either $this-&gt;request-&gt;getField('foo') or $this-&gt;request['foo']. This effectively replaces $this-&gt;ipsclass-&gt;input['foo'];<br><br><b>Cached Data</b><br>There are many improvements to the caching backend which we'll go into more detail in a later blog entry. The cache registry object simply returns the cache when requested via $this-&gt;registry-&gt;cache()-&gt;getCache('forums'); The cache is loaded and unpacked during initialization so you do not need to manually call it.<br><br><b>The Database</b><br>So much of the database code has been refactored that it's almost a separate blog on its own. Here, I'll concentrate on the registry object. The main function is getDB() which is interfaced via $this-&gt;DB (or ipsRegistry: :D B() when outside of class scope). This is a simple function to return the DB object which is set up during initialization via setDB(). This happens transparently when the file is included and init() called (which is done so by ipsController.php). You may set up more connections by specifying a key, for example:<br><br></p><p>  return $this-&gt;registry-&gt;DB( 'newConnection' )-&gt;build_and_exec_query( array( 'select' =&gt; '*', 'from' =&gt; 'table' ) );</p><pre class="ipsCode">$this-&gt;DB-&gt;setDB( 'mysql', 'newConnection', 'user@localhost.com', 'password', 'localhost' );<br></pre><p><br><br><b>Settings</b><br>The setting cache is loaded and unpacked during initialization. This registry object merely returns the setting when requested via $this-&gt;settings-&gt;getSetting('foo') or $this-&gt;settings['foo'].<br><br><b>Member Information</b><br>Previously member information was scattered through 'ipsclass'. IP.Board's member registry centralizes this information. This object sets up the incoming IP address, browser and operating system and attaches it to the member class. It also authorizes the current browser session (via cookies or an inline URL) and loads up the session member and builds up the permission arrays. All this is done during initialization meaning there is less to do on the front end.<br><br>I hope this post has given you some insight into the IPS registry and the improvements it brings not only to IP.Board itself, but also to modification authors who will find their workload greatly reduced by automatic set up of all the required information. If you find that you do not need all of this information set up, then you can write a child class of ipsRegistry and alter the 'protected' functions to prevent them from initializing.</p>]]></description><guid isPermaLink="false">470</guid><pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate></item><item><title>IPSR: Featured resource and Community Projects</title><link>https://invisioncommunity.com/news/invision-community/2530-ipsr-featured-resource-and-community-projects/</link><description><![CDATA[<p>Since our recent updates to the resources site the feedback received has been great. We have managed to address a lot of the feedback, and we hope you like the changes we have made.<br><br>One of the changes was the new <b>Featured Resource</b>. We have now revealed the <a href="http://resources.invisionpower.com/index.php/_featured/index.html" rel="external nofollow">featured resource for July</a>, as usual, this page will go into a lot of detail about the resource, the author, and will also feature screenshots. We have also implemented the archive section which allows you to go back in time and view all previous featured resources we have had at IPS Resources. Now that is out of the way, we go onto the main part of this blog post, information regarding our two community projects: IP.Tracker, and IP.Shoutbox.<br><br><span style="font-size:12pt;line-height:100%;"><b>IP.Tracker</b></span><br><br>IP.Tracker 1.1.0 has been received brilliantly, and we recently released an update to address issues found in 1.1.0, we would like to thank everyone that took their time to help test the release and make it as good as possible! IP.Tracker is now splitting into two stages: 1.2.0 will be available for IP.Board 2.3.x as 1.1.0 was and will also be ported for IP.Board3. Shortly after that time, a new release will be out for IP.Board3 with new features (2.0.0), however it will only work on IP.Board3.<br><br>Development has been rolling onto a stage where, in the next few weeks, we will be able to open up the beta testing process once again. IP.Tracker 1.2 builds and improves upon what was there in 1.1. Vital features such as sub-projects and custom fields are included with this release and we have finally rewrote the 'issue read' code. IP.Tracker can now tell whether you have read an issue or not, with no cookies!<br><br>Other features included in this release include latest post information (the same as on the main board index). We are also implementing a few new changes to the system to better record when a status, severity, etc. has been changed, however, there is nothing new on your end for it at this present stage. We have implemented the changes to the system now to prepare us for 2.x.x. A couple of features which will be introduced need the code implementing now so the features have a lot of information to work off when they arrive.<br><br>As it stands, IP.Tracker 1.2 is featured locked, and is again being worked on by the developers: Alex, krocheck, and Jaggi. However, we invite <b>you</b> to help us code the 2.x.x series, please read below to find out more!<br><br><span style="font-size:12pt;line-height:100%;"><b>IP.Shoutbox</b></span><br><br>Our community-driven shoutbox, IP.Shoutbox, is moving along nicely. We do not know of a release date for the first beta, and therefore we cannot give you much information about it. We'd like to make one thing clear, we have had a few users asking about the security of this modification because of the base we chose, please note, that said modification is a <b>base</b> for the project, and the end result will not resemble it at all in terms of code. The two developers, myself, and bfarber will be going through the code to make sure its safe, secure, and doesn't have high server loads. That's as much as we can really say on Shoutbox at this stage, but stay tuned for more updates!<br><br><span style="font-size:12pt;line-height:100%;"><b>Community Projects - Redefining what 'community' means</b></span><br><br>When we first announced the community-driven project scheme, we wanted it to be just that: <b>community-driven</b>. Many developers have told us that the main reason they cannot contribute to the projects is due to lack of up-to-date code. Over the past few weeks, we have been adding functionality to allow license holders to view the SVN code allowing you to code as we code. You will <b>not</b> be able to commit to our code, but upon release of IP.Tracker 1.2.0, there will be a subcategory setup for you to submit code changes, and bug fixes. This process is not yet complete and is still in development and will only start when IP.Tracker 1.2.0 is installed here at the company forums. We will keep you updated with news about this process and we hope this may encourage more of you to contribute to the community projects.<br><br><br>Hopefully this blog entry has been of interest to you and we can't wait to be able to show you the previews of IP.Tracker, and IP.Shoutbox. They are shaping up to be brilliant products!</p>]]></description><guid isPermaLink="false">469</guid><pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate></item><item><title>IP.Board 3.0 BBCode System Overhaul</title><link>https://invisioncommunity.com/news/invision-community/2524-ipboard-30-bbcode-system-overhaul/</link><description><![CDATA[<p>BBCode is a core part of your forum system.  We understand that.  To  that end, we've been working hard to completely rewrite and overhaul  the entire bbcode handler in IP.Board 3.0.  We think you'll like what  is in store.<br><br><b>Changes since IP.Board 2.x</b><br><br>  There are some core differences in the BBCode system we are introducing  in IP.Board 3 that you may notice right away.  For starters - *every*  BBCode is configurable via the Admin CP.  That means if you want to add  "rel='nofollow'" to your urls, you can do so without editing files.  If  you want to change the resulting HTML for a code tag, you can do so,  right there in the admin CP.  Similarly, the backend treats every  bbcode as "custom" as a result, and every bbcode is treated equally.<br><br>  Additionally, we are changing the HTML that the bbcode parsing  generates to be more XHTML compliant.  Alt attributes are added to  image tags.  We've changed emoticons to place the emoticon code in the  alt attribute, and have removed the (non-standard) emoid attribute  entirely.  Quotes will properly use the blockquote HTML tag (and,  further, will use the "cite" HTML tag when you provide the name and  link with the quoted text).  Bold will now use the HTML "strong" tag  and i will use the HTML "em" tag.  Almost all of the bbcode HTML is  being rewritten to be both more semantic, and to bring IP.Board's HTML  output up to today's standards.<br><br>  Additionally, the code-syntax boxes (e.g. HTML and SQL bbcode tags) are  undergoing an overhaul that will make them much more flexible and allow  us (and you!) to add new code languages very easily.  We will be  providing more information on how to do this in the future.<br><br><b>New features in the BBCode system</b><br><br>  I'm sure this is what you've all been wanting to find out about.  Well, here we go (in no particular order)...<br><br></p><ul><li>Aliases: BBcodes can now have aliases, so that more than one  tag can execute the same custom bbcode.  Uses?  For instance, "code"  and "codebox" both execute the same bbcode.  Similarly, "media",  "blogmedia", "flash", and "youtube" are all one bbcode that behaves the  same way. (Hold your horses, we'll get to the media in a minute ;) )</li><li>Single-tags now supported:  You wanted to add "<hr>".  You now can.</li><li>Option  content is optional: Bet that sounded confusing.  It really isn't -  basically, taking the "URL" tag as an example, you can either provide  the URL as the "option" to the URL tag, and display text as the  "content", or you can omit the option entirely, and the content becomes  the display text.  This setting allows you to do the same thing with  your own bbcode.</li><li>Prevent other codes from parsing: You can  prevent other bbcodes from parsing inside your own bbcode.  The classic  example is our "code" bbcode - you don't want smilies and other bbcodes  parsing within the code bbcode when you're trying to show someone how  to use them.</li><li>PHP Plugin execution: Do you require a bit more  logic to be carried out to replace the bbcode?  You can utilize plugin  files to do this.  Plugin files have a defined interface and more  information will be provided for developers near launch.  Several of  our default bbcodes utilize plugin files, so this should help  developers more easily understand how they can be used.  You will no  longer need to modify built in bbcode processing files to add new  bbcodes.</li><li>Control which groups can use a bbcode: The bbcode  manager now has a multiselect which allows you to specify which groups  can utilize the bbcode (secondary groups also supported).  So if you  want admins to be able to create tables using a [table] bbcode tag, but  not members, go for it.</li><li>Control where each bbcode can be used:  Want to allow images in posts, but not in signatures?  Now you can  configure this right from the bbcode management screens in the admin  cp.  This feature runs on a plugin system so modification developers  can also allow you to configure which bbcodes are allowed in your  custom applications.</li></ul><br><b>New "default" BBCodes in IP.Board 3</b><br><br>  I use the term "default" loosely, since everything is configurable via  the ACP.  In addition to all of the bbcodes you will find in IP.Board  2.x, the following default bbcodes will be available in IP.Board 3:<br><br><ul><li>"member".  Usage: <a href="http://community.invisionpower.com/?showprofile=46197">bfarber</a>.  This tag is a "single" tag  bbcode that accepts one option, the member's display name.  When  parsing out the tag, the bbcode will generate the correct link to the  member's profile and display "&lt;a href='correct link'&gt;member  name&lt;/a&gt;".</li><li>"hr".  Usage: <hr>.  Very simple bbcode which generates a horizontal rule.</li><li>"xml"  and "php".  Usage: <p></p><pre class="ipsCode">XML content</pre><p> or </p><p></p><pre class="ipsCode">$phpCode = 1;</pre><p>.   Generates syntax-highlighted code boxes, similar to the existing SQL  and HTML boxes.</p></li><li>"media".  Usage:  http://youtube.com/videolink.  Ah, the one most of you  have been waiting for.  The introduction of the media tag in blog was  so well received, we've gone ahead and added it to the IP.Board core.   You can configure the media tag matches and replacements (for those of  you who own Blog 1.4, you'll know what I mean), which allows you to add  new media services at will.  Generic flash (the old "" bbcode in  IP.Board) works through this new media tag as well.  Optionally accepts  "width,height" as it's option.</li></ul><br>  Sharing and formatting content couldn't get much easier that configuring what you want in the ACP!<br><br><b>Dull boring techie stuff</b><br><br>  For those of you actually interested in the code aspects of the new  system, we've completely rewritten the bbcode parser from the ground  up.  Firstly, sections should go back to the proper way of calling  pre_db_parse before storing content in the database, and  pre_display_parse before actually displaying it.  This will ensure that  bbcode can be correctly unparsed when a user edits their content.<br><br>  A major change to how the formatted text is handled: it isn't!  We  don't do any bbcode parsing on save, storing (nearly) exactly what you  submitted into the database.  Instead we format the bbcode at the time  of displaying the content.  This means we don't have to "unparse"  previously parsed bbcode, nearly eliminating any bugs in attempting to  do so.<br><br>  Another nice thing about this method...while you will need to rebuild  your posts when you upgrade to IP.Board 3, you should never need to  again.  Ever.  Yes, you read that right - you will need to rebuild your  posts once upon upgrading to IP.Board 3....but after that, no more  rebuilding posts headaches.  Additionally, we intend to fully update  our command-line rebuild posts routine, and we intend to introduce a  task which will do this for you automatically should you wish.  More  information on this will be available as we get closer to launch.<br><br>  Some of you may be wondering about the resource impacts of parsing a  post on every display.  In rewriting the bbcode engine, we've nearly  completely eliminated regular expressions in our bbcode engine.   Regular expressions allow you to take a "pattern" and find matches to  that pattern in a block of text.  This is how bbcode was found and  replaced in IP.Board 2.x (and in most other bbcode engines out there).   For IP.Board 3, we are talking what's called a "tokenized" approach.   We use some very fast built in php functions (such as strpos and  substr_replace) instead of performing massive regular expressions,  making the entire bbcode parsing process much quicker.  We will be  profiling this in greater detail as IP.Board 3 starts wrapping up.   We'll try to share the results of this profiling with you at that time.<br><br>  We've also entirely rewritten the word wrap function in IP.Board.  It  should now be fully HTML-safe, HTML-entity-safe, and  multibyte-safe...three huge problems we've repeatedly run into with the  word wrap function in IP.Board 2.x.  Additionally, there will now be  one word-wrap function, and it properly lives in the bbcode library  (though for legacy purposes, we will maintain a "redirect" function in  our text handler class similar to the function in ipsclass in IP.Board  2.x).<br><br>  All in all, once we get the various inevitable kinks all ironed out  with using the new system, it should not only be much easier to utilize  our bbcode library, but it should be much more reliable and much faster  to boot!<br><br><b>Conclusion</b><br><br>  We hope you like the changes in store, and we hope that the updates  which many of you have waited a long time for will serve your  post-formatting needs for the forseeable future.  Please share your  thoughts or ask any questions you may have, and we'd be happy to try to  answer them for you.
]]></description><guid isPermaLink="false">468</guid><pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate></item><item><title>3.0 Applications Framework</title><link>https://invisioncommunity.com/news/invision-community/2510-30-applications-framework/</link><description><![CDATA[<p>IP.Board has grown a lot over the years.  We've added new functionality  through the components framework, allowing us to deliver first-party  supported addons such as <a href="http://www.invisionpower.com/community/gallery/index.html" target="_blank" rel="external nofollow">IP.Gallery</a>, <a href="http://www.invisionpower.com/community/blog/index.html" target="_blank" rel="external nofollow">IP.Blog</a> and <a href="http://www.invisionpower.com/community/downloads/index.html" target="_blank" rel="external nofollow">IP.Downloads</a>.  Our <a href="http://resources.invisionpower.com/index.php/community_projects/index.html" target="_blank" rel="external nofollow">Community Projects</a> leverage this infrastructure to provide even more value for your board, and <a href="http://resources.invisionpower.com/index.php?appcomponent=downloads&amp;showcat=79" target="_blank" rel="external nofollow">third party developers</a> have produced wonderful components utilizing the same infrastructure on their own.<br><br>  As IP.Board has progressed, we've seen challenges with the integration  and continued separation of these components.  We don't want our addons  modifying core IP.Board files - this makes upgrading IP.Board a much  more challenging task than it should be.  At the same time, the  components should seamlessly integrate into the core of the site so  that everything can be managed together, and common code libraries can  be shared.<br><br>  IP.Board 3.0 introduces our new application framework which will  replace traditional "components".  The software "out of the box" comes  with 5 applications.  There are 3 default applications: System (which  includes things like template editing and settings, things that are not  specific to any section, but are part of the core of the site as a  whole), Members (member management, group management, and similar  functionality), and IP.Board itself (forum and moderator management,  for example).<br><br>  Further to this, the core of IP.Board 3.0 supports IPS-provided addons,  and third party addons, which will function the same as our integrated  built in applications.  We provide 2 IPS addons out of the box:  Calendar and Portal.<br><br>  Applications can be disabled globally (i.e., you can easily shut off or  turn on the Calendar, for example).  The IPS and third party addons  operate identically, and utilize the same fully-featured application  framework our built in applications use.  You can easily add settings,  adjust the secondary menus, build in permission routines and determine  cache loading/updating routines, and much much more simply by utilizing  this framework in specific ways (for instance, providing a specific  file in a specific location within your application).<br><br>  We hope that the new framework will help third party developers (and  ourselves!) to be able to segregate code so that it does not interfer  with the core IP.Board code, while at the same time being able to fully  integrate into both the front end of the site, and the admin control  panel.<br><br>  We will be providing some guides and developer information with the  launch of IP.Board 3.0.  For instance, we plan to provide an overview  of exactly how we convert one of our first-party components over to the  new framework to show developers exactly how they can convert their own  code base.<br><br>  This new framework should be utilized for fully-featured sections or  addons.  More information will be forthcoming in future blog entries on  how to utilize new plugin and hook functionality provided with IP.Board  3.0 for addons that don't require separate "sections", and thus don't  require use of the full application architecture.</p>]]></description><guid isPermaLink="false">467</guid><pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate></item><item><title>IPS Resources back online</title><link>https://invisioncommunity.com/news/invision-community/2492-ips-resources-back-online/</link><description><![CDATA[<p>Thank you for your patience while we made our improvements to the resource site! There are some exciting changes we would like to point out to help you navigate through the new features. <br><br><b>Homepage Updates</b> <br><br>We've made a few improvements to the homepage, with more to come. Immediately, you will notice we have separated the left column to show 'Top' listings and the right column to show 'Latest' listings. We've also separated out modifications and skins to help you more quickly find the latest updates you are interested in. <br><br><b>Featured Resources</b> <br><br>Once a month we will be posting a resource spotlight in the new <a href="http://resources.invisionpower.com/index.php/_featured/index.html" rel="external nofollow">'Featured Resources' section</a>. In each spotlight we will give you an overview of the resource with some basic statistics and a link to view or download it, a list of features or highlights for the resource, some screenshots, and a short interview with the author. The resources will include anything submitted to the <a href="http://resources.invisionpower.com/index.php?appcomponent=downloads" rel="external nofollow">Downloads</a> or <a href="http://resources.invisionpower.com/index.php/articles.html" rel="external nofollow">Articles</a> areas. Please be sure to check out the featured resource for June! <br><br><b>Community Projects</b> <br><br>IP.Tracker has been out for some time and has been a huge success. As a result, we will slowly be introducing more community projects to our customers. Next up will be IP.Shoutbox - a fully functional and comprehensive shoutbox system for your forum. The project is based on Dean's "D22-Shoutbox" and he is working closely with us on updating and preparing it for release. More information to follow soon... <br><br>In the mean time, please check out our new <a href="http://resources.invisionpower.com/index.php/community_projects/" rel="external nofollow">Community Projects</a> page for more information on our community projects.<br><br><b>IP.Tracker 1.1.0</b><br><br>The first, stable release of the 1.1 series for one of our community projects, IP.Tracker, is now available to download. Over the past few months, this new version has been tested among many of you and we would like to thankyou for your help in finding all the bugs in this release. Huge thanks to krocheck and Jaggi for doing their work on IP.Tracker, you've done a great job!<br><br><b>Paid Resources</b> <br><br>There are hundreds of resources available for sale from many authors who contribute to this site, and many of our users are interested in these resources. There are some drawbacks here <br><br></p>
<ul><li>The user may have a hard time vouching for the trustworthiness of a paid resource</li>
<li>The user may not know a specific resource they are interested in exists</li>
<li>Paid resources are often not welcome on sites that host free resources for download, so authors have a hard time getting the word out about their work</li>
<li>A user may not be sure which paid resource they are interested in if more than one solution fits their needs</li>
</ul><br>The resources site will now allow mod and skin authors to list paid resources in our download manager. The authors have to agree to <a href="http://resources.invisionpower.com/index.php/paid_files_guidelines.html" rel="external nofollow">certain guidelines</a>, and if the guidelines are not met or maintained their work will be de-listed and not allowed back on the site. This helps users to verify that a solution is being properly maintained, fixed, updated and supported. <br><br>Paid resources will show up with a small  <img src="http://resources.invisionpower.com/public/style_images/currency_dollar.png" border="0" class="linked-image" alt="currency_dollar.png" loading="lazy"> symbol in our downloads database so you will more quickly know if a file is for sale or not. Filters have been added to the bottom of the download pages so you can easily filter out (or in!) paid resources in the event you don't want to see them (or only want to see paid solutions). Payment for a third-party solution is handled by the third party directly, and the download link will take you to their site to complete the transaction and download the work. Consider our database a helpful listing so you can better realize what kind of options are available to you. Authors can consider our database a useful tool to help them advertise the work they've put so much time and effort into. <br><br><b>Miscellaneous</b> <br><br>Our company forums have undergone a slight re-organization in the resource sections to help you better identify where topics should be posted and found. <br><br>We've also added a "Most Recent Resources" feed at the top of the resource forums so you can stay up to date on new works submitted to the resource site. <br><br>Additionally, at long last, the resources site is now linked from the main company website at <a href="http://invisionpower.com/" rel="external nofollow">http://invisionpower.com</a> - we hope this helps everyone discover all of the resources we have available to them that they may never even have known existed. <br><br>Finally, we would like to extend our sincerest thanks to our IPS Resources team for all of their hard work and dedication in expanding the resource site! <br><br><br>We look forward to your feedback and hope you enjoy the updates!
]]></description><guid isPermaLink="false">466</guid><pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate></item><item><title>IP.Nexus</title><link>https://invisioncommunity.com/news/invision-community/2490-ipnexus/</link><description><![CDATA[<p>Recent advances in technology coupled with a tremendous increase in online awareness have had a profound effect on the growth of online communities. To better serve both present and future customers and in the interest of furthering our position as a leader in online community development, we are pleased to announce that we will immediately increase and refocus all development resources to the enhancement and expansion of our community offerings. <br><br>While we will evaluate the position of IP.Nexus in the marketplace at a later date, we recognize that the core of IPS is our community product and solution line and as such, our priority lies with the continued growth and enhancement of that very core. We will be allowing the current beta of IP.Nexus to expire on July 31 and will revisit our content management and business services plans after our upcoming releases of our community software products including IP.Board, IP.Gallery, IP.Blog, and IP.Downloads.<br><br>In coming weeks and months, please expect significant improvements to our existing community line as well as new components which compliment existing products. We're very excited about what the future holds and are confident that you will be equally pleased with the increased quality and speed at which we will be able to deliver new products and services.<br><br>Thank you all for your continued support and stay tuned for further updates!<br></p>]]></description><guid isPermaLink="false">465</guid><pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate></item><item><title>Introducing IP.Shoutbox</title><link>https://invisioncommunity.com/news/invision-community/2488-introducing-ipshoutbox/</link><description><![CDATA[<p>In our efforts to improve the services offered to you through IPS Resources, we will soon be releasing another community-driven project, IP.Shoutbox. Much like IP.Tracker, this will be an IPS-sponsored project written by you, the community.<br><br>We have approached two people who we feel will do a great job on IP.Shoutbox, these two are currently working very hard to produce a beta of the modification. The developers we have chosen are vadim88, and Shawn Dean. These two will keep you up-to-date regarding the status of this project via the IP.Shoutbox forum. IP.Shoutbox is based on Deans modification 'D22-Shoutbox', and he will be working very closely with us on this component.<br><br>IP.Shoutbox has been written with IPB3 in mind, for example, the javascript uses the prototype library to allow the move to IPB3 be all that much easier, the code will be commented throughout so people looking to get involved will know what function is doing what, please remember, even though we have two developers who will start this project off, this is a community-driven project, if and when you find bugs, and you know how to fix them, please provide the fix as it makes it all that much easier for the developers! If you have code contributions, please feel free to submit them in the IP.Shoutbox forum, we welcome your input!<br><br>As with all community projects, IP.Shoutbox will be offered for free via IPS Resources for current license holders. We will be posting more updates about this project and the updates coming to IPS Resources shortly.</p>]]></description><guid isPermaLink="false">464</guid><pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate></item><item><title>Resource Site Updates</title><link>https://invisioncommunity.com/news/invision-community/2484-resource-site-updates/</link><description><![CDATA[<p>Our new resource site has been online for a few months now and the feedback has been great so we are going to enhance the offerings and further involve our community of resource authors. Some upcoming changes include:<br><br><b>Forum Organization</b><br><br>We will be reorganizing and adding new forums to the company forums resource section to make it easier to navigate and find information. You will also soon notice a feed from the resource site to the company forums featuring new activity, most popular resources, and more.<br>Resource Spotlight<br><br>Once a month, we will feature a resource and do a short interview with the author of that resource so you can get to know them and what they created. We hope that everyone enjoys these features and they help introduce our customer community to all the great resources that are available to them.<br><br><b>Community Projects</b><br><br>The IP.Tracker bug tracker community project has been very well received so we are looking at introducing more. If you are not aware, our community projects are projects that we sponsor but the community actually creates and are offered at no charge. IPS provides resources for programming, hosting, etc. and the customer community writes all the needed code for the project. We already have a new community project lined up and will be announcing that in the next week.<br><br><b>More to come</b><br><br>Also coming very soon is a ranking list of the most used resources, ability to list paid resources, better linking with our main site, and more. Keep an eye out for more updates.<br><br><br><i>Please expect some downtime on the resources site over the next several days as we implement these new services. Thanks everyone!</i><br></p>]]></description><guid isPermaLink="false">463</guid><pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate></item><item><title>IPB3: Banned User Management</title><link>https://invisioncommunity.com/news/invision-community/2480-ipb3-banned-user-management/</link><description><![CDATA[<p>The term 'ban' in IP.Board has a relatively loose definition and can often mean many different things. IP.Board supports an array of useful features to control access to the board, or in this case to restrict access to the board. Some examples of what 'ban' may refer to are<br><br></p><ul><li>IP address ban filters</li><li>Email address ban filters</li><li>Username ban filters</li><li>Placing a user in the 'Banned' group</li><li>Suspending the user so that they cannot access the board temporarily</li></ul>Additionally an administrator can prevent a user from posting for a set amount of time, or require preview of all of their posts for a set amount of time.<br><br>Many users have asked us to make it easier to ban users - frequently an administrator finds that they want to do more than just one of the above actions, and usually against a specific user account who has been causing problems.<br><br>IP.Board 3 will help administrators control who can (and cannot) access their board. While all of the above features are still in place and can be accessed individually just as in IP.Board 2.x, there is now a centralized "Ban User" panel that an administrator can use when they are taking action against a specific user account.<br><br>When viewing the user account, there is a button you can click labeled "Ban User" (if the user is already banned, the button will read "Unban User"). Upon clicking this button, an AJAX popup window will present you with many options.<br><br>Firstly, IP.Board now supports a true "banned member" status, separate from their actual user group. This means you can ban a member without moving them into another group (for instance, if you do not want to upset the user's friends on your board).<br><br>The ban management panel will also allow you to move the user to another group (e.g. the "Banned" group included by default with the IP.Board installation routine). You can also ban the user's email address and username right from the popup window.<br><br>Additionally, every IP address that IP.Board can find that the user has used will be listed, and you will be able to ban each IP address just by checking the box next to each one.<br><br>Lastly, there is a textarea box provided on the popup that will allow you to enter in a note (which saves to the typical user notes area) for future reference.<br><br>As a convenience, links to suspend the member temporarily, remove the user's posting rights, and require moderator preview of the user's posts appear in the window, in case you determine you would rather take one of those actions instead.<br><br><br>The unban panel provides exactly the same options, but in reverse, allowing you to move the user back to their normal member group, remove their email address, usernames and IP address from the ban filters, and to remove the banned flag on their account, reversing the changes you just made.<br><br><br>Account management is important to administrators, and IP.Board 3 is taking steps to make such management that much simpler.
]]></description><guid isPermaLink="false">462</guid><pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate></item><item><title>IPB 3: Styling IPBoard 3</title><link>https://invisioncommunity.com/news/invision-community/2449-ipb-3-styling-ipboard-3/</link><description><![CDATA[<p>One of the first items we determined for IPBoard 3 was that it was going to ship with a brand new skin. Our current skin has been with us since the first release of IPB2, and the style goes back even further than that. The Pro skin was introduced more recently, but its main intention was to simplify, rather than bring a significant update.<br><br>And so, the responsibility for designing and implementing the new skin came to me. This is a huge undertaking, both in terms of scope and sheer scale. The skin is the most visible part of any product; it is what forms your first impression, it is the part you use every moment. In addition, since we have big upgrades to the template system coming (detailed <a href="http://forums.invisionpower.com/blog/ips_news/index.php?showentry=2385" target="_blank" rel="external nofollow">here</a>), every aspect of the skin must be redone, from scratch. IPBoard is a huge application, so this is no mean feat.<br><br><b>Objectives</b><br>Before even considering the visual appearance of the skin, I wanted to set down some objectives for it. These are:<br><br>- Ensure semantic markup as far as reasonably possible<br>- Ensure XHTML validation (1.0 Strict)<br>- Ensure Javascript is unobtrusive<br><br>These objectives have real benefits for the modern web. Semantic markup is not only good for screenreaders, but it provides a solid base for skinners. When all stylistic decision is removed from the XHTML, those decisions can now be made in the CSS alone. My goal with the new skin is to minimize the need to edit templates, and semantic markup forms a part of this. The hope is the majority of skins will be achieved simply by editing CSS - I'm sure admins will appreciate how much easier upgrading will be when templates remain largely identical across skins! <br><br>Another great benefit of semantic code is that we will now be able to serve a printer-specific stylesheet, and do away with the 'print-view' code in IPB itself.<br><br><b>Javascript</b><br>IPBoard 3 is going to ship with the PrototypeJS library. I've always believed that the new generation of Javascript libraries are a big step forward for Javascript usability, so I'm looking forward to making use of them (Nexus beta testers will know we already use it heavily in that product). PrototypeJS allows developers to focus on writing features, rather than fixing cross-browser compatibility issues or poor support for a particular part of the language. We'll be making use of the excellent event-handling capabilities to get as much Javascript as possible out of the IPBoard templates.<br><br><b>Skins shipping with IPBoard 3</b><br>Our plan right now is to ship at least 3 skins with IPBoard 3. These will be: the default 'fancy' skin; a simplified skin intended to be used as a base for skinners; and a mobile skin, a lightweight version designed for use on mobile devices. This last skin will do away with the present lo-fi version, and become a full-fledged 'light' alternative, complete with posting, searching and so forth.<br><br><b>Style Guide</b><br>To ensure all developers within IPS are on the same track when writing XHTML and CSS, I developed a style guide that we will be using internally. This formalizes the practices we will be using and should help to ensure consistent output. I want to make the guide available to the public partly for review, but primarily so that our modding and skinning community can ensure their code follows our standards too, if they wish. Your feedback and thoughts on the guide are welcome.<br><br><a href="http://community.invisionpower.com/applications/core/interface/file/attachment.php?id=16749">IPS_style_guide.doc</a><br><br><b>Feedback</b><br>I'm deliberately avoiding showing the progress on the new skins, but they are underway. Once they are nearer to completion we will begin previewing the design itself. For now, I just wanted to introduce you to our line of thinking and aims for the interface side of IPBoard 3 development. If you have any feedback on things I've mentioned here, or more general feedback about improvements you'd like to see in the IPB3 skin, I encourage you to leave a comment.</p>]]></description><guid isPermaLink="false">461</guid><pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate></item><item><title>Advancing the Login Manager</title><link>https://invisioncommunity.com/news/invision-community/2418-advancing-the-login-manager/</link><description><![CDATA[<p>IP.Board 2 included a login manager utility in the admin control panel.  Using this tool, you could tell IP.Board to authenticate login requests  against third party databases, LDAP installations, or against  IP.Converge, for example. You could even write up your own login  methods and authenticate against any external data source of your  choosing (i.e. the <a href="http://resources.invisionpower.com/index.php?appcomponent=downloads&amp;showfile=1344" target="_blank" rel="external nofollow">IP.Board 2.3 OpenID module</a>).  We used the login manager for conversions too - if you converted from  another forum software, our login manager can understand the old  password hashing schemes so that you do not need to reset all of your  users' passwords (in most cases).<br><br><b>IP.Board 3 takes the login manager even further.</b><br><br>The  login forms on the front end are all being consolidated into one  template. This will make it easier to ensure that every time a login  form is displayed, the same login form is displayed. You won't have to  add options to multiple templates, as you did in IP.Board 2, if you  want to customize the login form in any way. The login form has also  been made "smart". Because you could potentially have a login method  that requires a username and a login method that requires an email  address, we decided to dumb down the form a little bit. You will be  asked for your "sign in name" now (just one field) and IP.Board will  figure out if you submitted an email address or a username.<br><br>We've  removed the option of "passthrough" or "onfail" from the login manager.  It is no longer needed, as you can now chain login methods together.  For instance, you may want to try to authenticate a user against the  local database first (if the account exists), but if that fails, load  the member from a remote database. Or you may want to allow a user to  login using one of a number of data sources you maintain. This  functionality is now possible. The login methods in the admin control  panel are reordered using drag-n-drop to make it easy to control which  order they are checked in.<br><br>Some login methods need extra  information from you. For instance, if you use LDAP, IP.Board would  need to know the LDAP server host name, your username and password to  login to LDAP to check the user, and so on. In IP.Board 2, this  information is entered into a configuration PHP file. IP.Board 3  presents this information in the admin control panel to make it easier  for you to check and update whenever you may need to.<br><br>In  IP.Board 2 when a member is added to the local database after  authenticating through a remote data source, the member would be  required to fill in a display name, and potentially their email  address, even if that information already existed in the remote source.  In IP.Board 3, there is much more control over this at the login method  level - you can pull ANY data you want from a remote source and use it  in IP.Board. At the very least, this means if there is an email address  and a username available in your remote data source, the user most  likely will not be required to visit an intermediary screen before  being allowed access to your forums. The name and email will be stored  automatically, making for a very seamless login experience.<br><br>IP.Converge  has received a slight update too - if you have IP.Converge enabled on  your board, your users (who have already logged into the forum and  configured their account) will now be able to use their username to  login (if you enable username logins in the ACP). Behind the scenes  IP.Board will find their email address and authenticate through  IP.Converge using their email address, but your users won't have to  know that.<br><br>Additionally, OpenID has being added to IP.Board 3 as  a supported login method. If you are not familiar with OpenID, it is  basically an emerging protocol allowing you to control your own login  authentication. You submit a url to sites that support OpenID (such as  Yahoo, Wordpress, Flickr, and AOL) and then you are taken to that URL  to verify the request really is from you. You may be required to login  to your OpenID provider to confirm what information you are allowing to  be sent back to the requester (in this case, your forums). After you  confirm this information, you will be automatically logged into your  forum. Additionally, as long as the user allows their name and email  address to be sent back to the forums, their account will be fully  created and functional. IP.Board will support OpenID 1 and OpenID 2  with the Simple Registration, Attribute Exchange, and PAPE extension  modules (meaning email, username, date of birth and gender will all be  supported and remembered by IP.Board, and that you can supply a policy  url to the OpenID provider). Please note that we will be using the <a href="http://openidenabled.com/php-openid/" target="_blank" rel="external nofollow">PHP OpenID libraries from JanRain</a> for the OpenID backend support.<br><br><br>If  you don't need any of this functionality, it won't impact you at all!  For those of you who have been requesting it, however, IP.Board 3  should cover all your bases.</p>]]></description><guid isPermaLink="false">460</guid><pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate></item><item><title>IPB 3: Making Templating Easier</title><link>https://invisioncommunity.com/news/invision-community/2385-ipb-3-making-templating-easier/</link><description><![CDATA[<p>HTML logic has been a feature of Invision Power Board for quite some time now. Although we didn't make much use of the '&lt;foreach&gt;' tag so that skins could be backwards compatible, we did make good use of the &lt;if&gt; &lt;else /&gt; logic. Now that we have a clean slate with v3.0, we can really make some positive changes.<br><br>Invision Power Board 3.0 makes full use of the existing HTML logic and adds some more functionality. This allows for some dramatic customization without touching any of the PHP code. Where possible, each 'view' (board index, topic listing, viewing a topic) has a single template. Previous versions 'stitched' together several templates (as many as 30!) to create a single page view. This meant that some items were fixed and unable to be moved. For example, on the board index, it was not possible to move the board stats above the list of forums. Likewise it was not possible to move the active users below the board statistics.<br><br>Now you can. You can move any item to any place for that view without having to edit the PHP files themselves. This will really open up designer's creativity and allow some really unique looking templates.<br><br>Another leap forward for Invision Power Board 3 is the ability to use display logic in the templates themselves. Naturally, we were always able to use &lt;if&gt; and &lt;else /&gt; but you can now use the following standard tags:<br><br><b>The Date Tag:</b><br><i>Examples:</i><br></p><p> {%date="1210012321"|format="manual{d m Y}"%} {%date="-1 day"|format="long"%}</p><pre class="ipsCode">{%date="now"|format="long"|relative="false"%}<br><br></pre><p><br><br>For the first time, you can now explicitly specify a date format on a per-use basis. The tag accepts either a unix 'timestamp' or a human string like 'now', '-1 day', 'tomorrow', etc. The format parameter can either be a standard IPB date format (long, short, joined, etc) or a manual PHP Date format.<br><br><b>The Parse Tag:</b><br><i>Examples:</i><br></p><p> &lt;parse expression="substr( $data['name'], 0, 10 )" /&gt;</p><pre class="ipsCode">&lt;parse expression="sprintf( "14", "There are %s apples in the bag" )" /&gt;<br></pre><p><br><br>This parse tag allows you to make on-the-spot parsing using PHP code. This tag is replaced with the value returned from PHP.<br><br><b>The URL Tag:</b><br><i>Examples:</i><br></p><p> {%url="foo=1&amp;bar=2"|base="public"%}</p><pre class="ipsCode">{%url="foo=1&amp;bar=2"|label="Click Me"|base="public"|id="myLink"|class="linkCSS"|onclick="this.function()"%}<br></pre><p><br><br>The first example will actually create the entire <!--fonto:Courier New--><span style="font-family:Courier New"><!--/fonto-->&lt;a href='' ... &gt;...&lt;/a&gt;<!--fontc--></span><!--/fontc--> HTML chunk whereas the second example will only return a formatted URL. The main reason for this tag is to prevent hardcoded entire URLs or even fixing part of the URL to a setting. In IPB 2.3 it wasn't unusual to see this:<br><br></p><p></p><pre class="ipsCode">&lt;a href='{$this-&gt;ipsclass-&gt;base_url}&amp;act=login'&gt;Log In&lt;/a&gt;</pre><p><br><br>The new method would be like so:<br><br></p><p></p><pre class="ipsCode">&lt;a href='{%url="act=login"|base="public"%}'&gt;Log In&lt;/a&gt;</pre><p><br><br>The 'base' value being 'public' tells the template engine to use the public URL and not the ACP url. The real power of this feature lies in the return value being automatically fed via formatURL() which can return a friendly URL if friendly URLs are enabled.<br><b><br>The Variable Tag:</b><br><i>Example:</i><br></p><p> &lt;variable key="tdColor" oncondition="$foo == "green"" value="green" /&gt; &lt;variable key="tdColor" oncondition="$foo == "black"" value="black" /&gt; &lt;span style='color:&lt;variable="tdColor" /&gt;'&gt;Hello World!&lt;/span&gt;</p><pre class="ipsCode">&lt;variable key="tdColor" default="blue" /&gt;<br><br><br><br></pre><p><br><br>In this example, depending on $foo having a value of green:<br></p><p></p><pre class="ipsCode">&lt;span style='color:green'&gt;Hello World!&lt;/span&gt;</pre><p><br><br>This tag allows you to decide in the template itself how part of the template should display without having to edit PHP code. This is a handy tag for use in foreach blocks to alternate between colours when showing posts, topics, etc.<br><br><b>Custom Tags</b><br>The tags URL and date tags shown above use the <!--fonto:Courier New--><span style="font-family:Courier New"><!--/fonto-->{%tag="foo"|param="bar"%}<!--fontc--></span><!--/fontc--> format. These are actually custom plug-ins. You can write your own custom plug ins and they are available immediately within the templates. You could even modify the default plug-ins to change their behaviour.<br><br>We're looking forward to how these new tools are used in your own templates!</p>]]></description><guid isPermaLink="false">459</guid><pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate></item><item><title>IPB 3: Creating a new framework using PHP 5</title><link>https://invisioncommunity.com/news/invision-community/2361-ipb-3-creating-a-new-framework-using-php-5/</link><description><![CDATA[<p>One of the biggest discussions we had during Invision Power Board 3.0's planning was whether or not to drop support for PHP 4 and require a minimum of PHP 5. The advantages of using only PHP 5 were numerous and we really felt like we could increase security and efficiency by taking advantage of the new PHP 5 features. This decision became much easier when we learned that PHP 4 was no longer being developed.<br><br>To really see the benefit of using PHP 5, one must first consider how Invision Power Board's new framework is made possible by PHP 5. <br><br>Although Invision Power Board 1 and 2 were loosely based on the 'front controller' design pattern, it had no real framework to hang the code on. The closest it had to one was the 'ipsclass' super-class.<br><br>'ipsclass' was a convenient method of transporting various classes and functions around Invision Power Board. Convenient, but not ideal. One had to pass this 'super-class' from class to class forcing PHP 4 to use a reference (and being severely punished when forgetting!). This super-class contained almost all the 'core' functionality of Invision Power Board. Member, input and database objects were attached along with numerous other classes and functions. None of which was ordered in any logical format.<br><br>We have recoded Invision Power Board 3.0's framework from the ground up. We have done away with the 'ipsclass' super-class and employed the 'Controller -&gt; Command -&gt; View' pattern. This allows us to quickly add new code and to allow fast refactoring of our existing code. This pattern is built upon the 'IPS Registry'. This is a singleton class which maintains interfaces to several other registry objects (database, request, settings and member). Each of these objects maintains a clear place within the registry. This allows us to pass core data through the different levels of our pattern. Other functions from 'ipsclass' are moved into singtons: "IPSLib"; disparate functions that do not belong elsewhere, "IPSText"; functions for parsing and cleaning text, "IPSCookie"; functions to handle cookie management and "IPSMember"; functions that deal with loading, saving and parsing members. This offers a clear structure with clear boundries for each singleton class. Being singletons, you do not need to pass or reference the class in other files.<br><br>Here's an example:<br><b><br>IPB 2.3 Code</b><br></p><p>$value = $this-&gt;ipsclass-&gt;settings['board_name']$id    = $this-&gt;ipsclass-&gt;member['id'];$this-&gt;ipsclass-&gt;input['f'] = 2;print $this-&gt;ipsclass-&gt;get_cookie('foo');$text = $this-&gt;ipsclass-&gt;txt_alphanumerical_clean( $text );print $this-&gt;ipsclass-&gt;class_forums-&gt;build_info();</p><pre class="ipsCode">print $this-&gt;ipsclass-&gt;input['name'];<br><br><br><br><br><br><br></pre><p><br><b><br>IPB 3.0 Code</b><br></p><p>$value = $this-&gt;settings-&gt;getSetting('board_name');$id = $this-&gt;member-&gt;getProperty('member_id');$this-&gt;request-&gt;setField( 'f', 2 );print IPSCookie::get('foo');$text = IPSText::alphanumerical_clean( $text );print $this-&gt;registry-&gt;getClass('class_forums')-&gt;build_info();</p><pre class="ipsCode">print $this-&gt;request-&gt;getField('name');<br><br><br><br><br><br><br></pre><p><br><br>It's worth noting that we have also applied the ArrayAccess interface to the registry, so you may access them like so:<br></p><p>$this-&gt;settings['board_name'];</p><pre class="ipsCode">print $this-&gt;request['name'];<br></pre><p><br><br>Although the code examples use $this-&gt;request, $this-&gt;member, etc, these are set up in a constructor. You would pass the IPS Registry singleton into the class. Here's a typical constructor:<br></p><p>{    $this-&gt;registry = $registry;    $this-&gt;member   = $registry-&gt;member();    $this-&gt;request  = $registry-&gt;request();    $this-&gt;settings = $registry-&gt;settings();    $this-&gt;DB        = $registry-&gt;DB();}</p><pre class="ipsCode">function __construct( ipsRegistry $registry )<br><br><br><br><br><br><br></pre><p><br><br>You could also access the ipsRegistry class directly, although this is strongly discouraged:<br></p><p></p><pre class="ipsCode">print ipsRegistry::instance()-&gt;request()-&gt;getField('name');</pre><p><br>PHP 5 offers a much better OOP (object orientated programming) environment where references are assigned automatically. You can also chain along functions, which we make great use of. This allows us to do some neat trickery, like so:<br><br><b>IPB 2.3 Code</b><br></p><p>print $this-&gt;ipsclass-&gt;compiled_templates['skin_boards']-&gt;board_index( $data );</p><pre class="ipsCode">$this-&gt;ipsclass-&gt;load_template('skin_boards');<br></pre><p><br><b><br>IPB 3.0 Code</b><br></p><p></p><pre class="ipsCode">print $this-&gt;registry-&gt;getClass('output')-&gt;getTemplate('boards')-&gt;board_index($data);</pre><p><br><br>You'll note that you no longer have to implicitly load the template anymore. This is handled within the 'getTemplate' function if it's not already loaded. This object is then returned for use to chain onto 'board_index()'. This simple adjustment of code makes for less manual code and less room for error.<br><br>We are also making great use of PHP 5 abstract classes and interfaces to define extensible classes. This will make it much easier and clearer for others writing their own additions to Invision Power Board. Having a clear interface to work with will reduce errors in development and formalize how you may access Invision Power Boards class structures.<br><br>The 'controller -&gt; command' structure is built so that you may add new modules and sections dynamically without the need to change a single line of code elsewhere in the script. Modification authors can just drop in new folders and Invision Power Board will run them when called correctly via a URL. The controller makes use of variables in a URL and safely loads a command file if a matching command file is located. For example: "appcomponent=core&amp;module=global&amp;section=login" is mapped to "applications/core/modules_public/global/login.php". We make use of the Reflection class functions to ensure that any potential command file is a sub-class of the controller to prevent the risk of tampering.<br><br>We've barely scratched the surface, but it's clear that Invision Power Board 3's framework is very powerful and code-efficient. This is only made possible by the advancements in PHP 5 that we've taken full advantage of.</p>]]></description><guid isPermaLink="false">458</guid><pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate></item><item><title>IP.Board 3.0 Development Introduction</title><link>https://invisioncommunity.com/news/invision-community/2332-ipboard-30-development-introduction/</link><description><![CDATA[<p>We are moving rapidly on IP.Board 3.0 development along with its related IP.Blog, IP.Gallery, and IP.Downloads updates. As we approach being able to post these updates for a preview and an eventual release we think we are getting close enough that we can start talking about some of the new features we have planned.<br><br>I will be purposely vague in this first blog entry about IP.Board 3.0's development and let our development staff get into detail in future blog entries. While not promising a set schedule, you can expect an update from a developer almost weekly going into detail about a specific change or new feature.<br><br>Our full new feature list is very long but here is a sampling for everyone. Our development team will go into detail about each one in the coming weeks and also introduce all the other additions not mentioned in this introduction.<br><br><b>Interface</b><br>There will be a great focus on usability and streamlining functions. The introduction of a new template engine which allows for multiple default template sets, easier skin editing, and a brand new default skin is something we are very excited about. Search engine friendly URLs will not only make your community more interesting to search engine spiders but allow for more human-friendly linking.<br><br><b>Control</b><br>The overhauled BB Code manager along with moving all default BB Codes to the system so you can edit them will allow forum administrators greater control over how their users interact with the community. We are implementing greater configuration options including being able to turn off features you do not use and finer controls on current features. Finer tuning your user signatures, turning specific options off, or even removing entire sections such as the calendar will allow you to gain finer control of how you want your community to be presented.<br><br><b>Features</b><br>There will be quite a few new features but, for now, we will save those for our upcoming blog posts to reveal what's new. A quick sampling: user reputation system, more permission configuration options, moderator enhancements, and ... lots more.<br><br><b>Integration</b><br>We want you to integrate your community with the rest of your web site with minimal effort. To make this easier for you, we will be putting great focus on creating a new hooks system for developers, more advanced APIs, content syndication, login methods, and more. Our applications (IP.Blog, IP.Gallery, and IP.Downloads) more tightly integrated with each other and with IP.Board itself.<br><br><b>Coding</b><br>There will be a lot of low-level code improvements which will make working with our codebase much easier for our community of developers. Everything we do will be with an eye toward resource usage improvements to make our software lighter on servers.<br><br><b>Server Requirements</b><br>To take advantage of many new capabilities, we will be officially dropping support for PHP 4.x series and requiring a minimum of PHP 5.x for our software. The software will work on the MySQL 4.x database series but we will highly suggest using the MySQL 5.x version.<br><br><b>Oracle Database</b><br>Due to slowing demand over the past few years, we have decided to discontinue supporting Oracle database system. We will continue to support MySQL and Microsoft SQL Server.<br><br><b>Subscriptions Manager</b><br>Again, due to slowing demand, we have decided to stop updating the subscriptions manager in IP.Board. We will be fixing all current known bugs to make the system compatible with IP.Board 3.0 so those currently using the subscriptions manager will still be able to upgrade. Anyone currently using the subscriptions manager will still be able to upgrade and everything will work normally for you. From there, we will be looking for community developers to keep it up to date. We will be posting a blog entry when ready to ask for assistance in keeping the subscriptions manager up to date. Anyone wishing to use our new IP.Nexus commerce system when it's available will be able to migrate as well.<br><br><br><br>Of course this is just the short version. Keep an eye on our blog for more detailed updates and new feature reveals in the coming weeks. And finally, when will it be released? Right now we are thinking the fourth quarter of 2008 (IP.Board, IP.Blog, IP.Gallery, and IP.Downloads will all receive a new version at the same time) but of course that's subject to change... it could very well be sooner...</p>]]></description><guid isPermaLink="false">457</guid><pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate></item><item><title>IP.Blog 1.4 Preview</title><link>https://invisioncommunity.com/news/invision-community/2226-ipblog-14-preview/</link><description><![CDATA[<p>We've upgraded our blog to the new 1.4 version for the first round of testing.  We will have a beta version available for download next week, until then enjoy the new version here and let us know what you think.  We're very excited to hear your feedback and suggestions on this blog preview!<br><br><b>New Default Style</b><br><br>IP.Blog has been overhauled with a fresh new style, one which feels more like a traditional blog. Additionally, it has been designed with themes (see below) in mind, so there is plenty of room for theme authors to experiment in their designs.<br><br><b>Themes and Custom Headers</b><br><br>You can now install 'theme packs' and allow your users to choose which of these themes will be applied to their blog.  Using themes you can completely change the look and layout of an individual blog (to see a demonstration of a theme in use, check out <a href="http://forums.invisionpower.com/blog/rikki/index.php" rel="external nofollow">Rikki's blog</a>).  Users are also able to create their own unique theme, these user themes must be approved by an adminstrator before they are publically viewable by other users. The new custom header system allows you to create multiple header images for users to choose from.<br><br><b>Content Block Plugin System</b><br><br>It's now much easier to create your own content blocks, using a new plugin system.  It's now possible to define settings for a plugin that apply to individual blogs, this means that you can integrate with 3rd party widgets that require a unique username for each blog.  We've also included new content blocks in this release: Twitter, MyBlogLog, Google Reader, Friends Blogs, and Recent Visitors.<br><br><b>Social Bookmarks</b><br><br>A new bookmark manager allows you to define bookmark services for your blog system.  These services will allow blog entries to be easily submitted to the bookmark services that you setup.  There are several preconfigured services: Del.icio.us, Digg, Facebook, Mixx, Reddit, and Stumbleupon.  Please feel free to suggest any services that you would like to see included by default.<br><br><b>Media Integration</b><br><br>The new  tag allows you to automatically convert various media types into a more useable format.  FOr example, [ blogmedia ]http://www.test.com/somemp3.mp3[/ blogmedia] would be converted into a mp3 player for the specified file.  You can define any media type you like in the Media Tag manager, by default we include: Flickr Image Set, GameTrailers, Google Video, MP3 Player, MySpace Video, Veoh, and YouTube.  Please suggest any additional media tags that you would like to see included by default.<br><br><b>Akismet Integration</b><br><br>It's now possible to use Akismet to filter spam for both the comment and trackback system.<br><br><b>Feedburner Integration</b><br><br>Users can now override the default rss syndication and use FeedBurner.<br><br><b>Other Changes:</b><br></p><ul><li>Edit Entry Date</li><li>Display article count for categories</li><li>Blog Offline Mode</li><li>Entry author replies in comments are now highlighted</li><li>Admins can select a 'Featured Entry' to be displayed on the blog listing</li></ul>]]></description><guid isPermaLink="false">456</guid><pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate></item><item><title>IP.Blog Status Update</title><link>https://invisioncommunity.com/news/invision-community/2216-ipblog-status-update/</link><description><![CDATA[<p>We plan to release a small update later this month, with a slightly refreshed style and a few extra features.  We haven't locked down exactly what these features will be, but we will be talking about it more soon.  I know that many of you were expecting a larger release and we apologize for the link of time from the last major update to IP.Blog.  The larger update is coming, which will be IP.Blog 2, is coming and will release along side IP.Board 3.<br><br>We plan to have a beta of 1.4 available in the next two weeks, it's not too late to suggest in minor tweaks and changes that you would like to see included in this release.  <br><br>We're very excited about the future of IP.Blog and have many new features planned for version 2 and we thank you for your patience during this development time.  We'd love to know what features you are most interested in for the next major release, now would be a great time to post those suggestions in the IP.Blog forum.<br><br><a href="http://forums.invisionpower.com/index.php?showtopic=271465" rel="external nofollow">IP.Blog 2.0 Discussion</a><br><a href="http://forums.invisionpower.com/index.php?showtopic=271464" rel="external nofollow">IP.Blog 1.4 Discussion</a></p>]]></description><guid isPermaLink="false">455</guid><pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate></item><item><title>OpenID Login Module available for testing</title><link>https://invisioncommunity.com/news/invision-community/2170-openid-login-module-available-for-testing/</link><description><![CDATA[<p>We have put together a login module which fully supports OpenID 1.x and 2.x protocol specifications.<br><br>This module is a beta release which we hope to expand upon.  It is available freely to all customers with access to our <a href="http://resources.invisionpower.com" target="_blank" rel="external nofollow">official resource site</a> in the IPS Releases category.<br><br><a href="http://resources.invisionpower.com/index.php?appcomponent=downloads&amp;showfile=1344" target="_blank" rel="external nofollow">Click here to view this file</a><br><br>For those not familiar with OpenID, it is a protocol specification that allows a user to select a trust root (a site they can trust) and register.  Then, on any site that supports OpenID, the user actually logs in through their trust root, instead of your site.  Behind the scenes, your site and the trust root verify that the user is who they say they are, and if authenticated your site will allow access.<br><br>More information on OpenID can be found at <a href="http://openid.net" target="_blank" rel="external nofollow">openid.net</a> (official site) and on <a href="http://en.wikipedia.org/wiki/OpenID" target="_blank" rel="external nofollow">Wikipedia</a>.<br><br><i>This module only adds OpenID Consumer support - it does not add OpenID Provider support.</i><br><br>Please remember - this is a beta release of the login module, and as such there may be bugs or other issues with the module.  If you are interested in using this login functionality you should test it out on a test site before applying it to your live site, to be certain there are no issues.  <b>As with any modifications, IPS does not support this modification directly.</b>  If you have issues with the module and require assistance, you should leave a comment on the file's download page.</p>]]></description><guid isPermaLink="false">454</guid><pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate></item><item><title>IP.Nexus: Ticket Weighting</title><link>https://invisioncommunity.com/news/invision-community/2127-ipnexus-ticket-weighting/</link><description><![CDATA[<p>This video shows the ticket weighting functionality and how you can prioritize ticket listings.<br><br><a href="http://www.invisionpower.com/nexusdemo/ticket_weighting/ticket_weighting_new.htm" target="_blank" rel="external nofollow">View Video</a></p>]]></description><guid isPermaLink="false">453</guid><pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate></item><item><title>IP.Nexus: Form Manager Video</title><link>https://invisioncommunity.com/news/invision-community/2125-ipnexus-form-manager-video/</link><description><![CDATA[<p>This next video shows the form manager functionality in the IP.Nexus content management application.<br><br><a href="http://www.invisionpower.com/nexusdemo/formmanager/formmanager.htm" target="_blank" rel="external nofollow">View Video</a></p>]]></description><guid isPermaLink="false">452</guid><pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate></item><item><title>IP.Nexus: Page Content Video</title><link>https://invisioncommunity.com/news/invision-community/2114-ipnexus-page-content-video/</link><description><![CDATA[<p>This video focuses on the static page content section of IP.Nexus.<br><br><a href="http://www.invisionpower.com/nexusdemo/page_management" target="_blank" rel="external nofollow">View Video</a></p>]]></description><guid isPermaLink="false">451</guid><pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate></item><item><title>IP.Nexus: Dashboard Video</title><link>https://invisioncommunity.com/news/invision-community/2105-ipnexus-dashboard-video/</link><description><![CDATA[<p>The first in our series of preview videos for the upcoming IP.Nexus. This video shows a quick overview of the dashboard and its widget capabilities.<br><br><a href="http://invisionpower.com/nexusdemo/dashboard.htm" target="_blank" rel="external nofollow">View Video</a></p>]]></description><guid isPermaLink="false">450</guid><pubDate>Wed, 26 Sep 2007 18:13:00 +0000</pubDate></item><item><title>Nexus and Dynamic Legacy</title><link>https://invisioncommunity.com/news/invision-community/2097-nexus-and-dynamic-legacy/</link><description><![CDATA[<p>For those of you who have been with IPS for some time you may have been aware of a previous announcement regarding the development of two separate products called Nexus and Dynamic. Nexus was to be an ecommerce billing system and Dynamic was to be a content management system.<br><br>As we developed these products the Internet market had changed quite a bit so we have made the decision to totally discontinue Nexus and Dynamic production as they were. We know many of you were looking forward to either Nexus or Dynamic as they were first intended and we apologize if this disrupts your plans.<br><br>Instead we have decided to create a new product that combines the previous goals of ecommerce and content management along with a host of features including customer management, support, business organization, and a modular structure in which features are only limited by our imagination.<br><br>Since everyone at IPS loved the term "Nexus" to describe this system we decided to recycle that name and so IP.Nexus was born. IP.Nexus is a complete business management suite which includes many of the previously stated goals along with so many more. We look forward to releasing this new product line.<br><br>It is worth noting that this time around the new product is nearly complete rather than an idea in development. Expect a lot more information including the first public betas in the coming weeks! Watch our announcements forum and this blog for more information.</p>]]></description><guid isPermaLink="false">449</guid><pubDate>Mon, 17 Sep 2007 15:17:00 +0000</pubDate></item><item><title>Our next community project: Gallery Uploader Tool</title><link>https://invisioncommunity.com/news/invision-community/2088-our-next-community-project-gallery-uploader-tool/</link><description><![CDATA[<p>In part due to the awesome success surrounding our first <a href="http://forums.invisionpower.com/blog/ips_news/index.php?showentry=1939" target="_blank" rel="external nofollow">community-supported project</a>, we are in initial stages of preparing our next Community project.<br><br>As many of you may already know, Stewart had been working for some time on a Gallery uploader tool - an application a user could install on their computer to easily manipulate and upload multiple images to an IP.Gallery web installation.  Stewart made great progress on the tool before he left, and while we do have employees here capable of programming in the C# language the tool is written in, we felt this would be another great opportunity to launch a community-supported project, similar to IP.Tracker.<br><br>We would like to gather up a handful of members who are familiar and able to code with C#, and who are interested in working on this project for IP.Gallery, so that we can put the necessary final touches on the project and release it freely to the community at IPS Beyond.<br><br>The applicants will need to work closely with me, as a heavy part of the project will involve php code necessary to interact with IP.Gallery.  Additionally, any users who are also versatile in perl (or a similar CGI language) could be of use in overcoming many of the php limitations we commonly face (maximum file upload sizes, maximum execution times, and so on).<br><br>If anyone is interested, please send bfarber a PM with some background and how you think you will be able to help.  I cannot guarantee immediate responses to everyone, and almost certainly not everyone will be chosen, but we look forward to hearing from anyone interested.</p>]]></description><guid isPermaLink="false">448</guid><pubDate>Mon, 20 Aug 2007 20:26:00 +0000</pubDate></item><item><title>IP.Gallery 2.2</title><link>https://invisioncommunity.com/news/invision-community/2054-ipgallery-22/</link><description><![CDATA[<p>While IP.Gallery 2.2 has not yet been released at this time, I wanted to take a moment to outline a few of the new features and touchups in Gallery that may not be as evident.<br><br>A strong focus for this release of Gallery was strengthening the backend - many Gallery users know that some core functionality was just missing and it was time to bring Gallery in line with the rest of our offerings.  For example, users could not control the ordering of their albums, nor could moderators move images from/to albums.  This has all been fixed.  Additionally, Gallery has been updated to use IP.Board's caching methods to help reduce the number of SQL queries run on each page, and it has been moved over to a component for forward compatibility reasons.<br><br>Arguably, it's the little things that make or break Gallery software.  You have to strike the right balance between the image (which is of course the main focus in a Gallery) and the rest of the content.  We streamlined the image view page considerably to help make the image viewing more pleasant and less distractive.  The exif/iptc data that can be extracted from images was moved into a popup/movable div so it doesn't display directly on the page.  The edit/delete/etc. links were put into a single dropdown to reduce the number of buttons below the rest of the data.  Here is a screenshot showing the drop down and the popup together<br><br><a href="http://community.invisionpower.com/uploads/monthly_07_2007/blogentry-46197-1183496973.jpg"><img src="http://community.invisionpower.com/uploads/monthly_07_2007/blogentry-46197-1183496973_thumb.jpg" data-fileid="11760" loading="lazy"></a><br><br>Another frequently requested feature was easier ability to hotlink images.<br><br><a href="http://community.invisionpower.com/uploads/monthly_07_2007/blogentry-46197-1183497072.jpg"><img src="http://community.invisionpower.com/uploads/monthly_07_2007/blogentry-46197-1183497072_thumb.jpg" data-fileid="11761" loading="lazy"></a><br><br>And of course the "Set as Avatar" has finally made it's appearance via an "Avatar" button next to the Options button.<br><br>Other small but important changes involve navigating the Gallery, which many users requested be simplified.  We've added some things to make this easier for users.  Firstly, at the top right we've added "First, Previous, Next, and Last" links which will take you to the respective images inside the container you are viewing.<br><br><a href="http://community.invisionpower.com/uploads/monthly_07_2007/blogentry-46197-1183497196.jpg"><img src="http://community.invisionpower.com/uploads/monthly_07_2007/blogentry-46197-1183497196_thumb.jpg" data-fileid="11762" loading="lazy"></a><br><br>Additionally, in the photostrip at the bottom of the page, there are &lt;&lt; and &gt;&gt; buttons added (as appropriate) to allow you to cycle through the photostrip using AJAX.  This can help you get a quick overview of the images in the container, and be able to jump to an image in the container easily.  Go ahead, visit an image inside the <b><a href="http://../../index.php?autocom=gallery&amp;req=sc&amp;cat=1" target="_blank" rel="external nofollow">IPB Community Personal Photos</a></b> and try the AJAX navigation.<br><br><a href="http://community.invisionpower.com/uploads/monthly_07_2007/blogentry-46197-1183497562.jpg"><img src="http://community.invisionpower.com/uploads/monthly_07_2007/blogentry-46197-1183497562_thumb.jpg" data-fileid="11763" loading="lazy"></a><br><br>And of course, one of the more noticable changes is support for lightbox in the Gallery.  For an example of how this works, view <a href="http://forums.invisionpower.com/index.php?autocom=gallery&amp;req=si&amp;img=1854" target="_blank" rel="external nofollow">this page</a> and then click on the image.  This of course can be disabled if the administrator wishes.<br><br>There are many other important updates naturally, with some more notable changes being<br></p>
<ul><li>Drag-n-drop support for reordering post form fields and categories</li>
<li>Custom post form fields now automatically insert into the image view page and submission form</li>
<li>Ability for admins to deny ability to members to create private albums</li>
<li>Zip import support for members</li>
<li>ACP language abstraction</li>
<li>Slimmer templates for easier skinning</li>
<li>Forum-style listing for albums</li>
<li>Improved search capabilities</li>
<li>Email notification options for comments and image submissions</li>
<li>Image dimensions display on the image view page</li>
</ul>And many other smaller things you will have to find out when you install or upgrade your <a href="http://community.ipslink.com/gallery/" target="_blank" rel="external nofollow">very own Gallery</a>!
]]></description><guid isPermaLink="false">447</guid><pubDate>Tue, 03 Jul 2007 21:25:00 +0000</pubDate></item></channel></rss>
