The ability to easily share content within your community is important to your members. If your members submit an image to Gallery, it's quite probable they'll want to include that image in a post at some point, and there needs to be an easy way to do this. Likewise, if your members submit a file to the Download Manager, they may want to link to that file when replying to a blog entry. There are many instances where it is crucial that members be able to quickly and easily share the content they have contributed to your site within the community, and the old-fashioned method of copying and pasting a link into their post just doesn't cut it anymore.
This is functionality that many of our members have requested, many times over, and that we have been eager to build into the software. It was important for us, however, to build this in an extensible manner that allows us to include support for all of our applications without having to reinvent the wheel each time, and without having to manage the functionality individually per-application. Users expect a combined and intuitive interface that allows them to share all of their content easily, without having to visit their content pages and copy links and other data manually.
IP.Board 3.2.0 will introduce a new shared media manager to fulfill this important need.
As always, the screenshots shared in this blog entry are of a development build of IP.Board and may not represent the full and final look that ships when the next release is declared final. What you see below is subject to change up until IP.Board 3.2.0 is released.
With the new editor in IP.Board 3.2.0, we have built a plugin that allows your members to access and share their previously submitted content.
When you click on this button, your shared media popup will open allowing you to browse, search and include media you wish to include in your post.
As you can see here, you can include media from many areas of the board. Because we have used a plugin system, not only can we expand capabilities in the shared media system for our own applications, but third party modification authors can also easily tie into this popup to include their own media to be shared.
Each plugin defines how it presents its shareable content. Here are screenshots of the existing areas
(Gallery areas are still under development with the continuing development of Gallery 4.0, so these areas are not yet finished and presentable)
You will see pagination at the top and bottom of the templates. This pagination uses AJAX to provide the next and previous pages without requiring a page load or a messy iframe solution.
You will also see a search bar at the bottom of the window. The search feature also utilizes AJAX and is useful for finding content you wish to share without having to page through all of your previously shared media.
Your search value is remembered when you click through tabs, but you can easily reset the tab by clicking the "Clear Search" link next to the search form. This way if you search for an attachment and don't find it, but remember that you may have submitted it to the download manager instead, you don't have to manually search again after you have switched tabs.
When you click on an item it is added to the editor as a bbcode. Once you are done, you can click the "Finish" button to make the modal box go away and continue with your post.
Upon submitting the post, IP.Board will verify you have permission to share the content you are attempting to share (i.e. to prevent a sneaky user from sharing someone else's gallery image or calendar event), and then will save the post as normal. When displaying the post, IP.Board will call each plugin that was used to let the plugin determine how to parse and display the content you are sharing. In this screenshot, I have shared a calendar event, an attachment, a blog entry, and a download manage file (in that order).
Again, each plugin can determine how to display its content. I would like to re-iterate that these are early preview screenshots and the display of our content may change between now and release, but you can see how sharing media in IP.Board 3.2.0 is a much richer and easier experience than in earlier versions, providing a much nicer end result for your contributors and the users browsing your community alike.
We have a lot of ideas for taking this new feature even further in future versions, but we felt our initial focus would best be served by ensuring the sharing process was easy for all.
What About Permissions
Permissions were a complicated subject when determining how best to handle sharing media across applications. Can I share private calendar events I have submitted? What happens if I share a gallery image in an album that a guest cannot view? What happens if I delete a blog entry that I previously shared?
These are all very pertinent questions that we had to take into account when building this new feature. While the plugin approach this system takes allows us to adapt each plugin as needed to best handle its permission checking routines, we have decided that a simple approach for this first release was the best solution. You can only share your own content, first of all. Moderators can share content of any user if they manually type in the bbcode, but will not be presented with it in the popup (this is necessary so that if a moderator edits your post the shared media will still be allowed).
If you delete the destination content that you have shared, the bbcode will simply return an empty string and nothing will show in the post where it was used.
Whatever you share will be viewable in the area you share it in. You cannot share content that is inherently private or not approved (i.e. a private calendar event, or a blog entry that is not published or is pending approval), however you can otherwise share any of your content that you wish. It is, after all, your content and you could just as easily download a file and upload it elsewhere to link to, or copy and paste a blog entry's content into the post form. If you share that content, what you see in my previous screenshot will display to anyone that can view the page you shared the content on. For instance, if you share a calendar event that a guest cannot see in a topic that a guest can see, the guest will see the parsed calendar block as in my previous screenshot. This is only a preview, and as mentioned above, there would be nothing stopping you from copying and pasting the calendar event contents to the topic anyways.
We opted against complicated permission checking when displaying pages with shared content for a few different reasons:
- Most users are not going to know your permission configurations and would become confused hearing that content they shared is viewable by some but not others
- As mentioned, users can simply download files and upload elsewhere to link to, or copy and paste the destination contents
- Complicated permission checking routines would negatively affect the page loading speed, as there are more resources needed to verify all of the different permission permutations possible across all applications
- Content caching would potentially cause issues with shared content. While we could account for this in our applications, it would be more difficult to account for this in third party applications that can also utilize this new system.
Some Other Details
Firstly, this new media sharing tool is available anywhere that the new editor is available. That means you can share download manager files in calendar events, gallery images in blog entries, and forum attachments in download manager submissions. There are obviously a lot of possibilities here, and we expect that as third party applications embrace this new feature you will be able to share even more of your community content anywhere across your community.
The shared media tool is a custom bbcode, like all of our other bbcodes. This means you can control its use just like any other bbcode, including limiting the feature to select user groups (or disabling it entirely). You are not required to use this new feature if you don't wish to, and you can restrict it any way that you wish.
The system is entirely based on a plugin callback approach allowing third party developers to hook into it easily. I can envision sharing "issues" from tracker in forum posts, or items from other popular modifications throughout your site. The plugins are relatively simple to create and we expect to provide documentation of the system to developers shortly following the 3.2 release. It is important to note that plugins can each utilize their own permission checking and display routines, however they can also utilize our basic layouts as shown in my previous screenshots. There is a lot of flexibility in this new system for developers.
And lastly, this is only the first version of our new shared media tool. We expect to enhance and bring further capabilities to this feature in future versions of our software.
We know this is a tool that everyone has been waiting for and we appreciate your patience. As always, we wanted to do this right the first time, rather than provide similar capabilities through each individual application, increasing development time, maintenance, resource usage, and so forth. By including this feature in IP.Board 3.2 we will now have a strong central framework that applications can utilize, providing for a more consistent and smoother user experience for all.
Feel free to comment on this blog entry below or, if you have feedback unrelated to this blog entry, start a new topic in our feedback forum. Be sure to check the What's New in IP.Board 3.2 topic for a running list of announced changes!