CMS
Framework
- 1.3.0 Reworking of elements to make use of newer HTML 5 elements to increase semantics, improve layouts, and allow for easier styling.
- 1.3.0 Initial reworking of system and extension’s CSS to make interface elements more responsive to smaller screens and mobile devices.
- 1.3.0 jQuery everywhere. The core javascript framework used by both the admin and front (site) of a hub is now jQuery, replacing MooTools. As such, the jQuery system plugin is no longer needed.
Collections
- 1.3.0 Interface overhaul to clarify and smooth the process of finidng and adding posts & collections.
Courses
- 1.3.0 New course preview mode. If enabled, the course structure and assets can be previewed without course membership, or even being logged in. This allows Google to index the course content if desired, as well as significantly lowering the barriers to entry of course adoption. When in preview mode, users can view assets, but cannot participate in discussions or track progress. They also cannot take exams/quizzes. Preview mode can be enable for all content, or limited to show only the first unit of a course.
- 1.3.0 A custom progress mechanism with hierarchical parameters has been added. Prior to this feature, the course progress fills (the “blue balls”), were computed by tracking usage of all course assets. Now the calculation of progress can be customized by selecting exactly which course assets should apply to the computation. This feature can be customized globally, and overwritten at the offering and section levels of the course.
- 1.3.0 Asset and Unit prerequisites can now be established to force a certain flow through your course, or to open up items only after other items have been completed. For example, you may say that unit 2 cannot be completed until unit 1 has been completed; or, you cannot view the homework solution video until you’ve done the homework.
- 1.2.2 We’ve added the ability to associate a grade with any asset type and override any grade for any student. What does this mean? You can now associated a grade with a video lecture, or some other type of item, and manually input grades for students for that item. Plus, items that are automatically graded, like quizzes and exams, can be overridden in the event that the instructor thinks a student should receive a different grade.
- 1.2.2 Badging Infrastructure integration with Purdue’s passport team is in place. This requires collaboration with Purdue, but can allow for students to be rewarded with a custom badge upon completion of a course.
- 1.2.2 New progress reporting pages have been added so that instructors can quickly see summary results for graded items, view details results about a given quiz or exam, as well as download a complete CSV of the results that they want to save.
- 1.2.2 You can also now launch a hub tool with a course file (requires tool-side integration as well).
- 1.2.1 We’ve improved gradebook calculation and made a lot of nifty updates to the gradebook itself.
- 1.2.1 A custom light boxing solution for the builder and progress pages was also implemented to reduce overhead and take advantage of fancy new CSS and javascript features.
- 1.2.2 Image/logo branding for sections and offerings.
- 1.3.0 Course structure copying. Now, any level of a course can be copied with a single button click. An administrator can copy an entire course, an offering within a course, and so on. Copying is “deep”, in that all children and associations are copied for an element. That is, if one were to copy a Unit, all asset groups, and their child asset groups and assets will be copied as well.
- 1.3.0 Redesigned course introduction page to reduce text and highlight searching. Course branding (image/logo) is given emphasis for a more graphical presentation.
- 1.3.0 Redesigned course catalog. Course branding (image/logo) is given emphasis for a more graphical presentation.
- 1.2.2 Group ownership. Courses can be assigned a group association. When done so, the course overview page will display a block of information about that group with a link to filter the course catalog.
- 1.2.2 Front-end course overview editing and user management. The course description, overview pages, and manager/instructor list can now be edited via the front-end, allowing for a quicker, more “in place” editing experience.
- 1.3.0 Certificate creation. The administrative courses interface now supports the ability to upload a PDF to use as a template for certificates. Once uploaded, an administrator may add placeholders to the template, positioning and resizing by a simple drag-and-drop interface. These placeholders for such information as student name, course title, etc. are dynamically replaced with the student’s information at the time the certificate is claimed.
- 1.3.0 Outline redesign. The course outline has undergone a major redesign with a goal to provide a more directed, step-by-step approach to course content. Our hopes here are to help eliminate confusion on how a student should proceed through content and reduce clutter.
- 1.3.0 Added configuration option to set the default enrollment type (open, cloud, etc.) for new sections.
Feedback (Success Stories)
- 1.3.0 Component rewritten to improve performance, interface, and simplify procress of submitting and managing submitted stories.
Groups
1.2.2 New Page Manager
- Page revisions w/ version manager
- Easier to use page content editor (CKEditor)
- Ability to override group home page with a group page
- Page Modules/Blocks
- Page categories with color to visually categorize pages
- PHP and scripts allowed in pages (only for super groups)
- Group includes to include modules in pages or in template
1.2.2 New Asset Browser
- New group asset browser with advanced functionality including creating folders, moving files, un-archiving, etc
1.2.2 Group Calendar
Integrated the widely used Fullcalendar jQuery plugin to improve calendar interaction and performance.
- Calendars are loaded asynchronously so remote calendars don’t slow page load
- Drag to create event for timespan
- Month/Week/Day views
- Better styling for events spanning more then one day
- Reoccurring events
- yearly, monthly, weekly, daily
- ability to set how often: repeats every “x” weeks
- ability to set when recurrence is over: never, after x times, until x date
1.2.2 Super Groups
Super groups became a much more popular request then when they were originally created. Some of the new features for super groups include:
- New default template w/ custom error template & templating system
- Per group page template overrides
- Custom/Override-able Macros
- Group includes: modules, scripts, stylesheets, Google Analytics, etc
- PHP pages with ability to render group modules
- Group database (separate super groups data)
- Group migrations
- Group components
- Integration with Command Line Application “Muse”
- Integration with Git/Gitlab
Members
1.3.0 Gravatars and Identicons
Gravatar option to the members component. When enabled, the system will attempt to grab a user’s Gravatar profile picture (based off of email address), falling back to our default profile picture if not found. If a user uploads a specific picture on the hub, it will take precedence.
Gravatar is a service built entirely around having the same user profile picture show up across multiple sites. As they put it: “Your Gravatar is an image that follows you from site to site appearing beside your name when you do things like comment or post on a blog.”
Along with that is an Identicon or auto-generated picture option. When enabled, if the user has no picture set, one will be auto-generated from a string (again, user email). It generates a color based off of the string, but the color can be set via the members config in case you don’t want the members list looking like a rainbow.
These settings can be enabled from the member’s configuration options via the administrator interface.
1.3.0 Revamped Member Dashboard
A totally revamped dashboard plugin for members. The dashboard now utilizes a customized layout library to allow for more complex user configurations. Some of the new features include:
- Resizable: 2 x 1, 2 x 2, or 10 x 10, it can do it all
- Configuraable: each module has settings that each user can define.
- New Style: cleaner style which would allow for hubs to style however they want without having to override many defaults
- Touch Support: the modules can be positioned and resized just as easily on any mobile device
- Adding/Removing: adding & removing modules was made simpler and we believe easier
1.3.0 ORCID
In association with PURR The registration form and member profiles now support a field for ORCID. Users may now enter an ID if known, search for an existing ID by name, or create a new ID, all from the member registration and/or edit profile forms.
“ORCID provides a persistent digital identifier that distinguishes you from every other researcher and, through integration in key research workflows such as manuscript and grant submission, supports automated linkages between you and your professional activities.” —http://orcid.org
Publications
- 1.2.2 Linked Data — In association with PURR
- 1.2.2 Option to edit author information and delete publication authors in the back-end
- 1.2.2 Allow editing of all metadata for published drafts in the back-end, with automatic update of DOI metadata in case of major information change.
- 1.2.2 Hooks for mkAIP — In association with PURR
- 1.2.2 Citations panel in publication draft flow for authors to add citations for related work.
- 1.3.0 Curation option for publications and configurable publication master types (major change). When curation is enabled, publication draft flow is built based upon publication master type manifest. The manifest describes blocks and block elements for collecting all necessary metadata. This hub version supports file and link-type attachments to publications. Curation is accessible for authorized curators at /publication/curation. This page lists pending publications users are authorized to curate (authorization is per publication type, plus there is a general group of curators). Curation involves checking each block/element and marking them as complete/requiring further changes. When author changes are required, curator must put a note explaining requirements. When all items are reviewed, curator either approves publication or kicks it back to authors for changes. The process is repeated as needed, with detailed curation history available.
This hub release includes a primitive administrative interface for configuring curation manifest.
- 1.3.0 Grace period for publications – authors get an option to revert published resource to draft to make changes within allowed grace period, rather than starting a new version. This is configurable in the back-end.
- 1.3.0 New look of publication page if curation is enabled, configurable via curation manifest.
Projects
- 1.2.2 Show deleted files with option to restore available in Project Files browser.
- 1.2.2 Custom reports for publication stats available for authorized users at /projects/reports/custom. Authorization set in com_projects parameters in the back-end.
- 1.2.2 Changed look for left-hand side menu in a project – new icons and color. Contributable items (Files, Databases etc.) are now listed under Assets.
- 1.2.2 Style change to Project Updates feed – css tweaks, show previews of uploaded items etc.
- 1.2.2 API for listing user projects, list of files within user project, get file metadata including download link, upload file into user project.
- 1.3.0 New draft flow in Project Publications when curation is enabled. This involves new user interface for all draft sections, new draft review screen and new review process after draft submission. When draft is reviewed by curator and sent back to authors for changes, authors see problem items marked in red. After they make requested change or dispute request, the item gets marked in yellow. When they addressed all change requests, draft can be re-submitted for curator approval.
- 1.3.0 Publications list interface tweaks (display of publication thumbnail, hide category etc)
Resources
1.2.2 Importer
New Bulk importer for resources
- ability to bulk injest resource data in xml or csv format
- Can handle 1 or 10,000 records at once
- Implements a hook system to allow greater flexibility and less one off solutions for specific hub requirements
- Pre hook: can modify raw data before the data is binded to resource objects (put the data in the right spots)
- Post Map: modify data after its converted to resoruce objects
- Post Convert: modify saved resource, resource authors, children, tags, etc
1.2.2 Find This Text Plugin
New resources plugin to allow a user to discover a resource on other databases in the internet: Google Scholar, DeepDyve, DOI, Local library (via Worldcat Libraries Registry)
1.2.2 Video Transcript Viewer
A YouTube is transcript viewer that appears below the HTML5 & HUBpresenter video players. It is automatically built from attached subtitle files. When enabled and opened a user can follow along in the presentation as the transcript automatically progresses and scrolls as the presenter talks.
Support
- 1.2.2 Added drag & drop multi-file attachments to support ticket comments.
- 1.2.2 Added plugin event hooks for injecting custom blocks to the support ticket comment form. This allows for extending the comment form with extra form fields and processing data from those fields when the form is submitted.
Wiki
- 1.3.0 PDF download. Wiki pages can now be downloaded as PDFs. Work bases on contributions by Steven Maus (steveng4235@gmail.com)
Login
- 1.3.0 The login page has gotten a facelift, based on user feedback and some cool new features. The page is now easier to use by improving the interface and remembering the identity of the last user that logged in. When you come back, just type your password (or select the option to login as a different user) and you’re on your way. And for those of you that are enjoying the linked accounts feature (where you can login with Facebook, Google, and more), the workflow for new users setting up such an account has been greatly simplified.
Hub admins
- 1.3.0 Kameleon Admin Template A whole new administrative template with a focus on providing a cleaner, simpler, more usable look and feel. The template comes with a selection of color/theme options to help personalize a hub.
- 1.3.0 Hub admins can now choose to require new hub members to be approved, prior to use of the hub. This can often help hubs in the initial stages of development gate access during early testing and phased rollouts.
- 1.3.0 A push-button update feature is being rolled out to hub admins. This allows hubs that are managing their repository via GIT to automatically get the latest source from HUBzero and run the needed database migrations to stay synced up.
- 1.2.2 A filesystem quota management tool has been added to the administrative interface to allow hub admins to easily and succinctly manage user quotas and view quota usage. Quota classes can be created and assigned to users, and individual users can be given custom overrides as needed.
Newsletters
1.2.2 In an effort reduce getting marked spam, we added the ability for newsletter editors to add separate plain text & html parts to newsletters. For newsletters that are build with stories, the newsletter component automatically genenrates a plane text version for the editor.
Editors
1.2.2 CKEditor
New WYSIWYG editor, CKEditor. In a hub wide move to transition all previoulsy Hubzero Wiki formatted text to HTML, to allow the user with more freedom, and new and improved editor was needed to allow the end user to create html.
- Custom plugins
- Autogrow editing area
- Equation editor
- Highlighting plugin to draw focus to html macros, xhub includes, super group includes, etc
- Grid plugin to allow a user to utilize the hubs css grid
- Macro plugin to display list of available macros
Security
- 1.2.1 New password encryption options have been added to increase security of hashed passwords, both in transit and storage.
Developer Tools
Often, with new software releases, the focus is on the next big thing, the flashy new features. But equally, if not more, important is the unseen work. Over the past year, the HUBzero team has spent considerable time and effort towards refining existing code, improving user interfaces (UI), and adding tools to make developers’ lives easier. Thousands of lines of code have been removed, hundreds of files sent to the trash bin, and long built-up cruft scraped away. With a strong focus on stability, efficiency, and ease of use, many libraries and extensions were rewritten. Here are just a handful of such noteworthy changes:
1.2.2 Hubzero library
The Hubzero library (/libraries/Hubzero) underwent, perhaps, the most dramatic of changes. First was the namespacing of the library. What are namespaces? In the broadest definition namespaces are a way of encapsulating items. In PHP, namespaces are designed to solve two problems that authors of libraries and applications encounter when creating re-usable code elements such as classes or functions:
- Name collisions between code created and internal PHP classes/functions/constants or third-party classes/functions/constants.
- Ability to alias (or shorten) Extra_Long_Names designed to alleviate the first problem, improving readability of source code.
Namespaces, in conjunction with the PSR-0 naming standard, also means a namespace can map directly to the filesystem, eliminating guess-work as to the actual location of a class. For Hubzero this meant a simple find & replace for class names; Underscores “_” become back-slashes “\”. Example:
// old Hubzero_User_Profile // new Hubzero\User\Profile // Maps to /libraries/Hubzero/User/Profile.php
See https://hubzero.org/documentation/ for a full list of changes to the classes and methods.
1.2.2 Geocode Helper
The Hubzero library now comes with a helper class and plugins for various geocoding utilities. The class provides helpers for getting a list of countries, geocoding an address (i.e., getting longitude and latitude for a street address or IP address), and reverse geocoding an address (i.e., getting a street address for longitude and latitude).
When a method of the class is called (e.g. Geocode::locate()), a plugin event is fired and any number of services may respond. A plugin for each available service resides in the newly created “geocode” plugins group.
1.2.2/1.3.0 Antispam Service Helper
In an effort to battle the growing tide of spam, the Hubzero library now comes with a helper class and plugins for various evaluating submitted content. Easily extendable, the Hubzero\Antispam\Service class loads the selected provider (e.g. Akismet, Mollom) and returns the provider’s evaluation of the content. The service class can be instantiated manually or called via one of the available plugins.
1.3.0 Sub-view Helpers
Loading a sub-view (a view within a view, also commonly called a “partial”) can now be done via the view() method. This method accepts two arguments: 1) the view name and 2) the parent folder name option. If the second argument is not passed, the parent folder is inherited from the view the method is called from (i.e., $this).
- For components, the variables $option, $controller, and $task are auto-assigned to the view (inherited from the parent view).
- For plugins, the variables $folder and $element, are auto-assigned to the view (inherited from the parent view).
Example:
<?php $this->view('layout') ->set('foo', $bar) ->display(); ?>
1.2.2 View Asset Helpers
Modules, Component, and plugin views now have helpers for pushing Cascading StyleSheets and JavaScript assets to the document. Each method automatically looks for overrides within the current, active template, taking out the busy work of checking yourself each time assets are added. The method names are short, accept a range of options, and allow for method chaining, all tailored for brevity and ease of use.
The css() method provides a quick and convenient way to attach stylesheets. For components, it accepts two arguments:
- The name of the stylesheet to be pushed to the document (file extension is optional). If no name is provided, the name of the component or plugin will be used. For instance, if called within a view of the component “com_tags”, the system will look for a stylesheet named “tags.css”.
- The name of the extension to look for the stylesheet. For components, this will be the component name (e.g., com_tags). For plugins, this is the name of the plugin folder and requires the third argument of plugin group (type) be passed to the method.
- Plugin views only. The name of the plugin.
Example:
<?php // Push a stylesheet to the document $this->css() ->css('another') // Extension (.css) is optional ->css('tags.css', 'com_tags'); // Load CSS from another component ?> ... view HTML ...
Along with file names, the method also accepts style declarations:
<?php // Push a stylesheet to the document $this->css('.foo { color: #000; }'); ?> ... view HTML ...
Similarly, a js() method is available for pushing javascript assets to the document. The arguments accepted are the same as the css() method described above.
<?php // Push some javascript to the document $this->js() ->js('another'); ?> ... view HTML ...
And, just as the css() method accepts style declarations, the js() method accepts script declarations:
<?php // Push some javascript to the document $this->js(' jQuery(document).ready(function($){ $("a").on("click", function(e){ console.log($(this).attr("href")); }); }); '); ?> ... view HTML ...
1.2.2 Debug Toolbar
One of the more noticeable facelifts was the rewriting and restyling of the debug toolbar. The debug output, found when turning on site debugging via the global configuration, was completely restyled to be a less intrusive toolbar that is fixed to the bottom of the browser viewport. Now, developers no longer need scroll to the bottom of the page to view the query list, timeline, or more. Each area of debug output can be inspected by simply clicking the title of said area in the toolbar. when open, the viewable content can easily be resized by dragging the toolbar up or down. Two separate themes—light and dark—are available.
1.3.0 Variable Inspecting
Another developer tool added to the core was a Debug class for logging or dumping vars. One key advantage to this feature is the ability to dump variables to the debug toolbar, meaning you can inspect variables in your code without interrupting the process or view output.
// Dump the var to the debug bar. Debugging must be turned on for the site to see anything (duh). // This uses print_r() instead of var_dump as I've found var_dump to be a little too verbose. Hubzero\Utility\Debug::log($myobject); // This is equivalent to "<pre>print_r($myobject);</pre>" and will output directly to the page. Hubzero\Utility\Debug::dump($myobject); // This is equivalent to "<pre>print_r($myobject);</pre> die();", will output directly to the page, and die() afterwards. // It's called "stop" because PHP apparently won't even allow a class method to be called die() and I couldn't think of a better word. Hubzero\Utility\Debug::stop($myobject);
1.2.2/1.2.3 Muse – the HUBzero command line tool
For those supporting a hub installation, or even setting up a new hub, the command line is often the easiest and best place to get things done. In that vein, we’ve created an all new command line utility to expedite common CMS related tasks. These task include:
- Database – dumping and loading up database content
- Environment – getting a quick overview of the current command line environment
- Extension – adding, deleting, enabling, or disabling CMS extensions
- Migration – running database schema and content updates
- Repository – checking and updating the CMS code (currently on for GIT users)
- Scaffolding – quickly creating new code stubs or copying/renaming things like templates
- User – merging and un-merging users
There’s more to come in this area. We’re constantly trying to figure out how to automate and improve the hub management experience.