QuickTemplates - Plugin

    Summary

    The QuickTemplates Plugin is a wrapper plugin for multiple extensions to Jive SBS that enable fast content contribution.

     

    Official plugin of  Plugins by ryanrutan

     

    Installation

    Plugin install through Admin Console, with optional configurations.

    See Configurations section (below) for more information.

     

    Screenshots / Usage

    I've created this quick video demonstrating the Quick Templates Plugin, hope this helps explain how it can be used.

    QuickTemplates - Video Walk-Through

     

    Releases

    • 1.0.0 - June 9, 2010 (SBS 4.0.0)
    • 1.0.1 - September 1, 2010 (SBS 4.0.0)
    • 1.0.2 - January 27, 2011 (SBS 4.5.x)
    • 1.0.3 - February 28, 2011 (SBS 4.5.x)
    • 1.1.0 - July 7, 2011 (SBS 5.x)
    • 1.1.0.1 - August 18, 2011 (SBS 5.x) - Bug Fix, see changelog
    • 1.2.0 - February 8, 2012 (SBS 5.x)

     

    Plugin Support

    This plugin IS NOT supported by Jive, and use of this plugin should be done at the user's discretion, or as advised by their Jive Support representative.

     

    Copyright and License

    Copyright 2012 Ryan Rutan under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

    December 10th, 2012 - Released QuickTemplates v2 - Plugin for Jive 6

    Features

     

    QuickTemplatesWidget

    A widget that works in conjunction with the Template Service and social-tags to allow  customer-enabled template driven content creation.

    • Add/Remove your  desired user-defined "template" tag to add/remove templates from a given  container.
    • Single-click a template from the Widget to start a Document  Draft in your current container (where the Widget is placed)!
      • Configuration options exist to copy Tags, Categories, and Content from the Template Document.

    Features:

    • Container Support
      • Your View (creates content in User Container)
      • Project, Space, Social Group (creates content in the same container)
    • Create Blog Posts from Template
    • Create Documents from Template
    • Create Discussions from Template (since 1.0.2, November 17th, 2010)
      • Create Questions from Template (since 1.0.2, January27, 2011)
    • Filter Template by Tag
    • Copy Template Tag (configurable)
    • Copy Template Categories (configurable)
    • Visible only to Container Admins (since 1.0.1, September 1st, 2010)
      • Ability to only show the Widget for Container Admins
    • Shared Template Repository (since 1.0.1, September 1st, 2010)
      • Ability to store all Templates in a single Directory for every-one to leverage, and configure this widget on a per-container basis to reference.
      • Note:  This feature also benefits from Tag-Filtering to support-overlapping tagging structures in the shared container.
        • See Configurations section (below) for more information.
    • Added Admin Screen Configuration (since 1.2.0, February 8th, 2012)

     

    Create-Like SBS Action (since 1.0.1, September 1st, 2010)

    When enabled this Action will appear in the Document Actions section on the page.  When invoked, it will engage the Template Service using the current document as the template source and copy the Body Content, Tags, and Categories to the Current Container.  Once created, users can relocate the document to another container via the "Move Document" functionality provided by core JIve SBS.

     

    Screenshot(s):

    See Configurations section (below)

     

    Document Template Service (since 1.0.1, September 1st, 2010)

    Service may be a lose definition; however, there is a predictable URL pattern that can be used to perform the content creation process.  It's traditional front-end is the QuickTemplatesWidget; however, if desired, users can create their own HTML front-ends with an HTML Widget to call this service and achieve the same functionality.

     

    Here is the interface definition:

    Action Context:

         /quicktemplates/create-from-doc.jspa

     

    Parameter
    Usage

    templateID

    *Required

    The DocumentID for the Document to be used as a template.  This is not the InternalDocumentID.

    For example, with an out-of-the-box implementation of SBS, you would use something like DOC-1234

    containerID

    *Required

    This is the ID for the destination container for the new content.  This is used in conjunction with containerType (see below).  For example, 1234

    containerType

    *Required

    This is the Type of Container used for the destination container.  This is used in conjunction with containerID (see above)

    Here are some example values for Container Type:

    User Container = 2020

    Project = 600

    Social Group = 700

    Space = 14

    objectType

    *Required

    This tells the service what kind of Object to create from the specified template.

    Here are the currently supported values:

    Document = 102

    Thread = 1

        Question = 27

    BlogPost = 38

    copyCategories

    (optional)

    Tells the service whether or not to Copy the Categories from the Template Document

    Values include (true | false) - Default - false

    copyTags

    (optional)

    Tells the service whether or not to Copy the Tags from the Template Document

    Values include (true | false)  - Default - false

    templateTag

    (optional)

    Tells the service which Tag to omit when copying Tags.  This is primarily used to strip the tag that marks the Template Document as a Template.

    For example:  template

     

    Examples of putting it all together:

    • If you have a single template and you want to stream-line it's exposure, you can make a simple <a> that links directly to the service with hard-coded values, such as the following:
    <a href="http://YOUR_SBS_HOME_URL/quicktemplates/create-from-doc.jspa?templateID=DOC-1234&containerID=1102&containerType=700&objectType=102&copyCategories=true&copyTags=true&templateTag=my-template">Click here to get Started</a>
    
    
    
    
    
    
    • If you want to get a bit more fancy, you can build an HTML Form (similar to the QuickTemplates Widget) that uses JavaScript to construct a POST/GET to the above interface.  If this is the route you are taking, you should know how to use the above information. =). Hint, you can use the HTML from the QuickTemplates Widget as a starting point if you'd like

     

    Configurations

    For the users who want to configure some of the specific behaviors, the following properties are available for Administrators.

    Note:  As of 1.2.0, most of these properties are handled in the Admin Console : System > Settings > Configure Quick Templates

    You may find the Admin Essentials Plugin helpful in setting Container specific properties.

     

    Property NameConfiguration Values
    Description
    quicktemplates.template.widget.enabledfalse / true (Default: true)If entered as a System Property, will disable the QuickTemplatesWidget.
    quicktemplates.template.dir

    containerType,containerId

    If entered as a System Property, it will define the Container use as the Global Template "Directory".  You should point this property at a container that all Registered Users have at least VIEW access.

     

    Some example configurations may include:

    Example Space => 14,2001

    Example Group => 700,2013

    Example Project => 600,2042

    quicktemplates.template.widget.recursiveDiscoveryfalse / true (Default: false)If entered as a System Property, the QuickTemplatesWidget will use a recursive search for templates for the designated container.

    quicktemplates.createLike.enabled

    quicktemplates.createCopy.enabled (1.2.0+)

    false / true (Default: true)

    If entered as a System Property, will control the Create-Like feature for the entire system.

    If entered as a Container Property, it will override the System Property for that Container

     

    Known Issues

    • 4.x, 5.x - MINOR - Category Ghosting when Copying Categories for Documents
      • When using the QuickTemplates Widget or Service to create Documents (and Copy Categories is true), SBS creates a Category entry for the Draft in-progress that is persisted to the DB, causing that category to be pre-selected for all Document Creation actions, not just the QuickTemplates Service.
      • I have submitted a feature request to Jive (which should be included in the 5.0 release in the coming weeks)...according to this idea:Add support for Category seeding in getCreateNewFormRelativeURL for ContentObjectTypeInfoProvider Interface
        • The above change will enable me to fix this issue moving forward while preserving the same Template Flow and functionality for Documents, while also improving the flow for other content-types.
      • Workarounds
        • Disable the Copy Categories feature in the Widget (and/or send copyCategories=false to the Service)
          • Turning this off in the Widget, will disable the functionality for Discussions and BlogPosts, as well.
        • Do not select Categories on Documents that will be used as Templates to create Documents
          • This will allow you to have Category seeding for Dicussions and BlogPosts
        • If you are already using the Admin Essentials Plugin you can use the Category/Tag sync feature to have Categories back-filled onto the Document based off the tags in the Template
      • Database Clean-Up
        • If you have been using the Copy Categories feature on Documents, and would like to clean-up any mess that's been left behind in the DB, you can run the following commands to clean-up the rows generated from this issue.
        • DELETE FROM jiveObjectTagSet WHERE objectId=-1 AND objectType=102;    
          DELETE FROM jiveObjectTagSet jots
          WHERE EXISTS (
            SELECT 'x' FROM jiveTagSet jts, jiveDocument jd
            WHERE jots.objectid=jd.internaldocid
            AND jots.tagSetId=jts.tagSetId
            AND (jts.containerid <> jd.containerid OR jts.containerype <> jd.containertype)
          ) AND jots.objecttype=102;
        • These queries can be safely run multiple times; however, the presence of these rows do NOT affect the User Experience.